(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["vendors~home"],{

/***/ "./node_modules/@amap/amap-jsapi-loader/dist/index.js":
/*!************************************************************!*\
  !*** ./node_modules/@amap/amap-jsapi-loader/dist/index.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
(function(m,p){ true?module.exports=p():undefined})(this,function(){function m(a){var b=[];a.AMapUI&&b.push(p(a.AMapUI));a.Loca&&b.push(r(a.Loca));return Promise.all(b)}function p(a){return new Promise(function(h,c){var f=[];if(a.plugins)for(var e=0;e<a.plugins.length;e+=1)-1==d.AMapUI.plugins.indexOf(a.plugins[e])&&f.push(a.plugins[e]);if(g.AMapUI===b.failed)c("\u524d\u6b21\u8bf7\u6c42 AMapUI \u5931\u8d25");
else if(g.AMapUI===b.notload){g.AMapUI=b.loading;d.AMapUI.version=a.version||d.AMapUI.version;e=d.AMapUI.version;var l=document.body||document.head,k=document.createElement("script");k.type="text/javascript";k.src="https://webapi.amap.com/ui/"+e+"/main.js";k.onerror=function(a){g.AMapUI=b.failed;c("\u8bf7\u6c42 AMapUI \u5931\u8d25")};k.onload=function(){g.AMapUI=b.loaded;if(f.length)window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split("/").slice(-1)[0];window.AMapUI[c]=
arguments[a]}for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()});else for(h();n.AMapUI.length;)n.AMapUI.splice(0,1)[0]()};l.appendChild(k)}else g.AMapUI===b.loaded?a.version&&a.version!==d.AMapUI.version?c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c AMapUI \u6df7\u7528"):f.length?window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split("/").slice(-1)[0];window.AMapUI[c]=arguments[a]}h()}):h():a.version&&a.version!==d.AMapUI.version?c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c AMapUI \u6df7\u7528"):
n.AMapUI.push(function(a){a?c(a):f.length?window.AMapUI.loadUI(f,function(){for(var a=0,b=f.length;a<b;a++){var c=f[a].split("/").slice(-1)[0];window.AMapUI[c]=arguments[a]}h()}):h()})})}function r(a){return new Promise(function(h,c){if(g.Loca===b.failed)c("\u524d\u6b21\u8bf7\u6c42 Loca \u5931\u8d25");else if(g.Loca===b.notload){g.Loca=b.loading;d.Loca.version=a.version||d.Loca.version;var f=d.Loca.version,e=d.AMap.version.startsWith("2"),l=f.startsWith("2");if(e&&!l||!e&&l)c("JSAPI \u4e0e Loca \u7248\u672c\u4e0d\u5bf9\u5e94\uff01\uff01");
else{e=d.key;l=document.body||document.head;var k=document.createElement("script");k.type="text/javascript";k.src="https://webapi.amap.com/loca?v="+f+"&key="+e;k.onerror=function(a){g.Loca=b.failed;c("\u8bf7\u6c42 AMapUI \u5931\u8d25")};k.onload=function(){g.Loca=b.loaded;for(h();n.Loca.length;)n.Loca.splice(0,1)[0]()};l.appendChild(k)}}else g.Loca===b.loaded?a.version&&a.version!==d.Loca.version?c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c Loca \u6df7\u7528"):h():a.version&&a.version!==d.Loca.version?
c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c Loca \u6df7\u7528"):n.Loca.push(function(a){a?c(a):c()})})}if(!window)throw Error("AMap JSAPI can only be used in Browser.");var b;(function(a){a.notload="notload";a.loading="loading";a.loaded="loaded";a.failed="failed"})(b||(b={}));var d={key:"",AMap:{version:"1.4.15",plugins:[]},AMapUI:{version:"1.1",plugins:[]},Loca:{version:"1.3.2"}},g={AMap:b.notload,AMapUI:b.notload,Loca:b.notload},n={AMap:[],AMapUI:[],Loca:[]},q=[],t=function(a){"function"==typeof a&&
(g.AMap===b.loaded?a(window.AMap):q.push(a))};return{load:function(a){return new Promise(function(h,c){if(g.AMap==b.failed)c("");else if(g.AMap==b.notload){var f=a.key,e=a.version,l=a.plugins;f?(window.AMap&&"lbs.amap.com"!==location.host&&c("\u7981\u6b62\u591a\u79cdAPI\u52a0\u8f7d\u65b9\u5f0f\u6df7\u7528"),d.key=f,d.AMap.version=e||d.AMap.version,d.AMap.plugins=l||d.AMap.plugins,g.AMap=b.loading,e=document.body||document.head,window.___onAPILoaded=function(d){delete window.___onAPILoaded;if(d)g.AMap=
b.failed,c(d);else for(g.AMap=b.loaded,m(a).then(function(){h(window.AMap)})["catch"](c);q.length;)q.splice(0,1)[0]()},l=document.createElement("script"),l.type="text/javascript",l.src="https://webapi.amap.com/maps?callback=___onAPILoaded&v="+d.AMap.version+"&key="+f+"&plugin="+d.AMap.plugins.join(","),l.onerror=function(a){g.AMap=b.failed;c(a)},e.appendChild(l)):c("\u8bf7\u586b\u5199key")}else if(g.AMap==b.loaded)if(a.key&&a.key!==d.key)c("\u591a\u4e2a\u4e0d\u4e00\u81f4\u7684 key");else if(a.version&&
a.version!==d.AMap.version)c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c JSAPI \u6df7\u7528");else{f=[];if(a.plugins)for(e=0;e<a.plugins.length;e+=1)-1==d.AMap.plugins.indexOf(a.plugins[e])&&f.push(a.plugins[e]);if(f.length)window.AMap.plugin(f,function(){m(a).then(function(){h(window.AMap)})["catch"](c)});else m(a).then(function(){h(window.AMap)})["catch"](c)}else if(a.key&&a.key!==d.key)c("\u591a\u4e2a\u4e0d\u4e00\u81f4\u7684 key");else if(a.version&&a.version!==d.AMap.version)c("\u4e0d\u5141\u8bb8\u591a\u4e2a\u7248\u672c JSAPI \u6df7\u7528");
else{var k=[];if(a.plugins)for(e=0;e<a.plugins.length;e+=1)-1==d.AMap.plugins.indexOf(a.plugins[e])&&k.push(a.plugins[e]);t(function(){if(k.length)window.AMap.plugin(k,function(){m(a).then(function(){h(window.AMap)})["catch"](c)});else m(a).then(function(){h(window.AMap)})["catch"](c)})}})},reset:function(){delete window.AMap;delete window.AMapUI;delete window.Loca;d={key:"",AMap:{version:"1.4.15",plugins:[]},AMapUI:{version:"1.1",plugins:[]},Loca:{version:"1.3.2"}};g={AMap:b.notload,AMapUI:b.notload,
Loca:b.notload};n={AMap:[],AMapUI:[],Loca:[]}}}})


/***/ }),

/***/ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
  \**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}
module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;

/***/ }),

/***/ "./node_modules/@imndx/v-emoji-picker/lib/v-emoji-picker.esm.js":
/*!**********************************************************************!*\
  !*** ./node_modules/@imndx/v-emoji-picker/lib/v-emoji-picker.esm.js ***!
  \**********************************************************************/
/*! exports provided: default, Category, Emoji, VEmojiPicker, categoriesDefault, emojisDefault */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Category", function() { return Category; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Emoji", function() { return Emoji; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VEmojiPicker", function() { return __vue_component__$7; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "categoriesDefault", function() { return categoriesDefault; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "emojisDefault", function() { return emojisDefault; });
/* harmony import */ var vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-property-decorator */ "./node_modules/vue-property-decorator/lib/index.js");
/* harmony import */ var universal_emoji_parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! universal-emoji-parser */ "./node_modules/@imndx/v-emoji-picker/node_modules/universal-emoji-parser/dist/main.js");
/* harmony import */ var universal_emoji_parser__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(universal_emoji_parser__WEBPACK_IMPORTED_MODULE_1__);
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */

var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf ||
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
    return extendStatics(d, b);
};

function __extends(d, b) {
    extendStatics(d, b);
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}

var __assign = function() {
    __assign = Object.assign || function __assign(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};

function __decorate(decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
}

function __awaiter(thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
}

function __generator(thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
}

function __read(o, n) {
    var m = typeof Symbol === "function" && o[Symbol.iterator];
    if (!m) return o;
    var i = m.call(o), r, ar = [], e;
    try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
    }
    catch (error) { e = { error: error }; }
    finally {
        try {
            if (r && !r.done && (m = i["return"])) m.call(i);
        }
        finally { if (e) throw e.error; }
    }
    return ar;
}

function __spread() {
    for (var ar = [], i = 0; i < arguments.length; i++)
        ar = ar.concat(__read(arguments[i]));
    return ar;
}var Emoji = /** @class */ (function () {
    function Emoji(data, category, aliases) {
        this.data = data;
        this.category = category;
        this.aliases = aliases;
    }
    return Emoji;
}());var emojisDefault = [
    new Emoji("😀", "Peoples", ["grinning"]),
    new Emoji("😃", "Peoples", ["smiley"]),
    new Emoji("😄", "Peoples", ["smile"]),
    new Emoji("😁", "Peoples", ["grin"]),
    new Emoji("😆", "Peoples", ["laughing", "satisfied"]),
    new Emoji("😅", "Peoples", ["sweat_smile"]),
    new Emoji("😂", "Peoples", ["joy"]),
    new Emoji("🤣", "Peoples", ["rofl"]),
    new Emoji("😌", "Peoples", ["relaxed"]),
    new Emoji("😊", "Peoples", ["blush"]),
    new Emoji("😇", "Peoples", ["innocent"]),
    new Emoji("🙂", "Peoples", ["slightly_smiling_face"]),
    new Emoji("🙃", "Peoples", ["upside_down_face"]),
    new Emoji("😉", "Peoples", ["wink"]),
    new Emoji("😌", "Peoples", ["relieved"]),
    new Emoji("😍", "Peoples", ["heart_eyes"]),
    new Emoji("😘", "Peoples", ["kissing_heart"]),
    new Emoji("😗", "Peoples", ["kissing"]),
    new Emoji("😙", "Peoples", ["kissing_smiling_eyes"]),
    new Emoji("😚", "Peoples", ["kissing_closed_eyes"]),
    new Emoji("😋", "Peoples", ["yum"]),
    new Emoji("😜", "Peoples", ["stuck_out_tongue_winking_eye"]),
    new Emoji("😝", "Peoples", ["stuck_out_tongue_closed_eyes"]),
    new Emoji("😛", "Peoples", ["stuck_out_tongue"]),
    new Emoji("🤑", "Peoples", ["money_mouth_face"]),
    new Emoji("🤗", "Peoples", ["hugs"]),
    new Emoji("🤓", "Peoples", ["nerd_face"]),
    new Emoji("😎", "Peoples", ["sunglasses"]),
    new Emoji("🤡", "Peoples", ["clown_face"]),
    new Emoji("🤠", "Peoples", ["cowboy_hat_face"]),
    new Emoji("😏", "Peoples", ["smirk"]),
    new Emoji("😒", "Peoples", ["unamused"]),
    new Emoji("😞", "Peoples", ["disappointed"]),
    new Emoji("😔", "Peoples", ["pensive"]),
    new Emoji("😟", "Peoples", ["worried"]),
    new Emoji("😕", "Peoples", ["confused"]),
    new Emoji("🙁", "Peoples", ["slightly_frowning_face"]),
    new Emoji("☹️", "Peoples", ["frowning_face"]),
    new Emoji("😣", "Peoples", ["persevere"]),
    new Emoji("😖", "Peoples", ["confounded"]),
    new Emoji("😫", "Peoples", ["tired_face"]),
    new Emoji("😩", "Peoples", ["weary"]),
    new Emoji("😤", "Peoples", ["triumph"]),
    new Emoji("😠", "Peoples", ["angry"]),
    new Emoji("😡", "Peoples", ["rage", "pout"]),
    new Emoji("😶", "Peoples", ["no_mouth"]),
    new Emoji("😐", "Peoples", ["neutral_face"]),
    new Emoji("😑", "Peoples", ["expressionless"]),
    new Emoji("😯", "Peoples", ["hushed"]),
    new Emoji("😦", "Peoples", ["frowning"]),
    new Emoji("😧", "Peoples", ["anguished"]),
    new Emoji("😮", "Peoples", ["open_mouth"]),
    new Emoji("😲", "Peoples", ["astonished"]),
    new Emoji("😵", "Peoples", ["dizzy_face"]),
    new Emoji("😳", "Peoples", ["flushed"]),
    new Emoji("😱", "Peoples", ["scream"]),
    new Emoji("😨", "Peoples", ["fearful"]),
    new Emoji("😰", "Peoples", ["cold_sweat"]),
    new Emoji("😢", "Peoples", ["cry"]),
    new Emoji("😥", "Peoples", ["disappointed_relieved"]),
    new Emoji("🤤", "Peoples", ["drooling_face"]),
    new Emoji("😭", "Peoples", ["sob"]),
    new Emoji("😓", "Peoples", ["sweat"]),
    new Emoji("😪", "Peoples", ["sleepy"]),
    new Emoji("😴", "Peoples", ["sleeping"]),
    new Emoji("🙄", "Peoples", ["roll_eyes"]),
    new Emoji("🤔", "Peoples", ["thinking"]),
    new Emoji("🤥", "Peoples", ["lying_face"]),
    new Emoji("😬", "Peoples", ["grimacing"]),
    new Emoji("🤐", "Peoples", ["zipper_mouth_face"]),
    new Emoji("🤢", "Peoples", ["nauseated_face"]),
    new Emoji("🤧", "Peoples", ["sneezing_face"]),
    new Emoji("😷", "Peoples", ["mask"]),
    new Emoji("🤒", "Peoples", ["face_with_thermometer"]),
    new Emoji("🤕", "Peoples", ["face_with_head_bandage"]),
    new Emoji("😈", "Peoples", ["smiling_imp"]),
    new Emoji("👿", "Peoples", ["imp"]),
    new Emoji("👹", "Peoples", ["japanese_ogre"]),
    new Emoji("👺", "Peoples", ["japanese_goblin"]),
    new Emoji("💩", "Peoples", ["hankey", "poop", "shit"]),
    new Emoji("👻", "Peoples", ["ghost"]),
    new Emoji("💀", "Peoples", ["skull"]),
    new Emoji("☠️", "Peoples", ["skull_and_crossbones"]),
    new Emoji("👽", "Peoples", ["alien"]),
    new Emoji("👾", "Peoples", ["space_invader"]),
    new Emoji("🤖", "Peoples", ["robot"]),
    new Emoji("🎃", "Peoples", ["jack_o_lantern"]),
    new Emoji("😺", "Peoples", ["smiley_cat"]),
    new Emoji("😸", "Peoples", ["smile_cat"]),
    new Emoji("😹", "Peoples", ["joy_cat"]),
    new Emoji("😻", "Peoples", ["heart_eyes_cat"]),
    new Emoji("😼", "Peoples", ["smirk_cat"]),
    new Emoji("😽", "Peoples", ["kissing_cat"]),
    new Emoji("🙀", "Peoples", ["scream_cat"]),
    new Emoji("😿", "Peoples", ["crying_cat_face"]),
    new Emoji("😾", "Peoples", ["pouting_cat"]),
    new Emoji("👐", "Peoples", ["open_hands"]),
    new Emoji("🙌", "Peoples", ["raised_hands"]),
    new Emoji("👏", "Peoples", ["clap"]),
    new Emoji("🙏", "Peoples", ["pray"]),
    new Emoji("🤝", "Peoples", ["handshake"]),
    new Emoji("👍", "Peoples", ["+1", "thumbsup"]),
    new Emoji("👎", "Peoples", ["-1", "thumbsdown"]),
    new Emoji("👊", "Peoples", ["fist_oncoming", "facepunch", "punch"]),
    new Emoji("✊", "Peoples", ["fist_raised", "fist"]),
    new Emoji("🤛", "Peoples", ["fist_left"]),
    new Emoji("🤜", "Peoples", ["fist_right"]),
    new Emoji("🤞", "Peoples", ["crossed_fingers"]),
    new Emoji("✌️", "Peoples", ["v"]),
    new Emoji("🤘", "Peoples", ["metal"]),
    new Emoji("👌", "Peoples", ["ok_hand"]),
    new Emoji("👈", "Peoples", ["point_left"]),
    new Emoji("👉", "Peoples", ["point_right"]),
    new Emoji("👆", "Peoples", ["point_up_2"]),
    new Emoji("👇", "Peoples", ["point_down"]),
    new Emoji("☝️", "Peoples", ["point_up"]),
    new Emoji("✋", "Peoples", ["hand", "raised_hand"]),
    new Emoji("🤚", "Peoples", ["raised_back_of_hand"]),
    new Emoji("🖐", "Peoples", ["raised_hand_with_fingers_splayed"]),
    new Emoji("🖖", "Peoples", ["vulcan_salute"]),
    new Emoji("👋", "Peoples", ["wave"]),
    new Emoji("🤙", "Peoples", ["call_me_hand"]),
    new Emoji("💪", "Peoples", ["muscle"]),
    new Emoji("🖕", "Peoples", ["middle_finger", "fu"]),
    new Emoji("✍️", "Peoples", ["writing_hand"]),
    new Emoji("🤳", "Peoples", ["selfie"]),
    new Emoji("💅", "Peoples", ["nail_care"]),
    new Emoji("💍", "Peoples", ["ring"]),
    new Emoji("💄", "Peoples", ["lipstick"]),
    new Emoji("💋", "Peoples", ["kiss"]),
    new Emoji("👄", "Peoples", ["lips"]),
    new Emoji("👅", "Peoples", ["tongue"]),
    new Emoji("👂", "Peoples", ["ear"]),
    new Emoji("👃", "Peoples", ["nose"]),
    new Emoji("👣", "Peoples", ["footprints"]),
    new Emoji("👁", "Peoples", ["eye"]),
    new Emoji("👀", "Peoples", ["eyes"]),
    new Emoji("🗣", "Peoples", ["speaking_head"]),
    new Emoji("👤", "Peoples", ["bust_in_silhouette"]),
    new Emoji("👥", "Peoples", ["busts_in_silhouette"]),
    new Emoji("👶", "Peoples", ["baby"]),
    new Emoji("👦", "Peoples", ["boy"]),
    new Emoji("👧", "Peoples", ["girl"]),
    new Emoji("👨", "Peoples", ["man"]),
    new Emoji("👩", "Peoples", ["woman"]),
    new Emoji("👱‍♀", "Peoples", ["blonde_woman"]),
    new Emoji("👱", "Peoples", ["blonde_man", "person_with_blond_hair"]),
    new Emoji("👴", "Peoples", ["older_man"]),
    new Emoji("👵", "Peoples", ["older_woman"]),
    new Emoji("👲", "Peoples", ["man_with_gua_pi_mao"]),
    new Emoji("👳‍♀", "Peoples", ["woman_with_turban"]),
    new Emoji("👳", "Peoples", ["man_with_turban"]),
    new Emoji("👮‍♀", "Peoples", ["policewoman"]),
    new Emoji("👮", "Peoples", ["policeman", "cop"]),
    new Emoji("👷‍♀", "Peoples", ["construction_worker_woman"]),
    new Emoji("👷", "Peoples", ["construction_worker_man", "construction_worker"]),
    new Emoji("💂‍♀", "Peoples", ["guardswoman"]),
    new Emoji("💂", "Peoples", ["guardsman"]),
    new Emoji("👩‍⚕", "Peoples", ["woman_health_worker"]),
    new Emoji("👨‍⚕", "Peoples", ["man_health_worker"]),
    new Emoji("👩‍🌾", "Peoples", ["woman_farmer"]),
    new Emoji("👨‍🌾", "Peoples", ["man_farmer"]),
    new Emoji("👩‍🍳", "Peoples", ["woman_cook"]),
    new Emoji("👨‍🍳", "Peoples", ["man_cook"]),
    new Emoji("👩‍🎓", "Peoples", ["woman_student"]),
    new Emoji("👨‍🎓", "Peoples", ["man_student"]),
    new Emoji("👩‍🎤", "Peoples", ["woman_singer"]),
    new Emoji("👨‍🎤", "Peoples", ["man_singer"]),
    new Emoji("👩‍🏫", "Peoples", ["woman_teacher"]),
    new Emoji("👨‍🏫", "Peoples", ["man_teacher"]),
    new Emoji("👩‍🏭", "Peoples", ["woman_factory_worker"]),
    new Emoji("👨‍🏭", "Peoples", ["man_factory_worker"]),
    new Emoji("👩‍💻", "Peoples", ["woman_technologist"]),
    new Emoji("👨‍💻", "Peoples", ["man_technologist"]),
    new Emoji("👩‍💼", "Peoples", ["woman_office_worker"]),
    new Emoji("👨‍💼", "Peoples", ["man_office_worker"]),
    new Emoji("👩‍🔧", "Peoples", ["woman_mechanic"]),
    new Emoji("👨‍🔧", "Peoples", ["man_mechanic"]),
    new Emoji("👩‍🔬", "Peoples", ["woman_scientist"]),
    new Emoji("👨‍🔬", "Peoples", ["man_scientist"]),
    new Emoji("👩‍🎨", "Peoples", ["woman_artist"]),
    new Emoji("👨‍🎨", "Peoples", ["man_artist"]),
    new Emoji("👩‍🚒", "Peoples", ["woman_firefighter"]),
    new Emoji("👨‍🚒", "Peoples", ["man_firefighter"]),
    new Emoji("👩‍🚀", "Peoples", ["woman_astronaut"]),
    new Emoji("👨‍🚀", "Peoples", ["man_astronaut"]),
    new Emoji("🤶", "Peoples", ["mrs_claus"]),
    new Emoji("🎅", "Peoples", ["santa"]),
    new Emoji("👸", "Peoples", ["princess"]),
    new Emoji("🤴", "Peoples", ["prince"]),
    new Emoji("👰", "Peoples", ["bride_with_veil"]),
    new Emoji("🤵", "Peoples", ["man_in_tuxedo"]),
    new Emoji("👼", "Peoples", ["angel"]),
    new Emoji("🤰", "Peoples", ["pregnant_woman"]),
    new Emoji("🙇‍♀", "Peoples", ["bowing_woman"]),
    new Emoji("🙇", "Peoples", ["bowing_man", "bow"]),
    new Emoji("💁", "Peoples", ["tipping_hand_woman", "information_desk_person", "sassy_woman"]),
    new Emoji("💁‍♂", "Peoples", ["tipping_hand_man", "sassy_man"]),
    new Emoji("🙅", "Peoples", ["no_good_woman", "no_good", "ng_woman"]),
    new Emoji("🙅‍♂", "Peoples", ["no_good_man", "ng_man"]),
    new Emoji("🙆", "Peoples", ["ok_woman"]),
    new Emoji("🙆‍♂", "Peoples", ["ok_man"]),
    new Emoji("🙋", "Peoples", ["raising_hand_woman", "raising_hand"]),
    new Emoji("🙋‍♂", "Peoples", ["raising_hand_man"]),
    new Emoji("🤦‍♀", "Peoples", ["woman_facepalming"]),
    new Emoji("🤦‍♂", "Peoples", ["man_facepalming"]),
    new Emoji("🤷‍♀", "Peoples", ["woman_shrugging"]),
    new Emoji("🤷‍♂", "Peoples", ["man_shrugging"]),
    new Emoji("🙎", "Peoples", ["pouting_woman", "person_with_pouting_face"]),
    new Emoji("🙎‍♂", "Peoples", ["pouting_man"]),
    new Emoji("🙍", "Peoples", ["frowning_woman", "person_frowning"]),
    new Emoji("🙍‍♂", "Peoples", ["frowning_man"]),
    new Emoji("💇", "Peoples", ["haircut_woman", "haircut"]),
    new Emoji("💇‍♂", "Peoples", ["haircut_man"]),
    new Emoji("💆", "Peoples", ["massage_woman", "massage"]),
    new Emoji("💆‍♂", "Peoples", ["massage_man"]),
    new Emoji("🕴", "Peoples", ["business_suit_levitating"]),
    new Emoji("💃", "Peoples", ["dancer"]),
    new Emoji("🕺", "Peoples", ["man_dancing"]),
    new Emoji("👯", "Peoples", ["dancing_women", "dancers"]),
    new Emoji("👯‍♂", "Peoples", ["dancing_men"]),
    new Emoji("🚶‍♀", "Peoples", ["walking_woman"]),
    new Emoji("🚶", "Peoples", ["walking_man", "walking"]),
    new Emoji("🏃‍♀", "Peoples", ["running_woman"]),
    new Emoji("🏃", "Peoples", ["running_man", "runner", "running"]),
    new Emoji("👫", "Peoples", ["couple"]),
    new Emoji("👭", "Peoples", ["two_women_holding_hands"]),
    new Emoji("👬", "Peoples", ["two_men_holding_hands"]),
    new Emoji("💑", "Peoples", ["couple_with_heart_woman_man", "couple_with_heart"]),
    new Emoji("👩‍❤️‍👩", "Peoples", ["couple_with_heart_woman_woman"]),
    new Emoji("👨‍❤️‍👨", "Peoples", ["couple_with_heart_man_man"]),
    new Emoji("💏", "Peoples", ["couplekiss_man_woman"]),
    new Emoji("👩‍❤️‍💋‍👩", "Peoples", ["couplekiss_woman_woman"]),
    new Emoji("👨‍❤️‍💋‍👨", "Peoples", ["couplekiss_man_man"]),
    new Emoji("👪", "Peoples", ["family_man_woman_boy", "family"]),
    new Emoji("👨‍👩‍👧", "Peoples", ["family_man_woman_girl"]),
    new Emoji("👨‍👩‍👧‍👦", "Peoples", ["family_man_woman_girl_boy"]),
    new Emoji("👨‍👩‍👦‍👦", "Peoples", ["family_man_woman_boy_boy"]),
    new Emoji("👨‍👩‍👧‍👧", "Peoples", ["family_man_woman_girl_girl"]),
    new Emoji("👩‍👩‍👦", "Peoples", ["family_woman_woman_boy"]),
    new Emoji("👩‍👩‍👧", "Peoples", ["family_woman_woman_girl"]),
    new Emoji("👩‍👩‍👧‍👦", "Peoples", ["family_woman_woman_girl_boy"]),
    new Emoji("👩‍👩‍👦‍👦", "Peoples", ["family_woman_woman_boy_boy"]),
    new Emoji("👩‍👩‍👧‍👧", "Peoples", ["family_woman_woman_girl_girl"]),
    new Emoji("👨‍👨‍👦", "Peoples", ["family_man_man_boy"]),
    new Emoji("👨‍👨‍👧", "Peoples", ["family_man_man_girl"]),
    new Emoji("👨‍👨‍👧‍👦", "Peoples", ["family_man_man_girl_boy"]),
    new Emoji("👨‍👨‍👦‍👦", "Peoples", ["family_man_man_boy_boy"]),
    new Emoji("👨‍👨‍👧‍👧", "Peoples", ["family_man_man_girl_girl"]),
    new Emoji("👩‍👦", "Peoples", ["family_woman_boy"]),
    new Emoji("👩‍👧", "Peoples", ["family_woman_girl"]),
    new Emoji("👩‍👧‍👦", "Peoples", ["family_woman_girl_boy"]),
    new Emoji("👩‍👦‍👦", "Peoples", ["family_woman_boy_boy"]),
    new Emoji("👩‍👧‍👧", "Peoples", ["family_woman_girl_girl"]),
    new Emoji("👨‍👦", "Peoples", ["family_man_boy"]),
    new Emoji("👨‍👧", "Peoples", ["family_man_girl"]),
    new Emoji("👨‍👧‍👦", "Peoples", ["family_man_girl_boy"]),
    new Emoji("👨‍👦‍👦", "Peoples", ["family_man_boy_boy"]),
    new Emoji("👨‍👧‍👧", "Peoples", ["family_man_girl_girl"]),
    new Emoji("👚", "Peoples", ["womans_clothes"]),
    new Emoji("👕", "Peoples", ["shirt", "tshirt"]),
    new Emoji("👖", "Peoples", ["jeans"]),
    new Emoji("👔", "Peoples", ["necktie"]),
    new Emoji("👗", "Peoples", ["dress"]),
    new Emoji("👙", "Peoples", ["bikini"]),
    new Emoji("👘", "Peoples", ["kimono"]),
    new Emoji("👠", "Peoples", ["high_heel"]),
    new Emoji("👡", "Peoples", ["sandal"]),
    new Emoji("👢", "Peoples", ["boot"]),
    new Emoji("👞", "Peoples", ["mans_shoe", "shoe"]),
    new Emoji("👟", "Peoples", ["athletic_shoe"]),
    new Emoji("👒", "Peoples", ["womans_hat"]),
    new Emoji("🎩", "Peoples", ["tophat"]),
    new Emoji("🎓", "Peoples", ["mortar_board"]),
    new Emoji("👑", "Peoples", ["crown"]),
    new Emoji("⛑", "Peoples", ["rescue_worker_helmet"]),
    new Emoji("🎒", "Peoples", ["school_satchel"]),
    new Emoji("👝", "Peoples", ["pouch"]),
    new Emoji("👛", "Peoples", ["purse"]),
    new Emoji("👜", "Peoples", ["handbag"]),
    new Emoji("💼", "Peoples", ["briefcase"]),
    new Emoji("👓", "Peoples", ["eyeglasses"]),
    new Emoji("🕶", "Peoples", ["dark_sunglasses"]),
    new Emoji("🌂", "Peoples", ["closed_umbrella"]),
    new Emoji("☂️", "Peoples", ["open_umbrella"]),
    new Emoji("🐶", "Nature", ["dog"]),
    new Emoji("🐱", "Nature", ["cat"]),
    new Emoji("🐭", "Nature", ["mouse"]),
    new Emoji("🐹", "Nature", ["hamster"]),
    new Emoji("🐰", "Nature", ["rabbit"]),
    new Emoji("🦊", "Nature", ["fox_face"]),
    new Emoji("🐻", "Nature", ["bear"]),
    new Emoji("🐼", "Nature", ["panda_face"]),
    new Emoji("🐨", "Nature", ["koala"]),
    new Emoji("🐯", "Nature", ["tiger"]),
    new Emoji("🦁", "Nature", ["lion"]),
    new Emoji("🐮", "Nature", ["cow"]),
    new Emoji("🐷", "Nature", ["pig"]),
    new Emoji("🐽", "Nature", ["pig_nose"]),
    new Emoji("🐸", "Nature", ["frog"]),
    new Emoji("🐵", "Nature", ["monkey_face"]),
    new Emoji("🙈", "Nature", ["see_no_evil"]),
    new Emoji("🙉", "Nature", ["hear_no_evil"]),
    new Emoji("🙊", "Nature", ["speak_no_evil"]),
    new Emoji("🐒", "Nature", ["monkey"]),
    new Emoji("🐔", "Nature", ["chicken"]),
    new Emoji("🐧", "Nature", ["penguin"]),
    new Emoji("🐦", "Nature", ["bird"]),
    new Emoji("🐤", "Nature", ["baby_chick"]),
    new Emoji("🐣", "Nature", ["hatching_chick"]),
    new Emoji("🐥", "Nature", ["hatched_chick"]),
    new Emoji("🦆", "Nature", ["duck"]),
    new Emoji("🦅", "Nature", ["eagle"]),
    new Emoji("🦉", "Nature", ["owl"]),
    new Emoji("🦇", "Nature", ["bat"]),
    new Emoji("🐺", "Nature", ["wolf"]),
    new Emoji("🐗", "Nature", ["boar"]),
    new Emoji("🐴", "Nature", ["horse"]),
    new Emoji("🦄", "Nature", ["unicorn"]),
    new Emoji("🐝", "Nature", ["bee", "honeybee"]),
    new Emoji("🐛", "Nature", ["bug"]),
    new Emoji("🦋", "Nature", ["butterfly"]),
    new Emoji("🐌", "Nature", ["snail"]),
    new Emoji("🐚", "Nature", ["shell"]),
    new Emoji("🐞", "Nature", ["beetle"]),
    new Emoji("🐜", "Nature", ["ant"]),
    new Emoji("🕷", "Nature", ["spider"]),
    new Emoji("🕸", "Nature", ["spider_web"]),
    new Emoji("🐢", "Nature", ["turtle"]),
    new Emoji("🐍", "Nature", ["snake"]),
    new Emoji("🦎", "Nature", ["lizard"]),
    new Emoji("🦂", "Nature", ["scorpion"]),
    new Emoji("🦀", "Nature", ["crab"]),
    new Emoji("🦑", "Nature", ["squid"]),
    new Emoji("🐙", "Nature", ["octopus"]),
    new Emoji("🦐", "Nature", ["shrimp"]),
    new Emoji("🐠", "Nature", ["tropical_fish"]),
    new Emoji("🐟", "Nature", ["fish"]),
    new Emoji("🐡", "Nature", ["blowfish"]),
    new Emoji("🐬", "Nature", ["dolphin", "flipper"]),
    new Emoji("🦈", "Nature", ["shark"]),
    new Emoji("🐳", "Nature", ["whale"]),
    new Emoji("🐋", "Nature", ["whale2"]),
    new Emoji("🐊", "Nature", ["crocodile"]),
    new Emoji("🐆", "Nature", ["leopard"]),
    new Emoji("🐅", "Nature", ["tiger2"]),
    new Emoji("🐃", "Nature", ["water_buffalo"]),
    new Emoji("🐂", "Nature", ["ox"]),
    new Emoji("🐄", "Nature", ["cow2"]),
    new Emoji("🦌", "Nature", ["deer"]),
    new Emoji("🐪", "Nature", ["dromedary_camel"]),
    new Emoji("🐫", "Nature", ["camel"]),
    new Emoji("🐘", "Nature", ["elephant"]),
    new Emoji("🦏", "Nature", ["rhinoceros"]),
    new Emoji("🦍", "Nature", ["gorilla"]),
    new Emoji("🐎", "Nature", ["racehorse"]),
    new Emoji("🐖", "Nature", ["pig2"]),
    new Emoji("🐐", "Nature", ["goat"]),
    new Emoji("🐏", "Nature", ["ram"]),
    new Emoji("🐑", "Nature", ["sheep"]),
    new Emoji("🐕", "Nature", ["dog2"]),
    new Emoji("🐩", "Nature", ["poodle"]),
    new Emoji("🐈", "Nature", ["cat2"]),
    new Emoji("🐓", "Nature", ["rooster"]),
    new Emoji("🦃", "Nature", ["turkey"]),
    new Emoji("🕊", "Nature", ["dove"]),
    new Emoji("🐇", "Nature", ["rabbit2"]),
    new Emoji("🐁", "Nature", ["mouse2"]),
    new Emoji("🐀", "Nature", ["rat"]),
    new Emoji("🐿", "Nature", ["chipmunk"]),
    new Emoji("🐾", "Nature", ["feet", "paw_prints"]),
    new Emoji("🐉", "Nature", ["dragon"]),
    new Emoji("🐲", "Nature", ["dragon_face"]),
    new Emoji("🌵", "Nature", ["cactus"]),
    new Emoji("🎄", "Nature", ["christmas_tree"]),
    new Emoji("🌲", "Nature", ["evergreen_tree"]),
    new Emoji("🌳", "Nature", ["deciduous_tree"]),
    new Emoji("🌴", "Nature", ["palm_tree"]),
    new Emoji("🌱", "Nature", ["seedling"]),
    new Emoji("🌿", "Nature", ["herb"]),
    new Emoji("☘️", "Nature", ["shamrock"]),
    new Emoji("🍀", "Nature", ["four_leaf_clover"]),
    new Emoji("🎍", "Nature", ["bamboo"]),
    new Emoji("🎋", "Nature", ["tanabata_tree"]),
    new Emoji("🍃", "Nature", ["leaves"]),
    new Emoji("🍂", "Nature", ["fallen_leaf"]),
    new Emoji("🍁", "Nature", ["maple_leaf"]),
    new Emoji("🍄", "Nature", ["mushroom"]),
    new Emoji("🌾", "Nature", ["ear_of_rice"]),
    new Emoji("💐", "Nature", ["bouquet"]),
    new Emoji("🌷", "Nature", ["tulip"]),
    new Emoji("🌹", "Nature", ["rose"]),
    new Emoji("🥀", "Nature", ["wilted_flower"]),
    new Emoji("🌻", "Nature", ["sunflower"]),
    new Emoji("🌼", "Nature", ["blossom"]),
    new Emoji("🌸", "Nature", ["cherry_blossom"]),
    new Emoji("🌺", "Nature", ["hibiscus"]),
    new Emoji("🌎", "Nature", ["earth_americas"]),
    new Emoji("🌍", "Nature", ["earth_africa"]),
    new Emoji("🌏", "Nature", ["earth_asia"]),
    new Emoji("🌕", "Nature", ["full_moon"]),
    new Emoji("🌖", "Nature", ["waning_gibbous_moon"]),
    new Emoji("🌗", "Nature", ["last_quarter_moon"]),
    new Emoji("🌘", "Nature", ["waning_crescent_moon"]),
    new Emoji("🌑", "Nature", ["new_moon"]),
    new Emoji("🌒", "Nature", ["waxing_crescent_moon"]),
    new Emoji("🌓", "Nature", ["first_quarter_moon"]),
    new Emoji("🌔", "Nature", ["moon", "waxing_gibbous_moon"]),
    new Emoji("🌚", "Nature", ["new_moon_with_face"]),
    new Emoji("🌝", "Nature", ["full_moon_with_face"]),
    new Emoji("🌞", "Nature", ["sun_with_face"]),
    new Emoji("🌛", "Nature", ["first_quarter_moon_with_face"]),
    new Emoji("🌜", "Nature", ["last_quarter_moon_with_face"]),
    new Emoji("🌙", "Nature", ["crescent_moon"]),
    new Emoji("💫", "Nature", ["dizzy"]),
    new Emoji("⭐️", "Nature", ["star"]),
    new Emoji("🌟", "Nature", ["star2"]),
    new Emoji("✨", "Nature", ["sparkles"]),
    new Emoji("⚡️", "Nature", ["zap"]),
    new Emoji("🔥", "Nature", ["fire"]),
    new Emoji("💥", "Nature", ["boom", "collision"]),
    new Emoji("☄", "Nature", ["comet"]),
    new Emoji("☀️", "Nature", ["sunny"]),
    new Emoji("🌤", "Nature", ["sun_behind_small_cloud"]),
    new Emoji("⛅️", "Nature", ["partly_sunny"]),
    new Emoji("🌥", "Nature", ["sun_behind_large_cloud"]),
    new Emoji("🌦", "Nature", ["sun_behind_rain_cloud"]),
    new Emoji("🌈", "Nature", ["rainbow"]),
    new Emoji("☁️", "Nature", ["cloud"]),
    new Emoji("🌧", "Nature", ["cloud_with_rain"]),
    new Emoji("⛈", "Nature", ["cloud_with_lightning_and_rain"]),
    new Emoji("🌩", "Nature", ["cloud_with_lightning"]),
    new Emoji("🌨", "Nature", ["cloud_with_snow"]),
    new Emoji("☃️", "Nature", ["snowman_with_snow"]),
    new Emoji("⛄️", "Nature", ["snowman"]),
    new Emoji("❄️", "Nature", ["snowflake"]),
    new Emoji("🌬", "Nature", ["wind_face"]),
    new Emoji("💨", "Nature", ["dash"]),
    new Emoji("🌪", "Nature", ["tornado"]),
    new Emoji("🌫", "Nature", ["fog"]),
    new Emoji("🌊", "Nature", ["ocean"]),
    new Emoji("💧", "Nature", ["droplet"]),
    new Emoji("💦", "Nature", ["sweat_drops"]),
    new Emoji("☔️", "Nature", ["umbrella"]),
    new Emoji("🍏", "Foods", ["green_apple"]),
    new Emoji("🍎", "Foods", ["apple"]),
    new Emoji("🍐", "Foods", ["pear"]),
    new Emoji("🍊", "Foods", ["tangerine", "orange", "mandarin"]),
    new Emoji("🍋", "Foods", ["lemon"]),
    new Emoji("🍌", "Foods", ["banana"]),
    new Emoji("🍉", "Foods", ["watermelon"]),
    new Emoji("🍇", "Foods", ["grapes"]),
    new Emoji("🍓", "Foods", ["strawberry"]),
    new Emoji("🍈", "Foods", ["melon"]),
    new Emoji("🍒", "Foods", ["cherries"]),
    new Emoji("🍑", "Foods", ["peach"]),
    new Emoji("🍍", "Foods", ["pineapple"]),
    new Emoji("🥝", "Foods", ["kiwi_fruit"]),
    new Emoji("🥑", "Foods", ["avocado"]),
    new Emoji("🍅", "Foods", ["tomato"]),
    new Emoji("🍆", "Foods", ["eggplant"]),
    new Emoji("🥒", "Foods", ["cucumber"]),
    new Emoji("🥕", "Foods", ["carrot"]),
    new Emoji("🌽", "Foods", ["corn"]),
    new Emoji("🌶", "Foods", ["hot_pepper"]),
    new Emoji("🥔", "Foods", ["potato"]),
    new Emoji("🍠", "Foods", ["sweet_potato"]),
    new Emoji("🌰", "Foods", ["chestnut"]),
    new Emoji("🥜", "Foods", ["peanuts"]),
    new Emoji("🍯", "Foods", ["honey_pot"]),
    new Emoji("🥐", "Foods", ["croissant"]),
    new Emoji("🍞", "Foods", ["bread"]),
    new Emoji("🥖", "Foods", ["baguette_bread"]),
    new Emoji("🧀", "Foods", ["cheese"]),
    new Emoji("🥚", "Foods", ["egg"]),
    new Emoji("🍳", "Foods", ["fried_egg"]),
    new Emoji("🥓", "Foods", ["bacon"]),
    new Emoji("🥞", "Foods", ["pancakes"]),
    new Emoji("🍤", "Foods", ["fried_shrimp"]),
    new Emoji("🍗", "Foods", ["poultry_leg"]),
    new Emoji("🍖", "Foods", ["meat_on_bone"]),
    new Emoji("🍕", "Foods", ["pizza"]),
    new Emoji("🌭", "Foods", ["hotdog"]),
    new Emoji("🍔", "Foods", ["hamburger"]),
    new Emoji("🍟", "Foods", ["fries"]),
    new Emoji("🥙", "Foods", ["stuffed_flatbread"]),
    new Emoji("🌮", "Foods", ["taco"]),
    new Emoji("🌯", "Foods", ["burrito"]),
    new Emoji("🥗", "Foods", ["green_salad"]),
    new Emoji("🥘", "Foods", ["shallow_pan_of_food"]),
    new Emoji("🍝", "Foods", ["spaghetti"]),
    new Emoji("🍜", "Foods", ["ramen"]),
    new Emoji("🍲", "Foods", ["stew"]),
    new Emoji("🍥", "Foods", ["fish_cake"]),
    new Emoji("🍣", "Foods", ["sushi"]),
    new Emoji("🍱", "Foods", ["bento"]),
    new Emoji("🍛", "Foods", ["curry"]),
    new Emoji("🍚", "Foods", ["rice"]),
    new Emoji("🍙", "Foods", ["rice_ball"]),
    new Emoji("🍘", "Foods", ["rice_cracker"]),
    new Emoji("🍢", "Foods", ["oden"]),
    new Emoji("🍡", "Foods", ["dango"]),
    new Emoji("🍧", "Foods", ["shaved_ice"]),
    new Emoji("🍨", "Foods", ["ice_cream"]),
    new Emoji("🍦", "Foods", ["icecream"]),
    new Emoji("🍰", "Foods", ["cake"]),
    new Emoji("🎂", "Foods", ["birthday"]),
    new Emoji("🍮", "Foods", ["custard"]),
    new Emoji("🍭", "Foods", ["lollipop"]),
    new Emoji("🍬", "Foods", ["candy"]),
    new Emoji("🍫", "Foods", ["chocolate_bar"]),
    new Emoji("🍿", "Foods", ["popcorn"]),
    new Emoji("🍩", "Foods", ["doughnut"]),
    new Emoji("🍪", "Foods", ["cookie"]),
    new Emoji("🥛", "Foods", ["milk_glass"]),
    new Emoji("🍼", "Foods", ["baby_bottle"]),
    new Emoji("☕️", "Foods", ["coffee"]),
    new Emoji("🍵", "Foods", ["tea"]),
    new Emoji("🍶", "Foods", ["sake"]),
    new Emoji("🍺", "Foods", ["beer"]),
    new Emoji("🍻", "Foods", ["beers"]),
    new Emoji("🥂", "Foods", ["clinking_glasses"]),
    new Emoji("🍷", "Foods", ["wine_glass"]),
    new Emoji("🥃", "Foods", ["tumbler_glass"]),
    new Emoji("🍸", "Foods", ["cocktail"]),
    new Emoji("🍹", "Foods", ["tropical_drink"]),
    new Emoji("🍾", "Foods", ["champagne"]),
    new Emoji("🥄", "Foods", ["spoon"]),
    new Emoji("🍴", "Foods", ["fork_and_knife"]),
    new Emoji("🍽", "Foods", ["plate_with_cutlery"]),
    new Emoji("⚽️", "Activity", ["soccer"]),
    new Emoji("🏀", "Activity", ["basketball"]),
    new Emoji("🏈", "Activity", ["football"]),
    new Emoji("⚾️", "Activity", ["baseball"]),
    new Emoji("🎾", "Activity", ["tennis"]),
    new Emoji("🏐", "Activity", ["volleyball"]),
    new Emoji("🏉", "Activity", ["rugby_football"]),
    new Emoji("🎱", "Activity", ["8ball"]),
    new Emoji("🏓", "Activity", ["ping_pong"]),
    new Emoji("🏸", "Activity", ["badminton"]),
    new Emoji("🥅", "Activity", ["goal_net"]),
    new Emoji("🏒", "Activity", ["ice_hockey"]),
    new Emoji("🏑", "Activity", ["field_hockey"]),
    new Emoji("🏏", "Activity", ["cricket"]),
    new Emoji("⛳️", "Activity", ["golf"]),
    new Emoji("🏹", "Activity", ["bow_and_arrow"]),
    new Emoji("🎣", "Activity", ["fishing_pole_and_fish"]),
    new Emoji("🥊", "Activity", ["boxing_glove"]),
    new Emoji("🥋", "Activity", ["martial_arts_uniform"]),
    new Emoji("⛸", "Activity", ["ice_skate"]),
    new Emoji("🎿", "Activity", ["ski"]),
    new Emoji("⛷", "Activity", ["skier"]),
    new Emoji("🏂", "Activity", ["snowboarder"]),
    new Emoji("🏋️‍♀️", "Activity", ["weight_lifting_woman"]),
    new Emoji("🏋", "Activity", ["weight_lifting_man"]),
    new Emoji("🤺", "Activity", ["person_fencing"]),
    new Emoji("🤼‍♀", "Activity", ["women_wrestling"]),
    new Emoji("🤼‍♂", "Activity", ["men_wrestling"]),
    new Emoji("🤸‍♀", "Activity", ["woman_cartwheeling"]),
    new Emoji("🤸‍♂", "Activity", ["man_cartwheeling"]),
    new Emoji("⛹️‍♀️", "Activity", ["basketball_woman"]),
    new Emoji("⛹", "Activity", ["basketball_man"]),
    new Emoji("🤾‍♀", "Activity", ["woman_playing_handball"]),
    new Emoji("🤾‍♂", "Activity", ["man_playing_handball"]),
    new Emoji("🏌️‍♀️", "Activity", ["golfing_woman"]),
    new Emoji("🏌", "Activity", ["golfing_man"]),
    new Emoji("🏄‍♀", "Activity", ["surfing_woman"]),
    new Emoji("🏄", "Activity", ["surfing_man", "surfer"]),
    new Emoji("🏊‍♀", "Activity", ["swimming_woman"]),
    new Emoji("🏊", "Activity", ["swimming_man", "swimmer"]),
    new Emoji("🤽‍♀", "Activity", ["woman_playing_water_polo"]),
    new Emoji("🤽‍♂", "Activity", ["man_playing_water_polo"]),
    new Emoji("🚣‍♀", "Activity", ["rowing_woman"]),
    new Emoji("🚣", "Activity", ["rowing_man", "rowboat"]),
    new Emoji("🏇", "Activity", ["horse_racing"]),
    new Emoji("🚴‍♀", "Activity", ["biking_woman"]),
    new Emoji("🚴", "Activity", ["biking_man", "bicyclist"]),
    new Emoji("🚵‍♀", "Activity", ["mountain_biking_woman"]),
    new Emoji("🚵", "Activity", ["mountain_biking_man", "mountain_bicyclist"]),
    new Emoji("🎽", "Activity", ["running_shirt_with_sash"]),
    new Emoji("🏅", "Activity", ["medal_sports"]),
    new Emoji("🎖", "Activity", ["medal_military"]),
    new Emoji("🥇", "Activity", ["1st_place_medal"]),
    new Emoji("🥈", "Activity", ["2nd_place_medal"]),
    new Emoji("🥉", "Activity", ["3rd_place_medal"]),
    new Emoji("🏆", "Activity", ["trophy"]),
    new Emoji("🏵", "Activity", ["rosette"]),
    new Emoji("🎗", "Activity", ["reminder_ribbon"]),
    new Emoji("🎫", "Activity", ["ticket"]),
    new Emoji("🎟", "Activity", ["tickets"]),
    new Emoji("🎪", "Activity", ["circus_tent"]),
    new Emoji("🤹‍♀", "Activity", ["woman_juggling"]),
    new Emoji("🤹‍♂", "Activity", ["man_juggling"]),
    new Emoji("🎭", "Activity", ["performing_arts"]),
    new Emoji("🎨", "Activity", ["art"]),
    new Emoji("🎬", "Activity", ["clapper"]),
    new Emoji("🎤", "Activity", ["microphone"]),
    new Emoji("🎧", "Activity", ["headphones"]),
    new Emoji("🎼", "Activity", ["musical_score"]),
    new Emoji("🎹", "Activity", ["musical_keyboard"]),
    new Emoji("🥁", "Activity", ["drum"]),
    new Emoji("🎷", "Activity", ["saxophone"]),
    new Emoji("🎺", "Activity", ["trumpet"]),
    new Emoji("🎸", "Activity", ["guitar"]),
    new Emoji("🎻", "Activity", ["violin"]),
    new Emoji("🎲", "Activity", ["game_die"]),
    new Emoji("🎯", "Activity", ["dart"]),
    new Emoji("🎳", "Activity", ["bowling"]),
    new Emoji("🎮", "Activity", ["video_game"]),
    new Emoji("🎰", "Activity", ["slot_machine"]),
    new Emoji("🚗", "Places", ["car", "red_car"]),
    new Emoji("🚕", "Places", ["taxi"]),
    new Emoji("🚙", "Places", ["blue_car"]),
    new Emoji("🚌", "Places", ["bus"]),
    new Emoji("🚎", "Places", ["trolleybus"]),
    new Emoji("🏎", "Places", ["racing_car"]),
    new Emoji("🚓", "Places", ["police_car"]),
    new Emoji("🚑", "Places", ["ambulance"]),
    new Emoji("🚒", "Places", ["fire_engine"]),
    new Emoji("🚐", "Places", ["minibus"]),
    new Emoji("🚚", "Places", ["truck"]),
    new Emoji("🚛", "Places", ["articulated_lorry"]),
    new Emoji("🚜", "Places", ["tractor"]),
    new Emoji("🛴", "Places", ["kick_scooter"]),
    new Emoji("🚲", "Places", ["bike"]),
    new Emoji("🛵", "Places", ["motor_scooter"]),
    new Emoji("🏍", "Places", ["motorcycle"]),
    new Emoji("🚨", "Places", ["rotating_light"]),
    new Emoji("🚔", "Places", ["oncoming_police_car"]),
    new Emoji("🚍", "Places", ["oncoming_bus"]),
    new Emoji("🚘", "Places", ["oncoming_automobile"]),
    new Emoji("🚖", "Places", ["oncoming_taxi"]),
    new Emoji("🚡", "Places", ["aerial_tramway"]),
    new Emoji("🚠", "Places", ["mountain_cableway"]),
    new Emoji("🚟", "Places", ["suspension_railway"]),
    new Emoji("🚃", "Places", ["railway_car"]),
    new Emoji("🚋", "Places", ["train"]),
    new Emoji("🚞", "Places", ["mountain_railway"]),
    new Emoji("🚝", "Places", ["monorail"]),
    new Emoji("🚄", "Places", ["bullettrain_side"]),
    new Emoji("🚅", "Places", ["bullettrain_front"]),
    new Emoji("🚈", "Places", ["light_rail"]),
    new Emoji("🚂", "Places", ["steam_locomotive"]),
    new Emoji("🚆", "Places", ["train2"]),
    new Emoji("🚇", "Places", ["metro"]),
    new Emoji("🚊", "Places", ["tram"]),
    new Emoji("🚉", "Places", ["station"]),
    new Emoji("🚁", "Places", ["helicopter"]),
    new Emoji("🛩", "Places", ["small_airplane"]),
    new Emoji("✈️", "Places", ["airplane"]),
    new Emoji("🛫", "Places", ["flight_departure"]),
    new Emoji("🛬", "Places", ["flight_arrival"]),
    new Emoji("🚀", "Places", ["rocket"]),
    new Emoji("🛰", "Places", ["artificial_satellite"]),
    new Emoji("💺", "Places", ["seat"]),
    new Emoji("🛶", "Places", ["canoe"]),
    new Emoji("⛵️", "Places", ["boat", "sailboat"]),
    new Emoji("🛥", "Places", ["motor_boat"]),
    new Emoji("🚤", "Places", ["speedboat"]),
    new Emoji("🛳", "Places", ["passenger_ship"]),
    new Emoji("⛴", "Places", ["ferry"]),
    new Emoji("🚢", "Places", ["ship"]),
    new Emoji("⚓️", "Places", ["anchor"]),
    new Emoji("🚧", "Places", ["construction"]),
    new Emoji("⛽️", "Places", ["fuelpump"]),
    new Emoji("🚏", "Places", ["busstop"]),
    new Emoji("🚦", "Places", ["vertical_traffic_light"]),
    new Emoji("🚥", "Places", ["traffic_light"]),
    new Emoji("🗺", "Places", ["world_map"]),
    new Emoji("🗿", "Places", ["moyai"]),
    new Emoji("🗽", "Places", ["statue_of_liberty"]),
    new Emoji("⛲️", "Places", ["fountain"]),
    new Emoji("🗼", "Places", ["tokyo_tower"]),
    new Emoji("🏰", "Places", ["european_castle"]),
    new Emoji("🏯", "Places", ["japanese_castle"]),
    new Emoji("🏟", "Places", ["stadium"]),
    new Emoji("🎡", "Places", ["ferris_wheel"]),
    new Emoji("🎢", "Places", ["roller_coaster"]),
    new Emoji("🎠", "Places", ["carousel_horse"]),
    new Emoji("⛱", "Places", ["parasol_on_ground"]),
    new Emoji("🏖", "Places", ["beach_umbrella"]),
    new Emoji("🏝", "Places", ["desert_island"]),
    new Emoji("⛰", "Places", ["mountain"]),
    new Emoji("🏔", "Places", ["mountain_snow"]),
    new Emoji("🗻", "Places", ["mount_fuji"]),
    new Emoji("🌋", "Places", ["volcano"]),
    new Emoji("🏜", "Places", ["desert"]),
    new Emoji("🏕", "Places", ["camping"]),
    new Emoji("⛺️", "Places", ["tent"]),
    new Emoji("🛤", "Places", ["railway_track"]),
    new Emoji("🛣", "Places", ["motorway"]),
    new Emoji("🏗", "Places", ["building_construction"]),
    new Emoji("🏭", "Places", ["factory"]),
    new Emoji("🏠", "Places", ["house"]),
    new Emoji("🏡", "Places", ["house_with_garden"]),
    new Emoji("🏘", "Places", ["houses"]),
    new Emoji("🏚", "Places", ["derelict_house"]),
    new Emoji("🏢", "Places", ["office"]),
    new Emoji("🏬", "Places", ["department_store"]),
    new Emoji("🏣", "Places", ["post_office"]),
    new Emoji("🏤", "Places", ["european_post_office"]),
    new Emoji("🏥", "Places", ["hospital"]),
    new Emoji("🏦", "Places", ["bank"]),
    new Emoji("🏨", "Places", ["hotel"]),
    new Emoji("🏪", "Places", ["convenience_store"]),
    new Emoji("🏫", "Places", ["school"]),
    new Emoji("🏩", "Places", ["love_hotel"]),
    new Emoji("💒", "Places", ["wedding"]),
    new Emoji("🏛", "Places", ["classical_building"]),
    new Emoji("⛪️", "Places", ["church"]),
    new Emoji("🕌", "Places", ["mosque"]),
    new Emoji("🕍", "Places", ["synagogue"]),
    new Emoji("🕋", "Places", ["kaaba"]),
    new Emoji("⛩", "Places", ["shinto_shrine"]),
    new Emoji("🗾", "Places", ["japan"]),
    new Emoji("🎑", "Places", ["rice_scene"]),
    new Emoji("🏞", "Places", ["national_park"]),
    new Emoji("🌅", "Places", ["sunrise"]),
    new Emoji("🌄", "Places", ["sunrise_over_mountains"]),
    new Emoji("🌠", "Places", ["stars"]),
    new Emoji("🎇", "Places", ["sparkler"]),
    new Emoji("🎆", "Places", ["fireworks"]),
    new Emoji("🌇", "Places", ["city_sunrise"]),
    new Emoji("🌆", "Places", ["city_sunset"]),
    new Emoji("🏙", "Places", ["cityscape"]),
    new Emoji("🌃", "Places", ["night_with_stars"]),
    new Emoji("🌌", "Places", ["milky_way"]),
    new Emoji("🌉", "Places", ["bridge_at_night"]),
    new Emoji("🌁", "Places", ["foggy"]),
    new Emoji("⌚️", "Objects", ["watch"]),
    new Emoji("📱", "Objects", ["iphone"]),
    new Emoji("📲", "Objects", ["calling"]),
    new Emoji("💻", "Objects", ["computer"]),
    new Emoji("⌨️", "Objects", ["keyboard"]),
    new Emoji("🖥", "Objects", ["desktop_computer"]),
    new Emoji("🖨", "Objects", ["printer"]),
    new Emoji("🖱", "Objects", ["computer_mouse"]),
    new Emoji("🖲", "Objects", ["trackball"]),
    new Emoji("🕹", "Objects", ["joystick"]),
    new Emoji("🗜", "Objects", ["clamp"]),
    new Emoji("💽", "Objects", ["minidisc"]),
    new Emoji("💾", "Objects", ["floppy_disk"]),
    new Emoji("💿", "Objects", ["cd"]),
    new Emoji("📀", "Objects", ["dvd"]),
    new Emoji("📼", "Objects", ["vhs"]),
    new Emoji("📷", "Objects", ["camera"]),
    new Emoji("📸", "Objects", ["camera_flash"]),
    new Emoji("📹", "Objects", ["video_camera"]),
    new Emoji("🎥", "Objects", ["movie_camera"]),
    new Emoji("📽", "Objects", ["film_projector"]),
    new Emoji("🎞", "Objects", ["film_strip"]),
    new Emoji("📞", "Objects", ["telephone_receiver"]),
    new Emoji("☎️", "Objects", ["phone", "telephone"]),
    new Emoji("📟", "Objects", ["pager"]),
    new Emoji("📠", "Objects", ["fax"]),
    new Emoji("📺", "Objects", ["tv"]),
    new Emoji("📻", "Objects", ["radio"]),
    new Emoji("🎙", "Objects", ["studio_microphone"]),
    new Emoji("🎚", "Objects", ["level_slider"]),
    new Emoji("🎛", "Objects", ["control_knobs"]),
    new Emoji("⏱", "Objects", ["stopwatch"]),
    new Emoji("⏲", "Objects", ["timer_clock"]),
    new Emoji("⏰", "Objects", ["alarm_clock"]),
    new Emoji("🕰", "Objects", ["mantelpiece_clock"]),
    new Emoji("⌛️", "Objects", ["hourglass"]),
    new Emoji("⏳", "Objects", ["hourglass_flowing_sand"]),
    new Emoji("📡", "Objects", ["satellite"]),
    new Emoji("🔋", "Objects", ["battery"]),
    new Emoji("🔌", "Objects", ["electric_plug"]),
    new Emoji("💡", "Objects", ["bulb"]),
    new Emoji("🔦", "Objects", ["flashlight"]),
    new Emoji("🕯", "Objects", ["candle"]),
    new Emoji("🗑", "Objects", ["wastebasket"]),
    new Emoji("🛢", "Objects", ["oil_drum"]),
    new Emoji("💸", "Objects", ["money_with_wings"]),
    new Emoji("💵", "Objects", ["dollar"]),
    new Emoji("💴", "Objects", ["yen"]),
    new Emoji("💶", "Objects", ["euro"]),
    new Emoji("💷", "Objects", ["pound"]),
    new Emoji("💰", "Objects", ["moneybag"]),
    new Emoji("💳", "Objects", ["credit_card"]),
    new Emoji("💎", "Objects", ["gem"]),
    new Emoji("⚖️", "Objects", ["balance_scale"]),
    new Emoji("🔧", "Objects", ["wrench"]),
    new Emoji("🔨", "Objects", ["hammer"]),
    new Emoji("⚒", "Objects", ["hammer_and_pick"]),
    new Emoji("🛠", "Objects", ["hammer_and_wrench"]),
    new Emoji("⛏", "Objects", ["pick"]),
    new Emoji("🔩", "Objects", ["nut_and_bolt"]),
    new Emoji("⚙️", "Objects", ["gear"]),
    new Emoji("⛓", "Objects", ["chains"]),
    new Emoji("🔫", "Objects", ["gun"]),
    new Emoji("💣", "Objects", ["bomb"]),
    new Emoji("🔪", "Objects", ["hocho", "knife"]),
    new Emoji("🗡", "Objects", ["dagger"]),
    new Emoji("⚔️", "Objects", ["crossed_swords"]),
    new Emoji("🛡", "Objects", ["shield"]),
    new Emoji("🚬", "Objects", ["smoking"]),
    new Emoji("⚰️", "Objects", ["coffin"]),
    new Emoji("⚱️", "Objects", ["funeral_urn"]),
    new Emoji("🏺", "Objects", ["amphora"]),
    new Emoji("🔮", "Objects", ["crystal_ball"]),
    new Emoji("📿", "Objects", ["prayer_beads"]),
    new Emoji("💈", "Objects", ["barber"]),
    new Emoji("⚗️", "Objects", ["alembic"]),
    new Emoji("🔭", "Objects", ["telescope"]),
    new Emoji("🔬", "Objects", ["microscope"]),
    new Emoji("🕳", "Objects", ["hole"]),
    new Emoji("💊", "Objects", ["pill"]),
    new Emoji("💉", "Objects", ["syringe"]),
    new Emoji("🌡", "Objects", ["thermometer"]),
    new Emoji("🚽", "Objects", ["toilet"]),
    new Emoji("🚰", "Objects", ["potable_water"]),
    new Emoji("🚿", "Objects", ["shower"]),
    new Emoji("🛁", "Objects", ["bathtub"]),
    new Emoji("🛀", "Objects", ["bath"]),
    new Emoji("🛎", "Objects", ["bellhop_bell"]),
    new Emoji("🔑", "Objects", ["key"]),
    new Emoji("🗝", "Objects", ["old_key"]),
    new Emoji("🚪", "Objects", ["door"]),
    new Emoji("🛋", "Objects", ["couch_and_lamp"]),
    new Emoji("🛏", "Objects", ["bed"]),
    new Emoji("🛌", "Objects", ["sleeping_bed"]),
    new Emoji("🖼", "Objects", ["framed_picture"]),
    new Emoji("🛍", "Objects", ["shopping"]),
    new Emoji("🛒", "Objects", ["shopping_cart"]),
    new Emoji("🎁", "Objects", ["gift"]),
    new Emoji("🎈", "Objects", ["balloon"]),
    new Emoji("🎏", "Objects", ["flags"]),
    new Emoji("🎀", "Objects", ["ribbon"]),
    new Emoji("🎊", "Objects", ["confetti_ball"]),
    new Emoji("🎉", "Objects", ["tada"]),
    new Emoji("🎎", "Objects", ["dolls"]),
    new Emoji("🏮", "Objects", ["izakaya_lantern", "lantern"]),
    new Emoji("🎐", "Objects", ["wind_chime"]),
    new Emoji("✉️", "Objects", ["email", "envelope"]),
    new Emoji("📩", "Objects", ["envelope_with_arrow"]),
    new Emoji("📨", "Objects", ["incoming_envelope"]),
    new Emoji("📧", "Objects", ["e-mail"]),
    new Emoji("💌", "Objects", ["love_letter"]),
    new Emoji("📥", "Objects", ["inbox_tray"]),
    new Emoji("📤", "Objects", ["outbox_tray"]),
    new Emoji("📦", "Objects", ["package"]),
    new Emoji("🏷", "Objects", ["label"]),
    new Emoji("📪", "Objects", ["mailbox_closed"]),
    new Emoji("📫", "Objects", ["mailbox"]),
    new Emoji("📬", "Objects", ["mailbox_with_mail"]),
    new Emoji("📭", "Objects", ["mailbox_with_no_mail"]),
    new Emoji("📮", "Objects", ["postbox"]),
    new Emoji("📯", "Objects", ["postal_horn"]),
    new Emoji("📜", "Objects", ["scroll"]),
    new Emoji("📃", "Objects", ["page_with_curl"]),
    new Emoji("📄", "Objects", ["page_facing_up"]),
    new Emoji("📑", "Objects", ["bookmark_tabs"]),
    new Emoji("📊", "Objects", ["bar_chart"]),
    new Emoji("📈", "Objects", ["chart_with_upwards_trend"]),
    new Emoji("📉", "Objects", ["chart_with_downwards_trend"]),
    new Emoji("🗒", "Objects", ["spiral_notepad"]),
    new Emoji("🗓", "Objects", ["spiral_calendar"]),
    new Emoji("📆", "Objects", ["calendar"]),
    new Emoji("📅", "Objects", ["date"]),
    new Emoji("📇", "Objects", ["card_index"]),
    new Emoji("🗃", "Objects", ["card_file_box"]),
    new Emoji("🗳", "Objects", ["ballot_box"]),
    new Emoji("🗄", "Objects", ["file_cabinet"]),
    new Emoji("📋", "Objects", ["clipboard"]),
    new Emoji("📁", "Objects", ["file_folder"]),
    new Emoji("📂", "Objects", ["open_file_folder"]),
    new Emoji("🗂", "Objects", ["card_index_dividers"]),
    new Emoji("🗞", "Objects", ["newspaper_roll"]),
    new Emoji("📰", "Objects", ["newspaper"]),
    new Emoji("📓", "Objects", ["notebook"]),
    new Emoji("📔", "Objects", ["notebook_with_decorative_cover"]),
    new Emoji("📒", "Objects", ["ledger"]),
    new Emoji("📕", "Objects", ["closed_book"]),
    new Emoji("📗", "Objects", ["green_book"]),
    new Emoji("📘", "Objects", ["blue_book"]),
    new Emoji("📙", "Objects", ["orange_book"]),
    new Emoji("📚", "Objects", ["books"]),
    new Emoji("📖", "Objects", ["book", "open_book"]),
    new Emoji("🔖", "Objects", ["bookmark"]),
    new Emoji("🔗", "Objects", ["link"]),
    new Emoji("📎", "Objects", ["paperclip"]),
    new Emoji("🖇", "Objects", ["paperclips"]),
    new Emoji("📐", "Objects", ["triangular_ruler"]),
    new Emoji("📏", "Objects", ["straight_ruler"]),
    new Emoji("📌", "Objects", ["pushpin"]),
    new Emoji("📍", "Objects", ["round_pushpin"]),
    new Emoji("✂️", "Objects", ["scissors"]),
    new Emoji("🖊", "Objects", ["pen"]),
    new Emoji("🖋", "Objects", ["fountain_pen"]),
    new Emoji("✒️", "Objects", ["black_nib"]),
    new Emoji("🖌", "Objects", ["paintbrush"]),
    new Emoji("🖍", "Objects", ["crayon"]),
    new Emoji("📝", "Objects", ["memo", "pencil"]),
    new Emoji("✏️", "Objects", ["pencil2"]),
    new Emoji("🔍", "Objects", ["mag"]),
    new Emoji("🔎", "Objects", ["mag_right"]),
    new Emoji("🔏", "Objects", ["lock_with_ink_pen"]),
    new Emoji("🔐", "Objects", ["closed_lock_with_key"]),
    new Emoji("🔒", "Objects", ["lock"]),
    new Emoji("🔓", "Objects", ["unlock"]),
    new Emoji("❤️", "Symbols", ["heart"]),
    new Emoji("💛", "Symbols", ["yellow_heart"]),
    new Emoji("💚", "Symbols", ["green_heart"]),
    new Emoji("💙", "Symbols", ["blue_heart"]),
    new Emoji("💜", "Symbols", ["purple_heart"]),
    new Emoji("🖤", "Symbols", ["black_heart"]),
    new Emoji("💔", "Symbols", ["broken_heart"]),
    new Emoji("❣️", "Symbols", ["heavy_heart_exclamation"]),
    new Emoji("💕", "Symbols", ["two_hearts"]),
    new Emoji("💞", "Symbols", ["revolving_hearts"]),
    new Emoji("💓", "Symbols", ["heartbeat"]),
    new Emoji("💗", "Symbols", ["heartpulse"]),
    new Emoji("💖", "Symbols", ["sparkling_heart"]),
    new Emoji("💘", "Symbols", ["cupid"]),
    new Emoji("💝", "Symbols", ["gift_heart"]),
    new Emoji("💟", "Symbols", ["heart_decoration"]),
    new Emoji("☮️", "Symbols", ["peace_symbol"]),
    new Emoji("✝️", "Symbols", ["latin_cross"]),
    new Emoji("☪️", "Symbols", ["star_and_crescent"]),
    new Emoji("🕉", "Symbols", ["om"]),
    new Emoji("☸️", "Symbols", ["wheel_of_dharma"]),
    new Emoji("✡️", "Symbols", ["star_of_david"]),
    new Emoji("🔯", "Symbols", ["six_pointed_star"]),
    new Emoji("🕎", "Symbols", ["menorah"]),
    new Emoji("☯️", "Symbols", ["yin_yang"]),
    new Emoji("☦️", "Symbols", ["orthodox_cross"]),
    new Emoji("🛐", "Symbols", ["place_of_worship"]),
    new Emoji("⛎", "Symbols", ["ophiuchus"]),
    new Emoji("♈️", "Symbols", ["aries"]),
    new Emoji("♉️", "Symbols", ["taurus"]),
    new Emoji("♊️", "Symbols", ["gemini"]),
    new Emoji("♋️", "Symbols", ["cancer"]),
    new Emoji("♌️", "Symbols", ["leo"]),
    new Emoji("♍️", "Symbols", ["virgo"]),
    new Emoji("♎️", "Symbols", ["libra"]),
    new Emoji("♏️", "Symbols", ["scorpius"]),
    new Emoji("♐️", "Symbols", ["sagittarius"]),
    new Emoji("♑️", "Symbols", ["capricorn"]),
    new Emoji("♒️", "Symbols", ["aquarius"]),
    new Emoji("♓️", "Symbols", ["pisces"]),
    new Emoji("🆔", "Symbols", ["id"]),
    new Emoji("⚛️", "Symbols", ["atom_symbol"]),
    new Emoji("🉑", "Symbols", ["accept"]),
    new Emoji("☢️", "Symbols", ["radioactive"]),
    new Emoji("☣️", "Symbols", ["biohazard"]),
    new Emoji("📴", "Symbols", ["mobile_phone_off"]),
    new Emoji("📳", "Symbols", ["vibration_mode"]),
    new Emoji("🈶", "Symbols", ["u6709"]),
    new Emoji("🈚️", "Symbols", ["u7121"]),
    new Emoji("🈸", "Symbols", ["u7533"]),
    new Emoji("🈺", "Symbols", ["u55b6"]),
    new Emoji("🈷️", "Symbols", ["u6708"]),
    new Emoji("✴️", "Symbols", ["eight_pointed_black_star"]),
    new Emoji("🆚", "Symbols", ["vs"]),
    new Emoji("💮", "Symbols", ["white_flower"]),
    new Emoji("🉐", "Symbols", ["ideograph_advantage"]),
    new Emoji("㊙️", "Symbols", ["secret"]),
    new Emoji("㊗️", "Symbols", ["congratulations"]),
    new Emoji("🈴", "Symbols", ["u5408"]),
    new Emoji("🈵", "Symbols", ["u6e80"]),
    new Emoji("🈹", "Symbols", ["u5272"]),
    new Emoji("🈲", "Symbols", ["u7981"]),
    new Emoji("🅰️", "Symbols", ["a"]),
    new Emoji("🅱️", "Symbols", ["b"]),
    new Emoji("🆎", "Symbols", ["ab"]),
    new Emoji("🆑", "Symbols", ["cl"]),
    new Emoji("🅾️", "Symbols", ["o2"]),
    new Emoji("🆘", "Symbols", ["sos"]),
    new Emoji("❌", "Symbols", ["x"]),
    new Emoji("⭕️", "Symbols", ["o"]),
    new Emoji("🛑", "Symbols", ["stop_sign"]),
    new Emoji("⛔️", "Symbols", ["no_entry"]),
    new Emoji("📛", "Symbols", ["name_badge"]),
    new Emoji("🚫", "Symbols", ["no_entry_sign"]),
    new Emoji("💯", "Symbols", ["100"]),
    new Emoji("💢", "Symbols", ["anger"]),
    new Emoji("♨️", "Symbols", ["hotsprings"]),
    new Emoji("🚷", "Symbols", ["no_pedestrians"]),
    new Emoji("🚯", "Symbols", ["do_not_litter"]),
    new Emoji("🚳", "Symbols", ["no_bicycles"]),
    new Emoji("🚱", "Symbols", ["non-potable_water"]),
    new Emoji("🔞", "Symbols", ["underage"]),
    new Emoji("📵", "Symbols", ["no_mobile_phones"]),
    new Emoji("🚭", "Symbols", ["no_smoking"]),
    new Emoji("❗️", "Symbols", ["exclamation", "heavy_exclamation_mark"]),
    new Emoji("❕", "Symbols", ["grey_exclamation"]),
    new Emoji("❓", "Symbols", ["question"]),
    new Emoji("❔", "Symbols", ["grey_question"]),
    new Emoji("‼️", "Symbols", ["bangbang"]),
    new Emoji("⁉️", "Symbols", ["interrobang"]),
    new Emoji("🔅", "Symbols", ["low_brightness"]),
    new Emoji("🔆", "Symbols", ["high_brightness"]),
    new Emoji("〽️", "Symbols", ["part_alternation_mark"]),
    new Emoji("⚠️", "Symbols", ["warning"]),
    new Emoji("🚸", "Symbols", ["children_crossing"]),
    new Emoji("🔱", "Symbols", ["trident"]),
    new Emoji("⚜️", "Symbols", ["fleur_de_lis"]),
    new Emoji("🔰", "Symbols", ["beginner"]),
    new Emoji("♻️", "Symbols", ["recycle"]),
    new Emoji("✅", "Symbols", ["white_check_mark"]),
    new Emoji("🈯️", "Symbols", ["u6307"]),
    new Emoji("💹", "Symbols", ["chart"]),
    new Emoji("❇️", "Symbols", ["sparkle"]),
    new Emoji("✳️", "Symbols", ["eight_spoked_asterisk"]),
    new Emoji("❎", "Symbols", ["negative_squared_cross_mark"]),
    new Emoji("🌐", "Symbols", ["globe_with_meridians"]),
    new Emoji("💠", "Symbols", ["diamond_shape_with_a_dot_inside"]),
    new Emoji("Ⓜ️", "Symbols", ["m"]),
    new Emoji("🌀", "Symbols", ["cyclone"]),
    new Emoji("💤", "Symbols", ["zzz"]),
    new Emoji("🏧", "Symbols", ["atm"]),
    new Emoji("🚾", "Symbols", ["wc"]),
    new Emoji("♿️", "Symbols", ["wheelchair"]),
    new Emoji("🅿️", "Symbols", ["parking"]),
    new Emoji("🈳", "Symbols", ["u7a7a"]),
    new Emoji("🈂️", "Symbols", ["sa"]),
    new Emoji("🛂", "Symbols", ["passport_control"]),
    new Emoji("🛃", "Symbols", ["customs"]),
    new Emoji("🛄", "Symbols", ["baggage_claim"]),
    new Emoji("🛅", "Symbols", ["left_luggage"]),
    new Emoji("🚹", "Symbols", ["mens"]),
    new Emoji("🚺", "Symbols", ["womens"]),
    new Emoji("🚼", "Symbols", ["baby_symbol"]),
    new Emoji("🚻", "Symbols", ["restroom"]),
    new Emoji("🚮", "Symbols", ["put_litter_in_its_place"]),
    new Emoji("🎦", "Symbols", ["cinema"]),
    new Emoji("📶", "Symbols", ["signal_strength"]),
    new Emoji("🈁", "Symbols", ["koko"]),
    new Emoji("🔣", "Symbols", ["symbols"]),
    new Emoji("ℹ️", "Symbols", ["information_source"]),
    new Emoji("🔤", "Symbols", ["abc"]),
    new Emoji("🔡", "Symbols", ["abcd"]),
    new Emoji("🔠", "Symbols", ["capital_abcd"]),
    new Emoji("🆖", "Symbols", ["ng"]),
    new Emoji("🆗", "Symbols", ["ok"]),
    new Emoji("🆙", "Symbols", ["up"]),
    new Emoji("🆒", "Symbols", ["cool"]),
    new Emoji("🆕", "Symbols", ["new"]),
    new Emoji("🆓", "Symbols", ["free"]),
    new Emoji("0️⃣", "Symbols", ["zero"]),
    new Emoji("1️⃣", "Symbols", ["one"]),
    new Emoji("2️⃣", "Symbols", ["two"]),
    new Emoji("3️⃣", "Symbols", ["three"]),
    new Emoji("4️⃣", "Symbols", ["four"]),
    new Emoji("5️⃣", "Symbols", ["five"]),
    new Emoji("6️⃣", "Symbols", ["six"]),
    new Emoji("7️⃣", "Symbols", ["seven"]),
    new Emoji("8️⃣", "Symbols", ["eight"]),
    new Emoji("9️⃣", "Symbols", ["nine"]),
    new Emoji("🔟", "Symbols", ["keycap_ten"]),
    new Emoji("🔢", "Symbols", ["1234"]),
    new Emoji("#️⃣", "Symbols", ["hash"]),
    new Emoji("*️⃣", "Symbols", ["asterisk"]),
    new Emoji("▶️", "Symbols", ["arrow_forward"]),
    new Emoji("⏸", "Symbols", ["pause_button"]),
    new Emoji("⏯", "Symbols", ["play_or_pause_button"]),
    new Emoji("⏹", "Symbols", ["stop_button"]),
    new Emoji("⏺", "Symbols", ["record_button"]),
    new Emoji("⏭", "Symbols", ["next_track_button"]),
    new Emoji("⏮", "Symbols", ["previous_track_button"]),
    new Emoji("⏩", "Symbols", ["fast_forward"]),
    new Emoji("⏪", "Symbols", ["rewind"]),
    new Emoji("⏫", "Symbols", ["arrow_double_up"]),
    new Emoji("⏬", "Symbols", ["arrow_double_down"]),
    new Emoji("◀️", "Symbols", ["arrow_backward"]),
    new Emoji("🔼", "Symbols", ["arrow_up_small"]),
    new Emoji("🔽", "Symbols", ["arrow_down_small"]),
    new Emoji("➡️", "Symbols", ["arrow_right"]),
    new Emoji("⬅️", "Symbols", ["arrow_left"]),
    new Emoji("⬆️", "Symbols", ["arrow_up"]),
    new Emoji("⬇️", "Symbols", ["arrow_down"]),
    new Emoji("↗️", "Symbols", ["arrow_upper_right"]),
    new Emoji("↘️", "Symbols", ["arrow_lower_right"]),
    new Emoji("↙️", "Symbols", ["arrow_lower_left"]),
    new Emoji("↖️", "Symbols", ["arrow_upper_left"]),
    new Emoji("↕️", "Symbols", ["arrow_up_down"]),
    new Emoji("↔️", "Symbols", ["left_right_arrow"]),
    new Emoji("↪️", "Symbols", ["arrow_right_hook"]),
    new Emoji("↩️", "Symbols", ["leftwards_arrow_with_hook"]),
    new Emoji("⤴️", "Symbols", ["arrow_heading_up"]),
    new Emoji("⤵️", "Symbols", ["arrow_heading_down"]),
    new Emoji("🔀", "Symbols", ["twisted_rightwards_arrows"]),
    new Emoji("🔁", "Symbols", ["repeat"]),
    new Emoji("🔂", "Symbols", ["repeat_one"]),
    new Emoji("🔄", "Symbols", ["arrows_counterclockwise"]),
    new Emoji("🔃", "Symbols", ["arrows_clockwise"]),
    new Emoji("🎵", "Symbols", ["musical_note"]),
    new Emoji("🎶", "Symbols", ["notes"]),
    new Emoji("➕", "Symbols", ["heavy_plus_sign"]),
    new Emoji("➖", "Symbols", ["heavy_minus_sign"]),
    new Emoji("➗", "Symbols", ["heavy_division_sign"]),
    new Emoji("✖️", "Symbols", ["heavy_multiplication_x"]),
    new Emoji("💲", "Symbols", ["heavy_dollar_sign"]),
    new Emoji("💱", "Symbols", ["currency_exchange"]),
    new Emoji("™️", "Symbols", ["tm"]),
    new Emoji("©️", "Symbols", ["copyright"]),
    new Emoji("®️", "Symbols", ["registered"]),
    new Emoji("〰️", "Symbols", ["wavy_dash"]),
    new Emoji("➰", "Symbols", ["curly_loop"]),
    new Emoji("➿", "Symbols", ["loop"]),
    new Emoji("🔚", "Symbols", ["end"]),
    new Emoji("🔙", "Symbols", ["back"]),
    new Emoji("🔛", "Symbols", ["on"]),
    new Emoji("🔝", "Symbols", ["top"]),
    new Emoji("🔜", "Symbols", ["soon"]),
    new Emoji("✔️", "Symbols", ["heavy_check_mark"]),
    new Emoji("☑️", "Symbols", ["ballot_box_with_check"]),
    new Emoji("🔘", "Symbols", ["radio_button"]),
    new Emoji("⚪️", "Symbols", ["white_circle"]),
    new Emoji("⚫️", "Symbols", ["black_circle"]),
    new Emoji("🔴", "Symbols", ["red_circle"]),
    new Emoji("🔵", "Symbols", ["large_blue_circle"]),
    new Emoji("🔺", "Symbols", ["small_red_triangle"]),
    new Emoji("🔻", "Symbols", ["small_red_triangle_down"]),
    new Emoji("🔸", "Symbols", ["small_orange_diamond"]),
    new Emoji("🔹", "Symbols", ["small_blue_diamond"]),
    new Emoji("🔶", "Symbols", ["large_orange_diamond"]),
    new Emoji("🔷", "Symbols", ["large_blue_diamond"]),
    new Emoji("🔳", "Symbols", ["white_square_button"]),
    new Emoji("🔲", "Symbols", ["black_square_button"]),
    new Emoji("▪️", "Symbols", ["black_small_square"]),
    new Emoji("▫️", "Symbols", ["white_small_square"]),
    new Emoji("◾️", "Symbols", ["black_medium_small_square"]),
    new Emoji("◽️", "Symbols", ["white_medium_small_square"]),
    new Emoji("◼️", "Symbols", ["black_medium_square"]),
    new Emoji("◻️", "Symbols", ["white_medium_square"]),
    new Emoji("⬛️", "Symbols", ["black_large_square"]),
    new Emoji("⬜️", "Symbols", ["white_large_square"]),
    new Emoji("🔈", "Symbols", ["speaker"]),
    new Emoji("🔇", "Symbols", ["mute"]),
    new Emoji("🔉", "Symbols", ["sound"]),
    new Emoji("🔊", "Symbols", ["loud_sound"]),
    new Emoji("🔔", "Symbols", ["bell"]),
    new Emoji("🔕", "Symbols", ["no_bell"]),
    new Emoji("📣", "Symbols", ["mega"]),
    new Emoji("📢", "Symbols", ["loudspeaker"]),
    new Emoji("👁‍🗨", "Symbols", ["eye_speech_bubble"]),
    new Emoji("💬", "Symbols", ["speech_balloon"]),
    new Emoji("💭", "Symbols", ["thought_balloon"]),
    new Emoji("🗯", "Symbols", ["right_anger_bubble"]),
    new Emoji("♠️", "Symbols", ["spades"]),
    new Emoji("♣️", "Symbols", ["clubs"]),
    new Emoji("♥️", "Symbols", ["hearts"]),
    new Emoji("♦️", "Symbols", ["diamonds"]),
    new Emoji("🃏", "Symbols", ["black_joker"]),
    new Emoji("🎴", "Symbols", ["flower_playing_cards"]),
    new Emoji("🀄️", "Symbols", ["mahjong"]),
    new Emoji("🕐", "Symbols", ["clock1"]),
    new Emoji("🕑", "Symbols", ["clock2"]),
    new Emoji("🕒", "Symbols", ["clock3"]),
    new Emoji("🕓", "Symbols", ["clock4"]),
    new Emoji("🕔", "Symbols", ["clock5"]),
    new Emoji("🕕", "Symbols", ["clock6"]),
    new Emoji("🕖", "Symbols", ["clock7"]),
    new Emoji("🕗", "Symbols", ["clock8"]),
    new Emoji("🕘", "Symbols", ["clock9"]),
    new Emoji("🕙", "Symbols", ["clock10"]),
    new Emoji("🕚", "Symbols", ["clock11"]),
    new Emoji("🕛", "Symbols", ["clock12"]),
    new Emoji("🕜", "Symbols", ["clock130"]),
    new Emoji("🕝", "Symbols", ["clock230"]),
    new Emoji("🕞", "Symbols", ["clock330"]),
    new Emoji("🕟", "Symbols", ["clock430"]),
    new Emoji("🕠", "Symbols", ["clock530"]),
    new Emoji("🕡", "Symbols", ["clock630"]),
    new Emoji("🕢", "Symbols", ["clock730"]),
    new Emoji("🕣", "Symbols", ["clock830"]),
    new Emoji("🕤", "Symbols", ["clock930"]),
    new Emoji("🕥", "Symbols", ["clock1030"]),
    new Emoji("🕦", "Symbols", ["clock1130"]),
    new Emoji("🕧", "Symbols", ["clock1230"]),
    new Emoji("🏳️", "Flags", ["white_flag"]),
    new Emoji("🏴", "Flags", ["black_flag"]),
    new Emoji("🏁", "Flags", ["checkered_flag"]),
    new Emoji("🚩", "Flags", ["triangular_flag_on_post"]),
    new Emoji("🏳️‍🌈", "Flags", ["rainbow_flag"]),
    new Emoji("🇦🇫", "Flags", ["afghanistan"]),
    new Emoji("🇦🇽", "Flags", ["aland_islands"]),
    new Emoji("🇦🇱", "Flags", ["albania"]),
    new Emoji("🇩🇿", "Flags", ["algeria"]),
    new Emoji("🇦🇸", "Flags", ["american_samoa"]),
    new Emoji("🇦🇩", "Flags", ["andorra"]),
    new Emoji("🇦🇴", "Flags", ["angola"]),
    new Emoji("🇦🇮", "Flags", ["anguilla"]),
    new Emoji("🇦🇶", "Flags", ["antarctica"]),
    new Emoji("🇦🇬", "Flags", ["antigua_barbuda"]),
    new Emoji("🇦🇷", "Flags", ["argentina"]),
    new Emoji("🇦🇲", "Flags", ["armenia"]),
    new Emoji("🇦🇼", "Flags", ["aruba"]),
    new Emoji("🇦🇺", "Flags", ["australia"]),
    new Emoji("🇦🇹", "Flags", ["austria"]),
    new Emoji("🇦🇿", "Flags", ["azerbaijan"]),
    new Emoji("🇧🇸", "Flags", ["bahamas"]),
    new Emoji("🇧🇭", "Flags", ["bahrain"]),
    new Emoji("🇧🇩", "Flags", ["bangladesh"]),
    new Emoji("🇧🇧", "Flags", ["barbados"]),
    new Emoji("🇧🇾", "Flags", ["belarus"]),
    new Emoji("🇧🇪", "Flags", ["belgium"]),
    new Emoji("🇧🇿", "Flags", ["belize"]),
    new Emoji("🇧🇯", "Flags", ["benin"]),
    new Emoji("🇧🇲", "Flags", ["bermuda"]),
    new Emoji("🇧🇹", "Flags", ["bhutan"]),
    new Emoji("🇧🇴", "Flags", ["bolivia"]),
    new Emoji("🇧🇶", "Flags", ["caribbean_netherlands"]),
    new Emoji("🇧🇦", "Flags", ["bosnia_herzegovina"]),
    new Emoji("🇧🇼", "Flags", ["botswana"]),
    new Emoji("🇧🇷", "Flags", ["brazil"]),
    new Emoji("🇮🇴", "Flags", ["british_indian_ocean_territory"]),
    new Emoji("🇻🇬", "Flags", ["british_virgin_islands"]),
    new Emoji("🇧🇳", "Flags", ["brunei"]),
    new Emoji("🇧🇬", "Flags", ["bulgaria"]),
    new Emoji("🇧🇫", "Flags", ["burkina_faso"]),
    new Emoji("🇧🇮", "Flags", ["burundi"]),
    new Emoji("🇨🇻", "Flags", ["cape_verde"]),
    new Emoji("🇰🇭", "Flags", ["cambodia"]),
    new Emoji("🇨🇲", "Flags", ["cameroon"]),
    new Emoji("🇨🇦", "Flags", ["canada"]),
    new Emoji("🇮🇨", "Flags", ["canary_islands"]),
    new Emoji("🇰🇾", "Flags", ["cayman_islands"]),
    new Emoji("🇨🇫", "Flags", ["central_african_republic"]),
    new Emoji("🇹🇩", "Flags", ["chad"]),
    new Emoji("🇨🇱", "Flags", ["chile"]),
    new Emoji("🇨🇳", "Flags", ["cn"]),
    new Emoji("🇨🇽", "Flags", ["christmas_island"]),
    new Emoji("🇨🇨", "Flags", ["cocos_islands"]),
    new Emoji("🇨🇴", "Flags", ["colombia"]),
    new Emoji("🇰🇲", "Flags", ["comoros"]),
    new Emoji("🇨🇬", "Flags", ["congo_brazzaville"]),
    new Emoji("🇨🇩", "Flags", ["congo_kinshasa"]),
    new Emoji("🇨🇰", "Flags", ["cook_islands"]),
    new Emoji("🇨🇷", "Flags", ["costa_rica"]),
    new Emoji("🇨🇮", "Flags", ["cote_divoire"]),
    new Emoji("🇭🇷", "Flags", ["croatia"]),
    new Emoji("🇨🇺", "Flags", ["cuba"]),
    new Emoji("🇨🇼", "Flags", ["curacao"]),
    new Emoji("🇨🇾", "Flags", ["cyprus"]),
    new Emoji("🇨🇿", "Flags", ["czech_republic"]),
    new Emoji("🇩🇰", "Flags", ["denmark"]),
    new Emoji("🇩🇯", "Flags", ["djibouti"]),
    new Emoji("🇩🇲", "Flags", ["dominica"]),
    new Emoji("🇩🇴", "Flags", ["dominican_republic"]),
    new Emoji("🇪🇨", "Flags", ["ecuador"]),
    new Emoji("🇪🇬", "Flags", ["egypt"]),
    new Emoji("🇸🇻", "Flags", ["el_salvador"]),
    new Emoji("🇬🇶", "Flags", ["equatorial_guinea"]),
    new Emoji("🇪🇷", "Flags", ["eritrea"]),
    new Emoji("🇪🇪", "Flags", ["estonia"]),
    new Emoji("🇪🇹", "Flags", ["ethiopia"]),
    new Emoji("🇪🇺", "Flags", ["eu", "european_union"]),
    new Emoji("🇫🇰", "Flags", ["falkland_islands"]),
    new Emoji("🇫🇴", "Flags", ["faroe_islands"]),
    new Emoji("🇫🇯", "Flags", ["fiji"]),
    new Emoji("🇫🇮", "Flags", ["finland"]),
    new Emoji("🇫🇷", "Flags", ["fr"]),
    new Emoji("🇬🇫", "Flags", ["french_guiana"]),
    new Emoji("🇵🇫", "Flags", ["french_polynesia"]),
    new Emoji("🇹🇫", "Flags", ["french_southern_territories"]),
    new Emoji("🇬🇦", "Flags", ["gabon"]),
    new Emoji("🇬🇲", "Flags", ["gambia"]),
    new Emoji("🇬🇪", "Flags", ["georgia"]),
    new Emoji("🇩🇪", "Flags", ["de"]),
    new Emoji("🇬🇭", "Flags", ["ghana"]),
    new Emoji("🇬🇮", "Flags", ["gibraltar"]),
    new Emoji("🇬🇷", "Flags", ["greece"]),
    new Emoji("🇬🇱", "Flags", ["greenland"]),
    new Emoji("🇬🇩", "Flags", ["grenada"]),
    new Emoji("🇬🇵", "Flags", ["guadeloupe"]),
    new Emoji("🇬🇺", "Flags", ["guam"]),
    new Emoji("🇬🇹", "Flags", ["guatemala"]),
    new Emoji("🇬🇬", "Flags", ["guernsey"]),
    new Emoji("🇬🇳", "Flags", ["guinea"]),
    new Emoji("🇬🇼", "Flags", ["guinea_bissau"]),
    new Emoji("🇬🇾", "Flags", ["guyana"]),
    new Emoji("🇭🇹", "Flags", ["haiti"]),
    new Emoji("🇭🇳", "Flags", ["honduras"]),
    new Emoji("🇭🇰", "Flags", ["hong_kong"]),
    new Emoji("🇭🇺", "Flags", ["hungary"]),
    new Emoji("🇮🇸", "Flags", ["iceland"]),
    new Emoji("🇮🇳", "Flags", ["india"]),
    new Emoji("🇮🇩", "Flags", ["indonesia"]),
    new Emoji("🇮🇷", "Flags", ["iran"]),
    new Emoji("🇮🇶", "Flags", ["iraq"]),
    new Emoji("🇮🇪", "Flags", ["ireland"]),
    new Emoji("🇮🇲", "Flags", ["isle_of_man"]),
    new Emoji("🇮🇱", "Flags", ["israel"]),
    new Emoji("🇮🇹", "Flags", ["it"]),
    new Emoji("🇯🇲", "Flags", ["jamaica"]),
    new Emoji("🇯🇵", "Flags", ["jp"]),
    new Emoji("🎌", "Flags", ["crossed_flags"]),
    new Emoji("🇯🇪", "Flags", ["jersey"]),
    new Emoji("🇯🇴", "Flags", ["jordan"]),
    new Emoji("🇰🇿", "Flags", ["kazakhstan"]),
    new Emoji("🇰🇪", "Flags", ["kenya"]),
    new Emoji("🇰🇮", "Flags", ["kiribati"]),
    new Emoji("🇽🇰", "Flags", ["kosovo"]),
    new Emoji("🇰🇼", "Flags", ["kuwait"]),
    new Emoji("🇰🇬", "Flags", ["kyrgyzstan"]),
    new Emoji("🇱🇦", "Flags", ["laos"]),
    new Emoji("🇱🇻", "Flags", ["latvia"]),
    new Emoji("🇱🇧", "Flags", ["lebanon"]),
    new Emoji("🇱🇸", "Flags", ["lesotho"]),
    new Emoji("🇱🇷", "Flags", ["liberia"]),
    new Emoji("🇱🇾", "Flags", ["libya"]),
    new Emoji("🇱🇮", "Flags", ["liechtenstein"]),
    new Emoji("🇱🇹", "Flags", ["lithuania"]),
    new Emoji("🇱🇺", "Flags", ["luxembourg"]),
    new Emoji("🇲🇴", "Flags", ["macau"]),
    new Emoji("🇲🇰", "Flags", ["macedonia"]),
    new Emoji("🇲🇬", "Flags", ["madagascar"]),
    new Emoji("🇲🇼", "Flags", ["malawi"]),
    new Emoji("🇲🇾", "Flags", ["malaysia"]),
    new Emoji("🇲🇻", "Flags", ["maldives"]),
    new Emoji("🇲🇱", "Flags", ["mali"]),
    new Emoji("🇲🇹", "Flags", ["malta"]),
    new Emoji("🇲🇭", "Flags", ["marshall_islands"]),
    new Emoji("🇲🇶", "Flags", ["martinique"]),
    new Emoji("🇲🇷", "Flags", ["mauritania"]),
    new Emoji("🇲🇺", "Flags", ["mauritius"]),
    new Emoji("🇾🇹", "Flags", ["mayotte"]),
    new Emoji("🇲🇽", "Flags", ["mexico"]),
    new Emoji("🇫🇲", "Flags", ["micronesia"]),
    new Emoji("🇲🇩", "Flags", ["moldova"]),
    new Emoji("🇲🇨", "Flags", ["monaco"]),
    new Emoji("🇲🇳", "Flags", ["mongolia"]),
    new Emoji("🇲🇪", "Flags", ["montenegro"]),
    new Emoji("🇲🇸", "Flags", ["montserrat"]),
    new Emoji("🇲🇦", "Flags", ["morocco"]),
    new Emoji("🇲🇿", "Flags", ["mozambique"]),
    new Emoji("🇲🇲", "Flags", ["myanmar"]),
    new Emoji("🇳🇦", "Flags", ["namibia"]),
    new Emoji("🇳🇷", "Flags", ["nauru"]),
    new Emoji("🇳🇵", "Flags", ["nepal"]),
    new Emoji("🇳🇱", "Flags", ["netherlands"]),
    new Emoji("🇳🇨", "Flags", ["new_caledonia"]),
    new Emoji("🇳🇿", "Flags", ["new_zealand"]),
    new Emoji("🇳🇮", "Flags", ["nicaragua"]),
    new Emoji("🇳🇪", "Flags", ["niger"]),
    new Emoji("🇳🇬", "Flags", ["nigeria"]),
    new Emoji("🇳🇺", "Flags", ["niue"]),
    new Emoji("🇳🇫", "Flags", ["norfolk_island"]),
    new Emoji("🇲🇵", "Flags", ["northern_mariana_islands"]),
    new Emoji("🇰🇵", "Flags", ["north_korea"]),
    new Emoji("🇳🇴", "Flags", ["norway"]),
    new Emoji("🇴🇲", "Flags", ["oman"]),
    new Emoji("🇵🇰", "Flags", ["pakistan"]),
    new Emoji("🇵🇼", "Flags", ["palau"]),
    new Emoji("🇵🇸", "Flags", ["palestinian_territories"]),
    new Emoji("🇵🇦", "Flags", ["panama"]),
    new Emoji("🇵🇬", "Flags", ["papua_new_guinea"]),
    new Emoji("🇵🇾", "Flags", ["paraguay"]),
    new Emoji("🇵🇪", "Flags", ["peru"]),
    new Emoji("🇵🇭", "Flags", ["philippines"]),
    new Emoji("🇵🇳", "Flags", ["pitcairn_islands"]),
    new Emoji("🇵🇱", "Flags", ["poland"]),
    new Emoji("🇵🇹", "Flags", ["portugal"]),
    new Emoji("🇵🇷", "Flags", ["puerto_rico"]),
    new Emoji("🇶🇦", "Flags", ["qatar"]),
    new Emoji("🇷🇪", "Flags", ["reunion"]),
    new Emoji("🇷🇴", "Flags", ["romania"]),
    new Emoji("🇷🇺", "Flags", ["ru"]),
    new Emoji("🇷🇼", "Flags", ["rwanda"]),
    new Emoji("🇧🇱", "Flags", ["st_barthelemy"]),
    new Emoji("🇸🇭", "Flags", ["st_helena"]),
    new Emoji("🇰🇳", "Flags", ["st_kitts_nevis"]),
    new Emoji("🇱🇨", "Flags", ["st_lucia"]),
    new Emoji("🇵🇲", "Flags", ["st_pierre_miquelon"]),
    new Emoji("🇻🇨", "Flags", ["st_vincent_grenadines"]),
    new Emoji("🇼🇸", "Flags", ["samoa"]),
    new Emoji("🇸🇲", "Flags", ["san_marino"]),
    new Emoji("🇸🇹", "Flags", ["sao_tome_principe"]),
    new Emoji("🇸🇦", "Flags", ["saudi_arabia"]),
    new Emoji("🇸🇳", "Flags", ["senegal"]),
    new Emoji("🇷🇸", "Flags", ["serbia"]),
    new Emoji("🇸🇨", "Flags", ["seychelles"]),
    new Emoji("🇸🇱", "Flags", ["sierra_leone"]),
    new Emoji("🇸🇬", "Flags", ["singapore"]),
    new Emoji("🇸🇽", "Flags", ["sint_maarten"]),
    new Emoji("🇸🇰", "Flags", ["slovakia"]),
    new Emoji("🇸🇮", "Flags", ["slovenia"]),
    new Emoji("🇸🇧", "Flags", ["solomon_islands"]),
    new Emoji("🇸🇴", "Flags", ["somalia"]),
    new Emoji("🇿🇦", "Flags", ["south_africa"]),
    new Emoji("🇬🇸", "Flags", ["south_georgia_south_sandwich_islands"]),
    new Emoji("🇰🇷", "Flags", ["kr"]),
    new Emoji("🇸🇸", "Flags", ["south_sudan"]),
    new Emoji("🇪🇸", "Flags", ["es"]),
    new Emoji("🇱🇰", "Flags", ["sri_lanka"]),
    new Emoji("🇸🇩", "Flags", ["sudan"]),
    new Emoji("🇸🇷", "Flags", ["suriname"]),
    new Emoji("🇸🇿", "Flags", ["swaziland"]),
    new Emoji("🇸🇪", "Flags", ["sweden"]),
    new Emoji("🇨🇭", "Flags", ["switzerland"]),
    new Emoji("🇸🇾", "Flags", ["syria"]),
    new Emoji("🇹🇼", "Flags", ["taiwan"]),
    new Emoji("🇹🇯", "Flags", ["tajikistan"]),
    new Emoji("🇹🇿", "Flags", ["tanzania"]),
    new Emoji("🇹🇭", "Flags", ["thailand"]),
    new Emoji("🇹🇱", "Flags", ["timor_leste"]),
    new Emoji("🇹🇬", "Flags", ["togo"]),
    new Emoji("🇹🇰", "Flags", ["tokelau"]),
    new Emoji("🇹🇴", "Flags", ["tonga"]),
    new Emoji("🇹🇹", "Flags", ["trinidad_tobago"]),
    new Emoji("🇹🇳", "Flags", ["tunisia"]),
    new Emoji("🇹🇷", "Flags", ["tr"]),
    new Emoji("🇹🇲", "Flags", ["turkmenistan"]),
    new Emoji("🇹🇨", "Flags", ["turks_caicos_islands"]),
    new Emoji("🇹🇻", "Flags", ["tuvalu"]),
    new Emoji("🇺🇬", "Flags", ["uganda"]),
    new Emoji("🇺🇦", "Flags", ["ukraine"]),
    new Emoji("🇦🇪", "Flags", ["united_arab_emirates"]),
    new Emoji("🇬🇧", "Flags", ["gb", "uk"]),
    new Emoji("🇺🇸", "Flags", ["us"]),
    new Emoji("🇻🇮", "Flags", ["us_virgin_islands"]),
    new Emoji("🇺🇾", "Flags", ["uruguay"]),
    new Emoji("🇺🇿", "Flags", ["uzbekistan"]),
    new Emoji("🇻🇺", "Flags", ["vanuatu"]),
    new Emoji("🇻🇦", "Flags", ["vatican_city"]),
    new Emoji("🇻🇪", "Flags", ["venezuela"]),
    new Emoji("🇻🇳", "Flags", ["vietnam"]),
    new Emoji("🇼🇫", "Flags", ["wallis_futuna"]),
    new Emoji("🇪🇭", "Flags", ["western_sahara"]),
    new Emoji("🇾🇪", "Flags", ["yemen"]),
    new Emoji("🇿🇲", "Flags", ["zambia"]),
    new Emoji("🇿🇼", "Flags", ["zimbabwe"]),
    new Emoji("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1012472875,3266412152&fm=26&gp=0.jpg", "Sticker-test", ["test"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1310823488,1964514455&fm=26&gp=0.jpg", "Sticker-test", ["test1"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1310823488,1964514455&fm=26&gp=0.jpg", "Sticker-test", ["test1"]),
    new Emoji("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1012472875,3266412152&fm=26&gp=0.jpg", "Sticker-test", ["test"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1310823488,1964514455&fm=26&gp=0.jpg", "Sticker-test", ["test1"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1310823488,1964514455&fm=26&gp=0.jpg", "Sticker-test", ["test1"]),
    new Emoji("https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1012472875,3266412152&fm=26&gp=0.jpg", "Sticker-test", ["test"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1310823488,1964514455&fm=26&gp=0.jpg", "Sticker-test", ["test1"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1310823488,1964514455&fm=26&gp=0.jpg", "Sticker-test", ["test1"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1054361837,4247340522&fm=26&gp=0.jpg", "Sticker-test", ["western_sahara"]),
    new Emoji("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1796779230,2913471734&fm=26&gp=0.jpg", "Sticker-test", ["yemen"]),
    new Emoji("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1845063579,67604683&fm=26&gp=0.jpg", "Sticker-test", ["zambia"]),
    new Emoji("https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2357113123,3002151857&fm=26&gp=0.jpg", "Sticker-test", ["zimbabwe"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1054361837,4247340522&fm=26&gp=0.jpg", "Sticker-test", ["western_sahara"]),
    new Emoji("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1796779230,2913471734&fm=26&gp=0.jpg", "Sticker-test", ["yemen"]),
    new Emoji("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1845063579,67604683&fm=26&gp=0.jpg", "Sticker-test", ["zambia"]),
    new Emoji("https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2357113123,3002151857&fm=26&gp=0.jpg", "Sticker-test", ["zimbabwe"]),
    new Emoji("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1054361837,4247340522&fm=26&gp=0.jpg", "Sticker-test", ["western_sahara"]),
    new Emoji("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1796779230,2913471734&fm=26&gp=0.jpg", "Sticker-test", ["yemen"]),
    new Emoji("https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1845063579,67604683&fm=26&gp=0.jpg", "Sticker-test", ["zambia"]),
    new Emoji("https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2357113123,3002151857&fm=26&gp=0.jpg", "Sticker-test", ["zimbabwe"]),
];var langDefault = {
    search: 'Search ...',
    categories: {
        Activity: "Activity",
        Flags: "Flags",
        Foods: "Foods",
        Frequently: "Frequently",
        Objects: "Objects",
        Nature: "Nature",
        Peoples: "Peoples",
        Symbols: "Symbols",
        Places: "Places"
    }
};var lang = langDefault;
var i18n = function (translations) {
    lang = __assign(__assign({}, langDefault), translations);
};
// Sample parse translation
var t = function (term) {
    var properties = term.split(".");
    var text = lang;
    properties.forEach(function (p) {
        text = text[p];
    });
    return text;
};
var locale = { i18n: i18n, t: t };var Category = /** @class */ (function () {
    function Category(name, icon) {
        this.name = name;
        this.icon = icon;
    }
    Object.defineProperty(Category.prototype, "label", {
        get: function () {
            return t("categories." + this.name);
        },
        enumerable: false,
        configurable: true
    });
    return Category;
}());var icons = {
    activity: "\n    <svg style=\"max-height:18px\" width=\"24\" height=\"24\"\n      xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 303.6 303.6\" fill=\"gray\">\n      <path d=\"M291.503 11.6c-10.4-10.4-37.2-11.6-48.4-11.6-50.4 0-122.4 18.4-173.6 69.6-77.2 76.8-78.4 201.6-58.4 222 10.8 10.4 35.6 12 49.2 12 49.6 0 121.2-18.4 173.2-70 76.4-76.4 80.4-199.6 58-222zm-231.2 277.2c-24.4 0-36-4.8-38.8-7.6-5.2-5.2-8.4-24.4-6.8-49.6l57.2 56.8c-4 .4-8 .4-11.6.4zm162.8-66c-38.8 38.8-90.4 57.2-132.4 63.6l-74-73.6c6-42 24-94 63.2-133.2 38-38 88-56.4 130.8-62.8l75.6 75.6c-6 40.8-24.4 91.6-63.2 130.4zm65.2-148.8l-58.8-59.2c4.8-.4 9.2-.4 13.6-.4 24.4 0 35.6 4.8 38 7.2 5.6 5.6 9.2 25.6 7.2 52.4z\"/>\n      <path d=\"M215.103 139.6l-20.8-20.8 13.2-13.2c2.8-2.8 2.8-7.6 0-10.4s-7.6-2.8-10.4 0l-13.2 13.6-20.8-20.8c-2.8-2.8-7.6-2.8-10.4 0-2.8 2.8-2.8 7.6 0 10.4l20.8 20.8-22 22-20.8-20.8c-2.8-2.8-7.6-2.8-10.4 0s-2.8 7.6 0 10.4l20.8 20.8-22 22-20.8-20.8c-2.8-2.8-7.6-2.8-10.4 0s-2.8 7.6 0 10.4l20.8 20.8-13.2 13.2c-2.8 2.8-2.8 7.6 0 10.4 1.6 1.6 3.2 2 5.2 2s3.6-.8 5.2-2l13.2-13.2 20.8 20.8c1.6 1.6 3.2 2 5.2 2s3.6-.8 5.2-2c2.8-2.8 2.8-7.6 0-10.4l-20.8-21.2 22-22 20.8 20.8c1.6 1.6 3.2 2 5.2 2s3.6-.8 5.2-2c2.8-2.8 2.8-7.6 0-10.4l-20.8-20.8 22-22 20.8 20.8c1.6 1.6 3.2 2 5.2 2s3.6-.8 5.2-2c2.8-2.8 2.8-7.6 0-10.4zM169.103 47.6c-1.2-4-5.2-6-9.2-4.8-3.2 1.2-80.8 25.6-110.4 98-1.6 4 0 8.4 4 9.6.8.4 2 .4 2.8.4 2.8 0 5.6-1.6 6.8-4.4 27.2-66 100.4-89.6 101.2-89.6 4-1.2 6-5.2 4.8-9.2z\"/>\n    </svg>\n    ",
    flags: "\n    <svg style=\"max-height:18px\" width=\"24\" height=\"24\"\n      xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" fill=\"gray\">\n      <path d=\"M472.928 34.72c-4.384-2.944-9.984-3.52-14.912-1.568-1.088.448-106.528 42.176-195.168.384C186.752-2.4 102.944 14.4 64 25.76V16c0-8.832-7.168-16-16-16S32 7.168 32 16v480c0 8.832 7.168 16 16 16s16-7.168 16-16V315.296c28.352-9.248 112.384-31.232 185.184 3.168 34.592 16.352 70.784 21.792 103.648 21.792 63.2 0 114.016-20.128 117.184-21.408 6.016-2.464 9.984-8.32 9.984-14.848V48c0-5.312-2.656-10.272-7.072-13.28zM448 292.672c-28.512 9.248-112.512 31.136-185.184-3.168C186.752 253.6 102.944 270.4 64 281.76V59.328c28.352-9.248 112.384-31.232 185.184 3.168 76 35.872 159.872 19.104 198.816 7.712v222.464z\"/>\n    </svg>\n    ",
    foods: "\n    <svg style=\"max-height:18px\" width=\"24\" height=\"24\"\n      xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 511.999 511.999\" fill=\"gray\">\n      <path d=\"M413.949 155.583a10.153 10.153 0 0 0-3.24-2.16c-.61-.25-1.24-.44-1.87-.57-3.25-.66-6.701.41-9.03 2.73a10.093 10.093 0 0 0-2.93 7.07 10.098 10.098 0 0 0 1.69 5.56c.36.54.779 1.05 1.24 1.52 1.86 1.86 4.44 2.93 7.07 2.93.65 0 1.31-.07 1.96-.2.63-.13 1.26-.32 1.87-.57a10.146 10.146 0 0 0 3.24-2.16c.47-.47.88-.98 1.25-1.52a10.098 10.098 0 0 0 1.49-3.6 10.038 10.038 0 0 0-2.74-9.03zM115.289 385.873c-.12-.64-.32-1.27-.57-1.87-.25-.6-.55-1.18-.91-1.73-.37-.54-.79-1.06-1.25-1.52a9.57 9.57 0 0 0-1.52-1.24c-.54-.36-1.12-.67-1.72-.92-.61-.25-1.24-.44-1.88-.57a9.847 9.847 0 0 0-3.9 0c-.64.13-1.27.32-1.87.57-.61.25-1.19.56-1.73.92-.55.36-1.06.78-1.52 1.24-.46.46-.88.98-1.24 1.52-.36.55-.67 1.13-.92 1.73-.25.6-.45 1.23-.57 1.87-.13.651-.2 1.3-.2 1.96 0 .65.07 1.3.2 1.95.12.64.32 1.27.57 1.87.25.6.56 1.18.92 1.73.36.54.78 1.06 1.24 1.52.46.46.97.88 1.52 1.24.54.36 1.12.67 1.73.92.6.25 1.23.44 1.87.57s1.3.2 1.95.2c.65 0 1.31-.07 1.95-.2.64-.13 1.27-.32 1.88-.57.6-.25 1.18-.56 1.72-.92.55-.36 1.059-.78 1.52-1.24.46-.46.88-.98 1.25-1.52.36-.55.66-1.13.91-1.73.25-.6.45-1.23.57-1.87.13-.65.2-1.3.2-1.95 0-.66-.07-1.31-.2-1.96z\"/>\n      <path d=\"M511.999 222.726c0-14.215-9.228-26.315-22.007-30.624-1.628-74.155-62.456-133.978-136.994-133.978H159.002c-74.538 0-135.366 59.823-136.994 133.978C9.228 196.411 0 208.51 0 222.726a32.076 32.076 0 0 0 3.847 15.203 44.931 44.931 0 0 0-.795 8.427v.708c0 14.06 6.519 26.625 16.693 34.833-10.178 8.275-16.693 20.891-16.693 35.001 0 15.114 7.475 28.515 18.921 36.702v26.668c0 40.588 33.021 73.608 73.608 73.608h320.836c40.588 0 73.608-33.021 73.608-73.608V353.6c11.446-8.186 18.921-21.587 18.921-36.702 0-13.852-6.354-26.385-16.361-34.702 9.983-8.212 16.361-20.656 16.361-34.562v-.708c0-2.985-.294-5.944-.877-8.845a32.082 32.082 0 0 0 3.93-15.355zM44.033 173.229h322.441c5.523 0 10-4.477 10-10s-4.477-10-10-10H49.737c16.896-43.883 59.503-75.106 109.265-75.106h193.996c62.942 0 114.438 49.953 116.934 112.295H42.068c.234-5.848.9-11.588 1.965-17.189zM23.052 316.896c0-13.837 11.257-25.094 25.094-25.094h117.298l55.346 50.188H48.146c-13.837 0-25.094-11.256-25.094-25.094zm.976-62.945c.422.111.847.215 1.275.309 7.421 1.634 14.68 8.002 22.365 14.744a576.29 576.29 0 0 0 3.206 2.799h-3.081c-11.253-.001-20.774-7.551-23.765-17.852zm308.727 89.752l57.233-51.899 49.904.57-81.871 74.24-25.266-22.911zm7.861 34.126H295.12l17.467-15.839h10.563l17.466 15.839zm19.599-86.027l-82.499 74.811-82.499-74.811h164.998zm-59.529-20c.849-.842 1.677-1.675 2.49-2.493 9.531-9.587 17.059-17.16 32.89-17.16 15.832 0 23.359 7.573 32.89 17.162.812.817 1.64 1.65 2.489 2.491h-70.759zm-160.13 0a485.82 485.82 0 0 0 2.489-2.492c9.531-9.588 17.059-17.161 32.89-17.161 15.83 0 23.358 7.573 32.888 17.16.813.818 1.641 1.651 2.49 2.493h-70.757zm275.862 162.073H95.582c-29.56 0-53.608-24.049-53.608-53.608v-18.275h200.872l17.467 15.839H145.897c-5.523 0-10 4.477-10 10s4.477 10 10 10H467.07c-7.288 20.958-27.242 36.044-50.652 36.044zm53.608-56.046h-94.6l17.467-15.839h77.133v15.839zm-6.174-35.837h-48.906l54.624-49.533c11.135 2.604 19.376 12.665 19.376 24.439 0 13.836-11.257 25.094-25.094 25.094zm-2.728-70.19l.262-.227.101-.087.342-.298c.848-.738 1.682-1.469 2.501-2.187 4.105-3.601 8.089-7.095 12.04-9.819 3.446-2.375 6.868-4.164 10.326-4.925l.359-.081.04-.01.317-.076.065-.016a22.897 22.897 0 0 0 .42-.107l.196-.052a.374.374 0 0 0 .048-.012c-2.433 9.276-10.129 16.443-19.691 18.102a9.984 9.984 0 0 0-2.016-.205h-5.31zm21.271-37.073a40.746 40.746 0 0 0-4.536 1.281c-10.109 3.489-18.327 10.602-26.283 17.58l-.434.381c-9.178 8.052-17.923 15.723-29.033 17.834h-13.146c-11.249-1.93-17.833-8.552-25.823-16.591-10.213-10.275-22.923-23.062-47.074-23.062-24.15 0-36.86 12.786-47.074 23.06-7.992 8.04-14.576 14.663-25.829 16.593h-14.327c-11.253-1.93-17.837-8.553-25.829-16.593-10.213-10.274-22.923-23.06-47.072-23.06-24.151 0-36.861 12.787-47.074 23.062-7.991 8.039-14.574 14.661-25.824 16.591h-7.065c-14.134 0-24.325-8.939-35.113-18.404-9.248-8.112-18.81-16.501-31.252-19.241a12.237 12.237 0 0 1-7.025-4.453 10.027 10.027 0 0 0-1.153-1.252 12.234 12.234 0 0 1-1.428-5.727c-.001-6.788 5.52-12.309 12.307-12.309h447.384c6.787 0 12.308 5.521 12.308 12.308 0 5.729-4.039 10.776-9.605 12.002z\"/>\n    </svg>\n    ",
    frequently: "\n    <svg style=\"max-height:18px\"\n      xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 219.15 219.15\" width=\"24\" height=\"24\" fill=\"gray\">\n      <path d=\"M109.575 0C49.156 0 .001 49.155.001 109.574c0 60.42 49.154 109.576 109.573 109.576 60.42 0 109.574-49.156 109.574-109.576C219.149 49.155 169.995 0 109.575 0zm0 204.15c-52.148 0-94.573-42.427-94.573-94.576C15.001 57.426 57.427 15 109.575 15c52.148 0 94.574 42.426 94.574 94.574 0 52.15-42.426 94.576-94.574 94.576z\"/>\n      <path d=\"M166.112 108.111h-52.051V51.249a7.5 7.5 0 0 0-15 0v64.362a7.5 7.5 0 0 0 7.5 7.5h59.551a7.5 7.5 0 0 0 0-15z\"/>\n    </svg>\n    ",
    nature: "\n    <svg style=\"max-height:18px\"\n      xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\" width=\"24\" height=\"24\" fill=\"gray\">\n      <path d=\"M490.815 3.784C480.082 5.7 227.049 51.632 148.477 130.203c-39.153 39.153-64.259 87.884-70.694 137.218-5.881 45.081 4.347 85.929 28.878 116.708L.001 490.789 21.212 512l106.657-106.657c33.094 26.378 75.092 34.302 116.711 28.874 49.334-6.435 98.065-31.541 137.218-70.695C460.368 284.951 506.3 31.918 508.216 21.185L511.999 0l-21.184 3.784zm-43.303 39.493L309.407 181.383l-7.544-98.076c46.386-15.873 97.819-29.415 145.649-40.03zm-174.919 50.64l8.877 115.402-78.119 78.119-11.816-153.606c19.947-13.468 47.183-26.875 81.058-39.915zm-109.281 64.119l12.103 157.338-47.36 47.36c-39.246-52.892-24.821-139.885 35.257-204.698zm57.113 247.849c-26.548-.001-51.267-7.176-71.161-21.938l47.363-47.363 157.32 12.102c-40.432 37.475-89.488 57.201-133.522 57.199zm157.743-85.421l-153.605-11.816 78.118-78.118 115.403 8.877c-13.04 33.876-26.448 61.111-39.916 81.057zm50.526-110.326l-98.076-7.544L468.725 64.485c-10.589 47.717-24.147 99.232-40.031 145.653z\"/>\n    </svg>\n    ",
    objects: "\n    <svg style=\"max-height:18px\"\n      xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 792 792\" fill=\"gray\">\n      <path d=\"M425.512 741.214H365.58c-14.183 0-25.164 11.439-25.164 25.622S351.397 792 365.58 792h59.932c15.101 0 26.54-10.981 26.54-25.164s-11.44-25.622-26.54-25.622zM472.638 671.209H319.821c-14.183 0-26.081 10.98-26.081 25.163s11.898 25.164 26.081 25.164h152.817c14.183 0 25.164-10.981 25.164-25.164s-10.982-25.163-25.164-25.163zM639.188 138.634c-25.164-42.548-59.181-76.135-102.49-101.113C493.526 12.621 446.566 0 395.771 0 320.28 0 247.19 31.684 197.205 81.445c-49.761 49.527-81.904 121.24-81.904 196.282 0 33.861 7.779 68.629 22.879 103.866 15.1 35.228 38.565 78.614 70.005 130.396 7.448 12.269 15.764 31.205 25.623 56.271 12.104 30.757 22.87 51.713 31.566 63.602 5.027 6.872 11.899 10.063 20.596 10.063h228.766c9.605 0 16.359-4.188 21.504-11.898 6.754-10.132 13.987-27.516 22.42-51.693 8.951-25.691 16.838-43.982 23.329-55.364 30.571-53.587 54.446-99.747 70.464-137.717 16.018-37.979 24.246-74.124 24.246-107.526 0-49.878-12.347-96.545-37.511-139.093zm-35.696 232.437c-15.012 34.348-36.398 76.974-65.427 126.736-9.41 16.125-18.458 37.003-26.989 63.592-3.367 10.474-7.32 20.596-11.439 30.2H300.153c-6.862-11.439-12.26-25.837-18.761-42.089-12.718-31.801-23.338-52.621-30.2-64.061-28.824-48.043-49.868-87.39-64.051-118.957s-20.537-60.859-21.044-88.766c-2.235-121.718 106.13-228.991 229.674-226.941 41.631.693 80.527 10.063 115.765 30.659 35.227 20.586 63.134 48.043 83.729 82.812 20.586 34.768 31.108 72.748 31.108 113.47-.001 27.449-7.692 58.596-22.881 93.345z\"/>\n    </svg>\n    ",
    peoples: "\n    <svg style=\"max-height:18px\"\n      xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 106.059 106.059\" fill=\"gray\">\n      <path d=\"M90.544 90.542c20.687-20.684 20.685-54.341.002-75.024-20.688-20.689-54.347-20.689-75.031-.006-20.688 20.687-20.686 54.346.002 75.034 20.682 20.684 54.341 20.684 75.027-.004zM21.302 21.3c17.494-17.493 45.959-17.495 63.457.002 17.494 17.494 17.492 45.963-.002 63.455-17.494 17.494-45.96 17.496-63.455.003-17.498-17.498-17.496-45.966 0-63.46zM27 69.865s-2.958-11.438 6.705-8.874c0 0 17.144 9.295 38.651 0 9.662-2.563 6.705 8.874 6.705 8.874C73.539 86.824 53.03 85.444 53.03 85.444S32.521 86.824 27 69.865zm6.24-31.194a6.202 6.202 0 1 1 12.399.001 6.202 6.202 0 0 1-12.399-.001zm28.117 0a6.202 6.202 0 1 1 12.403.001 6.202 6.202 0 0 1-12.403-.001z\"/>\n    </svg>\n    ",
    places: "\n    <svg style=\"max-height:18px\"\n      xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 611.999 611.998\" fill=\"gray\">\n      <path d=\"M596.583 15.454C586.226 5.224 573.354.523 558.423.523c-15.597 0-31.901 4.906-49.452 14.599-17.296 9.551-32.851 20.574-46.458 32.524h-.665c-2.655 2.322-10.953 10.287-25.219 24.553-14.272 14.272-26.217 26.223-35.845 36.51L112.401 26.406c-6.896-1.968-12.928.014-17.593 4.645L46.687 78.839c-4.326 4.297-5.805 9.268-4.977 15.597.829 6.287 3.979 10.627 9.629 13.607L280.32 228.839 161.514 347.978l-95.91 3.32c-4.645.164-8.637 1.643-12.276 5.311L5.872 404.397c-4.312 4.34-6.641 9.289-5.643 16.262 1.657 6.967 5.31 11.611 11.618 13.602l117.142 48.787 48.787 117.148c2.421 5.812 6.634 9.621 13.607 11.279h3.313c4.977 0 9.296-1.658 12.942-5.311l47.456-47.457c3.653-3.645 5.494-7.965 5.643-12.275l3.32-95.91 118.807-118.807 121.128 228.99c2.988 5.643 7.32 8.793 13.607 9.621 6.329.836 11.271-1.316 15.597-5.643l47.456-47.457c4.978-4.977 6.945-10.697 4.978-17.586l-82.296-288.389 59.732-59.739c10.287-10.287 21.699-24.149 33.183-45.134 5.777-10.542 10.032-20.886 12.942-31.194 5.722-20.218 3.258-44.07-12.608-59.73zm-59.4 110.176l-67.039 67.372c-5.628 5.657-6.811 11.122-4.977 17.586l81.637 288.388-22.563 22.238L403.438 292.89c-2.98-5.643-7.299-8.963-12.941-9.621-6.301-1.331-11.611.325-16.263 4.977l-141.37 141.37c-2.987 2.986-4.644 6.973-5.643 11.949l-3.32 95.904-22.896 23.236-41.48-98.566c-1.331-4.645-4.553-8.184-9.629-10.287L51.338 411.03l23.229-22.895 95.578-3.654c5.643-.99 9.622-2.654 12.276-5.309l141.37-141.371c4.651-4.645 6.308-9.954 4.984-16.262-.666-5.643-3.986-9.954-9.629-12.942L90.829 87.47l22.231-22.238 288.389 81.637c6.464 1.833 11.951.666 17.587-4.977l28.545-28.539 26.217-25.884 11.278-11.285 1.331-.666c27.873-23.895 55.088-38.16 72.016-38.16 5.969 0 9.954 1.324 11.611 3.979 18.917 18.585-21.099 72.484-32.851 84.293z\"/>\n    </svg>\n    ",
    symbols: "\n    <svg style=\"max-height:18px\"\n      xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 511.626 511.626\" fill=\"gray\">\n      <path d=\"M475.366 71.949c-24.175-23.606-57.575-35.404-100.215-35.404-11.8 0-23.843 2.046-36.117 6.136-12.279 4.093-23.702 9.615-34.256 16.562-10.568 6.945-19.65 13.467-27.269 19.556a263.828 263.828 0 0 0-21.696 19.414 264.184 264.184 0 0 0-21.698-19.414c-7.616-6.089-16.702-12.607-27.268-19.556-10.564-6.95-21.985-12.468-34.261-16.562-12.275-4.089-24.316-6.136-36.116-6.136-42.637 0-76.039 11.801-100.211 35.404C12.087 95.55 0 128.286 0 170.16c0 12.753 2.24 25.891 6.711 39.398 4.471 13.514 9.566 25.031 15.275 34.546 5.708 9.514 12.181 18.792 19.414 27.834 7.233 9.041 12.519 15.272 15.846 18.698 3.33 3.426 5.948 5.903 7.851 7.427L243.25 469.938c3.427 3.426 7.614 5.144 12.562 5.144s9.138-1.718 12.563-5.144l177.87-171.31c43.588-43.58 65.38-86.406 65.38-128.472.001-41.877-12.085-74.61-36.259-98.207zm-53.961 199.846L255.813 431.391 89.938 271.507C54.344 235.922 36.55 202.133 36.55 170.156c0-15.415 2.046-29.026 6.136-40.824 4.093-11.8 9.327-21.177 15.703-28.124 6.377-6.949 14.132-12.607 23.268-16.988 9.141-4.377 18.086-7.328 26.84-8.85 8.754-1.52 18.079-2.281 27.978-2.281 9.896 0 20.557 2.424 31.977 7.279 11.418 4.853 21.934 10.944 31.545 18.271 9.613 7.332 17.845 14.183 24.7 20.557 6.851 6.38 12.559 12.229 17.128 17.559 3.424 4.189 8.091 6.283 13.989 6.283 5.9 0 10.562-2.094 13.99-6.283 4.568-5.33 10.28-11.182 17.131-17.559 6.852-6.374 15.085-13.222 24.694-20.557 9.613-7.327 20.129-13.418 31.553-18.271 11.416-4.854 22.08-7.279 31.977-7.279s19.219.761 27.977 2.281c8.757 1.521 17.702 4.473 26.84 8.85 9.137 4.38 16.892 10.042 23.267 16.988 6.376 6.947 11.612 16.324 15.705 28.124 4.086 11.798 6.132 25.409 6.132 40.824-.002 31.977-17.89 65.86-53.675 101.639z\"/>\n    </svg>\n    ",
    testSticker: "\n      <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n    <!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n    <svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"24px\" height=\"18px\" viewBox=\"0 0 24 18\" enable-background=\"new 0 0 24 18\" xml:space=\"preserve\">  <image id=\"image0\" width=\"24\" height=\"18\" x=\"0\" y=\"0\"\n        href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAASCAMAAAB2Mu6sAAAABGdBTUEAALGPC/xhBQAAACBjSFJN\n    AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAC91BMVEX////+/v79/fz4/f/z\n    +P/z9//2+//+/////v39/f3m6vDJwbfAqYnDo3PIoWjIoWbFom7Apn/Et6bb2979///w9fq5rJy/\n    kE3kpD73tUX5uUr9wE3+wU76vEv0tEXqqD/Jk0OzmXjb3eH+/f3i5uqti2Pjmzb/vU3qtFLmtlb/\n    0GL6zGH4zGH+zmL/z2Lzvlj/w1T2rj+4hELHw8H+/v/r7/OphVj0qDn/yVm7lkdwWy1uWi+bhEP5\n    3Wv222rqzWR+aDVuXC97YDHrt1X/vUu5fzbNzMz+//79/PyxopLllTD8rE32okj0qE7/ymD93Wnf\n    ymT15HH56nTo1WrWv1751WbsuFbyrE/2rE39qz+qhFbx9fn+/v3///7v9PqzhlH/qkD3dTj9YjH9\n    Yy/3nkz24Gz86XP47nn48Hv663b+53H41Gb9gj39Yi/7YjD/jkDMizXMysv8/Pzg5OrAhkT+rkP0\n    r0v4sE/6vFb5z2L12Gn04G736XT363X022z302b6wFn5qk33pEj8rUrdkDTAt6/8/Pvn7PK5g0b/\n    rEPyrUr2vFH5xFj/zVr/01z93Gr33W323W773Wv/2GH/0V37yVr3wVX0tk38sUrYjDLDvbj9/v+w\n    m4Tokiz/sUj2sk/3u1DVrWHNs3fiulr7z1z+0VzpwlzNsXHLqWT0tU/3r0z/qz2zfj/j5+ru8fWz\n    mHnYjjXxnzj+sT/Pn1fDvbevr6mfkGzKtoLQy7na1c7TrnX9s0L5q0HumzS/hD/IxL/6///Sz8zA\n    p4rAlmHVplWOWih8Py9oPDKLXELBiU7Hjz7TmETJlVLAmGbBrpfg4uX///2mn7RxFhm5MielLyHY\n    MCuuEBKIjI/m6Ozo6/H3/f/9/Pv7+vrk2Li6l0GbQiSLIyWXJyioKy1RHBCZnY349/b7/P7WxZHe\n    uyqYTQlyFQB6HwBhEgCafhyskwqtp5va2eKzoZ+ukIKhdmGMVDx/bV7OzMD19fX8///8+/v8+/r9\n    +/v//f2tDaM+AAAAAWJLR0QAiAUdSAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAAd0SU1FB+QMHwIh\n    JUiUTDYAAAGJSURBVBjTY2BgYGBkYGQCUswsrGzsDAwcnEABMGBk4GRg4OLm4eXjFxAUEhZhYGJg\n    ZISKi4qJS0hKScvIyskrKCqBZEA6lBlUVNXUNTS1tHV09fQNDI2MGUCmmTAqm5qZW1haWdvY2tk7\n    ODo5u7i6AfUwuHsweHp5+/j6+QcEBgWHhIaFR0RGRccAHRQbF5+QmJSckpqWnpGZlZ2Tm5dfUMhQ\n    xMBpUlxSWlZeUVlVXVMbWFff0NjU3NLK2Aa0pb2js6u7p7evf8LESZOnTJ02fcbMWQxACabZc+bO\n    m79g4aLFS5YuW76ie+Wq1WvWMgK9xhizbv2GjZs2b9m6bfuOnbt279m7bz/Iy0DrGQ4cPHT4yNFj\n    x0+cPHX6zNlz58H+AMlcYGA4cPHS5StXr12/cfMWyMuMsaAwYWS8fefuvfsPHj56/ORp7IXbnIxg\n    cZBUzLPnL16+ev3m7bv3jG2M0MAFARNlhg8fP33+8vXbd0ZGdwZkEAMifjBgAEZGzp+/fv+JKWKE\n    GQQAE9KFaqwAUP4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMTItMzFUMDI6MzM6MzcrMDA6MDC5\n    HMB0AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTEyLTMxVDAyOjMzOjM3KzAwOjAwyEF4yAAAAABJ\n    RU5ErkJggg==\" />\n    </svg>\n  \n  "
};
var categoriesDefault = [
    new Category("Frequently", icons["frequently"]),
    new Category("Peoples", icons["peoples"]),
    new Category("Nature", icons["nature"]),
    new Category("Foods", icons["foods"]),
    new Category("Activity", icons["activity"]),
    new Category("Objects", icons["objects"]),
    new Category("Places", icons["places"]),
    new Category("Symbols", icons["symbols"]),
    new Category("Flags", icons["flags"]),
    new Category("Sticker-test", icons["testSticker"])
];var CategoryItem = /** @class */ (function (_super) {
    __extends(CategoryItem, _super);
    function CategoryItem() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    Object.defineProperty(CategoryItem.prototype, "styleSVG", {
        get: function () {
            return __assign({}, this.styles);
        },
        enumerable: false,
        configurable: true
    });
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ required: true })
    ], CategoryItem.prototype, "label", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ required: true })
    ], CategoryItem.prototype, "icon", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], CategoryItem.prototype, "styles", void 0);
    CategoryItem = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({})
    ], CategoryItem);
    return CategoryItem;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {
    if (typeof shadowMode !== 'boolean') {
        createInjectorSSR = createInjector;
        createInjector = shadowMode;
        shadowMode = false;
    }
    // Vue.extend constructor export interop.
    const options = typeof script === 'function' ? script.options : script;
    // render functions
    if (template && template.render) {
        options.render = template.render;
        options.staticRenderFns = template.staticRenderFns;
        options._compiled = true;
        // functional template
        if (isFunctionalTemplate) {
            options.functional = true;
        }
    }
    // scopedId
    if (scopeId) {
        options._scopeId = scopeId;
    }
    let hook;
    if (moduleIdentifier) {
        // server build
        hook = function (context) {
            // 2.3 injection
            context =
                context || // cached call
                    (this.$vnode && this.$vnode.ssrContext) || // stateful
                    (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional
            // 2.2 with runInNewContext: true
            if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
                context = __VUE_SSR_CONTEXT__;
            }
            // inject component styles
            if (style) {
                style.call(this, createInjectorSSR(context));
            }
            // register component module identifier for async chunk inference
            if (context && context._registeredComponents) {
                context._registeredComponents.add(moduleIdentifier);
            }
        };
        // used by ssr in case component is cached and beforeCreate
        // never gets called
        options._ssrRegister = hook;
    }
    else if (style) {
        hook = shadowMode
            ? function (context) {
                style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));
            }
            : function (context) {
                style.call(this, createInjector(context));
            };
    }
    if (hook) {
        if (options.functional) {
            // register for functional component in vue file
            const originalRender = options.render;
            options.render = function renderWithStyleInjection(h, context) {
                hook.call(context);
                return originalRender(h, context);
            };
        }
        else {
            // inject component registration as beforeCreate hook
            const existing = options.beforeCreate;
            options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
        }
    }
    return script;
}const isOldIE = typeof navigator !== 'undefined' &&
    /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());
function createInjector(context) {
    return (id, style) => addStyle(id, style);
}
let HEAD;
const styles = {};
function addStyle(id, css) {
    const group = isOldIE ? css.media || 'default' : id;
    const style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });
    if (!style.ids.has(id)) {
        style.ids.add(id);
        let code = css.source;
        if (css.map) {
            // https://developer.chrome.com/devtools/docs/javascript-debugging
            // this makes source maps inside style tags work properly in Chrome
            code += '\n/*# sourceURL=' + css.map.sources[0] + ' */';
            // http://stackoverflow.com/a/26603875
            code +=
                '\n/*# sourceMappingURL=data:application/json;base64,' +
                    btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +
                    ' */';
        }
        if (!style.element) {
            style.element = document.createElement('style');
            style.element.type = 'text/css';
            if (css.media)
                style.element.setAttribute('media', css.media);
            if (HEAD === undefined) {
                HEAD = document.head || document.getElementsByTagName('head')[0];
            }
            HEAD.appendChild(style.element);
        }
        if ('styleSheet' in style.element) {
            style.styles.push(code);
            style.element.styleSheet.cssText = style.styles
                .filter(Boolean)
                .join('\n');
        }
        else {
            const index = style.ids.size - 1;
            const textNode = document.createTextNode(code);
            const nodes = style.element.childNodes;
            if (nodes[index])
                style.element.removeChild(nodes[index]);
            if (nodes.length)
                style.element.insertBefore(textNode, nodes[index]);
            else
                style.element.appendChild(textNode);
        }
    }
}/* script */
const __vue_script__ = CategoryItem;

/* template */
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:"svg",style:(_vm.styleSVG),attrs:{"title":_vm.label},domProps:{"innerHTML":_vm._s(_vm.icon)}})};
var __vue_staticRenderFns__ = [];

  /* style */
  const __vue_inject_styles__ = function (inject) {
    if (!inject) return
    inject("data-v-3d397e3a_0", { source: ".svg[data-v-3d397e3a]{display:inline-block;vertical-align:middle}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__ = "data-v-3d397e3a";
  /* module identifier */
  const __vue_module_identifier__ = undefined;
  /* functional template */
  const __vue_is_functional_template__ = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__ = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
    __vue_inject_styles__,
    __vue_script__,
    __vue_scope_id__,
    __vue_is_functional_template__,
    __vue_module_identifier__,
    false,
    createInjector,
    undefined,
    undefined
  );var Categories = /** @class */ (function (_super) {
    __extends(Categories, _super);
    function Categories() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    Categories.prototype.onSelect = function (category) {
        return category;
    };
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], Categories.prototype, "categories", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], Categories.prototype, "current", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Emit"])("select")
    ], Categories.prototype, "onSelect", null);
    Categories = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({
            components: {
                CategoryItem: __vue_component__
            }
        })
    ], Categories);
    return Categories;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));/* script */
const __vue_script__$1 = Categories;

/* template */
var __vue_render__$1 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{"id":"Categories"}},_vm._l((_vm.categories),function(category,index){return _c('div',{key:index,class:['category', { active: category.name === _vm.current }],on:{"click":function($event){return _vm.onSelect(category)}}},[_c('CategoryItem',{attrs:{"label":category.label,"icon":category.icon}})],1)}),0)};
var __vue_staticRenderFns__$1 = [];

  /* style */
  const __vue_inject_styles__$1 = function (inject) {
    if (!inject) return
    inject("data-v-6d975e7c_0", { source: "#Categories[data-v-6d975e7c]{display:flex;width:100%;flex-direction:row;align-items:center;border-bottom:1px solid var(--ep-color-border);background:var(--ep-color-bg);overflow-x:auto}.category[data-v-6d975e7c]{flex:1;padding:5px;text-align:center;cursor:pointer}.category.active[data-v-6d975e7c]{border-bottom:3px solid var(--ep-color-active);filter:saturate(3);padding-bottom:2px}.category>img[data-v-6d975e7c]{width:22px;height:22px}.category[data-v-6d975e7c]:hover{filter:saturate(3)}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__$1 = "data-v-6d975e7c";
  /* module identifier */
  const __vue_module_identifier__$1 = undefined;
  /* functional template */
  const __vue_is_functional_template__$1 = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__$1 = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },
    __vue_inject_styles__$1,
    __vue_script__$1,
    __vue_scope_id__$1,
    __vue_is_functional_template__$1,
    __vue_module_identifier__$1,
    false,
    createInjector,
    undefined,
    undefined
  );var EmojiItem = /** @class */ (function (_super) {
    __extends(EmojiItem, _super);
    function EmojiItem() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    Object.defineProperty(EmojiItem.prototype, "styleSize", {
        get: function () {
            return {
                fontSize: this.size - 5 + "px",
                lineHeight: this.size + "px",
                height: this.size + "px",
                width: this.size + "px"
            };
        },
        enumerable: false,
        configurable: true
    });
    EmojiItem.prototype.uemoji = function (data) {
        var tmp = universal_emoji_parser__WEBPACK_IMPORTED_MODULE_1___default.a.parse(data);
        // window.__twemoji_base_url__ = 'https://static.wildfirechat.net/twemoji/assets/';
        if (window.hasOwnProperty('__twemoji_base_url__')) {
            tmp = tmp.replace(/src="https:\/\/twemoji\.maxcdn\.com\/v\/[0-9.]+\//g, 'src="' + window.__twemoji_base_url__);
        }
        return tmp;
    };
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiItem.prototype, "emoji", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiItem.prototype, "size", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiItem.prototype, "withBorder", void 0);
    EmojiItem = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({})
    ], EmojiItem);
    return EmojiItem;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));/* script */
const __vue_script__$2 = EmojiItem;

/* template */
var __vue_render__$2 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:['emoji-c', { 'border': _vm.withBorder } ],style:(_vm.styleSize),domProps:{"innerHTML":_vm._s(_vm.uemoji(_vm.emoji.data))}})};
var __vue_staticRenderFns__$2 = [];

  /* style */
  const __vue_inject_styles__$2 = function (inject) {
    if (!inject) return
    inject("data-v-b57468c6_0", { source: ".emoji-c[data-v-b57468c6]{text-align:center;padding:3px;box-sizing:content-box;overflow:hidden;transition:transform .2s;cursor:pointer;display:flex;justify-content:center;align-items:center}.emoji-c[data-v-b57468c6]:hover{transform:scale(1.15)}.emoji-c[data-v-b57468c6]  img{width:28px;height:28px}.border[data-v-b57468c6]:hover{background:#00000010;border-radius:8px}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__$2 = "data-v-b57468c6";
  /* module identifier */
  const __vue_module_identifier__$2 = undefined;
  /* functional template */
  const __vue_is_functional_template__$2 = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__$2 = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 },
    __vue_inject_styles__$2,
    __vue_script__$2,
    __vue_scope_id__$2,
    __vue_is_functional_template__$2,
    __vue_module_identifier__$2,
    false,
    createInjector,
    undefined,
    undefined
  );var CategoryLabel = /** @class */ (function (_super) {
    __extends(CategoryLabel, _super);
    function CategoryLabel() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ required: true })
    ], CategoryLabel.prototype, "name", void 0);
    CategoryLabel = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({})
    ], CategoryLabel);
    return CategoryLabel;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));/* script */
const __vue_script__$3 = CategoryLabel;

/* template */
var __vue_render__$3 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"category-title"},[_vm._v(_vm._s(_vm.name))])};
var __vue_staticRenderFns__$3 = [];

  /* style */
  const __vue_inject_styles__$3 = function (inject) {
    if (!inject) return
    inject("data-v-b863a738_0", { source: ".category-title[data-v-b863a738]{text-transform:uppercase;font-size:.8em;padding:5px 0 0 16px;color:#676666}.category-title[data-v-b863a738]:not(:first-of-type){padding:10px 0 0 16px}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__$3 = "data-v-b863a738";
  /* module identifier */
  const __vue_module_identifier__$3 = undefined;
  /* functional template */
  const __vue_is_functional_template__$3 = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__$3 = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },
    __vue_inject_styles__$3,
    __vue_script__$3,
    __vue_scope_id__$3,
    __vue_is_functional_template__$3,
    __vue_module_identifier__$3,
    false,
    createInjector,
    undefined,
    undefined
  );var StickerItem = /** @class */ (function (_super) {
    __extends(StickerItem, _super);
    function StickerItem() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    Object.defineProperty(StickerItem.prototype, "styleSize", {
        get: function () {
            return {
                fontSize: this.size - 5 + "px",
                lineHeight: this.size + "px",
                height: this.size + "px",
                width: this.size + "px"
            };
        },
        enumerable: false,
        configurable: true
    });
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], StickerItem.prototype, "emoji", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], StickerItem.prototype, "size", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], StickerItem.prototype, "withBorder", void 0);
    StickerItem = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({})
    ], StickerItem);
    return StickerItem;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));/* script */
const __vue_script__$4 = StickerItem;

/* template */
var __vue_render__$4 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{class:['sticker', { 'border': _vm.withBorder } ],style:(_vm.styleSize),attrs:{"src":_vm.emoji.data,"alt":""}})};
var __vue_staticRenderFns__$4 = [];

  /* style */
  const __vue_inject_styles__$4 = function (inject) {
    if (!inject) return
    inject("data-v-39ecdb37_0", { source: ".sticker[data-v-39ecdb37]{display:inline-block;text-align:center;padding:3px;box-sizing:content-box;overflow:hidden;transition:transform .2s;cursor:pointer}.sticker[data-v-39ecdb37]:hover{transform:scale(1.05)}.border[data-v-39ecdb37]:hover{background:#00000010;border-radius:8px}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__$4 = "data-v-39ecdb37";
  /* module identifier */
  const __vue_module_identifier__$4 = undefined;
  /* functional template */
  const __vue_is_functional_template__$4 = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__$4 = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },
    __vue_inject_styles__$4,
    __vue_script__$4,
    __vue_scope_id__$4,
    __vue_is_functional_template__$4,
    __vue_module_identifier__$4,
    false,
    createInjector,
    undefined,
    undefined
  );var EmojiList = /** @class */ (function (_super) {
    __extends(EmojiList, _super);
    function EmojiList() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    EmojiList.prototype.searchByAlias = function (term, emoji) {
        var isRelevant = function (alias) { return alias.toLowerCase().includes(term); };
        return emoji.aliases.some(function (alias) { return isRelevant(alias); });
    };
    EmojiList.prototype.calcScrollTop = function () {
        return this.hasSearch ? 88 : 44;
    };
    Object.defineProperty(EmojiList.prototype, "gridDynamic", {
        get: function () {
            var percent = 100 / this.emojisByRow;
            return {
                gridTemplateColumns: "repeat(" + this.emojisByRow + ", " + percent + "%)"
            };
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(EmojiList.prototype, "stickerGridDynamic", {
        get: function () {
            var percent = 100 / this.stickersByRow;
            return {
                gridTemplateColumns: "repeat(" + this.stickersByRow + ", " + percent + "%)"
            };
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(EmojiList.prototype, "dataFiltered", {
        get: function () {
            var _this = this;
            var data = this.data[this.category];
            var searchValue = this.filter.trim().toLowerCase();
            if (searchValue) {
                data = data.filter(function (emoji) {
                    return _this.searchByAlias(searchValue, emoji);
                });
            }
            return data;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(EmojiList.prototype, "dataFilteredByCategory", {
        get: function () {
            var _this = this;
            var _data = Object.assign({}, this.data);
            var searchValue = this.filter.trim().toLowerCase();
            if (searchValue) {
                this.categories.forEach(function (category) {
                    _data[category] = _this.data[category].filter(function (item) {
                        return _this.searchByAlias(searchValue, item);
                    });
                });
            }
            return _data;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(EmojiList.prototype, "categories", {
        get: function () {
            return Object.keys(this.data);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(EmojiList.prototype, "containerEmoji", {
        get: function () {
            return this.$refs["container-emoji"];
        },
        enumerable: false,
        configurable: true
    });
    EmojiList.prototype.onSelect = function (emoji) {
        return emoji;
    };
    EmojiList.prototype.onDataChanged = function () {
        this.containerEmoji.scrollTop = 0;
    };
    EmojiList.prototype.onCategoryChanged = function (newValue) {
        if (this.continuousList) {
            var categoryEl = this.$refs[newValue][0].$el;
            this.containerEmoji.scrollTop =
                categoryEl.offsetTop - this.calcScrollTop();
        }
    };
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ required: true })
    ], EmojiList.prototype, "data", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ required: true })
    ], EmojiList.prototype, "emojisByRow", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ required: true })
    ], EmojiList.prototype, "stickersByRow", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiList.prototype, "emojiWithBorder", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiList.prototype, "emojiSize", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiList.prototype, "stickerSize", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiList.prototype, "filter", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiList.prototype, "continuousList", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiList.prototype, "category", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], EmojiList.prototype, "hasSearch", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Emit"])("select")
    ], EmojiList.prototype, "onSelect", null);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Watch"])("data")
    ], EmojiList.prototype, "onDataChanged", null);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Watch"])("category")
    ], EmojiList.prototype, "onCategoryChanged", null);
    EmojiList = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({
            components: {
                StickerItem: __vue_component__$4,
                EmojiItem: __vue_component__$2,
                CategoryLabel: __vue_component__$3
            }
        })
    ], EmojiList);
    return EmojiList;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));/* script */
const __vue_script__$5 = EmojiList;

/* template */
var __vue_render__$5 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{"id":"Emojis"}},[_c('div',{ref:"container-emoji",staticClass:"container-emoji"},[(_vm.continuousList)?_vm._l((_vm.dataFilteredByCategory),function(category,category_name){return _c('div',{key:category_name},[_c('CategoryLabel',{directives:[{name:"show",rawName:"v-show",value:(category.length),expression:"category.length"}],ref:category_name,refInFor:true,attrs:{"name":category_name}}),_vm._v(" "),(category.length)?_c('div',{staticClass:"grid-emojis",style:(_vm.gridDynamic)},_vm._l((category),function(emoji,index_e){return _c('EmojiItem',{key:(category_name + "-" + index_e),attrs:{"emoji":emoji,"size":_vm.emojiSize,"withBorder":_vm.emojiWithBorder},nativeOn:{"click":function($event){return _vm.onSelect(emoji)}}})}),1):_vm._e()],1)}):[(_vm.category.indexOf('Sticker-') === -1)?_c('div',{staticClass:"grid-emojis",style:(_vm.gridDynamic)},_vm._l((_vm.dataFiltered),function(emoji,index){return _c('EmojiItem',{key:index,attrs:{"emoji":emoji,"size":_vm.emojiSize,"withBorder":_vm.emojiWithBorder},nativeOn:{"click":function($event){return _vm.onSelect(emoji)}}})}),1):_c('div',{staticClass:"grid-emojis",style:(_vm.stickerGridDynamic)},_vm._l((_vm.dataFiltered),function(emoji,index){return _c('StickerItem',{key:index,attrs:{"emoji":emoji,"size":_vm.stickerSize,"withBorder":_vm.emojiWithBorder},nativeOn:{"click":function($event){return _vm.onSelect(emoji)}}})}),1)]],2)])};
var __vue_staticRenderFns__$5 = [];

  /* style */
  const __vue_inject_styles__$5 = function (inject) {
    if (!inject) return
    inject("data-v-5c663c20_0", { source: "#Emojis[data-v-5c663c20]{font-family:Twemoji,NotomojiColor,Notomoji,EmojiOne Color,Symbola,Noto,Segoe UI Emoji,OpenSansEmoji,monospace;display:block;width:100%;max-width:100%;color:var(--ep-color-text)}#Emojis[data-v-5c663c20] ::-webkit-scrollbar{border-radius:4px;width:4px;overflow:hidden}.container-emoji[data-v-5c663c20]{overflow-x:hidden;overflow-y:scroll;height:350px}.grid-emojis[data-v-5c663c20]{display:grid;margin:5px 0;justify-items:center}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__$5 = "data-v-5c663c20";
  /* module identifier */
  const __vue_module_identifier__$5 = undefined;
  /* functional template */
  const __vue_is_functional_template__$5 = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__$5 = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 },
    __vue_inject_styles__$5,
    __vue_script__$5,
    __vue_scope_id__$5,
    __vue_is_functional_template__$5,
    __vue_module_identifier__$5,
    false,
    createInjector,
    undefined,
    undefined
  );var timemout = 500;
var listenInput;
var InputSearch = /** @class */ (function (_super) {
    __extends(InputSearch, _super);
    function InputSearch() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.inputSearch = "";
        return _this;
    }
    InputSearch.prototype.onInputChanged = function (newValue, old) {
        var _this = this;
        clearTimeout(listenInput);
        listenInput = setTimeout(function () { return _this.$emit("update", newValue); }, timemout);
    };
    Object.defineProperty(InputSearch.prototype, "placeholder", {
        get: function () {
            return t("search");
        },
        enumerable: false,
        configurable: true
    });
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Watch"])("inputSearch")
    ], InputSearch.prototype, "onInputChanged", null);
    InputSearch = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({})
    ], InputSearch);
    return InputSearch;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));/* script */
const __vue_script__$6 = InputSearch;

/* template */
var __vue_render__$6 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{"id":"InputSearch"}},[_c('div',{staticClass:"container-search"},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.inputSearch),expression:"inputSearch"}],attrs:{"type":"text","placeholder":_vm.placeholder},domProps:{"value":(_vm.inputSearch)},on:{"input":function($event){if($event.target.composing){ return; }_vm.inputSearch=$event.target.value;}}})])])};
var __vue_staticRenderFns__$6 = [];

  /* style */
  const __vue_inject_styles__$6 = function (inject) {
    if (!inject) return
    inject("data-v-839ecda0_0", { source: "#InputSearch[data-v-839ecda0]{display:block;width:100%;max-width:100%}.container-search[data-v-839ecda0]{display:block;justify-content:center;box-sizing:border-box;width:100%;margin:5px 0;padding:0 5%}.container-search input[data-v-839ecda0]{width:100%;font-size:14px;padding:6px 8px;box-sizing:border-box;border-radius:8px;background:var(--ep-color-sbg);color:var(--ep-color-text);border:1px solid var(--ep-color-border)}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__$6 = "data-v-839ecda0";
  /* module identifier */
  const __vue_module_identifier__$6 = undefined;
  /* functional template */
  const __vue_is_functional_template__$6 = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__$6 = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 },
    __vue_inject_styles__$6,
    __vue_script__$6,
    __vue_scope_id__$6,
    __vue_is_functional_template__$6,
    __vue_module_identifier__$6,
    false,
    createInjector,
    undefined,
    undefined
  );var VEmojiPicker = /** @class */ (function (_super) {
    __extends(VEmojiPicker, _super);
    function VEmojiPicker() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.mapEmojis = {};
        _this.currentCategory = _this.initialCategory;
        _this.filterEmoji = "";
        return _this;
    }
    VEmojiPicker.prototype.created = function () {
        var categoriesNames = this.customCategories.map(function (c) { return c.name; });
        if (!categoriesNames.includes(this.initialCategory)) {
            this.initialCategory = categoriesNames[0];
        }
        // Create map
        this.mapperEmojisCategory(this.customEmojis);
        this.restoreFrequentlyEmojis();
        // Configure i18n
        if (this.i18n) {
            locale.i18n(this.i18n);
        }
    };
    VEmojiPicker.prototype.beforeDestroy = function () {
        this.mapEmojis = {};
    };
    VEmojiPicker.prototype.onSearch = function (term) {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                this.filterEmoji = term;
                return [2 /*return*/];
            });
        });
    };
    VEmojiPicker.prototype.changeCategory = function (category) {
        return __awaiter(this, void 0, void 0, function () {
            var hasEmojis;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        hasEmojis = this.mapEmojis[category.name].length;
                        this.currentCategory = category.name;
                        if (!hasEmojis) return [3 /*break*/, 2];
                        return [4 /*yield*/, this.onChangeCategory(category)];
                    case 1:
                        _a.sent();
                        _a.label = 2;
                    case 2: return [2 /*return*/];
                }
            });
        });
    };
    VEmojiPicker.prototype.updateFrequently = function (emoji) {
        return __awaiter(this, void 0, void 0, function () {
            var oldEmojis, emojis;
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0:
                        if (emoji.data.startsWith("http")) {
                            return [2 /*return*/];
                        }
                        oldEmojis = this.mapEmojis["Frequently"];
                        emojis = __spread(new Set(__spread([emoji], oldEmojis)));
                        this.mapEmojis["Frequently"] = emojis.slice(0, this.limitFrequently);
                        return [4 /*yield*/, this.saveFrequentlyEmojis(emojis)];
                    case 1:
                        _a.sent();
                        return [2 /*return*/];
                }
            });
        });
    };
    VEmojiPicker.prototype.mapperEmojisCategory = function (emojis) {
        return __awaiter(this, void 0, void 0, function () {
            var _this = this;
            return __generator(this, function (_a) {
                this.$set(this.mapEmojis, "Frequently", []);
                emojis
                    .filter(function (emoji) { return !_this.exceptEmojis.includes(emoji); })
                    .forEach(function (emoji) {
                    var _category = emoji.category;
                    if (!_this.mapEmojis[_category]) {
                        _this.$set(_this.mapEmojis, _category, []);
                    }
                    _this.mapEmojis[_category].push(emoji);
                });
                return [2 /*return*/];
            });
        });
    };
    VEmojiPicker.prototype.restoreFrequentlyEmojis = function () {
        return __awaiter(this, void 0, void 0, function () {
            var jsonMapIndexEmojis, mapIndexEmojis;
            var _this = this;
            return __generator(this, function (_a) {
                jsonMapIndexEmojis = localStorage.getItem("frequentlyEmojis");
                mapIndexEmojis = JSON.parse(jsonMapIndexEmojis) || [];
                this.mapEmojis["Frequently"] = mapIndexEmojis.map(function (index) { return _this.customEmojis[index]; });
                return [2 /*return*/];
            });
        });
    };
    VEmojiPicker.prototype.saveFrequentlyEmojis = function (emojis) {
        return __awaiter(this, void 0, void 0, function () {
            var mapIndexEmojis;
            var _this = this;
            return __generator(this, function (_a) {
                mapIndexEmojis = emojis.map(function (emoji) {
                    return _this.customEmojis.indexOf(emoji);
                });
                localStorage.setItem("frequentlyEmojis", JSON.stringify(mapIndexEmojis));
                return [2 /*return*/];
            });
        });
    };
    Object.defineProperty(VEmojiPicker.prototype, "categoriesFiltered", {
        get: function () {
            var _this = this;
            return this.customCategories.filter(function (category) { return !_this.exceptCategories.includes(category); });
        },
        enumerable: false,
        configurable: true
    });
    VEmojiPicker.prototype.onSelectEmoji = function (emoji) {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                switch (_a.label) {
                    case 0: return [4 /*yield*/, this.updateFrequently(emoji)];
                    case 1:
                        _a.sent();
                        return [2 /*return*/, emoji];
                }
            });
        });
    };
    VEmojiPicker.prototype.onChangeCategory = function (category) {
        return __awaiter(this, void 0, void 0, function () {
            return __generator(this, function (_a) {
                return [2 /*return*/, category];
            });
        });
    };
    VEmojiPicker.prototype.onChangeCustomEmojis = function (newEmojis) {
        if (newEmojis && newEmojis.length) {
            this.mapEmojis = {};
            this.mapperEmojisCategory(newEmojis);
        }
    };
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: function () { return emojisDefault; } })
    ], VEmojiPicker.prototype, "customEmojis", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: function () { return categoriesDefault; } })
    ], VEmojiPicker.prototype, "customCategories", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: 15 })
    ], VEmojiPicker.prototype, "limitFrequently", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: 5 })
    ], VEmojiPicker.prototype, "emojisByRow", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: 4 })
    ], VEmojiPicker.prototype, "stickersByRow", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: false })
    ], VEmojiPicker.prototype, "continuousList", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: 32 })
    ], VEmojiPicker.prototype, "emojiSize", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: 64 })
    ], VEmojiPicker.prototype, "stickerSize", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: true })
    ], VEmojiPicker.prototype, "emojiWithBorder", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: true })
    ], VEmojiPicker.prototype, "showSearch", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: true })
    ], VEmojiPicker.prototype, "showCategories", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: false })
    ], VEmojiPicker.prototype, "dark", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: "Peoples" })
    ], VEmojiPicker.prototype, "initialCategory", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: function () { return []; } })
    ], VEmojiPicker.prototype, "exceptCategories", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({ default: function () { return []; } })
    ], VEmojiPicker.prototype, "exceptEmojis", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Prop"])({})
    ], VEmojiPicker.prototype, "i18n", void 0);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Emit"])("select")
    ], VEmojiPicker.prototype, "onSelectEmoji", null);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Emit"])("changeCategory")
    ], VEmojiPicker.prototype, "onChangeCategory", null);
    __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Watch"])("customEmojis")
    ], VEmojiPicker.prototype, "onChangeCustomEmojis", null);
    VEmojiPicker = __decorate([
        Object(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Component"])({
            components: {
                Categories: __vue_component__$1,
                EmojiList: __vue_component__$5,
                InputSearch: __vue_component__$6
            }
        })
    ], VEmojiPicker);
    return VEmojiPicker;
}(vue_property_decorator__WEBPACK_IMPORTED_MODULE_0__["Vue"]));/* script */
const __vue_script__$7 = VEmojiPicker;

/* template */
var __vue_render__$7 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['emoji-picker', {dark: _vm.dark}],attrs:{"id":"EmojiPicker"}},[(_vm.showCategories)?_c('Categories',{attrs:{"categories":_vm.categoriesFiltered,"current":_vm.currentCategory},on:{"select":_vm.changeCategory}}):_vm._e(),_vm._v(" "),(_vm.showSearch)?_c('InputSearch',{on:{"update":_vm.onSearch}}):_vm._e(),_vm._v(" "),_c('EmojiList',{attrs:{"data":_vm.mapEmojis,"category":_vm.currentCategory,"filter":_vm.filterEmoji,"emojiWithBorder":_vm.emojiWithBorder,"emojiSize":_vm.emojiSize,"stickerSize":_vm.stickerSize,"emojisByRow":_vm.emojisByRow,"stickersByRow":_vm.stickersByRow,"continuousList":_vm.continuousList,"hasSearch":_vm.showSearch},on:{"select":_vm.onSelectEmoji}})],1)};
var __vue_staticRenderFns__$7 = [];

  /* style */
  const __vue_inject_styles__$7 = function (inject) {
    if (!inject) return
    inject("data-v-8ba3dcc0_0", { source: ".emoji-picker[data-v-8ba3dcc0]{--ep-color-bg:#f0f0f0;--ep-color-sbg:#f6f6f6;--ep-color-border:#e4e4e4;--ep-color-text:#4a4a4a;--ep-color-active:#009688;display:inline-flex;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeSpeed;flex-direction:column;align-items:center;background-color:var(--ep-color-bg);border-radius:4px;border:1px solid var(--ep-color-border);overflow:hidden;width:325px;user-select:none}@media screen and (max-width:325px){.emoji-picker[data-v-8ba3dcc0]{width:100%}}.dark[data-v-8ba3dcc0]{--ep-color-bg:#191B1A;--ep-color-sbg:#212221;--ep-color-border:#3E3D42;--ep-color-text:#f0f0f0;--ep-color-active:#009688}", map: undefined, media: undefined });

  };
  /* scoped */
  const __vue_scope_id__$7 = "data-v-8ba3dcc0";
  /* module identifier */
  const __vue_module_identifier__$7 = undefined;
  /* functional template */
  const __vue_is_functional_template__$7 = false;
  /* style inject SSR */
  
  /* style inject shadow dom */
  

  
  const __vue_component__$7 = /*#__PURE__*/normalizeComponent(
    { render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 },
    __vue_inject_styles__$7,
    __vue_script__$7,
    __vue_scope_id__$7,
    __vue_is_functional_template__$7,
    __vue_module_identifier__$7,
    false,
    createInjector,
    undefined,
    undefined
  );var defaultOptions = {
    i18n: {}
};
var plugin = {
    VEmojiPicker: __vue_component__$7,
    install: function (Vue, opts) {
        if (opts === void 0) { opts = defaultOptions; }
        locale.i18n(opts.i18n);
        Vue.component(__vue_component__$7.name, __vue_component__$7);
    }
};/* harmony default export */ __webpack_exports__["default"] = (plugin);

/***/ }),

/***/ "./node_modules/@imndx/v-emoji-picker/node_modules/universal-emoji-parser/dist/main.js":
/*!*********************************************************************************************!*\
  !*** ./node_modules/@imndx/v-emoji-picker/node_modules/universal-emoji-parser/dist/main.js ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(/*! source-map-support */ "./node_modules/source-map-support/source-map-support.js").install(),module.exports=function(r){var n={};function o(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=r,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="dist/",o(o.s=0)}([function(e,t,r){"use strict";var n=r(1),o=n(r(2)),u=n(r(3)),i=n(r(4)),l={getEmojiObjectByCode:function(t){if(t=t.replace(/:/g,""),i.default.lib[t]&&"object"===(0,o.default)(i.default.lib[t])&&i.default.lib[t].char)return i.default.lib[t];var e=Object.keys(i.default.lib).find(function(e){return i.default.lib[e].keywords.includes(t)});return e?i.default.lib[e]:void 0},parse:function(n){var o=this;if("string"!=typeof n)throw new Error("The text parameter should be a string.");var e=n.match(/:(\w+):/g);return e&&e.forEach(function(e){var t,r=o.getEmojiObjectByCode(e);r&&(t=new RegExp(e),n=n.replace(t,r.char))}),u.default.parse(n)}};e.exports=l},function(e,t){e.exports=__webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js")},function(e,t){e.exports=__webpack_require__(/*! @babel/runtime/helpers/typeof */ "./node_modules/@babel/runtime/helpers/typeof.js")},function(e,t){e.exports=__webpack_require__(/*! twemoji */ "./node_modules/twemoji/dist/twemoji.esm.js")},function(e,t){e.exports=__webpack_require__(/*! emojilib */ "./node_modules/emojilib/index.js")}]);
//# sourceMappingURL=main.js.map

/***/ }),

/***/ "./node_modules/@turf/turf/turf.min.js":
/*!*********************************************!*\
  !*** ./node_modules/@turf/turf/turf.min.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

!function(t,e){ true?e(exports):undefined}(this,(function(t){"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function n(t){if(Array.isArray(t))return t}function r(t,e,n){return e=l(e),function(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,c()?Reflect.construct(e,n||[],l(t).constructor):e.apply(t,n))}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,y(r.key),r)}}function s(t,e,n){return e&&o(t.prototype,e),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function a(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=_(t))||e){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}function u(t,e,n){return(e=y(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function h(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&p(t,e)}function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}function f(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}function g(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function p(t,e){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},p(t,e)}function v(t,e){return n(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,o,s,a=[],u=!0,l=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(a.push(r.value),a.length!==e);u=!0);}catch(t){l=!0,i=t}finally{try{if(!u&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw i}}return a}}(t,e)||_(t,e)||g()}function d(t){return function(t){if(Array.isArray(t))return e(t)}(t)||f(t)||_(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}function m(t){return m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},m(t)}function _(t,n){if(t){if("string"==typeof t)return e(t,n);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?e(t,n):void 0}}var x=6371008.8,E={centimeters:100*x,centimetres:100*x,degrees:360/(2*Math.PI),feet:3.28084*x,inches:39.37*x,kilometers:x/1e3,kilometres:x/1e3,meters:x,metres:x,miles:x/1609.344,millimeters:1e3*x,millimetres:1e3*x,nauticalmiles:x/1852,radians:1,yards:1.0936*x},k={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:2.9155334959812285e-7,millimeters:1e6,millimetres:1e6,yards:1.195990046};function b(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=e||{},r.geometry=t,r}function w(t,e){switch(t){case"Point":return I(e).geometry;case"LineString":return L(e).geometry;case"Polygon":return S(e).geometry;case"MultiPoint":return O(e).geometry;case"MultiLineString":return T(e).geometry;case"MultiPolygon":return R(e).geometry;default:throw new Error(t+" is invalid")}}function I(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!U(t[0])||!U(t[1]))throw new Error("coordinates must contain numbers");return b({type:"Point",coordinates:t},e,n)}function N(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return C(t.map((function(t){return I(t,e)})),n)}function S(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=a(t);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(o.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(o[o.length-1].length!==o[0].length)throw new Error("First and last Position are not equivalent.");for(var s=0;s<o[o.length-1].length;s++)if(o[o.length-1][s]!==o[0][s])throw new Error("First and last Position are not equivalent.")}}catch(t){i.e(t)}finally{i.f()}return b({type:"Polygon",coordinates:t},e,r)}function M(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return C(t.map((function(t){return S(t,e)})),n)}function L(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t.length<2)throw new Error("coordinates must be an array of two or more positions");return b({type:"LineString",coordinates:t},e,n)}function P(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return C(t.map((function(t){return L(t,e)})),n)}function C(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={type:"FeatureCollection"};return e.id&&(n.id=e.id),e.bbox&&(n.bbox=e.bbox),n.features=t,n}function T(t,e){return b({type:"MultiLineString",coordinates:t},e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})}function O(t,e){return b({type:"MultiPoint",coordinates:t},e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})}function R(t,e){return b({type:"MultiPolygon",coordinates:t},e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})}function A(t,e){return b({type:"GeometryCollection",geometries:t},e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})}function D(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e&&!(e>=0))throw new Error("precision must be a positive number");var n=Math.pow(10,e||0);return Math.round(t*n)/n}function F(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kilometers",n=E[e];if(!n)throw new Error(e+" units is invalid");return t*n}function q(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kilometers",n=E[e];if(!n)throw new Error(e+" units is invalid");return t/n}function V(t,e){return Y(q(t,e))}function G(t){var e=t%360;return e<0&&(e+=360),e}function B(t){return(t%=360)>180?t-360:t<-180?t+360:t}function Y(t){return 180*(t%(2*Math.PI))/Math.PI}function z(t){return t%360*Math.PI/180}function j(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kilometers",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"kilometers";if(!(t>=0))throw new Error("length must be a positive number");return F(q(t,e),n)}function X(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"meters",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"kilometers";if(!(t>=0))throw new Error("area must be a positive number");var r=k[e];if(!r)throw new Error("invalid original units");var i=k[n];if(!i)throw new Error("invalid final units");return t/r*i}function U(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}function Z(t){return null!==t&&"object"===m(t)&&!Array.isArray(t)}function H(t){if(!t)throw new Error("bbox is required");if(!Array.isArray(t))throw new Error("bbox must be an Array");if(4!==t.length&&6!==t.length)throw new Error("bbox must be an Array of 4 or 6 numbers");t.forEach((function(t){if(!U(t))throw new Error("bbox must only contain numbers")}))}function W(t){if(!t)throw new Error("id is required");if(-1===["string","number"].indexOf(m(t)))throw new Error("id must be a number or a string")}var J=Object.freeze({__proto__:null,areaFactors:k,azimuthToBearing:B,bearingToAzimuth:G,convertArea:X,convertLength:j,degreesToRadians:z,earthRadius:x,factors:E,feature:b,featureCollection:C,geometry:w,geometryCollection:A,isNumber:U,isObject:Z,lengthToDegrees:V,lengthToRadians:q,lineString:L,lineStrings:P,multiLineString:T,multiPoint:O,multiPolygon:R,point:I,points:N,polygon:S,polygons:M,radiansToDegrees:Y,radiansToLength:F,round:D,validateBBox:H,validateId:W});function K(t){if(!t)throw new Error("coord is required");if(!Array.isArray(t)){if("Feature"===t.type&&null!==t.geometry&&"Point"===t.geometry.type)return d(t.geometry.coordinates);if("Point"===t.type)return d(t.coordinates)}if(Array.isArray(t)&&t.length>=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return d(t);throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Q(t){if(Array.isArray(t))return t;if("Feature"===t.type){if(null!==t.geometry)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function $(t){if(t.length>1&&U(t[0])&&U(t[1]))return!0;if(Array.isArray(t[0])&&t[0].length)return $(t[0]);throw new Error("coordinates must only contain numbers")}function tt(t,e,n){if(!e||!n)throw new Error("type and name required");if(!t||t.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+t.type)}function et(t,e,n){if(!t)throw new Error("No feature passed");if(!n)throw new Error(".featureOf() requires a name");if(!t||"Feature"!==t.type||!t.geometry)throw new Error("Invalid input to "+n+", Feature with geometry required");if(!t.geometry||t.geometry.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+t.geometry.type)}function nt(t,e,n){if(!t)throw new Error("No featureCollection passed");if(!n)throw new Error(".collectionOf() requires a name");if(!t||"FeatureCollection"!==t.type)throw new Error("Invalid input to "+n+", FeatureCollection required");var r,i=a(t.features);try{for(i.s();!(r=i.n()).done;){var o=r.value;if(!o||"Feature"!==o.type||!o.geometry)throw new Error("Invalid input to "+n+", Feature with geometry required");if(!o.geometry||o.geometry.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+o.geometry.type)}}catch(t){i.e(t)}finally{i.f()}}function rt(t){return"Feature"===t.type?t.geometry:t}function it(t,e){return"FeatureCollection"===t.type?"FeatureCollection":"GeometryCollection"===t.type?"GeometryCollection":"Feature"===t.type&&null!==t.geometry?t.geometry.type:t.type}var ot=Object.freeze({__proto__:null,collectionOf:nt,containsNumber:$,featureOf:et,geojsonType:tt,getCoord:K,getCoords:Q,getGeom:rt,getType:it});function st(t,e){if(!0===(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).final)return function(t,e){var n=st(e,t);return n=(n+180)%360}(t,e);var n=K(t),r=K(e),i=z(n[0]),o=z(r[0]),s=z(n[1]),a=z(r[1]),u=Math.sin(o-i)*Math.cos(a),l=Math.cos(s)*Math.sin(a)-Math.sin(s)*Math.cos(a)*Math.cos(o-i);return Y(Math.atan2(u,l))}function at(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=K(t),o=z(i[0]),s=z(i[1]),a=z(n),u=q(e,r.units),l=Math.asin(Math.sin(s)*Math.cos(u)+Math.cos(s)*Math.sin(u)*Math.cos(a));return I([Y(o+Math.atan2(Math.sin(a)*Math.sin(u)*Math.cos(s),Math.cos(u)-Math.sin(s)*Math.sin(l))),Y(l)],r.properties)}function ut(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=K(t),i=K(e),o=z(i[1]-r[1]),s=z(i[0]-r[0]),a=z(r[1]),u=z(i[1]),l=Math.pow(Math.sin(o/2),2)+Math.pow(Math.sin(s/2),2)*Math.cos(a)*Math.cos(u);return F(2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)),n.units)}function lt(t,e){var n;return(n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).final?ht(K(e),K(t)):ht(K(t),K(e)))>180?-(360-n):n}function ht(t,e){var n=z(t[1]),r=z(e[1]),i=z(e[0]-t[0]);i>Math.PI&&(i-=2*Math.PI),i<-Math.PI&&(i+=2*Math.PI);var o=Math.log(Math.tan(r/2+Math.PI/4)/Math.tan(n/2+Math.PI/4));return(Y(Math.atan2(i,o))+360)%360}function ct(t,e,n){if(null!==t)for(var r,i,o,s,a,u,l,h,c=0,f=0,g=t.type,p="FeatureCollection"===g,v="Feature"===g,d=p?t.features.length:1,y=0;y<d;y++){a=(h=!!(l=p?t.features[y].geometry:v?t.geometry:t)&&"GeometryCollection"===l.type)?l.geometries.length:1;for(var m=0;m<a;m++){var _=0,x=0;if(null!==(s=h?l.geometries[m]:l)){u=s.coordinates;var E=s.type;switch(c=!n||"Polygon"!==E&&"MultiPolygon"!==E?0:1,E){case null:break;case"Point":if(!1===e(u,f,y,_,x))return!1;f++,_++;break;case"LineString":case"MultiPoint":for(r=0;r<u.length;r++){if(!1===e(u[r],f,y,_,x))return!1;f++,"MultiPoint"===E&&_++}"LineString"===E&&_++;break;case"Polygon":case"MultiLineString":for(r=0;r<u.length;r++){for(i=0;i<u[r].length-c;i++){if(!1===e(u[r][i],f,y,_,x))return!1;f++}"MultiLineString"===E&&_++,"Polygon"===E&&x++}"Polygon"===E&&_++;break;case"MultiPolygon":for(r=0;r<u.length;r++){for(x=0,i=0;i<u[r].length;i++){for(o=0;o<u[r][i].length-c;o++){if(!1===e(u[r][i][o],f,y,_,x))return!1;f++}x++}_++}break;case"GeometryCollection":for(r=0;r<s.geometries.length;r++)if(!1===ct(s.geometries[r],e,n))return!1;break;default:throw new Error("Unknown Geometry Type")}}}}}function ft(t,e,n,r){var i=n;return ct(t,(function(t,r,o,s,a){i=0===r&&void 0===n?t:e(i,t,r,o,s,a)}),r),i}function gt(t,e){var n;switch(t.type){case"FeatureCollection":for(n=0;n<t.features.length&&!1!==e(t.features[n].properties,n);n++);break;case"Feature":e(t.properties,0)}}function pt(t,e,n){var r=n;return gt(t,(function(t,i){r=0===i&&void 0===n?t:e(r,t,i)})),r}function vt(t,e){if("Feature"===t.type)e(t,0);else if("FeatureCollection"===t.type)for(var n=0;n<t.features.length&&!1!==e(t.features[n],n);n++);}function dt(t,e,n){var r=n;return vt(t,(function(t,i){r=0===i&&void 0===n?t:e(r,t,i)})),r}function yt(t){var e=[];return ct(t,(function(t){e.push(t)})),e}function mt(t,e){var n,r,i,o,s,a,u,l,h,c,f=0,g="FeatureCollection"===t.type,p="Feature"===t.type,v=g?t.features.length:1;for(n=0;n<v;n++){for(a=g?t.features[n].geometry:p?t.geometry:t,l=g?t.features[n].properties:p?t.properties:{},h=g?t.features[n].bbox:p?t.bbox:void 0,c=g?t.features[n].id:p?t.id:void 0,s=(u=!!a&&"GeometryCollection"===a.type)?a.geometries.length:1,i=0;i<s;i++)if(null!==(o=u?a.geometries[i]:a))switch(o.type){case"Point":case"LineString":case"MultiPoint":case"Polygon":case"MultiLineString":case"MultiPolygon":if(!1===e(o,f,l,h,c))return!1;break;case"GeometryCollection":for(r=0;r<o.geometries.length;r++)if(!1===e(o.geometries[r],f,l,h,c))return!1;break;default:throw new Error("Unknown Geometry Type")}else if(!1===e(null,f,l,h,c))return!1;f++}}function _t(t,e,n){var r=n;return mt(t,(function(t,i,o,s,a){r=0===i&&void 0===n?t:e(r,t,i,o,s,a)})),r}function xt(t,e){mt(t,(function(t,n,r,i,o){var s,a=null===t?null:t.type;switch(a){case null:case"Point":case"LineString":case"Polygon":return!1!==e(b(t,r,{bbox:i,id:o}),n,0)&&void 0}switch(a){case"MultiPoint":s="Point";break;case"MultiLineString":s="LineString";break;case"MultiPolygon":s="Polygon"}for(var u=0;u<t.coordinates.length;u++){var l=t.coordinates[u];if(!1===e(b({type:s,coordinates:l},r),n,u))return!1}}))}function Et(t,e,n){var r=n;return xt(t,(function(t,i,o){r=0===i&&0===o&&void 0===n?t:e(r,t,i,o)})),r}function kt(t,e){xt(t,(function(t,n,r){var i=0;if(t.geometry){var o=t.geometry.type;if("Point"!==o&&"MultiPoint"!==o){var s,a=0,u=0,l=0;return!1!==ct(t,(function(o,h,c,f,g){if(void 0===s||n>a||f>u||g>l)return s=o,a=n,u=f,l=g,void(i=0);var p=L([s,o],t.properties);if(!1===e(p,n,r,g,i))return!1;i++,s=o}))&&void 0}}}))}function bt(t,e,n){var r=n,i=!1;return kt(t,(function(t,o,s,a,u){r=!1===i&&void 0===n?t:e(r,t,o,s,a,u),i=!0})),r}function wt(t,e){if(!t)throw new Error("geojson is required");xt(t,(function(t,n,r){if(null!==t.geometry){var i=t.geometry.type,o=t.geometry.coordinates;switch(i){case"LineString":if(!1===e(t,n,r,0,0))return!1;break;case"Polygon":for(var s=0;s<o.length;s++)if(!1===e(L(o[s],t.properties),n,r,s))return!1}}}))}function It(t,e,n){var r=n;return wt(t,(function(t,i,o,s){r=0===i&&void 0===n?t:e(r,t,i,o,s)})),r}function Nt(t,e){if(!Z(e=e||{}))throw new Error("options is invalid");var n,r=e.featureIndex||0,i=e.multiFeatureIndex||0,o=e.geometryIndex||0,s=e.segmentIndex||0,a=e.properties;switch(t.type){case"FeatureCollection":r<0&&(r=t.features.length+r),a=a||t.features[r].properties,n=t.features[r].geometry;break;case"Feature":a=a||t.properties,n=t.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":n=t;break;default:throw new Error("geojson is invalid")}if(null===n)return null;var u=n.coordinates;switch(n.type){case"Point":case"MultiPoint":return null;case"LineString":return s<0&&(s=u.length+s-1),L([u[s],u[s+1]],a,e);case"Polygon":return o<0&&(o=u.length+o),s<0&&(s=u[o].length+s-1),L([u[o][s],u[o][s+1]],a,e);case"MultiLineString":return i<0&&(i=u.length+i),s<0&&(s=u[i].length+s-1),L([u[i][s],u[i][s+1]],a,e);case"MultiPolygon":return i<0&&(i=u.length+i),o<0&&(o=u[i].length+o),s<0&&(s=u[i][o].length-s-1),L([u[i][o][s],u[i][o][s+1]],a,e)}throw new Error("geojson is invalid")}function St(t,e){if(!Z(e=e||{}))throw new Error("options is invalid");var n,r=e.featureIndex||0,i=e.multiFeatureIndex||0,o=e.geometryIndex||0,s=e.coordIndex||0,a=e.properties;switch(t.type){case"FeatureCollection":r<0&&(r=t.features.length+r),a=a||t.features[r].properties,n=t.features[r].geometry;break;case"Feature":a=a||t.properties,n=t.geometry;break;case"Point":case"MultiPoint":return null;case"LineString":case"Polygon":case"MultiLineString":case"MultiPolygon":n=t;break;default:throw new Error("geojson is invalid")}if(null===n)return null;var u=n.coordinates;switch(n.type){case"Point":return I(u,a,e);case"MultiPoint":return i<0&&(i=u.length+i),I(u[i],a,e);case"LineString":return s<0&&(s=u.length+s),I(u[s],a,e);case"Polygon":return o<0&&(o=u.length+o),s<0&&(s=u[o].length+s),I(u[o][s],a,e);case"MultiLineString":return i<0&&(i=u.length+i),s<0&&(s=u[i].length+s),I(u[i][s],a,e);case"MultiPolygon":return i<0&&(i=u.length+i),o<0&&(o=u[i].length+o),s<0&&(s=u[i][o].length-s),I(u[i][o][s],a,e)}throw new Error("geojson is invalid")}var Mt=Object.freeze({__proto__:null,coordAll:yt,coordEach:ct,coordReduce:ft,featureEach:vt,featureReduce:dt,findPoint:St,findSegment:Nt,flattenEach:xt,flattenReduce:Et,geomEach:mt,geomReduce:_t,lineEach:wt,lineReduce:It,propEach:gt,propReduce:pt,segmentEach:kt,segmentReduce:bt});function Lt(t){return _t(t,(function(t,e){return t+function(t){var e,n=0;switch(t.type){case"Polygon":return Pt(t.coordinates);case"MultiPolygon":for(e=0;e<t.coordinates.length;e++)n+=Pt(t.coordinates[e]);return n;case"Point":case"MultiPoint":case"LineString":case"MultiLineString":return 0}return 0}(e)}),0)}function Pt(t){var e=0;if(t&&t.length>0){e+=Math.abs(Ot(t[0]));for(var n=1;n<t.length;n++)e-=Math.abs(Ot(t[n]))}return e}var Ct=x*x/2,Tt=Math.PI/180;function Ot(t){var e=t.length-1;if(e<=2)return 0;for(var n=0,r=0;r<e;){var i=t[r],o=t[r+1===e?0:r+1],s=t[r+2>=e?(r+2)%e:r+2],a=i[0]*Tt,u=o[1]*Tt;n+=(s[0]*Tt-a)*Math.sin(u),r++}return n*Ct}function Rt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(null!=t.bbox&&!0!==e.recompute)return t.bbox;var n=[1/0,1/0,-1/0,-1/0];return ct(t,(function(t){n[0]>t[0]&&(n[0]=t[0]),n[1]>t[1]&&(n[1]=t[1]),n[2]<t[0]&&(n[2]=t[0]),n[3]<t[1]&&(n[3]=t[1])})),n}function At(t,e){var n,r,i,o,s,a,u;for(r=1;r<=8;r*=2){for(n=[],o=!(Ft(i=t[t.length-1],e)&r),s=0;s<t.length;s++)(u=!(Ft(a=t[s],e)&r))!==o&&n.push(Dt(i,a,r,e)),u&&n.push(a),i=a,o=u;if(!(t=n).length)break}return n}function Dt(t,e,n,r){return 8&n?[t[0]+(e[0]-t[0])*(r[3]-t[1])/(e[1]-t[1]),r[3]]:4&n?[t[0]+(e[0]-t[0])*(r[1]-t[1])/(e[1]-t[1]),r[1]]:2&n?[r[2],t[1]+(e[1]-t[1])*(r[2]-t[0])/(e[0]-t[0])]:1&n?[r[0],t[1]+(e[1]-t[1])*(r[0]-t[0])/(e[0]-t[0])]:null}function Ft(t,e){var n=0;return t[0]<e[0]?n|=1:t[0]>e[2]&&(n|=2),t[1]<e[1]?n|=4:t[1]>e[3]&&(n|=8),n}function qt(t,e){var n,r=[],i=a(t);try{for(i.s();!(n=i.n()).done;){var o=At(n.value,e);o.length>0&&(o[0][0]===o[o.length-1][0]&&o[0][1]===o[o.length-1][1]||o.push(o[0]),o.length>=4&&r.push(o))}}catch(t){i.e(t)}finally{i.f()}return r}function Vt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Number(t[0]),r=Number(t[1]),i=Number(t[2]),o=Number(t[3]);if(6===t.length)throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");var s=[n,r];return S([[s,[i,r],[i,o],[n,o],s]],e.properties,{bbox:t,id:e.id})}var Gt=function(){return s((function t(e){i(this,t),this.points=e.points||[],this.duration=e.duration||1e4,this.sharpness=e.sharpness||.85,this.centers=[],this.controls=[],this.stepLength=e.stepLength||60,this.length=this.points.length,this.delay=0;for(var n=0;n<this.length;n++)this.points[n].z=this.points[n].z||0;for(var r=0;r<this.length-1;r++){var o=this.points[r],s=this.points[r+1];this.centers.push({x:(o.x+s.x)/2,y:(o.y+s.y)/2,z:(o.z+s.z)/2})}this.controls.push([this.points[0],this.points[0]]);for(var a=0;a<this.centers.length-1;a++){var u=this.points[a+1].x-(this.centers[a].x+this.centers[a+1].x)/2,l=this.points[a+1].y-(this.centers[a].y+this.centers[a+1].y)/2,h=this.points[a+1].z-(this.centers[a].y+this.centers[a+1].z)/2;this.controls.push([{x:(1-this.sharpness)*this.points[a+1].x+this.sharpness*(this.centers[a].x+u),y:(1-this.sharpness)*this.points[a+1].y+this.sharpness*(this.centers[a].y+l),z:(1-this.sharpness)*this.points[a+1].z+this.sharpness*(this.centers[a].z+h)},{x:(1-this.sharpness)*this.points[a+1].x+this.sharpness*(this.centers[a+1].x+u),y:(1-this.sharpness)*this.points[a+1].y+this.sharpness*(this.centers[a+1].y+l),z:(1-this.sharpness)*this.points[a+1].z+this.sharpness*(this.centers[a+1].z+h)}])}return this.controls.push([this.points[this.length-1],this.points[this.length-1]]),this.steps=this.cacheSteps(this.stepLength),this}),[{key:"cacheSteps",value:function(t){var e=[],n=this.pos(0);e.push(0);for(var r=0;r<this.duration;r+=10){var i=this.pos(r);Math.sqrt((i.x-n.x)*(i.x-n.x)+(i.y-n.y)*(i.y-n.y)+(i.z-n.z)*(i.z-n.z))>t&&(e.push(r),n=i)}return e}},{key:"vector",value:function(t){var e=this.pos(t+10),n=this.pos(t-10);return{angle:180*Math.atan2(e.y-n.y,e.x-n.x)/3.14,speed:Math.sqrt((n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y)+(n.z-e.z)*(n.z-e.z))}}},{key:"pos",value:function(t){var e=t-this.delay;e<0&&(e=0),e>this.duration&&(e=this.duration-1);var n=e/this.duration;if(n>=1)return this.points[this.length-1];var r=Math.floor((this.points.length-1)*n);return function(t,e,n,r,i){var o=function(t){var e=t*t,n=e*t;return[n,3*e*(1-t),3*t*(1-t)*(1-t),(1-t)*(1-t)*(1-t)]}(t),s={x:i.x*o[0]+r.x*o[1]+n.x*o[2]+e.x*o[3],y:i.y*o[0]+r.y*o[1]+n.y*o[2]+e.y*o[3],z:i.z*o[0]+r.z*o[1]+n.z*o[2]+e.z*o[3]};return s}((this.length-1)*n-r,this.points[r],this.controls[r][1],this.controls[r+1][0],this.points[r+1])}}])}();function Bt(t){for(var e,n,r=Q(t),i=0,o=1;o<r.length;)e=n||r[0],i+=((n=r[o])[0]-e[0])*(n[1]+e[1]),o++;return i>0}function Yt(t,e){for(var n=0,r=0,i=0,o=0,s=0,a=0,u=0,l=0,h=null,c=null,f=t[0],g=t[1],p=e.length;n<p;n++){r=0;var v=e[n].length-1,d=e[n];if((h=d[0])[0]!==d[v][0]&&h[1]!==d[v][1])throw new Error("First and last coordinates in a ring must be the same");for(s=h[0]-f,a=h[1]-g;r<v;r++)if(l=(c=d[r+1])[1]-g,a<0&&l<0||a>0&&l>0)a=l,s=(h=c)[0]-f;else{if(u=c[0]-t[0],l>0&&a<=0){if((o=s*l-u*a)>0)i+=1;else if(0===o)return 0}else if(a>0&&l<=0){if((o=s*l-u*a)<0)i+=1;else if(0===o)return 0}else if(0===l&&a<0){if(0===(o=s*l-u*a))return 0}else if(0===a&&l<0){if(0===(o=s*l-u*a))return 0}else if(0===a&&0===l){if(u<=0&&s>=0)return 0;if(s<=0&&u>=0)return 0}h=c,a=l,s=u}}return i%2!=0}function zt(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)throw new Error("point is required");if(!e)throw new Error("polygon is required");var r=K(t),i=rt(e),o=i.type,s=e.bbox,a=i.coordinates;if(s&&!1===function(t,e){return e[0]<=t[0]&&e[1]<=t[1]&&e[2]>=t[0]&&e[3]>=t[1]}(r,s))return!1;"Polygon"===o&&(a=[a]);for(var u=!1,l=0;l<a.length;++l){var h=Yt(r,a[l]);if(0===h)return!n.ignoreBoundary;h&&(u=!0)}return u}function jt(t,e){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=K(t),i=Q(e),o=0;o<i.length-1;o++){var s=!1;if(n.ignoreEndVertices&&(0===o&&(s="start"),o===i.length-2&&(s="end"),0===o&&o+1===i.length-1&&(s="both")),Xt(i[o],i[o+1],r,s,void 0===n.epsilon?null:n.epsilon))return!0}return!1}function Xt(t,e,n,r,i){var o=n[0],s=n[1],a=t[0],u=t[1],l=e[0],h=e[1],c=l-a,f=h-u,g=(n[0]-a)*f-(n[1]-u)*c;if(null!==i){if(Math.abs(g)>i)return!1}else if(0!==g)return!1;return Math.abs(c)===Math.abs(f)&&0===Math.abs(c)?!r&&(n[0]===t[0]&&n[1]===t[1]):r?"start"===r?Math.abs(c)>=Math.abs(f)?c>0?a<o&&o<=l:l<=o&&o<a:f>0?u<s&&s<=h:h<=s&&s<u:"end"===r?Math.abs(c)>=Math.abs(f)?c>0?a<=o&&o<l:l<o&&o<=a:f>0?u<=s&&s<h:h<s&&s<=u:"both"===r&&(Math.abs(c)>=Math.abs(f)?c>0?a<o&&o<l:l<o&&o<a:f>0?u<s&&s<h:h<s&&s<u):Math.abs(c)>=Math.abs(f)?c>0?a<=o&&o<=l:l<=o&&o<=a:f>0?u<=s&&s<=h:h<=s&&s<=u}function Ut(t,e){if("Feature"===t.type&&null===t.geometry)return!1;if("Feature"===e.type&&null===e.geometry)return!1;if(!Zt(Rt(t),Rt(e)))return!1;var n,r=a(rt(e).coordinates);try{for(r.s();!(n=r.n()).done;){var i,o=a(n.value);try{for(o.s();!(i=o.n()).done;){if(!zt(i.value,t))return!1}}catch(t){o.e(t)}finally{o.f()}}}catch(t){r.e(t)}finally{r.f()}return!0}function Zt(t,e){return!(t[0]>e[0])&&(!(t[2]<e[2])&&(!(t[1]>e[1])&&!(t[3]<e[3])))}function Ht(t,e){return t[0]===e[0]&&t[1]===e[1]}function Wt(t,e){return[(t[0]+e[0])/2,(t[1]+e[1])/2]}var Jt=function(){return s((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Kt;if(i(this,t),this.data=e,this.length=this.data.length,this.compare=n,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)}),[{key:"push",value:function(t){this.data.push(t),this.length++,this._up(this.length-1)}},{key:"pop",value:function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}}},{key:"peek",value:function(){return this.data[0]}},{key:"_up",value:function(t){for(var e=this.data,n=this.compare,r=e[t];t>0;){var i=t-1>>1,o=e[i];if(n(r,o)>=0)break;e[t]=o,t=i}e[t]=r}},{key:"_down",value:function(t){for(var e=this.data,n=this.compare,r=this.length>>1,i=e[t];t<r;){var o=1+(t<<1),s=e[o],a=o+1;if(a<this.length&&n(e[a],s)<0&&(o=a,s=e[a]),n(s,i)>=0)break;e[t]=s,t=o}e[t]=i}}])}();function Kt(t,e){return t<e?-1:t>e?1:0}function Qt(t,e){return t.p.x>e.p.x?1:t.p.x<e.p.x?-1:t.p.y!==e.p.y?t.p.y>e.p.y?1:-1:1}function $t(t,e){return t.rightSweepEvent.p.x>e.rightSweepEvent.p.x?1:t.rightSweepEvent.p.x<e.rightSweepEvent.p.x?-1:t.rightSweepEvent.p.y!==e.rightSweepEvent.p.y?t.rightSweepEvent.p.y<e.rightSweepEvent.p.y?1:-1:1}var te=function(){return s((function t(e,n,r,o){i(this,t),this.p={x:e[0],y:e[1]},this.featureId=n,this.ringId=r,this.eventId=o,this.otherEvent=null,this.isLeftEndpoint=null}),[{key:"isSamePoint",value:function(t){return this.p.x===t.p.x&&this.p.y===t.p.y}}])}();var ee=0,ne=0,re=0;function ie(t,e){var n="Feature"===t.type?t.geometry:t,r=n.coordinates;"Polygon"!==n.type&&"MultiLineString"!==n.type||(r=[r]),"LineString"===n.type&&(r=[[r]]);for(var i=0;i<r.length;i++)for(var o=0;o<r[i].length;o++){var s=r[i][o][0],a=null;ne+=1;for(var u=0;u<r[i][o].length-1;u++){a=r[i][o][u+1];var l=new te(s,ee,ne,re),h=new te(a,ee,ne,re+1);l.otherEvent=h,h.otherEvent=l,Qt(l,h)>0?(h.isLeftEndpoint=!0,l.isLeftEndpoint=!1):(l.isLeftEndpoint=!0,h.isLeftEndpoint=!1),e.push(l),e.push(h),s=a,re+=1}}ee+=1}var oe=s((function t(e){i(this,t),this.leftSweepEvent=e,this.rightSweepEvent=e.otherEvent}));function se(t,e){if(null===t||null===e)return!1;if(t.leftSweepEvent.ringId===e.leftSweepEvent.ringId&&(t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.leftSweepEvent)||t.rightSweepEvent.isSamePoint(e.rightSweepEvent)||t.leftSweepEvent.isSamePoint(e.leftSweepEvent)||t.leftSweepEvent.isSamePoint(e.rightSweepEvent)))return!1;var n=t.leftSweepEvent.p.x,r=t.leftSweepEvent.p.y,i=t.rightSweepEvent.p.x,o=t.rightSweepEvent.p.y,s=e.leftSweepEvent.p.x,a=e.leftSweepEvent.p.y,u=e.rightSweepEvent.p.x,l=e.rightSweepEvent.p.y,h=(l-a)*(i-n)-(u-s)*(o-r),c=(u-s)*(r-a)-(l-a)*(n-s),f=(i-n)*(r-a)-(o-r)*(n-s);if(0===h)return!1;var g=c/h,p=f/h;return g>=0&&g<=1&&p>=0&&p<=1&&[n+g*(i-n),r+g*(o-r)]}var ae=function(t,e){var n=new Jt([],Qt);return function(t,e){if("FeatureCollection"===t.type)for(var n=t.features,r=0;r<n.length;r++)ie(n[r],e);else ie(t,e)}(t,n),function(t,e){e=e||!1;for(var n=[],r=new Jt([],$t);t.length;){var i=t.pop();if(i.isLeftEndpoint){for(var o=new oe(i),s=0;s<r.data.length;s++){var a=r.data[s];if(!e||a.leftSweepEvent.featureId!==i.featureId){var u=se(o,a);!1!==u&&n.push(u)}}r.push(o)}else!1===i.isLeftEndpoint&&r.pop()}return n}(n,e)};function ue(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.removeDuplicates,i=void 0===r||r,o=n.ignoreSelfIntersections,s=void 0===o||o,a=[];"FeatureCollection"===t.type?a=a.concat(t.features):"Feature"===t.type?a.push(t):"LineString"!==t.type&&"Polygon"!==t.type&&"MultiLineString"!==t.type&&"MultiPolygon"!==t.type||a.push(b(t)),"FeatureCollection"===e.type?a=a.concat(e.features):"Feature"===e.type?a.push(e):"LineString"!==e.type&&"Polygon"!==e.type&&"MultiLineString"!==e.type&&"MultiPolygon"!==e.type||a.push(b(e));var u=ae(C(a),s),l=[];if(i){var h={};u.forEach((function(t){var e=t.join(",");h[e]||(h[e]=!0,l.push(t))}))}else l=u;return C(l.map((function(t){return I(t)})))}function le(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=rt(t);switch(e.properties||"Feature"!==t.type||(e.properties=t.properties),n.type){case"Polygon":return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=rt(t),r=n.coordinates,i=e.properties?e.properties:"Feature"===t.type?t.properties:{};return he(r,i)}(n,e);case"MultiPolygon":return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=rt(t),r=n.coordinates,i=e.properties?e.properties:"Feature"===t.type?t.properties:{},o=[];return r.forEach((function(t){o.push(he(t,i))})),C(o)}(n,e);default:throw new Error("invalid poly")}}function he(t,e){return t.length>1?T(t,e):L(t[0],e)}function ce(t,e){var n=rt(t),r=rt(e),i=n.type,o=r.type;switch(i){case"MultiPoint":switch(o){case"LineString":return fe(n,r);case"Polygon":return pe(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}case"LineString":switch(o){case"MultiPoint":return fe(r,n);case"LineString":return function(t,e){if(ue(t,e).features.length>0)for(var n=0;n<t.coordinates.length-1;n++)for(var r=0;r<e.coordinates.length-1;r++){var i=!0;if(0!==r&&r!==e.coordinates.length-2||(i=!1),ve(t.coordinates[n],t.coordinates[n+1],e.coordinates[r],i))return!0}return!1}(n,r);case"Polygon":return ge(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}case"Polygon":switch(o){case"MultiPoint":return pe(r,n);case"LineString":return ge(r,n);default:throw new Error("feature2 "+o+" geometry not supported")}default:throw new Error("feature1 "+i+" geometry not supported")}}function fe(t,e){for(var n=!1,r=!1,i=t.coordinates.length,o=0;o<i&&!n&&!r;){for(var s=0;s<e.coordinates.length-1;s++){var a=!0;0!==s&&s!==e.coordinates.length-2||(a=!1),ve(e.coordinates[s],e.coordinates[s+1],t.coordinates[o],a)?n=!0:r=!0}o++}return n&&r}function ge(t,e){return ue(t,le(e)).features.length>0}function pe(t,e){for(var n=!1,r=!1,i=t.coordinates.length,o=0;o<i&&(!n||!r);o++)zt(I(t.coordinates[o]),e)?n=!0:r=!0;return r&&n}function ve(t,e,n,r){var i=n[0]-t[0],o=n[1]-t[1],s=e[0]-t[0],a=e[1]-t[1];return 0==i*a-o*s&&(r?Math.abs(s)>=Math.abs(a)?s>0?t[0]<=n[0]&&n[0]<=e[0]:e[0]<=n[0]&&n[0]<=t[0]:a>0?t[1]<=n[1]&&n[1]<=e[1]:e[1]<=n[1]&&n[1]<=t[1]:Math.abs(s)>=Math.abs(a)?s>0?t[0]<n[0]&&n[0]<e[0]:e[0]<n[0]&&n[0]<t[0]:a>0?t[1]<n[1]&&n[1]<e[1]:e[1]<n[1]&&n[1]<t[1])}function de(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{ignoreSelfIntersections:!0}).ignoreSelfIntersections,r=void 0===n||n,i=!0;return xt(t,(function(t){xt(e,(function(e){if(!1===i)return!1;i=function(t,e,n){switch(t.type){case"Point":switch(e.type){case"Point":return r=t.coordinates,i=e.coordinates,!(r[0]===i[0]&&r[1]===i[1]);case"LineString":return!ye(e,t);case"Polygon":return!zt(t,e)}break;case"LineString":switch(e.type){case"Point":return!ye(t,e);case"LineString":return!function(t,e,n){var r=ue(t,e,{ignoreSelfIntersections:n});if(r.features.length>0)return!0;return!1}(t,e,n);case"Polygon":return!me(e,t,n)}break;case"Polygon":switch(e.type){case"Point":return!zt(e,t);case"LineString":return!me(t,e,n);case"Polygon":return!function(t,e,n){var r,i=a(t.coordinates[0]);try{for(i.s();!(r=i.n()).done;){if(zt(r.value,e))return!0}}catch(t){i.e(t)}finally{i.f()}var o,s=a(e.coordinates[0]);try{for(s.s();!(o=s.n()).done;){if(zt(o.value,t))return!0}}catch(t){s.e(t)}finally{s.f()}var u=ue(le(t),le(e),{ignoreSelfIntersections:n});if(u.features.length>0)return!0;return!1}(e,t,n)}}var r,i;return!1}(t.geometry,e.geometry,r)}))})),i}function ye(t,e){for(var n=0;n<t.coordinates.length-1;n++)if(_e(t.coordinates[n],t.coordinates[n+1],e.coordinates))return!0;return!1}function me(t,e,n){var r,i=a(e.coordinates);try{for(i.s();!(r=i.n()).done;){if(zt(r.value,t))return!0}}catch(t){i.e(t)}finally{i.f()}return ue(e,le(t),{ignoreSelfIntersections:n}).features.length>0}function _e(t,e,n){var r=n[0]-t[0],i=n[1]-t[1],o=e[0]-t[0],s=e[1]-t[1];return 0==r*s-i*o&&(Math.abs(o)>=Math.abs(s)?o>0?t[0]<=n[0]&&n[0]<=e[0]:e[0]<=n[0]&&n[0]<=t[0]:s>0?t[1]<=n[1]&&n[1]<=e[1]:e[1]<=n[1]&&n[1]<=t[1])}var xe=Object.defineProperty,Ee=function(t,e){return xe(t,"name",{value:e,configurable:!0})},ke=function(){return s((function t(e){var n,r,o;i(this,t),this.direction=!1,this.compareProperties=!0,this.precision=Math.pow(10,-(null!=(n=null==e?void 0:e.precision)?n:17)),this.direction=null!=(r=null==e?void 0:e.direction)&&r,this.compareProperties=null==(o=null==e?void 0:e.compareProperties)||o}),[{key:"compare",value:function(t,e){var n=this;if(t.type!==e.type)return!1;if(!we(t,e))return!1;switch(t.type){case"Point":return this.compareCoord(t.coordinates,e.coordinates);case"LineString":return this.compareLine(t.coordinates,e.coordinates);case"Polygon":return this.comparePolygon(t,e);case"GeometryCollection":return this.compareGeometryCollection(t,e);case"Feature":return this.compareFeature(t,e);case"FeatureCollection":return this.compareFeatureCollection(t,e);default:if(t.type.startsWith("Multi")){var r=Ie(t),i=Ie(e);return r.every((function(t){return i.some((function(e){return n.compare(t,e)}))}))}}return!1}},{key:"compareCoord",value:function(t,e){var n=this;return t.length===e.length&&t.every((function(t,r){return Math.abs(t-e[r])<n.precision}))}},{key:"compareLine",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!we(t,e))return!1;var i=t,o=e;if(r&&!this.compareCoord(i[0],o[0])){var s=this.fixStartIndex(o,i);if(!s)return!1;o=s}var a=this.compareCoord(i[n],o[n]);return this.direction||a?this.comparePath(i,o):!!this.compareCoord(i[n],o[o.length-(1+n)])&&this.comparePath(i.slice().reverse(),o)}},{key:"fixStartIndex",value:function(t,e){for(var n,r=-1,i=0;i<t.length;i++)if(this.compareCoord(t[i],e[0])){r=i;break}return r>=0&&(n=[].concat(t.slice(r,t.length),t.slice(1,r+1))),n}},{key:"comparePath",value:function(t,e){var n=this;return t.every((function(t,r){return n.compareCoord(t,e[r])}))}},{key:"comparePolygon",value:function(t,e){var n=this;if(this.compareLine(t.coordinates[0],e.coordinates[0],1,!0)){var r=t.coordinates.slice(1,t.coordinates.length),i=e.coordinates.slice(1,e.coordinates.length);return r.every((function(t){return i.some((function(e){return n.compareLine(t,e,1,!0)}))}))}return!1}},{key:"compareGeometryCollection",value:function(t,e){var n=this;return we(t.geometries,e.geometries)&&this.compareBBox(t,e)&&t.geometries.every((function(t,r){return n.compare(t,e.geometries[r])}))}},{key:"compareFeature",value:function(t,e){return t.id===e.id&&(!this.compareProperties||Se(t.properties,e.properties))&&this.compareBBox(t,e)&&this.compare(t.geometry,e.geometry)}},{key:"compareFeatureCollection",value:function(t,e){var n=this;return we(t.features,e.features)&&this.compareBBox(t,e)&&t.features.every((function(t,r){return n.compare(t,e.features[r])}))}},{key:"compareBBox",value:function(t,e){return Boolean(!t.bbox&&!e.bbox)||!(!t.bbox||!e.bbox)&&this.compareCoord(t.bbox,e.bbox)}}])}();Ee(ke,"GeojsonEquality");var be=ke;function we(t,e){return t.coordinates?t.coordinates.length===e.coordinates.length:t.length===e.length}function Ie(t){return t.coordinates.map((function(e){return{type:t.type.replace("Multi",""),coordinates:e}}))}function Ne(t,e,n){return new be(n).compare(t,e)}function Se(t,e){if(null===t&&null===e)return!0;if(null===t||null===e)return!1;var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var i=0,o=n;i<o.length;i++){var s=o[i],a=t[s],u=e[s],l=Me(a)&&Me(u);if(l&&!Se(a,u)||!l&&a!==u)return!1}return!0}Ee(we,"sameLength"),Ee(Ie,"explode"),Ee(Ne,"geojsonEquality"),Ee(Se,"equal");var Me=Ee((function(t){return null!=t&&"object"===m(t)}),"isObject");function Le(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="object"===m(e)?e.mutate:e;if(!t)throw new Error("geojson is required");var r=it(t),i=[];switch(r){case"LineString":i=Pe(t,r);break;case"MultiLineString":case"Polygon":Q(t).forEach((function(t){i.push(Pe(t,r))}));break;case"MultiPolygon":Q(t).forEach((function(t){var e=[];t.forEach((function(t){e.push(Pe(t,r))})),i.push(e)}));break;case"Point":return t;case"MultiPoint":var o={};Q(t).forEach((function(t){var e=t.join("-");Object.prototype.hasOwnProperty.call(o,e)||(i.push(t),o[e]=!0)}));break;default:throw new Error(r+" geometry not supported")}return t.coordinates?!0===n?(t.coordinates=i,t):{type:r,coordinates:i}:!0===n?(t.geometry.coordinates=i,t):b({type:r,coordinates:i},t.properties,{bbox:t.bbox,id:t.id})}function Pe(t,e){var n=Q(t);if(2===n.length&&!Ce(n[0],n[1]))return n;var r=[],i=n.length-1,o=r.length;r.push(n[0]);for(var s=1;s<i;s++){var a=r[r.length-1];n[s][0]===a[0]&&n[s][1]===a[1]||(r.push(n[s]),(o=r.length)>2&&Te(r[o-3],r[o-1],r[o-2])&&r.splice(r.length-2,1))}if(r.push(n[n.length-1]),o=r.length,("Polygon"===e||"MultiPolygon"===e)&&Ce(n[0],n[n.length-1])&&o<4)throw new Error("invalid polygon");return"LineString"===e&&o<3||Te(r[o-3],r[o-1],r[o-2])&&r.splice(r.length-2,1),r}function Ce(t,e){return t[0]===e[0]&&t[1]===e[1]}function Te(t,e,n){var r=n[0],i=n[1],o=t[0],s=t[1],a=e[0],u=e[1],l=a-o,h=u-s;return 0===(r-o)*h-(i-s)*l&&(Math.abs(l)>=Math.abs(h)?l>0?o<=r&&r<=a:a<=r&&r<=o:h>0?s<=i&&i<=u:u<=i&&i<=s)}function Oe(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).ignoreSelfIntersections,r=void 0===n||n,i=!1;return xt(t,(function(t){xt(e,(function(e){if(!0===i)return!0;i=!de(t.geometry,e.geometry,{ignoreSelfIntersections:r})}))})),i}function Re(t,e,n,r,i){Ae(t,e,n||0,r||t.length-1,i||Fe)}function Ae(t,e,n,r,i){for(;r>n;){if(r-n>600){var o=r-n+1,s=e-n+1,a=Math.log(o),u=.5*Math.exp(2*a/3),l=.5*Math.sqrt(a*u*(o-u)/o)*(s-o/2<0?-1:1);Ae(t,e,Math.max(n,Math.floor(e-s*u/o+l)),Math.min(r,Math.floor(e+(o-s)*u/o+l)),i)}var h=t[e],c=n,f=r;for(De(t,n,e),i(t[r],h)>0&&De(t,n,r);c<f;){for(De(t,c,f),c++,f--;i(t[c],h)<0;)c++;for(;i(t[f],h)>0;)f--}0===i(t[n],h)?De(t,n,f):De(t,++f,r),f<=e&&(n=f+1),e<=f&&(r=f-1)}}function De(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function Fe(t,e){return t<e?-1:t>e?1:0}var qe=function(){return s((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:9;i(this,t),this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}),[{key:"all",value:function(){return this._all(this.data,[])}},{key:"search",value:function(t){var e=this.data,n=[];if(!He(t,e))return n;for(var r=this.toBBox,i=[];e;){for(var o=0;o<e.children.length;o++){var s=e.children[o],a=e.leaf?r(s):s;He(t,a)&&(e.leaf?n.push(s):Ze(t,a)?this._all(s,n):i.push(s))}e=i.pop()}return n}},{key:"collides",value:function(t){var e=this.data;if(!He(t,e))return!1;for(var n=[];e;){for(var r=0;r<e.children.length;r++){var i=e.children[r],o=e.leaf?this.toBBox(i):i;if(He(t,o)){if(e.leaf||Ze(t,o))return!0;n.push(i)}}e=n.pop()}return!1}},{key:"load",value:function(t){if(!t||!t.length)return this;if(t.length<this._minEntries){for(var e=0;e<t.length;e++)this.insert(t[e]);return this}var n=this._build(t.slice(),0,t.length-1,0);if(this.data.children.length)if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}else this.data=n;return this}},{key:"insert",value:function(t){return t&&this._insert(t,this.data.height-1),this}},{key:"clear",value:function(){return this.data=We([]),this}},{key:"remove",value:function(t,e){if(!t)return this;for(var n,r,i,o=this.data,s=this.toBBox(t),a=[],u=[];o||a.length;){if(o||(o=a.pop(),r=a[a.length-1],n=u.pop(),i=!0),o.leaf){var l=Ve(t,o.children,e);if(-1!==l)return o.children.splice(l,1),a.push(o),this._condense(a),this}i||o.leaf||!Ze(o,s)?r?(n++,o=r.children[n],i=!1):o=null:(a.push(o),u.push(n),n=0,r=o,o=o.children[0])}return this}},{key:"toBBox",value:function(t){return t}},{key:"compareMinX",value:function(t,e){return t.minX-e.minX}},{key:"compareMinY",value:function(t,e){return t.minY-e.minY}},{key:"toJSON",value:function(){return this.data}},{key:"fromJSON",value:function(t){return this.data=t,this}},{key:"_all",value:function(t,e){for(var n=[];t;)t.leaf?e.push.apply(e,d(t.children)):n.push.apply(n,d(t.children)),t=n.pop();return e}},{key:"_build",value:function(t,e,n,r){var i,o=n-e+1,s=this._maxEntries;if(o<=s)return Ge(i=We(t.slice(e,n+1)),this.toBBox),i;r||(r=Math.ceil(Math.log(o)/Math.log(s)),s=Math.ceil(o/Math.pow(s,r-1))),(i=We([])).leaf=!1,i.height=r;var a=Math.ceil(o/s),u=a*Math.ceil(Math.sqrt(s));Je(t,e,n,u,this.compareMinX);for(var l=e;l<=n;l+=u){var h=Math.min(l+u-1,n);Je(t,l,h,a,this.compareMinY);for(var c=l;c<=h;c+=a){var f=Math.min(c+a-1,h);i.children.push(this._build(t,c,f,r-1))}}return Ge(i,this.toBBox),i}},{key:"_chooseSubtree",value:function(t,e,n,r){for(;r.push(e),!e.leaf&&r.length-1!==n;){for(var i=1/0,o=1/0,s=void 0,a=0;a<e.children.length;a++){var u=e.children[a],l=Xe(u),h=(c=t,f=u,(Math.max(f.maxX,c.maxX)-Math.min(f.minX,c.minX))*(Math.max(f.maxY,c.maxY)-Math.min(f.minY,c.minY))-l);h<o?(o=h,i=l<i?l:i,s=u):h===o&&l<i&&(i=l,s=u)}e=s||e.children[0]}var c,f;return e}},{key:"_insert",value:function(t,e,n){var r=n?t:this.toBBox(t),i=[],o=this._chooseSubtree(r,this.data,e,i);for(o.children.push(t),Ye(o,r);e>=0&&i[e].children.length>this._maxEntries;)this._split(i,e),e--;this._adjustParentBBoxes(r,i,e)}},{key:"_split",value:function(t,e){var n=t[e],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);var o=this._chooseSplitIndex(n,i,r),s=We(n.children.splice(o,n.children.length-o));s.height=n.height,s.leaf=n.leaf,Ge(n,this.toBBox),Ge(s,this.toBBox),e?t[e-1].children.push(s):this._splitRoot(n,s)}},{key:"_splitRoot",value:function(t,e){this.data=We([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Ge(this.data,this.toBBox)}},{key:"_chooseSplitIndex",value:function(t,e,n){for(var r,i,o,s,a,u,l,h=1/0,c=1/0,f=e;f<=n-e;f++){var g=Be(t,0,f,this.toBBox),p=Be(t,f,n,this.toBBox),v=(i=g,o=p,s=void 0,a=void 0,u=void 0,l=void 0,s=Math.max(i.minX,o.minX),a=Math.max(i.minY,o.minY),u=Math.min(i.maxX,o.maxX),l=Math.min(i.maxY,o.maxY),Math.max(0,u-s)*Math.max(0,l-a)),d=Xe(g)+Xe(p);v<h?(h=v,r=f,c=d<c?d:c):v===h&&d<c&&(c=d,r=f)}return r||n-e}},{key:"_chooseSplitAxis",value:function(t,e,n){var r=t.leaf?this.compareMinX:ze,i=t.leaf?this.compareMinY:je;this._allDistMargin(t,e,n,r)<this._allDistMargin(t,e,n,i)&&t.children.sort(r)}},{key:"_allDistMargin",value:function(t,e,n,r){t.children.sort(r);for(var i=this.toBBox,o=Be(t,0,e,i),s=Be(t,n-e,n,i),a=Ue(o)+Ue(s),u=e;u<n-e;u++){var l=t.children[u];Ye(o,t.leaf?i(l):l),a+=Ue(o)}for(var h=n-e-1;h>=e;h--){var c=t.children[h];Ye(s,t.leaf?i(c):c),a+=Ue(s)}return a}},{key:"_adjustParentBBoxes",value:function(t,e,n){for(var r=n;r>=0;r--)Ye(e[r],t)}},{key:"_condense",value:function(t){for(var e,n=t.length-1;n>=0;n--)0===t[n].children.length?n>0?(e=t[n-1].children).splice(e.indexOf(t[n]),1):this.clear():Ge(t[n],this.toBBox)}}])}();function Ve(t,e,n){if(!n)return e.indexOf(t);for(var r=0;r<e.length;r++)if(n(t,e[r]))return r;return-1}function Ge(t,e){Be(t,0,t.children.length,e,t)}function Be(t,e,n,r,i){i||(i=We(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(var o=e;o<n;o++){var s=t.children[o];Ye(i,t.leaf?r(s):s)}return i}function Ye(t,e){return t.minX=Math.min(t.minX,e.minX),t.minY=Math.min(t.minY,e.minY),t.maxX=Math.max(t.maxX,e.maxX),t.maxY=Math.max(t.maxY,e.maxY),t}function ze(t,e){return t.minX-e.minX}function je(t,e){return t.minY-e.minY}function Xe(t){return(t.maxX-t.minX)*(t.maxY-t.minY)}function Ue(t){return t.maxX-t.minX+(t.maxY-t.minY)}function Ze(t,e){return t.minX<=e.minX&&t.minY<=e.minY&&e.maxX<=t.maxX&&e.maxY<=t.maxY}function He(t,e){return e.minX<=t.maxX&&e.minY<=t.maxY&&e.maxX>=t.minX&&e.maxY>=t.minY}function We(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Je(t,e,n,r,i){for(var o=[e,n];o.length;)if(!((n=o.pop())-(e=o.pop())<=r)){var s=e+Math.ceil((n-e)/r/2)*r;Re(t,s,e,n,i),o.push(e,s,s,n)}}var Ke=Object.freeze({__proto__:null,default:qe});function Qe(t){var e=new qe(t);return e.insert=function(t){if("Feature"!==t.type)throw new Error("invalid feature");return t.bbox=t.bbox?t.bbox:Rt(t),qe.prototype.insert.call(this,t)},e.load=function(t){var e=[];return Array.isArray(t)?t.forEach((function(t){if("Feature"!==t.type)throw new Error("invalid features");t.bbox=t.bbox?t.bbox:Rt(t),e.push(t)})):vt(t,(function(t){if("Feature"!==t.type)throw new Error("invalid features");t.bbox=t.bbox?t.bbox:Rt(t),e.push(t)})),qe.prototype.load.call(this,e)},e.remove=function(t,e){if("Feature"!==t.type)throw new Error("invalid feature");return t.bbox=t.bbox?t.bbox:Rt(t),qe.prototype.remove.call(this,t,e)},e.clear=function(){return qe.prototype.clear.call(this)},e.search=function(t){return C(qe.prototype.search.call(this,this.toBBox(t)))},e.collides=function(t){return qe.prototype.collides.call(this,this.toBBox(t))},e.all=function(){return C(qe.prototype.all.call(this))},e.toJSON=function(){return qe.prototype.toJSON.call(this)},e.fromJSON=function(t){return qe.prototype.fromJSON.call(this,t)},e.toBBox=function(t){var e;if(t.bbox)e=t.bbox;else if(Array.isArray(t)&&4===t.length)e=t;else if(Array.isArray(t)&&6===t.length)e=[t[0],t[1],t[3],t[4]];else if("Feature"===t.type)e=Rt(t);else{if("FeatureCollection"!==t.type)throw new Error("invalid geojson");e=Rt(t)}return{minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]}},e}function $e(t){if(!t)throw new Error("geojson is required");var e=[];return xt(t,(function(t){!function(t,e){var n=[],r=t.geometry;if(null!==r){switch(r.type){case"Polygon":n=Q(r);break;case"LineString":n=[Q(r)]}n.forEach((function(n){var r=function(t,e){var n=[];return t.reduce((function(t,r){var i=L([t,r],e);return i.bbox=function(t,e){var n=t[0],r=t[1],i=e[0],o=e[1],s=n<i?n:i,a=r<o?r:o,u=n>i?n:i,l=r>o?r:o;return[s,a,u,l]}(t,r),n.push(i),r})),n}(n,t.properties);r.forEach((function(t){t.id=e.length,e.push(t)}))}))}}(t,e)})),C(e)}var tn,en,nn=Object.defineProperty,rn=Object.defineProperties,on=Object.getOwnPropertyDescriptors,sn=Object.getOwnPropertySymbols,an=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable,ln=function(t,e,n){return e in t?nn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},hn=function(t,e){for(var n in e||(e={}))an.call(e,n)&&ln(t,n,e[n]);if(sn){var r,i=a(sn(e));try{for(i.s();!(r=i.n()).done;){n=r.value;un.call(e,n)&&ln(t,n,e[n])}}catch(t){i.e(t)}finally{i.f()}}return t},cn=function(t,e){return rn(t,on(e))};function fn(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t||!e)throw new Error("lines and pt are required arguments");var r=K(e),i=I([1/0,1/0],{dist:1/0,index:-1,multiFeatureIndex:-1,location:-1}),o=0;return xt(t,(function(t,s,a){for(var u=Q(t),l=0;l<u.length-1;l++){var h=I(u[l]);h.properties.dist=ut(e,h,n);var c=K(h),f=I(u[l+1]);f.properties.dist=ut(e,f,n);var g=K(f),p=ut(h,f,n),d=void 0,y=void 0;if(c[0]===r[0]&&c[1]===r[1]){var m=[c,void 0,!1];d=m[0],y=m[2]}else if(g[0]===r[0]&&g[1]===r[1]){var _=[g,void 0,!0];d=_[0],y=_[2]}else{var x=v(yn(h.geometry.coordinates,f.geometry.coordinates,K(e)),3);d=x[0],y=x[2]}var E=void 0;d&&(E=I(d,{dist:ut(e,d,n),multiFeatureIndex:a,location:o+ut(h,d,n)})),E&&E.properties.dist<i.properties.dist&&(i=cn(hn({},E),{properties:cn(hn({},E.properties),{index:y?l+1:l})})),o+=p}})),i}function gn(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2))}function pn(t,e){var n=function(t,e){var n=v(t,3),r=n[0],i=n[1],o=n[2],s=v(e,3);return r*s[0]+i*s[1]+o*s[2]}(t,e)/(gn(t)*gn(e));return Math.acos(Math.min(Math.max(n,-1),1))}function vn(t){var e=z(t[1]),n=z(t[0]);return[Math.cos(e)*Math.cos(n),Math.cos(e)*Math.sin(n),Math.sin(e)]}function dn(t){var e=v(t,3),n=e[0],r=e[1],i=e[2],o=Y(Math.asin(i));return[Y(Math.atan2(r,n)),o]}function yn(t,e,n){var r,i,o,s,a,u,l,h,c,f,g=vn(t),p=vn(e),d=v(vn(n),3),y=d[0],m=d[1],_=d[2],x=(r=p,i=v(g,3),o=i[0],s=i[1],a=i[2],u=v(r,3),l=u[0],h=u[1],c=u[2],[s*c-a*h,a*l-o*c,o*h-s*l]),E=v(x,3),k=E[0],b=E[1],w=E[2],I=b*_-w*m,N=w*y-k*_,S=k*m-b*y,M=S*b-N*w,L=I*w-S*k,P=N*k-I*b,C=1/Math.sqrt(Math.pow(M,2)+Math.pow(L,2)+Math.pow(P,2)),T=[M*C,L*C,P*C],O=[-1*M*C,-1*L*C,-1*P*C],R=pn(g,p),A=pn(g,T),D=pn(p,T),F=pn(g,O),q=pn(p,O);return pn(g,f=A<F&&A<q||D<F&&D<q?T:O)>R||pn(p,f)>R?ut(dn(f),dn(g))<=ut(dn(f),dn(p))?[dn(g),!0,!1]:[dn(p),!1,!0]:[dn(f),!1,!1]}function mn(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function _n(t){if(t.__esModule)return t;var e=t.default;if("function"==typeof e){var n=function t(){return this instanceof t?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach((function(e){var r=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,r.get?r:{enumerable:!0,get:function(){return t[e]}})})),n}var xn=(en||(en=1,tn=function t(e,n){if(e===n)return!0;if(e&&n&&"object"==m(e)&&"object"==m(n)){if(e.constructor!==n.constructor)return!1;var r,i,o;if(Array.isArray(e)){if((r=e.length)!=n.length)return!1;for(i=r;0!=i--;)if(!t(e[i],n[i]))return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===n.toString();if((r=(o=Object.keys(e)).length)!==Object.keys(n).length)return!1;for(i=r;0!=i--;)if(!Object.prototype.hasOwnProperty.call(n,o[i]))return!1;for(i=r;0!=i--;){var s=o[i];if(!t(e[s],n[s]))return!1}return!0}return e!=e&&n!=n}),tn),En=mn(xn);function kn(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!Z(n=n||{}))throw new Error("options is invalid");var r,i=n.tolerance||0,o=[],s=Qe(),a=$e(t);s.load(a);var u=[];return kt(e,(function(t){var e=!1;t&&(vt(s.search(t),(function(n){if(!1===e){var o=Q(t).sort(),s=Q(n).sort();if(En(o,s))e=!0,r=r?bn(r,t)||r:t;else if(0===i?jt(o[0],n)&&jt(o[1],n):fn(n,o[0]).properties.dist<=i&&fn(n,o[1]).properties.dist<=i)e=!0,r=r?bn(r,t)||r:t;else if(0===i?jt(s[0],t)&&jt(s[1],t):fn(t,s[0]).properties.dist<=i&&fn(t,s[1]).properties.dist<=i)if(r){var a=bn(r,n);a?r=a:u.push(n)}else r=n}})),!1===e&&r&&(o.push(r),u.length&&(o=o.concat(u),u=[]),r=void 0))})),r&&o.push(r),C(o)}function bn(t,e){var n=Q(e),r=Q(t),i=r[0],o=r[r.length-1],s=t.geometry.coordinates;if(En(n[0],i))s.unshift(n[1]);else if(En(n[0],o))s.push(n[1]);else if(En(n[1],i))s.unshift(n[0]);else{if(!En(n[1],o))return;s.push(n[0])}return t}function wn(t,e){var n=G(lt(t[0],t[1])),r=G(lt(e[0],e[1]));return n===r||(r-n)%180==0}function In(t,e){if(t.geometry&&t.geometry.type)return t.geometry.type;if(t.type)return t.type;throw new Error("Invalid GeoJSON object for "+e)}function Nn(t,e){return!!Sn(e.coordinates[0],t.coordinates)||!!Sn(e.coordinates[e.coordinates.length-1],t.coordinates)}function Sn(t,e){return t[0]===e[0]&&t[1]===e[1]}function Mn(t){return t[0][0]===t[t.length-1][0]&&t[0][1]===t[t.length-1][1]}function Ln(t){for(var e=0;e<t.length-1;e++)for(var n=t[e],r=e+1;r<t.length-2;r++){if(jt(n,L([t[r],t[r+1]])))return!0}return!1}function Pn(t,e,n){for(var r=S(t),i=n+1;i<e.length;i++)if(!de(r,S(e[i]))&&ce(r,L(e[i][0])))return!1;return!0}function Cn(t,e){var n=rt(t),r=rt(e),i=n.type,o=r.type;switch(i){case"Point":switch(o){case"MultiPoint":return function(t,e){var n,r=!1;for(n=0;n<e.coordinates.length;n++)if(On(e.coordinates[n],t.coordinates)){r=!0;break}return r}(n,r);case"LineString":return jt(n,r,{ignoreEndVertices:!0});case"Polygon":case"MultiPolygon":return zt(n,r,{ignoreBoundary:!0});default:throw new Error("feature2 "+o+" geometry not supported")}case"MultiPoint":switch(o){case"MultiPoint":return function(t,e){for(var n=0;n<t.coordinates.length;n++){for(var r=!1,i=0;i<e.coordinates.length;i++)On(t.coordinates[n],e.coordinates[i])&&(r=!0);if(!r)return!1}return!0}(n,r);case"LineString":return function(t,e){for(var n=!1,r=0;r<t.coordinates.length;r++){if(!jt(t.coordinates[r],e))return!1;n||(n=jt(t.coordinates[r],e,{ignoreEndVertices:!0}))}return n}(n,r);case"Polygon":case"MultiPolygon":return function(t,e){for(var n=!0,r=!1,i=0;i<t.coordinates.length;i++){if(!(r=zt(t.coordinates[i],e))){n=!1;break}r=zt(t.coordinates[i],e,{ignoreBoundary:!0})}return n&&r}(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}case"LineString":switch(o){case"LineString":return function(t,e){for(var n=0;n<t.coordinates.length;n++)if(!jt(t.coordinates[n],e))return!1;return!0}(n,r);case"Polygon":case"MultiPolygon":return function(t,e){var n=Rt(e),r=Rt(t);if(!Tn(n,r))return!1;for(var i=!1,o=0;o<t.coordinates.length;o++){if(!zt(t.coordinates[o],e))return!1;if(i||(i=zt(t.coordinates[o],e,{ignoreBoundary:!0})),!i&&o<t.coordinates.length-1)i=zt(Rn(t.coordinates[o],t.coordinates[o+1]),e,{ignoreBoundary:!0})}return i}(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}case"Polygon":switch(o){case"Polygon":case"MultiPolygon":return function(t,e){var n=Rt(t);if(!Tn(Rt(e),n))return!1;for(var r=0;r<t.coordinates[0].length;r++)if(!zt(t.coordinates[0][r],e))return!1;return!0}(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}default:throw new Error("feature1 "+i+" geometry not supported")}}function Tn(t,e){return!(t[0]>e[0])&&(!(t[2]<e[2])&&(!(t[1]>e[1])&&!(t[3]<e[3])))}function On(t,e){return t[0]===e[0]&&t[1]===e[1]}function Rn(t,e){return[(t[0]+e[0])/2,(t[1]+e[1])/2]}function An(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Rt(t);return I([(n[0]+n[2])/2,(n[1]+n[3])/2],e.properties,e)}var Dn,Fn={exports:{}};var qn=(Dn||(Dn=1,function(t,e){t.exports=function(){function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function s(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function a(t,e,n){return a=s()?Reflect.construct:function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&o(i,n.prototype),i},a.apply(null,arguments)}function u(t){var e="function"==typeof Map?new Map:void 0;return u=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return a(t,arguments,i(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),o(r,t)},u(t)}function l(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function h(t,e){if(e&&("object"==m(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return l(t)}function c(t){var e=s();return function(){var n,r=i(t);if(e){var o=i(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return h(this,n)}}function f(t,e,n){return f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=i(t)););return t}(t,e);if(r){var o=Object.getOwnPropertyDescriptor(r,e);return o.get?o.get.call(n):o.value}},f(t,e,n||t)}function g(t){return function(t){if(Array.isArray(t))return v(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||p(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(t,e){if(t){if("string"==typeof t)return v(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(t,e):void 0}}function v(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function d(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=p(t))||e){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){a=!0,o=t},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw o}}}}var y=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getEndCapStyle",value:function(){return this._endCapStyle}},{key:"isSingleSided",value:function(){return this._isSingleSided}},{key:"setQuadrantSegments",value:function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=e.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=e.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==e.JOIN_ROUND&&(this._quadrantSegments=e.DEFAULT_QUADRANT_SEGMENTS)}},{key:"getJoinStyle",value:function(){return this._joinStyle}},{key:"setJoinStyle",value:function(t){this._joinStyle=t}},{key:"setSimplifyFactor",value:function(t){this._simplifyFactor=t<0?0:t}},{key:"getSimplifyFactor",value:function(){return this._simplifyFactor}},{key:"getQuadrantSegments",value:function(){return this._quadrantSegments}},{key:"setEndCapStyle",value:function(t){this._endCapStyle=t}},{key:"getMitreLimit",value:function(){return this._mitreLimit}},{key:"setMitreLimit",value:function(t){this._mitreLimit=t}},{key:"setSingleSided",value:function(t){this._isSingleSided=t}}],[{key:"constructor_",value:function(){if(this._quadrantSegments=e.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=e.CAP_ROUND,this._joinStyle=e.JOIN_ROUND,this._mitreLimit=e.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=e.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setQuadrantSegments(t)}else if(2===arguments.length){var n=arguments[0],r=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(r)}else if(4===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this.setQuadrantSegments(i),this.setEndCapStyle(o),this.setJoinStyle(s),this.setMitreLimit(a)}}},{key:"bufferDistanceError",value:function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)}}]),e}();y.CAP_ROUND=1,y.CAP_FLAT=2,y.CAP_SQUARE=3,y.JOIN_ROUND=1,y.JOIN_MITRE=2,y.JOIN_BEVEL=3,y.DEFAULT_QUADRANT_SEGMENTS=8,y.DEFAULT_MITRE_LIMIT=5,y.DEFAULT_SIMPLIFY_FACTOR=.01;var _=function(e){r(o,e);var i=c(o);function o(e){var n;return t(this,o),(n=i.call(this,e)).name=Object.keys({Exception:o})[0],n}return n(o,[{key:"toString",value:function(){return this.message}}]),o}(u(Error)),x=function(e){r(i,e);var n=c(i);function i(e){var r;return t(this,i),(r=n.call(this,e)).name=Object.keys({IllegalArgumentException:i})[0],r}return i}(_),E=function(){function e(){t(this,e)}return n(e,[{key:"filter",value:function(t){}}]),e}();function k(){}function b(){}function w(){}var I,N,S,M,L,P,C,T,O=function(){function e(){t(this,e)}return n(e,null,[{key:"equalsWithTolerance",value:function(t,e,n){return Math.abs(t-e)<=n}}]),e}(),R=function(){function e(n,r){t(this,e),this.low=r||0,this.high=n||0}return n(e,null,[{key:"toBinaryString",value:function(t){var e,n="";for(e=2147483648;e>0;e>>>=1)n+=(t.high&e)===e?"1":"0";for(e=2147483648;e>0;e>>>=1)n+=(t.low&e)===e?"1":"0";return n}}]),e}();function A(){}function D(){}A.NaN=NaN,A.isNaN=function(t){return Number.isNaN(t)},A.isInfinite=function(t){return!Number.isFinite(t)},A.MAX_VALUE=Number.MAX_VALUE,A.POSITIVE_INFINITY=Number.POSITIVE_INFINITY,A.NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,"function"==typeof Float64Array&&"function"==typeof Int32Array?(P=2146435072,C=new Float64Array(1),T=new Int32Array(C.buffer),A.doubleToLongBits=function(t){C[0]=t;var e=0|T[0],n=0|T[1];return(n&P)===P&&0!=(1048575&n)&&0!==e&&(e=0,n=2146959360),new R(n,e)},A.longBitsToDouble=function(t){return T[0]=t.low,T[1]=t.high,C[0]}):(I=1023,N=Math.log2,S=Math.floor,M=Math.pow,L=function(){for(var t=53;t>0;t--){var e=M(2,t)-1;if(S(N(e))+1===t)return e}return 0}(),A.doubleToLongBits=function(t){var e,n,r,i,o,s,a,u,l;if(t<0||1/t===Number.NEGATIVE_INFINITY?(s=1<<31,t=-t):s=0,0===t)return new R(u=s,l=0);if(t===1/0)return new R(u=2146435072|s,l=0);if(t!=t)return new R(u=2146959360,l=0);if(i=0,l=0,(e=S(t))>1)if(e<=L)(i=S(N(e)))<=20?(l=0,u=e<<20-i&1048575):(l=e%(n=M(2,r=i-20))<<32-r,u=e/n&1048575);else for(r=e,l=0;0!==(r=S(n=r/2));)i++,l>>>=1,l|=(1&u)<<31,u>>>=1,n!==r&&(u|=524288);if(a=i+I,o=0===e,e=t-e,i<52&&0!==e)for(r=0;;){if((n=2*e)>=1?(e=n-1,o?(a--,o=!1):(r<<=1,r|=1,i++)):(e=n,o?0==--a&&(i++,o=!1):(r<<=1,i++)),20===i)u|=r,r=0;else if(52===i){l|=r;break}if(1===n){i<20?u|=r<<20-i:i<52&&(l|=r<<52-i);break}}return u|=a<<20,new R(u|=s,l)},A.longBitsToDouble=function(t){var e,n,r,i,o=t.high,s=t.low,a=o&1<<31?-1:1;for(r=((2146435072&o)>>20)-I,i=0,n=1<<19,e=1;e<=20;e++)o&n&&(i+=M(2,-e)),n>>>=1;for(n=1<<31,e=21;e<=52;e++)s&n&&(i+=M(2,-e)),n>>>=1;if(-1023===r){if(0===i)return 0*a;r=-1022}else{if(1024===r)return 0===i?a/0:NaN;i+=1}return a*i*M(2,r)});var F=function(e){r(i,e);var n=c(i);function i(e){var r;return t(this,i),(r=n.call(this,e)).name=Object.keys({RuntimeException:i})[0],r}return i}(_),q=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,null,[{key:"constructor_",value:function(){if(0===arguments.length)F.constructor_.call(this);else if(1===arguments.length){var t=arguments[0];F.constructor_.call(this,t)}}}]),o}(F),V=function(){function e(){t(this,e)}return n(e,null,[{key:"shouldNeverReachHere",value:function(){if(0===arguments.length)e.shouldNeverReachHere(null);else if(1===arguments.length){var t=arguments[0];throw new q("Should never reach here"+(null!==t?": "+t:""))}}},{key:"isTrue",value:function(){if(1===arguments.length){var t=arguments[0];e.isTrue(t,null)}else if(2===arguments.length){var n=arguments[1];if(!arguments[0])throw null===n?new q:new q(n)}}},{key:"equals",value:function(){if(2===arguments.length){var t=arguments[0],n=arguments[1];e.equals(t,n,null)}else if(3===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2];if(!i.equals(r))throw new q("Expected "+r+" but encountered "+i+(null!==o?": "+o:""))}}}]),e}(),G=new ArrayBuffer(8),B=new Float64Array(G),Y=new Int32Array(G),z=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getM",value:function(){return A.NaN}},{key:"setOrdinate",value:function(t,n){switch(t){case e.X:this.x=n;break;case e.Y:this.y=n;break;case e.Z:this.setZ(n);break;default:throw new x("Invalid ordinate index: "+t)}}},{key:"equals2D",value:function(){if(1===arguments.length){var t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!O.equalsWithTolerance(this.x,e.x,n)&&!!O.equalsWithTolerance(this.y,e.y,n)}}},{key:"setM",value:function(t){throw new x("Invalid ordinate index: "+e.M)}},{key:"getZ",value:function(){return this.z}},{key:"getOrdinate",value:function(t){switch(t){case e.X:return this.x;case e.Y:return this.y;case e.Z:return this.getZ()}throw new x("Invalid ordinate index: "+t)}},{key:"equals3D",value:function(t){return this.x===t.x&&this.y===t.y&&(this.getZ()===t.getZ()||A.isNaN(this.getZ())&&A.isNaN(t.getZ()))}},{key:"equals",value:function(t){return t instanceof e&&this.equals2D(t)}},{key:"equalInZ",value:function(t,e){return O.equalsWithTolerance(this.getZ(),t.getZ(),e)}},{key:"setX",value:function(t){this.x=t}},{key:"compareTo",value:function(t){var e=t;return this.x<e.x?-1:this.x>e.x?1:this.y<e.y?-1:this.y>e.y?1:0}},{key:"getX",value:function(){return this.x}},{key:"setZ",value:function(t){this.z=t}},{key:"clone",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return V.shouldNeverReachHere("this shouldn't happen because this class is Cloneable"),null;throw t}}},{key:"copy",value:function(){return new e(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+", "+this.getZ()+")"}},{key:"distance3D",value:function(t){var e=this.x-t.x,n=this.y-t.y,r=this.getZ()-t.getZ();return Math.sqrt(e*e+n*n+r*r)}},{key:"getY",value:function(){return this.y}},{key:"setY",value:function(t){this.y=t}},{key:"distance",value:function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)}},{key:"hashCode",value:function(){var t=17;return 37*(t=37*t+e.hashCode(this.x))+e.hashCode(this.y)}},{key:"setCoordinate",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}},{key:"interfaces_",get:function(){return[k,b,w]}}],[{key:"constructor_",value:function(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)e.constructor_.call(this,0,0);else if(1===arguments.length){var t=arguments[0];e.constructor_.call(this,t.x,t.y,t.getZ())}else if(2===arguments.length){var n=arguments[0],r=arguments[1];e.constructor_.call(this,n,r,e.NULL_ORDINATE)}else if(3===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2];this.x=i,this.y=o,this.z=s}}},{key:"hashCode",value:function(t){return B[0]=t,Y[0]^Y[1]}}]),e}(),j=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"compare",value:function(t,n){var r=e.compare(t.x,n.x);if(0!==r)return r;var i=e.compare(t.y,n.y);return 0!==i?i:this._dimensionsToTest<=2?0:e.compare(t.getZ(),n.getZ())}},{key:"interfaces_",get:function(){return[D]}}],[{key:"constructor_",value:function(){if(this._dimensionsToTest=2,0===arguments.length)e.constructor_.call(this,2);else if(1===arguments.length){var t=arguments[0];if(2!==t&&3!==t)throw new x("only 2 or 3 dimensions may be specified");this._dimensionsToTest=t}}},{key:"compare",value:function(t,e){return t<e?-1:t>e?1:A.isNaN(t)?A.isNaN(e)?0:-1:A.isNaN(e)?1:0}}]),e}();z.DimensionalComparator=j,z.NULL_ORDINATE=A.NaN,z.X=0,z.Y=1,z.Z=2,z.M=3;var X=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getArea",value:function(){return this.getWidth()*this.getHeight()}},{key:"equals",value:function(t){if(!(t instanceof e))return!1;var n=t;return this.isNull()?n.isNull():this._maxx===n.getMaxX()&&this._maxy===n.getMaxY()&&this._minx===n.getMinX()&&this._miny===n.getMinY()}},{key:"intersection",value:function(t){if(this.isNull()||t.isNull()||!this.intersects(t))return new e;var n=this._minx>t._minx?this._minx:t._minx,r=this._miny>t._miny?this._miny:t._miny;return new e(n,this._maxx<t._maxx?this._maxx:t._maxx,r,this._maxy<t._maxy?this._maxy:t._maxy)}},{key:"isNull",value:function(){return this._maxx<this._minx}},{key:"getMaxX",value:function(){return this._maxx}},{key:"covers",value:function(){if(1===arguments.length){if(arguments[0]instanceof z){var t=arguments[0];return this.covers(t.x,t.y)}if(arguments[0]instanceof e){var n=arguments[0];return!this.isNull()&&!n.isNull()&&n.getMinX()>=this._minx&&n.getMaxX()<=this._maxx&&n.getMinY()>=this._miny&&n.getMaxY()<=this._maxy}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];return!this.isNull()&&r>=this._minx&&r<=this._maxx&&i>=this._miny&&i<=this._maxy}}},{key:"intersects",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny)}if(arguments[0]instanceof z){var n=arguments[0];return this.intersects(n.x,n.y)}}else if(2===arguments.length){if(arguments[0]instanceof z&&arguments[1]instanceof z){var r=arguments[0],i=arguments[1];return!(this.isNull()||(r.x<i.x?r.x:i.x)>this._maxx||(r.x>i.x?r.x:i.x)<this._minx||(r.y<i.y?r.y:i.y)>this._maxy||(r.y>i.y?r.y:i.y)<this._miny)}if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){var o=arguments[0],s=arguments[1];return!this.isNull()&&!(o>this._maxx||o<this._minx||s>this._maxy||s<this._miny)}}}},{key:"getMinY",value:function(){return this._miny}},{key:"getDiameter",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return Math.sqrt(t*t+e*e)}},{key:"getMinX",value:function(){return this._minx}},{key:"expandToInclude",value:function(){if(1===arguments.length){if(arguments[0]instanceof z){var t=arguments[0];this.expandToInclude(t.x,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];if(n.isNull())return null;this.isNull()?(this._minx=n.getMinX(),this._maxx=n.getMaxX(),this._miny=n.getMinY(),this._maxy=n.getMaxY()):(n._minx<this._minx&&(this._minx=n._minx),n._maxx>this._maxx&&(this._maxx=n._maxx),n._miny<this._miny&&(this._miny=n._miny),n._maxy>this._maxy&&(this._maxy=n._maxy))}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];this.isNull()?(this._minx=r,this._maxx=r,this._miny=i,this._maxy=i):(r<this._minx&&(this._minx=r),r>this._maxx&&(this._maxx=r),i<this._miny&&(this._miny=i),i>this._maxy&&(this._maxy=i))}}},{key:"minExtent",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t<e?t:e}},{key:"getWidth",value:function(){return this.isNull()?0:this._maxx-this._minx}},{key:"compareTo",value:function(t){var e=t;return this.isNull()?e.isNull()?0:-1:e.isNull()?1:this._minx<e._minx?-1:this._minx>e._minx?1:this._miny<e._miny?-1:this._miny>e._miny?1:this._maxx<e._maxx?-1:this._maxx>e._maxx?1:this._maxy<e._maxy?-1:this._maxy>e._maxy?1:0}},{key:"translate",value:function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)}},{key:"copy",value:function(){return new e(this)}},{key:"toString",value:function(){return"Env["+this._minx+" : "+this._maxx+", "+this._miny+" : "+this._maxy+"]"}},{key:"setToNull",value:function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1}},{key:"disjoint",value:function(t){return!(!this.isNull()&&!t.isNull())||t._minx>this._maxx||t._maxx<this._minx||t._miny>this._maxy||t._maxy<this._miny}},{key:"getHeight",value:function(){return this.isNull()?0:this._maxy-this._miny}},{key:"maxExtent",value:function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e}},{key:"expandBy",value:function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}}},{key:"contains",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof z){var n=arguments[0];return this.covers(n)}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];return this.covers(r,i)}}},{key:"centre",value:function(){return this.isNull()?null:new z((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)}},{key:"init",value:function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof z){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];this._minx=n._minx,this._maxx=n._maxx,this._miny=n._miny,this._maxy=n._maxy}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];this.init(r.x,i.x,r.y,i.y)}else if(4===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2],u=arguments[3];o<s?(this._minx=o,this._maxx=s):(this._minx=s,this._maxx=o),a<u?(this._miny=a,this._maxy=u):(this._miny=u,this._maxy=a)}}},{key:"getMaxY",value:function(){return this._maxy}},{key:"distance",value:function(t){if(this.intersects(t))return 0;var e=0;this._maxx<t._minx?e=t._minx-this._maxx:this._minx>t._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxy<t._miny?n=t._miny-this._maxy:this._miny>t._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)}},{key:"hashCode",value:function(){var t=17;return 37*(t=37*(t=37*(t=37*t+z.hashCode(this._minx))+z.hashCode(this._maxx))+z.hashCode(this._miny))+z.hashCode(this._maxy)}},{key:"interfaces_",get:function(){return[k,w]}}],[{key:"constructor_",value:function(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof z){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof e){var n=arguments[0];this.init(n)}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];this.init(r.x,i.x,r.y,i.y)}else if(4===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2],u=arguments[3];this.init(o,s,a,u)}}},{key:"intersects",value:function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.x<e.x?t.x:e.x)&&n.x<=(t.x>e.x?t.x:e.x)&&n.y>=(t.y<e.y?t.y:e.y)&&n.y<=(t.y>e.y?t.y:e.y)}if(4===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2],s=arguments[3],a=Math.min(o.x,s.x),u=Math.max(o.x,s.x),l=Math.min(r.x,i.x),h=Math.max(r.x,i.x);return!(l>u||h<a||(a=Math.min(o.y,s.y),u=Math.max(o.y,s.y),l=Math.min(r.y,i.y),h=Math.max(r.y,i.y),l>u||h<a))}}}]),e}(),U=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"isGeometryCollection",value:function(){return this.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION}},{key:"getFactory",value:function(){return this._factory}},{key:"getGeometryN",value:function(t){return this}},{key:"getArea",value:function(){return 0}},{key:"isRectangle",value:function(){return!1}},{key:"equalsExact",value:function(t){return this===t||this.equalsExact(t,0)}},{key:"geometryChanged",value:function(){this.apply(e.geometryChangedFilter)}},{key:"geometryChangedAction",value:function(){this._envelope=null}},{key:"equalsNorm",value:function(t){return null!==t&&this.norm().equalsExact(t.norm())}},{key:"getLength",value:function(){return 0}},{key:"getNumGeometries",value:function(){return 1}},{key:"compareTo",value:function(){var t;if(1===arguments.length){var e=arguments[0];return t=e,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(e)}if(2===arguments.length){var n=arguments[0],r=arguments[1];return t=n,this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(n,r)}}},{key:"getUserData",value:function(){return this._userData}},{key:"getSRID",value:function(){return this._SRID}},{key:"getEnvelope",value:function(){return this.getFactory().toGeometry(this.getEnvelopeInternal())}},{key:"checkNotGeometryCollection",value:function(t){if(t.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION)throw new x("This method does not support GeometryCollection arguments")}},{key:"equal",value:function(t,e,n){return 0===n?t.equals(e):t.distance(e)<=n}},{key:"norm",value:function(){var t=this.copy();return t.normalize(),t}},{key:"reverse",value:function(){var t=this.reverseInternal();return null!=this.envelope&&(t.envelope=this.envelope.copy()),t.setSRID(this.getSRID()),t}},{key:"copy",value:function(){var t=this.copyInternal();return t.envelope=null==this._envelope?null:this._envelope.copy(),t._SRID=this._SRID,t._userData=this._userData,t}},{key:"getPrecisionModel",value:function(){return this._factory.getPrecisionModel()}},{key:"getEnvelopeInternal",value:function(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new X(this._envelope)}},{key:"setSRID",value:function(t){this._SRID=t}},{key:"setUserData",value:function(t){this._userData=t}},{key:"compare",value:function(t,e){for(var n=t.iterator(),r=e.iterator();n.hasNext()&&r.hasNext();){var i=n.next(),o=r.next(),s=i.compareTo(o);if(0!==s)return s}return n.hasNext()?1:r.hasNext()?-1:0}},{key:"hashCode",value:function(){return this.getEnvelopeInternal().hashCode()}},{key:"isEquivalentClass",value:function(t){return this.getClass()===t.getClass()}},{key:"isGeometryCollectionOrDerived",value:function(){return this.getTypeCode()===e.TYPECODE_GEOMETRYCOLLECTION||this.getTypeCode()===e.TYPECODE_MULTIPOINT||this.getTypeCode()===e.TYPECODE_MULTILINESTRING||this.getTypeCode()===e.TYPECODE_MULTIPOLYGON}},{key:"interfaces_",get:function(){return[b,k,w]}},{key:"getClass",value:function(){return e}}],[{key:"hasNonEmptyElements",value:function(t){for(var e=0;e<t.length;e++)if(!t[e].isEmpty())return!0;return!1}},{key:"hasNullElements",value:function(t){for(var e=0;e<t.length;e++)if(null===t[e])return!0;return!1}}]),e}();U.constructor_=function(t){t&&(this._envelope=null,this._userData=null,this._factory=t,this._SRID=t.getSRID())},U.TYPECODE_POINT=0,U.TYPECODE_MULTIPOINT=1,U.TYPECODE_LINESTRING=2,U.TYPECODE_LINEARRING=3,U.TYPECODE_MULTILINESTRING=4,U.TYPECODE_POLYGON=5,U.TYPECODE_MULTIPOLYGON=6,U.TYPECODE_GEOMETRYCOLLECTION=7,U.TYPENAME_POINT="Point",U.TYPENAME_MULTIPOINT="MultiPoint",U.TYPENAME_LINESTRING="LineString",U.TYPENAME_LINEARRING="LinearRing",U.TYPENAME_MULTILINESTRING="MultiLineString",U.TYPENAME_POLYGON="Polygon",U.TYPENAME_MULTIPOLYGON="MultiPolygon",U.TYPENAME_GEOMETRYCOLLECTION="GeometryCollection",U.geometryChangedFilter={get interfaces_(){return[E]},filter:function(t){t.geometryChangedAction()}};var Z=function(){function e(){t(this,e)}return n(e,null,[{key:"toLocationSymbol",value:function(t){switch(t){case e.EXTERIOR:return"e";case e.BOUNDARY:return"b";case e.INTERIOR:return"i";case e.NONE:return"-"}throw new x("Unknown location value: "+t)}}]),e}();Z.INTERIOR=0,Z.BOUNDARY=1,Z.EXTERIOR=2,Z.NONE=-1;var H=function(){function e(){t(this,e)}return n(e,[{key:"add",value:function(){}},{key:"addAll",value:function(){}},{key:"isEmpty",value:function(){}},{key:"iterator",value:function(){}},{key:"size",value:function(){}},{key:"toArray",value:function(){}},{key:"remove",value:function(){}}]),e}(),W=function(e){r(i,e);var n=c(i);function i(e){var r;return t(this,i),(r=n.call(this,e)).name=Object.keys({NoSuchElementException:i})[0],r}return i}(_),J=function(e){r(i,e);var n=c(i);function i(e){var r;return t(this,i),(r=n.call(this,e)).name=Object.keys({UnsupportedOperationException:i})[0],r}return i}(_),K=function(e){r(o,e);var i=c(o);function o(){return t(this,o),i.apply(this,arguments)}return n(o,[{key:"contains",value:function(){}}]),o}(H),Q=function(e,i){r(s,e);var o=c(s);function s(e){var n;return t(this,s),(n=o.call(this)).map=new Map,e instanceof H&&n.addAll(e),n}return n(s,[{key:"contains",value:function(t){var e=t.hashCode?t.hashCode():t;return!!this.map.has(e)}},{key:"add",value:function(t){var e=t.hashCode?t.hashCode():t;return!this.map.has(e)&&!!this.map.set(e,t)}},{key:"addAll",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;this.add(r)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:"remove",value:function(){throw new J}},{key:"size",value:function(){return this.map.size}},{key:"isEmpty",value:function(){return 0===this.map.size}},{key:"toArray",value:function(){return Array.from(this.map.values())}},{key:"iterator",value:function(){return new $(this.map)}},{key:i,value:function(){return this.map}}]),s}(K,Symbol.iterator),$=function(){function e(n){t(this,e),this.iterator=n.values();var r=this.iterator.next(),i=r.done,o=r.value;this.done=i,this.value=o}return n(e,[{key:"next",value:function(){if(this.done)throw new W;var t=this.value,e=this.iterator.next(),n=e.done,r=e.value;return this.done=n,this.value=r,t}},{key:"hasNext",value:function(){return!this.done}},{key:"remove",value:function(){throw new J}}]),e}(),tt=function(){function e(){t(this,e)}return n(e,null,[{key:"opposite",value:function(t){return t===e.LEFT?e.RIGHT:t===e.RIGHT?e.LEFT:t}}]),e}();tt.ON=0,tt.LEFT=1,tt.RIGHT=2;var et=function(e){r(i,e);var n=c(i);function i(e){var r;return t(this,i),(r=n.call(this,e)).name=Object.keys({EmptyStackException:i})[0],r}return i}(_),nt=function(e){r(i,e);var n=c(i);function i(e){var r;return t(this,i),(r=n.call(this,e)).name=Object.keys({IndexOutOfBoundsException:i})[0],r}return i}(_),rt=function(e){r(o,e);var i=c(o);function o(){return t(this,o),i.apply(this,arguments)}return n(o,[{key:"get",value:function(){}},{key:"set",value:function(){}},{key:"isEmpty",value:function(){}}]),o}(H),it=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),(e=i.call(this)).array=[],e}return n(o,[{key:"add",value:function(t){return this.array.push(t),!0}},{key:"get",value:function(t){if(t<0||t>=this.size())throw new nt;return this.array[t]}},{key:"push",value:function(t){return this.array.push(t),t}},{key:"pop",value:function(){if(0===this.array.length)throw new et;return this.array.pop()}},{key:"peek",value:function(){if(0===this.array.length)throw new et;return this.array[this.array.length-1]}},{key:"empty",value:function(){return 0===this.array.length}},{key:"isEmpty",value:function(){return this.empty()}},{key:"search",value:function(t){return this.array.indexOf(t)}},{key:"size",value:function(){return this.array.length}},{key:"toArray",value:function(){return this.array.slice()}}]),o}(rt);function ot(t,e){return t.interfaces_&&t.interfaces_.indexOf(e)>-1}var st=function(){function e(n){t(this,e),this.str=n}return n(e,[{key:"append",value:function(t){this.str+=t}},{key:"setCharAt",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:"toString",value:function(){return this.str}}]),e}(),at=function(){function e(n){t(this,e),this.value=n}return n(e,[{key:"intValue",value:function(){return this.value}},{key:"compareTo",value:function(t){return this.value<t?-1:this.value>t?1:0}}],[{key:"compare",value:function(t,e){return t<e?-1:t>e?1:0}},{key:"isNan",value:function(t){return Number.isNaN(t)}},{key:"valueOf",value:function(t){return new e(t)}}]),e}(),ut=function(){function e(){t(this,e)}return n(e,null,[{key:"isWhitespace",value:function(t){return t<=32&&t>=0||127===t}},{key:"toUpperCase",value:function(t){return t.toUpperCase()}}]),e}(),lt=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"le",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<=t._lo}},{key:"extractSignificantDigits",value:function(t,n){var r=this.abs(),i=e.magnitude(r._hi),o=e.TEN.pow(i);(r=r.divide(o)).gt(e.TEN)?(r=r.divide(e.TEN),i+=1):r.lt(e.ONE)&&(r=r.multiply(e.TEN),i-=1);for(var s=i+1,a=new st,u=e.MAX_PRINT_DIGITS-1,l=0;l<=u;l++){t&&l===s&&a.append(".");var h=Math.trunc(r._hi);if(h<0)break;var c=!1,f=0;h>9?(c=!0,f="9"):f="0"+h,a.append(f),r=r.subtract(e.valueOf(h)).multiply(e.TEN),c&&r.selfAdd(e.TEN);var g=!0,p=e.magnitude(r._hi);if(p<0&&Math.abs(p)>=u-l&&(g=!1),!g)break}return n[0]=i,a.toString()}},{key:"sqr",value:function(){return this.multiply(this)}},{key:"doubleValue",value:function(){return this._hi+this._lo}},{key:"subtract",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.add(t.negate())}if("number"==typeof arguments[0]){var n=arguments[0];return this.add(-n)}}},{key:"equals",value:function(){if(1===arguments.length&&arguments[0]instanceof e){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}}},{key:"isZero",value:function(){return 0===this._hi&&0===this._lo}},{key:"selfSubtract",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if("number"==typeof arguments[0]){var n=arguments[0];return this.isNaN()?this:this.selfAdd(-n,0)}}},{key:"getSpecialNumberString",value:function(){return this.isZero()?"0.0":this.isNaN()?"NaN ":null}},{key:"min",value:function(t){return this.le(t)?this:t}},{key:"selfDivide",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if("number"==typeof arguments[0]){var n=arguments[0];return this.selfDivide(n,0)}}else if(2===arguments.length){var r=arguments[0],i=arguments[1],o=null,s=null,a=null,u=null,l=null,h=null,c=null,f=null;return l=this._hi/r,f=(o=(h=e.SPLIT*l)-(o=h-l))*(a=(f=e.SPLIT*r)-(a=f-r))-(c=l*r)+o*(u=r-a)+(s=l-o)*a+s*u,f=l+(h=(this._hi-c-f+this._lo-l*i)/r),this._hi=f,this._lo=l-f+h,this}}},{key:"dump",value:function(){return"DD<"+this._hi+", "+this._lo+">"}},{key:"divide",value:function(){if(arguments[0]instanceof e){var t=arguments[0],n=null,r=null,i=null,o=null,s=null,a=null,u=null,l=null;return r=(s=this._hi/t._hi)-(n=(a=e.SPLIT*s)-(n=a-s)),l=n*(i=(l=e.SPLIT*t._hi)-(i=l-t._hi))-(u=s*t._hi)+n*(o=t._hi-i)+r*i+r*o,new e(l=s+(a=(this._hi-u-l+this._lo-s*t._lo)/t._hi),s-l+a)}if("number"==typeof arguments[0]){var h=arguments[0];return A.isNaN(h)?e.createNaN():e.copy(this).selfDivide(h,0)}}},{key:"ge",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>=t._lo}},{key:"pow",value:function(t){if(0===t)return e.valueOf(1);var n=new e(this),r=e.valueOf(1),i=Math.abs(t);if(i>1)for(;i>0;)i%2==1&&r.selfMultiply(n),(i/=2)>0&&(n=n.sqr());else r=n;return t<0?r.reciprocal():r}},{key:"ceil",value:function(){if(this.isNaN())return e.NaN;var t=Math.ceil(this._hi),n=0;return t===this._hi&&(n=Math.ceil(this._lo)),new e(t,n)}},{key:"compareTo",value:function(t){var e=t;return this._hi<e._hi?-1:this._hi>e._hi?1:this._lo<e._lo?-1:this._lo>e._lo?1:0}},{key:"rint",value:function(){return this.isNaN()?this:this.add(.5).floor()}},{key:"setValue",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return this.init(t),this}if("number"==typeof arguments[0]){var n=arguments[0];return this.init(n),this}}},{key:"max",value:function(t){return this.ge(t)?this:t}},{key:"sqrt",value:function(){if(this.isZero())return e.valueOf(0);if(this.isNegative())return e.NaN;var t=1/Math.sqrt(this._hi),n=this._hi*t,r=e.valueOf(n),i=this.subtract(r.sqr())._hi*(.5*t);return r.add(i)}},{key:"selfAdd",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if("number"==typeof arguments[0]){var n=arguments[0],r=null,i=null,o=null,s=null,a=null,u=null;return s=(o=this._hi+n)-(a=o-this._hi),i=(u=(s=n-a+(this._hi-s))+this._lo)+(o-(r=o+u)),this._hi=r+i,this._lo=i+(r-this._hi),this}}else if(2===arguments.length){var l=arguments[0],h=arguments[1],c=null,f=null,g=null,p=null,v=null,d=null,y=null;p=this._hi+l,f=this._lo+h,v=p-(d=p-this._hi),g=f-(y=f-this._lo);var m=(c=p+(d=(v=l-d+(this._hi-v))+f))+(d=(g=h-y+(this._lo-g))+(d+(p-c))),_=d+(c-m);return this._hi=m,this._lo=_,this}}},{key:"selfMultiply",value:function(){if(1===arguments.length){if(arguments[0]instanceof e){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if("number"==typeof arguments[0]){var n=arguments[0];return this.selfMultiply(n,0)}}else if(2===arguments.length){var r=arguments[0],i=arguments[1],o=null,s=null,a=null,u=null,l=null,h=null;o=(l=e.SPLIT*this._hi)-this._hi,h=e.SPLIT*r,o=l-o,s=this._hi-o,a=h-r;var c=(l=this._hi*r)+(h=o*(a=h-a)-l+o*(u=r-a)+s*a+s*u+(this._hi*i+this._lo*r)),f=h+(o=l-c);return this._hi=c,this._lo=f,this}}},{key:"selfSqr",value:function(){return this.selfMultiply(this)}},{key:"floor",value:function(){if(this.isNaN())return e.NaN;var t=Math.floor(this._hi),n=0;return t===this._hi&&(n=Math.floor(this._lo)),new e(t,n)}},{key:"negate",value:function(){return this.isNaN()?this:new e(-this._hi,-this._lo)}},{key:"clone",value:function(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return null;throw t}}},{key:"multiply",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return t.isNaN()?e.createNaN():e.copy(this).selfMultiply(t)}if("number"==typeof arguments[0]){var n=arguments[0];return A.isNaN(n)?e.createNaN():e.copy(this).selfMultiply(n,0)}}},{key:"isNaN",value:function(){return A.isNaN(this._hi)}},{key:"intValue",value:function(){return Math.trunc(this._hi)}},{key:"toString",value:function(){var t=e.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()}},{key:"toStandardNotation",value:function(){var t=this.getSpecialNumberString();if(null!==t)return t;var n=new Array(1).fill(null),r=this.extractSignificantDigits(!0,n),i=n[0]+1,o=r;if("."===r.charAt(0))o="0"+r;else if(i<0)o="0."+e.stringOfChar("0",-i)+r;else if(-1===r.indexOf(".")){var s=i-r.length;o=r+e.stringOfChar("0",s)+".0"}return this.isNegative()?"-"+o:o}},{key:"reciprocal",value:function(){var t,n,r,i,o=null,s=null,a=null,u=null;t=(r=1/this._hi)-(o=(a=e.SPLIT*r)-(o=a-r)),s=(u=e.SPLIT*this._hi)-this._hi;var l=r+(a=(1-(i=r*this._hi)-(u=o*(s=u-s)-i+o*(n=this._hi-s)+t*s+t*n)-r*this._lo)/this._hi);return new e(l,r-l+a)}},{key:"toSciNotation",value:function(){if(this.isZero())return e.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var n=new Array(1).fill(null),r=this.extractSignificantDigits(!1,n),i=e.SCI_NOT_EXPONENT_CHAR+n[0];if("0"===r.charAt(0))throw new IllegalStateException("Found leading zero: "+r);var o="";r.length>1&&(o=r.substring(1));var s=r.charAt(0)+"."+o;return this.isNegative()?"-"+s+i:s+i}},{key:"abs",value:function(){return this.isNaN()?e.NaN:this.isNegative()?this.negate():new e(this)}},{key:"isPositive",value:function(){return this._hi>0||0===this._hi&&this._lo>0}},{key:"lt",value:function(t){return this._hi<t._hi||this._hi===t._hi&&this._lo<t._lo}},{key:"add",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return e.copy(this).selfAdd(t)}if("number"==typeof arguments[0]){var n=arguments[0];return e.copy(this).selfAdd(n)}}},{key:"init",value:function(){if(1===arguments.length){if("number"==typeof arguments[0]){var t=arguments[0];this._hi=t,this._lo=0}else if(arguments[0]instanceof e){var n=arguments[0];this._hi=n._hi,this._lo=n._lo}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];this._hi=r,this._lo=i}}},{key:"gt",value:function(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>t._lo}},{key:"isNegative",value:function(){return this._hi<0||0===this._hi&&this._lo<0}},{key:"trunc",value:function(){return this.isNaN()?e.NaN:this.isPositive()?this.floor():this.ceil()}},{key:"signum",value:function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0}},{key:"interfaces_",get:function(){return[w,k,b]}}],[{key:"constructor_",value:function(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if("number"==typeof arguments[0]){var t=arguments[0];this.init(t)}else if(arguments[0]instanceof e){var n=arguments[0];this.init(n)}else if("string"==typeof arguments[0]){var r=arguments[0];e.constructor_.call(this,e.parse(r))}}else if(2===arguments.length){var i=arguments[0],o=arguments[1];this.init(i,o)}}},{key:"determinant",value:function(){if("number"==typeof arguments[3]&&"number"==typeof arguments[2]&&"number"==typeof arguments[0]&&"number"==typeof arguments[1]){var t=arguments[0],n=arguments[1],r=arguments[2],i=arguments[3];return e.determinant(e.valueOf(t),e.valueOf(n),e.valueOf(r),e.valueOf(i))}if(arguments[3]instanceof e&&arguments[2]instanceof e&&arguments[0]instanceof e&&arguments[1]instanceof e){var o=arguments[1],s=arguments[2],a=arguments[3];return arguments[0].multiply(a).selfSubtract(o.multiply(s))}}},{key:"sqr",value:function(t){return e.valueOf(t).selfMultiply(t)}},{key:"valueOf",value:function(){if("string"==typeof arguments[0]){var t=arguments[0];return e.parse(t)}if("number"==typeof arguments[0])return new e(arguments[0])}},{key:"sqrt",value:function(t){return e.valueOf(t).sqrt()}},{key:"parse",value:function(t){for(var n=0,r=t.length;ut.isWhitespace(t.charAt(n));)n++;var i=!1;if(n<r){var o=t.charAt(n);"-"!==o&&"+"!==o||(n++,"-"===o&&(i=!0))}for(var s=new e,a=0,u=0,l=0,h=!1;!(n>=r);){var c=t.charAt(n);if(n++,ut.isDigit(c)){var f=c-"0";s.selfMultiply(e.TEN),s.selfAdd(f),a++}else{if("."!==c){if("e"===c||"E"===c){var g=t.substring(n);try{l=at.parseInt(g)}catch(e){throw e instanceof NumberFormatException?new NumberFormatException("Invalid exponent "+g+" in string "+t):e}break}throw new NumberFormatException("Unexpected character '"+c+"' at position "+n+" in string "+t)}u=a,h=!0}}var p=s;h||(u=a);var v=a-u-l;if(0===v)p=s;else if(v>0){var d=e.TEN.pow(v);p=s.divide(d)}else if(v<0){var y=e.TEN.pow(-v);p=s.multiply(y)}return i?p.negate():p}},{key:"createNaN",value:function(){return new e(A.NaN,A.NaN)}},{key:"copy",value:function(t){return new e(t)}},{key:"magnitude",value:function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),r=Math.trunc(Math.floor(n));return 10*Math.pow(10,r)<=e&&(r+=1),r}},{key:"stringOfChar",value:function(t,e){for(var n=new st,r=0;r<e;r++)n.append(t);return n.toString()}}]),e}();lt.PI=new lt(3.141592653589793,12246467991473532e-32),lt.TWO_PI=new lt(6.283185307179586,24492935982947064e-32),lt.PI_2=new lt(1.5707963267948966,6123233995736766e-32),lt.E=new lt(2.718281828459045,14456468917292502e-32),lt.NaN=new lt(A.NaN,A.NaN),lt.EPS=123259516440783e-46,lt.SPLIT=134217729,lt.MAX_PRINT_DIGITS=32,lt.TEN=lt.valueOf(10),lt.ONE=lt.valueOf(1),lt.SCI_NOT_EXPONENT_CHAR="E",lt.SCI_NOT_ZERO="0.0E0";var ht=function(){function e(){t(this,e)}return n(e,null,[{key:"orientationIndex",value:function(t,n,r){var i=e.orientationIndexFilter(t,n,r);if(i<=1)return i;var o=lt.valueOf(n.x).selfAdd(-t.x),s=lt.valueOf(n.y).selfAdd(-t.y),a=lt.valueOf(r.x).selfAdd(-n.x),u=lt.valueOf(r.y).selfAdd(-n.y);return o.selfMultiply(u).selfSubtract(s.selfMultiply(a)).signum()}},{key:"signOfDet2x2",value:function(){if(arguments[3]instanceof lt&&arguments[2]instanceof lt&&arguments[0]instanceof lt&&arguments[1]instanceof lt){var t=arguments[1],e=arguments[2],n=arguments[3];return arguments[0].multiply(n).selfSubtract(t.multiply(e)).signum()}if("number"==typeof arguments[3]&&"number"==typeof arguments[2]&&"number"==typeof arguments[0]&&"number"==typeof arguments[1]){var r=arguments[0],i=arguments[1],o=arguments[2],s=arguments[3],a=lt.valueOf(r),u=lt.valueOf(i),l=lt.valueOf(o),h=lt.valueOf(s);return a.multiply(h).selfSubtract(u.multiply(l)).signum()}}},{key:"intersection",value:function(t,e,n,r){var i=new lt(t.y).selfSubtract(e.y),o=new lt(e.x).selfSubtract(t.x),s=new lt(t.x).selfMultiply(e.y).selfSubtract(new lt(e.x).selfMultiply(t.y)),a=new lt(n.y).selfSubtract(r.y),u=new lt(r.x).selfSubtract(n.x),l=new lt(n.x).selfMultiply(r.y).selfSubtract(new lt(r.x).selfMultiply(n.y)),h=o.multiply(l).selfSubtract(u.multiply(s)),c=a.multiply(s).selfSubtract(i.multiply(l)),f=i.multiply(u).selfSubtract(a.multiply(o)),g=h.selfDivide(f).doubleValue(),p=c.selfDivide(f).doubleValue();return A.isNaN(g)||A.isInfinite(g)||A.isNaN(p)||A.isInfinite(p)?null:new z(g,p)}},{key:"orientationIndexFilter",value:function(t,n,r){var i=null,o=(t.x-r.x)*(n.y-r.y),s=(t.y-r.y)*(n.x-r.x),a=o-s;if(o>0){if(s<=0)return e.signum(a);i=o+s}else{if(!(o<0))return e.signum(a);if(s>=0)return e.signum(a);i=-o-s}var u=e.DP_SAFE_EPSILON*i;return a>=u||-a>=u?e.signum(a):2}},{key:"signum",value:function(t){return t>0?1:t<0?-1:0}}]),e}();ht.DP_SAFE_EPSILON=1e-15;var ct=function(){function e(){t(this,e)}return n(e,[{key:"getM",value:function(t){if(this.hasM()){var e=this.getDimension()-this.getMeasures();return this.getOrdinate(t,e)}return A.NaN}},{key:"setOrdinate",value:function(t,e,n){}},{key:"getZ",value:function(t){return this.hasZ()?this.getOrdinate(t,2):A.NaN}},{key:"size",value:function(){}},{key:"getOrdinate",value:function(t,e){}},{key:"getCoordinate",value:function(){}},{key:"getCoordinateCopy",value:function(t){}},{key:"createCoordinate",value:function(){}},{key:"getDimension",value:function(){}},{key:"hasM",value:function(){return this.getMeasures()>0}},{key:"getX",value:function(t){}},{key:"hasZ",value:function(){return this.getDimension()-this.getMeasures()>2}},{key:"getMeasures",value:function(){return 0}},{key:"expandEnvelope",value:function(t){}},{key:"copy",value:function(){}},{key:"getY",value:function(t){}},{key:"toCoordinateArray",value:function(){}},{key:"interfaces_",get:function(){return[b]}}]),e}();ct.X=0,ct.Y=1,ct.Z=2,ct.M=3;var ft=function(){function e(){t(this,e)}return n(e,null,[{key:"index",value:function(t,e,n){return ht.orientationIndex(t,e,n)}},{key:"isCCW",value:function(){if(arguments[0]instanceof Array){var t=arguments[0],n=t.length-1;if(n<3)throw new x("Ring has fewer than 4 points, so orientation cannot be determined");for(var r=t[0],i=0,o=1;o<=n;o++){var s=t[o];s.y>r.y&&(r=s,i=o)}var a=i;do{(a-=1)<0&&(a=n)}while(t[a].equals2D(r)&&a!==i);var u=i;do{u=(u+1)%n}while(t[u].equals2D(r)&&u!==i);var l=t[a],h=t[u];if(l.equals2D(r)||h.equals2D(r)||l.equals2D(h))return!1;var c=e.index(l,r,h);return 0===c?l.x>h.x:c>0}if(ot(arguments[0],ct)){var f=arguments[0],g=f.size()-1;if(g<3)throw new x("Ring has fewer than 4 points, so orientation cannot be determined");for(var p=f.getCoordinate(0),v=0,d=1;d<=g;d++){var y=f.getCoordinate(d);y.y>p.y&&(p=y,v=d)}var m=null,_=v;do{(_-=1)<0&&(_=g),m=f.getCoordinate(_)}while(m.equals2D(p)&&_!==v);var E=null,k=v;do{k=(k+1)%g,E=f.getCoordinate(k)}while(E.equals2D(p)&&k!==v);if(m.equals2D(p)||E.equals2D(p)||m.equals2D(E))return!1;var b=e.index(m,p,E);return 0===b?m.x>E.x:b>0}}}]),e}();ft.CLOCKWISE=-1,ft.RIGHT=ft.CLOCKWISE,ft.COUNTERCLOCKWISE=1,ft.LEFT=ft.COUNTERCLOCKWISE,ft.COLLINEAR=0,ft.STRAIGHT=ft.COLLINEAR;var gt=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getCoordinate",value:function(){return this._minCoord}},{key:"getRightmostSide",value:function(t,e){var n=this.getRightmostSideOfSegment(t,e);return n<0&&(n=this.getRightmostSideOfSegment(t,e-1)),n<0&&(this._minCoord=null,this.checkForRightmostCoordinate(t)),n}},{key:"findRightmostEdgeAtVertex",value:function(){var t=this._minDe.getEdge().getCoordinates();V.isTrue(this._minIndex>0&&this._minIndex<t.length,"rightmost point expected to be interior vertex of edge");var e=t[this._minIndex-1],n=t[this._minIndex+1],r=ft.index(this._minCoord,n,e),i=!1;(e.y<this._minCoord.y&&n.y<this._minCoord.y&&r===ft.COUNTERCLOCKWISE||e.y>this._minCoord.y&&n.y>this._minCoord.y&&r===ft.CLOCKWISE)&&(i=!0),i&&(this._minIndex=this._minIndex-1)}},{key:"getRightmostSideOfSegment",value:function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var r=tt.LEFT;return n[e].y<n[e+1].y&&(r=tt.RIGHT),r}},{key:"getEdge",value:function(){return this._orientedDe}},{key:"checkForRightmostCoordinate",value:function(t){for(var e=t.getEdge().getCoordinates(),n=0;n<e.length-1;n++)(null===this._minCoord||e[n].x>this._minCoord.x)&&(this._minDe=t,this._minIndex=n,this._minCoord=e[n])}},{key:"findRightmostEdgeAtNode",value:function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)}},{key:"findEdge",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}V.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),"inconsistency in rightmost processing"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===tt.LEFT&&(this._orientedDe=this._minDe.getSym())}}],[{key:"constructor_",value:function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null}}]),e}(),pt=function(e){r(o,e);var i=c(o);function o(e,n){var r;return t(this,o),(r=i.call(this,n?e+" [ "+n+" ]":e)).pt=n?new z(n):void 0,r.name=Object.keys({TopologyException:o})[0],r}return n(o,[{key:"getCoordinate",value:function(){return this.pt}}]),o}(F),vt=function(){function e(){t(this,e),this.array=[]}return n(e,[{key:"addLast",value:function(t){this.array.push(t)}},{key:"removeFirst",value:function(){return this.array.shift()}},{key:"isEmpty",value:function(){return 0===this.array.length}}]),e}(),dt=function(e,i){r(s,e);var o=c(s);function s(e){var n;return t(this,s),(n=o.call(this)).array=[],e instanceof H&&n.addAll(e),n}return n(s,[{key:"interfaces_",get:function(){return[rt,H]}},{key:"ensureCapacity",value:function(){}},{key:"add",value:function(t){return 1===arguments.length?this.array.push(t):this.array.splice(arguments[0],0,arguments[1]),!0}},{key:"clear",value:function(){this.array=[]}},{key:"addAll",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;this.array.push(r)}}catch(t){n.e(t)}finally{n.f()}}},{key:"set",value:function(t,e){var n=this.array[t];return this.array[t]=e,n}},{key:"iterator",value:function(){return new yt(this)}},{key:"get",value:function(t){if(t<0||t>=this.size())throw new nt;return this.array[t]}},{key:"isEmpty",value:function(){return 0===this.array.length}},{key:"sort",value:function(t){t?this.array.sort((function(e,n){return t.compare(e,n)})):this.array.sort()}},{key:"size",value:function(){return this.array.length}},{key:"toArray",value:function(){return this.array.slice()}},{key:"remove",value:function(t){for(var e=0,n=this.array.length;e<n;e++)if(this.array[e]===t)return!!this.array.splice(e,1);return!1}},{key:i,value:function(){return this.array.values()}}]),s}(rt,Symbol.iterator),yt=function(){function e(n){t(this,e),this.arrayList=n,this.position=0}return n(e,[{key:"next",value:function(){if(this.position===this.arrayList.size())throw new W;return this.arrayList.get(this.position++)}},{key:"hasNext",value:function(){return this.position<this.arrayList.size()}},{key:"set",value:function(t){return this.arrayList.set(this.position-1,t)}},{key:"remove",value:function(){this.arrayList.remove(this.arrayList.get(this.position))}}]),e}(),mt=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"clearVisitedEdges",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();)t.next().setVisited(!1)}},{key:"getRightmostCoordinate",value:function(){return this._rightMostCoord}},{key:"computeNodeDepth",value:function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var r=n.next();if(r.isVisited()||r.getSym().isVisited()){e=r;break}}if(null===e)throw new pt("unable to find edge to compute depths at "+t.getCoordinate());t.getEdges().computeDepths(e);for(var i=t.getEdges().iterator();i.hasNext();){var o=i.next();o.setVisited(!0),this.copySymDepths(o)}}},{key:"computeDepth",value:function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.getNode(),e.getLabel(),e.setEdgeDepths(tt.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)}},{key:"create",value:function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()}},{key:"findResultEdges",value:function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(tt.RIGHT)>=1&&e.getDepth(tt.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}}},{key:"computeDepths",value:function(t){var e=new Q,n=new vt,r=t.getNode();for(n.addLast(r),e.add(r),t.setVisited(!0);!n.isEmpty();){var i=n.removeFirst();e.add(i),this.computeNodeDepth(i);for(var o=i.getEdges().iterator();o.hasNext();){var s=o.next().getSym();if(!s.isVisited()){var a=s.getNode();e.contains(a)||(n.addLast(a),e.add(a))}}}}},{key:"compareTo",value:function(t){var e=t;return this._rightMostCoord.x<e._rightMostCoord.x?-1:this._rightMostCoord.x>e._rightMostCoord.x?1:0}},{key:"getEnvelope",value:function(){if(null===this._env){for(var t=new X,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),r=0;r<n.length-1;r++)t.expandToInclude(n[r]);this._env=t}return this._env}},{key:"addReachable",value:function(t){var e=new it;for(e.add(t);!e.empty();){var n=e.pop();this.add(n,e)}}},{key:"copySymDepths",value:function(t){var e=t.getSym();e.setDepth(tt.LEFT,t.getDepth(tt.RIGHT)),e.setDepth(tt.RIGHT,t.getDepth(tt.LEFT))}},{key:"add",value:function(t,e){t.setVisited(!0),this._nodes.add(t);for(var n=t.getEdges().iterator();n.hasNext();){var r=n.next();this._dirEdgeList.add(r);var i=r.getSym().getNode();i.isVisited()||e.push(i)}}},{key:"getNodes",value:function(){return this._nodes}},{key:"getDirectedEdges",value:function(){return this._dirEdgeList}},{key:"interfaces_",get:function(){return[k]}}],[{key:"constructor_",value:function(){this._finder=null,this._dirEdgeList=new dt,this._nodes=new dt,this._rightMostCoord=null,this._env=null,this._finder=new gt}}]),e}(),_t=function(){function e(){t(this,e)}return n(e,null,[{key:"intersection",value:function(t,e,n,r){var i=t.x<e.x?t.x:e.x,o=t.y<e.y?t.y:e.y,s=t.x>e.x?t.x:e.x,a=t.y>e.y?t.y:e.y,u=n.x<r.x?n.x:r.x,l=n.y<r.y?n.y:r.y,h=n.x>r.x?n.x:r.x,c=n.y>r.y?n.y:r.y,f=((i>u?i:u)+(s<h?s:h))/2,g=((o>l?o:l)+(a<c?a:c))/2,p=t.x-f,v=t.y-g,d=e.x-f,y=e.y-g,m=n.x-f,_=n.y-g,x=r.x-f,E=r.y-g,k=v-y,b=d-p,w=p*y-d*v,I=_-E,N=x-m,S=m*E-x*_,M=k*N-I*b,L=(b*S-N*w)/M,P=(I*w-k*S)/M;return A.isNaN(L)||A.isInfinite(L)||A.isNaN(P)||A.isInfinite(P)?null:new z(L+f,P+g)}}]),e}(),xt=function(){function e(){t(this,e)}return n(e,null,[{key:"arraycopy",value:function(t,e,n,r,i){for(var o=0,s=e;s<e+i;s++)n[r+o]=t[s],o++}},{key:"getProperty",value:function(t){return{"line.separator":"\n"}[t]}}]),e}(),Et=function(){function e(){t(this,e)}return n(e,null,[{key:"log10",value:function(t){var n=Math.log(t);return A.isInfinite(n)||A.isNaN(n)?n:n/e.LOG_10}},{key:"min",value:function(t,e,n,r){var i=t;return e<i&&(i=e),n<i&&(i=n),r<i&&(i=r),i}},{key:"clamp",value:function(){if("number"==typeof arguments[2]&&"number"==typeof arguments[0]&&"number"==typeof arguments[1]){var t=arguments[0],e=arguments[1],n=arguments[2];return t<e?e:t>n?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var r=arguments[0],i=arguments[1],o=arguments[2];return r<i?i:r>o?o:r}}},{key:"wrap",value:function(t,e){return t<0?e- -t%e:t%e}},{key:"max",value:function(){if(3===arguments.length){var t=arguments[1],e=arguments[2],n=arguments[0];return t>n&&(n=t),e>n&&(n=e),n}if(4===arguments.length){var r=arguments[1],i=arguments[2],o=arguments[3],s=arguments[0];return r>s&&(s=r),i>s&&(s=i),o>s&&(s=o),s}}},{key:"average",value:function(t,e){return(t+e)/2}}]),e}();Et.LOG_10=Math.log(10);var kt=function(){function e(){t(this,e)}return n(e,null,[{key:"segmentToSegment",value:function(t,n,r,i){if(t.equals(n))return e.pointToSegment(t,r,i);if(r.equals(i))return e.pointToSegment(i,t,n);var o=!1;if(X.intersects(t,n,r,i)){var s=(n.x-t.x)*(i.y-r.y)-(n.y-t.y)*(i.x-r.x);if(0===s)o=!0;else{var a=(t.y-r.y)*(i.x-r.x)-(t.x-r.x)*(i.y-r.y),u=((t.y-r.y)*(n.x-t.x)-(t.x-r.x)*(n.y-t.y))/s,l=a/s;(l<0||l>1||u<0||u>1)&&(o=!0)}}else o=!0;return o?Et.min(e.pointToSegment(t,r,i),e.pointToSegment(n,r,i),e.pointToSegment(r,t,n),e.pointToSegment(i,t,n)):0}},{key:"pointToSegment",value:function(t,e,n){if(e.x===n.x&&e.y===n.y)return t.distance(e);var r=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),i=((t.x-e.x)*(n.x-e.x)+(t.y-e.y)*(n.y-e.y))/r;if(i<=0)return t.distance(e);if(i>=1)return t.distance(n);var o=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/r;return Math.abs(o)*Math.sqrt(r)}},{key:"pointToLinePerpendicular",value:function(t,e,n){var r=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),i=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/r;return Math.abs(i)*Math.sqrt(r)}},{key:"pointToSegmentString",value:function(t,n){if(0===n.length)throw new x("Line array must contain at least one vertex");for(var r=t.distance(n[0]),i=0;i<n.length-1;i++){var o=e.pointToSegment(t,n[i],n[i+1]);o<r&&(r=o)}return r}}]),e}(),bt=function(){function e(){t(this,e)}return n(e,[{key:"create",value:function(){if(1===arguments.length)arguments[0]instanceof Array||ot(arguments[0],ct);else if(2===arguments.length);else if(3===arguments.length){var t=arguments[0],e=arguments[1];return this.create(t,e)}}}]),e}(),wt=function(){function e(){t(this,e)}return n(e,[{key:"filter",value:function(t){}}]),e}(),It=function(){function e(){t(this,e)}return n(e,null,[{key:"ofLine",value:function(t){var e=t.size();if(e<=1)return 0;var n=0,r=new z;t.getCoordinate(0,r);for(var i=r.x,o=r.y,s=1;s<e;s++){t.getCoordinate(s,r);var a=r.x,u=r.y,l=a-i,h=u-o;n+=Math.sqrt(l*l+h*h),i=a,o=u}return n}}]),e}(),Nt=function e(){t(this,e)},St=function(){function e(){t(this,e)}return n(e,null,[{key:"copyCoord",value:function(t,e,n,r){for(var i=Math.min(t.getDimension(),n.getDimension()),o=0;o<i;o++)n.setOrdinate(r,o,t.getOrdinate(e,o))}},{key:"isRing",value:function(t){var e=t.size();return 0===e||!(e<=3)&&t.getOrdinate(0,ct.X)===t.getOrdinate(e-1,ct.X)&&t.getOrdinate(0,ct.Y)===t.getOrdinate(e-1,ct.Y)}},{key:"scroll",value:function(){if(2===arguments.length){if(ot(arguments[0],ct)&&Number.isInteger(arguments[1])){var t=arguments[0],n=arguments[1];e.scroll(t,n,e.isRing(t))}else if(ot(arguments[0],ct)&&arguments[1]instanceof z){var r=arguments[0],i=arguments[1],o=e.indexOf(i,r);if(o<=0)return null;e.scroll(r,o)}}else if(3===arguments.length){var s=arguments[0],a=arguments[1],u=arguments[2];if(a<=0)return null;for(var l=s.copy(),h=u?s.size()-1:s.size(),c=0;c<h;c++)for(var f=0;f<s.getDimension();f++)s.setOrdinate(c,f,l.getOrdinate((a+c)%h,f));if(u)for(var g=0;g<s.getDimension();g++)s.setOrdinate(h,g,s.getOrdinate(0,g))}}},{key:"isEqual",value:function(t,e){var n=t.size();if(n!==e.size())return!1;for(var r=Math.min(t.getDimension(),e.getDimension()),i=0;i<n;i++)for(var o=0;o<r;o++){var s=t.getOrdinate(i,o),a=e.getOrdinate(i,o);if(!(t.getOrdinate(i,o)===e.getOrdinate(i,o)||A.isNaN(s)&&A.isNaN(a)))return!1}return!0}},{key:"minCoordinateIndex",value:function(){if(1===arguments.length){var t=arguments[0];return e.minCoordinateIndex(t,0,t.size()-1)}if(3===arguments.length){for(var n=arguments[0],r=arguments[2],i=-1,o=null,s=arguments[1];s<=r;s++){var a=n.getCoordinate(s);(null===o||o.compareTo(a)>0)&&(o=a,i=s)}return i}}},{key:"extend",value:function(t,n,r){var i=t.create(r,n.getDimension()),o=n.size();if(e.copy(n,0,i,0,o),o>0)for(var s=o;s<r;s++)e.copy(n,o-1,i,s,1);return i}},{key:"reverse",value:function(t){for(var n=t.size()-1,r=Math.trunc(n/2),i=0;i<=r;i++)e.swap(t,i,n-i)}},{key:"swap",value:function(t,e,n){if(e===n)return null;for(var r=0;r<t.getDimension();r++){var i=t.getOrdinate(e,r);t.setOrdinate(e,r,t.getOrdinate(n,r)),t.setOrdinate(n,r,i)}}},{key:"copy",value:function(t,n,r,i,o){for(var s=0;s<o;s++)e.copyCoord(t,n+s,r,i+s)}},{key:"ensureValidRing",value:function(t,n){var r=n.size();return 0===r?n:r<=3?e.createClosedRing(t,n,4):n.getOrdinate(0,ct.X)===n.getOrdinate(r-1,ct.X)&&n.getOrdinate(0,ct.Y)===n.getOrdinate(r-1,ct.Y)?n:e.createClosedRing(t,n,r+1)}},{key:"indexOf",value:function(t,e){for(var n=0;n<e.size();n++)if(t.x===e.getOrdinate(n,ct.X)&&t.y===e.getOrdinate(n,ct.Y))return n;return-1}},{key:"createClosedRing",value:function(t,n,r){var i=t.create(r,n.getDimension()),o=n.size();e.copy(n,0,i,0,o);for(var s=o;s<r;s++)e.copy(n,0,i,s,1);return i}},{key:"minCoordinate",value:function(t){for(var e=null,n=0;n<t.size();n++){var r=t.getCoordinate(n);(null===e||e.compareTo(r)>0)&&(e=r)}return e}}]),e}(),Mt=function(){function e(){t(this,e)}return n(e,null,[{key:"toDimensionSymbol",value:function(t){switch(t){case e.FALSE:return e.SYM_FALSE;case e.TRUE:return e.SYM_TRUE;case e.DONTCARE:return e.SYM_DONTCARE;case e.P:return e.SYM_P;case e.L:return e.SYM_L;case e.A:return e.SYM_A}throw new x("Unknown dimension value: "+t)}},{key:"toDimensionValue",value:function(t){switch(ut.toUpperCase(t)){case e.SYM_FALSE:return e.FALSE;case e.SYM_TRUE:return e.TRUE;case e.SYM_DONTCARE:return e.DONTCARE;case e.SYM_P:return e.P;case e.SYM_L:return e.L;case e.SYM_A:return e.A}throw new x("Unknown dimension symbol: "+t)}}]),e}();Mt.P=0,Mt.L=1,Mt.A=2,Mt.FALSE=-1,Mt.TRUE=-2,Mt.DONTCARE=-3,Mt.SYM_FALSE="F",Mt.SYM_TRUE="T",Mt.SYM_DONTCARE="*",Mt.SYM_P="0",Mt.SYM_L="1",Mt.SYM_A="2";var Lt=function(){function e(){t(this,e)}return n(e,[{key:"filter",value:function(t){}}]),e}(),Pt=function(){function e(){t(this,e)}return n(e,[{key:"filter",value:function(t,e){}},{key:"isDone",value:function(){}},{key:"isGeometryChanged",value:function(){}}]),e}(),Ct=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"computeEnvelopeInternal",value:function(){return this.isEmpty()?new X:this._points.expandEnvelope(new X)}},{key:"isRing",value:function(){return this.isClosed()&&this.isSimple()}},{key:"getCoordinates",value:function(){return this._points.toCoordinateArray()}},{key:"copyInternal",value:function(){return new s(this._points.copy(),this._factory)}},{key:"equalsExact",value:function(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._points.size()!==n._points.size())return!1;for(var r=0;r<this._points.size();r++)if(!this.equal(this._points.getCoordinate(r),n._points.getCoordinate(r),e))return!1;return!0}return f(i(s.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){for(var t=0;t<Math.trunc(this._points.size()/2);t++){var e=this._points.size()-1-t;if(!this._points.getCoordinate(t).equals(this._points.getCoordinate(e))){if(this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e))>0){var n=this._points.copy();St.reverse(n),this._points=n}return null}}}},{key:"getCoordinate",value:function(){return this.isEmpty()?null:this._points.getCoordinate(0)}},{key:"getBoundaryDimension",value:function(){return this.isClosed()?Mt.FALSE:0}},{key:"isClosed",value:function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))}},{key:"reverseInternal",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLineString(t)}},{key:"getEndPoint",value:function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)}},{key:"getTypeCode",value:function(){return U.TYPECODE_LINESTRING}},{key:"getDimension",value:function(){return 1}},{key:"getLength",value:function(){return It.ofLine(this._points)}},{key:"getNumPoints",value:function(){return this._points.size()}},{key:"compareToSameClass",value:function(){if(1===arguments.length){for(var t=arguments[0],e=0,n=0;e<this._points.size()&&n<t._points.size();){var r=this._points.getCoordinate(e).compareTo(t._points.getCoordinate(n));if(0!==r)return r;e++,n++}return e<this._points.size()?1:n<t._points.size()?-1:0}if(2===arguments.length){var i=arguments[0];return arguments[1].compare(this._points,i._points)}}},{key:"apply",value:function(){if(ot(arguments[0],wt))for(var t=arguments[0],e=0;e<this._points.size();e++)t.filter(this._points.getCoordinate(e));else if(ot(arguments[0],Pt)){var n=arguments[0];if(0===this._points.size())return null;for(var r=0;r<this._points.size()&&(n.filter(this._points,r),!n.isDone());r++);n.isGeometryChanged()&&this.geometryChanged()}else(ot(arguments[0],Lt)||ot(arguments[0],E))&&arguments[0].filter(this)}},{key:"getBoundary",value:function(){throw new J}},{key:"isEquivalentClass",value:function(t){return t instanceof s}},{key:"getCoordinateN",value:function(t){return this._points.getCoordinate(t)}},{key:"getGeometryType",value:function(){return U.TYPENAME_LINESTRING}},{key:"getCoordinateSequence",value:function(){return this._points}},{key:"isEmpty",value:function(){return 0===this._points.size()}},{key:"init",value:function(t){if(null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),1===t.size())throw new x("Invalid number of points in LineString (found "+t.size()+" - must be 0 or >= 2)");this._points=t}},{key:"isCoordinate",value:function(t){for(var e=0;e<this._points.size();e++)if(this._points.getCoordinate(e).equals(t))return!0;return!1}},{key:"getStartPoint",value:function(){return this.isEmpty()?null:this.getPointN(0)}},{key:"getPointN",value:function(t){return this.getFactory().createPoint(this._points.getCoordinate(t))}},{key:"interfaces_",get:function(){return[Nt]}}],[{key:"constructor_",value:function(){if(this._points=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];U.constructor_.call(this,e),this.init(t)}}}]),s}(U),Tt=function e(){t(this,e)},Ot=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"computeEnvelopeInternal",value:function(){if(this.isEmpty())return new X;var t=new X;return t.expandToInclude(this._coordinates.getX(0),this._coordinates.getY(0)),t}},{key:"getCoordinates",value:function(){return this.isEmpty()?[]:[this.getCoordinate()]}},{key:"copyInternal",value:function(){return new s(this._coordinates.copy(),this._factory)}},{key:"equalsExact",value:function(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&(!(!this.isEmpty()||!t.isEmpty())||this.isEmpty()===t.isEmpty()&&this.equal(t.getCoordinate(),this.getCoordinate(),e))}return f(i(s.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){}},{key:"getCoordinate",value:function(){return 0!==this._coordinates.size()?this._coordinates.getCoordinate(0):null}},{key:"getBoundaryDimension",value:function(){return Mt.FALSE}},{key:"reverseInternal",value:function(){return this.getFactory().createPoint(this._coordinates.copy())}},{key:"getTypeCode",value:function(){return U.TYPECODE_POINT}},{key:"getDimension",value:function(){return 0}},{key:"getNumPoints",value:function(){return this.isEmpty()?0:1}},{key:"getX",value:function(){if(null===this.getCoordinate())throw new IllegalStateException("getX called on empty Point");return this.getCoordinate().x}},{key:"compareToSameClass",value:function(){if(1===arguments.length){var t=arguments[0];return this.getCoordinate().compareTo(t.getCoordinate())}if(2===arguments.length){var e=arguments[0];return arguments[1].compare(this._coordinates,e._coordinates)}}},{key:"apply",value:function(){if(ot(arguments[0],wt)){var t=arguments[0];if(this.isEmpty())return null;t.filter(this.getCoordinate())}else if(ot(arguments[0],Pt)){var e=arguments[0];if(this.isEmpty())return null;e.filter(this._coordinates,0),e.isGeometryChanged()&&this.geometryChanged()}else(ot(arguments[0],Lt)||ot(arguments[0],E))&&arguments[0].filter(this)}},{key:"getBoundary",value:function(){return this.getFactory().createGeometryCollection()}},{key:"getGeometryType",value:function(){return U.TYPENAME_POINT}},{key:"getCoordinateSequence",value:function(){return this._coordinates}},{key:"getY",value:function(){if(null===this.getCoordinate())throw new IllegalStateException("getY called on empty Point");return this.getCoordinate().y}},{key:"isEmpty",value:function(){return 0===this._coordinates.size()}},{key:"init",value:function(t){null===t&&(t=this.getFactory().getCoordinateSequenceFactory().create([])),V.isTrue(t.size()<=1),this._coordinates=t}},{key:"isSimple",value:function(){return!0}},{key:"interfaces_",get:function(){return[Tt]}}],[{key:"constructor_",value:function(){this._coordinates=null;var t=arguments[0],e=arguments[1];U.constructor_.call(this,e),this.init(t)}}]),s}(U),Rt=function(){function e(){t(this,e)}return n(e,null,[{key:"ofRing",value:function(){if(arguments[0]instanceof Array){var t=arguments[0];return Math.abs(e.ofRingSigned(t))}if(ot(arguments[0],ct)){var n=arguments[0];return Math.abs(e.ofRingSigned(n))}}},{key:"ofRingSigned",value:function(){if(arguments[0]instanceof Array){var t=arguments[0];if(t.length<3)return 0;for(var e=0,n=t[0].x,r=1;r<t.length-1;r++){var i=t[r].x-n,o=t[r+1].y;e+=i*(t[r-1].y-o)}return e/2}if(ot(arguments[0],ct)){var s=arguments[0],a=s.size();if(a<3)return 0;var u=new z,l=new z,h=new z;s.getCoordinate(0,l),s.getCoordinate(1,h);var c=l.x;h.x-=c;for(var f=0,g=1;g<a-1;g++)u.y=l.y,l.x=h.x,l.y=h.y,s.getCoordinate(g+1,h),h.x-=c,f+=l.x*(u.y-h.y);return f/2}}}]),e}(),At=function(){function e(){t(this,e)}return n(e,null,[{key:"sort",value:function(){var t=arguments,e=arguments[0];if(1===arguments.length)e.sort((function(t,e){return t.compareTo(e)}));else if(2===arguments.length)e.sort((function(e,n){return t[1].compare(e,n)}));else if(3===arguments.length){var n=e.slice(arguments[1],arguments[2]);n.sort();var r=e.slice(0,arguments[1]).concat(n,e.slice(arguments[2],e.length));e.splice(0,e.length);var i,o=d(r);try{for(o.s();!(i=o.n()).done;){var s=i.value;e.push(s)}}catch(t){o.e(t)}finally{o.f()}}else if(4===arguments.length){var a=e.slice(arguments[1],arguments[2]);a.sort((function(e,n){return t[3].compare(e,n)}));var u=e.slice(0,arguments[1]).concat(a,e.slice(arguments[2],e.length));e.splice(0,e.length);var l,h=d(u);try{for(h.s();!(l=h.n()).done;){var c=l.value;e.push(c)}}catch(t){h.e(t)}finally{h.f()}}}},{key:"asList",value:function(t){var e,n=new dt,r=d(t);try{for(r.s();!(e=r.n()).done;){var i=e.value;n.add(i)}}catch(t){r.e(t)}finally{r.f()}return n}},{key:"copyOf",value:function(t,e){return t.slice(0,e)}}]),e}(),Dt=function e(){t(this,e)},Ft=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"computeEnvelopeInternal",value:function(){return this._shell.getEnvelopeInternal()}},{key:"getCoordinates",value:function(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=this._shell.getCoordinates(),r=0;r<n.length;r++)t[++e]=n[r];for(var i=0;i<this._holes.length;i++)for(var o=this._holes[i].getCoordinates(),s=0;s<o.length;s++)t[++e]=o[s];return t}},{key:"getArea",value:function(){var t=0;t+=Rt.ofRing(this._shell.getCoordinateSequence());for(var e=0;e<this._holes.length;e++)t-=Rt.ofRing(this._holes[e].getCoordinateSequence());return t}},{key:"copyInternal",value:function(){for(var t=this._shell.copy(),e=new Array(this._holes.length).fill(null),n=0;n<this._holes.length;n++)e[n]=this._holes[n].copy();return new s(t,e,this._factory)}},{key:"isRectangle",value:function(){if(0!==this.getNumInteriorRing())return!1;if(null===this._shell)return!1;if(5!==this._shell.getNumPoints())return!1;for(var t=this._shell.getCoordinateSequence(),e=this.getEnvelopeInternal(),n=0;n<5;n++){var r=t.getX(n);if(r!==e.getMinX()&&r!==e.getMaxX())return!1;var i=t.getY(n);if(i!==e.getMinY()&&i!==e.getMaxY())return!1}for(var o=t.getX(0),s=t.getY(0),a=1;a<=4;a++){var u=t.getX(a),l=t.getY(a);if(u!==o==(l!==s))return!1;o=u,s=l}return!0}},{key:"equalsExact",value:function(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t,r=this._shell,o=n._shell;if(!r.equalsExact(o,e))return!1;if(this._holes.length!==n._holes.length)return!1;for(var a=0;a<this._holes.length;a++)if(!this._holes[a].equalsExact(n._holes[a],e))return!1;return!0}return f(i(s.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){if(0===arguments.length){this._shell=this.normalized(this._shell,!0);for(var t=0;t<this._holes.length;t++)this._holes[t]=this.normalized(this._holes[t],!1);At.sort(this._holes)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(e.isEmpty())return null;var r=e.getCoordinateSequence(),i=St.minCoordinateIndex(r,0,r.size()-2);St.scroll(r,i,!0),ft.isCCW(r)===n&&St.reverse(r)}}},{key:"getCoordinate",value:function(){return this._shell.getCoordinate()}},{key:"getNumInteriorRing",value:function(){return this._holes.length}},{key:"getBoundaryDimension",value:function(){return 1}},{key:"reverseInternal",value:function(){for(var t=this.getExteriorRing().reverse(),e=new Array(this.getNumInteriorRing()).fill(null),n=0;n<e.length;n++)e[n]=this.getInteriorRingN(n).reverse();return this.getFactory().createPolygon(t,e)}},{key:"getTypeCode",value:function(){return U.TYPECODE_POLYGON}},{key:"getDimension",value:function(){return 2}},{key:"getLength",value:function(){var t=0;t+=this._shell.getLength();for(var e=0;e<this._holes.length;e++)t+=this._holes[e].getLength();return t}},{key:"getNumPoints",value:function(){for(var t=this._shell.getNumPoints(),e=0;e<this._holes.length;e++)t+=this._holes[e].getNumPoints();return t}},{key:"convexHull",value:function(){return this.getExteriorRing().convexHull()}},{key:"normalized",value:function(t,e){var n=t.copy();return this.normalize(n,e),n}},{key:"compareToSameClass",value:function(){if(1===arguments.length){var t=arguments[0],e=this._shell,n=t._shell;return e.compareToSameClass(n)}if(2===arguments.length){var r=arguments[1],i=arguments[0],o=this._shell,s=i._shell,a=o.compareToSameClass(s,r);if(0!==a)return a;for(var u=this.getNumInteriorRing(),l=i.getNumInteriorRing(),h=0;h<u&&h<l;){var c=this.getInteriorRingN(h),f=i.getInteriorRingN(h),g=c.compareToSameClass(f,r);if(0!==g)return g;h++}return h<u?1:h<l?-1:0}}},{key:"apply",value:function(){if(ot(arguments[0],wt)){var t=arguments[0];this._shell.apply(t);for(var e=0;e<this._holes.length;e++)this._holes[e].apply(t)}else if(ot(arguments[0],Pt)){var n=arguments[0];if(this._shell.apply(n),!n.isDone())for(var r=0;r<this._holes.length&&(this._holes[r].apply(n),!n.isDone());r++);n.isGeometryChanged()&&this.geometryChanged()}else if(ot(arguments[0],Lt))arguments[0].filter(this);else if(ot(arguments[0],E)){var i=arguments[0];i.filter(this),this._shell.apply(i);for(var o=0;o<this._holes.length;o++)this._holes[o].apply(i)}}},{key:"getBoundary",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();var t=new Array(this._holes.length+1).fill(null);t[0]=this._shell;for(var e=0;e<this._holes.length;e++)t[e+1]=this._holes[e];return t.length<=1?this.getFactory().createLinearRing(t[0].getCoordinateSequence()):this.getFactory().createMultiLineString(t)}},{key:"getGeometryType",value:function(){return U.TYPENAME_POLYGON}},{key:"getExteriorRing",value:function(){return this._shell}},{key:"isEmpty",value:function(){return this._shell.isEmpty()}},{key:"getInteriorRingN",value:function(t){return this._holes[t]}},{key:"interfaces_",get:function(){return[Dt]}}],[{key:"constructor_",value:function(){this._shell=null,this._holes=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(U.constructor_.call(this,n),null===t&&(t=this.getFactory().createLinearRing()),null===e&&(e=[]),U.hasNullElements(e))throw new x("holes must not contain null elements");if(t.isEmpty()&&U.hasNonEmptyElements(e))throw new x("shell is empty but holes are not");this._shell=t,this._holes=e}}]),s}(U),qt=function(e){r(i,e);var n=c(i);function i(){return t(this,i),n.apply(this,arguments)}return i}(K),Vt=function(e){r(o,e);var i=c(o);function o(e){var n;return t(this,o),(n=i.call(this)).array=[],e instanceof H&&n.addAll(e),n}return n(o,[{key:"contains",value:function(t){var e,n=d(this.array);try{for(n.s();!(e=n.n()).done;)if(0===e.value.compareTo(t))return!0}catch(t){n.e(t)}finally{n.f()}return!1}},{key:"add",value:function(t){if(this.contains(t))return!1;for(var e=0,n=this.array.length;e<n;e++)if(1===this.array[e].compareTo(t))return!!this.array.splice(e,0,t);return this.array.push(t),!0}},{key:"addAll",value:function(t){var e,n=d(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;this.add(r)}}catch(t){n.e(t)}finally{n.f()}return!0}},{key:"remove",value:function(){throw new J}},{key:"size",value:function(){return this.array.length}},{key:"isEmpty",value:function(){return 0===this.array.length}},{key:"toArray",value:function(){return this.array.slice()}},{key:"iterator",value:function(){return new Gt(this.array)}}]),o}(qt),Gt=function(){function e(n){t(this,e),this.array=n,this.position=0}return n(e,[{key:"next",value:function(){if(this.position===this.array.length)throw new W;return this.array[this.position++]}},{key:"hasNext",value:function(){return this.position<this.array.length}},{key:"remove",value:function(){throw new J}}]),e}(),Bt=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"computeEnvelopeInternal",value:function(){for(var t=new X,e=0;e<this._geometries.length;e++)t.expandToInclude(this._geometries[e].getEnvelopeInternal());return t}},{key:"getGeometryN",value:function(t){return this._geometries[t]}},{key:"getCoordinates",value:function(){for(var t=new Array(this.getNumPoints()).fill(null),e=-1,n=0;n<this._geometries.length;n++)for(var r=this._geometries[n].getCoordinates(),i=0;i<r.length;i++)t[++e]=r[i];return t}},{key:"getArea",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getArea();return t}},{key:"copyInternal",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new s(t,this._factory)}},{key:"equalsExact",value:function(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];if(!this.isEquivalentClass(t))return!1;var n=t;if(this._geometries.length!==n._geometries.length)return!1;for(var r=0;r<this._geometries.length;r++)if(!this._geometries[r].equalsExact(n._geometries[r],e))return!1;return!0}return f(i(s.prototype),"equalsExact",this).apply(this,arguments)}},{key:"normalize",value:function(){for(var t=0;t<this._geometries.length;t++)this._geometries[t].normalize();At.sort(this._geometries)}},{key:"getCoordinate",value:function(){return this.isEmpty()?null:this._geometries[0].getCoordinate()}},{key:"getBoundaryDimension",value:function(){for(var t=Mt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getBoundaryDimension());return t}},{key:"reverseInternal",value:function(){for(var t=this._geometries.length,e=new dt(t),n=0;n<t;n++)e.add(this._geometries[n].reverse());return this.getFactory().buildGeometry(e)}},{key:"getTypeCode",value:function(){return U.TYPECODE_GEOMETRYCOLLECTION}},{key:"getDimension",value:function(){for(var t=Mt.FALSE,e=0;e<this._geometries.length;e++)t=Math.max(t,this._geometries[e].getDimension());return t}},{key:"getLength",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getLength();return t}},{key:"getNumPoints",value:function(){for(var t=0,e=0;e<this._geometries.length;e++)t+=this._geometries[e].getNumPoints();return t}},{key:"getNumGeometries",value:function(){return this._geometries.length}},{key:"compareToSameClass",value:function(){if(1===arguments.length){var t=arguments[0],e=new Vt(At.asList(this._geometries)),n=new Vt(At.asList(t._geometries));return this.compare(e,n)}if(2===arguments.length){for(var r=arguments[1],i=arguments[0],o=this.getNumGeometries(),s=i.getNumGeometries(),a=0;a<o&&a<s;){var u=this.getGeometryN(a),l=i.getGeometryN(a),h=u.compareToSameClass(l,r);if(0!==h)return h;a++}return a<o?1:a<s?-1:0}}},{key:"apply",value:function(){if(ot(arguments[0],wt))for(var t=arguments[0],e=0;e<this._geometries.length;e++)this._geometries[e].apply(t);else if(ot(arguments[0],Pt)){var n=arguments[0];if(0===this._geometries.length)return null;for(var r=0;r<this._geometries.length&&(this._geometries[r].apply(n),!n.isDone());r++);n.isGeometryChanged()&&this.geometryChanged()}else if(ot(arguments[0],Lt)){var i=arguments[0];i.filter(this);for(var o=0;o<this._geometries.length;o++)this._geometries[o].apply(i)}else if(ot(arguments[0],E)){var s=arguments[0];s.filter(this);for(var a=0;a<this._geometries.length;a++)this._geometries[a].apply(s)}}},{key:"getBoundary",value:function(){return U.checkNotGeometryCollection(this),V.shouldNeverReachHere(),null}},{key:"getGeometryType",value:function(){return U.TYPENAME_GEOMETRYCOLLECTION}},{key:"isEmpty",value:function(){for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isEmpty())return!1;return!0}}],[{key:"constructor_",value:function(){if(this._geometries=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];if(U.constructor_.call(this,e),null===t&&(t=[]),U.hasNullElements(t))throw new x("geometries must not contain null elements");this._geometries=t}}}]),s}(U),Yt=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"copyInternal",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new s(t,this._factory)}},{key:"isValid",value:function(){return!0}},{key:"equalsExact",value:function(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(i(s.prototype),"equalsExact",this).call(this,t,e)}return f(i(s.prototype),"equalsExact",this).apply(this,arguments)}},{key:"getCoordinate",value:function(){if(1===arguments.length&&Number.isInteger(arguments[0])){var t=arguments[0];return this._geometries[t].getCoordinate()}return f(i(s.prototype),"getCoordinate",this).apply(this,arguments)}},{key:"getBoundaryDimension",value:function(){return Mt.FALSE}},{key:"getTypeCode",value:function(){return U.TYPECODE_MULTIPOINT}},{key:"getDimension",value:function(){return 0}},{key:"getBoundary",value:function(){return this.getFactory().createGeometryCollection()}},{key:"getGeometryType",value:function(){return U.TYPENAME_MULTIPOINT}},{key:"interfaces_",get:function(){return[Tt]}}],[{key:"constructor_",value:function(){var t=arguments[0],e=arguments[1];Bt.constructor_.call(this,t,e)}}]),s}(Bt),zt=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"copyInternal",value:function(){return new s(this._points.copy(),this._factory)}},{key:"getBoundaryDimension",value:function(){return Mt.FALSE}},{key:"isClosed",value:function(){return!!this.isEmpty()||f(i(s.prototype),"isClosed",this).call(this)}},{key:"reverseInternal",value:function(){var t=this._points.copy();return St.reverse(t),this.getFactory().createLinearRing(t)}},{key:"getTypeCode",value:function(){return U.TYPECODE_LINEARRING}},{key:"validateConstruction",value:function(){if(!this.isEmpty()&&!f(i(s.prototype),"isClosed",this).call(this))throw new x("Points of LinearRing do not form a closed linestring");if(this.getCoordinateSequence().size()>=1&&this.getCoordinateSequence().size()<s.MINIMUM_VALID_SIZE)throw new x("Invalid number of points in LinearRing (found "+this.getCoordinateSequence().size()+" - must be 0 or >= 4)")}},{key:"getGeometryType",value:function(){return U.TYPENAME_LINEARRING}}],[{key:"constructor_",value:function(){var t=arguments[0],e=arguments[1];Ct.constructor_.call(this,t,e),this.validateConstruction()}}]),s}(Ct);zt.MINIMUM_VALID_SIZE=4;var jt=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,[{key:"setOrdinate",value:function(t,e){switch(t){case o.X:this.x=e;break;case o.Y:this.y=e;break;default:throw new x("Invalid ordinate index: "+t)}}},{key:"getZ",value:function(){return z.NULL_ORDINATE}},{key:"getOrdinate",value:function(t){switch(t){case o.X:return this.x;case o.Y:return this.y}throw new x("Invalid ordinate index: "+t)}},{key:"setZ",value:function(t){throw new x("CoordinateXY dimension 2 does not support z-ordinate")}},{key:"copy",value:function(){return new o(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+")"}},{key:"setCoordinate",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ()}}],[{key:"constructor_",value:function(){if(0===arguments.length)z.constructor_.call(this);else if(1===arguments.length){if(arguments[0]instanceof o){var t=arguments[0];z.constructor_.call(this,t.x,t.y)}else if(arguments[0]instanceof z){var e=arguments[0];z.constructor_.call(this,e.x,e.y)}}else if(2===arguments.length){var n=arguments[0],r=arguments[1];z.constructor_.call(this,n,r,z.NULL_ORDINATE)}}}]),o}(z);jt.X=0,jt.Y=1,jt.Z=-1,jt.M=-1;var Xt=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,[{key:"getM",value:function(){return this._m}},{key:"setOrdinate",value:function(t,e){switch(t){case o.X:this.x=e;break;case o.Y:this.y=e;break;case o.M:this._m=e;break;default:throw new x("Invalid ordinate index: "+t)}}},{key:"setM",value:function(t){this._m=t}},{key:"getZ",value:function(){return z.NULL_ORDINATE}},{key:"getOrdinate",value:function(t){switch(t){case o.X:return this.x;case o.Y:return this.y;case o.M:return this._m}throw new x("Invalid ordinate index: "+t)}},{key:"setZ",value:function(t){throw new x("CoordinateXY dimension 2 does not support z-ordinate")}},{key:"copy",value:function(){return new o(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+" m="+this.getM()+")"}},{key:"setCoordinate",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:"constructor_",value:function(){if(this._m=null,0===arguments.length)z.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof o){var t=arguments[0];z.constructor_.call(this,t.x,t.y),this._m=t._m}else if(arguments[0]instanceof z){var e=arguments[0];z.constructor_.call(this,e.x,e.y),this._m=this.getM()}}else if(3===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2];z.constructor_.call(this,n,r,z.NULL_ORDINATE),this._m=i}}}]),o}(z);Xt.X=0,Xt.Y=1,Xt.Z=-1,Xt.M=2;var Ut=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,[{key:"getM",value:function(){return this._m}},{key:"setOrdinate",value:function(t,e){switch(t){case z.X:this.x=e;break;case z.Y:this.y=e;break;case z.Z:this.z=e;break;case z.M:this._m=e;break;default:throw new x("Invalid ordinate index: "+t)}}},{key:"setM",value:function(t){this._m=t}},{key:"getOrdinate",value:function(t){switch(t){case z.X:return this.x;case z.Y:return this.y;case z.Z:return this.getZ();case z.M:return this.getM()}throw new x("Invalid ordinate index: "+t)}},{key:"copy",value:function(){return new o(this)}},{key:"toString",value:function(){return"("+this.x+", "+this.y+", "+this.getZ()+" m="+this.getM()+")"}},{key:"setCoordinate",value:function(t){this.x=t.x,this.y=t.y,this.z=t.getZ(),this._m=t.getM()}}],[{key:"constructor_",value:function(){if(this._m=null,0===arguments.length)z.constructor_.call(this),this._m=0;else if(1===arguments.length){if(arguments[0]instanceof o){var t=arguments[0];z.constructor_.call(this,t),this._m=t._m}else if(arguments[0]instanceof z){var e=arguments[0];z.constructor_.call(this,e),this._m=this.getM()}}else if(4===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2],s=arguments[3];z.constructor_.call(this,n,r,i),this._m=s}}}]),o}(z),Zt=function(){function e(){t(this,e)}return n(e,null,[{key:"measures",value:function(t){return t instanceof jt?0:t instanceof Xt||t instanceof Ut?1:0}},{key:"dimension",value:function(t){return t instanceof jt?2:t instanceof Xt?3:t instanceof Ut?4:3}},{key:"create",value:function(){if(1===arguments.length){var t=arguments[0];return e.create(t,0)}if(2===arguments.length){var n=arguments[0],r=arguments[1];return 2===n?new jt:3===n&&0===r?new z:3===n&&1===r?new Xt:4===n&&1===r?new Ut:new z}}}]),e}(),Ht=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"getCoordinate",value:function(t){return this.get(t)}},{key:"addAll",value:function(){if(2===arguments.length&&"boolean"==typeof arguments[1]&&ot(arguments[0],H)){for(var t=arguments[1],e=!1,n=arguments[0].iterator();n.hasNext();)this.add(n.next(),t),e=!0;return e}return f(i(s.prototype),"addAll",this).apply(this,arguments)}},{key:"clone",value:function(){for(var t=f(i(s.prototype),"clone",this).call(this),e=0;e<this.size();e++)t.add(e,this.get(e).clone());return t}},{key:"toCoordinateArray",value:function(){if(0===arguments.length)return this.toArray(s.coordArrayType);if(1===arguments.length){if(arguments[0])return this.toArray(s.coordArrayType);for(var t=this.size(),e=new Array(t).fill(null),n=0;n<t;n++)e[n]=this.get(t-n-1);return e}}},{key:"add",value:function(){if(1===arguments.length){var t=arguments[0];return f(i(s.prototype),"add",this).call(this,t)}if(2===arguments.length){if(arguments[0]instanceof Array&&"boolean"==typeof arguments[1]){var e=arguments[0],n=arguments[1];return this.add(e,n,!0),!0}if(arguments[0]instanceof z&&"boolean"==typeof arguments[1]){var r=arguments[0];if(!arguments[1]&&this.size()>=1&&this.get(this.size()-1).equals2D(r))return null;f(i(s.prototype),"add",this).call(this,r)}else if(arguments[0]instanceof Object&&"boolean"==typeof arguments[1]){var o=arguments[0],a=arguments[1];return this.add(o,a),!0}}else if(3===arguments.length){if("boolean"==typeof arguments[2]&&arguments[0]instanceof Array&&"boolean"==typeof arguments[1]){var u=arguments[0],l=arguments[1];if(arguments[2])for(var h=0;h<u.length;h++)this.add(u[h],l);else for(var c=u.length-1;c>=0;c--)this.add(u[c],l);return!0}if("boolean"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof z){var g=arguments[0],p=arguments[1];if(!arguments[2]){var v=this.size();if(v>0){if(g>0&&this.get(g-1).equals2D(p))return null;if(g<v&&this.get(g).equals2D(p))return null}}f(i(s.prototype),"add",this).call(this,g,p)}}else if(4===arguments.length){var d=arguments[0],y=arguments[1],m=arguments[2],_=arguments[3],x=1;m>_&&(x=-1);for(var E=m;E!==_;E+=x)this.add(d[E],y);return!0}}},{key:"closeRing",value:function(){if(this.size()>0){var t=this.get(0).copy();this.add(t,!1)}}}],[{key:"constructor_",value:function(){if(0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.ensureCapacity(t.length),this.add(t,!0)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.ensureCapacity(e.length),this.add(e,n)}}}]),s}(dt);Ht.coordArrayType=new Array(0).fill(null);var Wt=function(){function e(){t(this,e)}return n(e,null,[{key:"isRing",value:function(t){return!(t.length<4||!t[0].equals2D(t[t.length-1]))}},{key:"ptNotInList",value:function(t,n){for(var r=0;r<t.length;r++){var i=t[r];if(e.indexOf(i,n)<0)return i}return null}},{key:"scroll",value:function(t,n){var r=e.indexOf(n,t);if(r<0)return null;var i=new Array(t.length).fill(null);xt.arraycopy(t,r,i,0,t.length-r),xt.arraycopy(t,0,i,t.length-r,r),xt.arraycopy(i,0,t,0,t.length)}},{key:"equals",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(t===e)return!0;if(null===t||null===e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!t[n].equals(e[n]))return!1;return!0}if(3===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2];if(r===i)return!0;if(null===r||null===i)return!1;if(r.length!==i.length)return!1;for(var s=0;s<r.length;s++)if(0!==o.compare(r[s],i[s]))return!1;return!0}}},{key:"intersection",value:function(t,e){for(var n=new Ht,r=0;r<t.length;r++)e.intersects(t[r])&&n.add(t[r],!0);return n.toCoordinateArray()}},{key:"measures",value:function(t){if(null===t||0===t.length)return 0;var e,n=0,r=d(t);try{for(r.s();!(e=r.n()).done;){var i=e.value;n=Math.max(n,Zt.measures(i))}}catch(t){r.e(t)}finally{r.f()}return n}},{key:"hasRepeatedPoints",value:function(t){for(var e=1;e<t.length;e++)if(t[e-1].equals(t[e]))return!0;return!1}},{key:"removeRepeatedPoints",value:function(t){return e.hasRepeatedPoints(t)?new Ht(t,!1).toCoordinateArray():t}},{key:"reverse",value:function(t){for(var e=t.length-1,n=Math.trunc(e/2),r=0;r<=n;r++){var i=t[r];t[r]=t[e-r],t[e-r]=i}}},{key:"removeNull",value:function(t){for(var e=0,n=0;n<t.length;n++)null!==t[n]&&e++;var r=new Array(e).fill(null);if(0===e)return r;for(var i=0,o=0;o<t.length;o++)null!==t[o]&&(r[i++]=t[o]);return r}},{key:"copyDeep",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new Array(t.length).fill(null),n=0;n<t.length;n++)e[n]=t[n].copy();return e}if(5===arguments.length)for(var r=arguments[0],i=arguments[1],o=arguments[2],s=arguments[3],a=arguments[4],u=0;u<a;u++)o[s+u]=r[i+u].copy()}},{key:"isEqualReversed",value:function(t,e){for(var n=0;n<t.length;n++){var r=t[n],i=e[t.length-n-1];if(0!==r.compareTo(i))return!1}return!0}},{key:"envelope",value:function(t){for(var e=new X,n=0;n<t.length;n++)e.expandToInclude(t[n]);return e}},{key:"toCoordinateArray",value:function(t){return t.toArray(e.coordArrayType)}},{key:"dimension",value:function(t){if(null===t||0===t.length)return 3;var e,n=0,r=d(t);try{for(r.s();!(e=r.n()).done;){var i=e.value;n=Math.max(n,Zt.dimension(i))}}catch(t){r.e(t)}finally{r.f()}return n}},{key:"atLeastNCoordinatesOrNothing",value:function(t,e){return e.length>=t?e:[]}},{key:"indexOf",value:function(t,e){for(var n=0;n<e.length;n++)if(t.equals(e[n]))return n;return-1}},{key:"increasingDirection",value:function(t){for(var e=0;e<Math.trunc(t.length/2);e++){var n=t.length-1-e,r=t[e].compareTo(t[n]);if(0!==r)return r}return 1}},{key:"compare",value:function(t,e){for(var n=0;n<t.length&&n<e.length;){var r=t[n].compareTo(e[n]);if(0!==r)return r;n++}return n<e.length?-1:n<t.length?1:0}},{key:"minCoordinate",value:function(t){for(var e=null,n=0;n<t.length;n++)(null===e||e.compareTo(t[n])>0)&&(e=t[n]);return e}},{key:"extract",value:function(t,e,n){e=Et.clamp(e,0,t.length);var r=(n=Et.clamp(n,-1,t.length))-e+1;n<0&&(r=0),e>=t.length&&(r=0),n<e&&(r=0);var i=new Array(r).fill(null);if(0===r)return i;for(var o=0,s=e;s<=n;s++)i[o++]=t[s];return i}}]),e}(),Jt=function(){function e(){t(this,e)}return n(e,[{key:"compare",value:function(t,e){var n=t,r=e;return Wt.compare(n,r)}},{key:"interfaces_",get:function(){return[D]}}]),e}(),Kt=function(){function e(){t(this,e)}return n(e,[{key:"compare",value:function(t,e){var n=t,r=e;if(n.length<r.length)return-1;if(n.length>r.length)return 1;if(0===n.length)return 0;var i=Wt.compare(n,r);return Wt.isEqualReversed(n,r)?0:i}},{key:"OLDcompare",value:function(t,e){var n=t,r=e;if(n.length<r.length)return-1;if(n.length>r.length)return 1;if(0===n.length)return 0;for(var i=Wt.increasingDirection(n),o=Wt.increasingDirection(r),s=i>0?0:n.length-1,a=o>0?0:n.length-1,u=0;u<n.length;u++){var l=n[s].compareTo(r[a]);if(0!==l)return l;s+=i,a+=o}return 0}},{key:"interfaces_",get:function(){return[D]}}]),e}();Wt.ForwardComparator=Jt,Wt.BidirectionalComparator=Kt,Wt.coordArrayType=new Array(0).fill(null);var Qt=function(){function e(n){t(this,e),this.str=n}return n(e,[{key:"append",value:function(t){this.str+=t}},{key:"setCharAt",value:function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)}},{key:"toString",value:function(){return this.str}}]),e}(),$t=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getM",value:function(t){return this.hasM()?this._coordinates[t].getM():A.NaN}},{key:"setOrdinate",value:function(t,e,n){switch(e){case ct.X:this._coordinates[t].x=n;break;case ct.Y:this._coordinates[t].y=n;break;default:this._coordinates[t].setOrdinate(e,n)}}},{key:"getZ",value:function(t){return this.hasZ()?this._coordinates[t].getZ():A.NaN}},{key:"size",value:function(){return this._coordinates.length}},{key:"getOrdinate",value:function(t,e){switch(e){case ct.X:return this._coordinates[t].x;case ct.Y:return this._coordinates[t].y;default:return this._coordinates[t].getOrdinate(e)}}},{key:"getCoordinate",value:function(){if(1===arguments.length){var t=arguments[0];return this._coordinates[t]}if(2===arguments.length){var e=arguments[0];arguments[1].setCoordinate(this._coordinates[e])}}},{key:"getCoordinateCopy",value:function(t){var e=this.createCoordinate();return e.setCoordinate(this._coordinates[t]),e}},{key:"createCoordinate",value:function(){return Zt.create(this.getDimension(),this.getMeasures())}},{key:"getDimension",value:function(){return this._dimension}},{key:"getX",value:function(t){return this._coordinates[t].x}},{key:"getMeasures",value:function(){return this._measures}},{key:"expandEnvelope",value:function(t){for(var e=0;e<this._coordinates.length;e++)t.expandToInclude(this._coordinates[e]);return t}},{key:"copy",value:function(){for(var t=new Array(this.size()).fill(null),n=0;n<this._coordinates.length;n++){var r=this.createCoordinate();r.setCoordinate(this._coordinates[n]),t[n]=r}return new e(t,this._dimension,this._measures)}},{key:"toString",value:function(){if(this._coordinates.length>0){var t=new Qt(17*this._coordinates.length);t.append("("),t.append(this._coordinates[0]);for(var e=1;e<this._coordinates.length;e++)t.append(", "),t.append(this._coordinates[e]);return t.append(")"),t.toString()}return"()"}},{key:"getY",value:function(t){return this._coordinates[t].y}},{key:"toCoordinateArray",value:function(){return this._coordinates}},{key:"interfaces_",get:function(){return[ct,w]}}],[{key:"constructor_",value:function(){if(this._dimension=3,this._measures=0,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];e.constructor_.call(this,t,Wt.dimension(t),Wt.measures(t))}else if(Number.isInteger(arguments[0])){var n=arguments[0];this._coordinates=new Array(n).fill(null);for(var r=0;r<n;r++)this._coordinates[r]=new z}else if(ot(arguments[0],ct)){var i=arguments[0];if(null===i)return this._coordinates=new Array(0).fill(null),null;this._dimension=i.getDimension(),this._measures=i.getMeasures(),this._coordinates=new Array(i.size()).fill(null);for(var o=0;o<this._coordinates.length;o++)this._coordinates[o]=i.getCoordinateCopy(o)}}else if(2===arguments.length){if(arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var s=arguments[0],a=arguments[1];e.constructor_.call(this,s,a,Wt.measures(s))}else if(Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var u=arguments[0],l=arguments[1];this._coordinates=new Array(u).fill(null),this._dimension=l;for(var h=0;h<u;h++)this._coordinates[h]=Zt.create(l)}}else if(3===arguments.length)if(Number.isInteger(arguments[2])&&arguments[0]instanceof Array&&Number.isInteger(arguments[1])){var c=arguments[0],f=arguments[1],g=arguments[2];this._dimension=f,this._measures=g,this._coordinates=null===c?new Array(0).fill(null):c}else if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var p=arguments[0],v=arguments[1],d=arguments[2];this._coordinates=new Array(p).fill(null),this._dimension=v,this._measures=d;for(var y=0;y<p;y++)this._coordinates[y]=this.createCoordinate()}}}]),e}(),te=function(){function e(){t(this,e)}return n(e,[{key:"readResolve",value:function(){return e.instance()}},{key:"create",value:function(){if(1===arguments.length){if(arguments[0]instanceof Array)return new $t(arguments[0]);if(ot(arguments[0],ct))return new $t(arguments[0])}else{if(2===arguments.length){var t=arguments[1];return t>3&&(t=3),t<2&&(t=2),new $t(arguments[0],t)}if(3===arguments.length){var e=arguments[2],n=arguments[1]-e;return e>1&&(e=1),n>3&&(n=3),n<2&&(n=2),new $t(arguments[0],n+e,e)}}}},{key:"interfaces_",get:function(){return[bt,w]}}],[{key:"instance",value:function(){return e.instanceObject}}]),e}();te.instanceObject=new te;var ee=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"copyInternal",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new s(t,this._factory)}},{key:"equalsExact",value:function(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(i(s.prototype),"equalsExact",this).call(this,t,e)}return f(i(s.prototype),"equalsExact",this).apply(this,arguments)}},{key:"getBoundaryDimension",value:function(){return 1}},{key:"getTypeCode",value:function(){return U.TYPECODE_MULTIPOLYGON}},{key:"getDimension",value:function(){return 2}},{key:"getBoundary",value:function(){if(this.isEmpty())return this.getFactory().createMultiLineString();for(var t=new dt,e=0;e<this._geometries.length;e++)for(var n=this._geometries[e].getBoundary(),r=0;r<n.getNumGeometries();r++)t.add(n.getGeometryN(r));var i=new Array(t.size()).fill(null);return this.getFactory().createMultiLineString(t.toArray(i))}},{key:"getGeometryType",value:function(){return U.TYPENAME_MULTIPOLYGON}},{key:"interfaces_",get:function(){return[Dt]}}],[{key:"constructor_",value:function(){var t=arguments[0],e=arguments[1];Bt.constructor_.call(this,t,e)}}]),s}(Bt),ne=function(){function e(){t(this,e)}return n(e,[{key:"get",value:function(){}},{key:"put",value:function(){}},{key:"size",value:function(){}},{key:"values",value:function(){}},{key:"entrySet",value:function(){}}]),e}(),re=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),(e=i.call(this)).map=new Map,e}return n(o,[{key:"get",value:function(t){return this.map.get(t)||null}},{key:"put",value:function(t,e){return this.map.set(t,e),e}},{key:"values",value:function(){for(var t=new dt,e=this.map.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t}},{key:"entrySet",value:function(){var t=new Q;return this.map.entries().forEach((function(e){return t.add(e)})),t}},{key:"size",value:function(){return this.map.size()}}]),o}(ne),ie=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"equals",value:function(t){if(!(t instanceof e))return!1;var n=t;return this._modelType===n._modelType&&this._scale===n._scale}},{key:"compareTo",value:function(t){var e=t,n=this.getMaximumSignificantDigits(),r=e.getMaximumSignificantDigits();return at.compare(n,r)}},{key:"getScale",value:function(){return this._scale}},{key:"isFloating",value:function(){return this._modelType===e.FLOATING||this._modelType===e.FLOATING_SINGLE}},{key:"getType",value:function(){return this._modelType}},{key:"toString",value:function(){var t="UNKNOWN";return this._modelType===e.FLOATING?t="Floating":this._modelType===e.FLOATING_SINGLE?t="Floating-Single":this._modelType===e.FIXED&&(t="Fixed (Scale="+this.getScale()+")"),t}},{key:"makePrecise",value:function(){if("number"==typeof arguments[0]){var t=arguments[0];return A.isNaN(t)||this._modelType===e.FLOATING_SINGLE?t:this._modelType===e.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof z){var n=arguments[0];if(this._modelType===e.FLOATING)return null;n.x=this.makePrecise(n.x),n.y=this.makePrecise(n.y)}}},{key:"getMaximumSignificantDigits",value:function(){var t=16;return this._modelType===e.FLOATING?t=16:this._modelType===e.FLOATING_SINGLE?t=6:this._modelType===e.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t}},{key:"setScale",value:function(t){this._scale=Math.abs(t)}},{key:"interfaces_",get:function(){return[w,k]}}],[{key:"constructor_",value:function(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=e.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof oe){var t=arguments[0];this._modelType=t,t===e.FIXED&&this.setScale(1)}else if("number"==typeof arguments[0]){var n=arguments[0];this._modelType=e.FIXED,this.setScale(n)}else if(arguments[0]instanceof e){var r=arguments[0];this._modelType=r._modelType,this._scale=r._scale}}},{key:"mostPrecise",value:function(t,e){return t.compareTo(e)>=0?t:e}}]),e}(),oe=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"readResolve",value:function(){return e.nameToTypeMap.get(this._name)}},{key:"toString",value:function(){return this._name}},{key:"interfaces_",get:function(){return[w]}}],[{key:"constructor_",value:function(){this._name=null;var t=arguments[0];this._name=t,e.nameToTypeMap.put(t,this)}}]),e}();oe.nameToTypeMap=new re,ie.Type=oe,ie.FIXED=new oe("FIXED"),ie.FLOATING=new oe("FLOATING"),ie.FLOATING_SINGLE=new oe("FLOATING SINGLE"),ie.maximumPreciseValue=9007199254740992;var se=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"copyInternal",value:function(){for(var t=new Array(this._geometries.length).fill(null),e=0;e<t.length;e++)t[e]=this._geometries[e].copy();return new s(t,this._factory)}},{key:"equalsExact",value:function(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof U){var t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&f(i(s.prototype),"equalsExact",this).call(this,t,e)}return f(i(s.prototype),"equalsExact",this).apply(this,arguments)}},{key:"getBoundaryDimension",value:function(){return this.isClosed()?Mt.FALSE:0}},{key:"isClosed",value:function(){if(this.isEmpty())return!1;for(var t=0;t<this._geometries.length;t++)if(!this._geometries[t].isClosed())return!1;return!0}},{key:"getTypeCode",value:function(){return U.TYPECODE_MULTILINESTRING}},{key:"getDimension",value:function(){return 1}},{key:"getBoundary",value:function(){throw new J}},{key:"getGeometryType",value:function(){return U.TYPENAME_MULTILINESTRING}},{key:"interfaces_",get:function(){return[Nt]}}],[{key:"constructor_",value:function(){var t=arguments[0],e=arguments[1];Bt.constructor_.call(this,t,e)}}]),s}(Bt),ae=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"createEmpty",value:function(t){switch(t){case-1:return this.createGeometryCollection();case 0:return this.createPoint();case 1:return this.createLineString();case 2:return this.createPolygon();default:throw new x("Invalid dimension: "+t)}}},{key:"toGeometry",value:function(t){return t.isNull()?this.createPoint():t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new z(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new z(t.getMinX(),t.getMinY()),new z(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new z(t.getMinX(),t.getMinY()),new z(t.getMinX(),t.getMaxY()),new z(t.getMaxX(),t.getMaxY()),new z(t.getMaxX(),t.getMinY()),new z(t.getMinX(),t.getMinY())]),null)}},{key:"createLineString",value:function(){if(0===arguments.length)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLineString(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(ot(arguments[0],ct))return new Ct(arguments[0],this)}}},{key:"createMultiLineString",value:function(){return 0===arguments.length?new se(null,this):1===arguments.length?new se(arguments[0],this):void 0}},{key:"buildGeometry",value:function(t){for(var n=null,r=!1,i=!1,o=t.iterator();o.hasNext();){var s=o.next(),a=s.getTypeCode();null===n&&(n=a),a!==n&&(r=!0),s instanceof Bt&&(i=!0)}if(null===n)return this.createGeometryCollection();if(r||i)return this.createGeometryCollection(e.toGeometryArray(t));var u=t.iterator().next();if(t.size()>1){if(u instanceof Ft)return this.createMultiPolygon(e.toPolygonArray(t));if(u instanceof Ct)return this.createMultiLineString(e.toLineStringArray(t));if(u instanceof Ot)return this.createMultiPoint(e.toPointArray(t));V.shouldNeverReachHere("Unhandled geometry type: "+u.getGeometryType())}return u}},{key:"createMultiPointFromCoords",value:function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)}},{key:"createPoint",value:function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof z){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(ot(arguments[0],ct))return new Ot(arguments[0],this)}}},{key:"getCoordinateSequenceFactory",value:function(){return this._coordinateSequenceFactory}},{key:"createPolygon",value:function(){if(0===arguments.length)return this.createPolygon(null,null);if(1===arguments.length){if(ot(arguments[0],ct)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof zt){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length)return new Ft(arguments[0],arguments[1],this)}},{key:"getSRID",value:function(){return this._SRID}},{key:"createGeometryCollection",value:function(){return 0===arguments.length?new Bt(null,this):1===arguments.length?new Bt(arguments[0],this):void 0}},{key:"getPrecisionModel",value:function(){return this._precisionModel}},{key:"createLinearRing",value:function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(ot(arguments[0],ct))return new zt(arguments[0],this)}}},{key:"createMultiPolygon",value:function(){return 0===arguments.length?new ee(null,this):1===arguments.length?new ee(arguments[0],this):void 0}},{key:"createMultiPoint",value:function(){if(0===arguments.length)return new Yt(null,this);if(1===arguments.length){if(arguments[0]instanceof Array)return new Yt(arguments[0],this);if(ot(arguments[0],ct)){var t=arguments[0];if(null===t)return this.createMultiPoint(new Array(0).fill(null));for(var e=new Array(t.size()).fill(null),n=0;n<t.size();n++){var r=this.getCoordinateSequenceFactory().create(1,t.getDimension(),t.getMeasures());St.copy(t,n,r,0,1),e[n]=this.createPoint(r)}return this.createMultiPoint(e)}}}},{key:"interfaces_",get:function(){return[w]}}],[{key:"constructor_",value:function(){if(this._precisionModel=null,this._coordinateSequenceFactory=null,this._SRID=null,0===arguments.length)e.constructor_.call(this,new ie,0);else if(1===arguments.length){if(ot(arguments[0],bt)){var t=arguments[0];e.constructor_.call(this,new ie,0,t)}else if(arguments[0]instanceof ie){var n=arguments[0];e.constructor_.call(this,n,0,e.getDefaultCoordinateSequenceFactory())}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];e.constructor_.call(this,r,i,e.getDefaultCoordinateSequenceFactory())}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this._precisionModel=o,this._coordinateSequenceFactory=a,this._SRID=s}}},{key:"toMultiPolygonArray",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"toGeometryArray",value:function(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"getDefaultCoordinateSequenceFactory",value:function(){return te.instance()}},{key:"toMultiLineStringArray",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"toLineStringArray",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"toMultiPointArray",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"toLinearRingArray",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"toPointArray",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"toPolygonArray",value:function(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}},{key:"createPointFromInternalCoord",value:function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)}}]),e}(),ue="XY",le="XYZ",he="XYM",ce="XYZM",fe={POINT:"Point",LINE_STRING:"LineString",LINEAR_RING:"LinearRing",POLYGON:"Polygon",MULTI_POINT:"MultiPoint",MULTI_LINE_STRING:"MultiLineString",MULTI_POLYGON:"MultiPolygon",GEOMETRY_COLLECTION:"GeometryCollection",CIRCLE:"Circle"},ge="EMPTY",pe=1,ve=2,de=3,ye=4,me=5,_e=6;for(var xe in fe)fe[xe].toUpperCase();var Ee=function(){function e(n){t(this,e),this.wkt=n,this.index_=-1}return n(e,[{key:"isAlpha_",value:function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"}},{key:"isNumeric_",value:function(t,e){return t>="0"&&t<="9"||"."==t&&!(void 0!==e&&e)}},{key:"isWhiteSpace_",value:function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t}},{key:"nextChar_",value:function(){return this.wkt.charAt(++this.index_)}},{key:"nextToken",value:function(){var t,e=this.nextChar_(),n=this.index_,r=e;if("("==e)t=ve;else if(","==e)t=me;else if(")"==e)t=de;else if(this.isNumeric_(e)||"-"==e)t=ye,r=this.readNumber_();else if(this.isAlpha_(e))t=pe,r=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(""!==e)throw new Error("Unexpected character: "+e);t=_e}return{position:n,value:r,type:t}}},{key:"readNumber_",value:function(){var t,e=this.index_,n=!1,r=!1;do{"."==t?n=!0:"e"!=t&&"E"!=t||(r=!0),t=this.nextChar_()}while(this.isNumeric_(t,n)||!r&&("e"==t||"E"==t)||r&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))}},{key:"readText_",value:function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()}}]),e}(),ke=function(){function e(n,r){t(this,e),this.lexer_=n,this.token_,this.layout_=ue,this.factory=r}return n(e,[{key:"consume_",value:function(){this.token_=this.lexer_.nextToken()}},{key:"isTokenType",value:function(t){return this.token_.type==t}},{key:"match",value:function(t){var e=this.isTokenType(t);return e&&this.consume_(),e}},{key:"parse",value:function(){return this.consume_(),this.parseGeometry_()}},{key:"parseGeometryLayout_",value:function(){var t=ue,e=this.token_;if(this.isTokenType(pe)){var n=e.value;"Z"===n?t=le:"M"===n?t=he:"ZM"===n&&(t=ce),t!==ue&&this.consume_()}return t}},{key:"parseGeometryCollectionText_",value:function(){if(this.match(ve)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(me));if(this.match(de))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parsePointText_",value:function(){if(this.match(ve)){var t=this.parsePoint_();if(this.match(de))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())}},{key:"parseLineStringText_",value:function(){if(this.match(ve)){var t=this.parsePointList_();if(this.match(de))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parsePolygonText_",value:function(){if(this.match(ve)){var t=this.parseLineStringTextList_();if(this.match(de))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parseMultiPointText_",value:function(){var t;if(this.match(ve)){if(t=this.token_.type==ve?this.parsePointTextList_():this.parsePointList_(),this.match(de))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parseMultiLineStringText_",value:function(){if(this.match(ve)){var t=this.parseLineStringTextList_();if(this.match(de))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parseMultiPolygonText_",value:function(){if(this.match(ve)){var t=this.parsePolygonTextList_();if(this.match(de))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())}},{key:"parsePoint_",value:function(){for(var t=[],e=this.layout_.length,n=0;n<e;++n){var r=this.token_;if(!this.match(ye))break;t.push(r.value)}if(t.length==e)return t;throw new Error(this.formatErrorMessage_())}},{key:"parsePointList_",value:function(){for(var t=[this.parsePoint_()];this.match(me);)t.push(this.parsePoint_());return t}},{key:"parsePointTextList_",value:function(){for(var t=[this.parsePointText_()];this.match(me);)t.push(this.parsePointText_());return t}},{key:"parseLineStringTextList_",value:function(){for(var t=[this.parseLineStringText_()];this.match(me);)t.push(this.parseLineStringText_());return t}},{key:"parsePolygonTextList_",value:function(){for(var t=[this.parsePolygonText_()];this.match(me);)t.push(this.parsePolygonText_());return t}},{key:"isEmptyGeometry_",value:function(){var t=this.isTokenType(pe)&&this.token_.value==ge;return t&&this.consume_(),t}},{key:"formatErrorMessage_",value:function(){return"Unexpected `"+this.token_.value+"` at position "+this.token_.position+" in `"+this.lexer_.wkt+"`"}},{key:"parseGeometry_",value:function(){var t=this.factory,e=function(t){return a(z,g(t))},n=function(n){var r=n.map((function(n){return t.createLinearRing(n.map(e))}));return r.length>1?t.createPolygon(r[0],r.slice(1)):t.createPolygon(r[0])},r=this.token_;if(this.match(pe)){var i=r.value;if(this.layout_=this.parseGeometryLayout_(),"GEOMETRYCOLLECTION"==i){var o=this.parseGeometryCollectionText_();return t.createGeometryCollection(o)}switch(i){case"POINT":var s=this.parsePointText_();return s?t.createPoint(a(z,g(s))):t.createPoint();case"LINESTRING":var u=this.parseLineStringText_().map(e);return t.createLineString(u);case"LINEARRING":var l=this.parseLineStringText_().map(e);return t.createLinearRing(l);case"POLYGON":var h=this.parsePolygonText_();return h&&0!==h.length?n(h):t.createPolygon();case"MULTIPOINT":var c=this.parseMultiPointText_();if(!c||0===c.length)return t.createMultiPoint();var f=c.map(e).map((function(e){return t.createPoint(e)}));return t.createMultiPoint(f);case"MULTILINESTRING":var p=this.parseMultiLineStringText_().map((function(n){return t.createLineString(n.map(e))}));return t.createMultiLineString(p);case"MULTIPOLYGON":var v=this.parseMultiPolygonText_();if(!v||0===v.length)return t.createMultiPolygon();var d=v.map(n);return t.createMultiPolygon(d);default:throw new Error("Invalid geometry type: "+i)}}throw new Error(this.formatErrorMessage_())}}]),e}();function be(t){if(t.isEmpty())return"";var e=t.getCoordinate(),n=[e.x,e.y];return void 0===e.z||Number.isNaN(e.z)||n.push(e.z),void 0===e.m||Number.isNaN(e.m)||n.push(e.m),n.join(" ")}function we(t){for(var e=t.getCoordinates().map((function(t){var e=[t.x,t.y];return void 0===t.z||Number.isNaN(t.z)||e.push(t.z),void 0===t.m||Number.isNaN(t.m)||e.push(t.m),e})),n=[],r=0,i=e.length;r<i;++r)n.push(e[r].join(" "));return n.join(", ")}function Ie(t){var e=[];e.push("("+we(t.getExteriorRing())+")");for(var n=0,r=t.getNumInteriorRing();n<r;++n)e.push("("+we(t.getInteriorRingN(n))+")");return e.join(", ")}var Ne={Point:be,LineString:we,LinearRing:we,Polygon:Ie,MultiPoint:function(t){for(var e=[],n=0,r=t.getNumGeometries();n<r;++n)e.push("("+be(t.getGeometryN(n))+")");return e.join(", ")},MultiLineString:function(t){for(var e=[],n=0,r=t.getNumGeometries();n<r;++n)e.push("("+we(t.getGeometryN(n))+")");return e.join(", ")},MultiPolygon:function(t){for(var e=[],n=0,r=t.getNumGeometries();n<r;++n)e.push("("+Ie(t.getGeometryN(n))+")");return e.join(", ")},GeometryCollection:function(t){for(var e=[],n=0,r=t.getNumGeometries();n<r;++n)e.push(Se(t.getGeometryN(n)));return e.join(", ")}};function Se(t){var e=t.getGeometryType(),n=Ne[e];e=e.toUpperCase();var r=function(t){var e="";if(t.isEmpty())return e;var n=t.getCoordinate();return void 0===n.z||Number.isNaN(n.z)||(e+="Z"),void 0===n.m||Number.isNaN(n.m)||(e+="M"),e}(t);return r.length>0&&(e+=" "+r),t.isEmpty()?e+" "+ge:e+" ("+n(t)+")"}var Me=function(){function e(n){t(this,e),this.geometryFactory=n||new ae,this.precisionModel=this.geometryFactory.getPrecisionModel()}return n(e,[{key:"read",value:function(t){var e=new Ee(t);return new ke(e,this.geometryFactory).parse()}},{key:"write",value:function(t){return Se(t)}}]),e}(),Le=function(){function e(n){t(this,e),this.parser=new Me(n)}return n(e,[{key:"write",value:function(t){return this.parser.write(t)}}],[{key:"toLineString",value:function(t,e){if(2!==arguments.length)throw new Error("Not implemented");return"LINESTRING ( "+t.x+" "+t.y+", "+e.x+" "+e.y+" )"}}]),e}(),Pe=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getIndexAlongSegment",value:function(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]}},{key:"getTopologySummary",value:function(){var t=new Qt;return this.isEndPoint()&&t.append(" endpoint"),this._isProper&&t.append(" proper"),this.isCollinear()&&t.append(" collinear"),t.toString()}},{key:"computeIntersection",value:function(t,e,n,r){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=n,this._inputLines[1][1]=r,this._result=this.computeIntersect(t,e,n,r)}},{key:"getIntersectionNum",value:function(){return this._result}},{key:"computeIntLineIndex",value:function(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map((function(){return Array(2)})),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){var t=arguments[0];this.getEdgeDistance(t,0)>this.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}}},{key:"isProper",value:function(){return this.hasIntersection()&&this._isProper}},{key:"setPrecisionModel",value:function(t){this._precisionModel=t}},{key:"isInteriorIntersection",value:function(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var t=arguments[0],e=0;e<this._result;e++)if(!this._intPt[e].equals2D(this._inputLines[t][0])&&!this._intPt[e].equals2D(this._inputLines[t][1]))return!0;return!1}}},{key:"getIntersection",value:function(t){return this._intPt[t]}},{key:"isEndPoint",value:function(){return this.hasIntersection()&&!this._isProper}},{key:"hasIntersection",value:function(){return this._result!==e.NO_INTERSECTION}},{key:"getEdgeDistance",value:function(t,n){return e.computeEdgeDistance(this._intPt[n],this._inputLines[t][0],this._inputLines[t][1])}},{key:"isCollinear",value:function(){return this._result===e.COLLINEAR_INTERSECTION}},{key:"toString",value:function(){return Le.toLineString(this._inputLines[0][0],this._inputLines[0][1])+" - "+Le.toLineString(this._inputLines[1][0],this._inputLines[1][1])+this.getTopologySummary()}},{key:"getEndpoint",value:function(t,e){return this._inputLines[t][e]}},{key:"isIntersection",value:function(t){for(var e=0;e<this._result;e++)if(this._intPt[e].equals2D(t))return!0;return!1}},{key:"getIntersectionAlongSegment",value:function(t,e){return this.computeIntLineIndex(),this._intPt[this._intLineIndex[t][e]]}}],[{key:"constructor_",value:function(){this._result=null,this._inputLines=Array(2).fill().map((function(){return Array(2)})),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new z,this._intPt[1]=new z,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0}},{key:"computeEdgeDistance",value:function(t,e,n){var r=Math.abs(n.x-e.x),i=Math.abs(n.y-e.y),o=-1;if(t.equals(e))o=0;else if(t.equals(n))o=r>i?r:i;else{var s=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);0!==(o=r>i?s:a)||t.equals(e)||(o=Math.max(s,a))}return V.isTrue(!(0===o&&!t.equals(e)),"Bad distance calculation"),o}},{key:"nonRobustComputeEdgeDistance",value:function(t,e,n){var r=t.x-e.x,i=t.y-e.y,o=Math.sqrt(r*r+i*i);return V.isTrue(!(0===o&&!t.equals(e)),"Invalid distance calculation"),o}}]),e}();Pe.DONT_INTERSECT=0,Pe.DO_INTERSECT=1,Pe.COLLINEAR=2,Pe.NO_INTERSECTION=0,Pe.POINT_INTERSECTION=1,Pe.COLLINEAR_INTERSECTION=2;var Ce=function(e){r(s,e);var o=c(s);function s(){return t(this,s),o.call(this)}return n(s,[{key:"isInSegmentEnvelopes",value:function(t){var e=new X(this._inputLines[0][0],this._inputLines[0][1]),n=new X(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)}},{key:"computeIntersection",value:function(){if(3!==arguments.length)return f(i(s.prototype),"computeIntersection",this).apply(this,arguments);var t=arguments[0],e=arguments[1],n=arguments[2];if(this._isProper=!1,X.intersects(e,n,t)&&0===ft.index(e,n,t)&&0===ft.index(n,e,t))return this._isProper=!0,(t.equals(e)||t.equals(n))&&(this._isProper=!1),this._result=Pe.POINT_INTERSECTION,null;this._result=Pe.NO_INTERSECTION}},{key:"intersection",value:function(t,e,n,r){var i=this.intersectionSafe(t,e,n,r);return this.isInSegmentEnvelopes(i)||(i=new z(s.nearestEndpoint(t,e,n,r))),null!==this._precisionModel&&this._precisionModel.makePrecise(i),i}},{key:"checkDD",value:function(t,e,n,r,i){var o=ht.intersection(t,e,n,r),s=this.isInSegmentEnvelopes(o);xt.out.println("DD in env = "+s+"  --------------------- "+o),i.distance(o)>1e-4&&xt.out.println("Distance = "+i.distance(o))}},{key:"intersectionSafe",value:function(t,e,n,r){var i=_t.intersection(t,e,n,r);return null===i&&(i=s.nearestEndpoint(t,e,n,r)),i}},{key:"computeCollinearIntersection",value:function(t,e,n,r){var i=X.intersects(t,e,n),o=X.intersects(t,e,r),s=X.intersects(n,r,t),a=X.intersects(n,r,e);return i&&o?(this._intPt[0]=n,this._intPt[1]=r,Pe.COLLINEAR_INTERSECTION):s&&a?(this._intPt[0]=t,this._intPt[1]=e,Pe.COLLINEAR_INTERSECTION):i&&s?(this._intPt[0]=n,this._intPt[1]=t,!n.equals(t)||o||a?Pe.COLLINEAR_INTERSECTION:Pe.POINT_INTERSECTION):i&&a?(this._intPt[0]=n,this._intPt[1]=e,!n.equals(e)||o||s?Pe.COLLINEAR_INTERSECTION:Pe.POINT_INTERSECTION):o&&s?(this._intPt[0]=r,this._intPt[1]=t,!r.equals(t)||i||a?Pe.COLLINEAR_INTERSECTION:Pe.POINT_INTERSECTION):o&&a?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||i||s?Pe.COLLINEAR_INTERSECTION:Pe.POINT_INTERSECTION):Pe.NO_INTERSECTION}},{key:"computeIntersect",value:function(t,e,n,r){if(this._isProper=!1,!X.intersects(t,e,n,r))return Pe.NO_INTERSECTION;var i=ft.index(t,e,n),o=ft.index(t,e,r);if(i>0&&o>0||i<0&&o<0)return Pe.NO_INTERSECTION;var s=ft.index(n,r,t),a=ft.index(n,r,e);return s>0&&a>0||s<0&&a<0?Pe.NO_INTERSECTION:0===i&&0===o&&0===s&&0===a?this.computeCollinearIntersection(t,e,n,r):(0===i||0===o||0===s||0===a?(this._isProper=!1,t.equals2D(n)||t.equals2D(r)?this._intPt[0]=t:e.equals2D(n)||e.equals2D(r)?this._intPt[0]=e:0===i?this._intPt[0]=new z(n):0===o?this._intPt[0]=new z(r):0===s?this._intPt[0]=new z(t):0===a&&(this._intPt[0]=new z(e))):(this._isProper=!0,this._intPt[0]=this.intersection(t,e,n,r)),Pe.POINT_INTERSECTION)}}],[{key:"nearestEndpoint",value:function(t,e,n,r){var i=t,o=kt.pointToSegment(t,n,r),s=kt.pointToSegment(e,n,r);return s<o&&(o=s,i=e),(s=kt.pointToSegment(n,t,e))<o&&(o=s,i=n),(s=kt.pointToSegment(r,t,e))<o&&(o=s,i=r),i}}]),s}(Pe),Te=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"countSegment",value:function(t,e){if(t.x<this._p.x&&e.x<this._p.x)return null;if(this._p.x===e.x&&this._p.y===e.y)return this._isPointOnSegment=!0,null;if(t.y===this._p.y&&e.y===this._p.y){var n=t.x,r=e.x;return n>r&&(n=e.x,r=t.x),this._p.x>=n&&this._p.x<=r&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var i=ft.index(t,e,this._p);if(i===ft.COLLINEAR)return this._isPointOnSegment=!0,null;e.y<t.y&&(i=-i),i===ft.LEFT&&this._crossingCount++}}},{key:"isPointInPolygon",value:function(){return this.getLocation()!==Z.EXTERIOR}},{key:"getLocation",value:function(){return this._isPointOnSegment?Z.BOUNDARY:this._crossingCount%2==1?Z.INTERIOR:Z.EXTERIOR}},{key:"isOnSegment",value:function(){return this._isPointOnSegment}}],[{key:"constructor_",value:function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t}},{key:"locatePointInRing",value:function(){if(arguments[0]instanceof z&&ot(arguments[1],ct)){for(var t=arguments[1],n=new e(arguments[0]),r=new z,i=new z,o=1;o<t.size();o++)if(t.getCoordinate(o,r),t.getCoordinate(o-1,i),n.countSegment(r,i),n.isOnSegment())return n.getLocation();return n.getLocation()}if(arguments[0]instanceof z&&arguments[1]instanceof Array){for(var s=arguments[1],a=new e(arguments[0]),u=1;u<s.length;u++){var l=s[u],h=s[u-1];if(a.countSegment(l,h),a.isOnSegment())return a.getLocation()}return a.getLocation()}}}]),e}(),Oe=function(){function e(){t(this,e)}return n(e,null,[{key:"isOnLine",value:function(){if(arguments[0]instanceof z&&ot(arguments[1],ct)){for(var t=arguments[0],e=arguments[1],n=new Ce,r=new z,i=new z,o=e.size(),s=1;s<o;s++)if(e.getCoordinate(s-1,r),e.getCoordinate(s,i),n.computeIntersection(t,r,i),n.hasIntersection())return!0;return!1}if(arguments[0]instanceof z&&arguments[1]instanceof Array){for(var a=arguments[0],u=arguments[1],l=new Ce,h=1;h<u.length;h++){var c=u[h-1],f=u[h];if(l.computeIntersection(a,c,f),l.hasIntersection())return!0}return!1}}},{key:"locateInRing",value:function(t,e){return Te.locatePointInRing(t,e)}},{key:"isInRing",value:function(t,n){return e.locateInRing(t,n)!==Z.EXTERIOR}}]),e}(),Re=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"setAllLocations",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]=t}},{key:"isNull",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]!==Z.NONE)return!1;return!0}},{key:"setAllLocationsIfNull",value:function(t){for(var e=0;e<this.location.length;e++)this.location[e]===Z.NONE&&(this.location[e]=t)}},{key:"isLine",value:function(){return 1===this.location.length}},{key:"merge",value:function(t){if(t.location.length>this.location.length){var e=new Array(3).fill(null);e[tt.ON]=this.location[tt.ON],e[tt.LEFT]=Z.NONE,e[tt.RIGHT]=Z.NONE,this.location=e}for(var n=0;n<this.location.length;n++)this.location[n]===Z.NONE&&n<t.location.length&&(this.location[n]=t.location[n])}},{key:"getLocations",value:function(){return this.location}},{key:"flip",value:function(){if(this.location.length<=1)return null;var t=this.location[tt.LEFT];this.location[tt.LEFT]=this.location[tt.RIGHT],this.location[tt.RIGHT]=t}},{key:"toString",value:function(){var t=new st;return this.location.length>1&&t.append(Z.toLocationSymbol(this.location[tt.LEFT])),t.append(Z.toLocationSymbol(this.location[tt.ON])),this.location.length>1&&t.append(Z.toLocationSymbol(this.location[tt.RIGHT])),t.toString()}},{key:"setLocations",value:function(t,e,n){this.location[tt.ON]=t,this.location[tt.LEFT]=e,this.location[tt.RIGHT]=n}},{key:"get",value:function(t){return t<this.location.length?this.location[t]:Z.NONE}},{key:"isArea",value:function(){return this.location.length>1}},{key:"isAnyNull",value:function(){for(var t=0;t<this.location.length;t++)if(this.location[t]===Z.NONE)return!0;return!1}},{key:"setLocation",value:function(){if(1===arguments.length){var t=arguments[0];this.setLocation(tt.ON,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.location[e]=n}}},{key:"init",value:function(t){this.location=new Array(t).fill(null),this.setAllLocations(Z.NONE)}},{key:"isEqualOnSide",value:function(t,e){return this.location[e]===t.location[e]}},{key:"allPositionsEqual",value:function(t){for(var e=0;e<this.location.length;e++)if(this.location[e]!==t)return!1;return!0}}],[{key:"constructor_",value:function(){if(this.location=null,1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];this.init(t.length)}else if(Number.isInteger(arguments[0])){var n=arguments[0];this.init(1),this.location[tt.ON]=n}else if(arguments[0]instanceof e){var r=arguments[0];if(this.init(r.location.length),null!==r)for(var i=0;i<this.location.length;i++)this.location[i]=r.location[i]}}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.init(3),this.location[tt.ON]=o,this.location[tt.LEFT]=s,this.location[tt.RIGHT]=a}}}]),e}(),Ae=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getGeometryCount",value:function(){var t=0;return this.elt[0].isNull()||t++,this.elt[1].isNull()||t++,t}},{key:"setAllLocations",value:function(t,e){this.elt[t].setAllLocations(e)}},{key:"isNull",value:function(t){return this.elt[t].isNull()}},{key:"setAllLocationsIfNull",value:function(){if(1===arguments.length){var t=arguments[0];this.setAllLocationsIfNull(0,t),this.setAllLocationsIfNull(1,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.elt[e].setAllLocationsIfNull(n)}}},{key:"isLine",value:function(t){return this.elt[t].isLine()}},{key:"merge",value:function(t){for(var e=0;e<2;e++)null===this.elt[e]&&null!==t.elt[e]?this.elt[e]=new Re(t.elt[e]):this.elt[e].merge(t.elt[e])}},{key:"flip",value:function(){this.elt[0].flip(),this.elt[1].flip()}},{key:"getLocation",value:function(){if(1===arguments.length){var t=arguments[0];return this.elt[t].get(tt.ON)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return this.elt[e].get(n)}}},{key:"toString",value:function(){var t=new st;return null!==this.elt[0]&&(t.append("A:"),t.append(this.elt[0].toString())),null!==this.elt[1]&&(t.append(" B:"),t.append(this.elt[1].toString())),t.toString()}},{key:"isArea",value:function(){if(0===arguments.length)return this.elt[0].isArea()||this.elt[1].isArea();if(1===arguments.length){var t=arguments[0];return this.elt[t].isArea()}}},{key:"isAnyNull",value:function(t){return this.elt[t].isAnyNull()}},{key:"setLocation",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.elt[t].setLocation(tt.ON,e)}else if(3===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2];this.elt[n].setLocation(r,i)}}},{key:"isEqualOnSide",value:function(t,e){return this.elt[0].isEqualOnSide(t.elt[0],e)&&this.elt[1].isEqualOnSide(t.elt[1],e)}},{key:"allPositionsEqual",value:function(t,e){return this.elt[t].allPositionsEqual(e)}},{key:"toLine",value:function(t){this.elt[t].isArea()&&(this.elt[t]=new Re(this.elt[t].location[0]))}}],[{key:"constructor_",value:function(){if(this.elt=new Array(2).fill(null),1===arguments.length){if(Number.isInteger(arguments[0])){var t=arguments[0];this.elt[0]=new Re(t),this.elt[1]=new Re(t)}else if(arguments[0]instanceof e){var n=arguments[0];this.elt[0]=new Re(n.elt[0]),this.elt[1]=new Re(n.elt[1])}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];this.elt[0]=new Re(Z.NONE),this.elt[1]=new Re(Z.NONE),this.elt[r].setLocation(i)}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];this.elt[0]=new Re(o,s,a),this.elt[1]=new Re(o,s,a)}else if(4===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2],c=arguments[3];this.elt[0]=new Re(Z.NONE,Z.NONE,Z.NONE),this.elt[1]=new Re(Z.NONE,Z.NONE,Z.NONE),this.elt[u].setLocations(l,h,c)}}},{key:"toLineLabel",value:function(t){for(var n=new e(Z.NONE),r=0;r<2;r++)n.setLocation(r,t.getLocation(r));return n}}]),e}(),De=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"computeRing",value:function(){if(null!==this._ring)return null;for(var t=new Array(this._pts.size()).fill(null),e=0;e<this._pts.size();e++)t[e]=this._pts.get(e);this._ring=this._geometryFactory.createLinearRing(t),this._isHole=ft.isCCW(this._ring.getCoordinates())}},{key:"isIsolated",value:function(){return 1===this._label.getGeometryCount()}},{key:"computePoints",value:function(t){this._startDe=t;var e=t,n=!0;do{if(null===e)throw new pt("Found null DirectedEdge");if(e.getEdgeRing()===this)throw new pt("Directed Edge visited twice during ring-building at "+e.getCoordinate());this._edges.add(e);var r=e.getLabel();V.isTrue(r.isArea()),this.mergeLabel(r),this.addPoints(e.getEdge(),e.isForward(),n),n=!1,this.setEdgeRing(e,this),e=this.getNext(e)}while(e!==this._startDe)}},{key:"getLinearRing",value:function(){return this._ring}},{key:"getCoordinate",value:function(t){return this._pts.get(t)}},{key:"computeMaxNodeDegree",value:function(){this._maxNodeDegree=0;var t=this._startDe;do{var e=t.getNode().getEdges().getOutgoingDegree(this);e>this._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2}},{key:"addPoints",value:function(t,e,n){var r=t.getCoordinates();if(e){var i=1;n&&(i=0);for(var o=i;o<r.length;o++)this._pts.add(r[o])}else{var s=r.length-2;n&&(s=r.length-1);for(var a=s;a>=0;a--)this._pts.add(r[a])}}},{key:"isHole",value:function(){return this._isHole}},{key:"setInResult",value:function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)}},{key:"containsPoint",value:function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!Oe.isInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();)if(n.next().containsPoint(t))return!1;return!0}},{key:"addHole",value:function(t){this._holes.add(t)}},{key:"isShell",value:function(){return null===this._shell}},{key:"getLabel",value:function(){return this._label}},{key:"getEdges",value:function(){return this._edges}},{key:"getMaxNodeDegree",value:function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree}},{key:"getShell",value:function(){return this._shell}},{key:"mergeLabel",value:function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[1],n=arguments[0].getLocation(e,tt.RIGHT);if(n===Z.NONE)return null;if(this._label.getLocation(e)===Z.NONE)return this._label.setLocation(e,n),null}}},{key:"setShell",value:function(t){this._shell=t,null!==t&&t.addHole(this)}},{key:"toPolygon",value:function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n<this._holes.size();n++)e[n]=this._holes.get(n).getLinearRing();return t.createPolygon(this.getLinearRing(),e)}}],[{key:"constructor_",value:function(){if(this._startDe=null,this._maxNodeDegree=-1,this._edges=new dt,this._pts=new dt,this._label=new Ae(Z.NONE),this._ring=null,this._isHole=null,this._shell=null,this._holes=new dt,this._geometryFactory=null,0===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];this._geometryFactory=e,this.computePoints(t),this.computeRing()}}}]),e}(),Fe=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,[{key:"setEdgeRing",value:function(t,e){t.setMinEdgeRing(e)}},{key:"getNext",value:function(t){return t.getNextMin()}}],[{key:"constructor_",value:function(){var t=arguments[0],e=arguments[1];De.constructor_.call(this,t,e)}}]),o}(De),qe=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,[{key:"buildMinimalRings",value:function(){var t=new dt,e=this._startDe;do{if(null===e.getMinEdgeRing()){var n=new Fe(e,this._geometryFactory);t.add(n)}e=e.getNext()}while(e!==this._startDe);return t}},{key:"setEdgeRing",value:function(t,e){t.setEdgeRing(e)}},{key:"linkDirectedEdgesForMinimalEdgeRings",value:function(){var t=this._startDe;do{t.getNode().getEdges().linkMinimalDirectedEdges(this),t=t.getNext()}while(t!==this._startDe)}},{key:"getNext",value:function(t){return t.getNext()}}],[{key:"constructor_",value:function(){var t=arguments[0],e=arguments[1];De.constructor_.call(this,t,e)}}]),o}(De),Ve=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"setVisited",value:function(t){this._isVisited=t}},{key:"setInResult",value:function(t){this._isInResult=t}},{key:"isCovered",value:function(){return this._isCovered}},{key:"isCoveredSet",value:function(){return this._isCoveredSet}},{key:"setLabel",value:function(t){this._label=t}},{key:"getLabel",value:function(){return this._label}},{key:"setCovered",value:function(t){this._isCovered=t,this._isCoveredSet=!0}},{key:"updateIM",value:function(t){V.isTrue(this._label.getGeometryCount()>=2,"found partial label"),this.computeIM(t)}},{key:"isInResult",value:function(){return this._isInResult}},{key:"isVisited",value:function(){return this._isVisited}}],[{key:"constructor_",value:function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._label=t}}}]),e}(),Ge=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"isIncidentEdgeInResult",value:function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();)if(t.next().getEdge().isInResult())return!0;return!1}},{key:"isIsolated",value:function(){return 1===this._label.getGeometryCount()}},{key:"getCoordinate",value:function(){return this._coord}},{key:"print",value:function(t){t.println("node "+this._coord+" lbl: "+this._label)}},{key:"computeIM",value:function(t){}},{key:"computeMergedLocation",value:function(t,e){var n=Z.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var r=t.getLocation(e);n!==Z.BOUNDARY&&(n=r)}return n}},{key:"setLabel",value:function(){if(2!==arguments.length||!Number.isInteger(arguments[1])||!Number.isInteger(arguments[0]))return f(i(s.prototype),"setLabel",this).apply(this,arguments);var t=arguments[0],e=arguments[1];null===this._label?this._label=new Ae(t,e):this._label.setLocation(t,e)}},{key:"getEdges",value:function(){return this._edges}},{key:"mergeLabel",value:function(){if(arguments[0]instanceof s){var t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof Ae)for(var e=arguments[0],n=0;n<2;n++){var r=this.computeMergedLocation(e,n);this._label.getLocation(n)===Z.NONE&&this._label.setLocation(n,r)}}},{key:"add",value:function(t){this._edges.insert(t),t.setNode(this)}},{key:"setLabelBoundary",value:function(t){if(null===this._label)return null;var e=Z.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case Z.BOUNDARY:n=Z.INTERIOR;break;case Z.INTERIOR:default:n=Z.BOUNDARY}this._label.setLocation(t,n)}}],[{key:"constructor_",value:function(){this._coord=null,this._edges=null;var t=arguments[0],e=arguments[1];this._coord=t,this._edges=e,this._label=new Ae(0,Z.NONE)}}]),s}(Ve),Be=function(e){r(i,e);var n=c(i);function i(){return t(this,i),n.apply(this,arguments)}return i}(ne);function Ye(t){return null==t?0:t.color}function ze(t){return null==t?null:t.parent}function je(t,e){null!==t&&(t.color=e)}function Xe(t){return null==t?null:t.left}function Ue(t){return null==t?null:t.right}var Ze=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),(e=i.call(this)).root_=null,e.size_=0,e}return n(o,[{key:"get",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return e.value;e=e.right}}return null}},{key:"put",value:function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:0,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,r,i=this.root_;do{if(n=i,(r=t.compareTo(i.key))<0)i=i.left;else{if(!(r>0)){var o=i.value;return i.value=e,o}i=i.right}}while(null!==i);var s={key:t,left:null,right:null,value:e,parent:n,color:0,getValue:function(){return this.value},getKey:function(){return this.key}};return r<0?n.left=s:n.right=s,this.fixAfterInsertion(s),this.size_++,null}},{key:"fixAfterInsertion",value:function(t){var e;for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)ze(t)===Xe(ze(ze(t)))?1===Ye(e=Ue(ze(ze(t))))?(je(ze(t),0),je(e,0),je(ze(ze(t)),1),t=ze(ze(t))):(t===Ue(ze(t))&&(t=ze(t),this.rotateLeft(t)),je(ze(t),0),je(ze(ze(t)),1),this.rotateRight(ze(ze(t)))):1===Ye(e=Xe(ze(ze(t))))?(je(ze(t),0),je(e,0),je(ze(ze(t)),1),t=ze(ze(t))):(t===Xe(ze(t))&&(t=ze(t),this.rotateRight(t)),je(ze(t),0),je(ze(ze(t)),1),this.rotateLeft(ze(ze(t))));this.root_.color=0}},{key:"values",value:function(){var t=new dt,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=o.successor(e));)t.add(e.value);return t}},{key:"entrySet",value:function(){var t=new Q,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=o.successor(e));)t.add(e);return t}},{key:"rotateLeft",value:function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}}},{key:"rotateRight",value:function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}}},{key:"getFirstEntry",value:function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t}},{key:"size",value:function(){return this.size_}},{key:"containsKey",value:function(t){for(var e=this.root_;null!==e;){var n=t.compareTo(e.key);if(n<0)e=e.left;else{if(!(n>0))return!0;e=e.right}}return!1}}],[{key:"successor",value:function(t){var e;if(null===t)return null;if(null!==t.right){for(e=t.right;null!==e.left;)e=e.left;return e}e=t.parent;for(var n=t;null!==e&&n===e.right;)n=e,e=e.parent;return e}}]),o}(Be),He=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"find",value:function(t){return this.nodeMap.get(t)}},{key:"addNode",value:function(){if(arguments[0]instanceof z){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Ge){var n=arguments[0],r=this.nodeMap.get(n.getCoordinate());return null===r?(this.nodeMap.put(n.getCoordinate(),n),n):(r.mergeLabel(n),r)}}},{key:"print",value:function(t){for(var e=this.iterator();e.hasNext();)e.next().print(t)}},{key:"iterator",value:function(){return this.nodeMap.values().iterator()}},{key:"values",value:function(){return this.nodeMap.values()}},{key:"getBoundaryNodes",value:function(t){for(var e=new dt,n=this.iterator();n.hasNext();){var r=n.next();r.getLabel().getLocation(t)===Z.BOUNDARY&&e.add(r)}return e}},{key:"add",value:function(t){var e=t.getCoordinate();this.addNode(e).add(t)}}],[{key:"constructor_",value:function(){this.nodeMap=new Ze,this.nodeFact=null;var t=arguments[0];this.nodeFact=t}}]),e}(),We=function(){function e(){t(this,e)}return n(e,null,[{key:"isNorthern",value:function(t){return t===e.NE||t===e.NW}},{key:"isOpposite",value:function(t,e){return t!==e&&2==(t-e+4)%4}},{key:"commonHalfPlane",value:function(t,e){if(t===e)return t;if(2==(t-e+4)%4)return-1;var n=t<e?t:e;return 0===n&&3===(t>e?t:e)?3:n}},{key:"isInHalfPlane",value:function(t,n){return n===e.SE?t===e.SE||t===e.SW:t===n||t===n+1}},{key:"quadrant",value:function(){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){var t=arguments[0],n=arguments[1];if(0===t&&0===n)throw new x("Cannot compute the quadrant for point ( "+t+", "+n+" )");return t>=0?n>=0?e.NE:e.SE:n>=0?e.NW:e.SW}if(arguments[0]instanceof z&&arguments[1]instanceof z){var r=arguments[0],i=arguments[1];if(i.x===r.x&&i.y===r.y)throw new x("Cannot compute the quadrant for two identical points "+r);return i.x>=r.x?i.y>=r.y?e.NE:e.SE:i.y>=r.y?e.NW:e.SW}}}]),e}();We.NE=0,We.NW=1,We.SW=2,We.SE=3;var Je=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"compareDirection",value:function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant<t._quadrant?-1:ft.index(t._p0,t._p1,this._p1)}},{key:"getDy",value:function(){return this._dy}},{key:"getCoordinate",value:function(){return this._p0}},{key:"setNode",value:function(t){this._node=t}},{key:"print",value:function(t){var e=Math.atan2(this._dy,this._dx),n=this.getClass().getName(),r=n.lastIndexOf("."),i=n.substring(r+1);t.print("  "+i+": "+this._p0+" - "+this._p1+" "+this._quadrant+":"+e+"   "+this._label)}},{key:"compareTo",value:function(t){var e=t;return this.compareDirection(e)}},{key:"getDirectedCoordinate",value:function(){return this._p1}},{key:"getDx",value:function(){return this._dx}},{key:"getLabel",value:function(){return this._label}},{key:"getEdge",value:function(){return this._edge}},{key:"getQuadrant",value:function(){return this._quadrant}},{key:"getNode",value:function(){return this._node}},{key:"toString",value:function(){var t=Math.atan2(this._dy,this._dx),e=this.getClass().getName(),n=e.lastIndexOf(".");return"  "+e.substring(n+1)+": "+this._p0+" - "+this._p1+" "+this._quadrant+":"+t+"   "+this._label}},{key:"computeLabel",value:function(t){}},{key:"init",value:function(t,e){this._p0=t,this._p1=e,this._dx=e.x-t.x,this._dy=e.y-t.y,this._quadrant=We.quadrant(this._dx,this._dy),V.isTrue(!(0===this._dx&&0===this._dy),"EdgeEnd with identical endpoints found")}},{key:"interfaces_",get:function(){return[k]}}],[{key:"constructor_",value:function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2];e.constructor_.call(this,n,r,i,null)}else if(4===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2],u=arguments[3];e.constructor_.call(this,o),this.init(s,a),this._label=u}}}]),e}(),Ke=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"getNextMin",value:function(){return this._nextMin}},{key:"getDepth",value:function(t){return this._depth[t]}},{key:"setVisited",value:function(t){this._isVisited=t}},{key:"computeDirectedLabel",value:function(){this._label=new Ae(this._edge.getLabel()),this._isForward||this._label.flip()}},{key:"getNext",value:function(){return this._next}},{key:"setDepth",value:function(t,e){if(-999!==this._depth[t]&&this._depth[t]!==e)throw new pt("assigned depths do not match",this.getCoordinate());this._depth[t]=e}},{key:"isInteriorAreaEdge",value:function(){for(var t=!0,e=0;e<2;e++)this._label.isArea(e)&&this._label.getLocation(e,tt.LEFT)===Z.INTERIOR&&this._label.getLocation(e,tt.RIGHT)===Z.INTERIOR||(t=!1);return t}},{key:"setNextMin",value:function(t){this._nextMin=t}},{key:"print",value:function(t){f(i(s.prototype),"print",this).call(this,t),t.print(" "+this._depth[tt.LEFT]+"/"+this._depth[tt.RIGHT]),t.print(" ("+this.getDepthDelta()+")"),this._isInResult&&t.print(" inResult")}},{key:"setMinEdgeRing",value:function(t){this._minEdgeRing=t}},{key:"isLineEdge",value:function(){var t=this._label.isLine(0)||this._label.isLine(1),e=!this._label.isArea(0)||this._label.allPositionsEqual(0,Z.EXTERIOR),n=!this._label.isArea(1)||this._label.allPositionsEqual(1,Z.EXTERIOR);return t&&e&&n}},{key:"setEdgeRing",value:function(t){this._edgeRing=t}},{key:"getMinEdgeRing",value:function(){return this._minEdgeRing}},{key:"getDepthDelta",value:function(){var t=this._edge.getDepthDelta();return this._isForward||(t=-t),t}},{key:"setInResult",value:function(t){this._isInResult=t}},{key:"getSym",value:function(){return this._sym}},{key:"isForward",value:function(){return this._isForward}},{key:"getEdge",value:function(){return this._edge}},{key:"printEdge",value:function(t){this.print(t),t.print(" "),this._isForward?this._edge.print(t):this._edge.printReverse(t)}},{key:"setSym",value:function(t){this._sym=t}},{key:"setVisitedEdge",value:function(t){this.setVisited(t),this._sym.setVisited(t)}},{key:"setEdgeDepths",value:function(t,e){var n=this.getEdge().getDepthDelta();this._isForward||(n=-n);var r=1;t===tt.LEFT&&(r=-1);var i=tt.opposite(t),o=e+n*r;this.setDepth(t,e),this.setDepth(i,o)}},{key:"getEdgeRing",value:function(){return this._edgeRing}},{key:"isInResult",value:function(){return this._isInResult}},{key:"setNext",value:function(t){this._next=t}},{key:"isVisited",value:function(){return this._isVisited}}],[{key:"constructor_",value:function(){this._isForward=null,this._isInResult=!1,this._isVisited=!1,this._sym=null,this._next=null,this._nextMin=null,this._edgeRing=null,this._minEdgeRing=null,this._depth=[0,-999,-999];var t=arguments[0],e=arguments[1];if(Je.constructor_.call(this,t),this._isForward=e,e)this.init(t.getCoordinate(0),t.getCoordinate(1));else{var n=t.getNumPoints()-1;this.init(t.getCoordinate(n),t.getCoordinate(n-1))}this.computeDirectedLabel()}},{key:"depthFactor",value:function(t,e){return t===Z.EXTERIOR&&e===Z.INTERIOR?1:t===Z.INTERIOR&&e===Z.EXTERIOR?-1:0}}]),s}(Je),Qe=function(){function e(){t(this,e)}return n(e,[{key:"createNode",value:function(t){return new Ge(t,null)}}]),e}(),$e=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"printEdges",value:function(t){t.println("Edges:");for(var e=0;e<this._edges.size();e++){t.println("edge "+e+":");var n=this._edges.get(e);n.print(t),n.eiList.print(t)}}},{key:"find",value:function(t){return this._nodes.find(t)}},{key:"addNode",value:function(){if(arguments[0]instanceof Ge){var t=arguments[0];return this._nodes.addNode(t)}if(arguments[0]instanceof z){var e=arguments[0];return this._nodes.addNode(e)}}},{key:"getNodeIterator",value:function(){return this._nodes.iterator()}},{key:"linkResultDirectedEdges",value:function(){for(var t=this._nodes.iterator();t.hasNext();)t.next().getEdges().linkResultDirectedEdges()}},{key:"debugPrintln",value:function(t){xt.out.println(t)}},{key:"isBoundaryNode",value:function(t,e){var n=this._nodes.find(e);if(null===n)return!1;var r=n.getLabel();return null!==r&&r.getLocation(t)===Z.BOUNDARY}},{key:"linkAllDirectedEdges",value:function(){for(var t=this._nodes.iterator();t.hasNext();)t.next().getEdges().linkAllDirectedEdges()}},{key:"matchInSameDirection",value:function(t,e,n,r){return!!t.equals(n)&&ft.index(t,e,r)===ft.COLLINEAR&&We.quadrant(t,e)===We.quadrant(n,r)}},{key:"getEdgeEnds",value:function(){return this._edgeEndList}},{key:"debugPrint",value:function(t){xt.out.print(t)}},{key:"getEdgeIterator",value:function(){return this._edges.iterator()}},{key:"findEdgeInSameDirection",value:function(t,e){for(var n=0;n<this._edges.size();n++){var r=this._edges.get(n),i=r.getCoordinates();if(this.matchInSameDirection(t,e,i[0],i[1]))return r;if(this.matchInSameDirection(t,e,i[i.length-1],i[i.length-2]))return r}return null}},{key:"insertEdge",value:function(t){this._edges.add(t)}},{key:"findEdgeEnd",value:function(t){for(var e=this.getEdgeEnds().iterator();e.hasNext();){var n=e.next();if(n.getEdge()===t)return n}return null}},{key:"addEdges",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();this._edges.add(n);var r=new Ke(n,!0),i=new Ke(n,!1);r.setSym(i),i.setSym(r),this.add(r),this.add(i)}}},{key:"add",value:function(t){this._nodes.add(t),this._edgeEndList.add(t)}},{key:"getNodes",value:function(){return this._nodes.values()}},{key:"findEdge",value:function(t,e){for(var n=0;n<this._edges.size();n++){var r=this._edges.get(n),i=r.getCoordinates();if(t.equals(i[0])&&e.equals(i[1]))return r}return null}}],[{key:"constructor_",value:function(){if(this._edges=new dt,this._nodes=null,this._edgeEndList=new dt,0===arguments.length)this._nodes=new He(new Qe);else if(1===arguments.length){var t=arguments[0];this._nodes=new He(t)}}},{key:"linkResultDirectedEdges",value:function(t){for(var e=t.iterator();e.hasNext();)e.next().getEdges().linkResultDirectedEdges()}}]),e}(),tn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"sortShellsAndHoles",value:function(t,e,n){for(var r=t.iterator();r.hasNext();){var i=r.next();i.isHole()?n.add(i):e.add(i)}}},{key:"computePolygons",value:function(t){for(var e=new dt,n=t.iterator();n.hasNext();){var r=n.next().toPolygon(this._geometryFactory);e.add(r)}return e}},{key:"placeFreeHoles",value:function(t,n){for(var r=n.iterator();r.hasNext();){var i=r.next();if(null===i.getShell()){var o=e.findEdgeRingContaining(i,t);if(null===o)throw new pt("unable to assign hole to a shell",i.getCoordinate(0));i.setShell(o)}}}},{key:"buildMinimalEdgeRings",value:function(t,e,n){for(var r=new dt,i=t.iterator();i.hasNext();){var o=i.next();if(o.getMaxNodeDegree()>2){o.linkDirectedEdgesForMinimalEdgeRings();var s=o.buildMinimalRings(),a=this.findShell(s);null!==a?(this.placePolygonHoles(a,s),e.add(a)):n.addAll(s)}else r.add(o)}return r}},{key:"buildMaximalEdgeRings",value:function(t){for(var e=new dt,n=t.iterator();n.hasNext();){var r=n.next();if(r.isInResult()&&r.getLabel().isArea()&&null===r.getEdgeRing()){var i=new qe(r,this._geometryFactory);e.add(i),i.setInResult()}}return e}},{key:"placePolygonHoles",value:function(t,e){for(var n=e.iterator();n.hasNext();){var r=n.next();r.isHole()&&r.setShell(t)}}},{key:"getPolygons",value:function(){return this.computePolygons(this._shellList)}},{key:"findShell",value:function(t){for(var e=0,n=null,r=t.iterator();r.hasNext();){var i=r.next();i.isHole()||(n=i,e++)}return V.isTrue(e<=1,"found two shells in MinimalEdgeRing list"),n}},{key:"add",value:function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];$e.linkResultDirectedEdges(n);var r=this.buildMaximalEdgeRings(e),i=new dt,o=this.buildMinimalEdgeRings(r,this._shellList,i);this.sortShellsAndHoles(o,this._shellList,i),this.placeFreeHoles(this._shellList,i)}}}],[{key:"constructor_",value:function(){this._geometryFactory=null,this._shellList=new dt;var t=arguments[0];this._geometryFactory=t}},{key:"findEdgeRingContaining",value:function(t,e){for(var n=t.getLinearRing(),r=n.getEnvelopeInternal(),i=n.getCoordinateN(0),o=null,s=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getLinearRing(),h=l.getEnvelopeInternal();if(!h.equals(r)&&h.contains(r)){i=Wt.ptNotInList(n.getCoordinates(),l.getCoordinates());var c=!1;Oe.isInRing(i,l.getCoordinates())&&(c=!0),c&&(null===o||s.contains(h))&&(s=(o=u).getLinearRing().getEnvelopeInternal())}}return o}}]),e}(),en=function(){function e(){t(this,e)}return n(e,[{key:"getBounds",value:function(){}}]),e}(),nn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getItem",value:function(){return this._item}},{key:"getBounds",value:function(){return this._bounds}},{key:"interfaces_",get:function(){return[en,w]}}],[{key:"constructor_",value:function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e}}]),e}(),rn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"poll",value:function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t}},{key:"size",value:function(){return this._size}},{key:"reorder",value:function(t){for(var e=null,n=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(n)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,n)}},{key:"clear",value:function(){this._size=0,this._items.clear()}},{key:"peek",value:function(){return this.isEmpty()?null:this._items.get(1)}},{key:"isEmpty",value:function(){return 0===this._size}},{key:"add",value:function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)}}],[{key:"constructor_",value:function(){this._size=null,this._items=null,this._size=0,this._items=new dt,this._items.add(null)}}]),e}(),on=function(){function e(){t(this,e)}return n(e,[{key:"insert",value:function(t,e){}},{key:"remove",value:function(t,e){}},{key:"query",value:function(){}}]),e}(),sn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getLevel",value:function(){return this._level}},{key:"size",value:function(){return this._childBoundables.size()}},{key:"getChildBoundables",value:function(){return this._childBoundables}},{key:"addChildBoundable",value:function(t){V.isTrue(null===this._bounds),this._childBoundables.add(t)}},{key:"isEmpty",value:function(){return this._childBoundables.isEmpty()}},{key:"getBounds",value:function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds}},{key:"interfaces_",get:function(){return[en,w]}}],[{key:"constructor_",value:function(){if(this._childBoundables=new dt,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}}}]),e}(),an={reverseOrder:function(){return{compare:function(t,e){return e.compareTo(t)}}},min:function(t){return an.sort(t),t.get(0)},sort:function(t,e){var n=t.toArray();e?At.sort(n,e):At.sort(n);for(var r=t.iterator(),i=0,o=n.length;i<o;i++)r.next(),r.set(n[i])},singletonList:function(t){var e=new dt;return e.add(t),e}},un=function(){function e(){t(this,e)}return n(e,null,[{key:"maxDistance",value:function(t,n,r,i,o,s,a,u){var l=e.distance(t,n,o,s);return l=Math.max(l,e.distance(t,n,a,u)),l=Math.max(l,e.distance(r,i,o,s)),Math.max(l,e.distance(r,i,a,u))}},{key:"distance",value:function(t,e,n,r){var i=n-t,o=r-e;return Math.sqrt(i*i+o*o)}},{key:"maximumDistance",value:function(t,n){var r=Math.min(t.getMinX(),n.getMinX()),i=Math.min(t.getMinY(),n.getMinY()),o=Math.max(t.getMaxX(),n.getMaxX()),s=Math.max(t.getMaxY(),n.getMaxY());return e.distance(r,i,o,s)}},{key:"minMaxDistance",value:function(t,n){var r=t.getMinX(),i=t.getMinY(),o=t.getMaxX(),s=t.getMaxY(),a=n.getMinX(),u=n.getMinY(),l=n.getMaxX(),h=n.getMaxY(),c=e.maxDistance(r,i,r,s,a,u,a,h);return c=Math.min(c,e.maxDistance(r,i,r,s,a,u,l,u)),c=Math.min(c,e.maxDistance(r,i,r,s,l,h,a,h)),c=Math.min(c,e.maxDistance(r,i,r,s,l,h,l,u)),c=Math.min(c,e.maxDistance(r,i,o,i,a,u,a,h)),c=Math.min(c,e.maxDistance(r,i,o,i,a,u,l,u)),c=Math.min(c,e.maxDistance(r,i,o,i,l,h,a,h)),c=Math.min(c,e.maxDistance(r,i,o,i,l,h,l,u)),c=Math.min(c,e.maxDistance(o,s,r,s,a,u,a,h)),c=Math.min(c,e.maxDistance(o,s,r,s,a,u,l,u)),c=Math.min(c,e.maxDistance(o,s,r,s,l,h,a,h)),c=Math.min(c,e.maxDistance(o,s,r,s,l,h,l,u)),c=Math.min(c,e.maxDistance(o,s,o,i,a,u,a,h)),c=Math.min(c,e.maxDistance(o,s,o,i,a,u,l,u)),c=Math.min(c,e.maxDistance(o,s,o,i,l,h,a,h)),Math.min(c,e.maxDistance(o,s,o,i,l,h,l,u))}}]),e}(),ln=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"maximumDistance",value:function(){return un.maximumDistance(this._boundable1.getBounds(),this._boundable2.getBounds())}},{key:"expandToQueue",value:function(t,n){var r=e.isComposite(this._boundable1),i=e.isComposite(this._boundable2);if(r&&i)return e.area(this._boundable1)>e.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,!1,t,n),null):(this.expand(this._boundable2,this._boundable1,!0,t,n),null);if(r)return this.expand(this._boundable1,this._boundable2,!1,t,n),null;if(i)return this.expand(this._boundable2,this._boundable1,!0,t,n),null;throw new x("neither boundable is composite")}},{key:"isLeaves",value:function(){return!(e.isComposite(this._boundable1)||e.isComposite(this._boundable2))}},{key:"compareTo",value:function(t){var e=t;return this._distance<e._distance?-1:this._distance>e._distance?1:0}},{key:"expand",value:function(t,n,r,i,o){for(var s=t.getChildBoundables().iterator();s.hasNext();){var a=s.next(),u=null;(u=r?new e(n,a,this._itemDistance):new e(a,n,this._itemDistance)).getDistance()<o&&i.add(u)}}},{key:"getBoundable",value:function(t){return 0===t?this._boundable1:this._boundable2}},{key:"getDistance",value:function(){return this._distance}},{key:"distance",value:function(){return this.isLeaves()?this._itemDistance.distance(this._boundable1,this._boundable2):this._boundable1.getBounds().distance(this._boundable2.getBounds())}},{key:"interfaces_",get:function(){return[k]}}],[{key:"constructor_",value:function(){this._boundable1=null,this._boundable2=null,this._distance=null,this._itemDistance=null;var t=arguments[0],e=arguments[1],n=arguments[2];this._boundable1=t,this._boundable2=e,this._itemDistance=n,this._distance=this.distance()}},{key:"area",value:function(t){return t.getBounds().getArea()}},{key:"isComposite",value:function(t){return t instanceof sn}}]),e}(),hn=function(){function e(){t(this,e)}return n(e,[{key:"visitItem",value:function(t){}}]),e}(),cn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"queryInternal",value:function(){if(ot(arguments[2],hn)&&arguments[0]instanceof Object&&arguments[1]instanceof sn)for(var t=arguments[0],e=arguments[2],n=arguments[1].getChildBoundables(),r=0;r<n.size();r++){var i=n.get(r);this.getIntersectsOp().intersects(i.getBounds(),t)&&(i instanceof sn?this.queryInternal(t,i,e):i instanceof nn?e.visitItem(i.getItem()):V.shouldNeverReachHere())}else if(ot(arguments[2],rt)&&arguments[0]instanceof Object&&arguments[1]instanceof sn)for(var o=arguments[0],s=arguments[2],a=arguments[1].getChildBoundables(),u=0;u<a.size();u++){var l=a.get(u);this.getIntersectsOp().intersects(l.getBounds(),o)&&(l instanceof sn?this.queryInternal(o,l,s):l instanceof nn?s.add(l.getItem()):V.shouldNeverReachHere())}}},{key:"getNodeCapacity",value:function(){return this._nodeCapacity}},{key:"lastNode",value:function(t){return t.get(t.size()-1)}},{key:"size",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();n instanceof sn?t+=this.size(n):n instanceof nn&&(t+=1)}return t}}},{key:"removeItem",value:function(t,e){for(var n=null,r=t.getChildBoundables().iterator();r.hasNext();){var i=r.next();i instanceof nn&&i.getItem()===e&&(n=i)}return null!==n&&(t.getChildBoundables().remove(n),!0)}},{key:"itemsTree",value:function(){if(0===arguments.length){this.build();var t=this.itemsTree(this._root);return null===t?new dt:t}if(1===arguments.length){for(var e=arguments[0],n=new dt,r=e.getChildBoundables().iterator();r.hasNext();){var i=r.next();if(i instanceof sn){var o=this.itemsTree(i);null!==o&&n.add(o)}else i instanceof nn?n.add(i.getItem()):V.shouldNeverReachHere()}return n.size()<=0?null:n}}},{key:"insert",value:function(t,e){V.isTrue(!this._built,"Cannot insert items into an STR packed R-tree after it has been built."),this._itemBoundables.add(new nn(t,e))}},{key:"boundablesAtLevel",value:function(){if(1===arguments.length){var t=arguments[0],e=new dt;return this.boundablesAtLevel(t,this._root,e),e}if(3===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2];if(V.isTrue(n>-2),r.getLevel()===n)return i.add(r),null;for(var o=r.getChildBoundables().iterator();o.hasNext();){var s=o.next();s instanceof sn?this.boundablesAtLevel(n,s,i):(V.isTrue(s instanceof nn),-1===n&&i.add(s))}return null}}},{key:"query",value:function(){if(1===arguments.length){var t=arguments[0];this.build();var e=new dt;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.queryInternal(t,this._root,e),e}if(2===arguments.length){var n=arguments[0],r=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),n)&&this.queryInternal(n,this._root,r)}}},{key:"build",value:function(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0}},{key:"getRoot",value:function(){return this.build(),this._root}},{key:"remove",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2],o=this.removeItem(r,i);if(o)return!0;for(var s=null,a=r.getChildBoundables().iterator();a.hasNext();){var u=a.next();if(this.getIntersectsOp().intersects(u.getBounds(),n)&&u instanceof sn&&(o=this.remove(n,u,i))){s=u;break}}return null!==s&&s.getChildBoundables().isEmpty()&&r.getChildBoundables().remove(s),o}}},{key:"createHigherLevels",value:function(t,e){V.isTrue(!t.isEmpty());var n=this.createParentBoundables(t,e+1);return 1===n.size()?n.get(0):this.createHigherLevels(n,e+1)}},{key:"depth",value:function(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var n=e.next();if(n instanceof sn){var r=this.depth(n);r>t&&(t=r)}}return t+1}}},{key:"createParentBoundables",value:function(t,e){V.isTrue(!t.isEmpty());var n=new dt;n.add(this.createNode(e));var r=new dt(t);an.sort(r,this.getComparator());for(var i=r.iterator();i.hasNext();){var o=i.next();this.lastNode(n).getChildBoundables().size()===this.getNodeCapacity()&&n.add(this.createNode(e)),this.lastNode(n).addChildBoundable(o)}return n}},{key:"isEmpty",value:function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()}},{key:"interfaces_",get:function(){return[w]}}],[{key:"constructor_",value:function(){if(this._root=null,this._built=!1,this._itemBoundables=new dt,this._nodeCapacity=null,0===arguments.length)e.constructor_.call(this,e.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];V.isTrue(t>1,"Node capacity must be greater than 1"),this._nodeCapacity=t}}},{key:"compareDoubles",value:function(t,e){return t>e?1:t<e?-1:0}}]),e}();cn.IntersectsOp=function(){},cn.DEFAULT_NODE_CAPACITY=10;var fn=function(){function e(){t(this,e)}return n(e,[{key:"distance",value:function(t,e){}}]),e}(),gn=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"createParentBoundablesFromVerticalSlices",value:function(t,e){V.isTrue(t.length>0);for(var n=new dt,r=0;r<t.length;r++)n.addAll(this.createParentBoundablesFromVerticalSlice(t[r],e));return n}},{key:"nearestNeighbourK",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];return this.nearestNeighbourK(t,A.POSITIVE_INFINITY,e)}if(3===arguments.length){var n=arguments[0],r=arguments[2],i=arguments[1],o=new rn;o.add(n);for(var a=new rn;!o.isEmpty()&&i>=0;){var u=o.poll(),l=u.getDistance();if(l>=i)break;u.isLeaves()?a.size()<r?a.add(u):(a.peek().getDistance()>l&&(a.poll(),a.add(u)),i=a.peek().getDistance()):u.expandToQueue(o,i)}return s.getItems(a)}}},{key:"createNode",value:function(t){return new pn(t)}},{key:"size",value:function(){return 0===arguments.length?f(i(s.prototype),"size",this).call(this):f(i(s.prototype),"size",this).apply(this,arguments)}},{key:"insert",value:function(){if(!(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof X))return f(i(s.prototype),"insert",this).apply(this,arguments);var t=arguments[0],e=arguments[1];if(t.isNull())return null;f(i(s.prototype),"insert",this).call(this,t,e)}},{key:"getIntersectsOp",value:function(){return s.intersectsOp}},{key:"verticalSlices",value:function(t,e){for(var n=Math.trunc(Math.ceil(t.size()/e)),r=new Array(e).fill(null),i=t.iterator(),o=0;o<e;o++){r[o]=new dt;for(var s=0;i.hasNext()&&s<n;){var a=i.next();r[o].add(a),s++}}return r}},{key:"query",value:function(){if(1===arguments.length){var t=arguments[0];return f(i(s.prototype),"query",this).call(this,t)}if(2===arguments.length){var e=arguments[0],n=arguments[1];f(i(s.prototype),"query",this).call(this,e,n)}}},{key:"getComparator",value:function(){return s.yComparator}},{key:"createParentBoundablesFromVerticalSlice",value:function(t,e){return f(i(s.prototype),"createParentBoundables",this).call(this,t,e)}},{key:"remove",value:function(){if(2===arguments.length&&arguments[1]instanceof Object&&arguments[0]instanceof X){var t=arguments[0],e=arguments[1];return f(i(s.prototype),"remove",this).call(this,t,e)}return f(i(s.prototype),"remove",this).apply(this,arguments)}},{key:"depth",value:function(){return 0===arguments.length?f(i(s.prototype),"depth",this).call(this):f(i(s.prototype),"depth",this).apply(this,arguments)}},{key:"createParentBoundables",value:function(t,e){V.isTrue(!t.isEmpty());var n=Math.trunc(Math.ceil(t.size()/this.getNodeCapacity())),r=new dt(t);an.sort(r,s.xComparator);var i=this.verticalSlices(r,Math.trunc(Math.ceil(Math.sqrt(n))));return this.createParentBoundablesFromVerticalSlices(i,e)}},{key:"nearestNeighbour",value:function(){if(1===arguments.length){if(ot(arguments[0],fn)){var t=arguments[0];if(this.isEmpty())return null;var e=new ln(this.getRoot(),this.getRoot(),t);return this.nearestNeighbour(e)}if(arguments[0]instanceof ln){var n=arguments[0],r=A.POSITIVE_INFINITY,i=null,o=new rn;for(o.add(n);!o.isEmpty()&&r>0;){var s=o.poll(),a=s.getDistance();if(a>=r)break;s.isLeaves()?(r=a,i=s):s.expandToQueue(o,r)}return null===i?null:[i.getBoundable(0).getItem(),i.getBoundable(1).getItem()]}}else{if(2===arguments.length){var u=arguments[0],l=arguments[1];if(this.isEmpty()||u.isEmpty())return null;var h=new ln(this.getRoot(),u.getRoot(),l);return this.nearestNeighbour(h)}if(3===arguments.length){var c=arguments[2],f=new nn(arguments[0],arguments[1]),g=new ln(this.getRoot(),f,c);return this.nearestNeighbour(g)[0]}if(4===arguments.length){var p=arguments[2],v=arguments[3],d=new nn(arguments[0],arguments[1]),y=new ln(this.getRoot(),d,p);return this.nearestNeighbourK(y,v)}}}},{key:"isWithinDistance",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=A.POSITIVE_INFINITY,r=new rn;for(r.add(t);!r.isEmpty();){var i=r.poll(),o=i.getDistance();if(o>e)return!1;if(i.maximumDistance()<=e)return!0;if(i.isLeaves()){if((n=o)<=e)return!0}else i.expandToQueue(r,n)}return!1}if(3===arguments.length){var s=arguments[0],a=arguments[1],u=arguments[2],l=new ln(this.getRoot(),s.getRoot(),a);return this.isWithinDistance(l,u)}}},{key:"interfaces_",get:function(){return[on,w]}}],[{key:"constructor_",value:function(){if(0===arguments.length)s.constructor_.call(this,s.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){var t=arguments[0];cn.constructor_.call(this,t)}}},{key:"centreX",value:function(t){return s.avg(t.getMinX(),t.getMaxX())}},{key:"avg",value:function(t,e){return(t+e)/2}},{key:"getItems",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;!t.isEmpty();){var r=t.poll();e[n]=r.getBoundable(0).getItem(),n++}return e}},{key:"centreY",value:function(t){return s.avg(t.getMinY(),t.getMaxY())}}]),s}(cn),pn=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,[{key:"computeBounds",value:function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new X(n.getBounds()):t.expandToInclude(n.getBounds())}return t}}],[{key:"constructor_",value:function(){var t=arguments[0];sn.constructor_.call(this,t)}}]),o}(sn);gn.STRtreeNode=pn,gn.xComparator=new(function(){function e(){t(this,e)}return n(e,[{key:"interfaces_",get:function(){return[D]}},{key:"compare",value:function(t,e){return cn.compareDoubles(gn.centreX(t.getBounds()),gn.centreX(e.getBounds()))}}]),e}()),gn.yComparator=new(function(){function e(){t(this,e)}return n(e,[{key:"interfaces_",get:function(){return[D]}},{key:"compare",value:function(t,e){return cn.compareDoubles(gn.centreY(t.getBounds()),gn.centreY(e.getBounds()))}}]),e}()),gn.intersectsOp=new(function(){function e(){t(this,e)}return n(e,[{key:"interfaces_",get:function(){return[IntersectsOp]}},{key:"intersects",value:function(t,e){return t.intersects(e)}}]),e}()),gn.DEFAULT_NODE_CAPACITY=10;var vn=function(){function e(){t(this,e)}return n(e,null,[{key:"relativeSign",value:function(t,e){return t<e?-1:t>e?1:0}},{key:"compare",value:function(t,n,r){if(n.equals2D(r))return 0;var i=e.relativeSign(n.x,r.x),o=e.relativeSign(n.y,r.y);switch(t){case 0:return e.compareValue(i,o);case 1:return e.compareValue(o,i);case 2:return e.compareValue(o,-i);case 3:return e.compareValue(-i,o);case 4:return e.compareValue(-i,-o);case 5:return e.compareValue(-o,-i);case 6:return e.compareValue(-o,i);case 7:return e.compareValue(i,-o)}return V.shouldNeverReachHere("invalid octant value"),0}},{key:"compareValue",value:function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0}}]),e}(),dn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getCoordinate",value:function(){return this.coord}},{key:"print",value:function(t){t.print(this.coord),t.print(" seg # = "+this.segmentIndex)}},{key:"compareTo",value:function(t){var e=t;return this.segmentIndex<e.segmentIndex?-1:this.segmentIndex>e.segmentIndex?1:this.coord.equals2D(e.coord)?0:this._isInterior?e._isInterior?vn.compare(this._segmentOctant,this.coord,e.coord):1:-1}},{key:"isEndPoint",value:function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t}},{key:"toString",value:function(){return this.segmentIndex+":"+this.coord.toString()}},{key:"isInterior",value:function(){return this._isInterior}},{key:"interfaces_",get:function(){return[k]}}],[{key:"constructor_",value:function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],r=arguments[3];this._segString=t,this.coord=new z(e),this.segmentIndex=n,this._segmentOctant=r,this._isInterior=!e.equals2D(t.getCoordinate(n))}}]),e}(),yn=function(){function e(){t(this,e)}return n(e,[{key:"hasNext",value:function(){}},{key:"next",value:function(){}},{key:"remove",value:function(){}}]),e}(),mn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getSplitCoordinates",value:function(){var t=new Ht;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var r=e.next();this.addEdgeCoordinates(n,r,t),n=r}return t.toCoordinateArray()}},{key:"addCollapsedNodes",value:function(){var t=new dt;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}}},{key:"createSplitEdgePts",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2;if(2===n)return[new z(t.coord),new z(e.coord)];var r=this._edge.getCoordinate(e.segmentIndex),i=e.isInterior()||!e.coord.equals2D(r);i||n--;var o=new Array(n).fill(null),s=0;o[s++]=new z(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this._edge.getCoordinate(a);return i&&(o[s]=new z(e.coord)),o}},{key:"print",value:function(t){t.println("Intersections:");for(var e=this.iterator();e.hasNext();)e.next().print(t)}},{key:"findCollapsesFromExistingVertices",value:function(t){for(var e=0;e<this._edge.size()-2;e++){var n=this._edge.getCoordinate(e);this._edge.getCoordinate(e+1);var r=this._edge.getCoordinate(e+2);n.equals2D(r)&&t.add(at.valueOf(e+1))}}},{key:"addEdgeCoordinates",value:function(t,e,n){var r=this.createSplitEdgePts(t,e);n.add(r,!1)}},{key:"iterator",value:function(){return this._nodeMap.values().iterator()}},{key:"addSplitEdges",value:function(t){this.addEndpoints(),this.addCollapsedNodes();for(var e=this.iterator(),n=e.next();e.hasNext();){var r=e.next(),i=this.createSplitEdge(n,r);t.add(i),n=r}}},{key:"findCollapseIndex",value:function(t,e,n){if(!t.coord.equals2D(e.coord))return!1;var r=e.segmentIndex-t.segmentIndex;return e.isInterior()||r--,1===r&&(n[0]=t.segmentIndex+1,!0)}},{key:"findCollapsesFromInsertedNodes",value:function(t){for(var e=new Array(1).fill(null),n=this.iterator(),r=n.next();n.hasNext();){var i=n.next();this.findCollapseIndex(r,i,e)&&t.add(at.valueOf(e[0])),r=i}}},{key:"getEdge",value:function(){return this._edge}},{key:"addEndpoints",value:function(){var t=this._edge.size()-1;this.add(this._edge.getCoordinate(0),0),this.add(this._edge.getCoordinate(t),t)}},{key:"createSplitEdge",value:function(t,e){var n=this.createSplitEdgePts(t,e);return new kn(n,this._edge.getData())}},{key:"add",value:function(t,e){var n=new dn(this._edge,t,e,this._edge.getSegmentOctant(e)),r=this._nodeMap.get(n);return null!==r?(V.isTrue(r.coord.equals2D(t),"Found equal nodes with different coordinates"),r):(this._nodeMap.put(n,n),n)}},{key:"checkSplitEdgesCorrectness",value:function(t){var e=this._edge.getCoordinates(),n=t.get(0).getCoordinate(0);if(!n.equals2D(e[0]))throw new F("bad split edge start point at "+n);var r=t.get(t.size()-1).getCoordinates(),i=r[r.length-1];if(!i.equals2D(e[e.length-1]))throw new F("bad split edge end point at "+i)}}],[{key:"constructor_",value:function(){this._nodeMap=new Ze,this._edge=null;var t=arguments[0];this._edge=t}}]),e}(),_n=function(){function e(){t(this,e)}return n(e,null,[{key:"octant",value:function(){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){var t=arguments[0],n=arguments[1];if(0===t&&0===n)throw new x("Cannot compute the octant for point ( "+t+", "+n+" )");var r=Math.abs(t),i=Math.abs(n);return t>=0?n>=0?r>=i?0:1:r>=i?7:6:n>=0?r>=i?3:2:r>=i?4:5}if(arguments[0]instanceof z&&arguments[1]instanceof z){var o=arguments[0],s=arguments[1],a=s.x-o.x,u=s.y-o.y;if(0===a&&0===u)throw new x("Cannot compute the octant for two identical points "+o);return e.octant(a,u)}}}]),e}(),xn=function(){function e(){t(this,e)}return n(e,[{key:"getCoordinates",value:function(){}},{key:"size",value:function(){}},{key:"getCoordinate",value:function(t){}},{key:"isClosed",value:function(){}},{key:"setData",value:function(t){}},{key:"getData",value:function(){}}]),e}(),En=function(){function e(){t(this,e)}return n(e,[{key:"addIntersection",value:function(t,e){}},{key:"interfaces_",get:function(){return[xn]}}]),e}(),kn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getCoordinates",value:function(){return this._pts}},{key:"size",value:function(){return this._pts.length}},{key:"getCoordinate",value:function(t){return this._pts[t]}},{key:"isClosed",value:function(){return this._pts[0].equals(this._pts[this._pts.length-1])}},{key:"getSegmentOctant",value:function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))}},{key:"setData",value:function(t){this._data=t}},{key:"safeOctant",value:function(t,e){return t.equals2D(e)?0:_n.octant(t,e)}},{key:"getData",value:function(){return this._data}},{key:"addIntersection",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[1],r=arguments[3],i=new z(arguments[0].getIntersection(r));this.addIntersection(i,n)}}},{key:"toString",value:function(){return Le.toLineString(new $t(this._pts))}},{key:"getNodeList",value:function(){return this._nodeList}},{key:"addIntersectionNode",value:function(t,e){var n=e,r=n+1;if(r<this._pts.length){var i=this._pts[r];t.equals2D(i)&&(n=r)}return this._nodeList.add(t,n)}},{key:"addIntersections",value:function(t,e,n){for(var r=0;r<t.getIntersectionNum();r++)this.addIntersection(t,e,n,r)}},{key:"interfaces_",get:function(){return[En]}}],[{key:"constructor_",value:function(){this._nodeList=new mn(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e}},{key:"getNodedSubstrings",value:function(){if(1===arguments.length){var t=arguments[0],n=new dt;return e.getNodedSubstrings(t,n),n}if(2===arguments.length)for(var r=arguments[1],i=arguments[0].iterator();i.hasNext();)i.next().getNodeList().addSplitEdges(r)}}]),e}(),bn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"minX",value:function(){return Math.min(this.p0.x,this.p1.x)}},{key:"orientationIndex",value:function(){if(arguments[0]instanceof e){var t=arguments[0],n=ft.index(this.p0,this.p1,t.p0),r=ft.index(this.p0,this.p1,t.p1);return n>=0&&r>=0||n<=0&&r<=0?Math.max(n,r):0}if(arguments[0]instanceof z){var i=arguments[0];return ft.index(this.p0,this.p1,i)}}},{key:"toGeometry",value:function(t){return t.createLineString([this.p0,this.p1])}},{key:"isVertical",value:function(){return this.p0.x===this.p1.x}},{key:"equals",value:function(t){if(!(t instanceof e))return!1;var n=t;return this.p0.equals(n.p0)&&this.p1.equals(n.p1)}},{key:"intersection",value:function(t){var e=new Ce;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null}},{key:"project",value:function(){if(arguments[0]instanceof z){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new z(t);var n=this.projectionFactor(t),r=new z;return r.x=this.p0.x+n*(this.p1.x-this.p0.x),r.y=this.p0.y+n*(this.p1.y-this.p0.y),r}if(arguments[0]instanceof e){var i=arguments[0],o=this.projectionFactor(i.p0),s=this.projectionFactor(i.p1);if(o>=1&&s>=1)return null;if(o<=0&&s<=0)return null;var a=this.project(i.p0);o<0&&(a=this.p0),o>1&&(a=this.p1);var u=this.project(i.p1);return s<0&&(u=this.p0),s>1&&(u=this.p1),new e(a,u)}}},{key:"normalize",value:function(){this.p1.compareTo(this.p0)<0&&this.reverse()}},{key:"angle",value:function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)}},{key:"getCoordinate",value:function(t){return 0===t?this.p0:this.p1}},{key:"distancePerpendicular",value:function(t){return kt.pointToLinePerpendicular(t,this.p0,this.p1)}},{key:"minY",value:function(){return Math.min(this.p0.y,this.p1.y)}},{key:"midPoint",value:function(){return e.midPoint(this.p0,this.p1)}},{key:"projectionFactor",value:function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,r=e*e+n*n;return r<=0?A.NaN:((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/r}},{key:"closestPoints",value:function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),r=A.MAX_VALUE,i=null,o=this.closestPoint(t.p0);r=o.distance(t.p0),n[0]=o,n[1]=t.p0;var s=this.closestPoint(t.p1);(i=s.distance(t.p1))<r&&(r=i,n[0]=s,n[1]=t.p1);var a=t.closestPoint(this.p0);(i=a.distance(this.p0))<r&&(r=i,n[0]=this.p0,n[1]=a);var u=t.closestPoint(this.p1);return(i=u.distance(this.p1))<r&&(r=i,n[0]=this.p1,n[1]=u),n}},{key:"closestPoint",value:function(t){var e=this.projectionFactor(t);return e>0&&e<1?this.project(t):this.p0.distance(t)<this.p1.distance(t)?this.p0:this.p1}},{key:"maxX",value:function(){return Math.max(this.p0.x,this.p1.x)}},{key:"getLength",value:function(){return this.p0.distance(this.p1)}},{key:"compareTo",value:function(t){var e=t,n=this.p0.compareTo(e.p0);return 0!==n?n:this.p1.compareTo(e.p1)}},{key:"reverse",value:function(){var t=this.p0;this.p0=this.p1,this.p1=t}},{key:"equalsTopo",value:function(t){return this.p0.equals(t.p0)&&this.p1.equals(t.p1)||this.p0.equals(t.p1)&&this.p1.equals(t.p0)}},{key:"lineIntersection",value:function(t){return _t.intersection(this.p0,this.p1,t.p0,t.p1)}},{key:"maxY",value:function(){return Math.max(this.p0.y,this.p1.y)}},{key:"pointAlongOffset",value:function(t,e){var n=this.p0.x+t*(this.p1.x-this.p0.x),r=this.p0.y+t*(this.p1.y-this.p0.y),i=this.p1.x-this.p0.x,o=this.p1.y-this.p0.y,s=Math.sqrt(i*i+o*o),a=0,u=0;if(0!==e){if(s<=0)throw new IllegalStateException("Cannot compute offset from zero-length line segment");a=e*i/s,u=e*o/s}return new z(n-u,r+a)}},{key:"setCoordinates",value:function(){if(1===arguments.length){var t=arguments[0];this.setCoordinates(t.p0,t.p1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.p0.x=e.x,this.p0.y=e.y,this.p1.x=n.x,this.p1.y=n.y}}},{key:"segmentFraction",value:function(t){var e=this.projectionFactor(t);return e<0?e=0:(e>1||A.isNaN(e))&&(e=1),e}},{key:"toString",value:function(){return"LINESTRING( "+this.p0.x+" "+this.p0.y+", "+this.p1.x+" "+this.p1.y+")"}},{key:"isHorizontal",value:function(){return this.p0.y===this.p1.y}},{key:"reflect",value:function(t){var e=this.p1.getY()-this.p0.getY(),n=this.p0.getX()-this.p1.getX(),r=this.p0.getY()*(this.p1.getX()-this.p0.getX())-this.p0.getX()*(this.p1.getY()-this.p0.getY()),i=e*e+n*n,o=e*e-n*n,s=t.getX(),a=t.getY();return new z((-o*s-2*e*n*a-2*e*r)/i,(o*a-2*e*n*s-2*n*r)/i)}},{key:"distance",value:function(){if(arguments[0]instanceof e){var t=arguments[0];return kt.segmentToSegment(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof z){var n=arguments[0];return kt.pointToSegment(n,this.p0,this.p1)}}},{key:"pointAlong",value:function(t){var e=new z;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}},{key:"hashCode",value:function(){var t=A.doubleToLongBits(this.p0.x);t^=31*A.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=A.doubleToLongBits(this.p1.x);return n^=31*A.doubleToLongBits(this.p1.y),e^Math.trunc(n)^Math.trunc(n>>32)}},{key:"interfaces_",get:function(){return[k,w]}}],[{key:"constructor_",value:function(){if(this.p0=null,this.p1=null,0===arguments.length)e.constructor_.call(this,new z,new z);else if(1===arguments.length){var t=arguments[0];e.constructor_.call(this,t.p0,t.p1)}else if(2===arguments.length){var n=arguments[0],r=arguments[1];this.p0=n,this.p1=r}else if(4===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];e.constructor_.call(this,new z(i,o),new z(s,a))}}},{key:"midPoint",value:function(t,e){return new z((t.x+e.x)/2,(t.y+e.y)/2)}}]),e}(),wn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"overlap",value:function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[1],e=arguments[2],n=arguments[3];arguments[0].getLineSegment(t,this._overlapSeg1),e.getLineSegment(n,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}}}],[{key:"constructor_",value:function(){this._overlapSeg1=new bn,this._overlapSeg2=new bn}}]),e}(),In=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getLineSegment",value:function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]}},{key:"computeSelect",value:function(t,e,n,r){var i=this._pts[e],o=this._pts[n];if(n-e==1)return r.select(this,e),null;if(!t.intersects(i,o))return null;var s=Math.trunc((e+n)/2);e<s&&this.computeSelect(t,e,s,r),s<n&&this.computeSelect(t,s,n,r)}},{key:"getCoordinates",value:function(){for(var t=new Array(this._end-this._start+1).fill(null),e=0,n=this._start;n<=this._end;n++)t[e++]=this._pts[n];return t}},{key:"computeOverlaps",value:function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.computeOverlaps(this._start,this._end,t,t._start,t._end,e)}else if(6===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2],o=arguments[3],s=arguments[4],a=arguments[5];if(r-n==1&&s-o==1)return a.overlap(this,n,i,o),null;if(!this.overlaps(n,r,i,o,s))return null;var u=Math.trunc((n+r)/2),l=Math.trunc((o+s)/2);n<u&&(o<l&&this.computeOverlaps(n,u,i,o,l,a),l<s&&this.computeOverlaps(n,u,i,l,s,a)),u<r&&(o<l&&this.computeOverlaps(u,r,i,o,l,a),l<s&&this.computeOverlaps(u,r,i,l,s,a))}}},{key:"setId",value:function(t){this._id=t}},{key:"select",value:function(t,e){this.computeSelect(t,this._start,this._end,e)}},{key:"getEnvelope",value:function(){if(null===this._env){var t=this._pts[this._start],e=this._pts[this._end];this._env=new X(t,e)}return this._env}},{key:"overlaps",value:function(t,e,n,r,i){return X.intersects(this._pts[t],this._pts[e],n._pts[r],n._pts[i])}},{key:"getEndIndex",value:function(){return this._end}},{key:"getStartIndex",value:function(){return this._start}},{key:"getContext",value:function(){return this._context}},{key:"getId",value:function(){return this._id}}],[{key:"constructor_",value:function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],r=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=r}}]),e}(),Nn=function(){function e(){t(this,e)}return n(e,null,[{key:"findChainEnd",value:function(t,e){for(var n=e;n<t.length-1&&t[n].equals2D(t[n+1]);)n++;if(n>=t.length-1)return t.length-1;for(var r=We.quadrant(t[n],t[n+1]),i=e+1;i<t.length&&(t[i-1].equals2D(t[i])||We.quadrant(t[i-1],t[i])===r);)i++;return i-1}},{key:"getChains",value:function(){if(1===arguments.length){var t=arguments[0];return e.getChains(t,null)}if(2===arguments.length){var n=arguments[0],r=arguments[1],i=new dt,o=0;do{var s=e.findChainEnd(n,o),a=new In(n,o,s,r);i.add(a),o=s}while(o<n.length-1);return i}}}]),e}(),Sn=function(){function e(){t(this,e)}return n(e,[{key:"computeNodes",value:function(t){}},{key:"getNodedSubstrings",value:function(){}}]),e}(),Mn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"setSegmentIntersector",value:function(t){this._segInt=t}},{key:"interfaces_",get:function(){return[Sn]}}],[{key:"constructor_",value:function(){if(this._segInt=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this.setSegmentIntersector(t)}}}]),e}(),Ln=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,[{key:"getMonotoneChains",value:function(){return this._monoChains}},{key:"getNodedSubstrings",value:function(){return kn.getNodedSubstrings(this._nodedSegStrings)}},{key:"getIndex",value:function(){return this._index}},{key:"add",value:function(t){for(var e=Nn.getChains(t.getCoordinates(),t).iterator();e.hasNext();){var n=e.next();n.setId(this._idCounter++),this._index.insert(n.getEnvelope(),n),this._monoChains.add(n)}}},{key:"computeNodes",value:function(t){this._nodedSegStrings=t;for(var e=t.iterator();e.hasNext();)this.add(e.next());this.intersectChains()}},{key:"intersectChains",value:function(){for(var t=new Pn(this._segInt),e=this._monoChains.iterator();e.hasNext();)for(var n=e.next(),r=this._index.query(n.getEnvelope()).iterator();r.hasNext();){var i=r.next();if(i.getId()>n.getId()&&(n.computeOverlaps(i,t),this._nOverlaps++),this._segInt.isDone())return null}}}],[{key:"constructor_",value:function(){if(this._monoChains=new dt,this._index=new gn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0,0===arguments.length);else if(1===arguments.length){var t=arguments[0];Mn.constructor_.call(this,t)}}}]),o}(Mn),Pn=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"overlap",value:function(){if(4!==arguments.length)return f(i(s.prototype),"overlap",this).apply(this,arguments);var t=arguments[1],e=arguments[2],n=arguments[3],r=arguments[0].getContext(),o=e.getContext();this._si.processIntersections(r,t,o,n)}}],[{key:"constructor_",value:function(){this._si=null;var t=arguments[0];this._si=t}}]),s}(wn);Ln.SegmentOverlapAction=Pn;var Cn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"isDeletable",value:function(t,e,n,r){var i=this._inputLine[t],o=this._inputLine[e],s=this._inputLine[n];return!!this.isConcave(i,o,s)&&!!this.isShallow(i,o,s,r)&&this.isShallowSampled(i,o,t,n,r)}},{key:"deleteShallowConcavities",value:function(){for(var t=1,n=this.findNextNonDeletedIndex(t),r=this.findNextNonDeletedIndex(n),i=!1;r<this._inputLine.length;){var o=!1;this.isDeletable(t,n,r,this._distanceTol)&&(this._isDeleted[n]=e.DELETE,o=!0,i=!0),t=o?r:n,n=this.findNextNonDeletedIndex(t),r=this.findNextNonDeletedIndex(n)}return i}},{key:"isShallowConcavity",value:function(t,e,n,r){return ft.index(t,e,n)===this._angleOrientation&&kt.pointToSegment(e,t,n)<r}},{key:"isShallowSampled",value:function(t,n,r,i,o){var s=Math.trunc((i-r)/e.NUM_PTS_TO_CHECK);s<=0&&(s=1);for(var a=r;a<i;a+=s)if(!this.isShallow(t,n,this._inputLine[a],o))return!1;return!0}},{key:"isConcave",value:function(t,e,n){return ft.index(t,e,n)===this._angleOrientation}},{key:"simplify",value:function(t){this._distanceTol=Math.abs(t),t<0&&(this._angleOrientation=ft.CLOCKWISE),this._isDeleted=new Array(this._inputLine.length).fill(null);var e=!1;do{e=this.deleteShallowConcavities()}while(e);return this.collapseLine()}},{key:"findNextNonDeletedIndex",value:function(t){for(var n=t+1;n<this._inputLine.length&&this._isDeleted[n]===e.DELETE;)n++;return n}},{key:"isShallow",value:function(t,e,n,r){return kt.pointToSegment(e,t,n)<r}},{key:"collapseLine",value:function(){for(var t=new Ht,n=0;n<this._inputLine.length;n++)this._isDeleted[n]!==e.DELETE&&t.add(this._inputLine[n]);return t.toCoordinateArray()}}],[{key:"constructor_",value:function(){this._inputLine=null,this._distanceTol=null,this._isDeleted=null,this._angleOrientation=ft.COUNTERCLOCKWISE;var t=arguments[0];this._inputLine=t}},{key:"simplify",value:function(t,n){return new e(t).simplify(n)}}]),e}();Cn.INIT=0,Cn.DELETE=1,Cn.KEEP=1,Cn.NUM_PTS_TO_CHECK=10;var Tn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getCoordinates",value:function(){return this._ptList.toArray(e.COORDINATE_ARRAY_TYPE)}},{key:"setPrecisionModel",value:function(t){this._precisionModel=t}},{key:"addPt",value:function(t){var e=new z(t);if(this._precisionModel.makePrecise(e),this.isRedundant(e))return null;this._ptList.add(e)}},{key:"reverse",value:function(){}},{key:"addPts",value:function(t,e){if(e)for(var n=0;n<t.length;n++)this.addPt(t[n]);else for(var r=t.length-1;r>=0;r--)this.addPt(t[r])}},{key:"isRedundant",value:function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)<this._minimimVertexDistance}},{key:"toString",value:function(){return(new ae).createLineString(this.getCoordinates()).toString()}},{key:"closeRing",value:function(){if(this._ptList.size()<1)return null;var t=new z(this._ptList.get(0)),e=this._ptList.get(this._ptList.size()-1);if(t.equals(e))return null;this._ptList.add(t)}},{key:"setMinimumVertexDistance",value:function(t){this._minimimVertexDistance=t}}],[{key:"constructor_",value:function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new dt}}]),e}();Tn.COORDINATE_ARRAY_TYPE=new Array(0).fill(null);var On=function(){function e(){t(this,e)}return n(e,null,[{key:"toDegrees",value:function(t){return 180*t/Math.PI}},{key:"normalize",value:function(t){for(;t>Math.PI;)t-=e.PI_TIMES_2;for(;t<=-Math.PI;)t+=e.PI_TIMES_2;return t}},{key:"angle",value:function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],r=n.x-e.x,i=n.y-e.y;return Math.atan2(i,r)}}},{key:"isAcute",value:function(t,e,n){var r=t.x-e.x,i=t.y-e.y;return r*(n.x-e.x)+i*(n.y-e.y)>0}},{key:"isObtuse",value:function(t,e,n){var r=t.x-e.x,i=t.y-e.y;return r*(n.x-e.x)+i*(n.y-e.y)<0}},{key:"interiorAngle",value:function(t,n,r){var i=e.angle(n,t),o=e.angle(n,r);return Math.abs(o-i)}},{key:"normalizePositive",value:function(t){if(t<0){for(;t<0;)t+=e.PI_TIMES_2;t>=e.PI_TIMES_2&&(t=0)}else{for(;t>=e.PI_TIMES_2;)t-=e.PI_TIMES_2;t<0&&(t=0)}return t}},{key:"angleBetween",value:function(t,n,r){var i=e.angle(n,t),o=e.angle(n,r);return e.diff(i,o)}},{key:"diff",value:function(t,e){var n=null;return(n=t<e?e-t:t-e)>Math.PI&&(n=2*Math.PI-n),n}},{key:"toRadians",value:function(t){return t*Math.PI/180}},{key:"getTurn",value:function(t,n){var r=Math.sin(n-t);return r>0?e.COUNTERCLOCKWISE:r<0?e.CLOCKWISE:e.NONE}},{key:"angleBetweenOriented",value:function(t,n,r){var i=e.angle(n,t),o=e.angle(n,r)-i;return o<=-Math.PI?o+e.PI_TIMES_2:o>Math.PI?o-e.PI_TIMES_2:o}}]),e}();On.PI_TIMES_2=2*Math.PI,On.PI_OVER_2=Math.PI/2,On.PI_OVER_4=Math.PI/4,On.COUNTERCLOCKWISE=ft.COUNTERCLOCKWISE,On.CLOCKWISE=ft.CLOCKWISE,On.NONE=ft.COLLINEAR;var Rn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"addNextSegment",value:function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=ft.index(this._s0,this._s1,this._s2),r=n===ft.CLOCKWISE&&this._side===tt.LEFT||n===ft.COUNTERCLOCKWISE&&this._side===tt.RIGHT;0===n?this.addCollinear(e):r?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)}},{key:"addLineEndCap",value:function(t,e){var n=new bn(t,e),r=new bn;this.computeOffsetSegment(n,tt.LEFT,this._distance,r);var i=new bn;this.computeOffsetSegment(n,tt.RIGHT,this._distance,i);var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o);switch(this._bufParams.getEndCapStyle()){case y.CAP_ROUND:this._segList.addPt(r.p1),this.addDirectedFillet(e,a+Math.PI/2,a-Math.PI/2,ft.CLOCKWISE,this._distance),this._segList.addPt(i.p1);break;case y.CAP_FLAT:this._segList.addPt(r.p1),this._segList.addPt(i.p1);break;case y.CAP_SQUARE:var u=new z;u.x=Math.abs(this._distance)*Math.cos(a),u.y=Math.abs(this._distance)*Math.sin(a);var l=new z(r.p1.x+u.x,r.p1.y+u.y),h=new z(i.p1.x+u.x,i.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(h)}}},{key:"getCoordinates",value:function(){return this._segList.getCoordinates()}},{key:"addMitreJoin",value:function(t,e,n,r){var i=_t.intersection(e.p0,e.p1,n.p0,n.p1);if(null!==i&&(r<=0?1:i.distance(t)/Math.abs(r))<=this._bufParams.getMitreLimit())return this._segList.addPt(i),null;this.addLimitedMitreJoin(e,n,r,this._bufParams.getMitreLimit())}},{key:"addOutsideTurn",value:function(t,n){if(this._offset0.p1.distance(this._offset1.p0)<this._distance*e.OFFSET_SEGMENT_SEPARATION_FACTOR)return this._segList.addPt(this._offset0.p1),null;this._bufParams.getJoinStyle()===y.JOIN_MITRE?this.addMitreJoin(this._s1,this._offset0,this._offset1,this._distance):this._bufParams.getJoinStyle()===y.JOIN_BEVEL?this.addBevelJoin(this._offset0,this._offset1):(n&&this._segList.addPt(this._offset0.p1),this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,t,this._distance),this._segList.addPt(this._offset1.p0))}},{key:"createSquare",value:function(t){this._segList.addPt(new z(t.x+this._distance,t.y+this._distance)),this._segList.addPt(new z(t.x+this._distance,t.y-this._distance)),this._segList.addPt(new z(t.x-this._distance,t.y-this._distance)),this._segList.addPt(new z(t.x-this._distance,t.y+this._distance)),this._segList.closeRing()}},{key:"addSegments",value:function(t,e){this._segList.addPts(t,e)}},{key:"addFirstSegment",value:function(){this._segList.addPt(this._offset1.p0)}},{key:"addCornerFillet",value:function(t,e,n,r,i){var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o),u=n.x-t.x,l=n.y-t.y,h=Math.atan2(l,u);r===ft.CLOCKWISE?a<=h&&(a+=2*Math.PI):a>=h&&(a-=2*Math.PI),this._segList.addPt(e),this.addDirectedFillet(t,a,h,r,i),this._segList.addPt(n)}},{key:"addLastSegment",value:function(){this._segList.addPt(this._offset1.p1)}},{key:"initSideSegments",value:function(t,e,n){this._s1=t,this._s2=e,this._side=n,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,n,this._distance,this._offset1)}},{key:"addLimitedMitreJoin",value:function(t,e,n,r){var i=this._seg0.p1,o=On.angle(i,this._seg0.p0),s=On.angleBetweenOriented(this._seg0.p0,i,this._seg1.p1)/2,a=On.normalize(o+s),u=On.normalize(a+Math.PI),l=r*n,h=n-l*Math.abs(Math.sin(s)),c=i.x+l*Math.cos(u),f=i.y+l*Math.sin(u),g=new z(c,f),p=new bn(i,g),v=p.pointAlongOffset(1,h),d=p.pointAlongOffset(1,-h);this._side===tt.LEFT?(this._segList.addPt(v),this._segList.addPt(d)):(this._segList.addPt(d),this._segList.addPt(v))}},{key:"addDirectedFillet",value:function(t,e,n,r,i){var o=r===ft.CLOCKWISE?-1:1,s=Math.abs(e-n),a=Math.trunc(s/this._filletAngleQuantum+.5);if(a<1)return null;for(var u=s/a,l=new z,h=0;h<a;h++){var c=e+o*h*u;l.x=t.x+i*Math.cos(c),l.y=t.y+i*Math.sin(c),this._segList.addPt(l)}}},{key:"computeOffsetSegment",value:function(t,e,n,r){var i=e===tt.LEFT?1:-1,o=t.p1.x-t.p0.x,s=t.p1.y-t.p0.y,a=Math.sqrt(o*o+s*s),u=i*n*o/a,l=i*n*s/a;r.p0.x=t.p0.x-l,r.p0.y=t.p0.y+u,r.p1.x=t.p1.x-l,r.p1.y=t.p1.y+u}},{key:"addInsideTurn",value:function(t,n){if(this._li.computeIntersection(this._offset0.p0,this._offset0.p1,this._offset1.p0,this._offset1.p1),this._li.hasIntersection())this._segList.addPt(this._li.getIntersection(0));else if(this._hasNarrowConcaveAngle=!0,this._offset0.p1.distance(this._offset1.p0)<this._distance*e.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR)this._segList.addPt(this._offset0.p1);else{if(this._segList.addPt(this._offset0.p1),this._closingSegLengthFactor>0){var r=new z((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(r);var i=new z((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(i)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}}},{key:"createCircle",value:function(t){var e=new z(t.x+this._distance,t.y);this._segList.addPt(e),this.addDirectedFillet(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()}},{key:"addBevelJoin",value:function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)}},{key:"init",value:function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new Tn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*e.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)}},{key:"addCollinear",value:function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===y.JOIN_BEVEL||this._bufParams.getJoinStyle()===y.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,ft.CLOCKWISE,this._distance))}},{key:"closeRing",value:function(){this._segList.closeRing()}},{key:"hasNarrowConcaveAngle",value:function(){return this._hasNarrowConcaveAngle}}],[{key:"constructor_",value:function(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new bn,this._seg1=new bn,this._offset0=new bn,this._offset1=new bn,this._side=0,this._hasNarrowConcaveAngle=!1;var t=arguments[0],n=arguments[1],r=arguments[2];this._precisionModel=t,this._bufParams=n,this._li=new Ce,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===y.JOIN_ROUND&&(this._closingSegLengthFactor=e.MAX_CLOSING_SEG_LEN_FACTOR),this.init(r)}}]),e}();Rn.OFFSET_SEGMENT_SEPARATION_FACTOR=.001,Rn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR=.001,Rn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR=1e-6,Rn.MAX_CLOSING_SEG_LEN_FACTOR=80;var An=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getOffsetCurve",value:function(t,e){if(this._distance=e,0===e)return null;var n=e<0,r=Math.abs(e),i=this.getSegGen(r);t.length<=1?this.computePointCurve(t[0],i):this.computeOffsetCurve(t,n,i);var o=i.getCoordinates();return n&&Wt.reverse(o),o}},{key:"computeSingleSidedBufferCurve",value:function(t,e,n){var r=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var i=Cn.simplify(t,-r),o=i.length-1;n.initSideSegments(i[o],i[o-1],tt.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(i[s],!0)}else{n.addSegments(t,!1);var a=Cn.simplify(t,r),u=a.length-1;n.initSideSegments(a[0],a[1],tt.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment(),n.closeRing()}},{key:"computeRingBufferCurve",value:function(t,e,n){var r=this.simplifyTolerance(this._distance);e===tt.RIGHT&&(r=-r);var i=Cn.simplify(t,r),o=i.length-1;n.initSideSegments(i[o-1],i[0],e);for(var s=1;s<=o;s++){var a=1!==s;n.addNextSegment(i[s],a)}n.closeRing()}},{key:"computeLineBufferCurve",value:function(t,e){var n=this.simplifyTolerance(this._distance),r=Cn.simplify(t,n),i=r.length-1;e.initSideSegments(r[0],r[1],tt.LEFT);for(var o=2;o<=i;o++)e.addNextSegment(r[o],!0);e.addLastSegment(),e.addLineEndCap(r[i-1],r[i]);var s=Cn.simplify(t,-n),a=s.length-1;e.initSideSegments(s[a],s[a-1],tt.LEFT);for(var u=a-2;u>=0;u--)e.addNextSegment(s[u],!0);e.addLastSegment(),e.addLineEndCap(s[1],s[0]),e.closeRing()}},{key:"computePointCurve",value:function(t,e){switch(this._bufParams.getEndCapStyle()){case y.CAP_ROUND:e.createCircle(t);break;case y.CAP_SQUARE:e.createSquare(t)}}},{key:"getLineCurve",value:function(t,e){if(this._distance=e,this.isLineOffsetEmpty(e))return null;var n=Math.abs(e),r=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],r);else if(this._bufParams.isSingleSided()){var i=e<0;this.computeSingleSidedBufferCurve(t,i,r)}else this.computeLineBufferCurve(t,r);return r.getCoordinates()}},{key:"getBufferParameters",value:function(){return this._bufParams}},{key:"simplifyTolerance",value:function(t){return t*this._bufParams.getSimplifyFactor()}},{key:"getRingCurve",value:function(t,n,r){if(this._distance=r,t.length<=2)return this.getLineCurve(t,r);if(0===r)return e.copyCoordinates(t);var i=this.getSegGen(r);return this.computeRingBufferCurve(t,n,i),i.getCoordinates()}},{key:"computeOffsetCurve",value:function(t,e,n){var r=this.simplifyTolerance(this._distance);if(e){var i=Cn.simplify(t,-r),o=i.length-1;n.initSideSegments(i[o],i[o-1],tt.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(i[s],!0)}else{var a=Cn.simplify(t,r),u=a.length-1;n.initSideSegments(a[0],a[1],tt.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment()}},{key:"isLineOffsetEmpty",value:function(t){return 0===t||t<0&&!this._bufParams.isSingleSided()}},{key:"getSegGen",value:function(t){return new Rn(this._precisionModel,this._bufParams,t)}}],[{key:"constructor_",value:function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e}},{key:"copyCoordinates",value:function(t){for(var e=new Array(t.length).fill(null),n=0;n<e.length;n++)e[n]=new z(t[n]);return e}}]),e}(),Dn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"findStabbedSegments",value:function(){if(1===arguments.length){for(var t=arguments[0],e=new dt,n=this._subgraphs.iterator();n.hasNext();){var r=n.next(),i=r.getEnvelope();t.y<i.getMinY()||t.y>i.getMaxY()||this.findStabbedSegments(t,r.getDirectedEdges(),e)}return e}if(3===arguments.length)if(ot(arguments[2],rt)&&arguments[0]instanceof z&&arguments[1]instanceof Ke){for(var o=arguments[0],s=arguments[1],a=arguments[2],u=s.getEdge().getCoordinates(),l=0;l<u.length-1;l++)if(this._seg.p0=u[l],this._seg.p1=u[l+1],this._seg.p0.y>this._seg.p1.y&&this._seg.reverse(),!(Math.max(this._seg.p0.x,this._seg.p1.x)<o.x||this._seg.isHorizontal()||o.y<this._seg.p0.y||o.y>this._seg.p1.y||ft.index(this._seg.p0,this._seg.p1,o)===ft.RIGHT)){var h=s.getDepth(tt.LEFT);this._seg.p0.equals(u[l])||(h=s.getDepth(tt.RIGHT));var c=new Fn(this._seg,h);a.add(c)}}else if(ot(arguments[2],rt)&&arguments[0]instanceof z&&ot(arguments[1],rt))for(var f=arguments[0],g=arguments[2],p=arguments[1].iterator();p.hasNext();){var v=p.next();v.isForward()&&this.findStabbedSegments(f,v,g)}}},{key:"getDepth",value:function(t){var e=this.findStabbedSegments(t);return 0===e.size()?0:an.min(e)._leftDepth}}],[{key:"constructor_",value:function(){this._subgraphs=null,this._seg=new bn;var t=arguments[0];this._subgraphs=t}}]),e}(),Fn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"compareTo",value:function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n||0!=(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)}},{key:"compareX",value:function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)}},{key:"toString",value:function(){return this._upwardSeg.toString()}},{key:"interfaces_",get:function(){return[k]}}],[{key:"constructor_",value:function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new bn(t),this._leftDepth=e}}]),e}();Dn.DepthSegment=Fn;var qn=function(e){r(o,e);var i=c(o);function o(){var e;return t(this,o),e=i.call(this),o.constructor_.apply(l(e),arguments),e}return n(o,null,[{key:"constructor_",value:function(){_.constructor_.call(this,"Projective point not representable on the Cartesian plane.")}}]),o}(_),Vn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getY",value:function(){var t=this.y/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new qn;return t}},{key:"getX",value:function(){var t=this.x/this.w;if(A.isNaN(t)||A.isInfinite(t))throw new qn;return t}},{key:"getCoordinate",value:function(){var t=new z;return t.x=this.getX(),t.y=this.getY(),t}}],[{key:"constructor_",value:function(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){var t=arguments[0];this.x=t.x,this.y=t.y,this.w=1}else if(2===arguments.length){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){var n=arguments[0],r=arguments[1];this.x=n,this.y=r,this.w=1}else if(arguments[0]instanceof e&&arguments[1]instanceof e){var i=arguments[0],o=arguments[1];this.x=i.y*o.w-o.y*i.w,this.y=o.x*i.w-i.x*o.w,this.w=i.x*o.y-o.x*i.y}else if(arguments[0]instanceof z&&arguments[1]instanceof z){var s=arguments[0],a=arguments[1];this.x=s.y-a.y,this.y=a.x-s.x,this.w=s.x*a.y-a.x*s.y}}else if(3===arguments.length){var u=arguments[0],l=arguments[1],h=arguments[2];this.x=u,this.y=l,this.w=h}else if(4===arguments.length){var c=arguments[0],f=arguments[1],g=arguments[2],p=arguments[3],v=c.y-f.y,d=f.x-c.x,y=c.x*f.y-f.x*c.y,m=g.y-p.y,_=p.x-g.x,x=g.x*p.y-p.x*g.y;this.x=d*x-_*y,this.y=m*y-v*x,this.w=v*_-m*d}}}]),e}(),Gn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"area",value:function(){return e.area(this.p0,this.p1,this.p2)}},{key:"signedArea",value:function(){return e.signedArea(this.p0,this.p1,this.p2)}},{key:"interpolateZ",value:function(t){if(null===t)throw new x("Supplied point is null.");return e.interpolateZ(t,this.p0,this.p1,this.p2)}},{key:"longestSideLength",value:function(){return e.longestSideLength(this.p0,this.p1,this.p2)}},{key:"isAcute",value:function(){return e.isAcute(this.p0,this.p1,this.p2)}},{key:"circumcentre",value:function(){return e.circumcentre(this.p0,this.p1,this.p2)}},{key:"area3D",value:function(){return e.area3D(this.p0,this.p1,this.p2)}},{key:"centroid",value:function(){return e.centroid(this.p0,this.p1,this.p2)}},{key:"inCentre",value:function(){return e.inCentre(this.p0,this.p1,this.p2)}}],[{key:"constructor_",value:function(){this.p0=null,this.p1=null,this.p2=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.p0=t,this.p1=e,this.p2=n}},{key:"area",value:function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)}},{key:"signedArea",value:function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2}},{key:"det",value:function(t,e,n,r){return t*r-e*n}},{key:"interpolateZ",value:function(t,e,n,r){var i=e.x,o=e.y,s=n.x-i,a=r.x-i,u=n.y-o,l=r.y-o,h=s*l-a*u,c=t.x-i,f=t.y-o,g=(l*c-a*f)/h,p=(-u*c+s*f)/h;return e.getZ()+g*(n.getZ()-e.getZ())+p*(r.getZ()-e.getZ())}},{key:"longestSideLength",value:function(t,e,n){var r=t.distance(e),i=e.distance(n),o=n.distance(t),s=r;return i>s&&(s=i),o>s&&(s=o),s}},{key:"circumcentreDD",value:function(t,e,n){var r=lt.valueOf(t.x).subtract(n.x),i=lt.valueOf(t.y).subtract(n.y),o=lt.valueOf(e.x).subtract(n.x),s=lt.valueOf(e.y).subtract(n.y),a=lt.determinant(r,i,o,s).multiply(2),u=r.sqr().add(i.sqr()),l=o.sqr().add(s.sqr()),h=lt.determinant(i,u,s,l),c=lt.determinant(r,u,o,l),f=lt.valueOf(n.x).subtract(h.divide(a)).doubleValue(),g=lt.valueOf(n.y).add(c.divide(a)).doubleValue();return new z(f,g)}},{key:"isAcute",value:function(t,e,n){return!!On.isAcute(t,e,n)&&!!On.isAcute(e,n,t)&&!!On.isAcute(n,t,e)}},{key:"circumcentre",value:function(t,n,r){var i=r.x,o=r.y,s=t.x-i,a=t.y-o,u=n.x-i,l=n.y-o,h=2*e.det(s,a,u,l),c=e.det(a,s*s+a*a,l,u*u+l*l),f=e.det(s,s*s+a*a,u,u*u+l*l);return new z(i-c/h,o+f/h)}},{key:"perpendicularBisector",value:function(t,e){var n=e.x-t.x,r=e.y-t.y,i=new Vn(t.x+n/2,t.y+r/2,1),o=new Vn(t.x-r+n/2,t.y+n+r/2,1);return new Vn(i,o)}},{key:"angleBisector",value:function(t,e,n){var r=e.distance(t),i=r/(r+e.distance(n)),o=n.x-t.x,s=n.y-t.y;return new z(t.x+i*o,t.y+i*s)}},{key:"area3D",value:function(t,e,n){var r=e.x-t.x,i=e.y-t.y,o=e.getZ()-t.getZ(),s=n.x-t.x,a=n.y-t.y,u=n.getZ()-t.getZ(),l=i*u-o*a,h=o*s-r*u,c=r*a-i*s,f=l*l+h*h+c*c;return Math.sqrt(f)/2}},{key:"centroid",value:function(t,e,n){var r=(t.x+e.x+n.x)/3,i=(t.y+e.y+n.y)/3;return new z(r,i)}},{key:"inCentre",value:function(t,e,n){var r=e.distance(n),i=t.distance(n),o=t.distance(e),s=r+i+o,a=(r*t.x+i*e.x+o*n.x)/s,u=(r*t.y+i*e.y+o*n.y)/s;return new z(a,u)}}]),e}(),Bn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"addRingSide",value:function(t,e,n,r,i){if(0===e&&t.length<zt.MINIMUM_VALID_SIZE)return null;var o=r,s=i;t.length>=zt.MINIMUM_VALID_SIZE&&ft.isCCW(t)&&(o=i,s=r,n=tt.opposite(n));var a=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(a,o,s)}},{key:"addRingBothSides",value:function(t,e){this.addRingSide(t,e,tt.LEFT,Z.EXTERIOR,Z.INTERIOR),this.addRingSide(t,e,tt.RIGHT,Z.INTERIOR,Z.EXTERIOR)}},{key:"addPoint",value:function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,Z.EXTERIOR,Z.INTERIOR)}},{key:"addPolygon",value:function(t){var e=this._distance,n=tt.LEFT;this._distance<0&&(e=-this._distance,n=tt.RIGHT);var r=t.getExteriorRing(),i=Wt.removeRepeatedPoints(r.getCoordinates());if(this._distance<0&&this.isErodedCompletely(r,this._distance))return null;if(this._distance<=0&&i.length<3)return null;this.addRingSide(i,e,n,Z.EXTERIOR,Z.INTERIOR);for(var o=0;o<t.getNumInteriorRing();o++){var s=t.getInteriorRingN(o),a=Wt.removeRepeatedPoints(s.getCoordinates());this._distance>0&&this.isErodedCompletely(s,-this._distance)||this.addRingSide(a,e,tt.opposite(n),Z.INTERIOR,Z.EXTERIOR)}}},{key:"isTriangleErodedCompletely",value:function(t,e){var n=new Gn(t[0],t[1],t[2]),r=n.inCentre();return kt.pointToSegment(r,n.p0,n.p1)<Math.abs(e)}},{key:"addLineString",value:function(t){if(this._curveBuilder.isLineOffsetEmpty(this._distance))return null;var e=Wt.removeRepeatedPoints(t.getCoordinates());if(Wt.isRing(e)&&!this._curveBuilder.getBufferParameters().isSingleSided())this.addRingBothSides(e,this._distance);else{var n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,Z.EXTERIOR,Z.INTERIOR)}}},{key:"addCurve",value:function(t,e,n){if(null===t||t.length<2)return null;var r=new kn(t,new Ae(0,Z.BOUNDARY,e,n));this._curveList.add(r)}},{key:"getCurves",value:function(){return this.add(this._inputGeom),this._curveList}},{key:"add",value:function(t){if(t.isEmpty())return null;if(t instanceof Ft)this.addPolygon(t);else if(t instanceof Ct)this.addLineString(t);else if(t instanceof Ot)this.addPoint(t);else if(t instanceof Yt)this.addCollection(t);else if(t instanceof se)this.addCollection(t);else if(t instanceof ee)this.addCollection(t);else{if(!(t instanceof Bt))throw new J(t.getGeometryType());this.addCollection(t)}}},{key:"isErodedCompletely",value:function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var r=t.getEnvelopeInternal(),i=Math.min(r.getHeight(),r.getWidth());return e<0&&2*Math.abs(e)>i}},{key:"addCollection",value:function(t){for(var e=0;e<t.getNumGeometries();e++){var n=t.getGeometryN(e);this.add(n)}}}],[{key:"constructor_",value:function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new dt;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n}}]),e}(),Yn=function(){function e(){t(this,e)}return n(e,[{key:"locate",value:function(t){}}]),e}(),zn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"next",value:function(){if(this._atStart)return this._atStart=!1,e.isAtomic(this._parent)&&this._index++,this._parent;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return this._subcollectionIterator.next();this._subcollectionIterator=null}if(this._index>=this._max)throw new W;var t=this._parent.getGeometryN(this._index++);return t instanceof Bt?(this._subcollectionIterator=new e(t),this._subcollectionIterator.next()):t}},{key:"remove",value:function(){throw new J(this.getClass().getName())}},{key:"hasNext",value:function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)}},{key:"interfaces_",get:function(){return[yn]}}],[{key:"constructor_",value:function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;var t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()}},{key:"isAtomic",value:function(t){return!(t instanceof Bt)}}]),e}(),jn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"locate",value:function(t){return e.locate(t,this._geom)}},{key:"interfaces_",get:function(){return[Yn]}}],[{key:"constructor_",value:function(){this._geom=null;var t=arguments[0];this._geom=t}},{key:"locatePointInPolygon",value:function(t,n){if(n.isEmpty())return Z.EXTERIOR;var r=n.getExteriorRing(),i=e.locatePointInRing(t,r);if(i!==Z.INTERIOR)return i;for(var o=0;o<n.getNumInteriorRing();o++){var s=n.getInteriorRingN(o),a=e.locatePointInRing(t,s);if(a===Z.BOUNDARY)return Z.BOUNDARY;if(a===Z.INTERIOR)return Z.EXTERIOR}return Z.INTERIOR}},{key:"locatePointInRing",value:function(t,e){return e.getEnvelopeInternal().intersects(t)?Oe.locateInRing(t,e.getCoordinates()):Z.EXTERIOR}},{key:"containsPointInPolygon",value:function(t,n){return Z.EXTERIOR!==e.locatePointInPolygon(t,n)}},{key:"locateInGeometry",value:function(t,n){if(n instanceof Ft)return e.locatePointInPolygon(t,n);if(n instanceof Bt)for(var r=new zn(n);r.hasNext();){var i=r.next();if(i!==n){var o=e.locateInGeometry(t,i);if(o!==Z.EXTERIOR)return o}}return Z.EXTERIOR}},{key:"isContained",value:function(t,n){return Z.EXTERIOR!==e.locate(t,n)}},{key:"locate",value:function(t,n){return n.isEmpty()?Z.EXTERIOR:n.getEnvelopeInternal().intersects(t)?e.locateInGeometry(t,n):Z.EXTERIOR}}]),e}(),Xn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getNextCW",value:function(t){this.getEdges();var e=this._edgeList.indexOf(t),n=e-1;return 0===e&&(n=this._edgeList.size()-1),this._edgeList.get(n)}},{key:"propagateSideLabels",value:function(t){for(var e=Z.NONE,n=this.iterator();n.hasNext();){var r=n.next().getLabel();r.isArea(t)&&r.getLocation(t,tt.LEFT)!==Z.NONE&&(e=r.getLocation(t,tt.LEFT))}if(e===Z.NONE)return null;for(var i=e,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getLabel();if(a.getLocation(t,tt.ON)===Z.NONE&&a.setLocation(t,tt.ON,i),a.isArea(t)){var u=a.getLocation(t,tt.LEFT),l=a.getLocation(t,tt.RIGHT);if(l!==Z.NONE){if(l!==i)throw new pt("side location conflict",s.getCoordinate());u===Z.NONE&&V.shouldNeverReachHere("found single null side (at "+s.getCoordinate()+")"),i=u}else V.isTrue(a.getLocation(t,tt.LEFT)===Z.NONE,"found single null side"),a.setLocation(t,tt.RIGHT,i),a.setLocation(t,tt.LEFT,i)}}}},{key:"getCoordinate",value:function(){var t=this.iterator();return t.hasNext()?t.next().getCoordinate():null}},{key:"print",value:function(t){xt.out.println("EdgeEndStar:   "+this.getCoordinate());for(var e=this.iterator();e.hasNext();)e.next().print(t)}},{key:"isAreaLabelsConsistent",value:function(t){return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),this.checkAreaLabelsConsistent(0)}},{key:"checkAreaLabelsConsistent",value:function(t){var e=this.getEdges();if(e.size()<=0)return!0;var n=e.size()-1,r=e.get(n).getLabel().getLocation(t,tt.LEFT);V.isTrue(r!==Z.NONE,"Found unlabelled area edge");for(var i=r,o=this.iterator();o.hasNext();){var s=o.next().getLabel();V.isTrue(s.isArea(t),"Found non-area edge");var a=s.getLocation(t,tt.LEFT),u=s.getLocation(t,tt.RIGHT);if(a===u)return!1;if(u!==i)return!1;i=a}return!0}},{key:"findIndex",value:function(t){this.iterator();for(var e=0;e<this._edgeList.size();e++)if(this._edgeList.get(e)===t)return e;return-1}},{key:"iterator",value:function(){return this.getEdges().iterator()}},{key:"getEdges",value:function(){return null===this._edgeList&&(this._edgeList=new dt(this._edgeMap.values())),this._edgeList}},{key:"getLocation",value:function(t,e,n){return this._ptInAreaLocation[t]===Z.NONE&&(this._ptInAreaLocation[t]=jn.locate(e,n[t].getGeometry())),this._ptInAreaLocation[t]}},{key:"toString",value:function(){var t=new st;t.append("EdgeEndStar:   "+this.getCoordinate()),t.append("\n");for(var e=this.iterator();e.hasNext();){var n=e.next();t.append(n),t.append("\n")}return t.toString()}},{key:"computeEdgeEndLabels",value:function(t){for(var e=this.iterator();e.hasNext();)e.next().computeLabel(t)}},{key:"computeLabelling",value:function(t){this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),this.propagateSideLabels(0),this.propagateSideLabels(1);for(var e=[!1,!1],n=this.iterator();n.hasNext();)for(var r=n.next().getLabel(),i=0;i<2;i++)r.isLine(i)&&r.getLocation(i)===Z.BOUNDARY&&(e[i]=!0);for(var o=this.iterator();o.hasNext();)for(var s=o.next(),a=s.getLabel(),u=0;u<2;u++)if(a.isAnyNull(u)){var l=Z.NONE;if(e[u])l=Z.EXTERIOR;else{var h=s.getCoordinate();l=this.getLocation(u,h,t)}a.setAllLocationsIfNull(u,l)}}},{key:"getDegree",value:function(){return this._edgeMap.size()}},{key:"insertEdgeEnd",value:function(t,e){this._edgeMap.put(t,e),this._edgeList=null}}],[{key:"constructor_",value:function(){this._edgeMap=new Ze,this._edgeList=null,this._ptInAreaLocation=[Z.NONE,Z.NONE]}}]),e}(),Un=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"linkResultDirectedEdges",value:function(){this.getResultAreaEdges();for(var t=null,e=null,n=this._SCANNING_FOR_INCOMING,r=0;r<this._resultAreaEdgeList.size();r++){var i=this._resultAreaEdgeList.get(r),o=i.getSym();if(i.getLabel().isArea())switch(null===t&&i.isInResult()&&(t=i),n){case this._SCANNING_FOR_INCOMING:if(!o.isInResult())continue;e=o,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(!i.isInResult())continue;e.setNext(i),n=this._SCANNING_FOR_INCOMING}}if(n===this._LINKING_TO_OUTGOING){if(null===t)throw new pt("no outgoing dirEdge found",this.getCoordinate());V.isTrue(t.isInResult(),"unable to link last incoming dirEdge"),e.setNext(t)}}},{key:"insert",value:function(t){var e=t;this.insertEdgeEnd(e,e)}},{key:"getRightmostEdge",value:function(){var t=this.getEdges(),e=t.size();if(e<1)return null;var n=t.get(0);if(1===e)return n;var r=t.get(e-1),i=n.getQuadrant(),o=r.getQuadrant();return We.isNorthern(i)&&We.isNorthern(o)?n:We.isNorthern(i)||We.isNorthern(o)?0!==n.getDy()?n:0!==r.getDy()?r:(V.shouldNeverReachHere("found two horizontal edges incident on node"),null):r}},{key:"print",value:function(t){xt.out.println("DirectedEdgeStar: "+this.getCoordinate());for(var e=this.iterator();e.hasNext();){var n=e.next();t.print("out "),n.print(t),t.println(),t.print("in "),n.getSym().print(t),t.println()}}},{key:"getResultAreaEdges",value:function(){if(null!==this._resultAreaEdgeList)return this._resultAreaEdgeList;this._resultAreaEdgeList=new dt;for(var t=this.iterator();t.hasNext();){var e=t.next();(e.isInResult()||e.getSym().isInResult())&&this._resultAreaEdgeList.add(e)}return this._resultAreaEdgeList}},{key:"updateLabelling",value:function(t){for(var e=this.iterator();e.hasNext();){var n=e.next().getLabel();n.setAllLocationsIfNull(0,t.getLocation(0)),n.setAllLocationsIfNull(1,t.getLocation(1))}}},{key:"linkAllDirectedEdges",value:function(){this.getEdges();for(var t=null,e=null,n=this._edgeList.size()-1;n>=0;n--){var r=this._edgeList.get(n),i=r.getSym();null===e&&(e=i),null!==t&&i.setNext(t),t=r}e.setNext(t)}},{key:"computeDepths",value:function(){if(1===arguments.length){var t=arguments[0],e=this.findIndex(t),n=t.getDepth(tt.LEFT),r=t.getDepth(tt.RIGHT),i=this.computeDepths(e+1,this._edgeList.size(),n);if(this.computeDepths(0,e,i)!==r)throw new pt("depth mismatch at "+t.getCoordinate())}else if(3===arguments.length){for(var o=arguments[1],s=arguments[2],a=arguments[0];a<o;a++){var u=this._edgeList.get(a);u.setEdgeDepths(tt.RIGHT,s),s=u.getDepth(tt.LEFT)}return s}}},{key:"mergeSymLabels",value:function(){for(var t=this.iterator();t.hasNext();){var e=t.next();e.getLabel().merge(e.getSym().getLabel())}}},{key:"linkMinimalDirectedEdges",value:function(t){for(var e=null,n=null,r=this._SCANNING_FOR_INCOMING,i=this._resultAreaEdgeList.size()-1;i>=0;i--){var o=this._resultAreaEdgeList.get(i),s=o.getSym();switch(null===e&&o.getEdgeRing()===t&&(e=o),r){case this._SCANNING_FOR_INCOMING:if(s.getEdgeRing()!==t)continue;n=s,r=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(o.getEdgeRing()!==t)continue;n.setNextMin(o),r=this._SCANNING_FOR_INCOMING}}r===this._LINKING_TO_OUTGOING&&(V.isTrue(null!==e,"found null for first outgoing dirEdge"),V.isTrue(e.getEdgeRing()===t,"unable to link last incoming dirEdge"),n.setNextMin(e))}},{key:"getOutgoingDegree",value:function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();)e.next().isInResult()&&t++;return t}if(1===arguments.length){for(var n=arguments[0],r=0,i=this.iterator();i.hasNext();)i.next().getEdgeRing()===n&&r++;return r}}},{key:"getLabel",value:function(){return this._label}},{key:"findCoveredLineEdges",value:function(){for(var t=Z.NONE,e=this.iterator();e.hasNext();){var n=e.next(),r=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=Z.INTERIOR;break}if(r.isInResult()){t=Z.EXTERIOR;break}}}if(t===Z.NONE)return null;for(var i=t,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getSym();s.isLineEdge()?s.getEdge().setCovered(i===Z.INTERIOR):(s.isInResult()&&(i=Z.EXTERIOR),a.isInResult()&&(i=Z.INTERIOR))}}},{key:"computeLabelling",value:function(t){f(i(s.prototype),"computeLabelling",this).call(this,t),this._label=new Ae(Z.NONE);for(var e=this.iterator();e.hasNext();)for(var n=e.next().getEdge().getLabel(),r=0;r<2;r++){var o=n.getLocation(r);o!==Z.INTERIOR&&o!==Z.BOUNDARY||this._label.setLocation(r,Z.INTERIOR)}}}],[{key:"constructor_",value:function(){this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2}}]),s}(Xn),Zn=function(e){r(o,e);var i=c(o);function o(){return t(this,o),i.call(this)}return n(o,[{key:"createNode",value:function(t){return new Ge(t,new Un)}}]),o}(Qe),Hn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"compareTo",value:function(t){var n=t;return e.compareOriented(this._pts,this._orientation,n._pts,n._orientation)}},{key:"interfaces_",get:function(){return[k]}}],[{key:"constructor_",value:function(){this._pts=null,this._orientation=null;var t=arguments[0];this._pts=t,this._orientation=e.orientation(t)}},{key:"orientation",value:function(t){return 1===Wt.increasingDirection(t)}},{key:"compareOriented",value:function(t,e,n,r){for(var i=e?1:-1,o=r?1:-1,s=e?t.length:-1,a=r?n.length:-1,u=e?0:t.length-1,l=r?0:n.length-1;;){var h=t[u].compareTo(n[l]);if(0!==h)return h;var c=(u+=i)===s,f=(l+=o)===a;if(c&&!f)return-1;if(!c&&f)return 1;if(c&&f)return 0}}}]),e}(),Wn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"print",value:function(t){t.print("MULTILINESTRING ( ");for(var e=0;e<this._edges.size();e++){var n=this._edges.get(e);e>0&&t.print(","),t.print("(");for(var r=n.getCoordinates(),i=0;i<r.length;i++)i>0&&t.print(","),t.print(r[i].x+" "+r[i].y);t.println(")")}t.print(")  ")}},{key:"addAll",value:function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())}},{key:"findEdgeIndex",value:function(t){for(var e=0;e<this._edges.size();e++)if(this._edges.get(e).equals(t))return e;return-1}},{key:"iterator",value:function(){return this._edges.iterator()}},{key:"getEdges",value:function(){return this._edges}},{key:"get",value:function(t){return this._edges.get(t)}},{key:"findEqualEdge",value:function(t){var e=new Hn(t.getCoordinates());return this._ocaMap.get(e)}},{key:"add",value:function(t){this._edges.add(t);var e=new Hn(t.getCoordinates());this._ocaMap.put(e,t)}}],[{key:"constructor_",value:function(){this._edges=new dt,this._ocaMap=new Ze}}]),e}(),Jn=function(){function e(){t(this,e)}return n(e,[{key:"processIntersections",value:function(t,e,n,r){}},{key:"isDone",value:function(){}}]),e}(),Kn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"isTrivialIntersection",value:function(t,n,r,i){if(t===r&&1===this._li.getIntersectionNum()){if(e.isAdjacentSegments(n,i))return!0;if(t.isClosed()){var o=t.size()-1;if(0===n&&i===o||0===i&&n===o)return!0}}return!1}},{key:"getProperIntersectionPoint",value:function(){return this._properIntersectionPoint}},{key:"hasProperInteriorIntersection",value:function(){return this._hasProperInterior}},{key:"getLineIntersector",value:function(){return this._li}},{key:"hasProperIntersection",value:function(){return this._hasProper}},{key:"processIntersections",value:function(t,e,n,r){if(t===n&&e===r)return null;this.numTests++;var i=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[r],a=n.getCoordinates()[r+1];this._li.computeIntersection(i,o,s,a),this._li.hasIntersection()&&(this.numIntersections++,this._li.isInteriorIntersection()&&(this.numInteriorIntersections++,this._hasInterior=!0),this.isTrivialIntersection(t,e,n,r)||(this._hasIntersection=!0,t.addIntersections(this._li,e,0),n.addIntersections(this._li,r,1),this._li.isProper()&&(this.numProperIntersections++,this._hasProper=!0,this._hasProperInterior=!0)))}},{key:"hasIntersection",value:function(){return this._hasIntersection}},{key:"isDone",value:function(){return!1}},{key:"hasInteriorIntersection",value:function(){return this._hasInterior}},{key:"interfaces_",get:function(){return[Jn]}}],[{key:"constructor_",value:function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._hasInterior=!1,this._properIntersectionPoint=null,this._li=null,this._isSelfIntersection=null,this.numIntersections=0,this.numInteriorIntersections=0,this.numProperIntersections=0,this.numTests=0;var t=arguments[0];this._li=t}},{key:"isAdjacentSegments",value:function(t,e){return 1===Math.abs(t-e)}}]),e}(),Qn=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getSegmentIndex",value:function(){return this.segmentIndex}},{key:"getCoordinate",value:function(){return this.coord}},{key:"print",value:function(t){t.print(this.coord),t.print(" seg # = "+this.segmentIndex),t.println(" dist = "+this.dist)}},{key:"compareTo",value:function(t){var e=t;return this.compare(e.segmentIndex,e.dist)}},{key:"isEndPoint",value:function(t){return 0===this.segmentIndex&&0===this.dist||this.segmentIndex===t}},{key:"toString",value:function(){return this.coord+" seg # = "+this.segmentIndex+" dist = "+this.dist}},{key:"getDistance",value:function(){return this.dist}},{key:"compare",value:function(t,e){return this.segmentIndex<t?-1:this.segmentIndex>t?1:this.dist<e?-1:this.dist>e?1:0}},{key:"interfaces_",get:function(){return[k]}}],[{key:"constructor_",value:function(){this.coord=null,this.segmentIndex=null,this.dist=null;var t=arguments[0],e=arguments[1],n=arguments[2];this.coord=new z(t),this.segmentIndex=e,this.dist=n}}]),e}(),$n=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"print",value:function(t){t.println("Intersections:");for(var e=this.iterator();e.hasNext();)e.next().print(t)}},{key:"iterator",value:function(){return this._nodeMap.values().iterator()}},{key:"addSplitEdges",value:function(t){this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var r=e.next(),i=this.createSplitEdge(n,r);t.add(i),n=r}}},{key:"addEndpoints",value:function(){var t=this.edge.pts.length-1;this.add(this.edge.pts[0],0,0),this.add(this.edge.pts[t],t,0)}},{key:"createSplitEdge",value:function(t,e){var n=e.segmentIndex-t.segmentIndex+2,r=this.edge.pts[e.segmentIndex],i=e.dist>0||!e.coord.equals2D(r);i||n--;var o=new Array(n).fill(null),s=0;o[s++]=new z(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this.edge.pts[a];return i&&(o[s]=e.coord),new or(o,new Ae(this.edge._label))}},{key:"add",value:function(t,e,n){var r=new Qn(t,e,n),i=this._nodeMap.get(r);return null!==i?i:(this._nodeMap.put(r,r),r)}},{key:"isIntersection",value:function(t){for(var e=this.iterator();e.hasNext();)if(e.next().coord.equals(t))return!0;return!1}}],[{key:"constructor_",value:function(){this._nodeMap=new Ze,this.edge=null;var t=arguments[0];this.edge=t}}]),e}(),tr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"isIntersects",value:function(){return!this.isDisjoint()}},{key:"isCovers",value:function(){return(e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])||e.isTrue(this._matrix[Z.INTERIOR][Z.BOUNDARY])||e.isTrue(this._matrix[Z.BOUNDARY][Z.INTERIOR])||e.isTrue(this._matrix[Z.BOUNDARY][Z.BOUNDARY]))&&this._matrix[Z.EXTERIOR][Z.INTERIOR]===Mt.FALSE&&this._matrix[Z.EXTERIOR][Z.BOUNDARY]===Mt.FALSE}},{key:"isCoveredBy",value:function(){return(e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])||e.isTrue(this._matrix[Z.INTERIOR][Z.BOUNDARY])||e.isTrue(this._matrix[Z.BOUNDARY][Z.INTERIOR])||e.isTrue(this._matrix[Z.BOUNDARY][Z.BOUNDARY]))&&this._matrix[Z.INTERIOR][Z.EXTERIOR]===Mt.FALSE&&this._matrix[Z.BOUNDARY][Z.EXTERIOR]===Mt.FALSE}},{key:"set",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),r=e%3;this._matrix[n][r]=Mt.toDimensionValue(t.charAt(e))}else if(3===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2];this._matrix[i][o]=s}}},{key:"isContains",value:function(){return e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])&&this._matrix[Z.EXTERIOR][Z.INTERIOR]===Mt.FALSE&&this._matrix[Z.EXTERIOR][Z.BOUNDARY]===Mt.FALSE}},{key:"setAtLeast",value:function(){if(1===arguments.length)for(var t=arguments[0],e=0;e<t.length;e++){var n=Math.trunc(e/3),r=e%3;this.setAtLeast(n,r,Mt.toDimensionValue(t.charAt(e)))}else if(3===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2];this._matrix[i][o]<s&&(this._matrix[i][o]=s)}}},{key:"setAtLeastIfValid",value:function(t,e,n){t>=0&&e>=0&&this.setAtLeast(t,e,n)}},{key:"isWithin",value:function(){return e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])&&this._matrix[Z.INTERIOR][Z.EXTERIOR]===Mt.FALSE&&this._matrix[Z.BOUNDARY][Z.EXTERIOR]===Mt.FALSE}},{key:"isTouches",value:function(t,n){return t>n?this.isTouches(n,t):(t===Mt.A&&n===Mt.A||t===Mt.L&&n===Mt.L||t===Mt.L&&n===Mt.A||t===Mt.P&&n===Mt.A||t===Mt.P&&n===Mt.L)&&this._matrix[Z.INTERIOR][Z.INTERIOR]===Mt.FALSE&&(e.isTrue(this._matrix[Z.INTERIOR][Z.BOUNDARY])||e.isTrue(this._matrix[Z.BOUNDARY][Z.INTERIOR])||e.isTrue(this._matrix[Z.BOUNDARY][Z.BOUNDARY]))}},{key:"isOverlaps",value:function(t,n){return t===Mt.P&&n===Mt.P||t===Mt.A&&n===Mt.A?e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])&&e.isTrue(this._matrix[Z.INTERIOR][Z.EXTERIOR])&&e.isTrue(this._matrix[Z.EXTERIOR][Z.INTERIOR]):t===Mt.L&&n===Mt.L&&1===this._matrix[Z.INTERIOR][Z.INTERIOR]&&e.isTrue(this._matrix[Z.INTERIOR][Z.EXTERIOR])&&e.isTrue(this._matrix[Z.EXTERIOR][Z.INTERIOR])}},{key:"isEquals",value:function(t,n){return t===n&&e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])&&this._matrix[Z.INTERIOR][Z.EXTERIOR]===Mt.FALSE&&this._matrix[Z.BOUNDARY][Z.EXTERIOR]===Mt.FALSE&&this._matrix[Z.EXTERIOR][Z.INTERIOR]===Mt.FALSE&&this._matrix[Z.EXTERIOR][Z.BOUNDARY]===Mt.FALSE}},{key:"toString",value:function(){for(var t=new Qt("123456789"),e=0;e<3;e++)for(var n=0;n<3;n++)t.setCharAt(3*e+n,Mt.toDimensionSymbol(this._matrix[e][n]));return t.toString()}},{key:"setAll",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this._matrix[e][n]=t}},{key:"get",value:function(t,e){return this._matrix[t][e]}},{key:"transpose",value:function(){var t=this._matrix[1][0];return this._matrix[1][0]=this._matrix[0][1],this._matrix[0][1]=t,t=this._matrix[2][0],this._matrix[2][0]=this._matrix[0][2],this._matrix[0][2]=t,t=this._matrix[2][1],this._matrix[2][1]=this._matrix[1][2],this._matrix[1][2]=t,this}},{key:"matches",value:function(t){if(9!==t.length)throw new x("Should be length 9: "+t);for(var n=0;n<3;n++)for(var r=0;r<3;r++)if(!e.matches(this._matrix[n][r],t.charAt(3*n+r)))return!1;return!0}},{key:"add",value:function(t){for(var e=0;e<3;e++)for(var n=0;n<3;n++)this.setAtLeast(e,n,t.get(e,n))}},{key:"isDisjoint",value:function(){return this._matrix[Z.INTERIOR][Z.INTERIOR]===Mt.FALSE&&this._matrix[Z.INTERIOR][Z.BOUNDARY]===Mt.FALSE&&this._matrix[Z.BOUNDARY][Z.INTERIOR]===Mt.FALSE&&this._matrix[Z.BOUNDARY][Z.BOUNDARY]===Mt.FALSE}},{key:"isCrosses",value:function(t,n){return t===Mt.P&&n===Mt.L||t===Mt.P&&n===Mt.A||t===Mt.L&&n===Mt.A?e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])&&e.isTrue(this._matrix[Z.INTERIOR][Z.EXTERIOR]):t===Mt.L&&n===Mt.P||t===Mt.A&&n===Mt.P||t===Mt.A&&n===Mt.L?e.isTrue(this._matrix[Z.INTERIOR][Z.INTERIOR])&&e.isTrue(this._matrix[Z.EXTERIOR][Z.INTERIOR]):t===Mt.L&&n===Mt.L&&0===this._matrix[Z.INTERIOR][Z.INTERIOR]}},{key:"interfaces_",get:function(){return[b]}}],[{key:"constructor_",value:function(){if(this._matrix=null,0===arguments.length)this._matrix=Array(3).fill().map((function(){return Array(3)})),this.setAll(Mt.FALSE);else if(1===arguments.length)if("string"==typeof arguments[0]){var t=arguments[0];e.constructor_.call(this),this.set(t)}else if(arguments[0]instanceof e){var n=arguments[0];e.constructor_.call(this),this._matrix[Z.INTERIOR][Z.INTERIOR]=n._matrix[Z.INTERIOR][Z.INTERIOR],this._matrix[Z.INTERIOR][Z.BOUNDARY]=n._matrix[Z.INTERIOR][Z.BOUNDARY],this._matrix[Z.INTERIOR][Z.EXTERIOR]=n._matrix[Z.INTERIOR][Z.EXTERIOR],this._matrix[Z.BOUNDARY][Z.INTERIOR]=n._matrix[Z.BOUNDARY][Z.INTERIOR],this._matrix[Z.BOUNDARY][Z.BOUNDARY]=n._matrix[Z.BOUNDARY][Z.BOUNDARY],this._matrix[Z.BOUNDARY][Z.EXTERIOR]=n._matrix[Z.BOUNDARY][Z.EXTERIOR],this._matrix[Z.EXTERIOR][Z.INTERIOR]=n._matrix[Z.EXTERIOR][Z.INTERIOR],this._matrix[Z.EXTERIOR][Z.BOUNDARY]=n._matrix[Z.EXTERIOR][Z.BOUNDARY],this._matrix[Z.EXTERIOR][Z.EXTERIOR]=n._matrix[Z.EXTERIOR][Z.EXTERIOR]}}},{key:"matches",value:function(){if(Number.isInteger(arguments[0])&&"string"==typeof arguments[1]){var t=arguments[0],n=arguments[1];return n===Mt.SYM_DONTCARE||n===Mt.SYM_TRUE&&(t>=0||t===Mt.TRUE)||n===Mt.SYM_FALSE&&t===Mt.FALSE||n===Mt.SYM_P&&t===Mt.P||n===Mt.SYM_L&&t===Mt.L||n===Mt.SYM_A&&t===Mt.A}if("string"==typeof arguments[0]&&"string"==typeof arguments[1]){var r=arguments[1];return new e(arguments[0]).matches(r)}}},{key:"isTrue",value:function(t){return t>=0||t===Mt.TRUE}}]),e}(),er=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"size",value:function(){return this._size}},{key:"addAll",value:function(t){return null===t||0===t.length?null:(this.ensureCapacity(this._size+t.length),xt.arraycopy(t,0,this._data,this._size,t.length),void(this._size+=t.length))}},{key:"ensureCapacity",value:function(t){if(t<=this._data.length)return null;var e=Math.max(t,2*this._data.length);this._data=At.copyOf(this._data,e)}},{key:"toArray",value:function(){var t=new Array(this._size).fill(null);return xt.arraycopy(this._data,0,t,0,this._size),t}},{key:"add",value:function(t){this.ensureCapacity(this._size+1),this._data[this._size]=t,++this._size}}],[{key:"constructor_",value:function(){if(this._data=null,this._size=0,0===arguments.length)e.constructor_.call(this,10);else if(1===arguments.length){var t=arguments[0];this._data=new Array(t).fill(null)}}}]),e}(),nr=function(){function e(){t(this,e)}return n(e,[{key:"getChainStartIndices",value:function(t){var e=0,n=new er(Math.trunc(t.length/2));n.add(e);do{var r=this.findChainEnd(t,e);n.add(r),e=r}while(e<t.length-1);return n.toArray()}},{key:"findChainEnd",value:function(t,e){for(var n=We.quadrant(t[e],t[e+1]),r=e+1;r<t.length&&We.quadrant(t[r-1],t[r])===n;)r++;return r-1}},{key:"OLDgetChainStartIndices",value:function(t){var n=0,r=new dt;r.add(n);do{var i=this.findChainEnd(t,n);r.add(i),n=i}while(n<t.length-1);return e.toIntArray(r)}}],[{key:"toIntArray",value:function(t){for(var e=new Array(t.size()).fill(null),n=0;n<e.length;n++)e[n]=t.get(n).intValue();return e}}]),e}(),rr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getCoordinates",value:function(){return this.pts}},{key:"getMaxX",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e>n?e:n}},{key:"getMinX",value:function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return e<n?e:n}},{key:"computeIntersectsForChain",value:function(){if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],r=arguments[3];this.computeIntersectsForChain(this.startIndex[t],this.startIndex[t+1],e,e.startIndex[n],e.startIndex[n+1],r)}else if(6===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=arguments[4],l=arguments[5];if(o-i==1&&u-a==1)return l.addIntersections(this.e,i,s.e,a),null;if(!this.overlaps(i,o,s,a,u))return null;var h=Math.trunc((i+o)/2),c=Math.trunc((a+u)/2);i<h&&(a<c&&this.computeIntersectsForChain(i,h,s,a,c,l),c<u&&this.computeIntersectsForChain(i,h,s,c,u,l)),h<o&&(a<c&&this.computeIntersectsForChain(h,o,s,a,c,l),c<u&&this.computeIntersectsForChain(h,o,s,c,u,l))}}},{key:"overlaps",value:function(t,e,n,r,i){return X.intersects(this.pts[t],this.pts[e],n.pts[r],n.pts[i])}},{key:"getStartIndexes",value:function(){return this.startIndex}},{key:"computeIntersects",value:function(t,e){for(var n=0;n<this.startIndex.length-1;n++)for(var r=0;r<t.startIndex.length-1;r++)this.computeIntersectsForChain(n,t,r,e)}}],[{key:"constructor_",value:function(){this.e=null,this.pts=null,this.startIndex=null;var t=arguments[0];this.e=t,this.pts=t.getCoordinates();var e=new nr;this.startIndex=e.getChainStartIndices(this.pts)}}]),e}(),ir=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"getDepth",value:function(t,e){return this._depth[t][e]}},{key:"setDepth",value:function(t,e,n){this._depth[t][e]=n}},{key:"isNull",value:function(){if(0===arguments.length){for(var t=0;t<2;t++)for(var n=0;n<3;n++)if(this._depth[t][n]!==e.NULL_VALUE)return!1;return!0}if(1===arguments.length){var r=arguments[0];return this._depth[r][1]===e.NULL_VALUE}if(2===arguments.length){var i=arguments[0],o=arguments[1];return this._depth[i][o]===e.NULL_VALUE}}},{key:"normalize",value:function(){for(var t=0;t<2;t++)if(!this.isNull(t)){var e=this._depth[t][1];this._depth[t][2]<e&&(e=this._depth[t][2]),e<0&&(e=0);for(var n=1;n<3;n++){var r=0;this._depth[t][n]>e&&(r=1),this._depth[t][n]=r}}}},{key:"getDelta",value:function(t){return this._depth[t][tt.RIGHT]-this._depth[t][tt.LEFT]}},{key:"getLocation",value:function(t,e){return this._depth[t][e]<=0?Z.EXTERIOR:Z.INTERIOR}},{key:"toString",value:function(){return"A: "+this._depth[0][1]+","+this._depth[0][2]+" B: "+this._depth[1][1]+","+this._depth[1][2]}},{key:"add",value:function(){if(1===arguments.length)for(var t=arguments[0],n=0;n<2;n++)for(var r=1;r<3;r++){var i=t.getLocation(n,r);i!==Z.EXTERIOR&&i!==Z.INTERIOR||(this.isNull(n,r)?this._depth[n][r]=e.depthAtLocation(i):this._depth[n][r]+=e.depthAtLocation(i))}else if(3===arguments.length){var o=arguments[0],s=arguments[1];arguments[2]===Z.INTERIOR&&this._depth[o][s]++}}}],[{key:"constructor_",value:function(){this._depth=Array(2).fill().map((function(){return Array(3)}));for(var t=0;t<2;t++)for(var n=0;n<3;n++)this._depth[t][n]=e.NULL_VALUE}},{key:"depthAtLocation",value:function(t){return t===Z.EXTERIOR?0:t===Z.INTERIOR?1:e.NULL_VALUE}}]),e}();ir.NULL_VALUE=-1;var or=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"getDepth",value:function(){return this._depth}},{key:"getCollapsedEdge",value:function(){var t=new Array(2).fill(null);return t[0]=this.pts[0],t[1]=this.pts[1],new s(t,Ae.toLineLabel(this._label))}},{key:"isIsolated",value:function(){return this._isIsolated}},{key:"getCoordinates",value:function(){return this.pts}},{key:"setIsolated",value:function(t){this._isIsolated=t}},{key:"setName",value:function(t){this._name=t}},{key:"equals",value:function(t){if(!(t instanceof s))return!1;var e=t;if(this.pts.length!==e.pts.length)return!1;for(var n=!0,r=!0,i=this.pts.length,o=0;o<this.pts.length;o++)if(this.pts[o].equals2D(e.pts[o])||(n=!1),this.pts[o].equals2D(e.pts[--i])||(r=!1),!n&&!r)return!1;return!0}},{key:"getCoordinate",value:function(){if(0===arguments.length)return this.pts.length>0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}}},{key:"print",value:function(t){t.print("edge "+this._name+": "),t.print("LINESTRING (");for(var e=0;e<this.pts.length;e++)e>0&&t.print(","),t.print(this.pts[e].x+" "+this.pts[e].y);t.print(")  "+this._label+" "+this._depthDelta)}},{key:"computeIM",value:function(t){s.updateIM(this._label,t)}},{key:"isCollapsed",value:function(){return!!this._label.isArea()&&3===this.pts.length&&!!this.pts[0].equals(this.pts[2])}},{key:"isClosed",value:function(){return this.pts[0].equals(this.pts[this.pts.length-1])}},{key:"getMaximumSegmentIndex",value:function(){return this.pts.length-1}},{key:"getDepthDelta",value:function(){return this._depthDelta}},{key:"getNumPoints",value:function(){return this.pts.length}},{key:"printReverse",value:function(t){t.print("edge "+this._name+": ");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+" ");t.println("")}},{key:"getMonotoneChainEdge",value:function(){return null===this._mce&&(this._mce=new rr(this)),this._mce}},{key:"getEnvelope",value:function(){if(null===this._env){this._env=new X;for(var t=0;t<this.pts.length;t++)this._env.expandToInclude(this.pts[t])}return this._env}},{key:"addIntersection",value:function(t,e,n,r){var i=new z(t.getIntersection(r)),o=e,s=t.getEdgeDistance(n,r),a=o+1;if(a<this.pts.length){var u=this.pts[a];i.equals2D(u)&&(o=a,s=0)}this.eiList.add(i,o,s)}},{key:"toString",value:function(){var t=new Qt;t.append("edge "+this._name+": "),t.append("LINESTRING (");for(var e=0;e<this.pts.length;e++)e>0&&t.append(","),t.append(this.pts[e].x+" "+this.pts[e].y);return t.append(")  "+this._label+" "+this._depthDelta),t.toString()}},{key:"isPointwiseEqual",value:function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e<this.pts.length;e++)if(!this.pts[e].equals2D(t.pts[e]))return!1;return!0}},{key:"setDepthDelta",value:function(t){this._depthDelta=t}},{key:"getEdgeIntersectionList",value:function(){return this.eiList}},{key:"addIntersections",value:function(t,e,n){for(var r=0;r<t.getIntersectionNum();r++)this.addIntersection(t,e,n,r)}}],[{key:"constructor_",value:function(){if(this.pts=null,this._env=null,this.eiList=new $n(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new ir,this._depthDelta=0,1===arguments.length){var t=arguments[0];s.constructor_.call(this,t,null)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this.pts=e,this._label=n}}},{key:"updateIM",value:function(){if(!(2===arguments.length&&arguments[1]instanceof tr&&arguments[0]instanceof Ae))return f(i(s),"updateIM",this).apply(this,arguments);var t=arguments[0],e=arguments[1];e.setAtLeastIfValid(t.getLocation(0,tt.ON),t.getLocation(1,tt.ON),1),t.isArea()&&(e.setAtLeastIfValid(t.getLocation(0,tt.LEFT),t.getLocation(1,tt.LEFT),2),e.setAtLeastIfValid(t.getLocation(0,tt.RIGHT),t.getLocation(1,tt.RIGHT),2))}}]),s}(Ve),sr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"setWorkingPrecisionModel",value:function(t){this._workingPrecisionModel=t}},{key:"insertUniqueEdge",value:function(t){var n=this._edgeList.findEqualEdge(t);if(null!==n){var r=n.getLabel(),i=t.getLabel();n.isPointwiseEqual(t)||(i=new Ae(t.getLabel())).flip(),r.merge(i);var o=e.depthDelta(i),s=n.getDepthDelta()+o;n.setDepthDelta(s)}else this._edgeList.add(t),t.setDepthDelta(e.depthDelta(t.getLabel()))}},{key:"buildSubgraphs",value:function(t,e){for(var n=new dt,r=t.iterator();r.hasNext();){var i=r.next(),o=i.getRightmostCoordinate(),s=new Dn(n).getDepth(o);i.computeDepth(s),i.findResultEdges(),n.add(i),e.add(i.getDirectedEdges(),i.getNodes())}}},{key:"createSubgraphs",value:function(t){for(var e=new dt,n=t.getNodes().iterator();n.hasNext();){var r=n.next();if(!r.isVisited()){var i=new mt;i.create(r),e.add(i)}}return an.sort(e,an.reverseOrder()),e}},{key:"createEmptyResultGeometry",value:function(){return this._geomFact.createPolygon()}},{key:"getNoder",value:function(t){if(null!==this._workingNoder)return this._workingNoder;var e=new Ln,n=new Ce;return n.setPrecisionModel(t),e.setSegmentIntersector(new Kn(n)),e}},{key:"buffer",value:function(t,e){var n=this._workingPrecisionModel;null===n&&(n=t.getPrecisionModel()),this._geomFact=t.getFactory();var r=new An(n,this._bufParams),i=new Bn(t,e,r).getCurves();if(i.size()<=0)return this.createEmptyResultGeometry();this.computeNodedEdges(i,n),this._graph=new $e(new Zn),this._graph.addEdges(this._edgeList.getEdges());var o=this.createSubgraphs(this._graph),s=new tn(this._geomFact);this.buildSubgraphs(o,s);var a=s.getPolygons();return a.size()<=0?this.createEmptyResultGeometry():this._geomFact.buildGeometry(a)}},{key:"computeNodedEdges",value:function(t,e){var n=this.getNoder(e);n.computeNodes(t);for(var r=n.getNodedSubstrings().iterator();r.hasNext();){var i=r.next(),o=i.getCoordinates();if(2!==o.length||!o[0].equals2D(o[1])){var s=i.getData(),a=new or(i.getCoordinates(),new Ae(s));this.insertUniqueEdge(a)}}}},{key:"setNoder",value:function(t){this._workingNoder=t}}],[{key:"constructor_",value:function(){this._bufParams=null,this._workingPrecisionModel=null,this._workingNoder=null,this._geomFact=null,this._graph=null,this._edgeList=new Wn;var t=arguments[0];this._bufParams=t}},{key:"depthDelta",value:function(t){var e=t.getLocation(0,tt.LEFT),n=t.getLocation(0,tt.RIGHT);return e===Z.INTERIOR&&n===Z.EXTERIOR?1:e===Z.EXTERIOR&&n===Z.INTERIOR?-1:0}},{key:"convertSegStrings",value:function(t){for(var e=new ae,n=new dt;t.hasNext();){var r=t.next(),i=e.createLineString(r.getCoordinates());n.add(i)}return e.buildGeometry(n)}}]),e}(),ar=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"rescale",value:function(){if(ot(arguments[0],H))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.rescale(e.getCoordinates())}else if(arguments[0]instanceof Array){for(var n=arguments[0],r=0;r<n.length;r++)n[r].x=n[r].x/this._scaleFactor+this._offsetX,n[r].y=n[r].y/this._scaleFactor+this._offsetY;2===n.length&&n[0].equals2D(n[1])&&xt.out.println(n)}}},{key:"scale",value:function(){if(ot(arguments[0],H)){for(var t=arguments[0],e=new dt(t.size()),n=t.iterator();n.hasNext();){var r=n.next();e.add(new kn(this.scale(r.getCoordinates()),r.getData()))}return e}if(arguments[0]instanceof Array){for(var i=arguments[0],o=new Array(i.length).fill(null),s=0;s<i.length;s++)o[s]=new z(Math.round((i[s].x-this._offsetX)*this._scaleFactor),Math.round((i[s].y-this._offsetY)*this._scaleFactor),i[s].getZ());return Wt.removeRepeatedPoints(o)}}},{key:"isIntegerPrecision",value:function(){return 1===this._scaleFactor}},{key:"getNodedSubstrings",value:function(){var t=this._noder.getNodedSubstrings();return this._isScaled&&this.rescale(t),t}},{key:"computeNodes",value:function(t){var e=t;this._isScaled&&(e=this.scale(t)),this._noder.computeNodes(e)}},{key:"interfaces_",get:function(){return[Sn]}}],[{key:"constructor_",value:function(){if(this._noder=null,this._scaleFactor=null,this._offsetX=null,this._offsetY=null,this._isScaled=!1,2===arguments.length){var t=arguments[0],n=arguments[1];e.constructor_.call(this,t,n,0,0)}else if(4===arguments.length){var r=arguments[0],i=arguments[1];this._noder=r,this._scaleFactor=i,this._isScaled=!this.isIntegerPrecision()}}}]),e}(),ur=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"checkEndPtVertexIntersections",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next().getCoordinates();this.checkEndPtVertexIntersections(e[0],this._segStrings),this.checkEndPtVertexIntersections(e[e.length-1],this._segStrings)}else if(2===arguments.length)for(var n=arguments[0],r=arguments[1].iterator();r.hasNext();)for(var i=r.next().getCoordinates(),o=1;o<i.length-1;o++)if(i[o].equals(n))throw new F("found endpt/interior pt intersection at index "+o+" :pt "+n)}},{key:"checkInteriorIntersections",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();)for(var e=t.next(),n=this._segStrings.iterator();n.hasNext();){var r=n.next();this.checkInteriorIntersections(e,r)}else if(2===arguments.length)for(var i=arguments[0],o=arguments[1],s=i.getCoordinates(),a=o.getCoordinates(),u=0;u<s.length-1;u++)for(var l=0;l<a.length-1;l++)this.checkInteriorIntersections(i,u,o,l);else if(4===arguments.length){var h=arguments[0],c=arguments[1],f=arguments[2],g=arguments[3];if(h===f&&c===g)return null;var p=h.getCoordinates()[c],v=h.getCoordinates()[c+1],d=f.getCoordinates()[g],y=f.getCoordinates()[g+1];if(this._li.computeIntersection(p,v,d,y),this._li.hasIntersection()&&(this._li.isProper()||this.hasInteriorIntersection(this._li,p,v)||this.hasInteriorIntersection(this._li,d,y)))throw new F("found non-noded intersection at "+p+"-"+v+" and "+d+"-"+y)}}},{key:"checkValid",value:function(){this.checkEndPtVertexIntersections(),this.checkInteriorIntersections(),this.checkCollapses()}},{key:"checkCollapses",value:function(){if(0===arguments.length)for(var t=this._segStrings.iterator();t.hasNext();){var e=t.next();this.checkCollapses(e)}else if(1===arguments.length)for(var n=arguments[0].getCoordinates(),r=0;r<n.length-2;r++)this.checkCollapse(n[r],n[r+1],n[r+2])}},{key:"hasInteriorIntersection",value:function(t,e,n){for(var r=0;r<t.getIntersectionNum();r++){var i=t.getIntersection(r);if(!i.equals(e)&&!i.equals(n))return!0}return!1}},{key:"checkCollapse",value:function(t,n,r){if(t.equals(r))throw new F("found non-noded collapse at "+e.fact.createLineString([t,n,r]))}}],[{key:"constructor_",value:function(){this._li=new Ce,this._segStrings=null;var t=arguments[0];this._segStrings=t}}]),e}();ur.fact=new ae;var lr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"intersectsScaled",value:function(t,e){var n=Math.min(t.x,e.x),r=Math.max(t.x,e.x),i=Math.min(t.y,e.y),o=Math.max(t.y,e.y),s=this._maxx<n||this._minx>r||this._maxy<i||this._miny>o;if(s)return!1;var a=this.intersectsToleranceSquare(t,e);return V.isTrue(!(s&&a),"Found bad envelope test"),a}},{key:"initCorners",value:function(t){var e=.5;this._minx=t.x-e,this._maxx=t.x+e,this._miny=t.y-e,this._maxy=t.y+e,this._corner[0]=new z(this._maxx,this._maxy),this._corner[1]=new z(this._minx,this._maxy),this._corner[2]=new z(this._minx,this._miny),this._corner[3]=new z(this._maxx,this._miny)}},{key:"intersects",value:function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))}},{key:"scale",value:function(t){return Math.round(t*this._scaleFactor)}},{key:"getCoordinate",value:function(){return this._originalPt}},{key:"copyScaled",value:function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)}},{key:"getSafeEnvelope",value:function(){if(null===this._safeEnv){var t=e.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new X(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv}},{key:"intersectsPixelClosure",value:function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!(this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),this._li.hasIntersection()))))}},{key:"intersectsToleranceSquare",value:function(t,e){var n=!1,r=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!(this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),this._li.isProper()||(this._li.hasIntersection()&&(r=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),this._li.isProper()||n&&r||t.equals(this._pt)||e.equals(this._pt)))))}},{key:"addSnappedNode",value:function(t,e){var n=t.getCoordinate(e),r=t.getCoordinate(e+1);return!!this.intersects(n,r)&&(t.addIntersection(this.getCoordinate(),e),!0)}}],[{key:"constructor_",value:function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;var t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new x("Scale factor must be non-zero");1!==e&&(this._pt=new z(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new z,this._p1Scaled=new z),this.initCorners(this._pt)}}]),e}();lr.SAFE_ENV_EXPANSION_FACTOR=.75;var hr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"select",value:function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[1];arguments[0].getLineSegment(t,this.selectedSegment),this.select(this.selectedSegment)}}}],[{key:"constructor_",value:function(){this.selectedSegment=new bn}}]),e}(),cr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"snap",value:function(){if(1===arguments.length){var e=arguments[0];return this.snap(e,null,-1)}if(3===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2],s=r.getSafeEnvelope(),a=new fr(r,i,o);return this._index.query(s,new(function(){function e(){t(this,e)}return n(e,[{key:"interfaces_",get:function(){return[hn]}},{key:"visitItem",value:function(t){t.select(s,a)}}]),e}())),a.isNodeAdded()}}}],[{key:"constructor_",value:function(){this._index=null;var t=arguments[0];this._index=t}}]),e}(),fr=function(e){r(s,e);var o=c(s);function s(){var e;return t(this,s),e=o.call(this),s.constructor_.apply(l(e),arguments),e}return n(s,[{key:"isNodeAdded",value:function(){return this._isNodeAdded}},{key:"select",value:function(){if(!(2===arguments.length&&Number.isInteger(arguments[1])&&arguments[0]instanceof In))return f(i(s.prototype),"select",this).apply(this,arguments);var t=arguments[1],e=arguments[0].getContext();if(this._parentEdge===e&&(t===this._hotPixelVertexIndex||t+1===this._hotPixelVertexIndex))return null;this._isNodeAdded|=this._hotPixel.addSnappedNode(e,t)}}],[{key:"constructor_",value:function(){this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._hotPixel=t,this._parentEdge=e,this._hotPixelVertexIndex=n}}]),s}(hr);cr.HotPixelSnapAction=fr;var gr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"processIntersections",value:function(t,e,n,r){if(t===n&&e===r)return null;var i=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[r],a=n.getCoordinates()[r+1];if(this._li.computeIntersection(i,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u<this._li.getIntersectionNum();u++)this._interiorIntersections.add(this._li.getIntersection(u));t.addIntersections(this._li,e,0),n.addIntersections(this._li,r,1)}}},{key:"isDone",value:function(){return!1}},{key:"getInteriorIntersections",value:function(){return this._interiorIntersections}},{key:"interfaces_",get:function(){return[Jn]}}],[{key:"constructor_",value:function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new dt}}]),e}(),pr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"checkCorrectness",value:function(t){var e=kn.getNodedSubstrings(t),n=new ur(e);try{n.checkValid()}catch(t){if(!(t instanceof _))throw t;t.printStackTrace()}}},{key:"getNodedSubstrings",value:function(){return kn.getNodedSubstrings(this._nodedSegStrings)}},{key:"snapRound",value:function(t,e){var n=this.findInteriorIntersections(t,e);this.computeIntersectionSnaps(n),this.computeVertexSnaps(t)}},{key:"findInteriorIntersections",value:function(t,e){var n=new gr(e);return this._noder.setSegmentIntersector(n),this._noder.computeNodes(t),n.getInteriorIntersections()}},{key:"computeVertexSnaps",value:function(){if(ot(arguments[0],H))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.computeVertexSnaps(e)}else if(arguments[0]instanceof kn)for(var n=arguments[0],r=n.getCoordinates(),i=0;i<r.length;i++){var o=new lr(r[i],this._scaleFactor,this._li);this._pointSnapper.snap(o,n,i)&&n.addIntersection(r[i],i)}}},{key:"computeNodes",value:function(t){this._nodedSegStrings=t,this._noder=new Ln,this._pointSnapper=new cr(this._noder.getIndex()),this.snapRound(t,this._li)}},{key:"computeIntersectionSnaps",value:function(t){for(var e=t.iterator();e.hasNext();){var n=e.next(),r=new lr(n,this._scaleFactor,this._li);this._pointSnapper.snap(r)}}},{key:"interfaces_",get:function(){return[Sn]}}],[{key:"constructor_",value:function(){this._pm=null,this._li=null,this._scaleFactor=null,this._noder=null,this._pointSnapper=null,this._nodedSegStrings=null;var t=arguments[0];this._pm=t,this._li=new Ce,this._li.setPrecisionModel(t),this._scaleFactor=t.getScale()}}]),e}(),vr=function(){function e(){t(this,e),e.constructor_.apply(this,arguments)}return n(e,[{key:"bufferFixedPrecision",value:function(t){var e=new ar(new pr(new ie(1)),t.getScale()),n=new sr(this._bufParams);n.setWorkingPrecisionModel(t),n.setNoder(e),this._resultGeometry=n.buffer(this._argGeom,this._distance)}},{key:"bufferReducedPrecision",value:function(){if(0===arguments.length){for(var t=e.MAX_PRECISION_DIGITS;t>=0;t--){try{this.bufferReducedPrecision(t)}catch(t){if(!(t instanceof pt))throw t;this._saveException=t}if(null!==this._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],r=e.precisionScaleFactor(this._argGeom,this._distance,n),i=new ie(r);this.bufferFixedPrecision(i)}}},{key:"computeGeometry",value:function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===ie.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()}},{key:"setQuadrantSegments",value:function(t){this._bufParams.setQuadrantSegments(t)}},{key:"bufferOriginalPrecision",value:function(){try{var t=new sr(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof F))throw t;this._saveException=t}}},{key:"getResultGeometry",value:function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry}},{key:"setEndCapStyle",value:function(t){this._bufParams.setEndCapStyle(t)}}],[{key:"constructor_",value:function(){if(this._argGeom=null,this._distance=null,this._bufParams=new y,this._resultGeometry=null,this._saveException=null,1===arguments.length){var t=arguments[0];this._argGeom=t}else if(2===arguments.length){var e=arguments[0],n=arguments[1];this._argGeom=e,this._bufParams=n}}},{key:"bufferOp",value:function(){if(2===arguments.length){var t=arguments[1];return new e(arguments[0]).getResultGeometry(t)}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof U&&"number"==typeof arguments[1]){var n=arguments[1],r=arguments[2],i=new e(arguments[0]);return i.setQuadrantSegments(r),i.getResultGeometry(n)}if(arguments[2]instanceof y&&arguments[0]instanceof U&&"number"==typeof arguments[1]){var o=arguments[1];return new e(arguments[0],arguments[2]).getResultGeometry(o)}}else if(4===arguments.length){var s=arguments[1],a=arguments[2],u=arguments[3],l=new e(arguments[0]);return l.setQuadrantSegments(a),l.setEndCapStyle(u),l.getResultGeometry(s)}}},{key:"precisionScaleFactor",value:function(t,e,n){var r=t.getEnvelopeInternal(),i=Et.max(Math.abs(r.getMaxX()),Math.abs(r.getMaxY()),Math.abs(r.getMinX()),Math.abs(r.getMinY()))+2*(e>0?e:0),o=n-Math.trunc(Math.log(i)/Math.log(10)+1);return Math.pow(10,o)}}]),e}();vr.CAP_ROUND=y.CAP_ROUND,vr.CAP_BUTT=y.CAP_FLAT,vr.CAP_FLAT=y.CAP_FLAT,vr.CAP_SQUARE=y.CAP_SQUARE,vr.MAX_PRECISION_DIGITS=12;var dr=["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"],yr=function(){function e(n){t(this,e),this.geometryFactory=n||new ae}return n(e,[{key:"read",value:function(t){var e,n=(e="string"==typeof t?JSON.parse(t):t).type;if(!mr[n])throw new Error("Unknown GeoJSON type: "+e.type);return-1!==dr.indexOf(n)?mr[n].call(this,e.coordinates):"GeometryCollection"===n?mr[n].call(this,e.geometries):mr[n].call(this,e)}},{key:"write",value:function(t){var e=t.getGeometryType();if(!_r[e])throw new Error("Geometry is not supported");return _r[e].call(this,t)}}]),e}(),mr={Feature:function(t){var e={};for(var n in t)e[n]=t[n];if(t.geometry){var r=t.geometry.type;if(!mr[r])throw new Error("Unknown GeoJSON type: "+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=mr.bbox.call(this,t.bbox)),e},FeatureCollection:function(t){var e={};if(t.features){e.features=[];for(var n=0;n<t.features.length;++n)e.features.push(this.read(t.features[n]))}return t.bbox&&(e.bbox=this.parse.bbox.call(this,t.bbox)),e},coordinates:function(t){for(var e=[],n=0;n<t.length;++n){var r=t[n];e.push(a(z,g(r)))}return e},bbox:function(t){return this.geometryFactory.createLinearRing([new z(t[0],t[1]),new z(t[2],t[1]),new z(t[2],t[3]),new z(t[0],t[3]),new z(t[0],t[1])])},Point:function(t){var e=a(z,g(t));return this.geometryFactory.createPoint(e)},MultiPoint:function(t){for(var e=[],n=0;n<t.length;++n)e.push(mr.Point.call(this,t[n]));return this.geometryFactory.createMultiPoint(e)},LineString:function(t){var e=mr.coordinates.call(this,t);return this.geometryFactory.createLineString(e)},MultiLineString:function(t){for(var e=[],n=0;n<t.length;++n)e.push(mr.LineString.call(this,t[n]));return this.geometryFactory.createMultiLineString(e)},Polygon:function(t){for(var e=mr.coordinates.call(this,t[0]),n=this.geometryFactory.createLinearRing(e),r=[],i=1;i<t.length;++i){var o=t[i],s=mr.coordinates.call(this,o),a=this.geometryFactory.createLinearRing(s);r.push(a)}return this.geometryFactory.createPolygon(n,r)},MultiPolygon:function(t){for(var e=[],n=0;n<t.length;++n){var r=t[n];e.push(mr.Polygon.call(this,r))}return this.geometryFactory.createMultiPolygon(e)},GeometryCollection:function(t){for(var e=[],n=0;n<t.length;++n){var r=t[n];e.push(this.read(r))}return this.geometryFactory.createGeometryCollection(e)}},_r={coordinate:function(t){var e=[t.x,t.y];return t.z&&e.push(t.z),t.m&&e.push(t.m),e},Point:function(t){return{type:"Point",coordinates:_r.coordinate.call(this,t.getCoordinate())}},MultiPoint:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var r=t._geometries[n],i=_r.Point.call(this,r);e.push(i.coordinates)}return{type:"MultiPoint",coordinates:e}},LineString:function(t){for(var e=[],n=t.getCoordinates(),r=0;r<n.length;++r){var i=n[r];e.push(_r.coordinate.call(this,i))}return{type:"LineString",coordinates:e}},MultiLineString:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var r=t._geometries[n],i=_r.LineString.call(this,r);e.push(i.coordinates)}return{type:"MultiLineString",coordinates:e}},Polygon:function(t){var e=[],n=_r.LineString.call(this,t._shell);e.push(n.coordinates);for(var r=0;r<t._holes.length;++r){var i=t._holes[r],o=_r.LineString.call(this,i);e.push(o.coordinates)}return{type:"Polygon",coordinates:e}},MultiPolygon:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var r=t._geometries[n],i=_r.Polygon.call(this,r);e.push(i.coordinates)}return{type:"MultiPolygon",coordinates:e}},GeometryCollection:function(t){for(var e=[],n=0;n<t._geometries.length;++n){var r=t._geometries[n],i=r.getGeometryType();e.push(_r[i].call(this,r))}return{type:"GeometryCollection",geometries:e}}};return{BufferOp:vr,GeoJSONReader:function(){function e(n){t(this,e),this.parser=new yr(n||new ae)}return n(e,[{key:"read",value:function(t){return this.parser.read(t)}}]),e}(),GeoJSONWriter:function(){function e(){t(this,e),this.parser=new yr(this.geometryFactory)}return n(e,[{key:"write",value:function(t){return this.parser.write(t)}}]),e}()}}()}(Fn)),Fn.exports),Vn=mn(qn);function Gn(){return new Bn}function Bn(){this.reset()}Bn.prototype={constructor:Bn,reset:function(){this.s=this.t=0},add:function(t){zn(Yn,t,this.t),zn(this,Yn.s,this.s),this.s?this.t+=Yn.t:this.s=Yn.t},valueOf:function(){return this.s}};var Yn=new Bn;function zn(t,e,n){var r=t.s=e+n,i=r-e,o=r-i;t.t=e-o+(n-i)}var jn=1e-6,Xn=Math.PI,Un=Xn/2,Zn=Xn/4,Hn=2*Xn,Wn=180/Xn,Jn=Xn/180,Kn=Math.abs,Qn=Math.atan,$n=Math.atan2,tr=Math.cos,er=Math.sin,nr=Math.sqrt;function rr(t){return t>1?0:t<-1?Xn:Math.acos(t)}function ir(t){return t>1?Un:t<-1?-Un:Math.asin(t)}function or(){}function sr(t,e){t&&ur.hasOwnProperty(t.type)&&ur[t.type](t,e)}var ar={Feature:function(t,e){sr(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)sr(n[r].geometry,e)}},ur={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)t=n[r],e.point(t[0],t[1],t[2])},LineString:function(t,e){lr(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)lr(n[r],e,0)},Polygon:function(t,e){hr(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)hr(n[r],e)},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)sr(n[r],e)}};function lr(t,e,n){var r,i=-1,o=t.length-n;for(e.lineStart();++i<o;)r=t[i],e.point(r[0],r[1],r[2]);e.lineEnd()}function hr(t,e){var n=-1,r=t.length;for(e.polygonStart();++n<r;)lr(t[n],e,1);e.polygonEnd()}function cr(t){return[$n(t[1],t[0]),ir(t[2])]}function fr(t){var e=t[0],n=t[1],r=tr(n);return[r*tr(e),r*er(e),er(n)]}function gr(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function pr(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function vr(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function dr(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function yr(t){var e=nr(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function mr(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n}function _r(t,e){return[t>Xn?t-Hn:t<-Xn?t+Hn:t,e]}function xr(t){return function(e,n){return[(e+=t)>Xn?e-Hn:e<-Xn?e+Hn:e,n]}}function Er(t){var e=xr(t);return e.invert=xr(-t),e}function kr(t,e){var n=tr(t),r=er(t),i=tr(e),o=er(e);function s(t,e){var s=tr(e),a=tr(t)*s,u=er(t)*s,l=er(e),h=l*n+a*r;return[$n(u*i-h*o,a*n-l*r),ir(h*i+u*o)]}return s.invert=function(t,e){var s=tr(e),a=tr(t)*s,u=er(t)*s,l=er(e),h=l*i-u*o;return[$n(u*i+l*o,a*n+h*r),ir(h*n-a*r)]},s}function br(t,e){(e=fr(e))[0]-=t,yr(e);var n=rr(-e[1]);return((-e[2]<0?-n:n)+Hn-jn)%Hn}function wr(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:or,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function Ir(t,e){return Kn(t[0]-e[0])<jn&&Kn(t[1]-e[1])<jn}function Nr(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}function Sr(t,e,n,r,i){var o,s,a=[],u=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],s=t[e];if(Ir(r,s)){for(i.lineStart(),o=0;o<e;++o)i.point((r=t[o])[0],r[1]);i.lineEnd()}else a.push(n=new Nr(r,t,null,!0)),u.push(n.o=new Nr(r,null,n,!1)),a.push(n=new Nr(s,t,null,!1)),u.push(n.o=new Nr(s,null,n,!0))}})),a.length){for(u.sort(e),Mr(a),Mr(u),o=0,s=u.length;o<s;++o)u[o].e=n=!n;for(var l,h,c=a[0];;){for(var f=c,g=!0;f.v;)if((f=f.n)===c)return;l=f.z,i.lineStart();do{if(f.v=f.o.v=!0,f.e){if(g)for(o=0,s=l.length;o<s;++o)i.point((h=l[o])[0],h[1]);else r(f.x,f.n.x,1,i);f=f.n}else{if(g)for(l=f.p.z,o=l.length-1;o>=0;--o)i.point((h=l[o])[0],h[1]);else r(f.x,f.p.x,-1,i);f=f.p}l=(f=f.o).z,g=!g}while(!f.v);i.lineEnd()}}}function Mr(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r<e;)i.n=n=t[r],n.p=i,i=n;i.n=n=t[0],n.p=i}}function Lr(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Pr(t){for(var e,n,r,i=t.length,o=-1,s=0;++o<i;)s+=t[o].length;for(n=new Array(s);--i>=0;)for(e=(r=t[i]).length;--e>=0;)n[--s]=r[e];return n}Gn(),Gn(),Gn(),_r.invert=_r,function(t){var e;1===t.length&&(e=t,t=function(t,n){return Lr(e(t),n)})}(Lr);var Cr=1e9,Tr=-Cr;function Or(t,e,n,r){function i(i,o){return t<=i&&i<=n&&e<=o&&o<=r}function o(i,o,a,l){var h=0,c=0;if(null==i||(h=s(i,a))!==(c=s(o,a))||u(i,o)<0^a>0)do{l.point(0===h||3===h?t:n,h>1?r:e)}while((h=(h+a+4)%4)!==c);else l.point(o[0],o[1])}function s(r,i){return Kn(r[0]-t)<jn?i>0?0:3:Kn(r[0]-n)<jn?i>0?2:1:Kn(r[1]-e)<jn?i>0?1:0:i>0?3:2}function a(t,e){return u(t.x,e.x)}function u(t,e){var n=s(t,1),r=s(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(s){var u,l,h,c,f,g,p,v,d,y,m,_=s,x=wr(),E={point:k,lineStart:function(){E.point=b,l&&l.push(h=[]);y=!0,d=!1,p=v=NaN},lineEnd:function(){u&&(b(c,f),g&&d&&x.rejoin(),u.push(x.result()));E.point=k,d&&_.lineEnd()},polygonStart:function(){_=x,u=[],l=[],m=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=l.length;n<i;++n)for(var o,s,a=l[n],u=1,h=a.length,c=a[0],f=c[0],g=c[1];u<h;++u)o=f,s=g,f=(c=a[u])[0],g=c[1],s<=r?g>r&&(f-o)*(r-s)>(g-s)*(t-o)&&++e:g<=r&&(f-o)*(r-s)<(g-s)*(t-o)&&--e;return e}(),n=m&&e,i=(u=Pr(u)).length;(n||i)&&(s.polygonStart(),n&&(s.lineStart(),o(null,null,1,s),s.lineEnd()),i&&Sr(u,a,e,o,s),s.polygonEnd());_=s,u=l=h=null}};function k(t,e){i(t,e)&&_.point(t,e)}function b(o,s){var a=i(o,s);if(l&&h.push([o,s]),y)c=o,f=s,g=a,y=!1,a&&(_.lineStart(),_.point(o,s));else if(a&&d)_.point(o,s);else{var u=[p=Math.max(Tr,Math.min(Cr,p)),v=Math.max(Tr,Math.min(Cr,v))],x=[o=Math.max(Tr,Math.min(Cr,o)),s=Math.max(Tr,Math.min(Cr,s))];!function(t,e,n,r,i,o){var s,a=t[0],u=t[1],l=0,h=1,c=e[0]-a,f=e[1]-u;if(s=n-a,c||!(s>0)){if(s/=c,c<0){if(s<l)return;s<h&&(h=s)}else if(c>0){if(s>h)return;s>l&&(l=s)}if(s=i-a,c||!(s<0)){if(s/=c,c<0){if(s>h)return;s>l&&(l=s)}else if(c>0){if(s<l)return;s<h&&(h=s)}if(s=r-u,f||!(s>0)){if(s/=f,f<0){if(s<l)return;s<h&&(h=s)}else if(f>0){if(s>h)return;s>l&&(l=s)}if(s=o-u,f||!(s<0)){if(s/=f,f<0){if(s>h)return;s>l&&(l=s)}else if(f>0){if(s<l)return;s<h&&(h=s)}return l>0&&(t[0]=a+l*c,t[1]=u+l*f),h<1&&(e[0]=a+h*c,e[1]=u+h*f),!0}}}}}(u,x,t,e,n,r)?a&&(_.lineStart(),_.point(o,s),m=!1):(d||(_.lineStart(),_.point(u[0],u[1])),_.point(x[0],x[1]),a||_.lineEnd(),m=!1)}p=o,v=s,d=a}return E}}var Rr=Gn();function Ar(t){return t}Gn(),Gn(),Gn();var Dr=1/0,Fr=Dr,qr=-Dr,Vr=qr,Gr={point:function(t,e){t<Dr&&(Dr=t);t>qr&&(qr=t);e<Fr&&(Fr=e);e>Vr&&(Vr=e)},lineStart:or,lineEnd:or,polygonStart:or,polygonEnd:or,result:function(){var t=[[Dr,Fr],[qr,Vr]];return qr=Vr=-(Fr=Dr=1/0),t}};function Br(t,e,n,r){return function(i,o){var s,a,u,l=e(o),h=i.invert(r[0],r[1]),c=wr(),f=e(c),g=!1,p={point:v,lineStart:y,lineEnd:m,polygonStart:function(){p.point=_,p.lineStart=x,p.lineEnd=E,a=[],s=[]},polygonEnd:function(){p.point=v,p.lineStart=y,p.lineEnd=m,a=Pr(a);var t=function(t,e){var n=e[0],r=e[1],i=[er(n),-tr(n),0],o=0,s=0;Rr.reset();for(var a=0,u=t.length;a<u;++a)if(h=(l=t[a]).length)for(var l,h,c=l[h-1],f=c[0],g=c[1]/2+Zn,p=er(g),v=tr(g),d=0;d<h;++d,f=m,p=x,v=E,c=y){var y=l[d],m=y[0],_=y[1]/2+Zn,x=er(_),E=tr(_),k=m-f,b=k>=0?1:-1,w=b*k,I=w>Xn,N=p*x;if(Rr.add($n(N*b*er(w),v*E+N*tr(w))),o+=I?k+b*Hn:k,I^f>=n^m>=n){var S=pr(fr(c),fr(y));yr(S);var M=pr(i,S);yr(M);var L=(I^k>=0?-1:1)*ir(M[2]);(r>L||r===L&&(S[0]||S[1]))&&(s+=I^k>=0?1:-1)}}return(o<-jn||o<jn&&Rr<-jn)^1&s}(s,h);a.length?(g||(o.polygonStart(),g=!0),Sr(a,zr,t,n,o)):t&&(g||(o.polygonStart(),g=!0),o.lineStart(),n(null,null,1,o),o.lineEnd()),g&&(o.polygonEnd(),g=!1),a=s=null},sphere:function(){o.polygonStart(),o.lineStart(),n(null,null,1,o),o.lineEnd(),o.polygonEnd()}};function v(e,n){var r=i(e,n);t(e=r[0],n=r[1])&&o.point(e,n)}function d(t,e){var n=i(t,e);l.point(n[0],n[1])}function y(){p.point=d,l.lineStart()}function m(){p.point=v,l.lineEnd()}function _(t,e){u.push([t,e]);var n=i(t,e);f.point(n[0],n[1])}function x(){f.lineStart(),u=[]}function E(){_(u[0][0],u[0][1]),f.lineEnd();var t,e,n,r,i=f.clean(),l=c.result(),h=l.length;if(u.pop(),s.push(u),u=null,h)if(1&i){if((e=(n=l[0]).length-1)>0){for(g||(o.polygonStart(),g=!0),o.lineStart(),t=0;t<e;++t)o.point((r=n[t])[0],r[1]);o.lineEnd()}}else h>1&&2&i&&l.push(l.pop().concat(l.shift())),a.push(l.filter(Yr))}return p}}function Yr(t){return t.length>1}function zr(t,e){return((t=t.x)[0]<0?t[1]-Un-jn:Un-t[1])-((e=e.x)[0]<0?e[1]-Un-jn:Un-e[1])}Gn();var jr=Br((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,s){var a=o>0?Xn:-Xn,u=Kn(o-n);Kn(u-Xn)<jn?(t.point(n,r=(r+s)/2>0?Un:-Un),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),t.point(o,r),e=0):i!==a&&u>=Xn&&(Kn(n-i)<jn&&(n-=i*jn),Kn(o-a)<jn&&(o-=a*jn),r=function(t,e,n,r){var i,o,s=er(t-n);return Kn(s)>jn?Qn((er(e)*(o=tr(r))*er(n)-er(r)*(i=tr(e))*er(t))/(i*o*s)):(e+r)/2}(n,r,o,s),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),e=0),t.point(n=o,r=s),i=a},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*Un,r.point(-Xn,i),r.point(0,i),r.point(Xn,i),r.point(Xn,0),r.point(Xn,-i),r.point(0,-i),r.point(-Xn,-i),r.point(-Xn,0),r.point(-Xn,i);else if(Kn(t[0]-e[0])>jn){var o=t[0]<e[0]?Xn:-Xn;i=n*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(e[0],e[1])}),[-Xn,-Un]);function Xr(t,e){var n=tr(t),r=n>0,i=Kn(n)>jn;function o(t,e){return tr(t)*tr(e)>n}function s(t,e,r){var i=[1,0,0],o=pr(fr(t),fr(e)),s=gr(o,o),a=o[0],u=s-a*a;if(!u)return!r&&t;var l=n*s/u,h=-n*a/u,c=pr(i,o),f=dr(i,l);vr(f,dr(o,h));var g=c,p=gr(f,g),v=gr(g,g),d=p*p-v*(gr(f,f)-1);if(!(d<0)){var y=nr(d),m=dr(g,(-p-y)/v);if(vr(m,f),m=cr(m),!r)return m;var _,x=t[0],E=e[0],k=t[1],b=e[1];E<x&&(_=x,x=E,E=_);var w=E-x,I=Kn(w-Xn)<jn;if(!I&&b<k&&(_=k,k=b,b=_),I||w<jn?I?k+b>0^m[1]<(Kn(m[0]-x)<jn?k:b):k<=m[1]&&m[1]<=b:w>Xn^(x<=m[0]&&m[0]<=E)){var N=dr(g,(-p+y)/v);return vr(N,f),[m,cr(N)]}}}function a(e,n){var i=r?t:Xn-t,o=0;return e<-i?o|=1:e>i&&(o|=2),n<-i?o|=4:n>i&&(o|=8),o}return Br(o,(function(t){var e,n,u,l,h;return{lineStart:function(){l=u=!1,h=1},point:function(c,f){var g,p=[c,f],v=o(c,f),d=r?v?0:a(c,f):v?a(c+(c<0?Xn:-Xn),f):0;if(!e&&(l=u=v)&&t.lineStart(),v!==u&&(!(g=s(e,p))||Ir(e,g)||Ir(p,g))&&(p[0]+=jn,p[1]+=jn,v=o(p[0],p[1])),v!==u)h=0,v?(t.lineStart(),g=s(p,e),t.point(g[0],g[1])):(g=s(e,p),t.point(g[0],g[1]),t.lineEnd()),e=g;else if(i&&e&&r^v){var y;d&n||!(y=s(p,e,!0))||(h=0,r?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||e&&Ir(e,p)||t.point(p[0],p[1]),e=p,u=v,n=d},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return h|(l&&u)<<1}}}),(function(n,r,i,o){!function(t,e,n,r,i,o){if(n){var s=tr(e),a=er(e),u=r*n;null==i?(i=e+r*Hn,o=e-u/2):(i=br(s,i),o=br(s,o),(r>0?i<o:i>o)&&(i+=r*Hn));for(var l,h=i;r>0?h>o:h<o;h-=u)l=cr([s,-a*tr(h),-a*er(h)]),t.point(l[0],l[1])}}(o,t,e,i,n,r)}),r?[0,-t]:[-Xn,t-Xn])}function Ur(t){return function(e){var n=new Zr;for(var r in t)n[r]=t[r];return n.stream=e,n}}function Zr(){}function Hr(t,e,n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],o=t.clipExtent&&t.clipExtent();t.scale(150).translate([0,0]),null!=o&&t.clipExtent(null),function(t,e){t&&ar.hasOwnProperty(t.type)?ar[t.type](t,e):sr(t,e)}(n,t.stream(Gr));var s=Gr.result(),a=Math.min(r/(s[1][0]-s[0][0]),i/(s[1][1]-s[0][1])),u=+e[0][0]+(r-a*(s[1][0]+s[0][0]))/2,l=+e[0][1]+(i-a*(s[1][1]+s[0][1]))/2;return null!=o&&t.clipExtent(o),t.scale(150*a).translate([u,l])}Zr.prototype={constructor:Zr,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Wr=16,Jr=tr(30*Jn);function Kr(t,e){return+e?function(t,e){function n(r,i,o,s,a,u,l,h,c,f,g,p,v,d){var y=l-r,m=h-i,_=y*y+m*m;if(_>4*e&&v--){var x=s+f,E=a+g,k=u+p,b=nr(x*x+E*E+k*k),w=ir(k/=b),I=Kn(Kn(k)-1)<jn||Kn(o-c)<jn?(o+c)/2:$n(E,x),N=t(I,w),S=N[0],M=N[1],L=S-r,P=M-i,C=m*L-y*P;(C*C/_>e||Kn((y*L+m*P)/_-.5)>.3||s*f+a*g+u*p<Jr)&&(n(r,i,o,s,a,u,S,M,I,x/=b,E/=b,k,v,d),d.point(S,M),n(S,M,I,x,E,k,l,h,c,f,g,p,v,d))}}return function(e){var r,i,o,s,a,u,l,h,c,f,g,p,v={point:d,lineStart:y,lineEnd:_,polygonStart:function(){e.polygonStart(),v.lineStart=x},polygonEnd:function(){e.polygonEnd(),v.lineStart=y}};function d(n,r){n=t(n,r),e.point(n[0],n[1])}function y(){h=NaN,v.point=m,e.lineStart()}function m(r,i){var o=fr([r,i]),s=t(r,i);n(h,c,l,f,g,p,h=s[0],c=s[1],l=r,f=o[0],g=o[1],p=o[2],Wr,e),e.point(h,c)}function _(){v.point=d,e.lineEnd()}function x(){y(),v.point=E,v.lineEnd=k}function E(t,e){m(r=t,e),i=h,o=c,s=f,a=g,u=p,v.point=m}function k(){n(h,c,l,f,g,p,i,o,r,s,a,u,Wr,e),v.lineEnd=_,_()}return v}}(t,e):function(t){return Ur({point:function(e,n){e=t(e,n),this.stream.point(e[0],e[1])}})}(t)}var Qr=Ur({point:function(t,e){this.stream.point(t*Jn,e*Jn)}});function $r(t){return function(t){var e,n,r,i,o,s,a,u,l,h,c=150,f=480,g=250,p=0,v=0,d=0,y=0,m=0,_=null,x=jr,E=null,k=Ar,b=.5,w=Kr(S,b);function I(t){return[(t=o(t[0]*Jn,t[1]*Jn))[0]*c+n,r-t[1]*c]}function N(t){return(t=o.invert((t[0]-n)/c,(r-t[1])/c))&&[t[0]*Wn,t[1]*Wn]}function S(t,i){return[(t=e(t,i))[0]*c+n,r-t[1]*c]}function M(){o=mr(i=function(t,e,n){return(t%=Hn)?e||n?mr(Er(t),kr(e,n)):Er(t):e||n?kr(e,n):_r}(d,y,m),e);var t=e(p,v);return n=f-t[0]*c,r=g+t[1]*c,L()}function L(){return l=h=null,I}return I.stream=function(t){return l&&h===t?l:l=Qr(x(i,w(k(h=t))))},I.clipAngle=function(t){return arguments.length?(x=+t?Xr(_=t*Jn,6*Jn):(_=null,jr),L()):_*Wn},I.clipExtent=function(t){return arguments.length?(k=null==t?(E=s=a=u=null,Ar):Or(E=+t[0][0],s=+t[0][1],a=+t[1][0],u=+t[1][1]),L()):null==E?null:[[E,s],[a,u]]},I.scale=function(t){return arguments.length?(c=+t,M()):c},I.translate=function(t){return arguments.length?(f=+t[0],g=+t[1],M()):[f,g]},I.center=function(t){return arguments.length?(p=t[0]%360*Jn,v=t[1]%360*Jn,M()):[p*Wn,v*Wn]},I.rotate=function(t){return arguments.length?(d=t[0]%360*Jn,y=t[1]%360*Jn,m=t.length>2?t[2]%360*Jn:0,M()):[d*Wn,y*Wn,m*Wn]},I.precision=function(t){return arguments.length?(w=Kr(S,b=t*t),L()):nr(b)},I.fitExtent=function(t,e){return Hr(I,t,e)},I.fitSize=function(t,e){return function(t,e,n){return Hr(t,[[0,0],e],n)}(I,t,e)},function(){return e=t.apply(this,arguments),I.invert=e.invert&&N,M()}}((function(){return t}))()}function ti(t){return function(e,n){var r=tr(e),i=tr(n),o=t(r*i);return[o*i*er(e),o*er(n)]}}function ei(t){return function(e,n){var r=nr(e*e+n*n),i=t(r),o=er(i),s=tr(i);return[$n(e*o,r*s),ir(r&&n*o/r)]}}ti((function(t){return nr(2/(1+t))})).invert=ei((function(t){return 2*ir(t/2)}));var ni=ti((function(t){return(t=rr(t))&&t/er(t)}));function ri(){return $r(ni).scale(79.4188).clipAngle(179.999)}function ii(t,e){return[t,e]}ni.invert=ei((function(t){return t})),ii.invert=ii;var oi=Vn.BufferOp,si=Vn.GeoJSONReader,ai=Vn.GeoJSONWriter;function ui(t,e,n,r){var i=t.properties||{},o="Feature"===t.type?t.geometry:t;if("GeometryCollection"===o.type){var s=[];return mt(t,(function(t){var i=ui(t,e,n,r);i&&s.push(i)})),C(s)}var a=function(t){var e=An(t).geometry.coordinates,n=[-e[0],-e[1]];return ri().rotate(n).scale(x)}(o),u={type:o.type,coordinates:hi(o.coordinates,a)},l=(new si).read(u),h=F(q(e,n),"meters"),c=oi.bufferOp(l,h,r);if(!li((c=(new ai).write(c)).coordinates))return b({type:c.type,coordinates:ci(c.coordinates,a)},i)}function li(t){return Array.isArray(t[0])?li(t[0]):isNaN(t[0])}function hi(t,e){return"object"!==m(t[0])?e(t):t.map((function(t){return hi(t,e)}))}function ci(t,e){return"object"!==m(t[0])?e.invert(t):t.map((function(t){return ci(t,e)}))}function fi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=0,r=0,i=0;return mt(t,(function(t,o,s){var a=e.weight?null==s?void 0:s[e.weight]:void 0;if(!U(a=null==a?1:a))throw new Error("weight value must be a number for feature index "+o);(a=Number(a))>0&&ct(t,(function(t){n+=t[0]*a,r+=t[1]*a,i+=a}))})),I([n/i,r/i],e.properties,e)}function gi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=0,r=0,i=0;return ct(t,(function(t){n+=t[0],r+=t[1],i++}),!0),I([n/i,r/i],e.properties)}function pi(t,e,n,r,i){var o=r.tolerance||.001,s=0,a=0,u=0,l=0;if(vt(n,(function(e){var n,r=null==(n=e.properties)?void 0:n.weight,i=null==r?1:r;if(!U(i=Number(i)))throw new Error("weight value must be a number");if(i>0){l+=1;var o=i*ut(e,t);0===o&&(o=1);var h=i/o;s+=e.geometry.coordinates[0]*h,a+=e.geometry.coordinates[1]*h,u+=h}})),l<1)throw new Error("no features to measure");var h=s/u,c=a/u;return 1===l||0===i||Math.abs(h-e[0])<o&&Math.abs(c-e[1])<o?I([h,c],{medianCandidates:r.medianCandidates}):(r.medianCandidates.push([h,c]),pi([h,c],t,n,r,i-1))}var vi={exports:{}},di=_n(Ke),yi=function(){return s((function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:mi;if(i(this,t),this.data=e,this.length=this.data.length,this.compare=n,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)}),[{key:"push",value:function(t){this.data.push(t),this.length++,this._up(this.length-1)}},{key:"pop",value:function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}}},{key:"peek",value:function(){return this.data[0]}},{key:"_up",value:function(t){for(var e=this.data,n=this.compare,r=e[t];t>0;){var i=t-1>>1,o=e[i];if(n(r,o)>=0)break;e[t]=o,t=i}e[t]=r}},{key:"_down",value:function(t){for(var e=this.data,n=this.compare,r=this.length>>1,i=e[t];t<r;){var o=1+(t<<1),s=e[o],a=o+1;if(a<this.length&&n(e[a],s)<0&&(o=a,s=e[a]),n(s,i)>=0)break;e[t]=s,t=o}e[t]=i}}])}();function mi(t,e){return t<e?-1:t>e?1:0}var _i,xi,Ei,ki,bi,wi=_n(Object.freeze({__proto__:null,default:yi})),Ii={exports:{}};function Ni(){if(bi)return Ii.exports;bi=1;var t=(xi||(xi=1,_i=function(t,e,n,r){var i=t[0],o=t[1],s=!1;void 0===n&&(n=0),void 0===r&&(r=e.length);for(var a=(r-n)/2,u=0,l=a-1;u<a;l=u++){var h=e[n+2*u+0],c=e[n+2*u+1],f=e[n+2*l+0],g=e[n+2*l+1];c>o!=g>o&&i<(f-h)*(o-c)/(g-c)+h&&(s=!s)}return s}),_i),e=(ki||(ki=1,Ei=function(t,e,n,r){var i=t[0],o=t[1],s=!1;void 0===n&&(n=0),void 0===r&&(r=e.length);for(var a=r-n,u=0,l=a-1;u<a;l=u++){var h=e[u+n][0],c=e[u+n][1],f=e[l+n][0],g=e[l+n][1];c>o!=g>o&&i<(f-h)*(o-c)/(g-c)+h&&(s=!s)}return s}),Ei);return Ii.exports=function(n,r,i,o){return r.length>0&&Array.isArray(r[0])?e(n,r,i,o):t(n,r,i,o)},Ii.exports.nested=e,Ii.exports.flat=t,Ii.exports}var Si,Mi,Li={exports:{}};Li.exports;function Pi(){return Si||(Si=1,function(t,e){!function(t){var e=134217729,n=33306690738754706e-32;function r(t,e,n,r,i){var o,s,a,u,l=e[0],h=r[0],c=0,f=0;h>l==h>-l?(o=l,l=e[++c]):(o=h,h=r[++f]);var g=0;if(c<t&&f<n)for(h>l==h>-l?(a=o-((s=l+o)-l),l=e[++c]):(a=o-((s=h+o)-h),h=r[++f]),o=s,0!==a&&(i[g++]=a);c<t&&f<n;)h>l==h>-l?(a=o-((s=o+l)-(u=s-o))+(l-u),l=e[++c]):(a=o-((s=o+h)-(u=s-o))+(h-u),h=r[++f]),o=s,0!==a&&(i[g++]=a);for(;c<t;)a=o-((s=o+l)-(u=s-o))+(l-u),l=e[++c],o=s,0!==a&&(i[g++]=a);for(;f<n;)a=o-((s=o+h)-(u=s-o))+(h-u),h=r[++f],o=s,0!==a&&(i[g++]=a);return 0===o&&0!==g||(i[g++]=o),g}function i(t){return new Float64Array(t)}var o=33306690738754716e-32,s=22204460492503146e-32,a=11093356479670487e-47,u=i(4),l=i(8),h=i(12),c=i(16),f=i(4);t.orient2d=function(t,i,g,p,v,d){var y=(i-d)*(g-v),m=(t-v)*(p-d),_=y-m;if(0===y||0===m||y>0!=m>0)return _;var x=Math.abs(y+m);return Math.abs(_)>=o*x?_:-function(t,i,o,g,p,v,d){var y,m,_,x,E,k,b,w,I,N,S,M,L,P,C,T,O,R,A=t-p,D=o-p,F=i-v,q=g-v;E=(C=(w=A-(b=(k=e*A)-(k-A)))*(N=q-(I=(k=e*q)-(k-q)))-((P=A*q)-b*I-w*I-b*N))-(S=C-(O=(w=F-(b=(k=e*F)-(k-F)))*(N=D-(I=(k=e*D)-(k-D)))-((T=F*D)-b*I-w*I-b*N))),u[0]=C-(S+E)+(E-O),E=(L=P-((M=P+S)-(E=M-P))+(S-E))-(S=L-T),u[1]=L-(S+E)+(E-T),E=(R=M+S)-M,u[2]=M-(R-E)+(S-E),u[3]=R;var V=function(t,e){for(var n=e[0],r=1;r<t;r++)n+=e[r];return n}(4,u),G=s*d;if(V>=G||-V>=G)return V;if(y=t-(A+(E=t-A))+(E-p),_=o-(D+(E=o-D))+(E-p),m=i-(F+(E=i-F))+(E-v),x=g-(q+(E=g-q))+(E-v),0===y&&0===m&&0===_&&0===x)return V;if(G=a*d+n*Math.abs(V),(V+=A*x+q*y-(F*_+D*m))>=G||-V>=G)return V;E=(C=(w=y-(b=(k=e*y)-(k-y)))*(N=q-(I=(k=e*q)-(k-q)))-((P=y*q)-b*I-w*I-b*N))-(S=C-(O=(w=m-(b=(k=e*m)-(k-m)))*(N=D-(I=(k=e*D)-(k-D)))-((T=m*D)-b*I-w*I-b*N))),f[0]=C-(S+E)+(E-O),E=(L=P-((M=P+S)-(E=M-P))+(S-E))-(S=L-T),f[1]=L-(S+E)+(E-T),E=(R=M+S)-M,f[2]=M-(R-E)+(S-E),f[3]=R;var B=r(4,u,4,f,l);E=(C=(w=A-(b=(k=e*A)-(k-A)))*(N=x-(I=(k=e*x)-(k-x)))-((P=A*x)-b*I-w*I-b*N))-(S=C-(O=(w=F-(b=(k=e*F)-(k-F)))*(N=_-(I=(k=e*_)-(k-_)))-((T=F*_)-b*I-w*I-b*N))),f[0]=C-(S+E)+(E-O),E=(L=P-((M=P+S)-(E=M-P))+(S-E))-(S=L-T),f[1]=L-(S+E)+(E-T),E=(R=M+S)-M,f[2]=M-(R-E)+(S-E),f[3]=R;var Y=r(B,l,4,f,h);E=(C=(w=y-(b=(k=e*y)-(k-y)))*(N=x-(I=(k=e*x)-(k-x)))-((P=y*x)-b*I-w*I-b*N))-(S=C-(O=(w=m-(b=(k=e*m)-(k-m)))*(N=_-(I=(k=e*_)-(k-_)))-((T=m*_)-b*I-w*I-b*N))),f[0]=C-(S+E)+(E-O),E=(L=P-((M=P+S)-(E=M-P))+(S-E))-(S=L-T),f[1]=L-(S+E)+(E-T),E=(R=M+S)-M,f[2]=M-(R-E)+(S-E),f[3]=R;var z=r(Y,h,4,f,c);return c[z-1]}(t,i,g,p,v,d,x)},t.orient2dfast=function(t,e,n,r,i,o){return(e-o)*(n-i)-(t-i)*(r-o)},Object.defineProperty(t,"__esModule",{value:!0})}(e)}(0,Li.exports)),Li.exports}var Ci=function(){if(Mi)return vi.exports;Mi=1;var t=di,e=wi,n=Ni(),r=Pi().orient2d;function i(e,r,i){r=Math.max(0,void 0===r?2:r),i=i||0;var s=function(t){for(var e=t[0],r=t[0],i=t[0],o=t[0],s=0;s<t.length;s++){var a=t[s];a[0]<e[0]&&(e=a),a[0]>i[0]&&(i=a),a[1]<r[1]&&(r=a),a[1]>o[1]&&(o=a)}var u=[e,r,i,o],l=u.slice();for(s=0;s<t.length;s++)n(t[s],u)||l.push(t[s]);return function(t){t.sort(d);for(var e=[],n=0;n<t.length;n++){for(;e.length>=2&&h(e[e.length-2],e[e.length-1],t[n])<=0;)e.pop();e.push(t[n])}for(var r=[],i=t.length-1;i>=0;i--){for(;r.length>=2&&h(r[r.length-2],r[r.length-1],t[i])<=0;)r.pop();r.push(t[i])}return r.pop(),e.pop(),e.concat(r)}(l)}(e),a=new t(16);a.toBBox=function(t){return{minX:t[0],minY:t[1],maxX:t[0],maxY:t[1]}},a.compareMinX=function(t,e){return t[0]-e[0]},a.compareMinY=function(t,e){return t[1]-e[1]},a.load(e);for(var u,l=[],p=0;p<s.length;p++){var v=s[p];a.remove(v),u=f(v,u),l.push(u)}var y=new t(16);for(p=0;p<l.length;p++)y.insert(c(l[p]));for(var m=r*r,_=i*i;l.length;){var x=l.shift(),E=x.p,k=x.next.p,b=g(E,k);if(!(b<_)){var w=b/m;(v=o(a,x.prev.p,E,k,x.next.next.p,w,y))&&Math.min(g(v,E),g(v,k))<=w&&(l.push(x),l.push(f(v,x)),a.remove(v),y.remove(x),y.insert(c(x)),y.insert(c(x.next)))}}x=u;var I=[];do{I.push(x.p),x=x.next}while(x!==u);return I.push(x.p),I}function o(t,n,r,i,o,u,h){for(var c=new e([],s),f=t.data;f;){for(var g=0;g<f.children.length;g++){var v=f.children[g],d=f.leaf?p(v,r,i):a(r,i,v);d>u||c.push({node:v,dist:d})}for(;c.length&&!c.peek().node.children;){var y=c.pop(),m=y.node,_=p(m,n,r),x=p(m,i,o);if(y.dist<_&&y.dist<x&&l(r,m,h)&&l(i,m,h))return m}(f=c.pop())&&(f=f.node)}return null}function s(t,e){return t.dist-e.dist}function a(t,e,n){if(u(t,n)||u(e,n))return 0;var r=v(t[0],t[1],e[0],e[1],n.minX,n.minY,n.maxX,n.minY);if(0===r)return 0;var i=v(t[0],t[1],e[0],e[1],n.minX,n.minY,n.minX,n.maxY);if(0===i)return 0;var o=v(t[0],t[1],e[0],e[1],n.maxX,n.minY,n.maxX,n.maxY);if(0===o)return 0;var s=v(t[0],t[1],e[0],e[1],n.minX,n.maxY,n.maxX,n.maxY);return 0===s?0:Math.min(r,i,o,s)}function u(t,e){return t[0]>=e.minX&&t[0]<=e.maxX&&t[1]>=e.minY&&t[1]<=e.maxY}function l(t,e,n){for(var r,i,o,s,a=Math.min(t[0],e[0]),u=Math.min(t[1],e[1]),l=Math.max(t[0],e[0]),c=Math.max(t[1],e[1]),f=n.search({minX:a,minY:u,maxX:l,maxY:c}),g=0;g<f.length;g++)if(r=f[g].p,i=f[g].next.p,o=t,r!==(s=e)&&i!==o&&h(r,i,o)>0!=h(r,i,s)>0&&h(o,s,r)>0!=h(o,s,i)>0)return!1;return!0}function h(t,e,n){return r(t[0],t[1],e[0],e[1],n[0],n[1])}function c(t){var e=t.p,n=t.next.p;return t.minX=Math.min(e[0],n[0]),t.minY=Math.min(e[1],n[1]),t.maxX=Math.max(e[0],n[0]),t.maxY=Math.max(e[1],n[1]),t}function f(t,e){var n={p:t,prev:null,next:null,minX:0,minY:0,maxX:0,maxY:0};return e?(n.next=e.next,n.prev=e,e.next.prev=n,e.next=n):(n.prev=n,n.next=n),n}function g(t,e){var n=t[0]-e[0],r=t[1]-e[1];return n*n+r*r}function p(t,e,n){var r=e[0],i=e[1],o=n[0]-r,s=n[1]-i;if(0!==o||0!==s){var a=((t[0]-r)*o+(t[1]-i)*s)/(o*o+s*s);a>1?(r=n[0],i=n[1]):a>0&&(r+=o*a,i+=s*a)}return(o=t[0]-r)*o+(s=t[1]-i)*s}function v(t,e,n,r,i,o,s,a){var u,l,h,c,f=n-t,g=r-e,p=s-i,v=a-o,d=t-i,y=e-o,m=f*f+g*g,_=f*p+g*v,x=p*p+v*v,E=f*d+g*y,k=p*d+v*y,b=m*x-_*_,w=b,I=b;0===b?(l=0,w=1,c=k,I=x):(c=m*k-_*E,(l=_*k-x*E)<0?(l=0,c=k,I=x):l>w&&(l=w,c=k+_,I=x)),c<0?(c=0,-E<0?l=0:-E>m?l=w:(l=-E,w=m)):c>I&&(c=I,-E+_<0?l=0:-E+_>m?l=w:(l=-E+_,w=m));var N=(1-(h=0===c?0:c/I))*i+h*s-((1-(u=0===l?0:l/w))*t+u*n),S=(1-h)*o+h*a-((1-u)*e+u*r);return N*N+S*S}function d(t,e){return t[0]===e[0]?t[1]-e[1]:t[0]-e[0]}return e.default&&(e=e.default),vi.exports=i,vi.exports.default=i,vi.exports}(),Ti=mn(Ci);function Oi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.concavity=e.concavity||1/0;var n=[];if(ct(t,(function(t){n.push([t[0],t[1]])})),!n.length)return null;var r=Ti(n,e.concavity);return r.length>3?S([r]):null}function Ri(t,e){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.steps||64,i=n.properties?n.properties:!Array.isArray(t)&&"Feature"===t.type&&t.properties?t.properties:{},o=[],s=0;s<r;s++)o.push(at(t,e,-360*s/r,n).geometry.coordinates);return o.push(o[0]),S([o],i)}function Ai(t){if(!t)throw new Error("geojson is required");switch(t.type){case"Feature":return Di(t);case"FeatureCollection":return function(t){var e={type:"FeatureCollection"};return Object.keys(t).forEach((function(n){switch(n){case"type":case"features":return;default:e[n]=t[n]}})),e.features=t.features.map((function(t){return Di(t)})),e}(t);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return qi(t);default:throw new Error("unknown GeoJSON type")}}function Di(t){var e={type:"Feature"};return Object.keys(t).forEach((function(n){switch(n){case"type":case"properties":case"geometry":return;default:e[n]=t[n]}})),e.properties=Fi(t.properties),null==t.geometry?e.geometry=null:e.geometry=qi(t.geometry),e}function Fi(t){var e={};return t?(Object.keys(t).forEach((function(n){var r=t[n];"object"===m(r)?null===r?e[n]=null:Array.isArray(r)?e[n]=r.map((function(t){return t})):e[n]=Fi(r):e[n]=r})),e):e}function qi(t){var e={type:t.type};return t.bbox&&(e.bbox=t.bbox),"GeometryCollection"===t.type?(e.geometries=t.geometries.map((function(t){return qi(t)})),e):(e.coordinates=Vi(t.coordinates),e)}function Vi(t){var e=t;return"object"!==m(e[0])?e.slice():e.map((function(t){return Vi(t)}))}function Gi(t,e){if(!t)throw new Error("geojson is required");if("FeatureCollection"!==t.type)throw new Error("geojson must be a FeatureCollection");if(null==e)throw new Error("filter is required");var n=[];return vt(t,(function(t){ji(t.properties,e)&&n.push(t)})),C(n)}function Bi(t,e,n){if(!t)throw new Error("geojson is required");if("FeatureCollection"!==t.type)throw new Error("geojson must be a FeatureCollection");if(null==e)throw new Error("property is required");for(var r=zi(t,e),i=Object.keys(r),o=0;o<i.length;o++){for(var s=i[o],a=r[s],u=[],l=0;l<a.length;l++)u.push(t.features[a[l]]);n(C(u),s,o)}}function Yi(t,e,n,r){var i=r;return Bi(t,e,(function(t,e,o){i=0===o&&void 0===r?t:n(i,t,e,o)})),i}function zi(t,e){var n={};return vt(t,(function(t,r){var i=t.properties||{};if(Object.prototype.hasOwnProperty.call(i,String(e))){var o=i[e];Object.prototype.hasOwnProperty.call(n,o)?n[o].push(r):n[o]=[r]}})),n}function ji(t,e){if(void 0===t)return!1;var n=m(e);if("number"===n||"string"===n)return Object.prototype.hasOwnProperty.call(t,e);if(Array.isArray(e)){for(var r=0;r<e.length;r++)if(!ji(t,e[r]))return!1;return!0}return Xi(t,e)}function Xi(t,e){for(var n=Object.keys(e),r=0;r<n.length;r++){var i=n[r];if(t[i]!==e[i])return!1}return!0}function Ui(t,e){if(!e)return{};if(!e.length)return{};for(var n={},r=0;r<e.length;r++){var i=e[r];Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i])}return n}var Zi,Hi,Wi,Ji,Ki,Qi,$i=Object.freeze({__proto__:null,applyFilter:ji,clusterEach:Bi,clusterReduce:Yi,createBins:zi,filterProperties:Ui,getCluster:Gi,propertiesContainsFilter:Xi}),to=qe;function eo(){return Hi||(Hi=1,Zi={eudist:function(t,e,n){for(var r=t.length,i=0,o=0;o<r;o++){var s=(t[o]||0)-(e[o]||0);i+=s*s}return n?Math.sqrt(i):i},mandist:function(t,e,n){for(var r=t.length,i=0,o=0;o<r;o++)i+=Math.abs((t[o]||0)-(e[o]||0));return n?Math.sqrt(i):i},dist:function(t,e,n){var r=Math.abs(t-e);return n?r:r*r}}),Zi}var no=function(){if(Qi)return Ki;Qi=1;var t=eo(),e=function(){if(Ji)return Wi;Ji=1;var t=eo(),e=t.eudist,n=t.dist;return Wi={kmrand:function(t,e){for(var n={},r=[],i=e<<2,o=t.length,s=t[0].length>0;r.length<e&&i-- >0;){var a=t[Math.floor(Math.random()*o)],u=s?a.join("_"):""+a;n[u]||(n[u]=!0,r.push(a))}if(r.length<e)throw new Error("Error initializating clusters");return r},kmpp:function(t,r){var i=t[0].length?e:n,o=[],s=t.length,a=t[0].length>0,u=t[Math.floor(Math.random()*s)];for(a&&u.join("_"),o.push(u);o.length<r;){for(var l=[],h=o.length,c=0,f=[],g=0;g<s;g++){for(var p=1/0,v=0;v<h;v++){var d=i(t[g],o[v]);d<=p&&(p=d)}l[g]=p}for(var y=0;y<s;y++)c+=l[y];for(var m=0;m<s;m++)f[m]={i:m,v:t[m],pr:l[m]/c,cs:0};f.sort((function(t,e){return t.pr-e.pr})),f[0].cs=f[0].pr;for(var _=1;_<s;_++)f[_].cs=f[_-1].cs+f[_].pr;for(var x=Math.random(),E=0;E<s-1&&f[E++].cs<x;);o.push(f[E-1].v)}return o}},Wi}(),n=t.eudist;t.mandist,t.dist;var r=e.kmrand,i=e.kmpp;function o(t,e,n){n=n||[];for(var r=0;r<t;r++)n[r]=e;return n}return Ki=function(t,e,s,a){var u=[],l=[],h=[],c=[],f=!1,g=a||1e4,p=t.length,v=t[0].length,d=v>0,y=[];if(s)u="kmrand"==s?r(t,e):"kmpp"==s?i(t,e):s;else for(var m={};u.length<e;){var _=Math.floor(Math.random()*p);m[_]||(m[_]=!0,u.push(t[_]))}do{o(e,0,y);for(var x=0;x<p;x++){for(var E=1/0,k=0,b=0;b<e;b++){(c=d?n(t[x],u[b]):Math.abs(t[x]-u[b]))<=E&&(E=c,k=b)}h[x]=k,y[k]++}for(var w=[],I=(l=[],0);I<e;I++)w[I]=d?o(v,0,w[I]):0,l[I]=u[I];if(d){for(var N=0;N<e;N++)u[N]=[];for(var S=0;S<p;S++)for(var M=w[h[S]],L=t[S],P=0;P<v;P++)M[P]+=L[P];f=!0;for(var C=0;C<e;C++){for(var T=u[C],O=w[C],R=l[C],A=y[C],D=0;D<v;D++)T[D]=O[D]/A||0;if(f)for(var F=0;F<v;F++)if(R[F]!=T[F]){f=!1;break}}}else{for(var q=0;q<p;q++){w[h[q]]+=t[q]}for(var V=0;V<e;V++)u[V]=w[V]/y[V]||0;f=!0;for(var G=0;G<e;G++)if(l[G]!=u[G]){f=!1;break}}f=f||--g<=0}while(!f);return{it:1e4-g,k:e,idxs:h,centroids:u}},Ki}(),ro=mn(no);var io=qe;function oo(t,e){var n=!1;return C(function(t){if(t.length<3)return[];t.sort(ao);var e,n,r,i,o,s,a=t.length-1,u=t[a].x,l=t[0].x,h=t[a].y,c=h,f=1e-12;for(;a--;)t[a].y<h&&(h=t[a].y),t[a].y>c&&(c=t[a].y);var g,p=l-u,v=c-h,d=p>v?p:v,y=.5*(l+u),m=.5*(c+h),_=[new so({__sentinel:!0,x:y-20*d,y:m-d},{__sentinel:!0,x:y,y:m+20*d},{__sentinel:!0,x:y+20*d,y:m-d})],x=[],E=[];a=t.length;for(;a--;){for(E.length=0,g=_.length;g--;)(p=t[a].x-_[g].x)>0&&p*p>_[g].r?(x.push(_[g]),_.splice(g,1)):p*p+(v=t[a].y-_[g].y)*v>_[g].r||(E.push(_[g].a,_[g].b,_[g].b,_[g].c,_[g].c,_[g].a),_.splice(g,1));for(uo(E),g=E.length;g;)n=E[--g],e=E[--g],r=t[a],i=n.x-e.x,o=n.y-e.y,s=2*(i*(r.y-n.y)-o*(r.x-n.x)),Math.abs(s)>f&&_.push(new so(e,n,r))}Array.prototype.push.apply(x,_),a=x.length;for(;a--;)(x[a].a.__sentinel||x[a].b.__sentinel||x[a].c.__sentinel)&&x.splice(a,1);return x}(t.features.map((function(t){var r={x:t.geometry.coordinates[0],y:t.geometry.coordinates[1]};return e?r.z=t.properties[e]:3===t.geometry.coordinates.length&&(n=!0,r.z=t.geometry.coordinates[2]),r}))).map((function(t){var e=[t.a.x,t.a.y],r=[t.b.x,t.b.y],i=[t.c.x,t.c.y],o={};return n?(e.push(t.a.z),r.push(t.b.z),i.push(t.c.z)):o={a:t.a.z,b:t.b.z,c:t.c.z},S([[e,r,i,e]],o)})))}var so=s((function t(e,n,r){i(this,t),this.a=e,this.b=n,this.c=r;var o,s,a=n.x-e.x,u=n.y-e.y,l=r.x-e.x,h=r.y-e.y,c=a*(e.x+n.x)+u*(e.y+n.y),f=l*(e.x+r.x)+h*(e.y+r.y),g=2*(a*(r.y-n.y)-u*(r.x-n.x));this.x=(h*c-u*f)/g,this.y=(a*f-l*c)/g,o=this.x-e.x,s=this.y-e.y,this.r=o*o+s*s}));function ao(t,e){return e.x-t.x}function uo(t){var e,n,r,i,o,s=t.length;t:for(;s;)for(n=t[--s],e=t[--s],r=s;r;)if(o=t[--r],e===(i=t[--r])&&n===o||e===o&&n===i){t.splice(s,2),t.splice(r,2),s-=2;continue t}}function lo(t){return t}function ho(t,e){var n=function(t){if(null==t)return lo;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(t,a){a||(e=n=0);var u=2,l=t.length,h=new Array(l);for(h[0]=(e+=t[0])*r+o,h[1]=(n+=t[1])*i+s;u<l;)h[u]=t[u],++u;return h}}(t.transform),r=t.arcs;function i(t,e){e.length&&e.pop();for(var i=r[t<0?~t:t],o=0,s=i.length;o<s;++o)e.push(n(i[o],o));t<0&&function(t,e){for(var n,r=t.length,i=r-e;i<--r;)n=t[i],t[i++]=t[r],t[r]=n}(e,s)}function o(t){return n(t)}function s(t){for(var e=[],n=0,r=t.length;n<r;++n)i(t[n],e);return e.length<2&&e.push(e[0]),e}function a(t){for(var e=s(t);e.length<4;)e.push(e[0]);return e}function u(t){return t.map(a)}return function t(e){var n,r=e.type;switch(r){case"GeometryCollection":return{type:r,geometries:e.geometries.map(t)};case"Point":n=o(e.coordinates);break;case"MultiPoint":n=e.coordinates.map(o);break;case"LineString":n=s(e.arcs);break;case"MultiLineString":n=e.arcs.map(s);break;case"Polygon":n=u(e.arcs);break;case"MultiPolygon":n=e.arcs.map(u);break;default:return null}return{type:r,coordinates:n}}(e)}function co(t,e){var n={},r={},i={},o=[],s=-1;function a(t,e){for(var r in t){var i=t[r];delete e[i.start],delete i.start,delete i.end,i.forEach((function(t){n[t<0?~t:t]=1})),o.push(i)}}return e.forEach((function(n,r){var i,o=t.arcs[n<0?~n:n];o.length<3&&!o[1][0]&&!o[1][1]&&(i=e[++s],e[s]=n,e[r]=i)})),e.forEach((function(e){var n,o,s=function(e){var n,r=t.arcs[e<0?~e:e],i=r[0];t.transform?(n=[0,0],r.forEach((function(t){n[0]+=t[0],n[1]+=t[1]}))):n=r[r.length-1];return e<0?[n,i]:[i,n]}(e),a=s[0],u=s[1];if(n=i[a])if(delete i[n.end],n.push(e),n.end=u,o=r[u]){delete r[o.start];var l=o===n?n:n.concat(o);r[l.start=n.start]=i[l.end=o.end]=l}else r[n.start]=i[n.end]=n;else if(n=r[u])if(delete r[n.start],n.unshift(e),n.start=a,o=i[a]){delete i[o.end];var h=o===n?n:o.concat(n);r[h.start=o.start]=i[h.end=n.end]=h}else r[n.start]=i[n.end]=n;else r[(n=[e]).start=a]=i[n.end=u]=n})),a(i,r),a(r,i),e.forEach((function(t){n[t<0?~t:t]||o.push([t])})),o}function fo(t){return ho(t,go.apply(this,arguments))}function go(t,e){var n={},r=[],i=[];function o(t){t.forEach((function(e){e.forEach((function(e){(n[e=e<0?~e:e]||(n[e]=[])).push(t)}))})),r.push(t)}function s(e){return function(t){for(var e,n=-1,r=t.length,i=t[r-1],o=0;++n<r;)e=i,i=t[n],o+=e[0]*i[1]-e[1]*i[0];return Math.abs(o)}(ho(t,{type:"Polygon",arcs:[e]}).coordinates[0])}return e.forEach((function t(e){switch(e.type){case"GeometryCollection":e.geometries.forEach(t);break;case"Polygon":o(e.arcs);break;case"MultiPolygon":e.arcs.forEach(o)}})),r.forEach((function(t){if(!t._){var e=[],r=[t];for(t._=1,i.push(e);t=r.pop();)e.push(t),t.forEach((function(t){t.forEach((function(t){n[t<0?~t:t].forEach((function(t){t._||(t._=1,r.push(t))}))}))}))}})),r.forEach((function(t){delete t._})),{type:"MultiPolygon",arcs:i.map((function(e){var r,i=[];if(e.forEach((function(t){t.forEach((function(t){t.forEach((function(t){n[t<0?~t:t].length<2&&i.push(t)}))}))})),(r=(i=co(t,i)).length)>1)for(var o,a,u=1,l=s(i[0]);u<r;++u)(o=s(i[u]))>l&&(a=i[0],i[0]=i[u],i[u]=a,l=o);return i})).filter((function(t){return t.length>0}))}}var po=Object.prototype.hasOwnProperty;function vo(t,e,n,r,i,o){3===arguments.length&&(r=o=Array,i=null);for(var s=new r(t=1<<Math.max(4,Math.ceil(Math.log(t)/Math.LN2))),a=new o(t),u=t-1,l=0;l<t;++l)s[l]=i;return{set:function(r,o){for(var l=e(r)&u,h=s[l],c=0;h!=i;){if(n(h,r))return a[l]=o;if(++c>=t)throw new Error("full hashmap");h=s[l=l+1&u]}return s[l]=r,a[l]=o,o},maybeSet:function(r,o){for(var l=e(r)&u,h=s[l],c=0;h!=i;){if(n(h,r))return a[l];if(++c>=t)throw new Error("full hashmap");h=s[l=l+1&u]}return s[l]=r,a[l]=o,o},get:function(r,o){for(var l=e(r)&u,h=s[l],c=0;h!=i;){if(n(h,r))return a[l];if(++c>=t)break;h=s[l=l+1&u]}return o},keys:function(){for(var t=[],e=0,n=s.length;e<n;++e){var r=s[e];r!=i&&t.push(r)}return t}}}function yo(t,e){return t[0]===e[0]&&t[1]===e[1]}var mo=new ArrayBuffer(16),_o=new Float64Array(mo),xo=new Uint32Array(mo);function Eo(t){_o[0]=t[0],_o[1]=t[1];var e=xo[0]^xo[1];return 2147483647&(e=e<<5^e>>7^xo[2]^xo[3])}function ko(t){var e,n,r,i,o=t.coordinates,s=t.lines,a=t.rings,u=function(){for(var t=vo(1.4*o.length,E,k,Int32Array,-1,Int32Array),e=new Int32Array(o.length),n=0,r=o.length;n<r;++n)e[n]=t.maybeSet(n,n);return e}(),l=new Int32Array(o.length),h=new Int32Array(o.length),c=new Int32Array(o.length),f=new Int8Array(o.length),g=0;for(e=0,n=o.length;e<n;++e)l[e]=h[e]=c[e]=-1;for(e=0,n=s.length;e<n;++e){var p=s[e],v=p[0],d=p[1];for(r=u[v],i=u[++v],++g,f[r]=1;++v<=d;)x(e,r,r=i,i=u[v]);++g,f[i]=1}for(e=0,n=o.length;e<n;++e)l[e]=-1;for(e=0,n=a.length;e<n;++e){var y=a[e],m=y[0]+1,_=y[1];for(x(e,u[_-1],r=u[m-1],i=u[m]);++m<=_;)x(e,r,r=i,i=u[m])}function x(t,e,n,r){if(l[n]!==t){l[n]=t;var i=h[n];if(i>=0){var o=c[n];i===e&&o===r||i===r&&o===e||(++g,f[n]=1)}else h[n]=e,c[n]=r}}function E(t){return Eo(o[t])}function k(t,e){return yo(o[t],o[e])}l=h=c=null;var b,w=function(t,e,n,r,i){3===arguments.length&&(r=Array,i=null);for(var o=new r(t=1<<Math.max(4,Math.ceil(Math.log(t)/Math.LN2))),s=t-1,a=0;a<t;++a)o[a]=i;return{add:function(r){for(var a=e(r)&s,u=o[a],l=0;u!=i;){if(n(u,r))return!0;if(++l>=t)throw new Error("full hashset");u=o[a=a+1&s]}return o[a]=r,!0},has:function(r){for(var a=e(r)&s,u=o[a],l=0;u!=i;){if(n(u,r))return!0;if(++l>=t)break;u=o[a=a+1&s]}return!1},values:function(){for(var t=[],e=0,n=o.length;e<n;++e){var r=o[e];r!=i&&t.push(r)}return t}}}(1.4*g,Eo,yo);for(e=0,n=o.length;e<n;++e)f[b=u[e]]&&w.add(o[b]);return w}function bo(t,e,n,r){wo(t,e,n),wo(t,e,e+r),wo(t,e+r,n)}function wo(t,e,n){for(var r,i=e+(n---e>>1);e<i;++e,--n)r=t[e],t[e]=t[n],t[n]=r}function Io(t){var e,n,r={};for(e in t)r[e]=null==(n=t[e])?{type:null}:("FeatureCollection"===n.type?No:"Feature"===n.type?So:Mo)(n);return r}function No(t){var e={type:"GeometryCollection",geometries:t.features.map(So)};return null!=t.bbox&&(e.bbox=t.bbox),e}function So(t){var e,n=Mo(t.geometry);for(e in null!=t.id&&(n.id=t.id),null!=t.bbox&&(n.bbox=t.bbox),t.properties){n.properties=t.properties;break}return n}function Mo(t){if(null==t)return{type:null};var e="GeometryCollection"===t.type?{type:"GeometryCollection",geometries:t.geometries.map(Mo)}:"Point"===t.type||"MultiPoint"===t.type?{type:t.type,coordinates:t.coordinates}:{type:t.type,arcs:t.coordinates};return null!=t.bbox&&(e.bbox=t.bbox),e}function Lo(t,e){var n=function(t){var e=1/0,n=1/0,r=-1/0,i=-1/0;function o(t){null!=t&&po.call(s,t.type)&&s[t.type](t)}var s={GeometryCollection:function(t){t.geometries.forEach(o)},Point:function(t){a(t.coordinates)},MultiPoint:function(t){t.coordinates.forEach(a)},LineString:function(t){u(t.arcs)},MultiLineString:function(t){t.arcs.forEach(u)},Polygon:function(t){t.arcs.forEach(u)},MultiPolygon:function(t){t.arcs.forEach(l)}};function a(t){var o=t[0],s=t[1];o<e&&(e=o),o>r&&(r=o),s<n&&(n=s),s>i&&(i=s)}function u(t){t.forEach(a)}function l(t){t.forEach(u)}for(var h in t)o(t[h]);return r>=e&&i>=n?[e,n,r,i]:void 0}(t=Io(t)),r=function(t){var e,n,r,i,o=t.coordinates,s=t.lines,a=t.rings,u=s.length+a.length;for(delete t.lines,delete t.rings,r=0,i=s.length;r<i;++r)for(e=s[r];e=e.next;)++u;for(r=0,i=a.length;r<i;++r)for(n=a[r];n=n.next;)++u;var l=vo(2*u*1.4,Eo,yo),h=t.arcs=[];for(r=0,i=s.length;r<i;++r){e=s[r];do{c(e)}while(e=e.next)}for(r=0,i=a.length;r<i;++r)if((n=a[r]).next)do{c(n)}while(n=n.next);else f(n);function c(t){var e,n,r,i,s,a,u,c;if(r=l.get(e=o[t[0]]))for(u=0,c=r.length;u<c;++u)if(g(i=r[u],t))return t[0]=i[0],void(t[1]=i[1]);if(s=l.get(n=o[t[1]]))for(u=0,c=s.length;u<c;++u)if(p(a=s[u],t))return t[1]=a[0],void(t[0]=a[1]);r?r.push(t):l.set(e,[t]),s?s.push(t):l.set(n,[t]),h.push(t)}function f(t){var e,n,r,i,s;if(n=l.get(o[t[0]]))for(i=0,s=n.length;i<s;++i){if(v(r=n[i],t))return t[0]=r[0],void(t[1]=r[1]);if(d(r,t))return t[0]=r[1],void(t[1]=r[0])}if(n=l.get(e=o[t[0]+y(t)]))for(i=0,s=n.length;i<s;++i){if(v(r=n[i],t))return t[0]=r[0],void(t[1]=r[1]);if(d(r,t))return t[0]=r[1],void(t[1]=r[0])}n?n.push(t):l.set(e,[t]),h.push(t)}function g(t,e){var n=t[0],r=e[0],i=t[1];if(n-i!=r-e[1])return!1;for(;n<=i;++n,++r)if(!yo(o[n],o[r]))return!1;return!0}function p(t,e){var n=t[0],r=e[0],i=t[1],s=e[1];if(n-i!=r-s)return!1;for(;n<=i;++n,--s)if(!yo(o[n],o[s]))return!1;return!0}function v(t,e){var n=t[0],r=e[0],i=t[1]-n;if(i!==e[1]-r)return!1;for(var s=y(t),a=y(e),u=0;u<i;++u)if(!yo(o[n+(u+s)%i],o[r+(u+a)%i]))return!1;return!0}function d(t,e){var n=t[0],r=e[0],i=t[1],s=e[1],a=i-n;if(a!==s-r)return!1;for(var u=y(t),l=a-y(e),h=0;h<a;++h)if(!yo(o[n+(h+u)%a],o[s-(h+l)%a]))return!1;return!0}function y(t){for(var e=t[0],n=t[1],r=e,i=r,s=o[r];++r<n;){var a=o[r];(a[0]<s[0]||a[0]===s[0]&&a[1]<s[1])&&(i=r,s=a)}return i-e}return t}(function(t){var e,n,r,i=ko(t),o=t.coordinates,s=t.lines,a=t.rings;for(n=0,r=s.length;n<r;++n)for(var u=s[n],l=u[0],h=u[1];++l<h;)i.has(o[l])&&(e={0:l,1:u[1]},u[1]=l,u=u.next=e);for(n=0,r=a.length;n<r;++n)for(var c=a[n],f=c[0],g=f,p=c[1],v=i.has(o[f]);++g<p;)i.has(o[g])&&(v?(e={0:g,1:c[1]},c[1]=g,c=c.next=e):(bo(o,f,p,p-g),o[p]=o[f],v=!0,g=f));return t}(function(t){var e=-1,n=[],r=[],i=[];function o(t){t&&po.call(s,t.type)&&s[t.type](t)}var s={GeometryCollection:function(t){t.geometries.forEach(o)},LineString:function(t){t.arcs=a(t.arcs)},MultiLineString:function(t){t.arcs=t.arcs.map(a)},Polygon:function(t){t.arcs=t.arcs.map(u)},MultiPolygon:function(t){t.arcs=t.arcs.map(l)}};function a(t){for(var r=0,o=t.length;r<o;++r)i[++e]=t[r];var s={0:e-o+1,1:e};return n.push(s),s}function u(t){for(var n=0,o=t.length;n<o;++n)i[++e]=t[n];var s={0:e-o+1,1:e};return r.push(s),s}function l(t){return t.map(u)}for(var h in t)o(t[h]);return{type:"Topology",coordinates:i,lines:n,rings:r,objects:t}}(t))),i=r.coordinates,o=vo(1.4*r.arcs.length,Po,Co);function s(t){t&&po.call(a,t.type)&&a[t.type](t)}t=r.objects,r.bbox=n,r.arcs=r.arcs.map((function(t,e){return o.set(t,e),i.slice(t[0],t[1]+1)})),delete r.coordinates,i=null;var a={GeometryCollection:function(t){t.geometries.forEach(s)},LineString:function(t){t.arcs=u(t.arcs)},MultiLineString:function(t){t.arcs=t.arcs.map(u)},Polygon:function(t){t.arcs=t.arcs.map(u)},MultiPolygon:function(t){t.arcs=t.arcs.map(l)}};function u(t){var e=[];do{var n=o.get(t);e.push(t[0]<t[1]?n:~n)}while(t=t.next);return e}function l(t){return t.map(u)}for(var h in t)s(t[h]);return r}function Po(t){var e,n=t[0],r=t[1];return r<n&&(e=n,n=r,r=e),n+31*r}function Co(t,e){var n,r=t[0],i=t[1],o=e[0],s=e[1];return i<r&&(n=r,r=i,i=n),s<o&&(n=o,o=s,s=n),r===o&&i===s}function To(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.mutate;if("FeatureCollection"!==it(t))throw new Error("geojson must be a FeatureCollection");if(!t.features.length)throw new Error("geojson is empty");!1!==n&&void 0!==n||(t=Ai(t));var r=[],i=It(t,(function(t,e){var n=function(t,e){var n,r=t.geometry.coordinates,i=e.geometry.coordinates,o=Oo(r[0]),s=Oo(r[r.length-1]),a=Oo(i[0]),u=Oo(i[i.length-1]);if(o===u)n=i.concat(r.slice(1));else if(a===s)n=r.concat(i.slice(1));else if(o===a)n=r.slice(1).reverse().concat(i);else{if(s!==u)return null;n=r.concat(i.reverse().slice(1))}return L(n)}(t,e);return n||(r.push(t),e)}));return i&&r.push(i),r.length?1===r.length?r[0]:T(r.map((function(t){return t.coordinates}))):null}function Oo(t){return t[0].toString()+","+t[1].toString()}function Ro(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.mutate;if("FeatureCollection"!==it(t))throw new Error("geojson must be a FeatureCollection");if(!t.features.length)throw new Error("geojson is empty");!1!==n&&void 0!==n||(t=Ai(t));var r=function(t){var e={};xt(t,(function(t){e[t.geometry.type]=!0}));var n=Object.keys(e);if(1===n.length)return n[0];return null}(t);if(!r)throw new Error("geojson must be homogenous");var i=t;switch(r){case"LineString":return To(i,e);case"Polygon":return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("FeatureCollection"!==it(t))throw new Error("geojson must be a FeatureCollection");if(!t.features.length)throw new Error("geojson is empty");!1!==e.mutate&&void 0!==e.mutate||(t=Ai(t));var n=[];xt(t,(function(t){n.push(t.geometry)}));var r=Lo({geoms:A(n).geometry});return fo(r,r.objects.geoms.geometries)}(i,e);default:throw new Error(r+" is not supported")}}var Ao=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Do=Math.ceil,Fo=Math.floor,qo="[BigNumber Error] ",Vo=qo+"Number primitive has more than 15 significant digits: ",Go=1e14,Bo=14,Yo=9007199254740991,zo=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],jo=1e7,Xo=1e9;function Uo(t){var e=0|t;return t>0||t===e?e:e-1}function Zo(t){for(var e,n,r=1,i=t.length,o=t[0]+"";r<i;){for(e=t[r++]+"",n=Bo-e.length;n--;e="0"+e);o+=e}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function Ho(t,e){var n,r,i=t.c,o=e.c,s=t.s,a=e.s,u=t.e,l=e.e;if(!s||!a)return null;if(n=i&&!i[0],r=o&&!o[0],n||r)return n?r?0:-a:s;if(s!=a)return s;if(n=s<0,r=u==l,!i||!o)return r?0:!i^n?1:-1;if(!r)return u>l^n?1:-1;for(a=(u=i.length)<(l=o.length)?u:l,s=0;s<a;s++)if(i[s]!=o[s])return i[s]>o[s]^n?1:-1;return u==l?0:u>l^n?1:-1}function Wo(t,e,n,r){if(t<e||t>n||t!==Fo(t))throw Error(qo+(r||"Argument")+("number"==typeof t?t<e||t>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function Jo(t){var e=t.c.length-1;return Uo(t.e/Bo)==e&&t.c[e]%2!=0}function Ko(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function Qo(t,e,n){var r,i;if(e<0){for(i=n+".";++e;i+=n);t=i+t}else if(++e>(r=t.length)){for(i=n,e-=r;--e;i+=n);t+=i}else e<r&&(t=t.slice(0,e)+"."+t.slice(e));return t}var $o=function t(e){var n,r,i,o,s,a,u,l,h,c,f=S.prototype={constructor:S,toString:null,valueOf:null},g=new S(1),p=20,v=4,d=-7,y=21,_=-1e7,x=1e7,E=!1,k=1,b=0,w={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},I="0123456789abcdefghijklmnopqrstuvwxyz",N=!0;function S(t,e){var n,o,s,a,u,l,h,c,f=this;if(!(f instanceof S))return new S(t,e);if(null==e){if(t&&!0===t._isBigNumber)return f.s=t.s,void(!t.c||t.e>x?f.c=f.e=null:t.e<_?f.c=[f.e=0]:(f.e=t.e,f.c=t.c.slice()));if((l="number"==typeof t)&&0*t==0){if(f.s=1/t<0?(t=-t,-1):1,t===~~t){for(a=0,u=t;u>=10;u/=10,a++);return void(a>x?f.c=f.e=null:(f.e=a,f.c=[t]))}c=String(t)}else{if(!Ao.test(c=String(t)))return i(f,c,l);f.s=45==c.charCodeAt(0)?(c=c.slice(1),-1):1}(a=c.indexOf("."))>-1&&(c=c.replace(".","")),(u=c.search(/e/i))>0?(a<0&&(a=u),a+=+c.slice(u+1),c=c.substring(0,u)):a<0&&(a=c.length)}else{if(Wo(e,2,I.length,"Base"),10==e&&N)return C(f=new S(t),p+f.e+1,v);if(c=String(t),l="number"==typeof t){if(0*t!=0)return i(f,c,l,e);if(f.s=1/t<0?(c=c.slice(1),-1):1,S.DEBUG&&c.replace(/^0\.0*|\./,"").length>15)throw Error(Vo+t)}else f.s=45===c.charCodeAt(0)?(c=c.slice(1),-1):1;for(n=I.slice(0,e),a=u=0,h=c.length;u<h;u++)if(n.indexOf(o=c.charAt(u))<0){if("."==o){if(u>a){a=h;continue}}else if(!s&&(c==c.toUpperCase()&&(c=c.toLowerCase())||c==c.toLowerCase()&&(c=c.toUpperCase()))){s=!0,u=-1,a=0;continue}return i(f,String(t),l,e)}l=!1,(a=(c=r(c,e,10,f.s)).indexOf("."))>-1?c=c.replace(".",""):a=c.length}for(u=0;48===c.charCodeAt(u);u++);for(h=c.length;48===c.charCodeAt(--h););if(c=c.slice(u,++h)){if(h-=u,l&&S.DEBUG&&h>15&&(t>Yo||t!==Fo(t)))throw Error(Vo+f.s*t);if((a=a-u-1)>x)f.c=f.e=null;else if(a<_)f.c=[f.e=0];else{if(f.e=a,f.c=[],u=(a+1)%Bo,a<0&&(u+=Bo),u<h){for(u&&f.c.push(+c.slice(0,u)),h-=Bo;u<h;)f.c.push(+c.slice(u,u+=Bo));u=Bo-(c=c.slice(u)).length}else u-=h;for(;u--;c+="0");f.c.push(+c)}}else f.c=[f.e=0]}function M(t,e,n,r){var i,o,s,a,u;if(null==n?n=v:Wo(n,0,8),!t.c)return t.toString();if(i=t.c[0],s=t.e,null==e)u=Zo(t.c),u=1==r||2==r&&(s<=d||s>=y)?Ko(u,s):Qo(u,s,"0");else if(o=(t=C(new S(t),e,n)).e,a=(u=Zo(t.c)).length,1==r||2==r&&(e<=o||o<=d)){for(;a<e;u+="0",a++);u=Ko(u,o)}else if(e-=s,u=Qo(u,o,"0"),o+1>a){if(--e>0)for(u+=".";e--;u+="0");}else if((e+=o-a)>0)for(o+1==a&&(u+=".");e--;u+="0");return t.s<0&&i?"-"+u:u}function L(t,e){for(var n,r,i=1,o=new S(t[0]);i<t.length;i++)(!(r=new S(t[i])).s||(n=Ho(o,r))===e||0===n&&o.s===e)&&(o=r);return o}function P(t,e,n){for(var r=1,i=e.length;!e[--i];e.pop());for(i=e[0];i>=10;i/=10,r++);return(n=r+n*Bo-1)>x?t.c=t.e=null:n<_?t.c=[t.e=0]:(t.e=n,t.c=e),t}function C(t,e,n,r){var i,o,s,a,u,l,h,c=t.c,f=zo;if(c){t:{for(i=1,a=c[0];a>=10;a/=10,i++);if((o=e-i)<0)o+=Bo,s=e,u=c[l=0],h=Fo(u/f[i-s-1]%10);else if((l=Do((o+1)/Bo))>=c.length){if(!r)break t;for(;c.length<=l;c.push(0));u=h=0,i=1,s=(o%=Bo)-Bo+1}else{for(u=a=c[l],i=1;a>=10;a/=10,i++);h=(s=(o%=Bo)-Bo+i)<0?0:Fo(u/f[i-s-1]%10)}if(r=r||e<0||null!=c[l+1]||(s<0?u:u%f[i-s-1]),r=n<4?(h||r)&&(0==n||n==(t.s<0?3:2)):h>5||5==h&&(4==n||r||6==n&&(o>0?s>0?u/f[i-s]:0:c[l-1])%10&1||n==(t.s<0?8:7)),e<1||!c[0])return c.length=0,r?(e-=t.e+1,c[0]=f[(Bo-e%Bo)%Bo],t.e=-e||0):c[0]=t.e=0,t;if(0==o?(c.length=l,a=1,l--):(c.length=l+1,a=f[Bo-o],c[l]=s>0?Fo(u/f[i-s]%f[s])*a:0),r)for(;;){if(0==l){for(o=1,s=c[0];s>=10;s/=10,o++);for(s=c[0]+=a,a=1;s>=10;s/=10,a++);o!=a&&(t.e++,c[0]==Go&&(c[0]=1));break}if(c[l]+=a,c[l]!=Go)break;c[l--]=0,a=1}for(o=c.length;0===c[--o];c.pop());}t.e>x?t.c=t.e=null:t.e<_&&(t.c=[t.e=0])}return t}function T(t){var e,n=t.e;return null===n?t.toString():(e=Zo(t.c),e=n<=d||n>=y?Ko(e,n):Qo(e,n,"0"),t.s<0?"-"+e:e)}return S.clone=t,S.ROUND_UP=0,S.ROUND_DOWN=1,S.ROUND_CEIL=2,S.ROUND_FLOOR=3,S.ROUND_HALF_UP=4,S.ROUND_HALF_DOWN=5,S.ROUND_HALF_EVEN=6,S.ROUND_HALF_CEIL=7,S.ROUND_HALF_FLOOR=8,S.EUCLID=9,S.config=S.set=function(t){var e,n;if(null!=t){if("object"!=m(t))throw Error(qo+"Object expected: "+t);if(t.hasOwnProperty(e="DECIMAL_PLACES")&&(Wo(n=t[e],0,Xo,e),p=n),t.hasOwnProperty(e="ROUNDING_MODE")&&(Wo(n=t[e],0,8,e),v=n),t.hasOwnProperty(e="EXPONENTIAL_AT")&&((n=t[e])&&n.pop?(Wo(n[0],-Xo,0,e),Wo(n[1],0,Xo,e),d=n[0],y=n[1]):(Wo(n,-Xo,Xo,e),d=-(y=n<0?-n:n))),t.hasOwnProperty(e="RANGE"))if((n=t[e])&&n.pop)Wo(n[0],-Xo,-1,e),Wo(n[1],1,Xo,e),_=n[0],x=n[1];else{if(Wo(n,-Xo,Xo,e),!n)throw Error(qo+e+" cannot be zero: "+n);_=-(x=n<0?-n:n)}if(t.hasOwnProperty(e="CRYPTO")){if((n=t[e])!==!!n)throw Error(qo+e+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw E=!n,Error(qo+"crypto unavailable");E=n}else E=n}if(t.hasOwnProperty(e="MODULO_MODE")&&(Wo(n=t[e],0,9,e),k=n),t.hasOwnProperty(e="POW_PRECISION")&&(Wo(n=t[e],0,Xo,e),b=n),t.hasOwnProperty(e="FORMAT")){if("object"!=m(n=t[e]))throw Error(qo+e+" not an object: "+n);w=n}if(t.hasOwnProperty(e="ALPHABET")){if("string"!=typeof(n=t[e])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(qo+e+" invalid: "+n);N="0123456789"==n.slice(0,10),I=n}}return{DECIMAL_PLACES:p,ROUNDING_MODE:v,EXPONENTIAL_AT:[d,y],RANGE:[_,x],CRYPTO:E,MODULO_MODE:k,POW_PRECISION:b,FORMAT:w,ALPHABET:I}},S.isBigNumber=function(t){if(!t||!0!==t._isBigNumber)return!1;if(!S.DEBUG)return!0;var e,n,r=t.c,i=t.e,o=t.s;t:if("[object Array]"=={}.toString.call(r)){if((1===o||-1===o)&&i>=-Xo&&i<=Xo&&i===Fo(i)){if(0===r[0]){if(0===i&&1===r.length)return!0;break t}if((e=(i+1)%Bo)<1&&(e+=Bo),String(r[0]).length==e){for(e=0;e<r.length;e++)if((n=r[e])<0||n>=Go||n!==Fo(n))break t;if(0!==n)return!0}}}else if(null===r&&null===i&&(null===o||1===o||-1===o))return!0;throw Error(qo+"Invalid BigNumber: "+t)},S.maximum=S.max=function(){return L(arguments,-1)},S.minimum=S.min=function(){return L(arguments,1)},S.random=(o=9007199254740992,s=Math.random()*o&2097151?function(){return Fo(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(t){var e,n,r,i,o,a=0,u=[],l=new S(g);if(null==t?t=p:Wo(t,0,Xo),i=Do(t/Bo),E)if(crypto.getRandomValues){for(e=crypto.getRandomValues(new Uint32Array(i*=2));a<i;)(o=131072*e[a]+(e[a+1]>>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),e[a]=n[0],e[a+1]=n[1]):(u.push(o%1e14),a+=2);a=i/2}else{if(!crypto.randomBytes)throw E=!1,Error(qo+"crypto unavailable");for(e=crypto.randomBytes(i*=7);a<i;)(o=281474976710656*(31&e[a])+1099511627776*e[a+1]+4294967296*e[a+2]+16777216*e[a+3]+(e[a+4]<<16)+(e[a+5]<<8)+e[a+6])>=9e15?crypto.randomBytes(7).copy(e,a):(u.push(o%1e14),a+=7);a=i/7}if(!E)for(;a<i;)(o=s())<9e15&&(u[a++]=o%1e14);for(i=u[--a],t%=Bo,i&&t&&(o=zo[Bo-t],u[a]=Fo(i/o)*o);0===u[a];u.pop(),a--);if(a<0)u=[r=0];else{for(r=-1;0===u[0];u.splice(0,1),r-=Bo);for(a=1,o=u[0];o>=10;o/=10,a++);a<Bo&&(r-=Bo-a)}return l.e=r,l.c=u,l}),S.sum=function(){for(var t=1,e=arguments,n=new S(e[0]);t<e.length;)n=n.plus(e[t++]);return n},r=function(){var t="0123456789";function e(t,e,n,r){for(var i,o,s=[0],a=0,u=t.length;a<u;){for(o=s.length;o--;s[o]*=e);for(s[0]+=r.indexOf(t.charAt(a++)),i=0;i<s.length;i++)s[i]>n-1&&(null==s[i+1]&&(s[i+1]=0),s[i+1]+=s[i]/n|0,s[i]%=n)}return s.reverse()}return function(r,i,o,s,a){var u,l,h,c,f,g,d,y,m=r.indexOf("."),_=p,x=v;for(m>=0&&(c=b,b=0,r=r.replace(".",""),g=(y=new S(i)).pow(r.length-m),b=c,y.c=e(Qo(Zo(g.c),g.e,"0"),10,o,t),y.e=y.c.length),h=c=(d=e(r,i,o,a?(u=I,t):(u=t,I))).length;0==d[--c];d.pop());if(!d[0])return u.charAt(0);if(m<0?--h:(g.c=d,g.e=h,g.s=s,d=(g=n(g,y,_,x,o)).c,f=g.r,h=g.e),m=d[l=h+_+1],c=o/2,f=f||l<0||null!=d[l+1],f=x<4?(null!=m||f)&&(0==x||x==(g.s<0?3:2)):m>c||m==c&&(4==x||f||6==x&&1&d[l-1]||x==(g.s<0?8:7)),l<1||!d[0])r=f?Qo(u.charAt(1),-_,u.charAt(0)):u.charAt(0);else{if(d.length=l,f)for(--o;++d[--l]>o;)d[l]=0,l||(++h,d=[1].concat(d));for(c=d.length;!d[--c];);for(m=0,r="";m<=c;r+=u.charAt(d[m++]));r=Qo(r,h,u.charAt(0))}return r}}(),n=function(){function t(t,e,n){var r,i,o,s,a=0,u=t.length,l=e%jo,h=e/jo|0;for(t=t.slice();u--;)a=((i=l*(o=t[u]%jo)+(r=h*o+(s=t[u]/jo|0)*l)%jo*jo+a)/n|0)+(r/jo|0)+h*s,t[u]=i%n;return a&&(t=[a].concat(t)),t}function e(t,e,n,r){var i,o;if(n!=r)o=n>r?1:-1;else for(i=o=0;i<n;i++)if(t[i]!=e[i]){o=t[i]>e[i]?1:-1;break}return o}function n(t,e,n,r){for(var i=0;n--;)t[n]-=i,i=t[n]<e[n]?1:0,t[n]=i*r+t[n]-e[n];for(;!t[0]&&t.length>1;t.splice(0,1));}return function(r,i,o,s,a){var u,l,h,c,f,g,p,v,d,y,m,_,x,E,k,b,w,I=r.s==i.s?1:-1,N=r.c,M=i.c;if(!(N&&N[0]&&M&&M[0]))return new S(r.s&&i.s&&(N?!M||N[0]!=M[0]:M)?N&&0==N[0]||!M?0*I:I/0:NaN);for(d=(v=new S(I)).c=[],I=o+(l=r.e-i.e)+1,a||(a=Go,l=Uo(r.e/Bo)-Uo(i.e/Bo),I=I/Bo|0),h=0;M[h]==(N[h]||0);h++);if(M[h]>(N[h]||0)&&l--,I<0)d.push(1),c=!0;else{for(E=N.length,b=M.length,h=0,I+=2,(f=Fo(a/(M[0]+1)))>1&&(M=t(M,f,a),N=t(N,f,a),b=M.length,E=N.length),x=b,m=(y=N.slice(0,b)).length;m<b;y[m++]=0);w=M.slice(),w=[0].concat(w),k=M[0],M[1]>=a/2&&k++;do{if(f=0,(u=e(M,y,b,m))<0){if(_=y[0],b!=m&&(_=_*a+(y[1]||0)),(f=Fo(_/k))>1)for(f>=a&&(f=a-1),p=(g=t(M,f,a)).length,m=y.length;1==e(g,y,p,m);)f--,n(g,b<p?w:M,p,a),p=g.length,u=1;else 0==f&&(u=f=1),p=(g=M.slice()).length;if(p<m&&(g=[0].concat(g)),n(y,g,m,a),m=y.length,-1==u)for(;e(M,y,b,m)<1;)f++,n(y,b<m?w:M,m,a),m=y.length}else 0===u&&(f++,y=[0]);d[h++]=f,y[0]?y[m++]=N[x]||0:(y=[N[x]],m=1)}while((x++<E||null!=y[0])&&I--);c=null!=y[0],d[0]||d.splice(0,1)}if(a==Go){for(h=1,I=d[0];I>=10;I/=10,h++);C(v,o+(v.e=h+l*Bo-1)+1,s,c)}else v.e=l,v.r=+c;return v}}(),a=/^(-?)0([xbo])(?=\w[\w.]*$)/i,u=/^([^.]+)\.$/,l=/^\.([^.]+)$/,h=/^-?(Infinity|NaN)$/,c=/^\s*\+(?=[\w.])|^\s+|\s+$/g,i=function(t,e,n,r){var i,o=n?e:e.replace(c,"");if(h.test(o))t.s=isNaN(o)?null:o<0?-1:1;else{if(!n&&(o=o.replace(a,(function(t,e,n){return i="x"==(n=n.toLowerCase())?16:"b"==n?2:8,r&&r!=i?t:e})),r&&(i=r,o=o.replace(u,"$1").replace(l,"0.$1")),e!=o))return new S(o,i);if(S.DEBUG)throw Error(qo+"Not a"+(r?" base "+r:"")+" number: "+e);t.s=null}t.c=t.e=null},f.absoluteValue=f.abs=function(){var t=new S(this);return t.s<0&&(t.s=1),t},f.comparedTo=function(t,e){return Ho(this,new S(t,e))},f.decimalPlaces=f.dp=function(t,e){var n,r,i,o=this;if(null!=t)return Wo(t,0,Xo),null==e?e=v:Wo(e,0,8),C(new S(o),t+o.e+1,e);if(!(n=o.c))return null;if(r=((i=n.length-1)-Uo(this.e/Bo))*Bo,i=n[i])for(;i%10==0;i/=10,r--);return r<0&&(r=0),r},f.dividedBy=f.div=function(t,e){return n(this,new S(t,e),p,v)},f.dividedToIntegerBy=f.idiv=function(t,e){return n(this,new S(t,e),0,1)},f.exponentiatedBy=f.pow=function(t,e){var n,r,i,o,s,a,u,l,h=this;if((t=new S(t)).c&&!t.isInteger())throw Error(qo+"Exponent not an integer: "+T(t));if(null!=e&&(e=new S(e)),s=t.e>14,!h.c||!h.c[0]||1==h.c[0]&&!h.e&&1==h.c.length||!t.c||!t.c[0])return l=new S(Math.pow(+T(h),s?t.s*(2-Jo(t)):+T(t))),e?l.mod(e):l;if(a=t.s<0,e){if(e.c?!e.c[0]:!e.s)return new S(NaN);(r=!a&&h.isInteger()&&e.isInteger())&&(h=h.mod(e))}else{if(t.e>9&&(h.e>0||h.e<-1||(0==h.e?h.c[0]>1||s&&h.c[1]>=24e7:h.c[0]<8e13||s&&h.c[0]<=9999975e7)))return o=h.s<0&&Jo(t)?-0:0,h.e>-1&&(o=1/o),new S(a?1/o:o);b&&(o=Do(b/Bo+2))}for(s?(n=new S(.5),a&&(t.s=1),u=Jo(t)):u=(i=Math.abs(+T(t)))%2,l=new S(g);;){if(u){if(!(l=l.times(h)).c)break;o?l.c.length>o&&(l.c.length=o):r&&(l=l.mod(e))}if(i){if(0===(i=Fo(i/2)))break;u=i%2}else if(C(t=t.times(n),t.e+1,1),t.e>14)u=Jo(t);else{if(0===(i=+T(t)))break;u=i%2}h=h.times(h),o?h.c&&h.c.length>o&&(h.c.length=o):r&&(h=h.mod(e))}return r?l:(a&&(l=g.div(l)),e?l.mod(e):o?C(l,b,v,undefined):l)},f.integerValue=function(t){var e=new S(this);return null==t?t=v:Wo(t,0,8),C(e,e.e+1,t)},f.isEqualTo=f.eq=function(t,e){return 0===Ho(this,new S(t,e))},f.isFinite=function(){return!!this.c},f.isGreaterThan=f.gt=function(t,e){return Ho(this,new S(t,e))>0},f.isGreaterThanOrEqualTo=f.gte=function(t,e){return 1===(e=Ho(this,new S(t,e)))||0===e},f.isInteger=function(){return!!this.c&&Uo(this.e/Bo)>this.c.length-2},f.isLessThan=f.lt=function(t,e){return Ho(this,new S(t,e))<0},f.isLessThanOrEqualTo=f.lte=function(t,e){return-1===(e=Ho(this,new S(t,e)))||0===e},f.isNaN=function(){return!this.s},f.isNegative=function(){return this.s<0},f.isPositive=function(){return this.s>0},f.isZero=function(){return!!this.c&&0==this.c[0]},f.minus=function(t,e){var n,r,i,o,s=this,a=s.s;if(e=(t=new S(t,e)).s,!a||!e)return new S(NaN);if(a!=e)return t.s=-e,s.plus(t);var u=s.e/Bo,l=t.e/Bo,h=s.c,c=t.c;if(!u||!l){if(!h||!c)return h?(t.s=-e,t):new S(c?s:NaN);if(!h[0]||!c[0])return c[0]?(t.s=-e,t):new S(h[0]?s:3==v?-0:0)}if(u=Uo(u),l=Uo(l),h=h.slice(),a=u-l){for((o=a<0)?(a=-a,i=h):(l=u,i=c),i.reverse(),e=a;e--;i.push(0));i.reverse()}else for(r=(o=(a=h.length)<(e=c.length))?a:e,a=e=0;e<r;e++)if(h[e]!=c[e]){o=h[e]<c[e];break}if(o&&(i=h,h=c,c=i,t.s=-t.s),(e=(r=c.length)-(n=h.length))>0)for(;e--;h[n++]=0);for(e=Go-1;r>a;){if(h[--r]<c[r]){for(n=r;n&&!h[--n];h[n]=e);--h[n],h[r]+=Go}h[r]-=c[r]}for(;0==h[0];h.splice(0,1),--l);return h[0]?P(t,h,l):(t.s=3==v?-1:1,t.c=[t.e=0],t)},f.modulo=f.mod=function(t,e){var r,i,o=this;return t=new S(t,e),!o.c||!t.s||t.c&&!t.c[0]?new S(NaN):!t.c||o.c&&!o.c[0]?new S(o):(9==k?(i=t.s,t.s=1,r=n(o,t,0,3),t.s=i,r.s*=i):r=n(o,t,0,k),(t=o.minus(r.times(t))).c[0]||1!=k||(t.s=o.s),t)},f.multipliedBy=f.times=function(t,e){var n,r,i,o,s,a,u,l,h,c,f,g,p,v,d,y=this,m=y.c,_=(t=new S(t,e)).c;if(!(m&&_&&m[0]&&_[0]))return!y.s||!t.s||m&&!m[0]&&!_||_&&!_[0]&&!m?t.c=t.e=t.s=null:(t.s*=y.s,m&&_?(t.c=[0],t.e=0):t.c=t.e=null),t;for(r=Uo(y.e/Bo)+Uo(t.e/Bo),t.s*=y.s,(u=m.length)<(c=_.length)&&(p=m,m=_,_=p,i=u,u=c,c=i),i=u+c,p=[];i--;p.push(0));for(v=Go,d=jo,i=c;--i>=0;){for(n=0,f=_[i]%d,g=_[i]/d|0,o=i+(s=u);o>i;)n=((l=f*(l=m[--s]%d)+(a=g*l+(h=m[s]/d|0)*f)%d*d+p[o]+n)/v|0)+(a/d|0)+g*h,p[o--]=l%v;p[o]=n}return n?++r:p.splice(0,1),P(t,p,r)},f.negated=function(){var t=new S(this);return t.s=-t.s||null,t},f.plus=function(t,e){var n,r=this,i=r.s;if(e=(t=new S(t,e)).s,!i||!e)return new S(NaN);if(i!=e)return t.s=-e,r.minus(t);var o=r.e/Bo,s=t.e/Bo,a=r.c,u=t.c;if(!o||!s){if(!a||!u)return new S(i/0);if(!a[0]||!u[0])return u[0]?t:new S(a[0]?r:0*i)}if(o=Uo(o),s=Uo(s),a=a.slice(),i=o-s){for(i>0?(s=o,n=u):(i=-i,n=a),n.reverse();i--;n.push(0));n.reverse()}for((i=a.length)-(e=u.length)<0&&(n=u,u=a,a=n,e=i),i=0;e;)i=(a[--e]=a[e]+u[e]+i)/Go|0,a[e]=Go===a[e]?0:a[e]%Go;return i&&(a=[i].concat(a),++s),P(t,a,s)},f.precision=f.sd=function(t,e){var n,r,i,o=this;if(null!=t&&t!==!!t)return Wo(t,1,Xo),null==e?e=v:Wo(e,0,8),C(new S(o),t,e);if(!(n=o.c))return null;if(r=(i=n.length-1)*Bo+1,i=n[i]){for(;i%10==0;i/=10,r--);for(i=n[0];i>=10;i/=10,r++);}return t&&o.e+1>r&&(r=o.e+1),r},f.shiftedBy=function(t){return Wo(t,-9007199254740991,Yo),this.times("1e"+t)},f.squareRoot=f.sqrt=function(){var t,e,r,i,o,s=this,a=s.c,u=s.s,l=s.e,h=p+4,c=new S("0.5");if(1!==u||!a||!a[0])return new S(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(u=Math.sqrt(+T(s)))||u==1/0?(((e=Zo(a)).length+l)%2==0&&(e+="0"),u=Math.sqrt(+e),l=Uo((l+1)/2)-(l<0||l%2),r=new S(e=u==1/0?"5e"+l:(e=u.toExponential()).slice(0,e.indexOf("e")+1)+l)):r=new S(u+""),r.c[0])for((u=(l=r.e)+h)<3&&(u=0);;)if(o=r,r=c.times(o.plus(n(s,o,h,1))),Zo(o.c).slice(0,u)===(e=Zo(r.c)).slice(0,u)){if(r.e<l&&--u,"9999"!=(e=e.slice(u-3,u+1))&&(i||"4999"!=e)){+e&&(+e.slice(1)||"5"!=e.charAt(0))||(C(r,r.e+p+2,1),t=!r.times(r).eq(s));break}if(!i&&(C(o,o.e+p+2,0),o.times(o).eq(s))){r=o;break}h+=4,u+=4,i=1}return C(r,r.e+p+1,v,t)},f.toExponential=function(t,e){return null!=t&&(Wo(t,0,Xo),t++),M(this,t,e,1)},f.toFixed=function(t,e){return null!=t&&(Wo(t,0,Xo),t=t+this.e+1),M(this,t,e)},f.toFormat=function(t,e,n){var r,i=this;if(null==n)null!=t&&e&&"object"==m(e)?(n=e,e=null):t&&"object"==m(t)?(n=t,t=e=null):n=w;else if("object"!=m(n))throw Error(qo+"Argument not an object: "+n);if(r=i.toFixed(t,e),i.c){var o,s=r.split("."),a=+n.groupSize,u=+n.secondaryGroupSize,l=n.groupSeparator||"",h=s[0],c=s[1],f=i.s<0,g=f?h.slice(1):h,p=g.length;if(u&&(o=a,a=u,u=o,p-=o),a>0&&p>0){for(o=p%a||a,h=g.substr(0,o);o<p;o+=a)h+=l+g.substr(o,a);u>0&&(h+=l+g.slice(o)),f&&(h="-"+h)}r=c?h+(n.decimalSeparator||"")+((u=+n.fractionGroupSize)?c.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):c):h}return(n.prefix||"")+r+(n.suffix||"")},f.toFraction=function(t){var e,r,i,o,s,a,u,l,h,c,f,p,d=this,y=d.c;if(null!=t&&(!(u=new S(t)).isInteger()&&(u.c||1!==u.s)||u.lt(g)))throw Error(qo+"Argument "+(u.isInteger()?"out of range: ":"not an integer: ")+T(u));if(!y)return new S(d);for(e=new S(g),h=r=new S(g),i=l=new S(g),p=Zo(y),s=e.e=p.length-d.e-1,e.c[0]=zo[(a=s%Bo)<0?Bo+a:a],t=!t||u.comparedTo(e)>0?s>0?e:h:u,a=x,x=1/0,u=new S(p),l.c[0]=0;c=n(u,e,0,1),1!=(o=r.plus(c.times(i))).comparedTo(t);)r=i,i=o,h=l.plus(c.times(o=h)),l=o,e=u.minus(c.times(o=e)),u=o;return o=n(t.minus(r),i,0,1),l=l.plus(o.times(h)),r=r.plus(o.times(i)),l.s=h.s=d.s,f=n(h,i,s*=2,v).minus(d).abs().comparedTo(n(l,r,s,v).minus(d).abs())<1?[h,i]:[l,r],x=a,f},f.toNumber=function(){return+T(this)},f.toPrecision=function(t,e){return null!=t&&Wo(t,1,Xo),M(this,t,e,2)},f.toString=function(t){var e,n=this,i=n.s,o=n.e;return null===o?i?(e="Infinity",i<0&&(e="-"+e)):e="NaN":(null==t?e=o<=d||o>=y?Ko(Zo(n.c),o):Qo(Zo(n.c),o,"0"):10===t&&N?e=Qo(Zo((n=C(new S(n),p+o+1,v)).c),n.e,"0"):(Wo(t,2,I.length,"Base"),e=r(Qo(Zo(n.c),o,"0"),10,t,i,!0)),i<0&&n.c[0]&&(e="-"+e)),e},f.valueOf=f.toJSON=function(){return T(this)},f._isBigNumber=!0,f[Symbol.toStringTag]="BigNumber",f[Symbol.for("nodejs.util.inspect.custom")]=f.valueOf,null!=e&&S.set(e),S}(),ts=function(t){function e(t){return i(this,e),r(this,e,[t])}return h(e,t),s(e)}(s((function t(e){i(this,t),u(this,"key",void 0),u(this,"left",null),u(this,"right",null),this.key=e}))),es=function(){return s((function t(){i(this,t),u(this,"size",0),u(this,"modificationCount",0),u(this,"splayCount",0)}),[{key:"splay",value:function(t){var e=this.root;if(null==e)return this.compare(t,t),-1;for(var n,r=null,i=null,o=null,s=null,a=e,u=this.compare;;)if((n=u(a.key,t))>0){var l=a.left;if(null==l)break;if((n=u(l.key,t))>0&&(a.left=l.right,l.right=a,null==(l=(a=l).left)))break;null==r?i=a:r.left=a,r=a,a=l}else{if(!(n<0))break;var h=a.right;if(null==h)break;if((n=u(h.key,t))<0&&(a.right=h.left,h.left=a,null==(h=(a=h).right)))break;null==o?s=a:o.right=a,o=a,a=h}return null!=o&&(o.right=a.left,a.left=s),null!=r&&(r.left=a.right,a.right=i),this.root!==a&&(this.root=a,this.splayCount++),n}},{key:"splayMin",value:function(t){for(var e=t,n=e.left;null!=n;){var r=n;e.left=r.right,r.right=e,n=(e=r).left}return e}},{key:"splayMax",value:function(t){for(var e=t,n=e.right;null!=n;){var r=n;e.right=r.left,r.left=e,n=(e=r).right}return e}},{key:"_delete",value:function(t){if(null==this.root)return null;if(0!=this.splay(t))return null;var e=this.root,n=e,r=e.left;if(this.size--,null==r)this.root=e.right;else{var i=e.right;(e=this.splayMax(r)).right=i,this.root=e}return this.modificationCount++,n}},{key:"addNewRoot",value:function(t,e){this.size++,this.modificationCount++;var n=this.root;null!=n?(e<0?(t.left=n,t.right=n.right,n.right=null):(t.right=n,t.left=n.left,n.left=null),this.root=t):this.root=t}},{key:"_first",value:function(){var t=this.root;return null==t?null:(this.root=this.splayMin(t),this.root)}},{key:"_last",value:function(){var t=this.root;return null==t?null:(this.root=this.splayMax(t),this.root)}},{key:"clear",value:function(){this.root=null,this.size=0,this.modificationCount++}},{key:"has",value:function(t){return this.validKey(t)&&0==this.splay(t)}},{key:"defaultCompare",value:function(){return function(t,e){return t<e?-1:t>e?1:0}}},{key:"wrap",value:function(){var t=this;return{getRoot:function(){return t.root},setRoot:function(e){t.root=e},getSize:function(){return t.size},getModificationCount:function(){return t.modificationCount},getSplayCount:function(){return t.splayCount},setSplayCount:function(e){t.splayCount=e},splay:function(e){return t.splay(e)},has:function(e){return t.has(e)}}}}])}(),ns=function(t){function e(t,n){var o;return i(this,e),u(o=r(this,e),"root",null),u(o,"compare",void 0),u(o,"validKey",void 0),u(o,Symbol.toStringTag,"[object Set]"),o.compare=null!=t?t:o.defaultCompare(),o.validKey=null!=n?n:function(t){return null!=t&&null!=t},o}return h(e,t),s(e,[{key:"delete",value:function(t){return!!this.validKey(t)&&null!=this._delete(t)}},{key:"deleteAll",value:function(t){var e,n=a(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;this.delete(r)}}catch(t){n.e(t)}finally{n.f()}}},{key:"forEach",value:function(t){for(var e,n=this[Symbol.iterator]();!(e=n.next()).done;)t(e.value,e.value,this)}},{key:"add",value:function(t){var e=this.splay(t);return 0!=e&&this.addNewRoot(new ts(t),e),this}},{key:"addAndReturn",value:function(t){var e=this.splay(t);return 0!=e&&this.addNewRoot(new ts(t),e),this.root.key}},{key:"addAll",value:function(t){var e,n=a(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;this.add(r)}}catch(t){n.e(t)}finally{n.f()}}},{key:"isEmpty",value:function(){return null==this.root}},{key:"isNotEmpty",value:function(){return null!=this.root}},{key:"single",value:function(){if(0==this.size)throw"Bad state: No element";if(this.size>1)throw"Bad state: Too many element";return this.root.key}},{key:"first",value:function(){if(0==this.size)throw"Bad state: No element";return this._first().key}},{key:"last",value:function(){if(0==this.size)throw"Bad state: No element";return this._last().key}},{key:"lastBefore",value:function(t){if(null==t)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(t)<0)return this.root.key;var e=this.root.left;if(null==e)return null;for(var n=e.right;null!=n;)n=(e=n).right;return e.key}},{key:"firstAfter",value:function(t){if(null==t)throw"Invalid arguments(s)";if(null==this.root)return null;if(this.splay(t)>0)return this.root.key;var e=this.root.right;if(null==e)return null;for(var n=e.left;null!=n;)n=(e=n).left;return e.key}},{key:"retainAll",value:function(t){var n,r=new e(this.compare,this.validKey),i=this.modificationCount,o=a(t);try{for(o.s();!(n=o.n()).done;){var s=n.value;if(i!=this.modificationCount)throw"Concurrent modification during iteration.";this.validKey(s)&&0==this.splay(s)&&r.add(this.root.key)}}catch(t){o.e(t)}finally{o.f()}r.size!=this.size&&(this.root=r.root,this.size=r.size,this.modificationCount++)}},{key:"lookup",value:function(t){return this.validKey(t)?0!=this.splay(t)?null:this.root.key:null}},{key:"intersection",value:function(t){var n,r=new e(this.compare,this.validKey),i=a(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.has(o)&&r.add(o)}}catch(t){i.e(t)}finally{i.f()}return r}},{key:"difference",value:function(t){var n,r=new e(this.compare,this.validKey),i=a(this);try{for(i.s();!(n=i.n()).done;){var o=n.value;t.has(o)||r.add(o)}}catch(t){i.e(t)}finally{i.f()}return r}},{key:"union",value:function(t){var e=this.clone();return e.addAll(t),e}},{key:"clone",value:function(){var t=new e(this.compare,this.validKey);return t.size=this.size,t.root=this.copyNode(this.root),t}},{key:"copyNode",value:function(t){if(null==t)return null;var e=new ts(t.key);return function t(e,n){var r,i;do{if(r=e.left,i=e.right,null!=r){var o=new ts(r.key);n.left=o,t(r,o)}if(null!=i){var s=new ts(i.key);n.right=s,e=i,n=s}}while(null!=i)}(t,e),e}},{key:"toSet",value:function(){return this.clone()}},{key:"entries",value:function(){return new os(this.wrap())}},{key:"keys",value:function(){return this[Symbol.iterator]()}},{key:"values",value:function(){return this[Symbol.iterator]()}},{key:Symbol.iterator,value:function(){return new is(this.wrap())}}])}(es),rs=function(){return s((function t(e){i(this,t),u(this,"tree",void 0),u(this,"path",new Array),u(this,"modificationCount",null),u(this,"splayCount",void 0),this.tree=e,this.splayCount=e.getSplayCount()}),[{key:Symbol.iterator,value:function(){return this}},{key:"next",value:function(){return this.moveNext()?{done:!1,value:this.current()}:{done:!0,value:null}}},{key:"current",value:function(){if(!this.path.length)return null;var t=this.path[this.path.length-1];return this.getValue(t)}},{key:"rebuildPath",value:function(t){this.path.splice(0,this.path.length),this.tree.splay(t),this.path.push(this.tree.getRoot()),this.splayCount=this.tree.getSplayCount()}},{key:"findLeftMostDescendent",value:function(t){for(;null!=t;)this.path.push(t),t=t.left}},{key:"moveNext",value:function(){if(this.modificationCount!=this.tree.getModificationCount()){if(null==this.modificationCount){this.modificationCount=this.tree.getModificationCount();for(var t=this.tree.getRoot();null!=t;)this.path.push(t),t=t.left;return this.path.length>0}throw"Concurrent modification during iteration."}if(!this.path.length)return!1;this.splayCount!=this.tree.getSplayCount()&&this.rebuildPath(this.path[this.path.length-1].key);var e=this.path[this.path.length-1],n=e.right;if(null!=n){for(;null!=n;)this.path.push(n),n=n.left;return!0}for(this.path.pop();this.path.length&&this.path[this.path.length-1].right===e;)e=this.path.pop();return this.path.length>0}}])}(),is=function(t){function e(){return i(this,e),r(this,e,arguments)}return h(e,t),s(e,[{key:"getValue",value:function(t){return t.key}}])}(rs),os=function(t){function e(){return i(this,e),r(this,e,arguments)}return h(e,t),s(e,[{key:"getValue",value:function(t){return[t.key,t.key]}}])}(rs),ss=function(t){return function(){return t}},as=function(t){var e=t?function(e,n){return n.minus(e).abs().isLessThanOrEqualTo(t)}:ss(!1);return function(t,n){return e(t,n)?0:t.comparedTo(n)}};function us(t){var e=t?function(e,n,r,i,o){return e.exponentiatedBy(2).isLessThanOrEqualTo(i.minus(n).exponentiatedBy(2).plus(o.minus(r).exponentiatedBy(2)).times(t))}:ss(!1);return function(t,n,r){var i=t.x,o=t.y,s=r.x,a=r.y,u=o.minus(a).times(n.x.minus(s)).minus(i.minus(s).times(n.y.minus(a)));return e(u,i,o,s,a)?0:u.comparedTo(0)}}var ls=function(t){return t},hs=function(t){if(t){var e=new ns(as(t)),n=new ns(as(t)),r=function(t,e){return e.addAndReturn(t)},i=function(t){return{x:r(t.x,e),y:r(t.y,n)}};return i({x:new $o(0),y:new $o(0)}),i}return ls},cs=function(t){return{set:function(t){fs=cs(t)},reset:function(){return cs(t)},compare:as(t),snap:hs(t),orient:us(t)}},fs=cs(),gs=function(t,e){return t.ll.x.isLessThanOrEqualTo(e.x)&&e.x.isLessThanOrEqualTo(t.ur.x)&&t.ll.y.isLessThanOrEqualTo(e.y)&&e.y.isLessThanOrEqualTo(t.ur.y)},ps=function(t,e){if(e.ur.x.isLessThan(t.ll.x)||t.ur.x.isLessThan(e.ll.x)||e.ur.y.isLessThan(t.ll.y)||t.ur.y.isLessThan(e.ll.y))return null;var n=t.ll.x.isLessThan(e.ll.x)?e.ll.x:t.ll.x,r=t.ur.x.isLessThan(e.ur.x)?t.ur.x:e.ur.x;return{ll:{x:n,y:t.ll.y.isLessThan(e.ll.y)?e.ll.y:t.ll.y},ur:{x:r,y:t.ur.y.isLessThan(e.ur.y)?t.ur.y:e.ur.y}}},vs=function(t,e){return t.x.times(e.y).minus(t.y.times(e.x))},ds=function(t,e){return t.x.times(e.x).plus(t.y.times(e.y))},ys=function(t){return ds(t,t).sqrt()},ms=function(t,e,n){var r={x:e.x.minus(t.x),y:e.y.minus(t.y)},i={x:n.x.minus(t.x),y:n.y.minus(t.y)};return ds(i,r).div(ys(i)).div(ys(r))},_s=function(t,e,n){return e.y.isZero()?null:{x:t.x.plus(e.x.div(e.y).times(n.minus(t.y))),y:n}},xs=function(t,e,n){return e.x.isZero()?null:{x:n,y:t.y.plus(e.y.div(e.x).times(n.minus(t.x)))}},Es=function(){function t(e,n){i(this,t),u(this,"point",void 0),u(this,"isLeft",void 0),u(this,"segment",void 0),u(this,"otherSE",void 0),u(this,"consumedBy",void 0),void 0===e.events?e.events=[this]:e.events.push(this),this.point=e,this.isLeft=n}return s(t,[{key:"link",value:function(t){if(t.point===this.point)throw new Error("Tried to link already linked events");for(var e=t.point.events,n=0,r=e.length;n<r;n++){var i=e[n];this.point.events.push(i),i.point=this.point}this.checkForConsuming()}},{key:"checkForConsuming",value:function(){for(var t=this.point.events.length,e=0;e<t;e++){var n=this.point.events[e];if(void 0===n.segment.consumedBy)for(var r=e+1;r<t;r++){var i=this.point.events[r];void 0===i.consumedBy&&(n.otherSE.point.events===i.otherSE.point.events&&n.segment.consume(i.segment))}}}},{key:"getAvailableLinkedEvents",value:function(){for(var t=[],e=0,n=this.point.events.length;e<n;e++){var r=this.point.events[e];r!==this&&!r.segment.ringOut&&r.segment.isInResult()&&t.push(r)}return t}},{key:"getLeftmostComparator",value:function(t){var e=this,n=new Map,r=function(r){var i,o,s,a,u,l=r.otherSE;n.set(r,{sine:(i=e.point,o=t.point,s=l.point,a={x:o.x.minus(i.x),y:o.y.minus(i.y)},u={x:s.x.minus(i.x),y:s.y.minus(i.y)},vs(u,a).div(ys(u)).div(ys(a))),cosine:ms(e.point,t.point,l.point)})};return function(t,e){n.has(t)||r(t),n.has(e)||r(e);var i=n.get(t),o=i.sine,s=i.cosine,a=n.get(e),u=a.sine,l=a.cosine;return o.isGreaterThanOrEqualTo(0)&&u.isGreaterThanOrEqualTo(0)?s.isLessThan(l)?1:s.isGreaterThan(l)?-1:0:o.isLessThan(0)&&u.isLessThan(0)?s.isLessThan(l)?-1:s.isGreaterThan(l)?1:0:u.isLessThan(o)?-1:u.isGreaterThan(o)?1:0}}}],[{key:"compare",value:function(e,n){var r=t.comparePoints(e.point,n.point);return 0!==r?r:(e.point!==n.point&&e.link(n),e.isLeft!==n.isLeft?e.isLeft?1:-1:Ls.compare(e.segment,n.segment))}},{key:"comparePoints",value:function(t,e){return t.x.isLessThan(e.x)?-1:t.x.isGreaterThan(e.x)?1:t.y.isLessThan(e.y)?-1:t.y.isGreaterThan(e.y)?1:0}}])}(),ks=function(){function t(e){i(this,t),u(this,"events",void 0),u(this,"poly",void 0),u(this,"_isExteriorRing",void 0),u(this,"_enclosingRing",void 0),this.events=e;for(var n=0,r=e.length;n<r;n++)e[n].segment.ringOut=this;this.poly=null}return s(t,[{key:"getGeom",value:function(){for(var t=this.events[0].point,e=[t],n=1,r=this.events.length-1;n<r;n++){var i=this.events[n].point,o=this.events[n+1].point;0!==fs.orient(i,t,o)&&(e.push(i),t=i)}if(1===e.length)return null;var s=e[0],a=e[1];0===fs.orient(s,t,a)&&e.shift(),e.push(e[0]);for(var u=this.isExteriorRing()?1:-1,l=this.isExteriorRing()?0:e.length-1,h=this.isExteriorRing()?e.length:-1,c=[],f=l;f!=h;f+=u)c.push([e[f].x.toNumber(),e[f].y.toNumber()]);return c}},{key:"isExteriorRing",value:function(){if(void 0===this._isExteriorRing){var t=this.enclosingRing();this._isExteriorRing=!t||!t.isExteriorRing()}return this._isExteriorRing}},{key:"enclosingRing",value:function(){return void 0===this._enclosingRing&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}},{key:"_calcEnclosingRing",value:function(){for(var t=this.events[0],e=1,n=this.events.length;e<n;e++){var r=this.events[e];Es.compare(t,r)>0&&(t=r)}for(var i=t.segment.prevInResult(),o=i?i.prevInResult():null;;){if(!i)return null;if(!o)return i.ringOut;var s,a;if(o.ringOut!==i.ringOut)return(null===(s=o.ringOut)||void 0===s?void 0:s.enclosingRing())!==i.ringOut?i.ringOut:null===(a=i.ringOut)||void 0===a?void 0:a.enclosingRing();i=o.prevInResult(),o=i?i.prevInResult():null}}}],[{key:"factory",value:function(e){for(var n=[],r=0,i=e.length;r<i;r++){var o=e[r];if(o.isInResult()&&!o.ringOut){for(var s=null,a=o.leftSE,u=o.rightSE,l=[a],h=a.point,c=[];s=a,a=u,l.push(a),a.point!==h;)for(;;){var f=a.getAvailableLinkedEvents();if(0===f.length){var g=l[0].point,p=l[l.length-1].point;throw new Error("Unable to complete output ring starting at [".concat(g.x,", ").concat(g.y,"]. Last matching segment found ends at [").concat(p.x,", ").concat(p.y,"]."))}if(1===f.length){u=f[0].otherSE;break}for(var v=null,d=0,y=c.length;d<y;d++)if(c[d].point===a.point){v=d;break}if(null===v){c.push({index:l.length,point:a.point});var m=a.getLeftmostComparator(s);u=f.sort(m)[0].otherSE;break}var _=c.splice(v)[0],x=l.splice(_.index);x.unshift(x[0].otherSE),n.push(new t(x.reverse()))}n.push(new t(l))}}return n}}])}(),bs=function(){return s((function t(e){i(this,t),u(this,"exteriorRing",void 0),u(this,"interiorRings",void 0),this.exteriorRing=e,e.poly=this,this.interiorRings=[]}),[{key:"addInterior",value:function(t){this.interiorRings.push(t),t.poly=this}},{key:"getGeom",value:function(){var t=this.exteriorRing.getGeom();if(null===t)return null;for(var e=[t],n=0,r=this.interiorRings.length;n<r;n++){var i=this.interiorRings[n].getGeom();null!==i&&e.push(i)}return e}}])}(),ws=function(){return s((function t(e){i(this,t),u(this,"rings",void 0),u(this,"polys",void 0),this.rings=e,this.polys=this._composePolys(e)}),[{key:"getGeom",value:function(){for(var t=[],e=0,n=this.polys.length;e<n;e++){var r=this.polys[e].getGeom();null!==r&&t.push(r)}return t}},{key:"_composePolys",value:function(t){for(var e=[],n=0,r=t.length;n<r;n++){var i=t[n];if(!i.poly)if(i.isExteriorRing())e.push(new bs(i));else{var o,s=i.enclosingRing();null!=s&&s.poly||e.push(new bs(s)),null==s||null===(o=s.poly)||void 0===o||o.addInterior(i)}}return e}}])}(),Is=function(){return s((function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ls.compare;i(this,t),u(this,"queue",void 0),u(this,"tree",void 0),u(this,"segments",void 0),this.queue=e,this.tree=new ns(n),this.segments=[]}),[{key:"process",value:function(t){var e=t.segment,n=[];if(t.consumedBy)return t.isLeft?this.queue.delete(t.otherSE):this.tree.delete(e),n;t.isLeft&&this.tree.add(e);var r=e,i=e;do{r=this.tree.lastBefore(r)}while(null!=r&&null!=r.consumedBy);do{i=this.tree.firstAfter(i)}while(null!=i&&null!=i.consumedBy);if(t.isLeft){var o=null;if(r){var s=r.getIntersection(e);if(null!==s&&(e.isAnEndpoint(s)||(o=s),!r.isAnEndpoint(s)))for(var a=this._splitSafely(r,s),u=0,l=a.length;u<l;u++)n.push(a[u])}var h=null;if(i){var c=i.getIntersection(e);if(null!==c&&(e.isAnEndpoint(c)||(h=c),!i.isAnEndpoint(c)))for(var f=this._splitSafely(i,c),g=0,p=f.length;g<p;g++)n.push(f[g])}if(null!==o||null!==h){var v=null;if(null===o)v=h;else if(null===h)v=o;else{v=Es.comparePoints(o,h)<=0?o:h}this.queue.delete(e.rightSE),n.push(e.rightSE);for(var d=e.split(v),y=0,m=d.length;y<m;y++)n.push(d[y])}n.length>0?(this.tree.delete(e),n.push(t)):(this.segments.push(e),e.prev=r)}else{if(r&&i){var _=r.getIntersection(i);if(null!==_){if(!r.isAnEndpoint(_))for(var x=this._splitSafely(r,_),E=0,k=x.length;E<k;E++)n.push(x[E]);if(!i.isAnEndpoint(_))for(var b=this._splitSafely(i,_),w=0,I=b.length;w<I;w++)n.push(b[w])}}this.tree.delete(e)}return n}},{key:"_splitSafely",value:function(t,e){this.tree.delete(t);var n=t.rightSE;this.queue.delete(n);var r=t.split(e);return r.push(n),void 0===t.consumedBy&&this.tree.add(t),r}}])}(),Ns=new(function(){return s((function t(){i(this,t),u(this,"type",void 0),u(this,"numMultiPolys",void 0)}),[{key:"run",value:function(t,e,n){Ns.type=t;for(var r=[new Ts(e,!0)],i=0,o=n.length;i<o;i++)r.push(new Ts(n[i],!1));if(Ns.numMultiPolys=r.length,"difference"===Ns.type)for(var s=r[0],a=1;a<r.length;)null!==ps(r[a].bbox,s.bbox)?a++:r.splice(a,1);if("intersection"===Ns.type)for(var u=0,l=r.length;u<l;u++)for(var h=r[u],c=u+1,f=r.length;c<f;c++)if(null===ps(h.bbox,r[c].bbox))return[];for(var g=new ns(Es.compare),p=0,v=r.length;p<v;p++)for(var d=r[p].getSweepEvents(),y=0,m=d.length;y<m;y++)g.add(d[y]);var _=new Is(g),x=null;for(0!=g.size&&(x=g.first(),g.delete(x));x;){for(var E=_.process(x),k=0,b=E.length;k<b;k++){var w=E[k];void 0===w.consumedBy&&g.add(w)}0!=g.size?(x=g.first(),g.delete(x)):x=null}fs.reset();var I=ks.factory(_.segments);return new ws(I).getGeom()}}])}()),Ss=Ns,Ms=0,Ls=function(){function t(e,n,r,o){i(this,t),u(this,"id",void 0),u(this,"leftSE",void 0),u(this,"rightSE",void 0),u(this,"rings",void 0),u(this,"windings",void 0),u(this,"ringOut",void 0),u(this,"consumedBy",void 0),u(this,"prev",void 0),u(this,"_prevInResult",void 0),u(this,"_beforeState",void 0),u(this,"_afterState",void 0),u(this,"_isInResult",void 0),this.id=++Ms,this.leftSE=e,e.segment=this,e.otherSE=n,this.rightSE=n,n.segment=this,n.otherSE=e,this.rings=r,this.windings=o}return s(t,[{key:"replaceRightSE",value:function(t){this.rightSE=t,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}},{key:"bbox",value:function(){var t=this.leftSE.point.y,e=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:t.isLessThan(e)?t:e},ur:{x:this.rightSE.point.x,y:t.isGreaterThan(e)?t:e}}}},{key:"vector",value:function(){return{x:this.rightSE.point.x.minus(this.leftSE.point.x),y:this.rightSE.point.y.minus(this.leftSE.point.y)}}},{key:"isAnEndpoint",value:function(t){return t.x.eq(this.leftSE.point.x)&&t.y.eq(this.leftSE.point.y)||t.x.eq(this.rightSE.point.x)&&t.y.eq(this.rightSE.point.y)}},{key:"comparePoint",value:function(t){return fs.orient(this.leftSE.point,t,this.rightSE.point)}},{key:"getIntersection",value:function(t){var e=this.bbox(),n=t.bbox(),r=ps(e,n);if(null===r)return null;var i=this.leftSE.point,o=this.rightSE.point,s=t.leftSE.point,a=t.rightSE.point,u=gs(e,s)&&0===this.comparePoint(s),l=gs(n,i)&&0===t.comparePoint(i),h=gs(e,a)&&0===this.comparePoint(a),c=gs(n,o)&&0===t.comparePoint(o);if(l&&u)return c&&!h?o:!c&&h?a:null;if(l)return h&&i.x.eq(a.x)&&i.y.eq(a.y)?null:i;if(u)return c&&o.x.eq(s.x)&&o.y.eq(s.y)?null:s;if(c&&h)return null;if(c)return o;if(h)return a;var f=function(t,e,n,r){if(e.x.isZero())return xs(n,r,t.x);if(r.x.isZero())return xs(t,e,n.x);if(e.y.isZero())return _s(n,r,t.y);if(r.y.isZero())return _s(t,e,n.y);var i=vs(e,r);if(i.isZero())return null;var o={x:n.x.minus(t.x),y:n.y.minus(t.y)},s=vs(o,e).div(i),a=vs(o,r).div(i),u=t.x.plus(a.times(e.x)),l=n.x.plus(s.times(r.x)),h=t.y.plus(a.times(e.y)),c=n.y.plus(s.times(r.y));return{x:u.plus(l).div(2),y:h.plus(c).div(2)}}(i,this.vector(),s,t.vector());return null===f?null:gs(r,f)?fs.snap(f):null}},{key:"split",value:function(e){var n=[],r=void 0!==e.events,i=new Es(e,!0),o=new Es(e,!1),s=this.rightSE;this.replaceRightSE(o),n.push(o),n.push(i);var a=new t(i,s,this.rings.slice(),this.windings.slice());return Es.comparePoints(a.leftSE.point,a.rightSE.point)>0&&a.swapEvents(),Es.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),r&&(i.checkForConsuming(),o.checkForConsuming()),n}},{key:"swapEvents",value:function(){var t=this.rightSE;this.rightSE=this.leftSE,this.leftSE=t,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(var e=0,n=this.windings.length;e<n;e++)this.windings[e]*=-1}},{key:"consume",value:function(e){for(var n=this,r=e;n.consumedBy;)n=n.consumedBy;for(;r.consumedBy;)r=r.consumedBy;var i=t.compare(n,r);if(0!==i){if(i>0){var o=n;n=r,r=o}if(n.prev===r){var s=n;n=r,r=s}for(var a=0,u=r.rings.length;a<u;a++){var l=r.rings[a],h=r.windings[a],c=n.rings.indexOf(l);-1===c?(n.rings.push(l),n.windings.push(h)):n.windings[c]+=h}r.rings=null,r.windings=null,r.consumedBy=n,r.leftSE.consumedBy=n.leftSE,r.rightSE.consumedBy=n.rightSE}}},{key:"prevInResult",value:function(){return void 0!==this._prevInResult||(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null),this._prevInResult}},{key:"beforeState",value:function(){if(void 0!==this._beforeState)return this._beforeState;if(this.prev){var t=this.prev.consumedBy||this.prev;this._beforeState=t.afterState()}else this._beforeState={rings:[],windings:[],multiPolys:[]};return this._beforeState}},{key:"afterState",value:function(){if(void 0!==this._afterState)return this._afterState;var t=this.beforeState();this._afterState={rings:t.rings.slice(0),windings:t.windings.slice(0),multiPolys:[]};for(var e=this._afterState.rings,n=this._afterState.windings,r=this._afterState.multiPolys,i=0,o=this.rings.length;i<o;i++){var s=this.rings[i],a=this.windings[i],u=e.indexOf(s);-1===u?(e.push(s),n.push(a)):n[u]+=a}for(var l=[],h=[],c=0,f=e.length;c<f;c++)if(0!==n[c]){var g=e[c],p=g.poly;if(-1===h.indexOf(p))if(g.isExterior)l.push(p);else{-1===h.indexOf(p)&&h.push(p);var v=l.indexOf(g.poly);-1!==v&&l.splice(v,1)}}for(var d=0,y=l.length;d<y;d++){var m=l[d].multiPoly;-1===r.indexOf(m)&&r.push(m)}return this._afterState}},{key:"isInResult",value:function(){if(this.consumedBy)return!1;if(void 0!==this._isInResult)return this._isInResult;var t=this.beforeState().multiPolys,e=this.afterState().multiPolys;switch(Ss.type){case"union":var n=0===t.length,r=0===e.length;this._isInResult=n!==r;break;case"intersection":var i,o;t.length<e.length?(i=t.length,o=e.length):(i=e.length,o=t.length),this._isInResult=o===Ss.numMultiPolys&&i<o;break;case"xor":var s=Math.abs(t.length-e.length);this._isInResult=s%2==1;break;case"difference":var a=function(t){return 1===t.length&&t[0].isSubject};this._isInResult=a(t)!==a(e)}return this._isInResult}}],[{key:"compare",value:function(t,e){var n=t.leftSE.point.x,r=e.leftSE.point.x,i=t.rightSE.point.x,o=e.rightSE.point.x;if(o.isLessThan(n))return 1;if(i.isLessThan(r))return-1;var s=t.leftSE.point.y,a=e.leftSE.point.y,u=t.rightSE.point.y,l=e.rightSE.point.y;if(n.isLessThan(r)){if(a.isLessThan(s)&&a.isLessThan(u))return 1;if(a.isGreaterThan(s)&&a.isGreaterThan(u))return-1;var h=t.comparePoint(e.leftSE.point);if(h<0)return 1;if(h>0)return-1;var c=e.comparePoint(t.rightSE.point);return 0!==c?c:-1}if(n.isGreaterThan(r)){if(s.isLessThan(a)&&s.isLessThan(l))return-1;if(s.isGreaterThan(a)&&s.isGreaterThan(l))return 1;var f=e.comparePoint(t.leftSE.point);if(0!==f)return f;var g=t.comparePoint(e.rightSE.point);return g<0?1:g>0?-1:1}if(s.isLessThan(a))return-1;if(s.isGreaterThan(a))return 1;if(i.isLessThan(o)){var p=e.comparePoint(t.rightSE.point);if(0!==p)return p}if(i.isGreaterThan(o)){var v=t.comparePoint(e.rightSE.point);if(v<0)return 1;if(v>0)return-1}if(!i.eq(o)){var d=u.minus(s),y=i.minus(n),m=l.minus(a),_=o.minus(r);if(d.isGreaterThan(y)&&m.isLessThan(_))return 1;if(d.isLessThan(y)&&m.isGreaterThan(_))return-1}return i.isGreaterThan(o)?1:i.isLessThan(o)||u.isLessThan(l)?-1:u.isGreaterThan(l)?1:t.id<e.id?-1:t.id>e.id?1:0}},{key:"fromRing",value:function(e,n,r){var i,o,s,a=Es.comparePoints(e,n);if(a<0)i=e,o=n,s=1;else{if(!(a>0))throw new Error("Tried to create degenerate segment at [".concat(e.x,", ").concat(e.y,"]"));i=n,o=e,s=-1}return new t(new Es(i,!0),new Es(o,!1),[r],[s])}}])}(),Ps=function(){return s((function t(e,n,r){if(i(this,t),u(this,"poly",void 0),u(this,"isExterior",void 0),u(this,"segments",void 0),u(this,"bbox",void 0),!Array.isArray(e)||0===e.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=n,this.isExterior=r,this.segments=[],"number"!=typeof e[0][0]||"number"!=typeof e[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");var o=fs.snap({x:new $o(e[0][0]),y:new $o(e[0][1])});this.bbox={ll:{x:o.x,y:o.y},ur:{x:o.x,y:o.y}};for(var s=o,a=1,l=e.length;a<l;a++){if("number"!=typeof e[a][0]||"number"!=typeof e[a][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");var h=fs.snap({x:new $o(e[a][0]),y:new $o(e[a][1])});h.x.eq(s.x)&&h.y.eq(s.y)||(this.segments.push(Ls.fromRing(s,h,this)),h.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=h.x),h.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=h.y),h.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=h.x),h.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=h.y),s=h)}o.x.eq(s.x)&&o.y.eq(s.y)||this.segments.push(Ls.fromRing(s,o,this))}),[{key:"getSweepEvents",value:function(){for(var t=[],e=0,n=this.segments.length;e<n;e++){var r=this.segments[e];t.push(r.leftSE),t.push(r.rightSE)}return t}}])}(),Cs=function(){return s((function t(e,n){if(i(this,t),u(this,"multiPoly",void 0),u(this,"exteriorRing",void 0),u(this,"interiorRings",void 0),u(this,"bbox",void 0),!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new Ps(e[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(var r=1,o=e.length;r<o;r++){var s=new Ps(e[r],this,!1);s.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=s.bbox.ll.x),s.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=s.bbox.ll.y),s.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=s.bbox.ur.x),s.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=s.bbox.ur.y),this.interiorRings.push(s)}this.multiPoly=n}),[{key:"getSweepEvents",value:function(){for(var t=this.exteriorRing.getSweepEvents(),e=0,n=this.interiorRings.length;e<n;e++)for(var r=this.interiorRings[e].getSweepEvents(),i=0,o=r.length;i<o;i++)t.push(r[i]);return t}}])}(),Ts=function(){return s((function t(e,n){if(i(this,t),u(this,"isSubject",void 0),u(this,"polys",void 0),u(this,"bbox",void 0),!Array.isArray(e))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{"number"==typeof e[0][0][0]&&(e=[e])}catch(t){}this.polys=[],this.bbox={ll:{x:new $o(Number.POSITIVE_INFINITY),y:new $o(Number.POSITIVE_INFINITY)},ur:{x:new $o(Number.NEGATIVE_INFINITY),y:new $o(Number.NEGATIVE_INFINITY)}};for(var r=0,o=e.length;r<o;r++){var s=new Cs(e[r],this);s.bbox.ll.x.isLessThan(this.bbox.ll.x)&&(this.bbox.ll.x=s.bbox.ll.x),s.bbox.ll.y.isLessThan(this.bbox.ll.y)&&(this.bbox.ll.y=s.bbox.ll.y),s.bbox.ur.x.isGreaterThan(this.bbox.ur.x)&&(this.bbox.ur.x=s.bbox.ur.x),s.bbox.ur.y.isGreaterThan(this.bbox.ur.y)&&(this.bbox.ur.y=s.bbox.ur.y),this.polys.push(s)}this.isSubject=n}),[{key:"getSweepEvents",value:function(){for(var t=[],e=0,n=this.polys.length;e<n;e++)for(var r=this.polys[e].getSweepEvents(),i=0,o=r.length;i<o;i++)t.push(r[i]);return t}}])}(),Os=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return Ss.run("union",t,n)},Rs=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return Ss.run("intersection",t,n)},As=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return Ss.run("difference",t,n)},Ds=fs.set,Fs=Object.freeze({__proto__:null,difference:As,intersection:Rs,setPrecision:Ds,union:Os,xor:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return Ss.run("xor",t,n)}});function qs(t){if(!t)throw new Error("geojson is required");var e=[];return xt(t,(function(t){e.push(t)})),C(e)}function Vs(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,r=K(t),i=K(e),o=r[0]-i[0],s=r[1]-i[1];return 1===n?Math.abs(o)+Math.abs(s):Math.pow(Math.pow(o,n)+Math.pow(s,n),1/n)}function Gs(t,e){var n,r,i=(e=e||{}).threshold||1e4,o=e.p||2,s=null!=(n=e.binary)&&n,a=e.alpha||-1,u=null!=(r=e.standardization)&&r,l=[];vt(t,(function(t){l.push(gi(t))}));for(var h=[],c=0;c<l.length;c++)h[c]=[];for(var f=0;f<l.length;f++)for(var g=f;g<l.length;g++){f===g&&(h[f][g]=0);var p=Vs(l[f],l[g],o);h[f][g]=p,h[g][f]=p}for(var v=0;v<l.length;v++)for(var d=0;d<l.length;d++){var y=h[v][d];0!==y&&(h[v][d]=s?y<=i?1:0:y<=i?Math.pow(y,a):0)}if(u)for(var m=0;m<l.length;m++)for(var _=h[m].reduce((function(t,e){return t+e}),0),x=0;x<l.length;x++)h[m][x]=h[m][x]/_;return h}function Bs(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=e<0,o=j(Math.abs(e),r.units,"meters");i&&(o=-Math.abs(o));var s=K(t),a=function(t,e,n,r){r=void 0===r?x:Number(r);var i=e/r,o=t[0]*Math.PI/180,s=z(t[1]),a=z(n),u=i*Math.cos(a),l=s+u;Math.abs(l)>Math.PI/2&&(l=l>0?Math.PI-l:-Math.PI-l);var h=Math.log(Math.tan(l/2+Math.PI/4)/Math.tan(s/2+Math.PI/4)),c=Math.abs(h)>1e-11?u/h:Math.cos(s),f=i*Math.sin(a)/c;return[(180*(o+f)/Math.PI+540)%360-180,180*l/Math.PI]}(s,o,n);return a[0]+=a[0]-s[0]>180?-360:s[0]-a[0]>180?360:0,I(a,r.properties)}function Ys(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=K(t),i=K(e);i[0]+=i[0]-r[0]>180?-360:r[0]-i[0]>180?360:0;var o=function(t,e,n){var r=n=void 0===n?x:Number(n),i=t[1]*Math.PI/180,o=e[1]*Math.PI/180,s=o-i,a=Math.abs(e[0]-t[0])*Math.PI/180;a>Math.PI&&(a-=2*Math.PI);var u=Math.log(Math.tan(o/2+Math.PI/4)/Math.tan(i/2+Math.PI/4)),l=Math.abs(u)>1e-11?s/u:Math.cos(i);return Math.sqrt(s*s+l*l*a*a)*r}(r,i);return j(o,"meters",n.units)}function zs(t,e,n){if(!Z(n=n||{}))throw new Error("options is invalid");var r=n.pivot,i=n.mutate;if(!t)throw new Error("geojson is required");if(null==e||isNaN(e))throw new Error("angle is required");if(0===e)return t;var o=null!=r?r:gi(t);return!1!==i&&void 0!==i||(t=Ai(t)),ct(t,(function(t){var n=lt(o,t)+e,r=Ys(o,t),i=Q(Bs(o,r,n));t[0]=i[0],t[1]=i[1]})),t}function js(t,e,n,r){var i=(r=r||{}).steps||64,o=r.units||"kilometers",s=r.angle||0,a=r.pivot||t,u=r.properties||{};if(!t)throw new Error("center is required");if(!e)throw new Error("xSemiAxis is required");if(!n)throw new Error("ySemiAxis is required");if(!Z(r))throw new Error("options must be an object");if(!U(i))throw new Error("steps must be a number");if(!U(s))throw new Error("angle must be a number");var l=K(t);if("degrees"!==o){var h=Bs(t,e,90,{units:o}),c=Bs(t,n,0,{units:o});e=K(h)[0]-l[0],n=K(c)[1]-l[1]}for(var f=[],g=0;g<i;g+=1){var p=-360*g/i,v=e*n/Math.sqrt(Math.pow(n,2)+Math.pow(e,2)*Math.pow(Xs(p),2)),d=e*n/Math.sqrt(Math.pow(e,2)+Math.pow(n,2)/Math.pow(Xs(p),2));if(p<-90&&p>=-270&&(v=-v),p<-180&&p>=-360&&(d=-d),"degrees"===o){var y=z(s),m=v*Math.cos(y)+d*Math.sin(y),_=d*Math.cos(y)-v*Math.sin(y);v=m,d=_}f.push([v+l[0],d+l[1]])}return f.push(f[0]),"degrees"===o?S([f],u):zs(S([f],u),s,{pivot:a})}function Xs(t){var e=t*Math.PI/180;return Math.tan(e)}function Us(t){return Vt(Rt(t))}function Zs(t){var e=[];return"FeatureCollection"===t.type?vt(t,(function(t){ct(t,(function(n){e.push(I(n,t.properties))}))})):"Feature"===t.type?ct(t,(function(n){e.push(I(n,t.properties))})):ct(t,(function(t){e.push(I(t))})),C(e)}var Hs=Math.PI/180,Ws=180/Math.PI,Js=function(t,e){this.lon=t,this.lat=e,this.x=Hs*t,this.y=Hs*e};Js.prototype.view=function(){return String(this.lon).slice(0,4)+","+String(this.lat).slice(0,4)},Js.prototype.antipode=function(){var t=-1*this.lat,e=this.lon<0?180+this.lon:-1*(180-this.lon);return new Js(e,t)};var Ks=function(){this.coords=[],this.length=0};Ks.prototype.move_to=function(t){this.length++,this.coords.push(t)};var Qs=function(t){this.properties=t||{},this.geometries=[]};Qs.prototype.json=function(){if(this.geometries.length<=0)return{geometry:{type:"LineString",coordinates:null},type:"Feature",properties:this.properties};if(1===this.geometries.length)return{geometry:{type:"LineString",coordinates:this.geometries[0].coords},type:"Feature",properties:this.properties};for(var t=[],e=0;e<this.geometries.length;e++)t.push(this.geometries[e].coords);return{geometry:{type:"MultiLineString",coordinates:t},type:"Feature",properties:this.properties}},Qs.prototype.wkt=function(){for(var t="",e="LINESTRING(",n=function(t){e+=t[0]+" "+t[1]+","},r=0;r<this.geometries.length;r++){if(0===this.geometries[r].coords.length)return"LINESTRING(empty)";this.geometries[r].coords.forEach(n),t+=e.substring(0,e.length-1)+")"}return t};var $s=function(t,e,n){if(!t||void 0===t.x||void 0===t.y)throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");if(!e||void 0===e.x||void 0===e.y)throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");this.start=new Js(t.x,t.y),this.end=new Js(e.x,e.y),this.properties=n||{};var r=this.start.x-this.end.x,i=this.start.y-this.end.y,o=Math.pow(Math.sin(i/2),2)+Math.cos(this.start.y)*Math.cos(this.end.y)*Math.pow(Math.sin(r/2),2);if(this.g=2*Math.asin(Math.sqrt(o)),this.g===Math.PI)throw new Error("it appears "+t.view()+" and "+e.view()+" are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite");if(isNaN(this.g))throw new Error("could not calculate great circle between "+t+" and "+e)};
/*!
   * Copyright (c) 2019, Dane Springmeyer
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are
   * met:
   *
   *     * Redistributions of source code must retain the above copyright
   *       notice, this list of conditions and the following disclaimer.
   *     * Redistributions in binary form must reproduce the above copyright
   *       notice, this list of conditions and the following disclaimer in
   *       the documentation and/or other materials provided with the
   *       distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
function ta(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];if(mt(t,(function(t){n.push(t.coordinates)})),n.length<2)throw new Error("Must specify at least 2 geometries");var r=Rs.apply(Fs,[n[0]].concat(d(n.slice(1))));return 0===r.length?null:1===r.length?S(r[0],e.properties):R(r,e.properties)}function ea(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=JSON.stringify(n.properties||{}),i=v(t,4),o=i[0],s=i[1],a=i[2],u=i[3],l=(s+u)/2,h=(o+a)/2,c=2*e/ut([o,l],[a,l],n)*(a-o),f=2*e/ut([h,s],[h,u],n)*(u-s),g=c/2,p=2*g,d=Math.sqrt(3)/2*f,y=a-o,m=u-s,_=3/4*p,x=d,E=(y-p)/(p-g/2),k=Math.floor(E),b=(k*_-g/2-y)/2-g/2+_/2,w=Math.floor((m-d)/d),I=(m-w*d)/2,N=w*d-m>d/2;N&&(I-=d/4);for(var S=[],M=[],L=0;L<6;L++){var P=2*Math.PI/6*L;S.push(Math.cos(P)),M.push(Math.sin(P))}for(var T=[],O=0;O<=k;O++)for(var R=0;R<=w;R++){var A=O%2==1;if((0!==R||!A)&&(0!==R||!N)){var D=O*_+o-b,F=R*x+s+I;if(A&&(F-=d/2),!0===n.triangles)ra([D,F],c/2,f/2,JSON.parse(r),S,M).forEach((function(t){n.mask?ta(C([n.mask,t]))&&T.push(t):T.push(t)}));else{var q=na([D,F],c/2,f/2,JSON.parse(r),S,M);n.mask?ta(C([n.mask,q]))&&T.push(q):T.push(q)}}}return C(T)}function na(t,e,n,r,i,o){for(var s=[],a=0;a<6;a++){var u=t[0]+e*i[a],l=t[1]+n*o[a];s.push([u,l])}return s.push(s[0].slice()),S([s],r)}function ra(t,e,n,r,i,o){for(var s=[],a=0;a<6;a++){var u=[];u.push(t),u.push([t[0]+e*i[a],t[1]+n*o[a]]),u.push([t[0]+e*i[(a+1)%6],t[1]+n*o[(a+1)%6]]),u.push(t),s.push(S([u],r))}return s}function ia(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n.mask&&!n.units&&(n.units="kilometers");for(var r=[],i=t[0],o=t[1],s=t[2],a=t[3],u=e/ut([i,o],[s,o],n)*(s-i),l=e/ut([i,o],[i,a],n)*(a-o),h=s-i,c=a-o,f=Math.floor(h/u),g=(c-Math.floor(c/l)*l)/2,p=i+(h-f*u)/2;p<=s;){for(var v=o+g;v<=a;){var d=I([p,v],n.properties);n.mask?Cn(d,n.mask)&&r.push(d):r.push(d),v+=l}p+=u}return C(r)}function oa(t,e,n){for(var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=[],o=t[0],s=t[1],a=t[2],u=t[3],l=a-o,h=j(e,r.units,"degrees"),c=u-s,f=j(n,r.units,"degrees"),g=Math.floor(Math.abs(l)/h),p=Math.floor(Math.abs(c)/f),v=(c-p*f)/2,d=o+(l-g*h)/2,y=0;y<g;y++){for(var m=s+v,_=0;_<p;_++){var x=S([[[d,m],[d,m+f],[d+h,m+f],[d+h,m],[d,m]]],r.properties);r.mask?Oe(r.mask,x)&&i.push(x):i.push(x),m+=f}d+=h}return C(i)}function sa(t,e){return oa(t,e,e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})}function aa(t,e){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=[],i=e/ut([t[0],t[1]],[t[2],t[1]],n)*(t[2]-t[0]),o=e/ut([t[0],t[1]],[t[0],t[3]],n)*(t[3]-t[1]),s=0,a=t[0];a<=t[2];){for(var u=0,l=t[1];l<=t[3];){var h=null,c=null;s%2==0&&u%2==0?(h=S([[[a,l],[a,l+o],[a+i,l],[a,l]]],n.properties),c=S([[[a,l+o],[a+i,l+o],[a+i,l],[a,l+o]]],n.properties)):s%2==0&&u%2==1?(h=S([[[a,l],[a+i,l+o],[a+i,l],[a,l]]],n.properties),c=S([[[a,l],[a,l+o],[a+i,l+o],[a,l]]],n.properties)):u%2==0&&s%2==1?(h=S([[[a,l],[a,l+o],[a+i,l+o],[a,l]]],n.properties),c=S([[[a,l],[a+i,l+o],[a+i,l],[a,l]]],n.properties)):u%2==1&&s%2==1&&(h=S([[[a,l],[a,l+o],[a+i,l],[a,l]]],n.properties),c=S([[[a,l+o],[a+i,l+o],[a+i,l],[a,l+o]]],n.properties)),n.mask?(ta(C([n.mask,h]))&&r.push(h),ta(C([n.mask,c]))&&r.push(c)):(r.push(h),r.push(c)),l+=o,u++}s++,a+=i}return C(r)}
/*!
  * MarchingSquaresJS
  * version 1.3.3
  * https://github.com/RaumZeit/MarchingSquares.js
  *
  * @license GNU Affero General Public License.
  * Copyright (c) 2015-2019 Ronny Lorenz <ronny@tbi.univie.ac.at>
  */
function ua(t,e,n){return t<e?(n-t)/(e-t):(t-n)/(t-e)}function la(t,e,n,r){var i;return n>r&&(i=n,n=r,r=i),t<e?t<n?(n-t)/(e-t):(r-t)/(e-t):t>r?(t-r)/(t-e):(t-n)/(t-e)}function ha(t,e,n,r){return t<e?(n-t)/(e-t):(t-r)/(t-e)}function ca(t,e,n,r){return t<e?(r-t)/(e-t):(t-n)/(t-e)}function fa(){this.successCallback=null,this.verbose=!1,this.polygons=!1,this.polygons_full=!1,this.linearRing=!0,this.noQuadTree=!1,this.noFrame=!1}function ga(t,e,n,r){var i=[];return t.polygons.forEach((function(t){t.forEach((function(t){t[0]+=e,t[1]+=n})),r.linearRing&&t.push(t[0]),i.push(t)})),i}function pa(t,e,n,r){return 0===n?(t+=1,e+=r[0][1]):1===n?t+=r[0][0]:2===n?e+=r[0][1]:3===n&&(t+=r[0][0],e+=1),[t,e]}function va(t,e,n){return 0===n?t++:1===n||(2===n?e++:3===n&&(t++,e++)),[t,e]}function da(t,e,n,r,i){var o=r,s=i,a=0,u=0;if(this.x=e,this.y=n,this.lowerBound=null,this.upperBound=null,this.childA=null,this.childB=null,this.childC=null,this.childD=null,1===r&&1===i)this.lowerBound=Math.min(t[n][e],t[n][e+1],t[n+1][e+1],t[n+1][e]),this.upperBound=Math.max(t[n][e],t[n][e+1],t[n+1][e+1],t[n+1][e]);else{if(r>1){for(;0!==o;)o>>=1,a++;r===1<<a-1&&a--,o=1<<a-1}if(i>1){for(;0!==s;)s>>=1,u++;i===1<<u-1&&u--,s=1<<u-1}this.childA=new da(t,e,n,o,s),this.lowerBound=this.childA.lowerBound,this.upperBound=this.childA.upperBound,r-o>0&&(this.childB=new da(t,e+o,n,r-o,s),this.lowerBound=Math.min(this.lowerBound,this.childB.lowerBound),this.upperBound=Math.max(this.upperBound,this.childB.upperBound),i-s>0&&(this.childC=new da(t,e+o,n+s,r-o,i-s),this.lowerBound=Math.min(this.lowerBound,this.childC.lowerBound),this.upperBound=Math.max(this.upperBound,this.childC.upperBound))),i-s>0&&(this.childD=new da(t,e,n+s,o,i-s),this.lowerBound=Math.min(this.lowerBound,this.childD.lowerBound),this.upperBound=Math.max(this.upperBound,this.childD.upperBound))}}function ya(t){var e,n;if(!t)throw new Error("data is required");if(!Array.isArray(t)||!Array.isArray(t[0]))throw new Error("data must be scalar field, i.e. array of arrays");if(t.length<2)throw new Error("data must contain at least two rows");if((n=t[0].length)<2)throw new Error("data must contain at least two columns");for(e=1;e<t.length;e++){if(!Array.isArray(t[e]))throw new Error("Row "+e+" is not an array");if(t[e].length!=n)throw new Error("unequal row lengths detected, please provide a regular grid")}this.data=t,this.root=new da(t,0,0,t[0].length-1,t.length-1)}function ma(t,e,n){var r,i,o,s=!1,a=!1,u=null,l=null,h=null,c=null,f=null,g=[];if(!t)throw new Error("data is required");if(null==e)throw new Error("threshold is required");if(n&&"object"!==m(n))throw new Error("options must be an object");if(r=function(t){var e,n,r,i,o;for(i=new fa,t=t||{},o=Object.keys(i),e=0;e<o.length;e++)null!=(r=t[n=o[e]])&&(i[n]=r);return i.polygons_full=!i.polygons,i.interpolate=ua,i}(n),t instanceof ya)u=t,l=t.root,h=t.data,r.noQuadTree||(s=!0);else{if(!Array.isArray(t)||!Array.isArray(t[0]))throw new Error("input is neither array of arrays nor object retrieved from 'QuadTree()'");h=t}if(Array.isArray(e)){for(a=!0,r.noQuadTree||(s=!0),i=0;i<e.length;i++)if(isNaN(+e[i]))throw new Error("threshold["+i+"] is not a number")}else{if(isNaN(+e))throw new Error("threshold must be a number or array of numbers");e=[e]}return s&&!l&&(u=new ya(h),l=u.root,h=u.data),r.verbose&&(r.polygons?console.log("MarchingSquaresJS-isoLines: returning single lines (polygons) for each grid cell"):console.log("MarchingSquaresJS-isoLines: returning line paths (polygons) for entire data grid"),a&&console.log("MarchingSquaresJS-isoLines: multiple lines requested, returning array of line paths instead of lines for a single threshold")),e.forEach((function(t,e){if(f=[],r.threshold=t,r.verbose&&console.log("MarchingSquaresJS-isoLines: computing iso lines for threshold "+t),r.polygons)if(s)l.cellsBelowThreshold(r.threshold,!0).forEach((function(t){f=f.concat(ga(_a(h,t.x,t.y,r),t.x,t.y,r))}));else for(o=0;o<h.length-1;++o)for(e=0;e<h[0].length-1;++e)f=f.concat(ga(_a(h,e,o,r),e,o,r));else{for(c=[],e=0;e<h[0].length-1;++e)c[e]=[];if(s)l.cellsBelowThreshold(r.threshold,!1).forEach((function(t){c[t.x][t.y]=_a(h,t.x,t.y,r)}));else for(e=0;e<h[0].length-1;++e)for(o=0;o<h.length-1;++o)c[e][o]=_a(h,e,o,r);f=function(t,e,n){var r,i,o,s,a,u,l,h,c,f,g,p,v,d,y,_=[],x=t.length-1,E=t[0].length-1,k=["right","bottom","left","top"],b=[0,-1,0,1],w=[-1,0,1,0],I={bottom:1,left:2,top:3,right:0};return n.noFrame||function(t,e){var n,r,i,o,s;for(n=!0,r=t[0].length,i=t.length,s=0;s<i;s++)if(t[s][0]>=e||t[s][r-1]>=e){n=!1;break}if(n&&(t[i-1][0]>=e||t[i-1][r-1]>=e)&&(n=!1),n)for(o=0;o<r-1;o++)if(t[0][o]>=e||t[i-1][o]>e){n=!1;break}return n}(t,n.threshold)&&(n.linearRing?_.push([[0,0],[0,x],[E,x],[E,0],[0,0]]):_.push([[0,0],[0,x],[E,x],[E,0]])),e.forEach((function(t,N){t.forEach((function(t,S){for(r=null,i=0;i<4;i++)if(r=k[i],"object"===m(t.edges[r])){for(a=[],o=t.edges[r],u=r,l=N,h=S,c=!1,f=[N+o.path[0][0],S+o.path[0][1]],a.push(f);!c&&"object"===m((s=e[l][h]).edges[u]);)if(o=s.edges[u],delete s.edges[u],(g=o.path[1])[0]+=l,g[1]+=h,a.push(g),u=o.move.enter,l+=o.move.x,h+=o.move.y,void 0===e[l]||void 0===e[l][h]){if(!n.linearRing)break;if(p=0,v=0,l===E?(l--,p=0):l<0?(l++,p=2):h===x?(h--,p=3):h<0&&(h++,p=1),l===N&&h===S&&p===I[r]){c=!0,u=r;break}for(;;){if(d=!1,v>4)throw new Error("Direction change counter overflow! This should never happen!");if(void 0!==e[l]&&void 0!==e[l][h]&&(s=e[l][h],y=k[p],"object"===m(s.edges[y]))){o=s.edges[y],a.push(pa(l,h,p,o.path)),u=y,d=!0;break}if(d)break;if(a.push(va(l,h,p)),h+=w[p],void 0!==e[l+=b[p]]&&void 0!==e[l][h]||(0===p&&h<0||1===p&&l<0||2===p&&h===x||3===p&&l===E)&&(l-=b[p],h-=w[p],p=(p+1)%4,v++),l===N&&h===S&&p===I[r]){c=!0,u=r;break}}}!n.linearRing||a[a.length-1][0]===f[0]&&a[a.length-1][1]===f[1]||a.push(f),_.push(a)}}))})),_}(h,c,r)}a?g.push(f):g=f,"function"==typeof r.successCallback&&r.successCallback(g,t)})),g}function _a(t,e,n,r){var i,o,s,a,u,l,h=0,c=t[n+1][e],f=t[n+1][e+1],g=t[n][e+1],p=t[n][e],v=r.threshold;if(!(isNaN(p)||isNaN(g)||isNaN(f)||isNaN(c))){switch(h|=c>=v?8:0,h|=f>=v?4:0,h|=g>=v?2:0,l={cval:h=+(h|=p>=v?1:0),polygons:[],edges:{},x0:p,x1:g,x2:f,x3:c},h){case 0:r.polygons&&l.polygons.push([[0,0],[0,1],[1,1],[1,0]]);break;case 15:break;case 14:i=r.interpolate(p,c,v),a=r.interpolate(p,g,v),r.polygons_full&&(l.edges.left={path:[[0,i],[a,0]],move:{x:0,y:-1,enter:"top"}}),r.polygons&&l.polygons.push([[0,0],[0,i],[a,0]]);break;case 13:a=r.interpolate(p,g,v),o=r.interpolate(g,f,v),r.polygons_full&&(l.edges.bottom={path:[[a,0],[1,o]],move:{x:1,y:0,enter:"left"}}),r.polygons&&l.polygons.push([[a,0],[1,o],[1,0]]);break;case 11:o=r.interpolate(g,f,v),s=r.interpolate(c,f,v),r.polygons_full&&(l.edges.right={path:[[1,o],[s,1]],move:{x:0,y:1,enter:"bottom"}}),r.polygons&&l.polygons.push([[1,o],[s,1],[1,1]]);break;case 7:i=r.interpolate(p,c,v),s=r.interpolate(c,f,v),r.polygons_full&&(l.edges.top={path:[[s,1],[0,i]],move:{x:-1,y:0,enter:"right"}}),r.polygons&&l.polygons.push([[s,1],[0,i],[0,1]]);break;case 1:i=r.interpolate(p,c,v),a=r.interpolate(p,g,v),r.polygons_full&&(l.edges.bottom={path:[[a,0],[0,i]],move:{x:-1,y:0,enter:"right"}}),r.polygons&&l.polygons.push([[a,0],[0,i],[0,1],[1,1],[1,0]]);break;case 2:a=r.interpolate(p,g,v),o=r.interpolate(g,f,v),r.polygons_full&&(l.edges.right={path:[[1,o],[a,0]],move:{x:0,y:-1,enter:"top"}}),r.polygons&&l.polygons.push([[0,0],[0,1],[1,1],[1,o],[a,0]]);break;case 4:o=r.interpolate(g,f,v),s=r.interpolate(c,f,v),r.polygons_full&&(l.edges.top={path:[[s,1],[1,o]],move:{x:1,y:0,enter:"left"}}),r.polygons&&l.polygons.push([[0,0],[0,1],[s,1],[1,o],[1,0]]);break;case 8:i=r.interpolate(p,c,v),s=r.interpolate(c,f,v),r.polygons_full&&(l.edges.left={path:[[0,i],[s,1]],move:{x:0,y:1,enter:"bottom"}}),r.polygons&&l.polygons.push([[0,0],[0,i],[s,1],[1,1],[1,0]]);break;case 12:i=r.interpolate(p,c,v),o=r.interpolate(g,f,v),r.polygons_full&&(l.edges.left={path:[[0,i],[1,o]],move:{x:1,y:0,enter:"left"}}),r.polygons&&l.polygons.push([[0,0],[0,i],[1,o],[1,0]]);break;case 9:a=r.interpolate(p,g,v),s=r.interpolate(c,f,v),r.polygons_full&&(l.edges.bottom={path:[[a,0],[s,1]],move:{x:0,y:1,enter:"bottom"}}),r.polygons&&l.polygons.push([[a,0],[s,1],[1,1],[1,0]]);break;case 3:i=r.interpolate(p,c,v),o=r.interpolate(g,f,v),r.polygons_full&&(l.edges.right={path:[[1,o],[0,i]],move:{x:-1,y:0,enter:"right"}}),r.polygons&&l.polygons.push([[0,i],[0,1],[1,1],[1,o]]);break;case 6:a=r.interpolate(p,g,v),s=r.interpolate(c,f,v),r.polygons_full&&(l.edges.top={path:[[s,1],[a,0]],move:{x:0,y:-1,enter:"top"}}),r.polygons&&l.polygons.push([[0,0],[0,1],[s,1],[a,0]]);break;case 10:i=r.interpolate(p,c,v),o=r.interpolate(g,f,v),a=r.interpolate(p,g,v),s=r.interpolate(c,f,v),u=(p+g+f+c)/4,r.polygons_full&&(u<v?(l.edges.left={path:[[0,i],[s,1]],move:{x:0,y:1,enter:"bottom"}},l.edges.right={path:[[1,o],[a,0]],move:{x:0,y:-1,enter:"top"}}):(l.edges.right={path:[[1,o],[s,1]],move:{x:0,y:1,enter:"bottom"}},l.edges.left={path:[[0,i],[a,0]],move:{x:0,y:-1,enter:"top"}})),r.polygons&&(u<v?l.polygons.push([[0,0],[0,i],[s,1],[1,1],[1,o],[a,0]]):(l.polygons.push([[0,0],[0,i],[a,0]]),l.polygons.push([[s,1],[1,1],[1,o]])));break;case 5:i=r.interpolate(p,c,v),o=r.interpolate(g,f,v),a=r.interpolate(p,g,v),s=r.interpolate(c,f,v),u=(p+g+f+c)/4,r.polygons_full&&(u<v?(l.edges.bottom={path:[[a,0],[0,i]],move:{x:-1,y:0,enter:"right"}},l.edges.top={path:[[s,1],[1,o]],move:{x:1,y:0,enter:"left"}}):(l.edges.top={path:[[s,1],[0,i]],move:{x:-1,y:0,enter:"right"}},l.edges.bottom={path:[[a,0],[1,o]],move:{x:1,y:0,enter:"left"}})),r.polygons&&(u<v?l.polygons.push([[0,i],[0,1],[s,1],[1,o],[1,0],[a,0]]):(l.polygons.push([[0,i],[0,1],[s,1]]),l.polygons.push([[a,0],[1,o],[1,0]])))}return l}}$s.prototype.interpolate=function(t){var e=Math.sin((1-t)*this.g)/Math.sin(this.g),n=Math.sin(t*this.g)/Math.sin(this.g),r=e*Math.cos(this.start.y)*Math.cos(this.start.x)+n*Math.cos(this.end.y)*Math.cos(this.end.x),i=e*Math.cos(this.start.y)*Math.sin(this.start.x)+n*Math.cos(this.end.y)*Math.sin(this.end.x),o=e*Math.sin(this.start.y)+n*Math.sin(this.end.y),s=Ws*Math.atan2(o,Math.sqrt(Math.pow(r,2)+Math.pow(i,2)));return[Ws*Math.atan2(i,r),s]},$s.prototype.Arc=function(t,e){var n=[];if(!t||t<=2)n.push([this.start.lon,this.start.lat]),n.push([this.end.lon,this.end.lat]);else for(var r=1/(t-1),i=0;i<t;++i){var o=r*i,s=this.interpolate(o);n.push(s)}for(var a=!1,u=0,l=e&&e.offset?e.offset:10,h=180-l,c=-180+l,f=360-l,g=1;g<n.length;++g){var p=n[g-1][0],v=n[g][0],d=Math.abs(v-p);d>f&&(v>h&&p<c||p>h&&v<c)?a=!0:d>u&&(u=d)}var y=[];if(a&&u<l){var m=[];y.push(m);for(var _=0;_<n.length;++_){var x=parseFloat(n[_][0]);if(_>0&&Math.abs(x-n[_-1][0])>f){var E=parseFloat(n[_-1][0]),k=parseFloat(n[_-1][1]),b=parseFloat(n[_][0]),w=parseFloat(n[_][1]);if(E>-180&&E<c&&180===b&&_+1<n.length&&n[_-1][0]>-180&&n[_-1][0]<c){m.push([-180,n[_][1]]),_++,m.push([n[_][0],n[_][1]]);continue}if(E>h&&E<180&&-180===b&&_+1<n.length&&n[_-1][0]>h&&n[_-1][0]<180){m.push([180,n[_][1]]),_++,m.push([n[_][0],n[_][1]]);continue}if(E<c&&b>h){var I=E;E=b,b=I;var N=k;k=w,w=N}if(E>h&&b<c&&(b+=360),E<=180&&b>=180&&E<b){var S=(180-E)/(b-E),M=S*w+(1-S)*k;m.push([n[_-1][0]>h?180:-180,M]),(m=[]).push([n[_-1][0]>h?-180:180,M]),y.push(m)}else m=[],y.push(m);m.push([x,n[_][1]])}else m.push([n[_][0],n[_][1]])}}else{var L=[];y.push(L);for(var P=0;P<n.length;++P)L.push([n[P][0],n[P][1]])}for(var C=new Qs(this.properties),T=0;T<y.length;++T){var O=new Ks;C.geometries.push(O);for(var R=y[T],A=0;A<R.length;++A)O.move_to(R[A])}return C},da.prototype.cellsInBand=function(t,e,n){var r=[];return n=void 0===n||n,this.lowerBound>e||this.upperBound<t||(this.childA||this.childB||this.childC||this.childD?(this.childA&&(r=r.concat(this.childA.cellsInBand(t,e,n))),this.childB&&(r=r.concat(this.childB.cellsInBand(t,e,n))),this.childD&&(r=r.concat(this.childD.cellsInBand(t,e,n))),this.childC&&(r=r.concat(this.childC.cellsInBand(t,e,n)))):(n||this.lowerBound<=t||this.upperBound>=e)&&r.push({x:this.x,y:this.y})),r},da.prototype.cellsBelowThreshold=function(t,e){var n=[];return e=void 0===e||e,this.lowerBound>t||(this.childA||this.childB||this.childC||this.childD?(this.childA&&(n=n.concat(this.childA.cellsBelowThreshold(t,e))),this.childB&&(n=n.concat(this.childB.cellsBelowThreshold(t,e))),this.childD&&(n=n.concat(this.childD.cellsBelowThreshold(t,e))),this.childC&&(n=n.concat(this.childC.cellsBelowThreshold(t,e)))):(e||this.upperBound>=t)&&n.push({x:this.x,y:this.y})),n};var xa={square:function(t,e,n,r,i,o){o.polygons&&t.polygons.push([[0,0],[0,1],[1,1],[1,0]])},triangle_bl:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate(e,i,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,a],[s,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,a],[s,0],[0,0]])},triangle_br:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[s,0],[1,a]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[s,0],[1,a],[1,0]])},triangle_tr:function(t,e,n,r,i,o){var s=o.interpolate(n,r,o.minV,o.maxV),a=o.interpolate(i,r,o.minV,o.maxV);o.polygons_full&&(t.edges.rt={path:[[1,s],[a,1]],move:{x:0,y:1,enter:"br"}}),o.polygons&&t.polygons.push([[1,s],[a,1],[1,1]])},triangle_tl:function(t,e,n,r,i,o){var s=o.interpolate(i,r,o.minV,o.maxV),a=o.interpolate(e,i,o.minV,o.maxV);o.polygons_full&&(t.edges.tl={path:[[s,1],[0,a]],move:{x:-1,y:0,enter:"rt"}}),o.polygons&&t.polygons.push([[0,a],[0,1],[s,1]])},tetragon_t:function(t,e,n,r,i,o){var s=o.interpolate(n,r,o.minV,o.maxV),a=o.interpolate(e,i,o.minV,o.maxV);o.polygons_full&&(t.edges.rt={path:[[1,s],[0,a]],move:{x:-1,y:0,enter:"rt"}}),o.polygons&&t.polygons.push([[0,a],[0,1],[1,1],[1,s]])},tetragon_r:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate(i,r,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[s,0],[a,1]],move:{x:0,y:1,enter:"br"}}),o.polygons&&t.polygons.push([[s,0],[a,1],[1,1],[1,0]])},tetragon_b:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,s],[1,a]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[0,0],[0,s],[1,a],[1,0]])},tetragon_l:function(t,e,n,r,i,o){var s=o.interpolate(i,r,o.minV,o.maxV),a=o.interpolate(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.tl={path:[[s,1],[a,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,0],[0,1],[s,1],[a,0]])},tetragon_bl:function(t,e,n,r,i,o){var s=o.interpolate_a(e,n,o.minV,o.maxV),a=o.interpolate_b(e,n,o.minV,o.maxV),u=o.interpolate_a(e,i,o.minV,o.maxV),l=o.interpolate_b(e,i,o.minV,o.maxV);o.polygons_full&&(t.edges.bl={path:[[s,0],[0,u]],move:{x:-1,y:0,enter:"rb"}},t.edges.lt={path:[[0,l],[a,0]],move:{x:0,y:-1,enter:"tr"}}),o.polygons&&t.polygons.push([[s,0],[0,u],[0,l],[a,0]])},tetragon_br:function(t,e,n,r,i,o){var s=o.interpolate_a(e,n,o.minV,o.maxV),a=o.interpolate_b(e,n,o.minV,o.maxV),u=o.interpolate_a(n,r,o.minV,o.maxV),l=o.interpolate_b(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.bl={path:[[s,0],[1,l]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,u],[a,0]],move:{x:0,y:-1,enter:"tr"}}),o.polygons&&t.polygons.push([[s,0],[1,l],[1,u],[a,0]])},tetragon_tr:function(t,e,n,r,i,o){var s=o.interpolate_a(i,r,o.minV,o.maxV),a=o.interpolate_b(i,r,o.minV,o.maxV),u=o.interpolate_b(n,r,o.minV,o.maxV),l=o.interpolate_a(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.rb={path:[[1,l],[s,1]],move:{x:0,y:1,enter:"bl"}},t.edges.tr={path:[[a,1],[1,u]],move:{x:1,y:0,enter:"lt"}}),o.polygons&&t.polygons.push([[1,l],[s,1],[a,1],[1,u]])},tetragon_tl:function(t,e,n,r,i,o){var s=o.interpolate_a(i,r,o.minV,o.maxV),a=o.interpolate_b(i,r,o.minV,o.maxV),u=o.interpolate_b(e,i,o.minV,o.maxV),l=o.interpolate_a(e,i,o.minV,o.maxV);o.polygons_full&&(t.edges.tr={path:[[a,1],[0,l]],move:{x:-1,y:0,enter:"rb"}},t.edges.lt={path:[[0,u],[s,1]],move:{x:0,y:1,enter:"bl"}}),o.polygons&&t.polygons.push([[a,1],[0,l],[0,u],[s,1]])},tetragon_lr:function(t,e,n,r,i,o){var s=o.interpolate_a(e,i,o.minV,o.maxV),a=o.interpolate_b(e,i,o.minV,o.maxV),u=o.interpolate_b(n,r,o.minV,o.maxV),l=o.interpolate_a(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.lt={path:[[0,a],[1,u]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,l],[0,s]],move:{x:-1,y:0,enter:"rb"}}),o.polygons&&t.polygons.push([[0,s],[0,a],[1,u],[1,l]])},tetragon_tb:function(t,e,n,r,i,o){var s=o.interpolate_a(i,r,o.minV,o.maxV),a=o.interpolate_b(i,r,o.minV,o.maxV),u=o.interpolate_b(e,n,o.minV,o.maxV),l=o.interpolate_a(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.tr={path:[[a,1],[u,0]],move:{x:0,y:-1,enter:"tr"}},t.edges.bl={path:[[l,0],[s,1]],move:{x:0,y:1,enter:"bl"}}),o.polygons&&t.polygons.push([[l,0],[s,1],[a,1],[u,0]])},pentagon_tr:function(t,e,n,r,i,o){var s=o.interpolate(i,r,o.minV,o.maxV),a=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.tl={path:[[s,1],[1,a]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[0,0],[0,1],[s,1],[1,a],[1,0]])},pentagon_tl:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate(i,r,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,s],[a,1]],move:{x:0,y:1,enter:"br"}}),o.polygons&&t.polygons.push([[0,0],[0,s],[a,1],[1,1],[1,0]])},pentagon_br:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.rt={path:[[1,a],[s,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,0],[0,1],[1,1],[1,a],[s,0]])},pentagon_bl:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[a,0],[0,s]],move:{x:-1,y:0,enter:"rt"}}),o.polygons&&t.polygons.push([[0,s],[0,1],[1,1],[1,0],[a,0]])},pentagon_tr_rl:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate(i,r,o.minV,o.maxV),u=o.interpolate_b(n,r,o.minV,o.maxV),l=o.interpolate_a(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.tl={path:[[a,1],[1,u]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,l],[0,s]],move:{x:-1,y:0,enter:"rt"}}),o.polygons&&t.polygons.push([[0,s],[0,1],[a,1],[1,u],[1,l]])},pentagon_rb_bt:function(t,e,n,r,i,o){var s=o.interpolate(n,r,o.minV,o.maxV),a=o.interpolate_b(e,n,o.minV,o.maxV),u=o.interpolate_a(e,n,o.minV,o.maxV),l=o.interpolate(i,r,o.minV,o.maxV);o.polygons_full&&(t.edges.rt={path:[[1,s],[a,0]],move:{x:0,y:-1,enter:"tr"}},t.edges.bl={path:[[u,0],[l,1]],move:{x:0,y:1,enter:"br"}}),o.polygons&&t.polygons.push([[l,1],[1,1],[1,s],[a,0],[u,0]])},pentagon_bl_lr:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate_a(e,i,o.minV,o.maxV),u=o.interpolate_b(e,i,o.minV,o.maxV),l=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[s,0],[0,a]],move:{x:-1,y:0,enter:"rb"}},t.edges.lt={path:[[0,u],[1,l]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[s,0],[0,a],[0,u],[1,l],[1,0]])},pentagon_lt_tb:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate_a(i,r,o.minV,o.maxV),u=o.interpolate_b(i,r,o.minV,o.maxV),l=o.interpolate(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,s],[a,1]],move:{x:0,y:1,enter:"bl"}},t.edges.tr={path:[[u,1],[l,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,0],[0,s],[a,1],[u,1],[l,0]])},pentagon_bl_tb:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate(i,r,o.minV,o.maxV),u=o.interpolate_b(e,n,o.minV,o.maxV),l=o.interpolate_a(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.bl={path:[[l,0],[0,s]],move:{x:-1,y:0,enter:"rt"}},t.edges.tl={path:[[a,1],[u,0]],move:{x:0,y:-1,enter:"tr"}}),o.polygons&&t.polygons.push([[0,s],[0,1],[a,1],[u,0],[l,0]])},pentagon_lt_rl:function(t,e,n,r,i,o){var s=o.interpolate_a(e,i,o.minV,o.maxV),a=o.interpolate_b(e,i,o.minV,o.maxV),u=o.interpolate(i,r,o.minV,o.maxV),l=o.interpolate(n,i,o.minV,o.maxV);o.polygons_full&&(t.edges.lt={path:[[0,a],[u,1]],move:{x:0,y:1,enter:"br"}},t.edges.rt={path:[[1,l],[0,s]],move:{x:-1,y:0,enter:"rb"}}),o.polygons&&t.polygons.push([[0,s],[0,a],[u,1],[1,1],[1,l]])},pentagon_tr_bt:function(t,e,n,r,i,o){var s=o.interpolate_a(i,r,o.minV,o.maxV),a=o.interpolate_b(i,r,o.minV,o.maxV),u=o.interpolate(n,r,o.minV,o.maxV),l=o.interpolate(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[l,0],[s,1]],move:{x:0,y:1,enter:"bl"}},t.edges.tr={path:[[a,1],[1,u]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[s,1],[a,1],[1,u],[1,0],[l,0]])},pentagon_rb_lr:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate_b(n,r,o.minV,o.maxV),u=o.interpolate_a(n,r,o.minV,o.maxV),l=o.interpolate(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,s],[1,a]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,u],[l,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,0],[0,s],[1,a],[1,u],[l,0]])},hexagon_lt_tr:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate_a(i,r,o.minV,o.maxV),u=o.interpolate_b(i,r,o.minV,o.maxV),l=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,s],[a,1]],move:{x:0,y:1,enter:"bl"}},t.edges.tr={path:[[u,1],[1,l]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[0,0],[0,s],[a,1],[u,1],[1,l],[1,0]])},hexagon_bl_lt:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate_a(e,i,o.minV,o.maxV),u=o.interpolate_b(e,i,o.minV,o.maxV),l=o.interpolate(i,r,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[s,0],[0,a]],move:{x:-1,y:0,enter:"rb"}},t.edges.lt={path:[[0,u],[l,1]],move:{x:0,y:1,enter:"br"}}),o.polygons&&t.polygons.push([[s,0],[0,a],[0,u],[l,1],[1,1],[1,0]])},hexagon_bl_rb:function(t,e,n,r,i,o){var s=o.interpolate_a(e,n,o.minV,o.maxV),a=o.interpolate_b(e,n,o.minV,o.maxV),u=o.interpolate(e,i,o.minV,o.maxV),l=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.bl={path:[[s,0],[0,u]],move:{x:-1,y:0,enter:"rt"}},t.edges.rt={path:[[1,l],[a,0]],move:{x:0,y:-1,enter:"tr"}}),o.polygons&&t.polygons.push([[s,0],[0,u],[0,1],[1,1],[1,l],[a,0]])},hexagon_tr_rb:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate(i,r,o.minV,o.maxV),u=o.interpolate_b(n,r,o.minV,o.maxV),l=o.interpolate_a(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.tl={path:[[a,1],[1,u]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,l],[s,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,0],[0,1],[a,1],[1,u],[1,l],[s,0]])},hexagon_lt_rb:function(t,e,n,r,i,o){var s=o.interpolate(e,i,o.minV,o.maxV),a=o.interpolate(i,r,o.minV,o.maxV),u=o.interpolate(n,r,o.minV,o.maxV),l=o.interpolate(e,n,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,s],[a,1]],move:{x:0,y:1,enter:"br"}},t.edges.rt={path:[[1,u],[l,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,0],[0,s],[a,1],[1,1],[1,u],[l,0]])},hexagon_bl_tr:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate(e,i,o.minV,o.maxV),u=o.interpolate(i,r,o.minV,o.maxV),l=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[s,0],[0,a]],move:{x:-1,y:0,enter:"rt"}},t.edges.tl={path:[[u,1],[1,l]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[s,0],[0,a],[0,1],[u,1],[1,l],[1,0]])},heptagon_tr:function(t,e,n,r,i,o){var s=o.interpolate_a(e,n,o.minV,o.maxV),a=o.interpolate_b(e,n,o.minV,o.maxV),u=o.interpolate_a(e,i,o.minV,o.maxV),l=o.interpolate_b(e,i,o.minV,o.maxV),h=o.interpolate(i,r,o.minV,o.maxV),c=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.bl={path:[[s,0],[0,u]],move:{x:-1,y:0,enter:"rb"}},t.edges.lt={path:[[0,l],[h,1]],move:{x:0,y:1,enter:"br"}},t.edges.rt={path:[[1,c],[a,0]],move:{x:0,y:-1,enter:"tr"}}),o.polygons&&t.polygons.push([[s,0],[0,u],[0,l],[h,1],[1,1],[1,c],[a,0]])},heptagon_bl:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate(e,i,o.minV,o.maxV),u=o.interpolate_a(i,r,o.minV,o.maxV),l=o.interpolate_b(i,r,o.minV,o.maxV),h=o.interpolate_b(n,r,o.minV,o.maxV),c=o.interpolate_a(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.lb={path:[[0,a],[u,1]],move:{x:0,y:1,enter:"bl"}},t.edges.tr={path:[[l,1],[1,h]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,c],[s,0]],move:{x:0,y:-1,enter:"tl"}}),o.polygons&&t.polygons.push([[0,0],[0,a],[u,1],[l,1],[1,h],[1,c],[s,0]])},heptagon_tl:function(t,e,n,r,i,o){var s=o.interpolate_a(e,n,o.minV,o.maxV),a=o.interpolate_b(e,n,o.minV,o.maxV),u=o.interpolate(e,i,o.minV,o.maxV),l=o.interpolate(i,r,o.minV,o.maxV),h=o.interpolate_b(n,r,o.minV,o.maxV),c=o.interpolate_a(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.bl={path:[[s,0],[0,u]],move:{x:-1,y:0,enter:"rt"}},t.edges.tl={path:[[l,1],[1,h]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,c],[a,0]],move:{x:0,y:-1,enter:"tr"}}),o.polygons&&t.polygons.push([[s,0],[0,u],[0,1],[l,1],[1,h],[1,c],[a,0]])},heptagon_br:function(t,e,n,r,i,o){var s=o.interpolate(e,n,o.minV,o.maxV),a=o.interpolate_a(e,i,o.minV,o.maxV),u=o.interpolate_b(e,i,o.minV,o.maxV),l=o.interpolate_a(i,r,o.minV,o.maxV),h=o.interpolate_b(i,r,o.minV,o.maxV),c=o.interpolate(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.br={path:[[s,0],[0,a]],move:{x:-1,y:0,enter:"rb"}},t.edges.lt={path:[[0,u],[l,1]],move:{x:0,y:1,enter:"bl"}},t.edges.tr={path:[[h,1],[1,c]],move:{x:1,y:0,enter:"lb"}}),o.polygons&&t.polygons.push([[s,0],[0,a],[0,u],[l,1],[h,1],[1,c],[1,0]])},octagon:function(t,e,n,r,i,o){var s=o.interpolate_a(e,n,o.minV,o.maxV),a=o.interpolate_b(e,n,o.minV,o.maxV),u=o.interpolate_a(e,i,o.minV,o.maxV),l=o.interpolate_b(e,i,o.minV,o.maxV),h=o.interpolate_a(i,r,o.minV,o.maxV),c=o.interpolate_b(i,r,o.minV,o.maxV),f=o.interpolate_b(n,r,o.minV,o.maxV),g=o.interpolate_a(n,r,o.minV,o.maxV);o.polygons_full&&(t.edges.bl={path:[[s,0],[0,u]],move:{x:-1,y:0,enter:"rb"}},t.edges.lt={path:[[0,l],[h,1]],move:{x:0,y:1,enter:"bl"}},t.edges.tr={path:[[c,1],[1,f]],move:{x:1,y:0,enter:"lt"}},t.edges.rb={path:[[1,g],[a,0]],move:{x:0,y:-1,enter:"tr"}}),o.polygons&&t.polygons.push([[s,0],[0,u],[0,l],[h,1],[c,1],[1,f],[1,g],[a,0]])}};function Ea(t,e,n,r){var i,o,s,a=!1,u=null,l=null,h=null,c=null,f=!1,g=[],p=[],v=[];if(!t)throw new Error("data is required");if(null==e)throw new Error("lowerBound is required");if(null==n)throw new Error("bandWidth is required");if(s=function(t){var e,n,r,i,o;for(i=new fa,t=t||{},o=Object.keys(i),e=0;e<o.length;e++)null!=(r=t[n=o[e]])&&(i[n]=r);return i.polygons_full=!i.polygons,i.interpolate=la,i.interpolate_a=ha,i.interpolate_b=ca,i}(r),t instanceof ya)u=t,l=t.root,h=t.data,s.noQuadTree||(a=!0);else{if(!Array.isArray(t)||!Array.isArray(t[0]))throw new Error("input is neither array of arrays nor object retrieved from 'QuadTree()'");h=t}if(Array.isArray(e)){for(f=!0,s.noQuadTree||(a=!0),i=0;i<e.length;i++)if(isNaN(+e[i]))throw new Error("lowerBound["+i+"] is not a number");if(Array.isArray(n)){if(e.length!==n.length)throw new Error("lowerBound and bandWidth have unequal lengths");for(i=0;i<n.length;i++)if(isNaN(+n[i]))throw new Error("bandWidth["+i+"] is not a number")}else{if(isNaN(+n))throw new Error("bandWidth must be a number");for(g=[],i=0;i<e.length;i++)g.push(n);n=g}}else{if(isNaN(+e))throw new Error("lowerBound must be a number");if(e=[e],isNaN(+n))throw new Error("bandWidth must be a number");n=[n]}return a&&!l&&(u=new ya(h),l=u.root,h=u.data),s.verbose&&(s.polygons?console.log("MarchingSquaresJS-isoBands: returning single polygons for each grid cell"):console.log("MarchingSquaresJS-isoBands: returning polygon paths for entire data grid"),f&&console.log("MarchingSquaresJS-isoBands: multiple bands requested, returning array of band polygons instead of polygons for a single band")),e.forEach((function(t,e){if(p=[],s.minV=t,s.maxV=t+n[e],s.verbose&&console.log("MarchingSquaresJS-isoBands: computing isobands for ["+t+":"+(t+n[e])+"]"),s.polygons)if(a)l.cellsInBand(s.minV,s.maxV,!0).forEach((function(t){p=p.concat(ga(ba(h,t.x,t.y,s),t.x,t.y,s))}));else for(o=0;o<h.length-1;++o)for(i=0;i<h[0].length-1;++i)p=p.concat(ga(ba(h,i,o,s),i,o,s));else{for(c=[],i=0;i<h[0].length-1;++i)c[i]=[];if(a)l.cellsInBand(s.minV,s.maxV,!1).forEach((function(t){c[t.x][t.y]=ba(h,t.x,t.y,s)}));else for(i=0;i<h[0].length-1;++i)for(o=0;o<h.length-1;++o)c[i][o]=ba(h,i,o,s);p=function(t,e,n){var r,i,o,s,a,u,l,h,c,f,g,p,v,d,y,_,x=[],E=t.length-1,k=t[0].length-1,b=[["rt","rb"],["br","bl"],["lb","lt"],["tl","tr"]],w=[0,-1,0,1],I=[-1,0,1,0],N=["bl","lb","lt","tl","tr","rt","rb","br"],S={bl:1,br:1,lb:2,lt:2,tl:3,tr:3,rt:0,rb:0};return function(t,e,n){var r,i,o,s,a;for(r=!0,i=t[0].length,o=t.length,a=0;a<o;a++)if(t[a][0]<e||t[a][0]>n||t[a][i-1]<e||t[a][i-1]>n){r=!1;break}if(r&&(t[o-1][0]<e||t[o-1][0]>n||t[o-1][i-1]<e||t[o-1][i-1]>n)&&(r=!1),r)for(s=0;s<i-1;s++)if(t[0][s]<e||t[0][s]>n||t[o-1][s]<e||t[o-1][s]>n){r=!1;break}return r}(t,n.minV,n.maxV)&&(n.linearRing?x.push([[0,0],[0,E],[k,E],[k,0],[0,0]]):x.push([[0,0],[0,E],[k,E],[k,0]])),e.forEach((function(t,M){t.forEach((function(t,L){for(r=null,o=0;o<8;o++)if(r=N[o],"object"===m(t.edges[r])){for(i=[],s=t.edges[r],l=r,h=M,c=L,f=!1,g=[M+s.path[0][0],L+s.path[0][1]],i.push(g);!f&&"object"===m((p=e[h][c]).edges[l]);)if(s=p.edges[l],delete p.edges[l],(y=s.path[1])[0]+=h,y[1]+=c,i.push(y),l=s.move.enter,h+=s.move.x,c+=s.move.y,void 0===e[h]||void 0===e[h][c]){if(v=0,d=0,h===k)h--,v=0;else if(h<0)h++,v=2;else if(c===E)c--,v=3;else{if(!(c<0))throw new Error("Left the grid somewhere in the interior!");c++,v=1}if(h===M&&c===L&&v===S[r]){f=!0,l=r;break}for(;;){if(_=!1,d>4)throw new Error("Direction change counter overflow! This should never happen!");if(void 0!==e[h]&&void 0!==e[h][c])for(p=e[h][c],a=0;a<b[v].length;a++)if(u=b[v][a],"object"===m(p.edges[u])){s=p.edges[u],i.push(pa(h,c,v,s.path)),l=u,_=!0;break}if(_)break;if(i.push(va(h,c,v)),c+=I[v],void 0!==e[h+=w[v]]&&void 0!==e[h][c]||(0===v&&c<0||1===v&&h<0||2===v&&c===E||3===v&&h===k)&&(h-=w[v],c-=I[v],v=(v+1)%4,d++),h===M&&c===L&&v===S[r]){f=!0,l=r;break}}}!n.linearRing||i[i.length-1][0]===g[0]&&i[i.length-1][1]===g[1]||i.push(g),x.push(i)}}))})),x}(h,c,s)}f?v.push(p):v=p,"function"==typeof s.successCallback&&s.successCallback(v,t,n[e])})),v}function ka(t,e,n,r,i,o){var s=(r+n+e+t)/4;return s>o?2:s<i?0:1}function ba(t,e,n,r){var i,o,s=0,a=t[n+1][e],u=t[n+1][e+1],l=t[n][e+1],h=t[n][e],c=r.minV,f=r.maxV;if(!(isNaN(h)||isNaN(l)||isNaN(u)||isNaN(a))){switch(s|=a<c?0:a>f?128:64,s|=u<c?0:u>f?32:16,s|=l<c?0:l>f?8:4,o=0,i={cval:s=+(s|=h<c?0:h>f?2:1),polygons:[],edges:{},x0:h,x1:l,x2:u,x3:a,x:e,y:n},s){case 85:xa.square(i,h,l,u,a,r);case 0:case 170:break;case 169:xa.triangle_bl(i,h,l,u,a,r);break;case 166:xa.triangle_br(i,h,l,u,a,r);break;case 154:xa.triangle_tr(i,h,l,u,a,r);break;case 106:xa.triangle_tl(i,h,l,u,a,r);break;case 1:xa.triangle_bl(i,h,l,u,a,r);break;case 4:xa.triangle_br(i,h,l,u,a,r);break;case 16:xa.triangle_tr(i,h,l,u,a,r);break;case 64:xa.triangle_tl(i,h,l,u,a,r);break;case 168:xa.tetragon_bl(i,h,l,u,a,r);break;case 162:xa.tetragon_br(i,h,l,u,a,r);break;case 138:xa.tetragon_tr(i,h,l,u,a,r);break;case 42:xa.tetragon_tl(i,h,l,u,a,r);break;case 2:xa.tetragon_bl(i,h,l,u,a,r);break;case 8:xa.tetragon_br(i,h,l,u,a,r);break;case 32:xa.tetragon_tr(i,h,l,u,a,r);break;case 128:xa.tetragon_tl(i,h,l,u,a,r);break;case 5:xa.tetragon_b(i,h,l,u,a,r);break;case 20:xa.tetragon_r(i,h,l,u,a,r);break;case 80:xa.tetragon_t(i,h,l,u,a,r);break;case 65:xa.tetragon_l(i,h,l,u,a,r);break;case 165:xa.tetragon_b(i,h,l,u,a,r);break;case 150:xa.tetragon_r(i,h,l,u,a,r);break;case 90:xa.tetragon_t(i,h,l,u,a,r);break;case 105:xa.tetragon_l(i,h,l,u,a,r);break;case 160:xa.tetragon_lr(i,h,l,u,a,r);break;case 130:xa.tetragon_tb(i,h,l,u,a,r);break;case 10:xa.tetragon_lr(i,h,l,u,a,r);break;case 40:xa.tetragon_tb(i,h,l,u,a,r);break;case 101:xa.pentagon_tr(i,h,l,u,a,r);break;case 149:xa.pentagon_tl(i,h,l,u,a,r);break;case 86:xa.pentagon_bl(i,h,l,u,a,r);break;case 89:xa.pentagon_br(i,h,l,u,a,r);break;case 69:xa.pentagon_tr(i,h,l,u,a,r);break;case 21:xa.pentagon_tl(i,h,l,u,a,r);break;case 84:xa.pentagon_bl(i,h,l,u,a,r);break;case 81:xa.pentagon_br(i,h,l,u,a,r);break;case 96:xa.pentagon_tr_rl(i,h,l,u,a,r);break;case 24:xa.pentagon_rb_bt(i,h,l,u,a,r);break;case 6:xa.pentagon_bl_lr(i,h,l,u,a,r);break;case 129:xa.pentagon_lt_tb(i,h,l,u,a,r);break;case 74:xa.pentagon_tr_rl(i,h,l,u,a,r);break;case 146:xa.pentagon_rb_bt(i,h,l,u,a,r);break;case 164:xa.pentagon_bl_lr(i,h,l,u,a,r);break;case 41:xa.pentagon_lt_tb(i,h,l,u,a,r);break;case 66:xa.pentagon_bl_tb(i,h,l,u,a,r);break;case 144:xa.pentagon_lt_rl(i,h,l,u,a,r);break;case 36:xa.pentagon_tr_bt(i,h,l,u,a,r);break;case 9:xa.pentagon_rb_lr(i,h,l,u,a,r);break;case 104:xa.pentagon_bl_tb(i,h,l,u,a,r);break;case 26:xa.pentagon_lt_rl(i,h,l,u,a,r);break;case 134:xa.pentagon_tr_bt(i,h,l,u,a,r);break;case 161:xa.pentagon_rb_lr(i,h,l,u,a,r);break;case 37:xa.hexagon_lt_tr(i,h,l,u,a,r);break;case 148:xa.hexagon_bl_lt(i,h,l,u,a,r);break;case 82:xa.hexagon_bl_rb(i,h,l,u,a,r);break;case 73:xa.hexagon_tr_rb(i,h,l,u,a,r);break;case 133:xa.hexagon_lt_tr(i,h,l,u,a,r);break;case 22:xa.hexagon_bl_lt(i,h,l,u,a,r);break;case 88:xa.hexagon_bl_rb(i,h,l,u,a,r);break;case 97:xa.hexagon_tr_rb(i,h,l,u,a,r);break;case 145:case 25:xa.hexagon_lt_rb(i,h,l,u,a,r);break;case 70:case 100:xa.hexagon_bl_tr(i,h,l,u,a,r);break;case 17:0===(o=ka(h,l,u,a,c,f))?(xa.triangle_bl(i,h,l,u,a,r),xa.triangle_tr(i,h,l,u,a,r)):xa.hexagon_lt_rb(i,h,l,u,a,r);break;case 68:0===(o=ka(h,l,u,a,c,f))?(xa.triangle_tl(i,h,l,u,a,r),xa.triangle_br(i,h,l,u,a,r)):xa.hexagon_bl_tr(i,h,l,u,a,r);break;case 153:2===(o=ka(h,l,u,a,c,f))?(xa.triangle_bl(i,h,l,u,a,r),xa.triangle_tr(i,h,l,u,a,r)):xa.hexagon_lt_rb(i,h,l,u,a,r);break;case 102:2===(o=ka(h,l,u,a,c,f))?(xa.triangle_tl(i,h,l,u,a,r),xa.triangle_br(i,h,l,u,a,r)):xa.hexagon_bl_tr(i,h,l,u,a,r);break;case 152:2===(o=ka(h,l,u,a,c,f))?(xa.triangle_tr(i,h,l,u,a,r),xa.tetragon_bl(i,h,l,u,a,r)):xa.heptagon_tr(i,h,l,u,a,r);break;case 137:2===(o=ka(h,l,u,a,c,f))?(xa.triangle_bl(i,h,l,u,a,r),xa.tetragon_tr(i,h,l,u,a,r)):xa.heptagon_bl(i,h,l,u,a,r);break;case 98:2===(o=ka(h,l,u,a,c,f))?(xa.triangle_tl(i,h,l,u,a,r),xa.tetragon_br(i,h,l,u,a,r)):xa.heptagon_tl(i,h,l,u,a,r);break;case 38:2===(o=ka(h,l,u,a,c,f))?(xa.triangle_br(i,h,l,u,a,r),xa.tetragon_tl(i,h,l,u,a,r)):xa.heptagon_br(i,h,l,u,a,r);break;case 18:0===(o=ka(h,l,u,a,c,f))?(xa.triangle_tr(i,h,l,u,a,r),xa.tetragon_bl(i,h,l,u,a,r)):xa.heptagon_tr(i,h,l,u,a,r);break;case 33:0===(o=ka(h,l,u,a,c,f))?(xa.triangle_bl(i,h,l,u,a,r),xa.tetragon_tr(i,h,l,u,a,r)):xa.heptagon_bl(i,h,l,u,a,r);break;case 72:0===(o=ka(h,l,u,a,c,f))?(xa.triangle_tl(i,h,l,u,a,r),xa.tetragon_br(i,h,l,u,a,r)):xa.heptagon_tl(i,h,l,u,a,r);break;case 132:0===(o=ka(h,l,u,a,c,f))?(xa.triangle_br(i,h,l,u,a,r),xa.tetragon_tl(i,h,l,u,a,r)):xa.heptagon_br(i,h,l,u,a,r);break;case 136:0===(o=ka(h,l,u,a,c,f))?(xa.tetragon_tl(i,h,l,u,a,r),xa.tetragon_br(i,h,l,u,a,r)):1===o?xa.octagon(i,h,l,u,a,r):(xa.tetragon_bl(i,h,l,u,a,r),xa.tetragon_tr(i,h,l,u,a,r));break;case 34:0===(o=ka(h,l,u,a,c,f))?(xa.tetragon_bl(i,h,l,u,a,r),xa.tetragon_tr(i,h,l,u,a,r)):1===o?xa.octagon(i,h,l,u,a,r):(xa.tetragon_tl(i,h,l,u,a,r),xa.tetragon_br(i,h,l,u,a,r))}return i}}var wa=Object.defineProperty,Ia=Object.getOwnPropertySymbols,Na=Object.prototype.hasOwnProperty,Sa=Object.prototype.propertyIsEnumerable,Ma=function(t,e,n){return e in t?wa(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},La=function(t,e){for(var n in e||(e={}))Na.call(e,n)&&Ma(t,n,e[n]);if(Ia){var r,i=a(Ia(e));try{for(i.s();!(r=i.n()).done;){n=r.value;Sa.call(e,n)&&Ma(t,n,e[n])}}catch(t){i.e(t)}finally{i.f()}}return t};function Pa(t,e){if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.zProperty||"elevation",r=e.flip,i=e.flags;nt(t,"Point","input must contain Points");for(var o=function(t,e){var n={};vt(t,(function(t){var e=Q(t)[1];n[e]||(n[e]=[]),n[e].push(t)}));var r=Object.keys(n).map((function(t){return n[t].sort((function(t,e){return Q(t)[0]-Q(e)[0]}))})),i=r.sort((function(t,n){return e?Q(t[0])[1]-Q(n[0])[1]:Q(n[0])[1]-Q(t[0])[1]}));return i}(t,r),s=[],a=0;a<o.length;a++){for(var u=o[a],l=[],h=0;h<u.length;h++){var c=u[h];c.properties[n]?l.push(c.properties[n]):l.push(0),!0===i&&(c.properties.matrixPosition=[a,h])}s.push(l)}return s}function Ca(t){var e=t.map((function(t){return{ring:t,area:Lt(S([t]))}}));return e.sort((function(t,e){return e.area-t.area})),e.map((function(t){return t.ring}))}function Ta(t){for(var e=t.map((function(t){return{lrCoordinates:t,grouped:!1}})),n=[];!Ra(e);)for(var r=0;r<e.length;r++)if(!e[r].grouped){var i=[];i.push(e[r].lrCoordinates),e[r].grouped=!0;for(var o=S([e[r].lrCoordinates]),s=r+1;s<e.length;s++){if(!e[s].grouped)Oa(S([e[s].lrCoordinates]),o)&&(i.push(e[s].lrCoordinates),e[s].grouped=!0)}n.push(i)}return n}function Oa(t,e){for(var n=Zs(t),r=0;r<n.features.length;r++)if(!zt(n.features[r],e))return!1;return!0}function Ra(t){for(var e=0;e<t.length;e++)if(!1===t[e].grouped)return!1;return!0}var Aa=Object.defineProperty,Da=Object.getOwnPropertySymbols,Fa=Object.prototype.hasOwnProperty,qa=Object.prototype.propertyIsEnumerable,Va=function(t,e,n){return e in t?Aa(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Ga=function(t,e){for(var n in e||(e={}))Fa.call(e,n)&&Va(t,n,e[n]);if(Da){var r,i=a(Da(e));try{for(i.s();!(r=i.n()).done;){n=r.value;qa.call(e,n)&&Va(t,n,e[n])}}catch(t){i.e(t)}finally{i.f()}}return t};function Ba(t,e){if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.zProperty||"elevation",r=e.flip,i=e.flags;nt(t,"Point","input must contain Points");for(var o=function(t,e){var n={};vt(t,(function(t){var e=Q(t)[1];n[e]||(n[e]=[]),n[e].push(t)}));var r=Object.keys(n).map((function(t){return n[t].sort((function(t,e){return Q(t)[0]-Q(e)[0]}))})),i=r.sort((function(t,n){return e?Q(t[0])[1]-Q(n[0])[1]:Q(n[0])[1]-Q(t[0])[1]}));return i}(t,r),s=[],a=0;a<o.length;a++){for(var u=o[a],l=[],h=0;h<u.length;h++){var c=u[h];c.properties[n]?l.push(c.properties[n]):l.push(0),!0===i&&(c.properties.matrixPosition=[a,h])}s.push(l)}return s}function Ya(t,e,n,r,i,o,s,a){var u,l,h,c,f={x:null,y:null,onLine1:!1,onLine2:!1};return 0===(u=(a-o)*(n-t)-(s-i)*(r-e))?null!==f.x&&null!==f.y&&f:(c=(n-t)*(l=e-o)-(r-e)*(h=t-i),l=((s-i)*l-(a-o)*h)/u,h=c/u,f.x=t+l*(n-t),f.y=e+l*(r-e),l>=0&&l<=1&&(f.onLine1=!0),h>=0&&h<=1&&(f.onLine2=!0),!(!f.onLine1||!f.onLine2)&&[f.x,f.y])}function za(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return bt(t,(function(t,n){var r=n.geometry.coordinates;return t+ut(r[0],r[1],e)}),0)}function ja(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},o=i.steps||64,s=Xa(n),a=Xa(r),u=Array.isArray(t)||"Feature"!==t.type?{}:t.properties;if(s===a)return L(Ri(t,e,i).geometry.coordinates[0],u);for(var l=s,h=s<a?a:a+360,c=l,f=[],g=0,p=(h-l)/o;c<=h;)f.push(at(t,e,c,i).geometry.coordinates),c=l+ ++g*p;return L(f,u)}function Xa(t){var e=t%360;return e<0&&(e+=360),e}function Ua(t,e,n,r){if(!Z(r=r||{}))throw new Error("options is invalid");var i,o=[];if("Feature"===t.type)i=t.geometry.coordinates;else{if("LineString"!==t.type)throw new Error("input must be a LineString Feature or Geometry");i=t.coordinates}for(var s,a,u,l=i.length,h=0,c=0;c<i.length&&!(e>=h&&c===i.length-1);c++){if(h>e&&0===o.length){if(!(s=e-h))return o.push(i[c]),L(o);a=st(i[c],i[c-1])-180,u=at(i[c],s,a,r),o.push(u.geometry.coordinates)}if(h>=n)return(s=n-h)?(a=st(i[c],i[c-1])-180,u=at(i[c],s,a,r),o.push(u.geometry.coordinates),L(o)):(o.push(i[c]),L(o));if(h>=e&&o.push(i[c]),c===i.length-1)return L(o);h+=ut(i[c],i[c+1],r)}if(h<e&&i.length===l)throw new Error("Start position is beyond line");var f=i[i.length-1];return L([f,f])}function Za(t){var e=t[0],n=t[1];return[n[0]-e[0],n[1]-e[1]]}function Ha(t,e){return t[0]*e[1]-e[0]*t[1]}function Wa(t,e){return!function(t,e){return 0===Ha(Za(t),Za(e))}(t,e)&&function(t,e){var n,r,i=t[0],o=Za(t),s=e[0],a=Za(e),u=Ha(o,a),l=function(t,e){return[t[0]+e[0],t[1]+e[1]]}(i,function(t,e){return[t*e[0],t*e[1]]}(Ha((r=i,[(n=s)[0]-r[0],n[1]-r[1]]),a)/u,o));return l}(t,e)}function Ja(t,e,n){var r=[],i=V(e,n),o=Q(t),s=[];return o.forEach((function(t,e){if(e!==o.length-1){var n=(l=t,h=o[e+1],c=i,f=Math.sqrt((l[0]-h[0])*(l[0]-h[0])+(l[1]-h[1])*(l[1]-h[1])),g=l[0]+c*(h[1]-l[1])/f,p=h[0]+c*(h[1]-l[1])/f,v=l[1]+c*(l[0]-h[0])/f,d=h[1]+c*(l[0]-h[0])/f,[[g,v],[p,d]]);if(r.push(n),e>0){var a=r[e-1],u=Wa(n,a);!1!==u&&(a[1]=u,n[0]=u),s.push(a[0]),e===o.length-2&&(s.push(n[0]),s.push(n[1]))}2===o.length&&(s.push(n[0]),s.push(n[1]))}var l,h,c,f,g,p,v,d})),L(s,t.properties)}function Ka(t){var e=t[0],n=t[1],r=t[2],i=t[3];if(ut(t.slice(0,2),[r,n])>=ut(t.slice(0,2),[e,i])){var o=(n+i)/2;return[e,o-(r-e)/2,r,o+(r-e)/2]}var s=(e+r)/2;return[s-(i-n)/2,n,s+(i-n)/2,i]}function Qa(t,e){if(!Z(e=null!=e?e:{}))throw new Error("options is invalid");var n=e.precision,r=e.coordinates,i=e.mutate;if(n=null==n||isNaN(n)?6:n,r=null==r||isNaN(r)?3:r,!t)throw new Error("<geojson> is required");if("number"!=typeof n)throw new Error("<precision> must be a number");if("number"!=typeof r)throw new Error("<coordinates> must be a number");!1!==i&&void 0!==i||(t=JSON.parse(JSON.stringify(t)));var o=Math.pow(10,n);return ct(t,(function(t){!function(t,e,n){t.length>n&&t.splice(n,t.length);for(var r=0;r<t.length;r++)t[r]=Math.round(t[r]*e)/e}(t,o,r)})),t}function $a(t,e){var n=[],r=Qe();return xt(e,(function(e){if(n.forEach((function(t,e){t.id=e})),n.length){var i=r.search(e);if(i.features.length){var o=eu(e,i);n=n.filter((function(t){return t.id!==o.id})),r.remove(o),vt(tu(o,e),(function(t){n.push(t),r.insert(t)}))}}else(n=tu(t,e).features).forEach((function(t){t.bbox||(t.bbox=Ka(Rt(t)))})),r.load(C(n))})),C(n)}function tu(t,e){var n=[],r=Q(t)[0],i=Q(t)[t.geometry.coordinates.length-1];if(nu(r,K(e))||nu(i,K(e)))return C([t]);var o=Qe(),s=$e(t);o.load(s);var a=o.search(e);if(!a.features.length)return C([t]);var u=eu(e,a),l=dt(s,(function(t,r,i){var o=Q(r)[1],s=K(e);return i===u.id?(t.push(s),n.push(L(t)),nu(s,o)?[s]:[s,o]):(t.push(o),t)}),[r]);return l.length>1&&n.push(L(l)),C(n)}function eu(t,e){if(!e.features.length)throw new Error("lines must contain features");if(1===e.features.length)return e.features[0];var n,r=1/0;return vt(e,(function(e){var i=fn(e,t).properties.dist;i<r&&(n=e,r=i)})),n}function nu(t,e){return t[0]===e[0]&&t[1]===e[1]}function ru(t,e,n,r){e=e||("Feature"===t.type?t.properties:{});var i=rt(t),o=i.coordinates,s=i.type;if(!o.length)throw new Error("line must contain coordinates");switch(s){case"LineString":return n&&(o=iu(o)),S([o],e);case"MultiLineString":var a=[],u=0;return o.forEach((function(t){if(n&&(t=iu(t)),r){var e=function(t){var e=t[0],n=t[1],r=t[2],i=t[3];return Math.abs(e-r)*Math.abs(n-i)}(Rt(L(t)));e>u?(a.unshift(t),u=e):a.push(t)}else a.push(t)})),S(a,e);default:throw new Error("geometry type "+s+" is not supported")}}function iu(t){var e=t[0],n=e[0],r=e[1],i=t[t.length-1],o=i[0],s=i[1];return n===o&&r===s||t.push(e),t}function ou(t){return R(t)}function su(t){var e=[[[180,90],[-180,90],[-180,-90],[180,-90],[180,90]]];return t&&(e="Feature"===t.type?t.geometry.coordinates:t.coordinates),S(e)}function au(t){var e,n=0,r=a(t);try{for(r.s();!(e=r.n()).done;){n+=e.value}}catch(t){r.e(t)}finally{r.f()}return n/t.length}var uu=Object.defineProperty,lu=Object.defineProperties,hu=Object.getOwnPropertyDescriptors,cu=Object.getOwnPropertySymbols,fu=Object.prototype.hasOwnProperty,gu=Object.prototype.propertyIsEnumerable,pu=function(t,e,n){return e in t?uu(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},vu=function(t,e){for(var n in e||(e={}))fu.call(e,n)&&pu(t,n,e[n]);if(cu){var r,i=a(cu(e));try{for(i.s();!(r=i.n()).done;){n=r.value;gu.call(e,n)&&pu(t,n,e[n])}}catch(t){i.e(t)}finally{i.f()}}return t},du=function(t,e){return lu(t,hu(e))};function yu(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)throw new Error("targetPoint is required");if(!e)throw new Error("points is required");var r=1/0,i=0;vt(e,(function(e,o){var s=ut(t,e,n);s<r&&(i=o,r=s)}));var o=Ai(e.features[i]);return du(vu({},o),{properties:du(vu({},o.properties),{featureIndex:i,distanceToPoint:r})})}function mu(t,e){var n,r,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=null!=(n=i.method)?n:"geodesic",s=null!=(r=i.units)?r:"kilometers";if(!t)throw new Error("pt is required");if(Array.isArray(t)?t=I(t):"Point"===t.type?t=b(t):et(t,"Point","point"),!e)throw new Error("line is required");Array.isArray(e)?e=L(e):"LineString"===e.type?e=b(e):et(e,"LineString","line");var a=1/0,u=t.geometry.coordinates;return kt(e,(function(t){if(t){var e=t.geometry.coordinates[0],n=t.geometry.coordinates[1],r=function(t,e,n,r){if("geodesic"===r.method){return fn(L([e,n]).geometry,t,{units:"degrees"}).properties.dist}var i=[n[0]-e[0],n[1]-e[1]],o=[t[0]-e[0],t[1]-e[1]],s=_u(o,i);if(s<=0)return Ys(t,e,{units:"degrees"});var a=_u(i,i);if(a<=s)return Ys(t,n,{units:"degrees"});var u=s/a,l=[e[0]+u*i[0],e[1]+u*i[1]];return Ys(t,l,{units:"degrees"})}(u,e,n,{method:o});r<a&&(a=r)}})),j(a,"degrees",s)}function _u(t,e){return t[0]*e[0]+t[1]*e[1]}var xu=Object.defineProperty,Eu=Object.getOwnPropertySymbols,ku=Object.prototype.hasOwnProperty,bu=Object.prototype.propertyIsEnumerable,wu=function(t,e,n){return e in t?xu(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n},Iu=function(t,e){for(var n in e||(e={}))ku.call(e,n)&&wu(t,n,e[n]);if(Eu){var r,i=a(Eu(e));try{for(i.s();!(r=i.n()).done;){n=r.value;bu.call(e,n)&&wu(t,n,e[n])}}catch(t){i.e(t)}finally{i.f()}}return t};function Nu(t,e,n,r,i,o){return Math.sqrt((i-n)*(i-n)+(o-r)*(o-r))===Math.sqrt((t-n)*(t-n)+(e-r)*(e-r))+Math.sqrt((i-t)*(i-t)+(o-e)*(o-e))}function Su(t,e){var n=[];return vt(t,(function(t){var r=!1;if("Point"===t.geometry.type)mt(e,(function(e){zt(t,e)&&(r=!0)})),r&&n.push(t);else{if("MultiPoint"!==t.geometry.type)throw new Error("Input geometry must be a Point or MultiPoint");var i=[];mt(e,(function(e){ct(t,(function(t){zt(t,e)&&(r=!0,i.push(t))}))})),r&&n.push(O(i,t.properties))}})),C(n)}function Mu(t,e,n){var r=e[0]-t[0],i=e[1]-t[1],o=n[0]-e[0];return function(t){return(t>0)-(t<0)||+t}(r*(n[1]-e[1])-o*i)}function Lu(t,e){return e.geometry.coordinates[0].every((function(e){return zt(I(e),t)}))}var Pu=function(){return s((function t(e){i(this,t),this.id=t.buildId(e),this.coordinates=e,this.innerEdges=[],this.outerEdges=[],this.outerEdgesSorted=!1}),[{key:"removeInnerEdge",value:function(t){this.innerEdges=this.innerEdges.filter((function(e){return e.from.id!==t.from.id}))}},{key:"removeOuterEdge",value:function(t){this.outerEdges=this.outerEdges.filter((function(e){return e.to.id!==t.to.id}))}},{key:"addOuterEdge",value:function(t){this.outerEdges.push(t),this.outerEdgesSorted=!1}},{key:"sortOuterEdges",value:function(){var t=this;this.outerEdgesSorted||(this.outerEdges.sort((function(e,n){var r=e.to,i=n.to;if(r.coordinates[0]-t.coordinates[0]>=0&&i.coordinates[0]-t.coordinates[0]<0)return 1;if(r.coordinates[0]-t.coordinates[0]<0&&i.coordinates[0]-t.coordinates[0]>=0)return-1;if(r.coordinates[0]-t.coordinates[0]==0&&i.coordinates[0]-t.coordinates[0]==0)return r.coordinates[1]-t.coordinates[1]>=0||i.coordinates[1]-t.coordinates[1]>=0?r.coordinates[1]-i.coordinates[1]:i.coordinates[1]-r.coordinates[1];var o=Mu(t.coordinates,r.coordinates,i.coordinates);return o<0?1:o>0?-1:Math.pow(r.coordinates[0]-t.coordinates[0],2)+Math.pow(r.coordinates[1]-t.coordinates[1],2)-(Math.pow(i.coordinates[0]-t.coordinates[0],2)+Math.pow(i.coordinates[1]-t.coordinates[1],2))})),this.outerEdgesSorted=!0)}},{key:"getOuterEdges",value:function(){return this.sortOuterEdges(),this.outerEdges}},{key:"getOuterEdge",value:function(t){return this.sortOuterEdges(),this.outerEdges[t]}},{key:"addInnerEdge",value:function(t){this.innerEdges.push(t)}}],[{key:"buildId",value:function(t){return t.join(",")}}])}(),Cu=function(){function t(e,n){i(this,t),this.from=e,this.to=n,this.next=void 0,this.label=void 0,this.symetric=void 0,this.ring=void 0,this.from.addOuterEdge(this),this.to.addInnerEdge(this)}return s(t,[{key:"getSymetric",value:function(){return this.symetric||(this.symetric=new t(this.to,this.from),this.symetric.symetric=this),this.symetric}},{key:"deleteEdge",value:function(){this.from.removeOuterEdge(this),this.to.removeInnerEdge(this)}},{key:"isEqual",value:function(t){return this.from.id===t.from.id&&this.to.id===t.to.id}},{key:"toString",value:function(){return"Edge { ".concat(this.from.id," -> ").concat(this.to.id," }")}},{key:"toLineString",value:function(){return L([this.from.coordinates,this.to.coordinates])}},{key:"compareTo",value:function(t){return Mu(t.from.coordinates,t.to.coordinates,this.to.coordinates)}}])}(),Tu=function(){return s((function t(){i(this,t),this.edges=[],this.polygon=void 0,this.envelope=void 0}),[{key:"push",value:function(t){this.edges.push(t),this.polygon=this.envelope=void 0}},{key:"get",value:function(t){return this.edges[t]}},{key:"length",get:function(){return this.edges.length}},{key:"forEach",value:function(t){this.edges.forEach(t)}},{key:"map",value:function(t){return this.edges.map(t)}},{key:"some",value:function(t){return this.edges.some(t)}},{key:"isValid",value:function(){return!0}},{key:"isHole",value:function(){var t=this,e=this.edges.reduce((function(e,n,r){return n.from.coordinates[1]>t.edges[e].from.coordinates[1]&&(e=r),e}),0),n=(0===e?this.length:e)-1,r=(e+1)%this.length,i=Mu(this.edges[n].from.coordinates,this.edges[e].from.coordinates,this.edges[r].from.coordinates);return 0===i?this.edges[n].from.coordinates[0]>this.edges[r].from.coordinates[0]:i>0}},{key:"toMultiPoint",value:function(){return O(this.edges.map((function(t){return t.from.coordinates})))}},{key:"toPolygon",value:function(){if(this.polygon)return this.polygon;var t=this.edges.map((function(t){return t.from.coordinates}));return t.push(this.edges[0].from.coordinates),this.polygon=S([t])}},{key:"getEnvelope",value:function(){return this.envelope?this.envelope:this.envelope=Us(this.toPolygon())}},{key:"inside",value:function(t){return zt(t,this.toPolygon())}}],[{key:"findEdgeRingContaining",value:function(t,e){var n,r,i=t.getEnvelope();return e.forEach((function(e){var o,s,u,l,h,c,f=e.getEnvelope();if((r&&(n=r.getEnvelope()),s=i,u=(o=f).geometry.coordinates[0].map((function(t){return t[0]})),l=o.geometry.coordinates[0].map((function(t){return t[1]})),h=s.geometry.coordinates[0].map((function(t){return t[0]})),c=s.geometry.coordinates[0].map((function(t){return t[1]})),Math.max.apply(null,u)!==Math.max.apply(null,h)||Math.max.apply(null,l)!==Math.max.apply(null,c)||Math.min.apply(null,u)!==Math.min.apply(null,h)||Math.min.apply(null,l)!==Math.min.apply(null,c))&&Lu(f,i)){var g,p,v=a(t.map((function(t){return t.from.coordinates})));try{var d=function(){var t=p.value;e.some((function(e){return n=t,r=e.from.coordinates,n[0]===r[0]&&n[1]===r[1];var n,r}))||(g=t)};for(v.s();!(p=v.n()).done;)d()}catch(t){v.e(t)}finally{v.f()}g&&e.inside(I(g))&&(r&&!Lu(n,f)||(r=e))}})),r}}])}();var Ou=function(){function t(){i(this,t),this.edges=[],this.nodes={}}return s(t,[{key:"getNode",value:function(t){var e=Pu.buildId(t),n=this.nodes[e];return n||(n=this.nodes[e]=new Pu(t)),n}},{key:"addEdge",value:function(t,e){var n=new Cu(t,e),r=n.getSymetric();this.edges.push(n),this.edges.push(r)}},{key:"deleteDangles",value:function(){var t=this;Object.keys(this.nodes).map((function(e){return t.nodes[e]})).forEach((function(e){return t._removeIfDangle(e)}))}},{key:"_removeIfDangle",value:function(t){var e=this;if(t.innerEdges.length<=1){var n=t.getOuterEdges().map((function(t){return t.to}));this.removeNode(t),n.forEach((function(t){return e._removeIfDangle(t)}))}}},{key:"deleteCutEdges",value:function(){var t=this;this._computeNextCWEdges(),this._findLabeledEdgeRings(),this.edges.forEach((function(e){e.label===e.symetric.label&&(t.removeEdge(e.symetric),t.removeEdge(e))}))}},{key:"_computeNextCWEdges",value:function(t){var e=this;void 0===t?Object.keys(this.nodes).forEach((function(t){return e._computeNextCWEdges(e.nodes[t])})):t.getOuterEdges().forEach((function(e,n){t.getOuterEdge((0===n?t.getOuterEdges().length:n)-1).symetric.next=e}))}},{key:"_computeNextCCWEdges",value:function(t,e){for(var n,r,i=t.getOuterEdges(),o=i.length-1;o>=0;--o){var s=i[o],a=s.symetric,u=void 0,l=void 0;s.label===e&&(u=s),a.label===e&&(l=a),u&&l&&(l&&(r=l),u&&(r&&(r.next=u,r=void 0),n||(n=u)))}r&&(r.next=n)}},{key:"_findLabeledEdgeRings",value:function(){var t=[],e=0;return this.edges.forEach((function(n){if(!(n.label>=0)){t.push(n);var r=n;do{r.label=e,r=r.next}while(!n.isEqual(r));e++}})),t}},{key:"getEdgeRings",value:function(){var t=this;this._computeNextCWEdges(),this.edges.forEach((function(t){t.label=void 0})),this._findLabeledEdgeRings().forEach((function(e){t._findIntersectionNodes(e).forEach((function(n){t._computeNextCCWEdges(n,e.label)}))}));var e=[];return this.edges.forEach((function(n){n.ring||e.push(t._findEdgeRing(n))})),e}},{key:"_findIntersectionNodes",value:function(t){var e=[],n=t,r=function(){var r=0;n.from.getOuterEdges().forEach((function(e){e.label===t.label&&++r})),r>1&&e.push(n.from),n=n.next};do{r()}while(!t.isEqual(n));return e}},{key:"_findEdgeRing",value:function(t){var e=t,n=new Tu;do{n.push(e),e.ring=n,e=e.next}while(!t.isEqual(e));return n}},{key:"removeNode",value:function(t){var e=this;t.getOuterEdges().forEach((function(t){return e.removeEdge(t)})),t.innerEdges.forEach((function(t){return e.removeEdge(t)})),delete this.nodes[t.id]}},{key:"removeEdge",value:function(t){this.edges=this.edges.filter((function(e){return!e.isEqual(t)})),t.deleteEdge()}}],[{key:"fromGeoJson",value:function(e){!function(t){if(!t)throw new Error("No geojson passed");if("FeatureCollection"!==t.type&&"GeometryCollection"!==t.type&&"MultiLineString"!==t.type&&"LineString"!==t.type&&"Feature"!==t.type)throw new Error("Invalid input type '".concat(t.type,"'. Geojson must be FeatureCollection, GeometryCollection, LineString, MultiLineString or Feature"))}(e);var n=new t;return xt(e,(function(t){et(t,"LineString","Graph::fromGeoJson"),ft(t,(function(t,e){if(t){var r=n.getNode(t),i=n.getNode(e);n.addEdge(r,i)}return e}))})),n}}])}();function Ru(t,e){var n,r;ct(t,(function(t,i,o,s,a){if(r!==a)e.push([]);else{var u=n[0],l=n[1],h=t[0],c=t[1];e[a].push([.75*u+.25*h,.75*l+.25*c]),e[a].push([.25*u+.75*h,.25*l+.75*c])}n=t,r=a}),!1),e.forEach((function(t){t.push(t[0])}))}function Au(t,e){var n,r,i;ct(t,(function(t,o,s,a,u){if(r!==a)e.push([[]]);else if(i!==u)e[a].push([]);else{var l=n[0],h=n[1],c=t[0],f=t[1];e[a][u].push([.75*l+.25*c,.75*h+.25*f]),e[a][u].push([.25*l+.75*c,.25*h+.75*f])}n=t,r=a,i=u}),!1),e.forEach((function(t){t.forEach((function(t){t.push(t[0])}))}))}function Du(t,e,n,r,i){for(var o=0;o<t.length;o++){var s=t[o],a=t[o+1];o===t.length-1&&(a=t[0]);var u=qu(s,a,e);n<=0&&u>0?qu(e,s,r)<0||(r=s):n>0&&u<=0&&(Fu(e,s,i)||(i=s)),n=u}return[r,i]}function Fu(t,e,n){return qu(t,e,n)>0}function qu(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(n[0]-t[0])*(e[1]-t[1])}function Vu(t){return Bu(t,"mercator",arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})}function Gu(t){return Bu(t,"wgs84",arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})}function Bu(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=(n=n||{}).mutate;if(!t)throw new Error("geojson is required");return Array.isArray(t)&&U(t[0])?t="mercator"===e?Yu(t):zu(t):(!0!==r&&(t=Ai(t)),ct(t,(function(t){var n="mercator"===e?Yu(t):zu(t);t[0]=n[0],t[1]=n[1]}))),t}function Yu(t){var e=Math.PI/180,n=6378137,r=20037508.342789244,i=Math.abs(t[0])<=180?t[0]:t[0]-360*function(t){return t<0?-1:t>0?1:0}(t[0]),o=[n*i*e,n*Math.log(Math.tan(.25*Math.PI+.5*t[1]*e))];return o[0]>r&&(o[0]=r),o[0]<-r&&(o[0]=-r),o[1]>r&&(o[1]=r),o[1]<-r&&(o[1]=-r),o}function zu(t){var e=180/Math.PI,n=6378137;return[t[0]*e/n,(.5*Math.PI-2*Math.atan(Math.exp(-t[1]/n)))*e]}var ju=Object.freeze({__proto__:null,toMercator:Vu,toWgs84:Gu});var Xu={20:1.07275,15:1.13795,10:1.22385,5:1.3581,2:1.51743,1:1.62762};function Uu(t,e){return e[0]<=t[0]&&e[1]<=t[1]&&e[2]>=t[0]&&e[3]>=t[1]}function Zu(t){var e=[];return function t(n){return 0===n||1===n?1:e[n]>0?e[n]:e[n]=t(n-1)*n}(t)}function Hu(t){return Ju(t),Wu(t)}function Wu(t){return Array.isArray(t)?el(t):t&&t.bbox?el(t.bbox):[360*tl(),180*tl()]}function Ju(t){null!=t&&(Array.isArray(t)?H(t):null!=t.bbox&&H(t.bbox))}function Ku(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Ju(e.bbox),null==t&&(t=1);for(var n=[],r=0;r<t;r++)n.push(I(Wu(e.bbox)));return C(n)}function Qu(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Ju(e.bbox),null==t&&(t=1),void 0!==e.bbox&&null!==e.bbox||(e.bbox=[-180,-90,180,90]),U(e.num_vertices)&&void 0!==e.num_vertices||(e.num_vertices=10),U(e.max_radial_length)&&void 0!==e.max_radial_length||(e.max_radial_length=10);var n=Math.abs(e.bbox[0]-e.bbox[2]),r=Math.abs(e.bbox[1]-e.bbox[3]),i=Math.min(n/2,r/2);if(e.max_radial_length>i)throw new Error("max_radial_length is greater than the radius of the bbox");for(var o=[e.bbox[0]+e.max_radial_length,e.bbox[1]+e.max_radial_length,e.bbox[2]-e.max_radial_length,e.bbox[3]-e.max_radial_length],s=[],a=function(){var t,n=[],r=d(Array(e.num_vertices+1)).map(Math.random);r.forEach((function(t,e,n){n[e]=e>0?t+n[e-1]:t})),r.forEach((function(t){t=2*t*Math.PI/r[r.length-1];var i=Math.random();n.push([i*(e.max_radial_length||10)*Math.sin(t),i*(e.max_radial_length||10)*Math.cos(t)])})),n[n.length-1]=n[0],n=n.reverse().map((t=Wu(o),function(e){return[e[0]+t[0],e[1]+t[1]]})),s.push(S([n]))},u=0;u<t;u++)a();return C(s)}function $u(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.bbox;Ju(n);var r=e.num_vertices,i=e.max_length,o=e.max_rotation;null==t&&(t=1),(!U(r)||void 0===r||r<2)&&(r=10),U(i)&&void 0!==i||(i=1e-4),U(o)&&void 0!==o||(o=Math.PI/8);for(var s=[],a=0;a<t;a++){for(var u=[Wu(n)],l=0;l<r-1;l++){var h=(0===l?2*Math.random()*Math.PI:Math.tan((u[l][1]-u[l-1][1])/(u[l][0]-u[l-1][0])))+(Math.random()-.5)*o*2,c=Math.random()*i;u.push([u[l][0]+c*Math.cos(h),u[l][1]+c*Math.sin(h)])}s.push(L(u))}return C(s)}function tl(){return Math.random()-.5}function el(t){return[Math.random()*(t[2]-t[0])+t[0],Math.random()*(t[3]-t[1])+t[1]]}var nl=Object.freeze({__proto__:null,randomLineString:$u,randomPoint:Ku,randomPolygon:Qu,randomPosition:Hu});function rl(t,e){switch("Feature"===t.type?t.geometry.type:t.type){case"GeometryCollection":return mt(t,(function(t){rl(t,e)})),t;case"LineString":return il(Q(t),e),t;case"Polygon":return ol(Q(t),e),t;case"MultiLineString":return Q(t).forEach((function(t){il(t,e)})),t;case"MultiPolygon":return Q(t).forEach((function(t){ol(t,e)})),t;case"Point":case"MultiPoint":return t}}function il(t,e){Bt(t)===e&&t.reverse()}function ol(t,e){Bt(t[0])!==e&&t[0].reverse();for(var n=1;n<t.length;n++)Bt(t[n])===e&&t[n].reverse()}function sl(t){var e=t%360;return e<0&&(e+=360),e}function al(t,e,n){if(!Z(n=n||{}))throw new Error("options is invalid");var r=n.origin||"centroid",i=n.mutate||!1;if(!t)throw new Error("geojson required");if("number"!=typeof e||e<=0)throw new Error("invalid factor");var o=Array.isArray(r)||"object"===m(r);return!0!==i&&(t=Ai(t)),"FeatureCollection"!==t.type||o?ul(t,e,r):(vt(t,(function(n,i){t.features[i]=ul(n,e,r)})),t)}function ul(t,e,n){var r="Point"===it(t),i=function(t,e){null==e&&(e="centroid");if(Array.isArray(e)||"object"===m(e))return K(e);var n=t.bbox?t.bbox:Rt(t,{recompute:!0}),r=n[0],i=n[1],o=n[2],s=n[3];switch(e){case"sw":case"southwest":case"westsouth":case"bottomleft":return I([r,i]);case"se":case"southeast":case"eastsouth":case"bottomright":return I([o,i]);case"nw":case"northwest":case"westnorth":case"topleft":return I([r,s]);case"ne":case"northeast":case"eastnorth":case"topright":return I([o,s]);case"center":return An(t);case void 0:case null:case"centroid":return gi(t);default:throw new Error("invalid origin")}}(t,n);return 1===e||r||(ct(t,(function(t){var n=Ys(i,t),r=lt(i,t),o=Q(Bs(i,n*e,r));t[0]=o[0],t[1]=o[1],3===t.length&&(t[2]*=e)})),delete t.bbox),t}function ll(t){for(var e=t,n=[];e.parent;)n.unshift(e),e=e.parent;return n}var hl={search:function(t,e,n,r){var i;t.cleanDirty();var o=(r=r||{}).heuristic||hl.heuristics.manhattan,s=null!=(i=r.closest)&&i,a=new gl((function(t){return t.f})),u=e;for(e.h=o(e,n),a.push(e);a.size()>0;){var l=a.pop();if(l===n)return ll(l);l.closed=!0;for(var h=t.neighbors(l),c=0,f=h.length;c<f;++c){var g=h[c];if(!g.closed&&!g.isWall()){var p=l.g+g.getCost(l),v=g.visited;(!v||p<g.g)&&(g.visited=!0,g.parent=l,g.h=g.h||o(g,n),g.g=p,g.f=g.g+g.h,t.markDirty(g),s&&(g.h<u.h||g.h===u.h&&g.g<u.g)&&(u=g),v?a.rescoreElement(g):a.push(g))}}}return s?ll(u):[]},heuristics:{manhattan:function(t,e){return Math.abs(e.x-t.x)+Math.abs(e.y-t.y)},diagonal:function(t,e){var n=Math.sqrt(2),r=Math.abs(e.x-t.x),i=Math.abs(e.y-t.y);return 1*(r+i)+(n-2)*Math.min(r,i)}},cleanNode:function(t){t.f=0,t.g=0,t.h=0,t.visited=!1,t.closed=!1,t.parent=null}};function cl(t,e){e=e||{},this.nodes=[],this.diagonal=!!e.diagonal,this.grid=[];for(var n=0;n<t.length;n++){this.grid[n]=[];for(var r=0,i=t[n];r<i.length;r++){var o=new fl(n,r,i[r]);this.grid[n][r]=o,this.nodes.push(o)}}this.init()}function fl(t,e,n){this.x=t,this.y=e,this.weight=n}function gl(t){this.content=[],this.scoreFunction=t}function pl(t,e){for(var n=0;n<e.features.length;n++)if(zt(t,e.features[n]))return!0;return!1}function vl(t,e,n){var r=e[0],i=e[1],o=n[0]-r,s=n[1]-i;if(0!==o||0!==s){var a=((t[0]-r)*o+(t[1]-i)*s)/(o*o+s*s);a>1?(r=n[0],i=n[1]):a>0&&(r+=o*a,i+=s*a)}return(o=t[0]-r)*o+(s=t[1]-i)*s}function dl(t,e,n,r,i){for(var o,s=r,a=e+1;a<n;a++){var u=vl(t[a],t[e],t[n]);u>s&&(o=a,s=u)}s>r&&(o-e>1&&dl(t,e,o,r,i),i.push(t[o]),n-o>1&&dl(t,o,n,r,i))}function yl(t,e){var n=t.length-1,r=[t[0]];return dl(t,0,n,e,r),r.push(t[n]),r}function ml(t,e,n){if(t.length<=2)return t;var r=void 0!==e?e*e:1;return t=n?t:function(t,e){for(var n,r,i,o,s,a=t[0],u=[a],l=1,h=t.length;l<h;l++)n=t[l],i=a,o=void 0,s=void 0,o=(r=n)[0]-i[0],s=r[1]-i[1],o*o+s*s>e&&(u.push(n),a=n);return a!==n&&u.push(n),u}(t,r),t=yl(t,r)}function _l(t,e,n){return t.map((function(t){if(t.length<4)throw new Error("invalid polygon");for(var r=e,i=ml(t,r,n);!xl(i);)i=ml(t,r-=.01*r,n);return i[i.length-1][0]===i[0][0]&&i[i.length-1][1]===i[0][1]||i.push(i[0]),i}))}function xl(t){return!(t.length<3)&&!(3===t.length&&t[2][0]===t[0][0]&&t[2][1]===t[0][1])}function El(t,e){return{x:t[0]-e[0],y:t[1]-e[1]}}cl.prototype.init=function(){this.dirtyNodes=[];for(var t=0;t<this.nodes.length;t++)hl.cleanNode(this.nodes[t])},cl.prototype.cleanDirty=function(){for(var t=0;t<this.dirtyNodes.length;t++)hl.cleanNode(this.dirtyNodes[t]);this.dirtyNodes=[]},cl.prototype.markDirty=function(t){this.dirtyNodes.push(t)},cl.prototype.neighbors=function(t){var e=[],n=t.x,r=t.y,i=this.grid;return i[n-1]&&i[n-1][r]&&e.push(i[n-1][r]),i[n+1]&&i[n+1][r]&&e.push(i[n+1][r]),i[n]&&i[n][r-1]&&e.push(i[n][r-1]),i[n]&&i[n][r+1]&&e.push(i[n][r+1]),this.diagonal&&(i[n-1]&&i[n-1][r-1]&&e.push(i[n-1][r-1]),i[n+1]&&i[n+1][r-1]&&e.push(i[n+1][r-1]),i[n-1]&&i[n-1][r+1]&&e.push(i[n-1][r+1]),i[n+1]&&i[n+1][r+1]&&e.push(i[n+1][r+1])),e},cl.prototype.toString=function(){for(var t,e,n,r,i=[],o=this.grid,s=0,a=o.length;s<a;s++){for(t=[],n=0,r=(e=o[s]).length;n<r;n++)t.push(e[n].weight);i.push(t.join(" "))}return i.join("\n")},fl.prototype.toString=function(){return"["+this.x+" "+this.y+"]"},fl.prototype.getCost=function(t){return t&&t.x!==this.x&&t.y!==this.y?1.41421*this.weight:this.weight},fl.prototype.isWall=function(){return 0===this.weight},gl.prototype={push:function(t){this.content.push(t),this.sinkDown(this.content.length-1)},pop:function(){var t=this.content[0],e=this.content.pop();return this.content.length>0&&(this.content[0]=e,this.bubbleUp(0)),t},remove:function(t){var e=this.content.indexOf(t),n=this.content.pop();e!==this.content.length-1&&(this.content[e]=n,this.scoreFunction(n)<this.scoreFunction(t)?this.sinkDown(e):this.bubbleUp(e))},size:function(){return this.content.length},rescoreElement:function(t){this.sinkDown(this.content.indexOf(t))},sinkDown:function(t){for(var e=this.content[t];t>0;){var n=(t+1>>1)-1,r=this.content[n];if(!(this.scoreFunction(e)<this.scoreFunction(r)))break;this.content[n]=e,this.content[t]=r,t=n}},bubbleUp:function(t){for(var e=this.content.length,n=this.content[t],r=this.scoreFunction(n);;){var i,o=t+1<<1,s=o-1,a=null;if(s<e){var u=this.content[s];(i=this.scoreFunction(u))<r&&(a=s)}if(o<e){var l=this.content[o];this.scoreFunction(l)<(null===a?r:i)&&(a=o)}if(null===a)break;this.content[t]=this.content[a],this.content[a]=n,t=a}}};var kl,bl={exports:{}};var wl=function(){if(kl)return bl.exports;function t(t,n,i){i=i||2;var o,s,a,h,c,g,p,v=n&&n.length,d=v?n[0]*i:t.length,y=e(t,0,d,i,!0),m=[];if(!y||y.next===y.prev)return m;if(v&&(y=function(t,n,r,i){var o,s,a,h=[];for(o=0,s=n.length;o<s;o++)(a=e(t,n[o]*i,o<s-1?n[o+1]*i:t.length,i,!1))===a.next&&(a.steiner=!0),h.push(f(a));for(h.sort(u),o=0;o<h.length;o++)r=l(h[o],r);return r}(t,n,y,i)),t.length>80*i){o=a=t[0],s=h=t[1];for(var _=i;_<d;_+=i)(c=t[_])<o&&(o=c),(g=t[_+1])<s&&(s=g),c>a&&(a=c),g>h&&(h=g);p=0!==(p=Math.max(a-o,h-s))?32767/p:0}return r(y,m,i,o,s,p,0),m}function e(t,e,n,r,i){var o,s;if(i===I(t,e,n,r)>0)for(o=e;o<n;o+=r)s=k(o,t[o],t[o+1],s);else for(o=n-r;o>=e;o-=r)s=k(o,t[o],t[o+1],s);return s&&d(s,s.next)&&(b(s),s=s.next),s}function n(t,e){if(!t)return t;e||(e=t);var n,r=t;do{if(n=!1,r.steiner||!d(r,r.next)&&0!==v(r.prev,r,r.next))r=r.next;else{if(b(r),(r=e=r.prev)===r.next)break;n=!0}}while(n||r!==e);return e}function r(t,e,u,l,h,f,g){if(t){!g&&f&&function(t,e,n,r){var i=t;do{0===i.z&&(i.z=c(i.x,i.y,e,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,n,r,i,o,s,a,u,l=1;do{for(n=t,t=null,o=null,s=0;n;){for(s++,r=n,a=0,e=0;e<l&&(a++,r=r.nextZ);e++);for(u=l;a>0||u>0&&r;)0!==a&&(0===u||!r||n.z<=r.z)?(i=n,n=n.nextZ,a--):(i=r,r=r.nextZ,u--),o?o.nextZ=i:t=i,i.prevZ=o,o=i;n=r}o.nextZ=null,l*=2}while(s>1)}(i)}(t,l,h,f);for(var p,v,d=t;t.prev!==t.next;)if(p=t.prev,v=t.next,f?o(t,l,h,f):i(t))e.push(p.i/u|0),e.push(t.i/u|0),e.push(v.i/u|0),b(t),t=v.next,d=v.next;else if((t=v)===d){g?1===g?r(t=s(n(t),e,u),e,u,l,h,f,2):2===g&&a(t,e,u,l,h,f):r(n(t),e,u,l,h,f,1);break}}}function i(t){var e=t.prev,n=t,r=t.next;if(v(e,n,r)>=0)return!1;for(var i=e.x,o=n.x,s=r.x,a=e.y,u=n.y,l=r.y,h=i<o?i<s?i:s:o<s?o:s,c=a<u?a<l?a:l:u<l?u:l,f=i>o?i>s?i:s:o>s?o:s,p=a>u?a>l?a:l:u>l?u:l,d=r.next;d!==e;){if(d.x>=h&&d.x<=f&&d.y>=c&&d.y<=p&&g(i,a,o,u,s,l,d.x,d.y)&&v(d.prev,d,d.next)>=0)return!1;d=d.next}return!0}function o(t,e,n,r){var i=t.prev,o=t,s=t.next;if(v(i,o,s)>=0)return!1;for(var a=i.x,u=o.x,l=s.x,h=i.y,f=o.y,p=s.y,d=a<u?a<l?a:l:u<l?u:l,y=h<f?h<p?h:p:f<p?f:p,m=a>u?a>l?a:l:u>l?u:l,_=h>f?h>p?h:p:f>p?f:p,x=c(d,y,e,n,r),E=c(m,_,e,n,r),k=t.prevZ,b=t.nextZ;k&&k.z>=x&&b&&b.z<=E;){if(k.x>=d&&k.x<=m&&k.y>=y&&k.y<=_&&k!==i&&k!==s&&g(a,h,u,f,l,p,k.x,k.y)&&v(k.prev,k,k.next)>=0)return!1;if(k=k.prevZ,b.x>=d&&b.x<=m&&b.y>=y&&b.y<=_&&b!==i&&b!==s&&g(a,h,u,f,l,p,b.x,b.y)&&v(b.prev,b,b.next)>=0)return!1;b=b.nextZ}for(;k&&k.z>=x;){if(k.x>=d&&k.x<=m&&k.y>=y&&k.y<=_&&k!==i&&k!==s&&g(a,h,u,f,l,p,k.x,k.y)&&v(k.prev,k,k.next)>=0)return!1;k=k.prevZ}for(;b&&b.z<=E;){if(b.x>=d&&b.x<=m&&b.y>=y&&b.y<=_&&b!==i&&b!==s&&g(a,h,u,f,l,p,b.x,b.y)&&v(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function s(t,e,r){var i=t;do{var o=i.prev,s=i.next.next;!d(o,s)&&y(o,i,i.next,s)&&x(o,s)&&x(s,o)&&(e.push(o.i/r|0),e.push(i.i/r|0),e.push(s.i/r|0),b(i),b(i.next),i=t=s),i=i.next}while(i!==t);return n(i)}function a(t,e,i,o,s,a){var u=t;do{for(var l=u.next.next;l!==u.prev;){if(u.i!==l.i&&p(u,l)){var h=E(u,l);return u=n(u,u.next),h=n(h,h.next),r(u,e,i,o,s,a,0),void r(h,e,i,o,s,a,0)}l=l.next}u=u.next}while(u!==t)}function u(t,e){return t.x-e.x}function l(t,e){var r=function(t,e){var n,r=e,i=t.x,o=t.y,s=-1/0;do{if(o<=r.y&&o>=r.next.y&&r.next.y!==r.y){var a=r.x+(o-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(a<=i&&a>s&&(s=a,n=r.x<r.next.x?r:r.next,a===i))return n}r=r.next}while(r!==e);if(!n)return null;var u,l=n,c=n.x,f=n.y,p=1/0;r=n;do{i>=r.x&&r.x>=c&&i!==r.x&&g(o<f?i:s,o,c,f,o<f?s:i,o,r.x,r.y)&&(u=Math.abs(o-r.y)/(i-r.x),x(r,t)&&(u<p||u===p&&(r.x>n.x||r.x===n.x&&h(n,r)))&&(n=r,p=u)),r=r.next}while(r!==l);return n}(t,e);if(!r)return e;var i=E(r,t);return n(i,i.next),n(r,r.next)}function h(t,e){return v(t.prev,t,e.prev)<0&&v(e.next,t,t.next)<0}function c(t,e,n,r,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-n)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-r)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function f(t){var e=t,n=t;do{(e.x<n.x||e.x===n.x&&e.y<n.y)&&(n=e),e=e.next}while(e!==t);return n}function g(t,e,n,r,i,o,s,a){return(i-s)*(e-a)>=(t-s)*(o-a)&&(t-s)*(r-a)>=(n-s)*(e-a)&&(n-s)*(o-a)>=(i-s)*(r-a)}function p(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&y(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&(x(t,e)&&x(e,t)&&function(t,e){var n=t,r=!1,i=(t.x+e.x)/2,o=(t.y+e.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&i<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==t);return r}(t,e)&&(v(t.prev,t,e.prev)||v(t,e.prev,e))||d(t,e)&&v(t.prev,t,t.next)>0&&v(e.prev,e,e.next)>0)}function v(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function d(t,e){return t.x===e.x&&t.y===e.y}function y(t,e,n,r){var i=_(v(t,e,n)),o=_(v(t,e,r)),s=_(v(n,r,t)),a=_(v(n,r,e));return i!==o&&s!==a||(!(0!==i||!m(t,n,e))||(!(0!==o||!m(t,r,e))||(!(0!==s||!m(n,t,r))||!(0!==a||!m(n,e,r)))))}function m(t,e,n){return e.x<=Math.max(t.x,n.x)&&e.x>=Math.min(t.x,n.x)&&e.y<=Math.max(t.y,n.y)&&e.y>=Math.min(t.y,n.y)}function _(t){return t>0?1:t<0?-1:0}function x(t,e){return v(t.prev,t,t.next)<0?v(t,e,t.next)>=0&&v(t,t.prev,e)>=0:v(t,e,t.prev)<0||v(t,t.next,e)<0}function E(t,e){var n=new w(t.i,t.x,t.y),r=new w(e.i,e.x,e.y),i=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=i,i.prev=n,r.next=n,n.prev=r,o.next=r,r.prev=o,r}function k(t,e,n,r){var i=new w(t,e,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function b(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function w(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function I(t,e,n,r){for(var i=0,o=e,s=n-r;o<n;o+=r)i+=(t[s]-t[o])*(t[o+1]+t[s+1]),s=o;return i}return kl=1,bl.exports=t,bl.exports.default=t,t.deviation=function(t,e,n,r){var i=e&&e.length,o=i?e[0]*n:t.length,s=Math.abs(I(t,0,o,n));if(i)for(var a=0,u=e.length;a<u;a++){var l=e[a]*n,h=a<u-1?e[a+1]*n:t.length;s-=Math.abs(I(t,l,h,n))}var c=0;for(a=0;a<r.length;a+=3){var f=r[a]*n,g=r[a+1]*n,p=r[a+2]*n;c+=Math.abs((t[f]-t[p])*(t[g+1]-t[f+1])-(t[f]-t[g])*(t[p+1]-t[f+1]))}return 0===s&&0===c?0:Math.abs((c-s)/s)},t.flatten=function(t){for(var e=t[0][0].length,n={vertices:[],holes:[],dimensions:e},r=0,i=0;i<t.length;i++){for(var o=0;o<t[i].length;o++)for(var s=0;s<e;s++)n.vertices.push(t[i][o][s]);i>0&&(r+=t[i-1].length,n.holes.push(r))}return n},bl.exports}(),Il=mn(wl);function Nl(t){var e=function(t){for(var e=t[0][0].length,n={vertices:[],holes:[],dimensions:e},r=0,i=0;i<t.length;i++){for(var o=0;o<t[i].length;o++)for(var s=0;s<e;s++)n.vertices.push(t[i][o][s]);i>0&&(r+=t[i-1].length,n.holes.push(r))}return n}(t),n=Il(e.vertices,e.holes,2),r=[],i=[];n.forEach((function(t,r){var o=n[r];i.push([e.vertices[2*o],e.vertices[2*o+1]])}));for(var o=0;o<i.length;o+=3){var s=i.slice(o,o+3);s.push(i[o]),r.push(S([s]))}return r}function Sl(t,e,n){if("Polygon"!==t.geometry.type)throw new Error("The input feature must be a Polygon");void 0===n&&(n=1);var r=t.geometry.coordinates,i=[],o={};if(n){for(var s=[],a=0;a<r.length;a++)for(var u=0;u<r[a].length-1;u++)s.push(v(a,u));var l=new qe;l.load(s)}for(var h=0;h<r.length;h++)for(var c=0;c<r[h].length-1;c++){if(n)l.search(v(h,c)).forEach((function(t){var e=t.ring,n=t.edge;p(h,c,e,n)}));else for(var f=0;f<r.length;f++)for(var g=0;g<r[f].length-1;g++)p(h,c,f,g)}return e||(i={type:"Feature",geometry:{type:"MultiPoint",coordinates:i}}),i;function p(t,n,s,a){var u,l,h=r[t][n],c=r[t][n+1],f=r[s][a],g=r[s][a+1],p=function(t,e,n,r){if(Ml(t,n)||Ml(t,r)||Ml(e,n)||Ml(r,n))return null;var i=t[0],o=t[1],s=e[0],a=e[1],u=n[0],l=n[1],h=r[0],c=r[1],f=(i-s)*(l-c)-(o-a)*(u-h);if(0===f)return null;var g=((i*a-o*s)*(u-h)-(i-s)*(u*c-l*h))/f,p=((i*a-o*s)*(l-c)-(o-a)*(u*c-l*h))/f;return[g,p]}(h,c,f,g);if(null!==p&&(u=c[0]!==h[0]?(p[0]-h[0])/(c[0]-h[0]):(p[1]-h[1])/(c[1]-h[1]),l=g[0]!==f[0]?(p[0]-f[0])/(g[0]-f[0]):(p[1]-f[1])/(g[1]-f[1]),!(u>=1||u<=0||l>=1||l<=0))){var v=p,d=!o[v];d&&(o[v]=!0),e?i.push(e(p,t,n,h,c,u,s,a,f,g,l,d)):i.push(p)}}function v(t,e){var n,i,o,s,a=r[t][e],u=r[t][e+1];return a[0]<u[0]?(n=a[0],i=u[0]):(n=u[0],i=a[0]),a[1]<u[1]?(o=a[1],s=u[1]):(o=u[1],s=a[1]),{minX:n,minY:o,maxX:i,maxY:s,ring:t,edge:e}}}function Ml(t,e){if(!t||!e)return!1;if(t.length!==e.length)return!1;for(var n=0,r=t.length;n<r;n++)if(t[n]instanceof Array&&e[n]instanceof Array){if(!Ml(t[n],e[n]))return!1}else if(t[n]!==e[n])return!1;return!0}function Ll(t){if("Feature"!=t.type)throw new Error("The input must a geojson object of type Feature");if(void 0===t.geometry||null==t.geometry)throw new Error("The input must a geojson object with a non-empty geometry");if("Polygon"!=t.geometry.type)throw new Error("The input must be a geojson Polygon");for(var e=t.geometry.coordinates.length,n=[],r=0;r<e;r++){var i=t.geometry.coordinates[r];Rl(i[0],i[i.length-1])||i.push(i[0]);for(var o=0;o<i.length-1;o++)n.push(i[o])}if(!function(t){for(var e={},n=1,r=0,i=t.length;r<i;++r){if(Object.prototype.hasOwnProperty.call(e,t[r])){n=0;break}e[t[r]]=1}return n}(n))throw new Error("The input polygon may not have duplicate vertices (except for the first and last vertex of each ring)");var s=n.length,a=Sl(t,(function(t,e,n,r,i,o,s,a,u,l,h,c){return[t,e,n,r,i,o,s,a,u,l,h,c]})),u=a.length;if(0==u){var l=[];for(r=0;r<e;r++)l.push(S([t.geometry.coordinates[r]],{parent:-1,winding:Ol(t.geometry.coordinates[r])}));var h=C(l);return q(),V(),h}var c=[],f=[];for(r=0;r<e;r++){c.push([]);for(o=0;o<t.geometry.coordinates[r].length-1;o++)c[r].push([new Pl(t.geometry.coordinates[r][Al(o+1,t.geometry.coordinates[r].length-1)],1,[r,o],[r,Al(o+1,t.geometry.coordinates[r].length-1)],void 0)]),f.push(new Cl(t.geometry.coordinates[r][o],[r,Al(o-1,t.geometry.coordinates[r].length-1)],[r,o],void 0,void 0,!1,!0))}for(r=0;r<u;r++)c[a[r][1]][a[r][2]].push(new Pl(a[r][0],a[r][5],[a[r][1],a[r][2]],[a[r][6],a[r][7]],void 0)),a[r][11]&&f.push(new Cl(a[r][0],[a[r][1],a[r][2]],[a[r][6],a[r][7]],void 0,void 0,!0,!0));var g=f.length;for(r=0;r<c.length;r++)for(o=0;o<c[r].length;o++)c[r][o].sort((function(t,e){return t.param<e.param?-1:1}));var p=[];for(r=0;r<g;r++)p.push({minX:f[r].coord[0],minY:f[r].coord[1],maxX:f[r].coord[0],maxY:f[r].coord[1],index:r});var v=new qe;v.load(p);for(r=0;r<c.length;r++)for(o=0;o<c[r].length;o++)for(var d=0;d<c[r][o].length;d++){m=d==c[r][o].length-1?c[r][Al(o+1,t.geometry.coordinates[r].length-1)][0].coord:c[r][o][d+1].coord;var y=v.search({minX:m[0],minY:m[1],maxX:m[0],maxY:m[1]})[0];c[r][o][d].nxtIsectAlongEdgeIn=y.index}for(r=0;r<c.length;r++)for(o=0;o<c[r].length;o++)for(d=0;d<c[r][o].length;d++){var m=c[r][o][d].coord,_=(y=v.search({minX:m[0],minY:m[1],maxX:m[0],maxY:m[1]})[0]).index;_<s?f[_].nxtIsectAlongRingAndEdge2=c[r][o][d].nxtIsectAlongEdgeIn:Rl(f[_].ringAndEdge1,c[r][o][d].ringAndEdgeIn)?f[_].nxtIsectAlongRingAndEdge1=c[r][o][d].nxtIsectAlongEdgeIn:f[_].nxtIsectAlongRingAndEdge2=c[r][o][d].nxtIsectAlongEdgeIn}var x=[];for(r=0,o=0;o<e;o++){var E=r;for(d=0;d<t.geometry.coordinates[o].length-1;d++)f[r].coord[0]<f[E].coord[0]&&(E=r),r++;var k=f[E].nxtIsectAlongRingAndEdge2;for(d=0;d<f.length;d++)if(f[d].nxtIsectAlongRingAndEdge1==E||f[d].nxtIsectAlongRingAndEdge2==E){var b=d;break}var w=Tl([f[b].coord,f[E].coord,f[k].coord],!0)?1:-1;x.push({isect:E,parent:-1,winding:w})}x.sort((function(t,e){return f[t.isect].coord>f[e.isect].coord?-1:1}));for(l=[];x.length>0;){var I=x.pop(),N=I.isect,M=I.parent,L=I.winding,P=l.length,T=[f[N].coord],O=N;if(f[N].ringAndEdge1Walkable)var R=f[N].ringAndEdge1,A=f[N].nxtIsectAlongRingAndEdge1;else R=f[N].ringAndEdge2,A=f[N].nxtIsectAlongRingAndEdge2;for(;!Rl(f[N].coord,f[A].coord);){T.push(f[A].coord);var D=void 0;for(r=0;r<x.length;r++)if(x[r].isect==A){D=r;break}if(null!=D&&x.splice(D,1),Rl(R,f[A].ringAndEdge1)){if(R=f[A].ringAndEdge2,f[A].ringAndEdge2Walkable=!1,f[A].ringAndEdge1Walkable){var F={isect:A};Tl([f[O].coord,f[A].coord,f[f[A].nxtIsectAlongRingAndEdge2].coord],1==L)?(F.parent=M,F.winding=-L):(F.parent=P,F.winding=L),x.push(F)}O=A,A=f[A].nxtIsectAlongRingAndEdge2}else{if(R=f[A].ringAndEdge1,f[A].ringAndEdge1Walkable=!1,f[A].ringAndEdge2Walkable){F={isect:A};Tl([f[O].coord,f[A].coord,f[f[A].nxtIsectAlongRingAndEdge1].coord],1==L)?(F.parent=M,F.winding=-L):(F.parent=P,F.winding=L),x.push(F)}O=A,A=f[A].nxtIsectAlongRingAndEdge1}}T.push(f[A].coord),l.push(S([T],{index:P,parent:M,winding:L,netWinding:void 0}))}h=C(l);function q(){for(var t=[],e=0;e<h.features.length;e++)-1==h.features[e].properties.parent&&t.push(e);if(t.length>1)for(e=0;e<t.length;e++){for(var n=-1,r=0;r<h.features.length;r++)t[e]!=r&&zt(h.features[t[e]].geometry.coordinates[0][0],h.features[r],{ignoreBoundary:!0})&&Lt(h.features[r])<Infinity&&(n=r);h.features[t[e]].properties.parent=n}}function V(){for(var t=0;t<h.features.length;t++)if(-1==h.features[t].properties.parent){var e=h.features[t].properties.winding;h.features[t].properties.netWinding=e,G(t,e)}}function G(t,e){for(var n=0;n<h.features.length;n++)if(h.features[n].properties.parent==t){var r=e+h.features[n].properties.winding;h.features[n].properties.netWinding=r,G(n,r)}}return q(),V(),h}var Pl=function(t,e,n,r,i){this.coord=t,this.param=e,this.ringAndEdgeIn=n,this.ringAndEdgeOut=r,this.nxtIsectAlongEdgeIn=i},Cl=function(t,e,n,r,i,o,s){this.coord=t,this.ringAndEdge1=e,this.ringAndEdge2=n,this.nxtIsectAlongRingAndEdge1=r,this.nxtIsectAlongRingAndEdge2=i,this.ringAndEdge1Walkable=o,this.ringAndEdge2Walkable=s};function Tl(t,e){if(void 0===e&&(e=!0),3!=t.length)throw new Error("This function requires an array of three points [x,y]");return(t[1][0]-t[0][0])*(t[2][1]-t[0][1])-(t[1][1]-t[0][1])*(t[2][0]-t[0][0])>=0==e}function Ol(t){for(var e=0,n=0;n<t.length-1;n++)t[n][0]<t[e][0]&&(e=n);if(Tl([t[Al(e-1,t.length-1)],t[e],t[Al(e+1,t.length-1)]],!0))var r=1;else r=-1;return r}function Rl(t,e){if(!t||!e)return!1;if(t.length!=e.length)return!1;for(var n=0,r=t.length;n<r;n++)if(t[n]instanceof Array&&e[n]instanceof Array){if(!Rl(t[n],e[n]))return!1}else if(t[n]!=e[n])return!1;return!0}function Al(t,e){return(t%e+e)%e}function Dl(t){return function(){return t}}function Fl(t){return t[0]}function ql(t){return t[1]}function Vl(){this._=null}function Gl(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function Bl(t,e){var n=e,r=e.R,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function Yl(t,e){var n=e,r=e.L,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function zl(t){for(;t.L;)t=t.L;return t}function jl(t,e,n,r){var i=[null,null],o=ph.push(i)-1;return i.left=t,i.right=e,n&&Ul(i,t,e,n),r&&Ul(i,e,t,r),fh[t.index].halfedges.push(o),fh[e.index].halfedges.push(o),i}function Xl(t,e,n){var r=[e,n];return r.left=t,r}function Ul(t,e,n,r){t[0]||t[1]?t.left===n?t[1]=r:t[0]=r:(t[0]=r,t.left=e,t.right=n)}function Zl(t,e,n,r,i){var o,s=t[0],a=t[1],u=s[0],l=s[1],h=0,c=1,f=a[0]-u,g=a[1]-l;if(o=e-u,f||!(o>0)){if(o/=f,f<0){if(o<h)return;o<c&&(c=o)}else if(f>0){if(o>c)return;o>h&&(h=o)}if(o=r-u,f||!(o<0)){if(o/=f,f<0){if(o>c)return;o>h&&(h=o)}else if(f>0){if(o<h)return;o<c&&(c=o)}if(o=n-l,g||!(o>0)){if(o/=g,g<0){if(o<h)return;o<c&&(c=o)}else if(g>0){if(o>c)return;o>h&&(h=o)}if(o=i-l,g||!(o<0)){if(o/=g,g<0){if(o>c)return;o>h&&(h=o)}else if(g>0){if(o<h)return;o<c&&(c=o)}return!(h>0||c<1)||(h>0&&(t[0]=[u+h*f,l+h*g]),c<1&&(t[1]=[u+c*f,l+c*g]),!0)}}}}}function Hl(t,e,n,r,i){var o=t[1];if(o)return!0;var s,a,u=t[0],l=t.left,h=t.right,c=l[0],f=l[1],g=h[0],p=h[1],v=(c+g)/2,d=(f+p)/2;if(p===f){if(v<e||v>=r)return;if(c>g){if(u){if(u[1]>=i)return}else u=[v,n];o=[v,i]}else{if(u){if(u[1]<n)return}else u=[v,i];o=[v,n]}}else if(a=d-(s=(c-g)/(p-f))*v,s<-1||s>1)if(c>g){if(u){if(u[1]>=i)return}else u=[(n-a)/s,n];o=[(i-a)/s,i]}else{if(u){if(u[1]<n)return}else u=[(i-a)/s,i];o=[(n-a)/s,n]}else if(f<p){if(u){if(u[0]>=r)return}else u=[e,s*e+a];o=[r,s*r+a]}else{if(u){if(u[0]<e)return}else u=[r,s*r+a];o=[e,s*e+a]}return t[0]=u,t[1]=o,!0}function Wl(t,e){var n=t.site,r=e.left,i=e.right;return n===i&&(i=r,r=n),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(n===r?(r=e[1],i=e[0]):(r=e[0],i=e[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function Jl(t,e){return e[+(e.left!==t.site)]}function Kl(t,e){return e[+(e.left===t.site)]}Vl.prototype={constructor:Vl,insert:function(t,e){var n,r,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=zl(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(r=n.U).L?(i=r.R)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.R&&(Bl(this,n),n=(t=n).U),n.C=!1,r.C=!0,Yl(this,r)):(i=r.L)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.L&&(Yl(this,n),n=(t=n).U),n.C=!1,r.C=!0,Bl(this,r)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,r,i=t.U,o=t.L,s=t.R;if(n=o?s?zl(s):o:s,i?i.L===t?i.L=n:i.R=n:this._=n,o&&s?(r=n.C,n.C=t.C,n.L=o,o.U=n,n!==s?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=s,s.U=n):(n.U=i,i=n,t=n.R)):(r=t.C,t=n),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,Bl(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,Yl(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,Bl(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,Yl(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,Bl(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,Yl(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var Ql,$l=[];function th(){Gl(this),this.x=this.y=this.arc=this.site=this.cy=null}function eh(t){var e=t.P,n=t.N;if(e&&n){var r=e.site,i=t.site,o=n.site;if(r!==o){var s=i[0],a=i[1],u=r[0]-s,l=r[1]-a,h=o[0]-s,c=o[1]-a,f=2*(u*c-l*h);if(!(f>=-dh)){var g=u*u+l*l,p=h*h+c*c,v=(c*g-l*p)/f,d=(u*p-h*g)/f,y=$l.pop()||new th;y.arc=t,y.site=i,y.x=v+s,y.y=(y.cy=d+a)+Math.sqrt(v*v+d*d),t.circle=y;for(var m=null,_=gh._;_;)if(y.y<_.y||y.y===_.y&&y.x<=_.x){if(!_.L){m=_.P;break}_=_.L}else{if(!_.R){m=_;break}_=_.R}gh.insert(m,y),m||(Ql=y)}}}}function nh(t){var e=t.circle;e&&(e.P||(Ql=e.N),gh.remove(e),$l.push(e),Gl(e),t.circle=null)}var rh=[];function ih(){Gl(this),this.edge=this.site=this.circle=null}function oh(t){var e=rh.pop()||new ih;return e.site=t,e}function sh(t){nh(t),ch.remove(t),rh.push(t),Gl(t)}function ah(t){var e=t.circle,n=e.x,r=e.cy,i=[n,r],o=t.P,s=t.N,a=[t];sh(t);for(var u=o;u.circle&&Math.abs(n-u.circle.x)<vh&&Math.abs(r-u.circle.cy)<vh;)o=u.P,a.unshift(u),sh(u),u=o;a.unshift(u),nh(u);for(var l=s;l.circle&&Math.abs(n-l.circle.x)<vh&&Math.abs(r-l.circle.cy)<vh;)s=l.N,a.push(l),sh(l),l=s;a.push(l),nh(l);var h,c=a.length;for(h=1;h<c;++h)l=a[h],u=a[h-1],Ul(l.edge,u.site,l.site,i);u=a[0],(l=a[c-1]).edge=jl(u.site,l.site,null,i),eh(u),eh(l)}function uh(t){for(var e,n,r,i,o=t[0],s=t[1],a=ch._;a;)if((r=lh(a,s)-o)>vh)a=a.L;else{if(!((i=o-hh(a,s))>vh)){r>-vh?(e=a.P,n=a):i>-vh?(e=a,n=a.N):e=n=a;break}if(!a.R){e=a;break}a=a.R}!function(t){fh[t.index]={site:t,halfedges:[]}}(t);var u=oh(t);if(ch.insert(e,u),e||n){if(e===n)return nh(e),n=oh(e.site),ch.insert(u,n),u.edge=n.edge=jl(e.site,u.site),eh(e),void eh(n);if(n){nh(e),nh(n);var l=e.site,h=l[0],c=l[1],f=t[0]-h,g=t[1]-c,p=n.site,v=p[0]-h,d=p[1]-c,y=2*(f*d-g*v),m=f*f+g*g,_=v*v+d*d,x=[(d*m-g*_)/y+h,(f*_-v*m)/y+c];Ul(n.edge,l,p,x),u.edge=jl(l,t,null,x),n.edge=jl(t,p,null,x),eh(e),eh(n)}else u.edge=jl(e.site,u.site)}}function lh(t,e){var n=t.site,r=n[0],i=n[1],o=i-e;if(!o)return r;var s=t.P;if(!s)return-1/0;var a=(n=s.site)[0],u=n[1],l=u-e;if(!l)return a;var h=a-r,c=1/o-1/l,f=h/l;return c?(-f+Math.sqrt(f*f-2*c*(h*h/(-2*l)-u+l/2+i-o/2)))/c+r:(r+a)/2}function hh(t,e){var n=t.N;if(n)return lh(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var ch,fh,gh,ph,vh=1e-6,dh=1e-12;function yh(t,e){return e[1]-t[1]||e[0]-t[0]}function mh(t,e){var n,r,i,o=t.sort(yh).pop();for(ph=[],fh=new Array(t.length),ch=new Vl,gh=new Vl;;)if(i=Ql,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===n&&o[1]===r||(uh(o),n=o[0],r=o[1]),o=t.pop();else{if(!i)break;ah(i.arc)}if(function(){for(var t,e,n,r,i=0,o=fh.length;i<o;++i)if((t=fh[i])&&(r=(e=t.halfedges).length)){var s=new Array(r),a=new Array(r);for(n=0;n<r;++n)s[n]=n,a[n]=Wl(t,ph[e[n]]);for(s.sort((function(t,e){return a[e]-a[t]})),n=0;n<r;++n)a[n]=e[s[n]];for(n=0;n<r;++n)e[n]=a[n]}}(),e){var s=+e[0][0],a=+e[0][1],u=+e[1][0],l=+e[1][1];!function(t,e,n,r){for(var i,o=ph.length;o--;)Hl(i=ph[o],t,e,n,r)&&Zl(i,t,e,n,r)&&(Math.abs(i[0][0]-i[1][0])>vh||Math.abs(i[0][1]-i[1][1])>vh)||delete ph[o]}(s,a,u,l),function(t,e,n,r){var i,o,s,a,u,l,h,c,f,g,p,v,d=fh.length,y=!0;for(i=0;i<d;++i)if(o=fh[i]){for(s=o.site,a=(u=o.halfedges).length;a--;)ph[u[a]]||u.splice(a,1);for(a=0,l=u.length;a<l;)p=(g=Kl(o,ph[u[a]]))[0],v=g[1],c=(h=Jl(o,ph[u[++a%l]]))[0],f=h[1],(Math.abs(p-c)>vh||Math.abs(v-f)>vh)&&(u.splice(a,0,ph.push(Xl(s,g,Math.abs(p-t)<vh&&r-v>vh?[t,Math.abs(c-t)<vh?f:r]:Math.abs(v-r)<vh&&n-p>vh?[Math.abs(f-r)<vh?c:n,r]:Math.abs(p-n)<vh&&v-e>vh?[n,Math.abs(c-n)<vh?f:e]:Math.abs(v-e)<vh&&p-t>vh?[Math.abs(f-e)<vh?c:t,e]:null))-1),++l);l&&(y=!1)}if(y){var m,_,x,E=1/0;for(i=0,y=null;i<d;++i)(o=fh[i])&&(x=(m=(s=o.site)[0]-t)*m+(_=s[1]-e)*_)<E&&(E=x,y=o);if(y){var k=[t,e],b=[t,r],w=[n,r],I=[n,e];y.halfedges.push(ph.push(Xl(s=y.site,k,b))-1,ph.push(Xl(s,b,w))-1,ph.push(Xl(s,w,I))-1,ph.push(Xl(s,I,k))-1)}}for(i=0;i<d;++i)(o=fh[i])&&(o.halfedges.length||delete fh[i])}(s,a,u,l)}this.edges=ph,this.cells=fh,ch=gh=ph=fh=null}mh.prototype={constructor:mh,polygons:function(){var t=this.edges;return this.cells.map((function(e){var n=e.halfedges.map((function(n){return Jl(e,t[n])}));return n.data=e.site.data,n}))},triangles:function(){var t=[],e=this.edges;return this.cells.forEach((function(n,r){if(o=(i=n.halfedges).length)for(var i,o,s,a,u,l,h=n.site,c=-1,f=e[i[o-1]],g=f.left===h?f.right:f.left;++c<o;)s=g,g=(f=e[i[c]]).left===h?f.right:f.left,s&&g&&r<s.index&&r<g.index&&(u=s,l=g,((a=h)[0]-l[0])*(u[1]-a[1])-(a[0]-u[0])*(l[1]-a[1])<0)&&t.push([h.data,s.data,g.data])})),t},links:function(){return this.edges.filter((function(t){return t.right})).map((function(t){return{source:t.left.data,target:t.right.data}}))},find:function(t,e,n){for(var r,i,o=this,s=o._found||0,a=o.cells.length;!(i=o.cells[s]);)if(++s>=a)return null;var u=t-i.site[0],l=e-i.site[1],h=u*u+l*l;do{i=o.cells[r=s],s=null,i.halfedges.forEach((function(n){var r=o.edges[n],a=r.left;if(a!==i.site&&a||(a=r.right)){var u=t-a[0],l=e-a[1],c=u*u+l*l;c<h&&(h=c,s=a.index)}}))}while(null!==s);return o._found=r,null==n||h<=n*n?i.site:null}},t.along=function(t,e){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=rt(t).coordinates,i=0,o=0;o<r.length&&!(e>=i&&o===r.length-1);o++){if(i>=e){var s=e-i;if(s){var a=st(r[o],r[o-1])-180;return at(r[o],s,a,n)}return I(r[o])}i+=ut(r[o],r[o+1],n)}return I(r[r.length-1])},t.angle=function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!Z(r))throw new Error("options is invalid");if(!t)throw new Error("startPoint is required");if(!e)throw new Error("midPoint is required");if(!n)throw new Error("endPoint is required");var i=t,o=e,s=n,a=G(!0!==r.mercator?st(o,i):lt(o,i)),u=G(!0!==r.mercator?st(o,s):lt(o,s));u<a&&(u+=360);var l=u-a;return!0===r.explementary?360-l:l},t.applyFilter=ji,t.area=Lt,t.areaFactors=k,t.azimuthToBearing=B,t.bbox=Rt,t.bboxClip=function(t,e){var n=rt(t),r=n.type,i="Feature"===t.type?t.properties:{},o=n.coordinates;switch(r){case"LineString":case"MultiLineString":var s=[];return"LineString"===r&&(o=[o]),o.forEach((function(t){!function(t,e,n){var r,i,o,s,a,u=t.length,l=Ft(t[0],e),h=[];for(n||(n=[]),r=1;r<u;r++){for(s=t[r-1],i=o=Ft(a=t[r],e);;){if(!(l|i)){h.push(s),i!==o?(h.push(a),r<u-1&&(n.push(h),h=[])):r===u-1&&h.push(a);break}if(l&i)break;l?l=Ft(s=Dt(s,a,l,e),e):i=Ft(a=Dt(s,a,i,e),e)}l=o}h.length&&n.push(h)}(t,e,s)})),1===s.length?L(s[0],i):T(s,i);case"Polygon":return S(qt(o,e),i);case"MultiPolygon":return R(o.map((function(t){return qt(t,e)})),i);default:throw new Error("geometry "+r+" not supported")}},t.bboxPolygon=Vt,t.bearing=st,t.bearingToAzimuth=G,t.bezierSpline=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.resolution||1e4,r=e.sharpness||.85,i=[],o=rt(t).coordinates.map((function(t){return{x:t[0],y:t[1]}})),s=new Gt({duration:n,points:o,sharpness:r}),a=function(t){var e=s.pos(t);Math.floor(t/100)%2==0&&i.push([e.x,e.y])},u=0;u<s.duration;u+=10)a(u);return a(s.duration),L(i,e.properties)},t.booleanClockwise=Bt,t.booleanConcave=function(t){var e=rt(t).coordinates;if(e[0].length<=4)return!1;for(var n=!1,r=e[0].length-1,i=0;i<r;i++){var o=e[0][(i+2)%r][0]-e[0][(i+1)%r][0],s=e[0][(i+2)%r][1]-e[0][(i+1)%r][1],a=e[0][i][0]-e[0][(i+1)%r][0],u=o*(e[0][i][1]-e[0][(i+1)%r][1])-s*a;if(0===i)n=u>0;else if(n!==u>0)return!0}return!1},t.booleanContains=function(t,e){var n=rt(t),r=rt(e),i=n.type,o=r.type,s=n.coordinates,u=r.coordinates;switch(i){case"Point":if("Point"===o)return Ht(s,u);throw new Error("feature2 "+o+" geometry not supported");case"MultiPoint":switch(o){case"Point":return function(t,e){var n,r=!1;for(n=0;n<t.coordinates.length;n++)if(Ht(t.coordinates[n],e.coordinates)){r=!0;break}return r}(n,r);case"MultiPoint":return function(t,e){var n,r=a(e.coordinates);try{for(r.s();!(n=r.n()).done;){var i,o=n.value,s=!1,u=a(t.coordinates);try{for(u.s();!(i=u.n()).done;){if(Ht(o,i.value)){s=!0;break}}}catch(t){u.e(t)}finally{u.f()}if(!s)return!1}}catch(t){r.e(t)}finally{r.f()}return!0}(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}case"LineString":switch(o){case"Point":return jt(r,n,{ignoreEndVertices:!0});case"LineString":return function(t,e){var n,r=!1,i=a(e.coordinates);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(jt({type:"Point",coordinates:o},t,{ignoreEndVertices:!0})&&(r=!0),!jt({type:"Point",coordinates:o},t,{ignoreEndVertices:!1}))return!1}}catch(t){i.e(t)}finally{i.f()}return r}(n,r);case"MultiPoint":return function(t,e){var n,r=!1,i=a(e.coordinates);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(jt(o,t,{ignoreEndVertices:!0})&&(r=!0),!jt(o,t))return!1}}catch(t){i.e(t)}finally{i.f()}if(r)return!0;return!1}(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}case"Polygon":switch(o){case"Point":return zt(r,n,{ignoreBoundary:!0});case"LineString":return function(t,e){var n=!1,r=0,i=Rt(t),o=Rt(e);if(!Zt(i,o))return!1;for(;r<e.coordinates.length-1;r++){if(zt({type:"Point",coordinates:Wt(e.coordinates[r],e.coordinates[r+1])},t,{ignoreBoundary:!0})){n=!0;break}}return n}(n,r);case"Polygon":return Ut(n,r);case"MultiPoint":return function(t,e){var n,r=a(e.coordinates);try{for(r.s();!(n=r.n()).done;){if(!zt(n.value,t,{ignoreBoundary:!0}))return!1}}catch(t){r.e(t)}finally{r.f()}return!0}(n,r);default:throw new Error("feature2 "+o+" geometry not supported")}case"MultiPolygon":if("Polygon"===o)return function(t,e){return t.coordinates.some((function(t){return Ut({type:"Polygon",coordinates:t},e)}))}(n,r);throw new Error("feature2 "+o+" geometry not supported");default:throw new Error("feature1 "+i+" geometry not supported")}},t.booleanCrosses=ce,t.booleanDisjoint=de,t.booleanEqual=function(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).precision;if("number"!=typeof(n=null==n||isNaN(n)?6:n)||!(n>=0))throw new Error("precision must be a positive number");return rt(t).type===rt(e).type&&Ne(Le(t),Le(e),{precision:n})},t.booleanIntersects=Oe,t.booleanOverlap=function(t,e){var n=rt(t),r=rt(e),i=n.type,o=r.type;if("MultiPoint"===i&&"MultiPoint"!==o||("LineString"===i||"MultiLineString"===i)&&"LineString"!==o&&"MultiLineString"!==o||("Polygon"===i||"MultiPolygon"===i)&&"Polygon"!==o&&"MultiPolygon"!==o)throw new Error("features must be of the same type");if("Point"===i)throw new Error("Point geometry not supported");if(Ne(t,e,{precision:6}))return!1;var s=0;switch(i){case"MultiPoint":for(var a=0;a<n.coordinates.length;a++)for(var u=0;u<r.coordinates.length;u++){var l=n.coordinates[a],h=r.coordinates[u];if(l[0]===h[0]&&l[1]===h[1])return!0}return!1;case"LineString":case"MultiLineString":kt(t,(function(t){kt(e,(function(e){kn(t,e).features.length&&s++}))}));break;case"Polygon":case"MultiPolygon":kt(t,(function(t){kt(e,(function(e){ue(t,e).features.length&&s++}))}))}return s>0},t.booleanParallel=function(t,e){if(!t)throw new Error("line1 is required");if(!e)throw new Error("line2 is required");if("LineString"!==In(t,"line1"))throw new Error("line1 must be a LineString");if("LineString"!==In(e,"line2"))throw new Error("line2 must be a LineString");for(var n=$e(Le(t)).features,r=$e(Le(e)).features,i=0;i<n.length;i++){var o=n[i].geometry.coordinates;if(!r[i])break;if(!wn(o,r[i].geometry.coordinates))return!1}return!0},t.booleanPointInPolygon=zt,t.booleanPointOnLine=jt,t.booleanTouches=function(t,e){var n=rt(t),r=rt(e),i=n.type,o=r.type;switch(i){case"Point":switch(o){case"LineString":return Nn(n,r);case"MultiLineString":for(var s=!1,a=0;a<r.coordinates.length;a++)Nn(n,{type:"LineString",coordinates:r.coordinates[a]})&&(s=!0);return s;case"Polygon":for(var u=0;u<r.coordinates.length;u++)if(jt(n,{type:"LineString",coordinates:r.coordinates[u]}))return!0;return!1;case"MultiPolygon":for(u=0;u<r.coordinates.length;u++)for(a=0;a<r.coordinates[u].length;a++)if(jt(n,{type:"LineString",coordinates:r.coordinates[u][a]}))return!0;return!1;default:throw new Error("feature2 "+o+" geometry not supported")}case"MultiPoint":switch(o){case"LineString":for(s=!1,u=0;u<n.coordinates.length;u++)if(s||Nn({type:"Point",coordinates:n.coordinates[u]},r)&&(s=!0),jt({type:"Point",coordinates:n.coordinates[u]},r,{ignoreEndVertices:!0}))return!1;return s;case"MultiLineString":for(s=!1,u=0;u<n.coordinates.length;u++)for(a=0;a<r.coordinates.length;a++)if(s||Nn({type:"Point",coordinates:n.coordinates[u]},{type:"LineString",coordinates:r.coordinates[a]})&&(s=!0),jt({type:"Point",coordinates:n.coordinates[u]},{type:"LineString",coordinates:r.coordinates[a]},{ignoreEndVertices:!0}))return!1;return s;case"Polygon":for(s=!1,u=0;u<n.coordinates.length;u++)if(s||jt({type:"Point",coordinates:n.coordinates[u]},{type:"LineString",coordinates:r.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[u]},r,{ignoreBoundary:!0}))return!1;return s;case"MultiPolygon":for(s=!1,u=0;u<n.coordinates.length;u++)for(a=0;a<r.coordinates.length;a++)if(s||jt({type:"Point",coordinates:n.coordinates[u]},{type:"LineString",coordinates:r.coordinates[a][0]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[u]},{type:"Polygon",coordinates:r.coordinates[a]},{ignoreBoundary:!0}))return!1;return s;default:throw new Error("feature2 "+o+" geometry not supported")}case"LineString":switch(o){case"Point":return Nn(r,n);case"MultiPoint":for(s=!1,u=0;u<r.coordinates.length;u++)if(s||Nn({type:"Point",coordinates:r.coordinates[u]},n)&&(s=!0),jt({type:"Point",coordinates:r.coordinates[u]},n,{ignoreEndVertices:!0}))return!1;return s;case"LineString":var l=!1;if(Nn({type:"Point",coordinates:n.coordinates[0]},r)&&(l=!0),Nn({type:"Point",coordinates:n.coordinates[n.coordinates.length-1]},r)&&(l=!0),!1===l)return!1;for(u=0;u<n.coordinates.length;u++)if(jt({type:"Point",coordinates:n.coordinates[u]},r,{ignoreEndVertices:!0}))return!1;return l;case"MultiLineString":for(l=!1,u=0;u<r.coordinates.length;u++){Nn({type:"Point",coordinates:n.coordinates[0]},{type:"LineString",coordinates:r.coordinates[u]})&&(l=!0),Nn({type:"Point",coordinates:n.coordinates[n.coordinates.length-1]},{type:"LineString",coordinates:r.coordinates[u]})&&(l=!0);for(a=0;a<n.coordinates[u].length;a++)if(jt({type:"Point",coordinates:n.coordinates[a]},{type:"LineString",coordinates:r.coordinates[u]},{ignoreEndVertices:!0}))return!1}return l;case"Polygon":for(s=!1,u=0;u<n.coordinates.length;u++)if(s||jt({type:"Point",coordinates:n.coordinates[u]},{type:"LineString",coordinates:r.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[u]},r,{ignoreBoundary:!0}))return!1;return s;case"MultiPolygon":for(s=!1,u=0;u<n.coordinates.length;u++){for(a=0;a<r.coordinates.length;a++)s||jt({type:"Point",coordinates:n.coordinates[u]},{type:"LineString",coordinates:r.coordinates[a][0]})&&(s=!0);if(zt({type:"Point",coordinates:n.coordinates[u]},r,{ignoreBoundary:!0}))return!1}return s;default:throw new Error("feature2 "+o+" geometry not supported")}case"MultiLineString":switch(o){case"Point":for(u=0;u<n.coordinates.length;u++)if(Nn(r,{type:"LineString",coordinates:n.coordinates[u]}))return!0;return!1;case"MultiPoint":for(s=!1,u=0;u<n.coordinates.length;u++)for(a=0;a<r.coordinates.length;a++)if(s||Nn({type:"Point",coordinates:r.coordinates[a]},{type:"LineString",coordinates:n.coordinates[a]})&&(s=!0),jt({type:"Point",coordinates:r.coordinates[a]},{type:"LineString",coordinates:n.coordinates[a]},{ignoreEndVertices:!0}))return!1;return s;case"LineString":for(l=!1,u=0;u<n.coordinates.length;u++){Nn({type:"Point",coordinates:n.coordinates[u][0]},r)&&(l=!0),Nn({type:"Point",coordinates:n.coordinates[u][n.coordinates[u].length-1]},r)&&(l=!0);for(a=0;a<r.coordinates.length;a++)if(jt({type:"Point",coordinates:r.coordinates[a]},{type:"LineString",coordinates:n.coordinates[u]},{ignoreEndVertices:!0}))return!1}return l;case"MultiLineString":for(l=!1,u=0;u<n.coordinates.length;u++)for(a=0;a<r.coordinates.length;a++){Nn({type:"Point",coordinates:n.coordinates[u][0]},{type:"LineString",coordinates:r.coordinates[a]})&&(l=!0),Nn({type:"Point",coordinates:n.coordinates[u][n.coordinates[u].length-1]},{type:"LineString",coordinates:r.coordinates[a]})&&(l=!0);for(var h=0;h<n.coordinates[u].length;h++)if(jt({type:"Point",coordinates:n.coordinates[u][h]},{type:"LineString",coordinates:r.coordinates[a]},{ignoreEndVertices:!0}))return!1}return l;case"Polygon":for(s=!1,u=0;u<n.coordinates.length;u++)for(a=0;a<n.coordinates.length;a++)if(s||jt({type:"Point",coordinates:n.coordinates[u][a]},{type:"LineString",coordinates:r.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[u][a]},r,{ignoreBoundary:!0}))return!1;return s;case"MultiPolygon":for(s=!1,u=0;u<r.coordinates[0].length;u++)for(a=0;a<n.coordinates.length;a++)for(h=0;h<n.coordinates[a].length;h++)if(s||jt({type:"Point",coordinates:n.coordinates[a][h]},{type:"LineString",coordinates:r.coordinates[0][u]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[a][h]},{type:"Polygon",coordinates:[r.coordinates[0][u]]},{ignoreBoundary:!0}))return!1;return s;default:throw new Error("feature2 "+o+" geometry not supported")}case"Polygon":switch(o){case"Point":for(u=0;u<n.coordinates.length;u++)if(jt(r,{type:"LineString",coordinates:n.coordinates[u]}))return!0;return!1;case"MultiPoint":for(s=!1,u=0;u<r.coordinates.length;u++)if(s||jt({type:"Point",coordinates:r.coordinates[u]},{type:"LineString",coordinates:n.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:r.coordinates[u]},n,{ignoreBoundary:!0}))return!1;return s;case"LineString":for(s=!1,u=0;u<r.coordinates.length;u++)if(s||jt({type:"Point",coordinates:r.coordinates[u]},{type:"LineString",coordinates:n.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:r.coordinates[u]},n,{ignoreBoundary:!0}))return!1;return s;case"MultiLineString":for(s=!1,u=0;u<r.coordinates.length;u++)for(a=0;a<r.coordinates[u].length;a++)if(s||jt({type:"Point",coordinates:r.coordinates[u][a]},{type:"LineString",coordinates:n.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:r.coordinates[u][a]},n,{ignoreBoundary:!0}))return!1;return s;case"Polygon":for(s=!1,u=0;u<n.coordinates[0].length;u++)if(s||jt({type:"Point",coordinates:n.coordinates[0][u]},{type:"LineString",coordinates:r.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[0][u]},r,{ignoreBoundary:!0}))return!1;return s;case"MultiPolygon":for(s=!1,u=0;u<r.coordinates[0].length;u++)for(a=0;a<n.coordinates[0].length;a++)if(s||jt({type:"Point",coordinates:n.coordinates[0][a]},{type:"LineString",coordinates:r.coordinates[0][u]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[0][a]},{type:"Polygon",coordinates:r.coordinates[0][u]},{ignoreBoundary:!0}))return!1;return s;default:throw new Error("feature2 "+o+" geometry not supported")}case"MultiPolygon":switch(o){case"Point":for(u=0;u<n.coordinates[0].length;u++)if(jt(r,{type:"LineString",coordinates:n.coordinates[0][u]}))return!0;return!1;case"MultiPoint":for(s=!1,u=0;u<n.coordinates[0].length;u++)for(a=0;a<r.coordinates.length;a++)if(s||jt({type:"Point",coordinates:r.coordinates[a]},{type:"LineString",coordinates:n.coordinates[0][u]})&&(s=!0),zt({type:"Point",coordinates:r.coordinates[a]},{type:"Polygon",coordinates:n.coordinates[0][u]},{ignoreBoundary:!0}))return!1;return s;case"LineString":for(s=!1,u=0;u<n.coordinates[0].length;u++)for(a=0;a<r.coordinates.length;a++)if(s||jt({type:"Point",coordinates:r.coordinates[a]},{type:"LineString",coordinates:n.coordinates[0][u]})&&(s=!0),zt({type:"Point",coordinates:r.coordinates[a]},{type:"Polygon",coordinates:n.coordinates[0][u]},{ignoreBoundary:!0}))return!1;return s;case"MultiLineString":for(s=!1,u=0;u<n.coordinates.length;u++)for(a=0;a<r.coordinates.length;a++)for(h=0;h<r.coordinates[a].length;h++)if(s||jt({type:"Point",coordinates:r.coordinates[a][h]},{type:"LineString",coordinates:n.coordinates[u][0]})&&(s=!0),zt({type:"Point",coordinates:r.coordinates[a][h]},{type:"Polygon",coordinates:[n.coordinates[u][0]]},{ignoreBoundary:!0}))return!1;return s;case"Polygon":for(s=!1,u=0;u<n.coordinates[0].length;u++)for(a=0;a<n.coordinates[0][u].length;a++)if(s||jt({type:"Point",coordinates:n.coordinates[0][u][a]},{type:"LineString",coordinates:r.coordinates[0]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[0][u][a]},r,{ignoreBoundary:!0}))return!1;return s;case"MultiPolygon":for(s=!1,u=0;u<n.coordinates[0].length;u++)for(a=0;a<r.coordinates[0].length;a++)for(h=0;h<n.coordinates[0].length;h++)if(s||jt({type:"Point",coordinates:n.coordinates[0][u][h]},{type:"LineString",coordinates:r.coordinates[0][a]})&&(s=!0),zt({type:"Point",coordinates:n.coordinates[0][u][h]},{type:"Polygon",coordinates:r.coordinates[0][a]},{ignoreBoundary:!0}))return!1;return s;default:throw new Error("feature2 "+o+" geometry not supported")}default:throw new Error("feature1 "+i+" geometry not supported")}},t.booleanValid=function(t){if(!t.type)return!1;var e=rt(t),n=e.type,r=e.coordinates;switch(n){case"Point":return r.length>1;case"MultiPoint":for(var i=0;i<r.length;i++)if(r[i].length<2)return!1;return!0;case"LineString":if(r.length<2)return!1;for(i=0;i<r.length;i++)if(r[i].length<2)return!1;return!0;case"MultiLineString":if(r.length<2)return!1;for(i=0;i<r.length;i++)if(r[i].length<2)return!1;return!0;case"Polygon":for(i=0;i<e.coordinates.length;i++){if(r[i].length<4)return!1;if(!Mn(r[i]))return!1;if(Ln(r[i]))return!1;if(i>0&&ue(S([r[0]]),S([r[i]])).features.length>1)return!1}return!0;case"MultiPolygon":for(i=0;i<e.coordinates.length;i++)for(var o=e.coordinates[i],s=0;s<o.length;s++){if(o[s].length<4)return!1;if(!Mn(o[s]))return!1;if(Ln(o[s]))return!1;if(0===s&&!Pn(o,e.coordinates,i))return!1;if(s>0&&ue(S([o[0]]),S([o[s]])).features.length>1)return!1}return!0;default:return!1}},t.booleanWithin=Cn,t.buffer=function(t,e,n){var r=(n=n||{}).units||"kilometers",i=n.steps||8;if(!t)throw new Error("geojson is required");if("object"!==m(n))throw new Error("options must be an object");if("number"!=typeof i)throw new Error("steps must be an number");if(void 0===e)throw new Error("radius is required");if(i<=0)throw new Error("steps must be greater than 0");var o=[];switch(t.type){case"GeometryCollection":return mt(t,(function(t){var n=ui(t,e,r,i);n&&o.push(n)})),C(o);case"FeatureCollection":return vt(t,(function(t){var n=ui(t,e,r,i);n&&vt(n,(function(t){t&&o.push(t)}))})),C(o)}return ui(t,e,r,i)},t.center=An,t.centerMean=fi,t.centerMedian=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.counter||10;if(!U(n))throw new Error("counter must be a number");var r=e.weight,i=fi(t,{weight:e.weight}),o=C([]);vt(t,(function(t){var e;o.features.push(gi(t,{properties:{weight:null==(e=t.properties)?void 0:e[r]}}))}));var s={tolerance:e.tolerance,medianCandidates:[]};return pi(i.geometry.coordinates,[0,0],o,s,n)},t.centerOfMass=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(it(e)){case"Point":return I(K(e),n.properties);case"Polygon":var r=[];ct(e,(function(t){r.push(t)}));var i,o,s,a,u,l,h,c,f=gi(e,{properties:n.properties}),g=f.geometry.coordinates,p=0,v=0,d=0,y=r.map((function(t){return[t[0]-g[0],t[1]-g[1]]}));for(i=0;i<r.length-1;i++)a=(o=y[i])[0],l=o[1],u=(s=y[i+1])[0],d+=c=a*(h=s[1])-u*l,p+=(a+u)*c,v+=(l+h)*c;if(0===d)return f;var m=1/(6*(.5*d));return I([g[0]+m*p,g[1]+m*v],n.properties);default:var _=Oi(e);return _?t(_,{properties:n.properties}):gi(e,{properties:n.properties})}},t.centroid=gi,t.circle=Ri,t.cleanCoords=Le,t.clone=Ai,t.cloneProperties=Fi,t.clusterEach=Bi,t.clusterReduce=Yi,t.clusters=$i,t.clustersDbscan=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!0!==n.mutate&&(t=Ai(t));var r=n.minPoints||3,i=V(e,n.units),o=new to(t.features.length),s=t.features.map((function(t){return!1})),a=t.features.map((function(t){return!1})),u=t.features.map((function(t){return!1})),l=t.features.map((function(t){return-1}));o.load(t.features.map((function(t,e){var n=v(t.geometry.coordinates,2),r=n[0],i=n[1];return{minX:r,minY:i,maxX:r,maxY:i,index:e}})));var h=function(n){var r=t.features[n],s=v(r.geometry.coordinates,2),a=s[0],u=s[1],l=Math.max(u-i,-90),h=Math.min(u+i,90),c=l<0&&h>0?i:Math.abs(l)<Math.abs(h)?i/Math.cos(z(h)):i/Math.cos(z(l)),f=Math.max(a-c,-360),g=Math.min(a+c,360),p={minX:f,minY:l,maxX:g,maxY:h};return o.search(p).filter((function(n){var i=n.index,o=t.features[i];return ut(r,o,{units:"kilometers"})<=e}))},c=0;return t.features.forEach((function(t,e){if(!s[e]){var n=h(e);if(n.length>=r){var i=c;c++,s[e]=!0,function(t,e){for(var n=0;n<e.length;n++){var i=e[n].index;if(!s[i]){s[i]=!0;var o=h(i);o.length>=r&&e.push.apply(e,d(o))}a[i]||(a[i]=!0,l[i]=t)}}(i,n)}else u[e]=!0}})),t.features.forEach((function(e,n){var r=t.features[n];r.properties||(r.properties={}),l[n]>=0?(r.properties.dbscan=u[n]?"edge":"core",r.properties.cluster=l[n]):r.properties.dbscan="noise"})),t},t.clustersKmeans=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.features.length;e.numberOfClusters=e.numberOfClusters||Math.round(Math.sqrt(n/2)),e.numberOfClusters>n&&(e.numberOfClusters=n),!0!==e.mutate&&(t=Ai(t));var r=yt(t),i=r.slice(0,e.numberOfClusters),o=ro(r,e.numberOfClusters,i),s={};return o.centroids.forEach((function(t,e){s[e]=t})),vt(t,(function(t,e){var n=o.idxs[e];t.properties.cluster=n,t.properties.centroid=s[n]})),t},t.collect=function(t,e,n,r){var i=new io(6),o=e.features.map((function(t){var e;return{minX:t.geometry.coordinates[0],minY:t.geometry.coordinates[1],maxX:t.geometry.coordinates[0],maxY:t.geometry.coordinates[1],property:null==(e=t.properties)?void 0:e[n]}}));return i.load(o),t.features.forEach((function(t){t.properties||(t.properties={});var e=Rt(t),n=i.search({minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]}),o=[];n.forEach((function(e){zt([e.minX,e.minY],t)&&o.push(e.property)})),t.properties[r]=o})),t},t.collectionOf=nt,t.combine=function(t){var e={MultiPoint:{coordinates:[],properties:[]},MultiLineString:{coordinates:[],properties:[]},MultiPolygon:{coordinates:[],properties:[]}};return vt(t,(function(t){var n,r,i,o;switch(null==(o=t.geometry)?void 0:o.type){case"Point":e.MultiPoint.coordinates.push(t.geometry.coordinates),e.MultiPoint.properties.push(t.properties);break;case"MultiPoint":(n=e.MultiPoint.coordinates).push.apply(n,d(t.geometry.coordinates)),e.MultiPoint.properties.push(t.properties);break;case"LineString":e.MultiLineString.coordinates.push(t.geometry.coordinates),e.MultiLineString.properties.push(t.properties);break;case"MultiLineString":(r=e.MultiLineString.coordinates).push.apply(r,d(t.geometry.coordinates)),e.MultiLineString.properties.push(t.properties);break;case"Polygon":e.MultiPolygon.coordinates.push(t.geometry.coordinates),e.MultiPolygon.properties.push(t.properties);break;case"MultiPolygon":(i=e.MultiPolygon.coordinates).push.apply(i,d(t.geometry.coordinates)),e.MultiPolygon.properties.push(t.properties)}})),C(Object.keys(e).filter((function(t){return e[t].coordinates.length})).sort().map((function(t){return b({type:t,coordinates:e[t].coordinates},{collectedProperties:e[t].properties})})))},t.concave=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.maxEdge||1/0,r=function(t){var e=[],n={};return vt(t,(function(t){if(t.geometry){var r=t.geometry.coordinates.join("-");Object.prototype.hasOwnProperty.call(n,r)||(e.push(t),n[r]=!0)}})),C(e)}(t),i=oo(r);if(i.features=i.features.filter((function(t){var r=t.geometry.coordinates[0][0],i=t.geometry.coordinates[0][1],o=t.geometry.coordinates[0][2],s=ut(r,i,e),a=ut(i,o,e),u=ut(r,o,e);return s<=n&&a<=n&&u<=n})),i.features.length<1)return null;var o=Ro(i);return 1===o.coordinates.length&&(o.coordinates=o.coordinates[0],o.type="Polygon"),b(o)},t.containsNumber=$,t.convertArea=X,t.convertLength=j,t.convex=Oi,t.coordAll=yt,t.coordEach=ct,t.coordReduce=ft,t.createBins=zi,t.degreesToRadians=z,t.destination=at,t.difference=function(t){var e=[];if(mt(t,(function(t){e.push(t.coordinates)})),e.length<2)throw new Error("Must have at least two features");var n=t.features[0].properties||{},r=As.apply(Fs,[e[0]].concat(d(e.slice(1))));return 0===r.length?null:1===r.length?S(r[0],n):R(r,n)},t.dissolve=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.propertyName;nt(t,"Polygon","dissolve");var r=[];if(!n)return qs(R(Os.apply(null,t.features.map((function(t){return t.geometry.coordinates})))));var i={};vt(t,(function(t){t.properties&&(Object.prototype.hasOwnProperty.call(i,t.properties[n])||(i[t.properties[n]]=[]),i[t.properties[n]].push(t))}));for(var o=Object.keys(i),s=0;s<o.length;s++){var a=R(Os.apply(null,i[o[s]].map((function(t){return t.geometry.coordinates}))));a&&a.properties&&(a.properties[n]=o[s],r.push(a))}return qs(C(r))},t.distance=ut,t.distanceWeight=Gs,t.earthRadius=x,t.ellipse=js,t.envelope=Us,t.explode=Zs,t.factors=E,t.feature=b,t.featureCollection=C,t.featureEach=vt,t.featureOf=et,t.featureReduce=dt,t.filterProperties=Ui,t.findPoint=St,t.findSegment=Nt,t.flatten=qs,t.flattenEach=xt,t.flattenReduce=Et,t.flip=function(t,e){var n;if(!Z(e=e||{}))throw new Error("options is invalid");var r=null!=(n=e.mutate)&&n;if(!t)throw new Error("geojson is required");return!1!==r&&void 0!==r||(t=Ai(t)),ct(t,(function(t){var e=t[0],n=t[1];t[0]=n,t[1]=e})),t},t.geojsonRbush=Qe,t.geojsonType=tt,t.geomEach=mt,t.geomReduce=_t,t.geometry=w,t.geometryCollection=A,t.getCluster=Gi,t.getCoord=K,t.getCoords=Q,t.getGeom=rt,t.getType=it,t.greatCircle=function(t,e,n){if("object"!==m(n=n||{}))throw new Error("options is invalid");var r=n.properties,i=n.npoints,o=n.offset;if(t=K(t),e=K(e),r=r||{},i=i||100,t[0]===e[0]&&t[1]===e[1]){var s=Array(i);return s.fill([t[0],t[1]]),L(s,r)}return o=o||10,new $s({x:t[0],y:t[1]},{x:e[0],y:e[1]},r).Arc(i,{offset:o}).json()},t.helpers=J,t.hexGrid=ea,t.interpolate=function(t,e,n){if("object"!==m(n=n||{}))throw new Error("options is invalid");var r,i=n.gridType,o=n.property,s=n.weight,a=n.bbox;if(!t)throw new Error("points is required");if(nt(t,"Point","input must contain Points"),!e)throw new Error("cellSize is required");if(void 0!==s&&"number"!=typeof s)throw new Error("weight must be a number");switch(o=o||"elevation",i=i||"square",s=s||1,H(a=null!=a?a:Rt(t)),i){case"point":case"points":r=ia(a,e,n);break;case"square":case"squares":r=sa(a,e,n);break;case"hex":case"hexes":r=ea(a,e,n);break;case"triangle":case"triangles":r=aa(a,e,n);break;default:throw new Error("invalid gridType")}var u=[];return vt(r,(function(e){var r=0,a=0;vt(t,(function(t){var u,l=ut("point"===i?e:gi(e),t,n);if(void 0!==o&&(u=t.properties[o]),void 0===u&&(u=t.geometry.coordinates[2]),void 0===u)throw new Error("zValue is missing");0===l&&(r=u);var h=1/Math.pow(l,s);a+=h,r+=h*u}));var l=Ai(e);l.properties[o]=r/a,u.push(l)})),C(u)},t.intersect=ta,t.invariant=ot,t.isNumber=U,t.isObject=Z,t.isobands=function(t,e,n){if(!Z(n=n||{}))throw new Error("options is invalid");var r=n.zProperty||"elevation",i=n.commonProperties||{},o=n.breaksProperties||[];if(nt(t,"Point","Input must contain Points"),!e)throw new Error("breaks is required");if(!Array.isArray(e))throw new Error("breaks is not an Array");if(!Z(i))throw new Error("commonProperties is not an Object");if(!Array.isArray(o))throw new Error("breaksProperties is not an Array");var s=Pa(t,{zProperty:r,flip:!0}),a=function(t,e,n){for(var r=[],i=1;i<e.length;i++){var o=+e[i-1],s=+e[i],a=Ta(Ca(Ea(t,o,s-o)));r.push(u({groupedRings:a},n,o+"-"+s))}return r}(s,e,r);a=function(t,e,n){var r=Rt(n),i=r[2]-r[0],o=r[3]-r[1],s=r[0],a=r[1],u=e[0].length-1,l=e.length-1,h=i/u,c=o/l;return t.map((function(t){return t.groupedRings=t.groupedRings.map((function(t){return t.map((function(t){return t.map((function(t){return[t[0]*h+s,t[1]*c+a]}))}))})),t}))}(a,s,t);var l=a.map((function(t,e){if(o[e]&&!Z(o[e]))throw new Error("Each mappedProperty is required to be an Object");var n=La(La({},i),o[e]);return n[r]=t[r],R(t.groupedRings,n)}));return C(l)},t.isolines=function(t,e,n){if(!Z(n=n||{}))throw new Error("options is invalid");var r=n.zProperty||"elevation",i=n.commonProperties||{},o=n.breaksProperties||[];if(nt(t,"Point","Input must contain Points"),!e)throw new Error("breaks is required");if(!Array.isArray(e))throw new Error("breaks must be an Array");if(!Z(i))throw new Error("commonProperties must be an Object");if(!Array.isArray(o))throw new Error("breaksProperties must be an Array");var s=Ba(t,{zProperty:r,flip:!0}),a=function(t,e,n){var r=Rt(n),i=r[2]-r[0],o=r[3]-r[1],s=r[0],a=r[1],u=e[0].length-1,l=e.length-1,h=i/u,c=o/l,f=function(t){t[0]=t[0]*h+s,t[1]=t[1]*c+a};return t.forEach((function(t){ct(t,f)})),t}(function(t,e,n,r,i){for(var o=[],s=0;s<e.length;s++){var a=+e[s],u=Ga(Ga({},r),i[s]);u[n]=a;var l=T(ma(t,a,{linearRing:!1,noFrame:!0}),u);o.push(l)}return o}(s,e,r,i,o),s,t);return C(a)},t.kinks=function(t){var e,n,r={type:"FeatureCollection",features:[]};if("LineString"===(n="Feature"===t.type?t.geometry:t).type)e=[n.coordinates];else if("MultiLineString"===n.type)e=n.coordinates;else if("MultiPolygon"===n.type){var i;e=(i=[]).concat.apply(i,d(n.coordinates))}else{if("Polygon"!==n.type)throw new Error("Input must be a LineString, MultiLineString, Polygon, or MultiPolygon Feature or Geometry");e=n.coordinates}return e.forEach((function(t){e.forEach((function(e){for(var n=0;n<t.length-1;n++)for(var i=n;i<e.length-1;i++){if(t===e){if(1===Math.abs(n-i))continue;if(0===n&&i===t.length-2&&t[n][0]===t[t.length-1][0]&&t[n][1]===t[t.length-1][1])continue}var o=Ya(t[n][0],t[n][1],t[n+1][0],t[n+1][1],e[i][0],e[i][1],e[i+1][0],e[i+1][1]);o&&r.features.push(I([o[0],o[1]]))}}))})),r},t.length=za,t.lengthToDegrees=V,t.lengthToRadians=q,t.lineArc=ja,t.lineChunk=function(t,e,n){if(!Z(n=n||{}))throw new Error("options is invalid");var r=n.units,i=n.reverse;if(!t)throw new Error("geojson is required");if(e<=0)throw new Error("segmentLength must be greater than 0");var o=[];return xt(t,(function(t){i&&(t.geometry.coordinates=t.geometry.coordinates.reverse()),function(t,e,n,r){var i=za(t,{units:n});if(i<=e)return r(t);var o=i/e;Number.isInteger(o)||(o=Math.floor(o)+1);for(var s=0;s<o;s++){r(Ua(t,e*s,e*(s+1),{units:n}),s)}}(t,e,r,(function(t){o.push(t)}))})),C(o)},t.lineEach=wt,t.lineIntersect=ue,t.lineOffset=function(t,e,n){if(!Z(n=n||{}))throw new Error("options is invalid");var r=n.units;if(!t)throw new Error("geojson is required");if(null==e||isNaN(e))throw new Error("distance is required");var i=it(t),o=t.properties;switch(i){case"LineString":return Ja(t,e,r);case"MultiLineString":var s=[];return xt(t,(function(t){s.push(Ja(t,e,r).geometry.coordinates)})),T(s,o);default:throw new Error("geometry "+i+" is not supported")}},t.lineOverlap=kn,t.lineReduce=It,t.lineSegment=$e,t.lineSlice=function(t,e,n){var r=Q(n);if("LineString"!==it(n))throw new Error("line must be a LineString");for(var i,o=fn(n,t),s=fn(n,e),a=[(i=o.properties.index<=s.properties.index?[o,s]:[s,o])[0].geometry.coordinates],u=i[0].properties.index+1;u<i[1].properties.index+1;u++)a.push(r[u]);return a.push(i[1].geometry.coordinates),L(a,n.properties)},t.lineSliceAlong=Ua,t.lineSplit=function(t,e){if(!t)throw new Error("line is required");if(!e)throw new Error("splitter is required");var n=it(t),r=it(e);if("LineString"!==n)throw new Error("line must be LineString");if("FeatureCollection"===r)throw new Error("splitter cannot be a FeatureCollection");if("GeometryCollection"===r)throw new Error("splitter cannot be a GeometryCollection");var i=Qa(e,{precision:7});switch(r){case"Point":return tu(t,i);case"MultiPoint":return $a(t,i);case"LineString":case"MultiLineString":case"Polygon":case"MultiPolygon":return $a(t,ue(t,i,{ignoreSelfIntersections:!0}))}},t.lineString=L,t.lineStrings=P,t.lineToPolygon=function(t){var e,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=i.properties,s=null==(e=i.autoComplete)||e,a=null==(n=i.orderCoords)||n;if(null!=(r=i.mutate)&&r||(t=Ai(t)),"FeatureCollection"===t.type){var u=[];return t.features.forEach((function(t){u.push(Q(ru(t,{},s,a)))})),R(u,o)}return ru(t,o,s,a)},t.mask=function(t,e,n){var r,i=null!=(r=null==n?void 0:n.mutate)&&r,o=e;e&&!1===i&&(o=Ai(e));var s,a=su(o);return("FeatureCollection"===t.type?ou(2===(s=t).features.length?Os(s.features[0].geometry.coordinates,s.features[1].geometry.coordinates):Os.apply(Fs,s.features.map((function(t){return t.geometry.coordinates})))):"Feature"===t.type?ou(Os(t.geometry.coordinates)):ou(Os(t.coordinates))).geometry.coordinates.forEach((function(t){a.geometry.coordinates.push(t[0])})),a},t.meta=Mt,t.midpoint=function(t,e){return at(t,ut(t,e)/2,st(t,e))},t.moranIndex=function(t,e){var n,r,i=e.inputField,o=e.threshold||1e5,s=e.p||2,u=null!=(n=e.binary)&&n,l=Gs(t,{alpha:e.alpha||-1,binary:u,p:s,standardization:null==(r=e.standardization)||r,threshold:o}),h=[];vt(t,(function(t){var e=t.properties||{};h.push(e[i])}));for(var c=au(h),f=function(t){var e,n=au(t),r=0,i=a(t);try{for(i.s();!(e=i.n()).done;){var o=e.value;r+=Math.pow(o-n,2)}}catch(t){i.e(t)}finally{i.f()}return r/t.length}(h),g=0,p=0,v=0,d=0,y=l.length,m=0;m<y;m++){for(var _=0,x=0;x<y;x++)g+=l[m][x]*(h[m]-c)*(h[x]-c),p+=l[m][x],v+=Math.pow(l[m][x]+l[x][m],2),_+=l[m][x]+l[x][m];d+=Math.pow(_,2)}var E=g/p/f,k=-1/(y-1),b=(y*y*(v*=.5)-y*d+p*p*3)/((y-1)*(y+1)*(p*p))-k*k,w=Math.sqrt(b);return{expectedMoranIndex:k,moranIndex:E,stdNorm:w,zNorm:(E-k)/w}},t.multiLineString=T,t.multiPoint=O,t.multiPolygon=R,t.nearestNeighborAnalysis=function(t,e){var n=(e=e||{}).studyArea||Vt(Rt(t)),r=e.properties||{},i=e.units||"kilometers",o=[];vt(t,(function(t){o.push(gi(t))}));var s=o.length,a=o.map((function(t,e){return ut(t,yu(t,C(o.filter((function(t,n){return n!==e})))).geometry.coordinates,{units:i})})).reduce((function(t,e){return t+e}),0)/s,u=s/X(Lt(n),"meters",i),l=1/(2*Math.sqrt(u)),h=.26136/Math.sqrt(s*u);return r.nearestNeighborAnalysis={units:i,arealUnits:i+"²",observedMeanDistance:a,expectedMeanDistance:l,nearestNeighborIndex:a/l,numberOfPoints:s,zScore:(a-l)/h},n.properties=r,n},t.nearestPoint=yu,t.nearestPointOnLine=fn,t.nearestPointToLine=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.units,i=n.properties||{},o=function(t){var e=[];switch(t.geometry?t.geometry.type:t.type){case"GeometryCollection":return mt(t,(function(t){"Point"===t.type&&e.push({type:"Feature",properties:{},geometry:t})})),{type:"FeatureCollection",features:e};case"FeatureCollection":return t.features=t.features.filter((function(t){return"Point"===t.geometry.type})),t;default:throw new Error("points must be a Point Collection")}}(t);if(!o.features.length)throw new Error("points must contain features");if(!e)throw new Error("line is required");if("LineString"!==it(e))throw new Error("line must be a LineString");var s=1/0,a=null;return vt(o,(function(t){var n=mu(t,e,{units:r});n<s&&(s=n,a=t)})),a&&(a.properties=Iu(Iu(Iu({},{dist:s}),a.properties),i)),a},t.planepoint=function(t,e){var n=K(t),r=rt(e).coordinates[0];if(r.length<4)throw new Error("OuterRing of a Polygon must have 4 or more Positions.");var i="Feature"===e.type&&e.properties||{},o=i.a,s=i.b,a=i.c,u=n[0],l=n[1],h=r[0][0],c=r[0][1],f=void 0!==o?o:r[0][2],g=r[1][0],p=r[1][1],v=void 0!==s?s:r[1][2],d=r[2][0],y=r[2][1],m=void 0!==a?a:r[2][2];return(m*(u-h)*(l-p)+f*(u-g)*(l-y)+v*(u-d)*(l-c)-v*(u-h)*(l-y)-m*(u-g)*(l-c)-f*(u-d)*(l-p))/((u-h)*(l-p)+(u-g)*(l-y)+(u-d)*(l-c)-(u-h)*(l-y)-(u-g)*(l-c)-(u-d)*(l-p))},t.point=I,t.pointGrid=ia,t.pointOnFeature=function(t){for(var e=function(t){if("FeatureCollection"!==t.type)return"Feature"!==t.type?C([b(t)]):C([t]);return t}(t),n=An(e),r=!1,i=0;!r&&i<e.features.length;){var o=e.features[i].geometry,s=!1;if("Point"===o.type)n.geometry.coordinates[0]===o.coordinates[0]&&n.geometry.coordinates[1]===o.coordinates[1]&&(r=!0);else if("MultiPoint"===o.type)for(var a=!1,u=0;!a&&u<o.coordinates.length;)n.geometry.coordinates[0]===o.coordinates[u][0]&&n.geometry.coordinates[1]===o.coordinates[u][1]&&(r=!0,a=!0),u++;else if("LineString"===o.type)for(var l=0;!s&&l<o.coordinates.length-1;)Nu(n.geometry.coordinates[0],n.geometry.coordinates[1],o.coordinates[l][0],o.coordinates[l][1],o.coordinates[l+1][0],o.coordinates[l+1][1])&&(s=!0,r=!0),l++;else if("MultiLineString"===o.type)for(var h=0;h<o.coordinates.length;){s=!1;for(var c=0,f=o.coordinates[h];!s&&c<f.length-1;)Nu(n.geometry.coordinates[0],n.geometry.coordinates[1],f[c][0],f[c][1],f[c+1][0],f[c+1][1])&&(s=!0,r=!0),c++;h++}else"Polygon"!==o.type&&"MultiPolygon"!==o.type||zt(n,o)&&(r=!0);i++}if(r)return n;for(var g=C([]),p=0;p<e.features.length;p++)g.features=g.features.concat(Zs(e.features[p]).features);return I(yu(n,g).geometry.coordinates)},t.pointToLineDistance=mu,t.pointToPolygonDistance=function t(e,r){var i,o,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=null!=(i=s.method)?i:"geodesic",u=null!=(o=s.units)?o:"kilometers";if(!e)throw new Error("point is required");if(!r)throw new Error("polygon or multi-polygon is required");var l,h=rt(r);if("MultiPolygon"===h.type){var c=h.coordinates.map((function(n){return t(e,S(n),{method:a,units:u})}));return Math.min.apply(Math,d(c.map(Math.abs)))*(zt(e,r)?-1:1)}if(h.coordinates.length>1){var p=h.coordinates.map((function(n){return t(e,S([n]),{method:a,units:u})})),v=n(l=p)||f(l)||_(l)||g(),y=v[0],m=v.slice(1);if(y>=0)return y;var x=Math.min.apply(Math,d(m));return x<0?Math.abs(x):Math.min(x,Math.abs(y))}var E=le(h),k=1/0;return xt(E,(function(t){k=Math.min(k,mu(e,t,{method:a,units:u}))})),zt(e,h)?-k:k},t.points=N,t.pointsWithinPolygon=Su,t.polygon=S,t.polygonSmooth=function(t,e){(e=e||{}).iterations=e.iterations||1;var n=e.iterations,r=[];if(!t)throw new Error("inputPolys is required");return mt(t,(function(t,e,i){if("Polygon"===t.type){for(var o=[[]],s=0;s<n;s++){var a=[],u=t;s>0&&(u=S(o).geometry),Ru(u,a),o=a.slice(0)}r.push(S(o,i))}else{if("MultiPolygon"!==t.type)throw new Error("geometry is invalid, must be Polygon or MultiPolygon");for(var l=[[[]]],h=0;h<n;h++){var c=[],f=t;h>0&&(f=R(l).geometry),Au(f,c),l=c.slice(0)}r.push(R(l,i))}})),C(r)},t.polygonTangents=function(t,e){var n,r=Q(t),i=Q(e),o=[],s=[],a=Rt(e),u=0,l=null;switch(r[0]>a[0]&&r[0]<a[2]&&r[1]>a[1]&&r[1]<a[3]&&(u=(l=yu(t,Zs(e))).properties.featureIndex),it(e)){case"Polygon":o=i[0][u],s=i[0][0],null!==l&&l.geometry.coordinates[1]<r[1]&&(s=i[0][u]),n=qu(i[0][0],i[0][i[0].length-1],r);var h=v(Du(i[0],r,n,o,s),2);o=h[0],s=h[1];break;case"MultiPolygon":for(var c=0,f=0,g=0,p=0;p<i[0].length;p++){c=p;for(var d=!1,y=0;y<i[0][p].length;y++){if(f=y,g===u){d=!0;break}g++}if(d)break}o=i[0][c][f],s=i[0][c][f],n=qu(i[0][0][0],i[0][0][i[0][0].length-1],r),i.forEach((function(t){var e=v(Du(t[0],r,n,o,s),2);o=e[0],s=e[1]}))}return C([I(o),I(s)])},t.polygonToLine=le,t.polygonize=function(t){var e=Ou.fromGeoJson(t);e.deleteDangles(),e.deleteCutEdges();var n=[],r=[];return e.getEdgeRings().filter((function(t){return t.isValid()})).forEach((function(t){t.isHole()?n.push(t):r.push(t)})),n.forEach((function(t){Tu.findEdgeRingContaining(t,r)&&r.push(t)})),C(r.map((function(t){return t.toPolygon()})))},t.polygons=M,t.projection=ju,t.propEach=gt,t.propReduce=pt,t.propertiesContainsFilter=Xi,t.quadratAnalysis=function(t,e){for(var n=(e=e||{}).studyBbox||Rt(t),r=e.confidenceLevel||20,i=t.features,o=i.length,s=Lt(Vt(n)),u=sa(n,Math.sqrt(s/o*2),{units:"meters"}).features,l={},h=0;h<u.length;h++)l[h]={box:Rt(u[h]),cnt:0};var c,f=0,g=a(i);try{for(g.s();!(c=g.n()).done;)for(var p=c.value,v=0,d=Object.keys(l);v<d.length;v++){var y=d[v],m=l[y].box;if(Uu(K(p),m)){l[y].cnt+=1,f+=1;break}}}catch(t){g.e(t)}finally{g.f()}for(var _=0,x=0,E=Object.keys(l);x<E.length;x++){var k=l[E[x]].cnt;k>_&&(_=k)}for(var b=[],w=Object.keys(l).length,I=f/w,N=0,S=0;S<_+1;S++)N+=Math.exp(-I)*Math.pow(I,S)/Zu(S),b.push(N);for(var M=[],L=0,P=0;P<_+1;P++){for(var C=0,T=Object.keys(l);C<T.length;C++){l[T[C]].cnt===P&&(L+=1)}var O=L/w;M.push(O)}for(var R=0,A=0;A<_+1;A++){var D=Math.abs(b[A]-M[A]);D>R&&(R=D)}var F=Xu[r]/Math.sqrt(w),q={criticalValue:F,isRandom:!0,maxAbsoluteDifference:R,observedDistribution:M};return R>F&&(q.isRandom=!1),q},t.radiansToDegrees=Y,t.radiansToLength=F,t.random=nl,t.randomLineString=$u,t.randomPoint=Ku,t.randomPolygon=Qu,t.randomPosition=Hu,t.rectangleGrid=oa,t.rewind=function(t){var e,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Z(r=r||{}))throw new Error("options is invalid");var i=null!=(e=r.mutate)&&e,o=null!=(n=r.reverse)&&n;if(!t)throw new Error("<geojson> is required");if("boolean"!=typeof o)throw new Error("<reverse> must be a boolean");if("boolean"!=typeof i)throw new Error("<mutate> must be a boolean");i||"Point"===t.type||"MultiPoint"===t.type||(t=Ai(t));var s=[];switch(t.type){case"GeometryCollection":return mt(t,(function(t){rl(t,o)})),t;case"FeatureCollection":return vt(t,(function(t){vt(rl(t,o),(function(t){s.push(t)}))})),C(s)}return rl(t,o)},t.rhumbBearing=lt,t.rhumbDestination=Bs,t.rhumbDistance=Ys,t.round=D,t.sample=function(t,e){if(!t)throw new Error("fc is required");if(null==e)throw new Error("num is required");if("number"!=typeof e)throw new Error("num must be a number");var n=C(function(t,e){var n,r,i=t.slice(0),o=t.length,s=o-e;for(;o-- >s;)n=i[r=Math.floor((o+1)*Math.random())],i[r]=i[o],i[o]=n;return i.slice(s)}(t.features,e));return n},t.sector=function(t,e,n,r){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if(!Z(i=i||{}))throw new Error("options is invalid");var o=i.properties;if(!t)throw new Error("center is required");if(null==n)throw new Error("bearing1 is required");if(null==r)throw new Error("bearing2 is required");if(!e)throw new Error("radius is required");if("object"!==m(i))throw new Error("options must be an object");if(sl(n)===sl(r))return Ri(t,e,i);var s=Q(t),a=ja(t,e,n,r,i),u=[[s]];return ct(a,(function(t){u[0].push(t)})),u[0].push(s),S(u,o)},t.segmentEach=kt,t.segmentReduce=bt,t.shortestPath=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!Z(n=n||{}))throw new Error("options is invalid");var r=n.obstacles||C([]),i=n.resolution||100;if(!t)throw new Error("start is required");if(!e)throw new Error("end is required");if(i&&(!U(i)||i<=0))throw new Error("options.resolution must be a number, greater than 0");var o=K(t),s=K(e);if(t=I(o),e=I(s),"FeatureCollection"===r.type){if(0===r.features.length)return L([o,s])}else{if("Polygon"!==r.type)throw new Error("invalid obstacles");r=C([b(rt(r))])}var a=r;a.features.push(t),a.features.push(e);var u=v(Rt(al(Vt(Rt(a)),1.15)),4),l=u[0],h=u[1],c=u[2],f=u[3],g=ut([l,h],[c,h],n)/i;a.features.pop(),a.features.pop();for(var p,d,y=g/ut([l,h],[c,h],n)*(c-l),m=g/ut([l,h],[l,f],n)*(f-h),_=c-l,x=f-h,E=Math.floor(_/y),k=Math.floor(x/m),w=(_-E*y)/2,N=[],S=[],M=1/0,P=1/0,T=f-(x-k*m)/2,O=0;T>=h;){for(var R=[],A=[],D=l+w,F=0;D<=c;){var q=I([D,T]),V=pl(q,r);R.push(V?0:1),A.push(D+"|"+T);var G=ut(q,t);!V&&G<M&&(M=G,p={x:F,y:O});var B=ut(q,e);!V&&B<P&&(P=B,d={x:F,y:O}),D+=y,F++}S.push(R),N.push(A),T-=m,O++}var Y=new cl(S,{diagonal:!0}),z=Y.grid[p.y][p.x],j=Y.grid[d.y][d.x],X=hl.search(Y,z,j),H=[o];return X.forEach((function(t){var e=N[t.x][t.y].split("|");H.push([+e[0],+e[1]])})),H.push(s),Le(L(H))},t.simplify=function(t){var e,n,r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!Z(i=null!=i?i:{}))throw new Error("options is invalid");var o=null!=(e=i.tolerance)?e:1,s=null!=(n=i.highQuality)&&n,a=null!=(r=i.mutate)&&r;if(!t)throw new Error("geojson is required");if(o&&o<0)throw new Error("invalid tolerance");return!0!==a&&(t=Ai(t)),mt(t,(function(t){!function(t,e,n){var r=t.type;if("Point"===r||"MultiPoint"===r)return t;if(Le(t,{mutate:!0}),"GeometryCollection"!==r)switch(r){case"LineString":t.coordinates=ml(t.coordinates,e,n);break;case"MultiLineString":t.coordinates=t.coordinates.map((function(t){return ml(t,e,n)}));break;case"Polygon":t.coordinates=_l(t.coordinates,e,n);break;case"MultiPolygon":t.coordinates=t.coordinates.map((function(t){return _l(t,e,n)}))}}(t,o,s)})),t},t.square=Ka,t.squareGrid=sa,t.standardDeviationalEllipse=function(t,e){var n;if(!Z(e=e||{}))throw new Error("options is invalid");var r=e.steps||64,i=e.weight,o=e.properties||{};if(!U(r))throw new Error("steps must be a number");if(!Z(o))throw new Error("properties must be a number");var s=yt(t).length,a=fi(t,{weight:i}),u=0,l=0,h=0;vt(t,(function(t){var e,n=i&&(null==(e=t.properties)?void 0:e[i])||1,r=El(Q(t),Q(a));u+=Math.pow(r.x,2)*n,l+=Math.pow(r.y,2)*n,h+=r.x*r.y*n}));var c=u-l,f=Math.sqrt(Math.pow(c,2)+4*Math.pow(h,2)),g=2*h,p=Math.atan((c+f)/g),v=180*p/Math.PI,d=0,y=0,m=0;vt(t,(function(t){var e,n=i&&(null==(e=t.properties)?void 0:e[i])||1,r=El(Q(t),Q(a));d+=Math.pow(r.x*Math.cos(p)-r.y*Math.sin(p),2)*n,y+=Math.pow(r.x*Math.sin(p)+r.y*Math.cos(p),2)*n,m+=n}));var _=Math.sqrt(2*d/m),x=Math.sqrt(2*y/m),E=js(a,_,x,{units:"degrees",angle:v,steps:r,properties:o}),k=Su(t,C([E])),b={meanCenterCoordinates:Q(a),semiMajorAxis:_,semiMinorAxis:x,numberOfFeatures:s,angle:v,percentageWithinEllipse:100*yt(k).length/s};return E.properties=null!=(n=E.properties)?n:{},E.properties.standardDeviationalEllipse=b,E},t.tag=function(t,e,n,r){return t=Ai(t),e=Ai(e),vt(t,(function(t){t.properties||(t.properties={}),vt(e,(function(e){t.properties&&e.properties&&void 0===t.properties[r]&&zt(t,e)&&(t.properties[r]=e.properties[n])}))})),t},t.tesselate=function(t){if(!t.geometry||"Polygon"!==t.geometry.type&&"MultiPolygon"!==t.geometry.type)throw new Error("input must be a Polygon or MultiPolygon");var e={type:"FeatureCollection",features:[]};return"Polygon"===t.geometry.type?e.features=Nl(t.geometry.coordinates):t.geometry.coordinates.forEach((function(t){e.features=e.features.concat(Nl(t))})),e},t.tin=oo,t.toMercator=Vu,t.toWgs84=Gu,t.transformRotate=zs,t.transformScale=al,t.transformTranslate=function(t,e,n,r){if(!Z(r=r||{}))throw new Error("options is invalid");var i=r.units,o=r.zTranslation,s=r.mutate;if(!t)throw new Error("geojson is required");if(null==e||isNaN(e))throw new Error("distance is required");if(o&&"number"!=typeof o&&isNaN(o))throw new Error("zTranslation is not a number");if(o=void 0!==o?o:0,0===e&&0===o)return t;if(null==n||isNaN(n))throw new Error("direction is required");return e<0&&(e=-e,n+=180),!1!==s&&void 0!==s||(t=Ai(t)),ct(t,(function(t){var r=Q(Bs(t,e,n,{units:i}));t[0]=r[0],t[1]=r[1],o&&3===t.length&&(t[2]+=o)})),t},t.triangleGrid=aa,t.truncate=Qa,t.union=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[];if(mt(t,(function(t){n.push(t.coordinates)})),n.length<2)throw new Error("Must have at least 2 geometries");var r=Os.apply(Fs,[n[0]].concat(d(n.slice(1))));return 0===r.length?null:1===r.length?S(r[0],e.properties):R(r,e.properties)},t.unkinkPolygon=function(t){var e=[];return xt(t,(function(t){"Polygon"===t.geometry.type&&vt(Ll(t),(function(n){e.push(S(n.geometry.coordinates,t.properties))}))})),C(e)},t.validateBBox=H,t.validateId=W,t.voronoi=function(t,e){if(!Z(e=e||{}))throw new Error("options is invalid");var n=e.bbox||[-180,-85,180,85];if(!t)throw new Error("points is required");if(!Array.isArray(n))throw new Error("bbox is invalid");return nt(t,"Point","points"),C(function(){var t=Fl,e=ql,n=null;function r(r){return new mh(r.map((function(n,i){var o=[Math.round(t(n,i,r)/vh)*vh,Math.round(e(n,i,r)/vh)*vh];return o.index=i,o.data=n,o})),n)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(e){return arguments.length?(t="function"==typeof e?e:Dl(+e),r):t},r.y=function(t){return arguments.length?(e="function"==typeof t?t:Dl(+t),r):e},r.extent=function(t){return arguments.length?(n=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):n&&[[n[0][0],n[0][1]],[n[1][0],n[1][1]]]},r.size=function(t){return arguments.length?(n=null==t?null:[[0,0],[+t[0],+t[1]]],r):n&&[n[1][0]-n[0][0],n[1][1]-n[0][1]]},r}().x((function(t){return t.geometry.coordinates[0]})).y((function(t){return t.geometry.coordinates[1]})).extent([[n[0],n[1]],[n[2],n[3]]]).polygons(t.features).map((function(e,n){return Object.assign(function(t){return(t=t.slice()).push(t[0]),S([t])}(e),{properties:Fi(t.features[n].properties)})})))}}));


/***/ }),

/***/ "./node_modules/address/lib/address.js":
/*!*********************************************!*\
  !*** ./node_modules/address/lib/address.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var os = __webpack_require__(/*! os */ "./node_modules/os-browserify/browser.js");
var fs = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js");
var child = __webpack_require__(/*! child_process */ "./node_modules/node-libs-browser/mock/empty.js");

var DEFAULT_RESOLV_FILE = '/etc/resolv.conf';

function getInterfaceName() {
  var val = 'eth';
  var platform = os.platform();
  if (platform === 'darwin') {
    val = 'en';
  } else if (platform === 'win32') {
    val = null;
  }
  return val;
}

function getIfconfigCMD() {
  if (os.platform() === 'win32') {
    return 'ipconfig/all';
  }
  return '/sbin/ifconfig';
}

// typeof os.networkInterfaces family is a number (v18.0.0)
// types: 'IPv4' | 'IPv6' => 4 | 6
// @see https://github.com/nodejs/node/issues/42861
function matchName(actualFamily, expectedFamily) {
  if (expectedFamily === 'IPv4') {
    return actualFamily === 'IPv4' || actualFamily === 4;
  }
  if (expectedFamily === 'IPv6') {
    return actualFamily === 'IPv6' || actualFamily === 6;
  }
  return actualFamily === expectedFamily;
}

/**
 * Get all addresses.
 *
 * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os.
 * @param {Function(err, addr)} callback
 *  - {Object} addr {
 *    - {String} ip
 *    - {String} ipv6
 *    - {String} mac
 *  }
 */
function address(interfaceName, callback) {
  if (typeof interfaceName === 'function') {
    callback = interfaceName;
    interfaceName = null;
  }

  var addr = {
    ip: address.ip(interfaceName),
    ipv6: address.ipv6(interfaceName),
    mac: null
  };
  address.mac(interfaceName, function (err, mac) {
    if (mac) {
      addr.mac = mac;
    }
    callback(err, addr);
  });
}

address.interface = function (family, name) {
  var interfaces = os.networkInterfaces();
  var noName = !name;
  name = name || getInterfaceName();
  family = family || 'IPv4';
  for (var i = -1; i < 8; i++) {
    var interfaceName = name + (i >= 0 ? i : ''); // support 'lo' and 'lo0'
    var items = interfaces[interfaceName];
    if (items) {
      for (var j = 0; j < items.length; j++) {
        var item = items[j];
        if (matchName(item.family, family)) {
          return item;
        }
      }
    }
  }

  if (noName) {
    // filter all loopback or local addresses
    for (var k in interfaces) {
      var items = interfaces[k];
      for (var i = 0; i < items.length; i++) {
        var item = items[i];
        // all 127 addresses are local and should be ignored
        if (matchName(item.family, family) && !item.address.startsWith('127.')) {
          return item;
        }
      }
    }
  }
  return;
};

/**
 * Get current machine IPv4
 *
 * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os.
 * @return {String} IP address
 */
address.ip = function (interfaceName) {
  var item = address.interface('IPv4', interfaceName);
  return item && item.address;
};

/**
 * Get current machine IPv6
 *
 * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os.
 * @return {String} IP address
 */
address.ipv6 = function (interfaceName) {
  var item = address.interface('IPv6', interfaceName);
  return item && item.address;
};

// osx start line 'en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500'
// linux start line 'eth0      Link encap:Ethernet  HWaddr 00:16:3E:00:0A:29  '
var MAC_OSX_START_LINE = /^(\w+)\:\s+flags=/;
var MAC_LINUX_START_LINE = /^(\w+)\s{2,}link encap:\w+/i;

// ether 78:ca:39:b0:e6:7d
// HWaddr 00:16:3E:00:0A:29
var MAC_RE = address.MAC_RE = /(?:ether|HWaddr)\s+((?:[a-z0-9]{2}\:){5}[a-z0-9]{2})/i;

// osx: inet 192.168.2.104 netmask 0xffffff00 broadcast 192.168.2.255
// linux: inet addr:10.125.5.202  Bcast:10.125.15.255  Mask:255.255.240.0
var MAC_IP_RE = address.MAC_IP_RE = /inet\s(?:addr\:)?(\d+\.\d+\.\d+\.\d+)/;

function getMAC(content, interfaceName, matchIP) {
  var lines = content.split('\n');
  for (var i = 0; i < lines.length; i++) {
    var line = lines[i].trimRight();
    var m = MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line);
    if (!m) {
      continue;
    }

    // check interface name
    var name = m[1];
    if (name.indexOf(interfaceName) !== 0) {
      continue;
    }

    var ip = null;
    var mac = null;
    var match = MAC_RE.exec(line);
    if (match) {
      mac = match[1];
    }

    i++;
    while (true) {
      line = lines[i];
      if (!line || MAC_OSX_START_LINE.exec(line) || MAC_LINUX_START_LINE.exec(line)) {
        i--;
        break; // hit next interface, handle next interface
      }
      if (!mac) {
        match = MAC_RE.exec(line);
        if (match) {
          mac = match[1];
        }
      }

      if (!ip) {
        match = MAC_IP_RE.exec(line);
        if (match) {
          ip = match[1];
        }
      }

      i++;
    }

    if (ip === matchIP) {
      return mac;
    }
  }
}

/**
 * Get current machine MAC address
 *
 * @param {String} [interfaceName] interface name, default is 'eth' on linux, 'en' on mac os.
 * @param {Function(err, address)} callback
 */
address.mac = function (interfaceName, callback) {
  if (typeof interfaceName === 'function') {
    callback = interfaceName;
    interfaceName = null;
  }
  interfaceName = interfaceName || getInterfaceName();
  var item = address.interface('IPv4', interfaceName);
  if (!item) {
    return callback();
  }

  // https://github.com/nodejs/node/issues/13581
  // bug in node 7.x and <= 8.4.0
  if (!Object({"NODE_ENV":"staging","VUE_APP_ENV":"staging","VUE_APP_API_ROOT":"/dispatch","VUE_APP_API_WS":"wss://v5qy.te.baibaodun.com.cn/dispatch","VUE_APP_BCX_API_URL":"https://identify.test.bcxin.com.cn","VUE_APP_SDK_IM_ID":"1400522511","VUE_APP_SDK_TRTC_ID":"1400522511","VUE_APP_SECRETE_KEY":"5d0e73298984029fab13f00137a666b924a8d51d88287cbc4a1b78b7c3e98210","VUE_APP_IM_AUDIO_API":"/IMAudio","VUE_APP_PTT_SERVER":"wss://rtc.baibaodun.cn:9007","VUE_APP_GWSD_WS_SERVER":"wss://media.baibaodun.cn:8989","VUE_APP_GWSD_CMD_SERVER":"wss://push.baibaodun.cn:8084","VUE_APP_GWSD_API_ROOT":"/pttApi","VUE_APP_PTT_ADMIN_NAME":"ttadmin3","VUE_APP_UPLOAD_FILE_API":"https://v5qy.te.baibaodun.com.cn/v3/shared/common/resources","VUE_APP_MAP_TYPE":"tianditu","VUE_APP_API":"https://v5qy.te.baibaodun.com.cn","VUE_APP_ENABLE_SCREEN":"true","VUE_APP_DISPALY_RISK_CIRCLE":"false","VUE_APP_HUAWEI_API":"/video-platform/huawei-api","VUE_APP_YEHUO_APP_SERVER":"https://appim.baibaodun.com.cn","BASE_URL":"","PACKAGE_VERSION":"1.2.0.20251014135605"}).CI && (item.mac === 'ff:00:00:00:00:00' || item.mac === '00:00:00:00:00:00')) {
    // wrong address, ignore it
    item.mac = '';
  }

  if (item.mac) {
    return callback(null, item.mac);
  }

  child.exec(getIfconfigCMD(), {timeout: 5000}, function (err, stdout, stderr) {
    if (err || !stdout) {
      return callback(err);
    }

    var mac = getMAC(stdout || '', interfaceName, item.address);
    callback(null, mac);
  });
};

// nameserver 172.24.102.254
var DNS_SERVER_RE = /^nameserver\s+(\d+\.\d+\.\d+\.\d+)$/i;

/**
 * Get DNS servers.
 *
 * @param {String} [filepath] resolv config file path. default is '/etc/resolv.conf'.
 * @param {Function(err, servers)} callback
 */
address.dns = function (filepath, callback) {
  if (typeof filepath === 'function') {
    callback = filepath;
    filepath = null;
  }
  filepath = filepath || DEFAULT_RESOLV_FILE;
  fs.readFile(filepath, 'utf8', function (err, content) {
    if (err) {
      return callback(err);
    }
    var servers = [];
    content = content || '';
    var lines = content.split('\n');
    for (var i = 0; i < lines.length; i++) {
      var line = lines[i].trim();
      var m = DNS_SERVER_RE.exec(line);
      if (m) {
        servers.push(m[1]);
      }
    }

    callback(null, servers);
  });
};

module.exports = address;


/***/ }),

/***/ "./node_modules/anchorme/dist/node/dictionary.js":
/*!*******************************************************!*\
  !*** ./node_modules/anchorme/dist/node/dictionary.js ***!
  \*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var tlds_1 = __webpack_require__(/*! ./tlds */ "./node_modules/anchorme/dist/node/tlds.js");
exports.openingParenthesis = "([\"'{";
exports.closingParenthesis = ")]\"'}";
exports.parenthesis = exports.openingParenthesis
    .split("")
    .map(function (x, i) { return "" + x + exports.closingParenthesis.charAt(i); });
exports.htmlAttributes = [
    "src",
    "data",
    "href",
    "cite",
    "formaction",
    "icon",
    "manifest",
    "poster",
    "codebase",
    "background",
    "profile",
    "usemap",
    "itemtype",
    "action",
    "longdesc",
    "classid",
    "archive"
];
exports.nonLatinAlphabetRanges = "\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC";
exports.TLDs = tlds_1.TLDs;


/***/ }),

/***/ "./node_modules/anchorme/dist/node/index.js":
/*!**************************************************!*\
  !*** ./node_modules/anchorme/dist/node/index.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var dictionary_1 = __webpack_require__(/*! ./dictionary */ "./node_modules/anchorme/dist/node/dictionary.js");
var transform_1 = __webpack_require__(/*! ./transform */ "./node_modules/anchorme/dist/node/transform.js");
var regex_1 = __webpack_require__(/*! ./regex */ "./node_modules/anchorme/dist/node/regex.js");
var utils_1 = __webpack_require__(/*! ./utils */ "./node_modules/anchorme/dist/node/utils.js");
var list = function (input) {
    var found = [];
    var result = null;
    var _loop_1 = function () {
        var start = result.index;
        var end = start + result[0].length;
        var string = result[0];
        // ### trailing slashes problem
        /**
         * This is a quick and dirty fix for a problem that could be probably fixed with
         * slight modification in the regex.
         * The problem is that the library doesn't count the trailing slashes as part
         * of the URL, unless there were multiple trailing slashes.
         */
        if (input.charAt(end) === "/") {
            string = string + input.charAt(end);
            end++;
        }
        // ### Parenthesis problem
        /**
                As we're using the \b to tokenize the URL, sometimes the parenthesis are part of the URL
                and sometimes they are actually the last part, this makes the tokenization stops just
                before them.
                To fix this, we calculate how many parenthesis are open and how many are closed inside
                the URL and based on the number we should be able to know whether the aforementioned
                parenthesis character is part of the URL or not
            */
        if (dictionary_1.closingParenthesis.indexOf(input.charAt(end)) > -1) {
            dictionary_1.parenthesis.forEach(function (str) {
                var opening = str.charAt(0);
                var closing = str.charAt(1);
                if (utils_1.checkParenthesis(opening, closing, string, input.charAt(end))) {
                    string = string + input.charAt(end);
                    end++;
                }
            });
        }
        // ### HTML problem 1
        /**
                checking whether the token is already inside an HTML element by seeing if it's
                preceded by an HTML attribute that would hold a url (e.g. scr, cite ...etc)
            */
        if (['""', "''", "()"].indexOf(input.charAt(start - 1) + input.charAt(end)) !== -1) {
            if (utils_1.isInsideAttribute(input.substring(start - utils_1.maximumAttrLength - 15, start))) {
                return "continue";
            }
        }
        // ### HTML problem 2
        /**
                Checking whether the token is the content of an actual anchor
                e.g. <a href="https://something.com">click to go to something.com and have fun</a>
            */
        if (input.substring(end, input.length).indexOf("</a>") > -1 &&
            input.substring(0, start).indexOf("<a") > -1 &&
            utils_1.isInsideAnchorTag(string, input, end)) {
            return "continue";
        }
        if (result[regex_1.iidxes.isURL]) {
            var path = (result[regex_1.iidxes.url.path] || "") +
                (result[regex_1.iidxes.url.secondPartOfPath] || "") || undefined;
            var protocol = result[regex_1.iidxes.url.protocol1] ||
                result[regex_1.iidxes.url.protocol2] ||
                result[regex_1.iidxes.url.protocol3];
            found.push({
                start: start,
                end: end,
                string: string,
                isURL: true,
                protocol: protocol,
                port: result[regex_1.iidxes.url.port],
                ipv4: result[regex_1.iidxes.url.ipv4Confirmation]
                    ? result[regex_1.iidxes.url.ipv4]
                    : undefined,
                ipv6: result[regex_1.iidxes.url.ipv6],
                host: result[regex_1.iidxes.url.byProtocol]
                    ? undefined
                    : (result[regex_1.iidxes.url.protocolWithDomain] || "").substr((protocol || "").length),
                confirmedByProtocol: !!result[regex_1.iidxes.url.byProtocol],
                path: result[regex_1.iidxes.url.byProtocol] ? undefined : path,
                query: result[regex_1.iidxes.url.query] || undefined,
                fragment: result[regex_1.iidxes.url.fragment] || undefined,
            });
        }
        else if (result[regex_1.iidxes.isFile]) {
            var filePath = string.substr(8);
            found.push({
                start: start,
                end: end,
                string: string,
                isFile: true,
                protocol: result[regex_1.iidxes.file.protocol],
                filename: result[regex_1.iidxes.file.fileName],
                filePath: filePath,
                fileDirectory: filePath.substr(0, filePath.length - result[regex_1.iidxes.file.fileName].length),
            });
        }
        else if (result[regex_1.iidxes.isEmail]) {
            found.push({
                start: start,
                end: end,
                string: string,
                isEmail: true,
                local: result[regex_1.iidxes.email.local],
                protocol: result[regex_1.iidxes.email.protocol],
                host: result[regex_1.iidxes.email.host],
            });
        }
        else {
            found.push({
                start: start,
                end: end,
                string: string,
            });
        }
    };
    while ((result = regex_1.finalRegex.exec(input)) !== null) {
        _loop_1();
    }
    return found;
};
var anchorme = function (arg) {
    var _a = typeof arg === "string"
        ? { input: arg, options: undefined, extensions: undefined }
        : arg, input = _a.input, options = _a.options, extensions = _a.extensions;
    if (extensions) {
        for (var index = 0; index < extensions.length; index++) {
            var extension = extensions[index];
            input = input.replace(extension.test, extension.transform);
        }
    }
    var found = list(input);
    var newStr = "";
    // the following code isn't very intuitive nor human readable
    // but faster than others
    for (var index = 0; index < found.length; index++) {
        newStr =
            (newStr
                ? newStr
                : index === 0
                    ? input.substring(0, found[index].start)
                    : "") +
                transform_1.transform(found[index], options) +
                (found[index + 1]
                    ? input.substring(found[index].end, found[index + 1].start)
                    : input.substring(found[index].end));
    }
    return newStr ? newStr : input;
};
anchorme.list = function (input) {
    return list(input);
};
anchorme.validate = {
    ip: function (input) { return regex_1.ipRegex.test(input); },
    email: function (input) { return regex_1.emailRegex.test(input); },
    file: function (input) { return regex_1.fileRegex.test(input); },
    url: function (input) { return regex_1.urlRegex.test(input) || regex_1.ipRegex.test(input); },
};
exports.default = anchorme;


/***/ }),

/***/ "./node_modules/anchorme/dist/node/regex.js":
/*!**************************************************!*\
  !*** ./node_modules/anchorme/dist/node/regex.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var dictionary_1 = __webpack_require__(/*! ./dictionary */ "./node_modules/anchorme/dist/node/dictionary.js");
var email_address = "([a-z0-9!#$%&'*+=?^_`{|}~-]+(\\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*)";
var domainWithTLD = "([a-z0-9]+(-+[a-z0-9]+)*\\.)+(" + dictionary_1.TLDs + ")";
var domainWithAnyTLD = "([a-z0-9]+(-+[a-z0-9]+)*\\.)+([a-z0-9][a-z0-9-]{0," + (Math.max.apply(this, dictionary_1.TLDs.split("|").map(function (x) { return x.length; })) - 2) + "}[a-z0-9])";
var allowedInPath = "a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()";
var path = "(((\\/(([" + allowedInPath + "]+(\\/[" + allowedInPath + "]*)*))?)?)((\\?([" + allowedInPath + "\\/?]*))?)((\\#([" + allowedInPath + "\\/?]*))?))?";
var ipv4 = "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)";
var ipv6 = "\\[(([a-f0-9:]+:+)+[a-f0-9]+)\\]";
var port = "(:(\\d{1,5}))?";
var protocol = "(https?:|ftps?:)\\/\\/";
var confirmedByProtocol = "(" + protocol + ")\\S+";
var additionalSlashes = "(([\\/]?))+";
var fqdn = "(((" + protocol + ")?(" + domainWithTLD + "|" + ipv4 + "|(" + protocol + ")(" + ipv6 + "|" + domainWithAnyTLD + "))(?!@\\w)" + port + ")|(" + confirmedByProtocol + "))";
var nonLatinMatches = fqdn + "((((\\/(([" + allowedInPath + "]+(\\/[" + allowedInPath + dictionary_1.nonLatinAlphabetRanges + "]*)*))?)?)((\\?([" + allowedInPath + "\\/?]*))?)((\\#([" + allowedInPath + "\\/?]*))?))?\\b((([" + allowedInPath + "\\/" + dictionary_1.nonLatinAlphabetRanges + "][a-zA-Z\\d\\-_~+=\\/" + dictionary_1.nonLatinAlphabetRanges + "]+)?))+)";
exports.email = "\\b(mailto:)?" + email_address + "@(" + domainWithTLD + "|" + ipv4 + ")\\b";
exports.url = "(" + nonLatinMatches + ")|(\\b" + fqdn + path + "\\b" + additionalSlashes + ")";
exports.file = "(file:\\/\\/\\/)([a-z]+:(\\/|\\\\)+)?([\\w.]+([\\/\\\\]?)+)+";
exports.final = "(" + exports.url + ")|(" + exports.email + ")|(" + exports.file + ")";
exports.finalRegex = new RegExp(exports.final, "gi");
// for validation purposes
exports.ipRegex = new RegExp("^(" + ipv4 + "|" + ipv6 + ")$", "i");
exports.emailRegex = new RegExp("^(" + exports.email + ")$", "i");
exports.fileRegex = new RegExp("^(" + exports.file + ")$", "i");
exports.urlRegex = new RegExp("^(" + exports.url + ")$", "i");
// identifying parts of the link
var iidxes = {
    isURL: 0,
    isEmail: 0,
    isFile: 0,
    file: {
        fileName: 0,
        protocol: 0,
    },
    email: {
        protocol: 0,
        local: 0,
        host: 0,
    },
    url: {
        ipv4: 0,
        ipv6: 0,
        ipv4Confirmation: 0,
        byProtocol: 0,
        port: 0,
        // three places where protocol can appear
        protocol1: 0,
        protocol2: 0,
        protocol3: 0,
        protocolWithDomain: 0,
        path: 0,
        // sometimes path might be split into two parts
        secondPartOfPath: 0,
        query: 0,
        fragment: 0,
    },
};
exports.iidxes = iidxes;
var testers = [
    "file:///some/file/path/filename.pdf",
    "mailto:e+_mail.me@sub.domain.com",
    "http://sub.domain.co.uk:3000/p/a/t/h_(asd)/h?q=abc123#dfdf",
    "http://www.\u0639\u0631\u0628\u064A.com",
    "http://127.0.0.1:3000/p/a/t_(asd)/h?q=abc123#dfdf",
    "http://[2a00:1450:4025:401::67]/k/something",
    "a.org/abc/\u10D8_\u10D2\u10D2",
].join(" ");
var result = null;
var i = 0;
while ((result = exports.finalRegex.exec(testers)) !== null) {
    if (i === 0) {
        iidxes.isFile = result.lastIndexOf(result[0]);
        iidxes.file.fileName = result.indexOf("filename.pdf");
        iidxes.file.protocol = result.indexOf("file:///");
    }
    if (i === 1) {
        iidxes.isEmail = result.lastIndexOf(result[0]);
        iidxes.email.protocol = result.indexOf("mailto:");
        iidxes.email.local = result.indexOf("e+_mail.me");
        iidxes.email.host = result.indexOf("sub.domain.com");
    }
    if (i === 2) {
        iidxes.isURL = result.lastIndexOf(result[0]);
        iidxes.url.protocol1 = result.indexOf("http://");
        iidxes.url.protocolWithDomain = result.indexOf("http://sub.domain.co.uk:3000");
        iidxes.url.port = result.indexOf("3000");
        iidxes.url.path = result.indexOf("/p/a/t/h_(asd)/h");
        iidxes.url.query = result.indexOf("q=abc123");
        iidxes.url.fragment = result.indexOf("dfdf");
    }
    if (i === 3) {
        iidxes.url.byProtocol = result.lastIndexOf("http://www.عربي.com");
        iidxes.url.protocol2 = result.lastIndexOf("http://");
    }
    if (i === 4) {
        iidxes.url.ipv4 = result.indexOf("127.0.0.1");
        iidxes.url.ipv4Confirmation = result.indexOf("0.");
    }
    if (i === 5) {
        iidxes.url.ipv6 = result.indexOf("2a00:1450:4025:401::67");
        iidxes.url.protocol3 = result.lastIndexOf("http://");
    }
    if (i === 6) {
        iidxes.url.secondPartOfPath = result.indexOf("გგ");
    }
    i++;
}


/***/ }),

/***/ "./node_modules/anchorme/dist/node/tlds.js":
/*!*************************************************!*\
  !*** ./node_modules/anchorme/dist/node/tlds.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.TLDs = "(AAA|AARP|ABARTH|ABB|ABBOTT|ABBVIE|ABC|ABLE|ABOGADO|ABUDHABI|AC|ACADEMY|ACCENTURE|ACCOUNTANT|ACCOUNTANTS|ACO|ACTOR|AD|ADAC|ADS|ADULT|AE|AEG|AERO|AETNA|AF|AFAMILYCOMPANY|AFL|AFRICA|AG|AGAKHAN|AGENCY|AI|AIG|AIGO|AIRBUS|AIRFORCE|AIRTEL|AKDN|AL|ALFAROMEO|ALIBABA|ALIPAY|ALLFINANZ|ALLSTATE|ALLY|ALSACE|ALSTOM|AM|AMERICANEXPRESS|AMERICANFAMILY|AMEX|AMFAM|AMICA|AMSTERDAM|ANALYTICS|ANDROID|ANQUAN|ANZ|AO|AOL|APARTMENTS|APP|APPLE|AQ|AQUARELLE|AR|ARAB|ARAMCO|ARCHI|ARMY|ARPA|ART|ARTE|AS|ASDA|ASIA|ASSOCIATES|AT|ATHLETA|ATTORNEY|AU|AUCTION|AUDI|AUDIBLE|AUDIO|AUSPOST|AUTHOR|AUTO|AUTOS|AVIANCA|AW|AWS|AX|AXA|AZ|AZURE|BA|BABY|BAIDU|BANAMEX|BANANAREPUBLIC|BAND|BANK|BAR|BARCELONA|BARCLAYCARD|BARCLAYS|BAREFOOT|BARGAINS|BASEBALL|BASKETBALL|BAUHAUS|BAYERN|BB|BBC|BBT|BBVA|BCG|BCN|BD|BE|BEATS|BEAUTY|BEER|BENTLEY|BERLIN|BEST|BESTBUY|BET|BF|BG|BH|BHARTI|BI|BIBLE|BID|BIKE|BING|BINGO|BIO|BIZ|BJ|BLACK|BLACKFRIDAY|BLOCKBUSTER|BLOG|BLOOMBERG|BLUE|BM|BMS|BMW|BN|BNPPARIBAS|BO|BOATS|BOEHRINGER|BOFA|BOM|BOND|BOO|BOOK|BOOKING|BOSCH|BOSTIK|BOSTON|BOT|BOUTIQUE|BOX|BR|BRADESCO|BRIDGESTONE|BROADWAY|BROKER|BROTHER|BRUSSELS|BS|BT|BUDAPEST|BUGATTI|BUILD|BUILDERS|BUSINESS|BUY|BUZZ|BV|BW|BY|BZ|BZH|CA|CAB|CAFE|CAL|CALL|CALVINKLEIN|CAM|CAMERA|CAMP|CANCERRESEARCH|CANON|CAPETOWN|CAPITAL|CAPITALONE|CAR|CARAVAN|CARDS|CARE|CAREER|CAREERS|CARS|CASA|CASE|CASEIH|CASH|CASINO|CAT|CATERING|CATHOLIC|CBA|CBN|CBRE|CBS|CC|CD|CEB|CENTER|CEO|CERN|CF|CFA|CFD|CG|CH|CHANEL|CHANNEL|CHARITY|CHASE|CHAT|CHEAP|CHINTAI|CHRISTMAS|CHROME|CHURCH|CI|CIPRIANI|CIRCLE|CISCO|CITADEL|CITI|CITIC|CITY|CITYEATS|CK|CL|CLAIMS|CLEANING|CLICK|CLINIC|CLINIQUE|CLOTHING|CLOUD|CLUB|CLUBMED|CM|CN|CO|COACH|CODES|COFFEE|COLLEGE|COLOGNE|COM|COMCAST|COMMBANK|COMMUNITY|COMPANY|COMPARE|COMPUTER|COMSEC|CONDOS|CONSTRUCTION|CONSULTING|CONTACT|CONTRACTORS|COOKING|COOKINGCHANNEL|COOL|COOP|CORSICA|COUNTRY|COUPON|COUPONS|COURSES|CPA|CR|CREDIT|CREDITCARD|CREDITUNION|CRICKET|CROWN|CRS|CRUISE|CRUISES|CSC|CU|CUISINELLA|CV|CW|CX|CY|CYMRU|CYOU|CZ|DABUR|DAD|DANCE|DATA|DATE|DATING|DATSUN|DAY|DCLK|DDS|DE|DEAL|DEALER|DEALS|DEGREE|DELIVERY|DELL|DELOITTE|DELTA|DEMOCRAT|DENTAL|DENTIST|DESI|DESIGN|DEV|DHL|DIAMONDS|DIET|DIGITAL|DIRECT|DIRECTORY|DISCOUNT|DISCOVER|DISH|DIY|DJ|DK|DM|DNP|DO|DOCS|DOCTOR|DOG|DOMAINS|DOT|DOWNLOAD|DRIVE|DTV|DUBAI|DUCK|DUNLOP|DUPONT|DURBAN|DVAG|DVR|DZ|EARTH|EAT|EC|ECO|EDEKA|EDU|EDUCATION|EE|EG|EMAIL|EMERCK|ENERGY|ENGINEER|ENGINEERING|ENTERPRISES|EPSON|EQUIPMENT|ER|ERICSSON|ERNI|ES|ESQ|ESTATE|ESURANCE|ET|ETISALAT|EU|EUROVISION|EUS|EVENTS|EXCHANGE|EXPERT|EXPOSED|EXPRESS|EXTRASPACE|FAGE|FAIL|FAIRWINDS|FAITH|FAMILY|FAN|FANS|FARM|FARMERS|FASHION|FAST|FEDEX|FEEDBACK|FERRARI|FERRERO|FI|FIAT|FIDELITY|FIDO|FILM|FINAL|FINANCE|FINANCIAL|FIRE|FIRESTONE|FIRMDALE|FISH|FISHING|FIT|FITNESS|FJ|FK|FLICKR|FLIGHTS|FLIR|FLORIST|FLOWERS|FLY|FM|FO|FOO|FOOD|FOODNETWORK|FOOTBALL|FORD|FOREX|FORSALE|FORUM|FOUNDATION|FOX|FR|FREE|FRESENIUS|FRL|FROGANS|FRONTDOOR|FRONTIER|FTR|FUJITSU|FUJIXEROX|FUN|FUND|FURNITURE|FUTBOL|FYI|GA|GAL|GALLERY|GALLO|GALLUP|GAME|GAMES|GAP|GARDEN|GAY|GB|GBIZ|GD|GDN|GE|GEA|GENT|GENTING|GEORGE|GF|GG|GGEE|GH|GI|GIFT|GIFTS|GIVES|GIVING|GL|GLADE|GLASS|GLE|GLOBAL|GLOBO|GM|GMAIL|GMBH|GMO|GMX|GN|GODADDY|GOLD|GOLDPOINT|GOLF|GOO|GOODYEAR|GOOG|GOOGLE|GOP|GOT|GOV|GP|GQ|GR|GRAINGER|GRAPHICS|GRATIS|GREEN|GRIPE|GROCERY|GROUP|GS|GT|GU|GUARDIAN|GUCCI|GUGE|GUIDE|GUITARS|GURU|GW|GY|HAIR|HAMBURG|HANGOUT|HAUS|HBO|HDFC|HDFCBANK|HEALTH|HEALTHCARE|HELP|HELSINKI|HERE|HERMES|HGTV|HIPHOP|HISAMITSU|HITACHI|HIV|HK|HKT|HM|HN|HOCKEY|HOLDINGS|HOLIDAY|HOMEDEPOT|HOMEGOODS|HOMES|HOMESENSE|HONDA|HORSE|HOSPITAL|HOST|HOSTING|HOT|HOTELES|HOTELS|HOTMAIL|HOUSE|HOW|HR|HSBC|HT|HU|HUGHES|HYATT|HYUNDAI|IBM|ICBC|ICE|ICU|ID|IE|IEEE|IFM|IKANO|IL|IM|IMAMAT|IMDB|IMMO|IMMOBILIEN|IN|INC|INDUSTRIES|INFINITI|INFO|ING|INK|INSTITUTE|INSURANCE|INSURE|INT|INTEL|INTERNATIONAL|INTUIT|INVESTMENTS|IO|IPIRANGA|IQ|IR|IRISH|IS|ISMAILI|IST|ISTANBUL|IT|ITAU|ITV|IVECO|JAGUAR|JAVA|JCB|JCP|JE|JEEP|JETZT|JEWELRY|JIO|JLL|JM|JMP|JNJ|JO|JOBS|JOBURG|JOT|JOY|JP|JPMORGAN|JPRS|JUEGOS|JUNIPER|KAUFEN|KDDI|KE|KERRYHOTELS|KERRYLOGISTICS|KERRYPROPERTIES|KFH|KG|KH|KI|KIA|KIM|KINDER|KINDLE|KITCHEN|KIWI|KM|KN|KOELN|KOMATSU|KOSHER|KP|KPMG|KPN|KR|KRD|KRED|KUOKGROUP|KW|KY|KYOTO|KZ|LA|LACAIXA|LAMBORGHINI|LAMER|LANCASTER|LANCIA|LAND|LANDROVER|LANXESS|LASALLE|LAT|LATINO|LATROBE|LAW|LAWYER|LB|LC|LDS|LEASE|LECLERC|LEFRAK|LEGAL|LEGO|LEXUS|LGBT|LI|LIDL|LIFE|LIFEINSURANCE|LIFESTYLE|LIGHTING|LIKE|LILLY|LIMITED|LIMO|LINCOLN|LINDE|LINK|LIPSY|LIVE|LIVING|LIXIL|LK|LLC|LLP|LOAN|LOANS|LOCKER|LOCUS|LOFT|LOL|LONDON|LOTTE|LOTTO|LOVE|LPL|LPLFINANCIAL|LR|LS|LT|LTD|LTDA|LU|LUNDBECK|LUPIN|LUXE|LUXURY|LV|LY|MA|MACYS|MADRID|MAIF|MAISON|MAKEUP|MAN|MANAGEMENT|MANGO|MAP|MARKET|MARKETING|MARKETS|MARRIOTT|MARSHALLS|MASERATI|MATTEL|MBA|MC|MCKINSEY|MD|ME|MED|MEDIA|MEET|MELBOURNE|MEME|MEMORIAL|MEN|MENU|MERCKMSD|METLIFE|MG|MH|MIAMI|MICROSOFT|MIL|MINI|MINT|MIT|MITSUBISHI|MK|ML|MLB|MLS|MM|MMA|MN|MO|MOBI|MOBILE|MODA|MOE|MOI|MOM|MONASH|MONEY|MONSTER|MORMON|MORTGAGE|MOSCOW|MOTO|MOTORCYCLES|MOV|MOVIE|MP|MQ|MR|MS|MSD|MT|MTN|MTR|MU|MUSEUM|MUTUAL|MV|MW|MX|MY|MZ|NA|NAB|NAGOYA|NAME|NATIONWIDE|NATURA|NAVY|NBA|NC|NE|NEC|NET|NETBANK|NETFLIX|NETWORK|NEUSTAR|NEW|NEWHOLLAND|NEWS|NEXT|NEXTDIRECT|NEXUS|NF|NFL|NG|NGO|NHK|NI|NICO|NIKE|NIKON|NINJA|NISSAN|NISSAY|NL|NO|NOKIA|NORTHWESTERNMUTUAL|NORTON|NOW|NOWRUZ|NOWTV|NP|NR|NRA|NRW|NTT|NU|NYC|NZ|OBI|OBSERVER|OFF|OFFICE|OKINAWA|OLAYAN|OLAYANGROUP|OLDNAVY|OLLO|OM|OMEGA|ONE|ONG|ONL|ONLINE|ONYOURSIDE|OOO|OPEN|ORACLE|ORANGE|ORG|ORGANIC|ORIGINS|OSAKA|OTSUKA|OTT|OVH|PA|PAGE|PANASONIC|PARIS|PARS|PARTNERS|PARTS|PARTY|PASSAGENS|PAY|PCCW|PE|PET|PF|PFIZER|PG|PH|PHARMACY|PHD|PHILIPS|PHONE|PHOTO|PHOTOGRAPHY|PHOTOS|PHYSIO|PICS|PICTET|PICTURES|PID|PIN|PING|PINK|PIONEER|PIZZA|PK|PL|PLACE|PLAY|PLAYSTATION|PLUMBING|PLUS|PM|PN|PNC|POHL|POKER|POLITIE|PORN|POST|PR|PRAMERICA|PRAXI|PRESS|PRIME|PRO|PROD|PRODUCTIONS|PROF|PROGRESSIVE|PROMO|PROPERTIES|PROPERTY|PROTECTION|PRU|PRUDENTIAL|PS|PT|PUB|PW|PWC|PY|QA|QPON|QUEBEC|QUEST|QVC|RACING|RADIO|RAID|RE|READ|REALESTATE|REALTOR|REALTY|RECIPES|RED|REDSTONE|REDUMBRELLA|REHAB|REISE|REISEN|REIT|RELIANCE|REN|RENT|RENTALS|REPAIR|REPORT|REPUBLICAN|REST|RESTAURANT|REVIEW|REVIEWS|REXROTH|RICH|RICHARDLI|RICOH|RIGHTATHOME|RIL|RIO|RIP|RMIT|RO|ROCHER|ROCKS|RODEO|ROGERS|ROOM|RS|RSVP|RU|RUGBY|RUHR|RUN|RW|RWE|RYUKYU|SA|SAARLAND|SAFE|SAFETY|SAKURA|SALE|SALON|SAMSCLUB|SAMSUNG|SANDVIK|SANDVIKCOROMANT|SANOFI|SAP|SARL|SAS|SAVE|SAXO|SB|SBI|SBS|SC|SCA|SCB|SCHAEFFLER|SCHMIDT|SCHOLARSHIPS|SCHOOL|SCHULE|SCHWARZ|SCIENCE|SCJOHNSON|SCOR|SCOT|SD|SE|SEARCH|SEAT|SECURE|SECURITY|SEEK|SELECT|SENER|SERVICES|SES|SEVEN|SEW|SEX|SEXY|SFR|SG|SH|SHANGRILA|SHARP|SHAW|SHELL|SHIA|SHIKSHA|SHOES|SHOP|SHOPPING|SHOUJI|SHOW|SHOWTIME|SHRIRAM|SI|SILK|SINA|SINGLES|SITE|SJ|SK|SKI|SKIN|SKY|SKYPE|SL|SLING|SM|SMART|SMILE|SN|SNCF|SO|SOCCER|SOCIAL|SOFTBANK|SOFTWARE|SOHU|SOLAR|SOLUTIONS|SONG|SONY|SOY|SPACE|SPORT|SPOT|SPREADBETTING|SR|SRL|SS|ST|STADA|STAPLES|STAR|STATEBANK|STATEFARM|STC|STCGROUP|STOCKHOLM|STORAGE|STORE|STREAM|STUDIO|STUDY|STYLE|SU|SUCKS|SUPPLIES|SUPPLY|SUPPORT|SURF|SURGERY|SUZUKI|SV|SWATCH|SWIFTCOVER|SWISS|SX|SY|SYDNEY|SYMANTEC|SYSTEMS|SZ|TAB|TAIPEI|TALK|TAOBAO|TARGET|TATAMOTORS|TATAR|TATTOO|TAX|TAXI|TC|TCI|TD|TDK|TEAM|TECH|TECHNOLOGY|TEL|TEMASEK|TENNIS|TEVA|TF|TG|TH|THD|THEATER|THEATRE|TIAA|TICKETS|TIENDA|TIFFANY|TIPS|TIRES|TIROL|TJ|TJMAXX|TJX|TK|TKMAXX|TL|TM|TMALL|TN|TO|TODAY|TOKYO|TOOLS|TOP|TORAY|TOSHIBA|TOTAL|TOURS|TOWN|TOYOTA|TOYS|TR|TRADE|TRADING|TRAINING|TRAVEL|TRAVELCHANNEL|TRAVELERS|TRAVELERSINSURANCE|TRUST|TRV|TT|TUBE|TUI|TUNES|TUSHU|TV|TVS|TW|TZ|UA|UBANK|UBS|UG|UK|UNICOM|UNIVERSITY|UNO|UOL|UPS|US|UY|UZ|VA|VACATIONS|VANA|VANGUARD|VC|VE|VEGAS|VENTURES|VERISIGN|VERSICHERUNG|VET|VG|VI|VIAJES|VIDEO|VIG|VIKING|VILLAS|VIN|VIP|VIRGIN|VISA|VISION|VIVA|VIVO|VLAANDEREN|VN|VODKA|VOLKSWAGEN|VOLVO|VOTE|VOTING|VOTO|VOYAGE|VU|VUELOS|WALES|WALMART|WALTER|WANG|WANGGOU|WATCH|WATCHES|WEATHER|WEATHERCHANNEL|WEBCAM|WEBER|WEBSITE|WED|WEDDING|WEIBO|WEIR|WF|WHOSWHO|WIEN|WIKI|WILLIAMHILL|WIN|WINDOWS|WINE|WINNERS|WME|WOLTERSKLUWER|WOODSIDE|WORK|WORKS|WORLD|WOW|WS|WTC|WTF|XBOX|XEROX|XFINITY|XIHUAN|XIN|XN--11B4C3D|XN--1CK2E1B|XN--1QQW23A|XN--2SCRJ9C|XN--30RR7Y|XN--3BST00M|XN--3DS443G|XN--3E0B707E|XN--3HCRJ9C|XN--3OQ18VL8PN36A|XN--3PXU8K|XN--42C2D9A|XN--45BR5CYL|XN--45BRJ9C|XN--45Q11C|XN--4GBRIM|XN--54B7FTA0CC|XN--55QW42G|XN--55QX5D|XN--5SU34J936BGSG|XN--5TZM5G|XN--6FRZ82G|XN--6QQ986B3XL|XN--80ADXHKS|XN--80AO21A|XN--80AQECDR1A|XN--80ASEHDB|XN--80ASWG|XN--8Y0A063A|XN--90A3AC|XN--90AE|XN--90AIS|XN--9DBQ2A|XN--9ET52U|XN--9KRT00A|XN--B4W605FERD|XN--BCK1B9A5DRE4C|XN--C1AVG|XN--C2BR7G|XN--CCK2B3B|XN--CG4BKI|XN--CLCHC0EA0B2G2A9GCD|XN--CZR694B|XN--CZRS0T|XN--CZRU2D|XN--D1ACJ3B|XN--D1ALF|XN--E1A4C|XN--ECKVDTC9D|XN--EFVY88H|XN--FCT429K|XN--FHBEI|XN--FIQ228C5HS|XN--FIQ64B|XN--FIQS8S|XN--FIQZ9S|XN--FJQ720A|XN--FLW351E|XN--FPCRJ9C3D|XN--FZC2C9E2C|XN--FZYS8D69UVGM|XN--G2XX48C|XN--GCKR3F0F|XN--GECRJ9C|XN--GK3AT1E|XN--H2BREG3EVE|XN--H2BRJ9C|XN--H2BRJ9C8C|XN--HXT814E|XN--I1B6B1A6A2E|XN--IMR513N|XN--IO0A7I|XN--J1AEF|XN--J1AMH|XN--J6W193G|XN--JLQ61U9W7B|XN--JVR189M|XN--KCRX77D1X4A|XN--KPRW13D|XN--KPRY57D|XN--KPU716F|XN--KPUT3I|XN--L1ACC|XN--LGBBAT1AD8J|XN--MGB9AWBF|XN--MGBA3A3EJT|XN--MGBA3A4F16A|XN--MGBA7C0BBN0A|XN--MGBAAKC7DVF|XN--MGBAAM7A8H|XN--MGBAB2BD|XN--MGBAH1A3HJKRD|XN--MGBAI9AZGQP6J|XN--MGBAYH7GPA|XN--MGBBH1A|XN--MGBBH1A71E|XN--MGBC0A9AZCG|XN--MGBCA7DZDO|XN--MGBCPQ6GPA1A|XN--MGBERP4A5D4AR|XN--MGBGU82A|XN--MGBI4ECEXP|XN--MGBPL2FH|XN--MGBT3DHD|XN--MGBTX2B|XN--MGBX4CD0AB|XN--MIX891F|XN--MK1BU44C|XN--MXTQ1M|XN--NGBC5AZD|XN--NGBE9E0A|XN--NGBRX|XN--NODE|XN--NQV7F|XN--NQV7FS00EMA|XN--NYQY26A|XN--O3CW4H|XN--OGBPF8FL|XN--OTU796D|XN--P1ACF|XN--P1AI|XN--PBT977C|XN--PGBS0DH|XN--PSSY2U|XN--Q7CE6A|XN--Q9JYB4C|XN--QCKA1PMC|XN--QXA6A|XN--QXAM|XN--RHQV96G|XN--ROVU88B|XN--RVC1E0AM3E|XN--S9BRJ9C|XN--SES554G|XN--T60B56A|XN--TCKWE|XN--TIQ49XQYJ|XN--UNUP4Y|XN--VERMGENSBERATER-CTB|XN--VERMGENSBERATUNG-PWB|XN--VHQUV|XN--VUQ861B|XN--W4R85EL8FHU5DNRA|XN--W4RS40L|XN--WGBH1C|XN--WGBL6A|XN--XHQ521B|XN--XKC2AL3HYE2A|XN--XKC2DL3A5EE0H|XN--Y9A3AQ|XN--YFRO4I67O|XN--YGBI2AMMX|XN--ZFR164B|XXX|XYZ|YACHTS|YAHOO|YAMAXUN|YANDEX|YE|YODOBASHI|YOGA|YOKOHAMA|YOU|YOUTUBE|YT|YUN|ZA|ZAPPOS|ZARA|ZERO|ZIP|ZM|ZONE|ZUERICH|ZW|TEST)";


/***/ }),

/***/ "./node_modules/anchorme/dist/node/transform.js":
/*!******************************************************!*\
  !*** ./node_modules/anchorme/dist/node/transform.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
function applyOption(string, props, option) {
    // conditional
    if (typeof option === "function") {
        return option(string, props);
    }
    // all
    else {
        return option;
    }
}
function transform(input, options) {
    var protocol = "";
    var truncation = Infinity;
    var attributes = {};
    var truncateFromTheMiddle = false;
    // special transformation
    if (options && options.specialTransform) {
        for (var index = 0; index < options.specialTransform.length; index++) {
            var transformer = options.specialTransform[index];
            if (transformer.test.test(input.string)) {
                return transformer.transform(input.string, input);
            }
        }
    }
    // exclude
    if (options && options.exclude) {
        if (applyOption(input.string, input, options.exclude))
            return input.string;
    }
    // protocol
    if (options && options.protocol) {
        protocol = applyOption(input.string, input, options.protocol);
    }
    if (input.protocol) {
        protocol = "";
    }
    else if (!protocol) {
        protocol = input.isEmail
            ? "mailto:"
            : input.isFile
                ? "file:///"
                : "http://";
    }
    // truncation
    if (options && options.truncate) {
        truncation = applyOption(input.string, input, options.truncate);
    }
    if (options && options.middleTruncation) {
        truncateFromTheMiddle = applyOption(input.string, input, options.middleTruncation);
    }
    // attributes
    if (options && options.attributes) {
        attributes = applyOption(input.string, input, options.attributes);
    }
    return "<a " + Object.keys(attributes)
        .map(function (key) {
        return attributes[key] === true ? key : key + "=\"" + attributes[key] + "\" ";
    })
        .join(" ") + "href=\"" + protocol + input.string + "\">" + (input.string.length > truncation
        ? truncateFromTheMiddle
            ? input.string.substring(0, Math.floor(truncation / 2)) +
                "…" +
                input.string.substring(input.string.length - Math.ceil(truncation / 2), input.string.length)
            : input.string.substring(0, truncation) + "…"
        : input.string) + "</a>";
}
exports.transform = transform;


/***/ }),

/***/ "./node_modules/anchorme/dist/node/utils.js":
/*!**************************************************!*\
  !*** ./node_modules/anchorme/dist/node/utils.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var dictionary_1 = __webpack_require__(/*! ./dictionary */ "./node_modules/anchorme/dist/node/dictionary.js");
function checkParenthesis(opening, closing, target, nextChar) {
    if (nextChar !== closing) {
        return false;
    }
    if (target.split(opening).length - target.split(closing).length === 1 ||
        (opening === closing && target.split(opening).length % 2 === 0)) {
        return true;
    }
}
exports.checkParenthesis = checkParenthesis;
exports.maximumAttrLength = dictionary_1.htmlAttributes.sort(function (a, b) { return b.length - a.length; })[0].length;
function isInsideAttribute(prevFragment) {
    return (/\s[a-z0-9-]+=('|")$/i.test(prevFragment) ||
        /: ?url\(('|")?$/i.test(prevFragment));
}
exports.isInsideAttribute = isInsideAttribute;
function isInsideAnchorTag(target, fullInput, targetEnd) {
    var escapedTarget = target.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
    var regex = new RegExp("(?=(<a))(?!([\\s\\S]*)(<\\/a>)(" + escapedTarget + "))[\\s\\S]*?(" + escapedTarget + ")(?!\"|')", "gi");
    var result = null;
    while ((result = regex.exec(fullInput)) !== null) {
        var end = result.index + result[0].length;
        if (end === targetEnd) {
            return true;
        }
    }
    return false;
}
exports.isInsideAnchorTag = isInsideAnchorTag;


/***/ }),

/***/ "./node_modules/benz-amr-recorder/BenzAMRRecorder.js":
/*!***********************************************************!*\
  !*** ./node_modules/benz-amr-recorder/BenzAMRRecorder.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(global) {(function (global, factory) {
   true ? module.exports = factory() :
  undefined;
})(this, (function () {
  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }

  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    return Constructor;
  }

  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};

  var recorder_build = {exports: {}};

  (function (module, exports) {
  	(function (global, factory) {
  	    module.exports = factory() ;
  	}(commonjsGlobal, (function () {
  	    var recorderWorker = function () {

  	        var recLength = 0,
  	            recBuffersL = [],
  	            recBuffersR = [],
  	            sampleRate;


  	        self.onmessage = function (e) {
  	            switch (e.data.command) {
  	                case 'init':
  	                    init(e.data.config);
  	                    break;
  	                case 'record':
  	                    record(e.data.buffer);
  	                    break;
  	                case 'exportWAV':
  	                    exportWAV(e.data.type);
  	                    break;
  	                case 'getBuffer':
  	                    getBuffer();
  	                    break;
  	                case 'clear':
  	                    clear();
  	                    break;
  	            }
  	        };

  	        function init(config) {
  	            sampleRate = config.sampleRate;
  	        }

  	        function record(inputBuffer) {
  	            recBuffersL.push(inputBuffer[0]);
  	            recBuffersR.push(inputBuffer[1]);
  	            recLength += inputBuffer[0].length;
  	        }

  	        function exportWAV(type) {
  	            var bufferL = mergeBuffers(recBuffersL, recLength);
  	            var bufferR = mergeBuffers(recBuffersR, recLength);
  	            var interleaved = interleave(bufferL, bufferR);
  	            var dataview = encodeWAV(interleaved);
  	            var audioBlob = new Blob([dataview], {type: type});

  	            self.postMessage({
  	                type: 'blob',
  	                data: audioBlob
  	            });
  	        }

  	        function getBuffer() {
  	            var buffers = [];
  	            buffers.push(mergeBuffers(recBuffersL, recLength));
  	            buffers.push(mergeBuffers(recBuffersR, recLength));
  	            self.postMessage({
  	                type: 'buffer',
  	                data: buffers
  	            });
  	        }

  	        function clear() {
  	            recLength = 0;
  	            recBuffersL = [];
  	            recBuffersR = [];
  	        }

  	        function mergeBuffers(recBuffers, recLength) {
  	            var result = new Float32Array(recLength);
  	            var offset = 0;
  	            for (var i = 0; i < recBuffers.length; i++) {
  	                result.set(recBuffers[i], offset);
  	                offset += recBuffers[i].length;
  	            }
  	            return result;
  	        }

  	        function interleave(inputL, inputR) {
  	            var length = inputL.length + inputR.length;
  	            var result = new Float32Array(length);

  	            var index = 0,
  	                inputIndex = 0;

  	            while (index < length) {
  	                result[index++] = inputL[inputIndex];
  	                result[index++] = inputR[inputIndex];
  	                inputIndex++;
  	            }
  	            return result;
  	        }

  	        function floatTo16BitPCM(output, offset, input) {
  	            for (var i = 0; i < input.length; i++, offset += 2) {
  	                var s = Math.max(-1, Math.min(1, input[i]));
  	                output.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);
  	            }
  	        }

  	        function writeString(view, offset, string) {
  	            for (var i = 0; i < string.length; i++) {
  	                view.setUint8(offset + i, string.charCodeAt(i));
  	            }
  	        }

  	        function encodeWAV(samples) {
  	            var buffer = new ArrayBuffer(44 + samples.length * 2);
  	            var view = new DataView(buffer);

  	            /* RIFF identifier */
  	            writeString(view, 0, 'RIFF');
  	            /* RIFF chunk length */
  	            view.setUint32(4, 36 + samples.length * 2, true);
  	            /* RIFF type */
  	            writeString(view, 8, 'WAVE');
  	            /* format chunk identifier */
  	            writeString(view, 12, 'fmt ');
  	            /* format chunk length */
  	            view.setUint32(16, 16, true);
  	            /* sample format (raw) */
  	            view.setUint16(20, 1, true);
  	            /* channel count */
  	            view.setUint16(22, 2, true);
  	            /* sample rate */
  	            view.setUint32(24, sampleRate, true);
  	            /* byte rate (sample rate * block align) */
  	            view.setUint32(28, sampleRate * 4, true);
  	            /* block align (channel count * bytes per sample) */
  	            view.setUint16(32, 4, true);
  	            /* bits per sample */
  	            view.setUint16(34, 16, true);
  	            /* data chunk identifier */
  	            writeString(view, 36, 'data');
  	            /* data chunk length */
  	            view.setUint32(40, samples.length * 2, true);

  	            floatTo16BitPCM(view, 44, samples);

  	            return view;
  	        }

  	    };

  	    var recorderWorkerStr = recorderWorker.toString()
  	        .replace(/^\s*function.*?\(\)\s*{/, '')
  	        .replace(/}\s*$/, '');

  	    // var WORKER_PATH = './recorderWorker.js';

  	    var Recorder = function(source, cfg){
  	      var config = cfg || {};
  	      var bufferLen = config.bufferLen || 4096;
  	      this.context = source.context;
  	      this.node = (this.context.createScriptProcessor ||
  	                   this.context.createJavaScriptNode).call(this.context,
  	                                                           bufferLen, 2, 2);
  	      var worker = new Worker((window.URL || window.webkitURL).createObjectURL(new Blob([recorderWorkerStr], {type:"text/javascript"})));
  	      worker.onmessage = function(e){
  	        if (e.data.type === 'blob') {
  	            currCallbackWithBlob(e.data.data);
  	        } else {
  	            currCallbackWithBuffer(e.data.data);
  	        }
  	      };

  	      worker.postMessage({
  	        command: 'init',
  	        config: {
  	          sampleRate: this.context.sampleRate
  	        }
  	      });
  	      var recording = false,
  	        currCallbackWithBuffer,
  	        currCallbackWithBlob;

  	      this.node.onaudioprocess = function(e){
  	        if (!recording) return;
  	        worker.postMessage({
  	          command: 'record',
  	          buffer: [
  	            e.inputBuffer.getChannelData(0),
  	            e.inputBuffer.getChannelData(1)
  	          ]
  	        });
  	      };

  	      this.configure = function(cfg){
  	        for (var prop in cfg){
  	          if (cfg.hasOwnProperty(prop)){
  	            config[prop] = cfg[prop];
  	          }
  	        }
  	      };

  	      this.record = function(){
  	        recording = true;
  	      };

  	      this.stop = function(){
  	        recording = false;
  	      };

  	      this.clear = function(){
  	        worker.postMessage({ command: 'clear' });
  	      };

  	      this.getBuffer = function(cb) {
  	        currCallbackWithBuffer = cb || config.callback;
  	        worker.postMessage({ command: 'getBuffer' });
  	      };

  	      this.exportWAV = function(cb, type){
  	        currCallbackWithBlob = cb || config.callback;
  	        type = type || config.type || 'audio/wav';
  	        if (!currCallbackWithBlob) throw new Error('Callback not set');
  	        worker.postMessage({
  	          command: 'exportWAV',
  	          type: type
  	        });
  	      };

  	      this.release = function() {
  	        this.stop();
  	        this.clear();
  	        this.configure = this.record = this.stop = this.clear = this.getBuffer = this.exportWAV = function () {};
  	        source.disconnect(this.node);
  	        this.node.onaudioprocess = null;
  	        this.node.disconnect();
  	        worker.terminate();
  	      };

  	      source.connect(this.node);
  	      this.node.connect(this.context.destination);    //this should not be necessary
  	    };

  	    Recorder.forceDownload = function(blob, filename){
  	      var url = (window.URL || window.webkitURL).createObjectURL(blob);
  	      var link = window.document.createElement('a');
  	      link.href = url;
  	      link.download = filename || 'output.wav';
  	      var click = document.createEvent("Event");
  	      click.initEvent("click", true, true);
  	      link.dispatchEvent(click);
  	    };

  	    var recorder = Recorder;

  	    return recorder;

  	})));
  } (recorder_build));

  var Recorder = recorder_build.exports;

  var AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext;
  var ctx = null;
  var isSupport = true;

  if (!AudioContext) {
    isSupport = false;
    console.warn('Web Audio API is Unsupported.');
  }

  var RecorderControl =
  /*#__PURE__*/
  function () {
    function RecorderControl() {
      _classCallCheck(this, RecorderControl);

      this._recorderStream = null;
      this._recorderStreamSourceNode = null;
      this._recorder = null;
      this._isRecording = false;
      this._curSourceNode = null;
    }

    _createClass(RecorderControl, [{
      key: "playPcm",
      value: function playPcm(samples, sampleRate, onEnded, startPos) {
        if (!ctx || ctx.state === 'closed') {
          ctx = new AudioContext();
        }

        if (ctx.state === 'interrupted' || ctx.state === 'suspended') {
          ctx.resume();
        }

        sampleRate = sampleRate || 8000;
        this.stopPcm();

        var _samples = startPos && startPos > 0.001 ? // 根据开始位置（秒数）截取播放采样
        samples.slice(sampleRate * startPos) : samples;

        if (!_samples.length) {
          return onEnded();
        }

        var buffer, channelBuffer;
        this._curSourceNode = ctx['createBufferSource']();

        try {
          buffer = ctx['createBuffer'](1, _samples.length, sampleRate);
        } catch (e) {
          // iOS 不支持 22050 以下的采样率，于是先提升采样率，然后用慢速播放
          if (sampleRate < 11025) {
            /*buffer = ctx['createBuffer'](1, _samples.length * 3, sampleRate * 3);
            _samples = this._increaseSampleRate(_samples, 3);*/
            buffer = ctx['createBuffer'](1, _samples.length, sampleRate * 4);
            this._curSourceNode['playbackRate'].value = 0.25;
          } else {
            /*buffer = ctx['createBuffer'](1, _samples.length * 2, sampleRate * 2);
            _samples = this._increaseSampleRate(_samples, 2);*/
            buffer = ctx['createBuffer'](1, _samples.length, sampleRate * 2);
            this._curSourceNode['playbackRate'].value = 0.5;
          }
        }

        if (buffer['copyToChannel']) {
          buffer['copyToChannel'](_samples, 0, 0);
        } else {
          channelBuffer = buffer['getChannelData'](0);
          channelBuffer.set(_samples);
        }

        this._curSourceNode['buffer'] = buffer;
        this._curSourceNode['loop'] = false;

        this._curSourceNode['connect'](ctx['destination']);

        this._curSourceNode.onended = onEnded;

        this._curSourceNode.start();
      }
    }, {
      key: "stopPcm",
      value: function stopPcm() {
        if (this._curSourceNode) {
          this._curSourceNode.stop();

          this._curSourceNode = null;
        }
      }
    }, {
      key: "stopPcmSilently",
      value: function stopPcmSilently() {
        this._curSourceNode.onended = null;
        this.stopPcm();
      }
    }, {
      key: "initRecorder",
      value: function initRecorder() {
        var _this = this;

        return new Promise(function (resolve, reject) {
          var s = function s(stream) {
            _this._recorderStream = stream;
            _this._recorderStreamSourceNode = ctx.createMediaStreamSource(stream);
            _this._recorder = new Recorder(_this._recorderStreamSourceNode);
            _this._isRecording = false;
            resolve();
          };

          var j = function j(e) {
            reject(e);
          };

          if (!_this._recorder) {
            if (window.navigator.mediaDevices && window.navigator.mediaDevices.getUserMedia) {
              window.navigator.mediaDevices.getUserMedia({
                audio: true
              }).then(s).catch(j);
            } else if (window.navigator.getUserMedia) {
              window.navigator.getUserMedia({
                audio: true
              }, s, j);
            } else {
              j();
            }
          } else {
            resolve();
          }
        });
      }
    }, {
      key: "isRecording",
      value: function isRecording() {
        return this._recorder && this._isRecording;
      }
    }, {
      key: "startRecord",
      value: function startRecord() {
        if (this._recorder) {
          this._recorder.clear();

          this._recorder.record();

          this._isRecording = true;
        }
      }
    }, {
      key: "stopRecord",
      value: function stopRecord() {
        if (this._recorder) {
          this._recorder.stop();

          this._isRecording = false;
        }
      }
    }, {
      key: "generateRecordSamples",
      value: function generateRecordSamples() {
        var _this2 = this;

        return new Promise(function (resolve) {
          if (_this2._recorder) {
            _this2._recorder.getBuffer(function (buffers) {
              resolve(buffers[0]);
            });
          }
        });
      }
    }, {
      key: "releaseRecord",
      value: function releaseRecord() {
        if (this._recorderStream && this._recorderStream.getTracks) {
          this._recorderStream.getTracks().forEach(function (track) {
            track.stop();
          });

          this._recorderStream = null;
        }

        if (this._recorder) {
          this._recorder.release();

          this._recorder = null;
        }
      }
    }], [{
      key: "isPlaySupported",
      value: function isPlaySupported() {
        return isSupport;
      }
    }, {
      key: "isRecordSupported",
      value: function isRecordSupported() {
        return !!(window.navigator.mediaDevices && window.navigator.mediaDevices.getUserMedia || window.navigator.getUserMedia);
      }
    }, {
      key: "getCtxSampleRate",
      value: function getCtxSampleRate() {
        return ctx && ctx.sampleRate || 0;
      }
    }, {
      key: "getCtxTime",
      value: function getCtxTime() {
        return ctx && ctx.currentTime || 0;
      }
    }, {
      key: "decodeAudioArrayBufferByContext",
      value: function decodeAudioArrayBufferByContext(array) {
        return new Promise(function (resolve, reject) {
          ctx['decodeAudioData'](array, function (audioBuf) {
            // 把多声道音频 mix 成单声道
            var numberOfChannels = audioBuf.numberOfChannels;
            var dest = new Float32Array(audioBuf.length);

            switch (numberOfChannels) {
              default:
              case 1:
                {
                  dest = audioBuf.getChannelData(0);
                  break;
                }

              case 2:
                {
                  var left = audioBuf.getChannelData(0);
                  var right = audioBuf.getChannelData(1);

                  for (var i = 0, l = dest.length; i < l; i++) {
                    dest[i] = .5 * (left[i] + right[i]);
                  }

                  break;
                }

              case 4:
                {
                  var _left = audioBuf.getChannelData(0);

                  var _right = audioBuf.getChannelData(1);

                  var sLeft = audioBuf.getChannelData(2);
                  var sRight = audioBuf.getChannelData(3);

                  for (var _i = 0, _l = dest.length; _i < _l; _i++) {
                    dest[_i] = .25 * (_left[_i] + _right[_i] + sLeft[_i] + sRight[_i]);
                  }

                  break;
                }

              case 6:
                {
                  var _left2 = audioBuf.getChannelData(0);

                  var _right2 = audioBuf.getChannelData(1);

                  var center = audioBuf.getChannelData(2);

                  var _sLeft = audioBuf.getChannelData(4);

                  var _sRight = audioBuf.getChannelData(5);

                  for (var _i2 = 0, _l2 = dest.length; _i2 < _l2; _i2++) {
                    dest[_i2] = 0.7071 * (_left2[_i2] + _right2[_i2]) + center[_i2] + 0.5 * (_sLeft[_i2] + _sRight[_i2]);
                  }

                  break;
                }
            }

            resolve(dest);
          }, reject);
        });
      }
      /*
      static _increaseSampleRate(samples, multiple) {
          let sampleLen = samples.length;
          let newSamples = new Float32Array(sampleLen * multiple);
          for (let i = 0; i < sampleLen; i ++) {
              for (let j = 0; j < multiple; j ++) {
                  newSamples[i * multiple + j] = samples[i];
              }
          }
          return newSamples;
      };
      */

    }]);

    return RecorderControl;
  }();

  var amrnb = function() {


  var AMR = (function () {
      var AMR = {
          toWAV: (function (amr) {
              var decoded = this._decode(amr);
              if (!decoded) {
                  return null
              }
              var raw = new Uint8Array(decoded.buffer, decoded.byteOffset, decoded.byteLength);
              var out = new Uint8Array(raw.length + this.WAV_HEADER_SIZE);
              var offset = 0;
              var write_int16 = (function (value) {
                  var a = new Uint8Array(2);
                  (new Int16Array(a.buffer))[0] = value;
                  out.set(a, offset);
                  offset += 2;
              });
              var write_int32 = (function (value) {
                  var a = new Uint8Array(4);
                  (new Int32Array(a.buffer))[0] = value;
                  out.set(a, offset);
                  offset += 4;
              });
              var write_string = (function (value) {
                  var d = (new TextEncoder("utf-8")).encode(value);
                  out.set(d, offset);
                  offset += d.length;
              });
              write_string("RIFF");
              write_int32(4 + 8 + 16 + 8 + raw.length);
              write_string("WAVEfmt ");
              write_int32(16);
              var bits_per_sample = 16;
              var sample_rate = 8e3;
              var channels = 1;
              var bytes_per_frame = bits_per_sample / 8 * channels;
              var bytes_per_sec = bytes_per_frame * sample_rate;
              write_int16(1);
              write_int16(1);
              write_int32(sample_rate);
              write_int32(bytes_per_sec);
              write_int16(bytes_per_frame);
              write_int16(bits_per_sample);
              write_string("data");
              write_int32(raw.length);
              out.set(raw, offset);
              return out
          }),
          decode: (function (amr) {
              var raw = this._decode(amr);
              if (!raw) {
                  return null
              }
              var out = new Float32Array(raw.length);
              for (var i = 0; i < out.length; i++) {
                  out[i] = raw[i] / 32768;
              }
              return out
          }),
          _decode: (function (amr) {
              if (String.fromCharCode.apply(null, amr.subarray(0, this.AMR_HEADER.length)) !== this.AMR_HEADER) {
                  return null
              }
              var decoder = this.Decoder_Interface_init();
              if (!decoder) {
                  return null
              }
              var out = new Int16Array(Math.floor(amr.length / 6 * this.PCM_BUFFER_COUNT));
              var buf = Module._malloc(this.AMR_BUFFER_COUNT);
              var decodeInBuffer = new Uint8Array(Module.HEAPU8.buffer, buf, this.AMR_BUFFER_COUNT);
              buf = Module._malloc(this.PCM_BUFFER_COUNT * 2);
              var decodeOutBuffer = new Int16Array(Module.HEAPU8.buffer, buf, this.PCM_BUFFER_COUNT);
              var inOffset = 6;
              var outOffset = 0;
              while (inOffset + 1 < amr.length && outOffset + 1 < out.length) {
                  var size = this.SIZES[amr[inOffset] >> 3 & 15];
                  if (inOffset + size + 1 > amr.length) {
                      break
                  }
                  decodeInBuffer.set(amr.subarray(inOffset, inOffset + size + 1));
                  this.Decoder_Interface_Decode(decoder, decodeInBuffer.byteOffset, decodeOutBuffer.byteOffset, 0);
                  if (outOffset + this.PCM_BUFFER_COUNT > out.length) {
                      var newOut = new Int16Array(out.length * 2);
                      newOut.set(out.subarray(0, outOffset));
                      out = newOut;
                  }
                  out.set(decodeOutBuffer, outOffset);
                  outOffset += this.PCM_BUFFER_COUNT;
                  inOffset += size + 1;
              }
              Module._free(decodeInBuffer.byteOffset);
              Module._free(decodeOutBuffer.byteOffset);
              this.Decoder_Interface_exit(decoder);
              return out.subarray(0, outOffset)
          }),
          encode: (function (pcm, pcmSampleRate, mode) {
              if (pcmSampleRate < 8e3) {
                  console.error("pcmSampleRate should not be less than 8000.");
                  return null
              }
              if (typeof mode === "undefined") {
                  mode = this.Mode.MR795;
              }
              var encoder = this.Encoder_Interface_init();
              if (!encoder) {
                  return null
              }
              var buf = Module._malloc(this.PCM_BUFFER_COUNT * 2);
              var encodeInBuffer = new Int16Array(Module.HEAPU8.buffer, buf, this.PCM_BUFFER_COUNT);
              buf = Module._malloc(this.AMR_BUFFER_COUNT);
              var encodeOutBuffer = new Uint8Array(Module.HEAPU8.buffer, buf, this.AMR_BUFFER_COUNT);
              var ratio = pcmSampleRate / 8e3;
              var inLength = Math.floor(pcm.length / ratio);
              var inData = new Int16Array(inLength);
              for (var i = 0; i < inLength; i++) {
                  inData[i] = pcm[Math.floor(i * ratio)] * (32768 - 1);
              }
              var blockSize = this.SIZES[mode] + 1;
              var out = new Uint8Array(Math.ceil(inLength / this.PCM_BUFFER_COUNT * blockSize) + this.AMR_HEADER.length);
              out.set((new TextEncoder("utf-8")).encode(this.AMR_HEADER));
              var inOffset = 0;
              var outOffset = this.AMR_HEADER.length;
              while (inOffset + this.PCM_BUFFER_COUNT < inData.length && outOffset + blockSize < out.length) {
                  encodeInBuffer.set(inData.subarray(inOffset, inOffset + this.PCM_BUFFER_COUNT));
                  var n = this.Encoder_Interface_Encode(encoder, mode, encodeInBuffer.byteOffset, encodeOutBuffer.byteOffset, 0);
                  if (n != blockSize) {
                      console.error([n, blockSize]);
                      break
                  }
                  out.set(encodeOutBuffer.subarray(0, n), outOffset);
                  inOffset += this.PCM_BUFFER_COUNT;
                  outOffset += n;
              }
              Module._free(encodeInBuffer.byteOffset);
              Module._free(encodeOutBuffer.byteOffset);
              this.Encoder_Interface_exit(encoder);
              return out.subarray(0, outOffset)
          }),
          Decoder_Interface_init: (function () {
              console.warn("Decoder_Interface_init not initialized.");
              return 0
          }),
          Decoder_Interface_exit: (function (state) {
              console.warn("Decoder_Interface_exit not initialized.");
          }),
          Decoder_Interface_Decode: (function (state, inBuffer, outBuffer, bfi) {
              console.warn("Decoder_Interface_Decode not initialized.");
          }),
          Encoder_Interface_init: (function (dtx) {
              console.warn("Encoder_Interface_init not initialized.");
              return 0
          }),
          Encoder_Interface_exit: (function (state) {
              console.warn("Encoder_Interface_exit not initialized.");
          }),
          Encoder_Interface_Encode: (function (state, mode, speech, out, forceSpeech) {
              console.warn("Encoder_Interface_Encode not initialized.");
          }),
          Mode: {MR475: 0, MR515: 1, MR59: 2, MR67: 3, MR74: 4, MR795: 5, MR102: 6, MR122: 7, MRDTX: 8},
          SIZES: [12, 13, 15, 17, 19, 20, 26, 31, 5, 6, 5, 5, 0, 0, 0, 0],
          AMR_BUFFER_COUNT: 32,
          PCM_BUFFER_COUNT: 160,
          AMR_HEADER: "#!AMR\n",
          WAV_HEADER_SIZE: 44
      };
      var Module = {
          canvas: {}, print: (function (text) {
              console.log(text);
          }), _main: (function () {
              AMR.Decoder_Interface_init = Module._Decoder_Interface_init;
              AMR.Decoder_Interface_exit = Module._Decoder_Interface_exit;
              AMR.Decoder_Interface_Decode = Module._Decoder_Interface_Decode;
              AMR.Encoder_Interface_init = Module._Encoder_Interface_init;
              AMR.Encoder_Interface_exit = Module._Encoder_Interface_exit;
              AMR.Encoder_Interface_Encode = Module._Encoder_Interface_Encode;
              return 0
          })
      };
      var Module;
      if (!Module) Module = (typeof Module !== "undefined" ? Module : null) || {};
      var moduleOverrides = {};
      for (var key in Module) {
          if (Module.hasOwnProperty(key)) {
              moduleOverrides[key] = Module[key];
          }
      }
      var ENVIRONMENT_IS_WEB = typeof window === "object";
      var ENVIRONMENT_IS_WORKER = typeof importScripts === "function";
      var ENVIRONMENT_IS_NODE = false;/*typeof process === "object" && typeof require === "function" && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;*/
      var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
      if (ENVIRONMENT_IS_SHELL) {
          if (!Module["print"]) Module["print"] = print;
          if (typeof printErr != "undefined") Module["printErr"] = printErr;
          if (typeof read != "undefined") {
              Module["read"] = read;
          } else {
              Module["read"] = function read() {
                  throw "no read() available (jsc?)"
              };
          }
          Module["readBinary"] = function readBinary(f) {
              if (typeof readbuffer === "function") {
                  return new Uint8Array(readbuffer(f))
              }
              var data = read(f, "binary");
              assert(typeof data === "object");
              return data
          };
          if (typeof scriptArgs != "undefined") {
              Module["arguments"] = scriptArgs;
          } else if (typeof arguments != "undefined") {
              Module["arguments"] = arguments;
          }
      } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
          Module["read"] = function read(url) {
              var xhr = new XMLHttpRequest;
              xhr.open("GET", url, false);
              xhr.send(null);
              return xhr.responseText
          };
          if (typeof arguments != "undefined") {
              Module["arguments"] = arguments;
          }
          if (typeof console !== "undefined") {
              if (!Module["print"]) Module["print"] = function print(x) {
                  console.log(x);
              };
              if (!Module["printErr"]) Module["printErr"] = function printErr(x) {
                  console.log(x);
              };
          } else {
              var TRY_USE_DUMP = false;
              if (!Module["print"]) Module["print"] = TRY_USE_DUMP && typeof dump !== "undefined" ? (function (x) {
                  dump(x);
              }) : (function (x) {
              });
          }
          if (ENVIRONMENT_IS_WORKER) {
              Module["load"] = importScripts;
          }
          if (typeof Module["setWindowTitle"] === "undefined") {
              Module["setWindowTitle"] = (function (title) {
                  document.title = title;
              });
          }
      } else {
          throw "Unknown runtime environment. Where are we?"
      }

      function globalEval(x) {
          eval.call(null, x);
      }

      if (!Module["load"] && Module["read"]) {
          Module["load"] = function load(f) {
              globalEval(Module["read"](f));
          };
      }
      if (!Module["print"]) {
          Module["print"] = (function () {
          });
      }
      if (!Module["printErr"]) {
          Module["printErr"] = Module["print"];
      }
      if (!Module["arguments"]) {
          Module["arguments"] = [];
      }
      if (!Module["thisProgram"]) {
          Module["thisProgram"] = "./this.program";
      }
      Module.print = Module["print"];
      Module.printErr = Module["printErr"];
      Module["preRun"] = [];
      Module["postRun"] = [];
      for (var key in moduleOverrides) {
          if (moduleOverrides.hasOwnProperty(key)) {
              Module[key] = moduleOverrides[key];
          }
      }
      var Runtime = {
          setTempRet0: (function (value) {
              tempRet0 = value;
          }), getTempRet0: (function () {
              return tempRet0
          }), stackSave: (function () {
              return STACKTOP
          }), stackRestore: (function (stackTop) {
              STACKTOP = stackTop;
          }), getNativeTypeSize: (function (type) {
              switch (type) {
                  case"i1":
                  case"i8":
                      return 1;
                  case"i16":
                      return 2;
                  case"i32":
                      return 4;
                  case"i64":
                      return 8;
                  case"float":
                      return 4;
                  case"double":
                      return 8;
                  default: {
                      if (type[type.length - 1] === "*") {
                          return Runtime.QUANTUM_SIZE
                      } else if (type[0] === "i") {
                          var bits = parseInt(type.substr(1));
                          assert(bits % 8 === 0);
                          return bits / 8
                      } else {
                          return 0
                      }
                  }
              }
          }), getNativeFieldSize: (function (type) {
              return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE)
          }), STACK_ALIGN: 16, prepVararg: (function (ptr, type) {
              if (type === "double" || type === "i64") {
                  if (ptr & 7) {
                      assert((ptr & 7) === 4);
                      ptr += 4;
                  }
              } else {
                  assert((ptr & 3) === 0);
              }
              return ptr
          }), getAlignSize: (function (type, size, vararg) {
              if (!vararg && (type == "i64" || type == "double")) return 8;
              if (!type) return Math.min(size, 8);
              return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE)
          }), dynCall: (function (sig, ptr, args) {
              if (args && args.length) {
                  if (!args.splice) args = Array.prototype.slice.call(args);
                  args.splice(0, 0, ptr);
                  return Module["dynCall_" + sig].apply(null, args)
              } else {
                  return Module["dynCall_" + sig].call(null, ptr)
              }
          }), functionPointers: [], addFunction: (function (func) {
              for (var i = 0; i < Runtime.functionPointers.length; i++) {
                  if (!Runtime.functionPointers[i]) {
                      Runtime.functionPointers[i] = func;
                      return 2 * (1 + i)
                  }
              }
              throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."
          }), removeFunction: (function (index) {
              Runtime.functionPointers[(index - 2) / 2] = null;
          }), warnOnce: (function (text) {
              if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
              if (!Runtime.warnOnce.shown[text]) {
                  Runtime.warnOnce.shown[text] = 1;
                  Module.printErr(text);
              }
          }), funcWrappers: {}, getFuncWrapper: (function (func, sig) {
              assert(sig);
              if (!Runtime.funcWrappers[sig]) {
                  Runtime.funcWrappers[sig] = {};
              }
              var sigCache = Runtime.funcWrappers[sig];
              if (!sigCache[func]) {
                  sigCache[func] = function dynCall_wrapper() {
                      return Runtime.dynCall(sig, func, arguments)
                  };
              }
              return sigCache[func]
          }), getCompilerSetting: (function (name) {
              throw "You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"
          }), stackAlloc: (function (size) {
              var ret = STACKTOP;
              STACKTOP = STACKTOP + size | 0;
              STACKTOP = STACKTOP + 15 & -16;
              return ret
          }), staticAlloc: (function (size) {
              var ret = STATICTOP;
              STATICTOP = STATICTOP + size | 0;
              STATICTOP = STATICTOP + 15 & -16;
              return ret
          }), dynamicAlloc: (function (size) {
              var ret = DYNAMICTOP;
              DYNAMICTOP = DYNAMICTOP + size | 0;
              DYNAMICTOP = DYNAMICTOP + 15 & -16;
              if (DYNAMICTOP >= TOTAL_MEMORY) {
                  var success = enlargeMemory();
                  if (!success) {
                      DYNAMICTOP = ret;
                      return 0
                  }
              }
              return ret
          }), alignMemory: (function (size, quantum) {
              var ret = size = Math.ceil(size / (quantum ? quantum : 16)) * (quantum ? quantum : 16);
              return ret
          }), makeBigInt: (function (low, high, unsigned) {
              var ret = unsigned ? +(low >>> 0) + +(high >>> 0) * +4294967296 : +(low >>> 0) + +(high | 0) * +4294967296;
              return ret
          }), GLOBAL_BASE: 8, QUANTUM_SIZE: 4, __dummy__: 0
      };
      Module["Runtime"] = Runtime;
      var ABORT = false;
      var tempDouble;
      var tempI64;
      var tempRet0;

      function assert(condition, text) {
          if (!condition) {
              abort("Assertion failed: " + text);
          }
      }

      function getCFunc(ident) {
          var func = Module["_" + ident];
          if (!func) {
              try {
                  func = [eval][0]("_" + ident);
              } catch (e) {
              }
          }
          assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)");
          return func
      }

      var cwrap, ccall;
      ((function () {
          var JSfuncs = {
              "stackSave": (function () {
                  Runtime.stackSave();
              }), "stackRestore": (function () {
                  Runtime.stackRestore();
              }), "arrayToC": (function (arr) {
                  var ret = Runtime.stackAlloc(arr.length);
                  writeArrayToMemory(arr, ret);
                  return ret
              }), "stringToC": (function (str) {
                  var ret = 0;
                  if (str !== null && str !== undefined && str !== 0) {
                      ret = Runtime.stackAlloc((str.length << 2) + 1);
                      writeStringToMemory(str, ret);
                  }
                  return ret
              })
          };
          var toC = {"string": JSfuncs["stringToC"], "array": JSfuncs["arrayToC"]};
          ccall = function ccallFunc(ident, returnType, argTypes, args, opts) {
              var func = getCFunc(ident);
              var cArgs = [];
              var stack = 0;
              if (args) {
                  for (var i = 0; i < args.length; i++) {
                      var converter = toC[argTypes[i]];
                      if (converter) {
                          if (stack === 0) stack = Runtime.stackSave();
                          cArgs[i] = converter(args[i]);
                      } else {
                          cArgs[i] = args[i];
                      }
                  }
              }
              var ret = func.apply(null, cArgs);
              if (returnType === "string") ret = Pointer_stringify(ret);
              if (stack !== 0) {
                  if (opts && opts.async) {
                      EmterpreterAsync.asyncFinalizers.push((function () {
                          Runtime.stackRestore(stack);
                      }));
                      return
                  }
                  Runtime.stackRestore(stack);
              }
              return ret
          };
          var sourceRegex = /^function\s\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;

          function parseJSFunc(jsfunc) {
              // Match the body and the return value of a javascript function source
              var parsed = jsfunc.toString().match(sourceRegex);
              if (!parsed) { return {}; }
              parsed = parsed.slice(1);
              return {arguments: parsed[0], body: parsed[1], returnValue: parsed[2]}
          }

          var JSsource = {};
          for (var fun in JSfuncs) {
              if (JSfuncs.hasOwnProperty(fun)) {
                  JSsource[fun] = parseJSFunc(JSfuncs[fun]);
              }
          }
          cwrap = function cwrap(ident, returnType, argTypes) {
              argTypes = argTypes || [];
              var cfunc = getCFunc(ident);
              var numericArgs = argTypes.every((function (type) {
                  return type === "number"
              }));
              var numericRet = returnType !== "string";
              if (numericRet && numericArgs) {
                  return cfunc
              }
              var argNames = argTypes.map((function (x, i) {
                  return "$" + i
              }));
              var funcstr = "(function(" + argNames.join(",") + ") {";
              var nargs = argTypes.length;
              if (!numericArgs) {
                  funcstr += "var stack = " + JSsource["stackSave"].body + ";";
                  for (var i = 0; i < nargs; i++) {
                      var arg = argNames[i], type = argTypes[i];
                      if (type === "number") continue;
                      var convertCode = JSsource[type + "ToC"];
                      funcstr += "var " + convertCode.arguments + " = " + arg + ";";
                      funcstr += convertCode.body + ";";
                      funcstr += arg + "=" + convertCode.returnValue + ";";
                  }
              }
              var cfuncname = parseJSFunc((function () {
                  return cfunc
              })).returnValue;
              funcstr += "var ret = " + cfuncname + "(" + argNames.join(",") + ");";
              if (!numericRet) {
                  var strgfy = parseJSFunc((function () {
                      return Pointer_stringify
                  })).returnValue;
                  funcstr += "ret = " + strgfy + "(ret);";
              }
              if (!numericArgs) {
                  funcstr += JSsource["stackRestore"].body.replace("()", "(stack)") + ";";
              }
              funcstr += "return ret})";
              return [eval][0](funcstr)
          };
      }))();
      Module["ccall"] = ccall;
      Module["cwrap"] = cwrap;

      function setValue(ptr, value, type, noSafe) {
          type = type || "i8";
          if (type.charAt(type.length - 1) === "*") type = "i32";
          switch (type) {
              case"i1":
                  HEAP8[ptr >> 0] = value;
                  break;
              case"i8":
                  HEAP8[ptr >> 0] = value;
                  break;
              case"i16":
                  HEAP16[ptr >> 1] = value;
                  break;
              case"i32":
                  HEAP32[ptr >> 2] = value;
                  break;
              case"i64":
                  tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
                  break;
              case"float":
                  HEAPF32[ptr >> 2] = value;
                  break;
              case"double":
                  HEAPF64[ptr >> 3] = value;
                  break;
              default:
                  abort("invalid type for setValue: " + type);
          }
      }

      Module["setValue"] = setValue;

      function getValue(ptr, type, noSafe) {
          type = type || "i8";
          if (type.charAt(type.length - 1) === "*") type = "i32";
          switch (type) {
              case"i1":
                  return HEAP8[ptr >> 0];
              case"i8":
                  return HEAP8[ptr >> 0];
              case"i16":
                  return HEAP16[ptr >> 1];
              case"i32":
                  return HEAP32[ptr >> 2];
              case"i64":
                  return HEAP32[ptr >> 2];
              case"float":
                  return HEAPF32[ptr >> 2];
              case"double":
                  return HEAPF64[ptr >> 3];
              default:
                  abort("invalid type for setValue: " + type);
          }
          return null
      }

      Module["getValue"] = getValue;
      var ALLOC_NORMAL = 0;
      var ALLOC_STACK = 1;
      var ALLOC_STATIC = 2;
      var ALLOC_DYNAMIC = 3;
      var ALLOC_NONE = 4;
      Module["ALLOC_NORMAL"] = ALLOC_NORMAL;
      Module["ALLOC_STACK"] = ALLOC_STACK;
      Module["ALLOC_STATIC"] = ALLOC_STATIC;
      Module["ALLOC_DYNAMIC"] = ALLOC_DYNAMIC;
      Module["ALLOC_NONE"] = ALLOC_NONE;

      function allocate(slab, types, allocator, ptr) {
          var zeroinit, size;
          if (typeof slab === "number") {
              zeroinit = true;
              size = slab;
          } else {
              zeroinit = false;
              size = slab.length;
          }
          var singleType = typeof types === "string" ? types : null;
          var ret;
          if (allocator == ALLOC_NONE) {
              ret = ptr;
          } else {
              ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
          }
          if (zeroinit) {
              var ptr = ret, stop;
              assert((ret & 3) == 0);
              stop = ret + (size & ~3);
              for (; ptr < stop; ptr += 4) {
                  HEAP32[ptr >> 2] = 0;
              }
              stop = ret + size;
              while (ptr < stop) {
                  HEAP8[ptr++ >> 0] = 0;
              }
              return ret
          }
          if (singleType === "i8") {
              if (slab.subarray || slab.slice) {
                  HEAPU8.set(slab, ret);
              } else {
                  HEAPU8.set(new Uint8Array(slab), ret);
              }
              return ret
          }
          var i = 0, type, typeSize, previousType;
          while (i < size) {
              var curr = slab[i];
              if (typeof curr === "function") {
                  curr = Runtime.getFunctionIndex(curr);
              }
              type = singleType || types[i];
              if (type === 0) {
                  i++;
                  continue
              }
              if (type == "i64") type = "i32";
              setValue(ret + i, curr, type);
              if (previousType !== type) {
                  typeSize = Runtime.getNativeTypeSize(type);
                  previousType = type;
              }
              i += typeSize;
          }
          return ret
      }

      Module["allocate"] = allocate;

      function getMemory(size) {
          if (!staticSealed) return Runtime.staticAlloc(size);
          if (typeof _sbrk !== "undefined" && !_sbrk.called || !runtimeInitialized) return Runtime.dynamicAlloc(size);
          return _malloc(size)
      }

      Module["getMemory"] = getMemory;

      function Pointer_stringify(ptr, length) {
          if (length === 0 || !ptr) return "";
          var hasUtf = 0;
          var t;
          var i = 0;
          while (1) {
              t = HEAPU8[ptr + i >> 0];
              hasUtf |= t;
              if (t == 0 && !length) break;
              i++;
              if (length && i == length) break
          }
          if (!length) length = i;
          var ret = "";
          if (hasUtf < 128) {
              var MAX_CHUNK = 1024;
              var curr;
              while (length > 0) {
                  curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
                  ret = ret ? ret + curr : curr;
                  ptr += MAX_CHUNK;
                  length -= MAX_CHUNK;
              }
              return ret
          }
          return Module["UTF8ToString"](ptr)
      }

      Module["Pointer_stringify"] = Pointer_stringify;

      function AsciiToString(ptr) {
          var str = "";
          while (1) {
              var ch = HEAP8[ptr++ >> 0];
              if (!ch) return str;
              str += String.fromCharCode(ch);
          }
      }

      Module["AsciiToString"] = AsciiToString;

      function stringToAscii(str, outPtr) {
          return writeAsciiToMemory(str, outPtr, false)
      }

      Module["stringToAscii"] = stringToAscii;

      function UTF8ArrayToString(u8Array, idx) {
          var u0, u1, u2, u3, u4, u5;
          var str = "";
          while (1) {
              u0 = u8Array[idx++];
              if (!u0) return str;
              if (!(u0 & 128)) {
                  str += String.fromCharCode(u0);
                  continue
              }
              u1 = u8Array[idx++] & 63;
              if ((u0 & 224) == 192) {
                  str += String.fromCharCode((u0 & 31) << 6 | u1);
                  continue
              }
              u2 = u8Array[idx++] & 63;
              if ((u0 & 240) == 224) {
                  u0 = (u0 & 15) << 12 | u1 << 6 | u2;
              } else {
                  u3 = u8Array[idx++] & 63;
                  if ((u0 & 248) == 240) {
                      u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u3;
                  } else {
                      u4 = u8Array[idx++] & 63;
                      if ((u0 & 252) == 248) {
                          u0 = (u0 & 3) << 24 | u1 << 18 | u2 << 12 | u3 << 6 | u4;
                      } else {
                          u5 = u8Array[idx++] & 63;
                          u0 = (u0 & 1) << 30 | u1 << 24 | u2 << 18 | u3 << 12 | u4 << 6 | u5;
                      }
                  }
              }
              if (u0 < 65536) {
                  str += String.fromCharCode(u0);
              } else {
                  var ch = u0 - 65536;
                  str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
              }
          }
      }

      Module["UTF8ArrayToString"] = UTF8ArrayToString;

      function UTF8ToString(ptr) {
          return UTF8ArrayToString(HEAPU8, ptr)
      }

      Module["UTF8ToString"] = UTF8ToString;

      function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
          if (!(maxBytesToWrite > 0)) return 0;
          var startIdx = outIdx;
          var endIdx = outIdx + maxBytesToWrite - 1;
          for (var i = 0; i < str.length; ++i) {
              var u = str.charCodeAt(i);
              if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
              if (u <= 127) {
                  if (outIdx >= endIdx) break;
                  outU8Array[outIdx++] = u;
              } else if (u <= 2047) {
                  if (outIdx + 1 >= endIdx) break;
                  outU8Array[outIdx++] = 192 | u >> 6;
                  outU8Array[outIdx++] = 128 | u & 63;
              } else if (u <= 65535) {
                  if (outIdx + 2 >= endIdx) break;
                  outU8Array[outIdx++] = 224 | u >> 12;
                  outU8Array[outIdx++] = 128 | u >> 6 & 63;
                  outU8Array[outIdx++] = 128 | u & 63;
              } else if (u <= 2097151) {
                  if (outIdx + 3 >= endIdx) break;
                  outU8Array[outIdx++] = 240 | u >> 18;
                  outU8Array[outIdx++] = 128 | u >> 12 & 63;
                  outU8Array[outIdx++] = 128 | u >> 6 & 63;
                  outU8Array[outIdx++] = 128 | u & 63;
              } else if (u <= 67108863) {
                  if (outIdx + 4 >= endIdx) break;
                  outU8Array[outIdx++] = 248 | u >> 24;
                  outU8Array[outIdx++] = 128 | u >> 18 & 63;
                  outU8Array[outIdx++] = 128 | u >> 12 & 63;
                  outU8Array[outIdx++] = 128 | u >> 6 & 63;
                  outU8Array[outIdx++] = 128 | u & 63;
              } else {
                  if (outIdx + 5 >= endIdx) break;
                  outU8Array[outIdx++] = 252 | u >> 30;
                  outU8Array[outIdx++] = 128 | u >> 24 & 63;
                  outU8Array[outIdx++] = 128 | u >> 18 & 63;
                  outU8Array[outIdx++] = 128 | u >> 12 & 63;
                  outU8Array[outIdx++] = 128 | u >> 6 & 63;
                  outU8Array[outIdx++] = 128 | u & 63;
              }
          }
          outU8Array[outIdx] = 0;
          return outIdx - startIdx
      }

      Module["stringToUTF8Array"] = stringToUTF8Array;

      function stringToUTF8(str, outPtr, maxBytesToWrite) {
          return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
      }

      Module["stringToUTF8"] = stringToUTF8;

      function lengthBytesUTF8(str) {
          var len = 0;
          for (var i = 0; i < str.length; ++i) {
              var u = str.charCodeAt(i);
              if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
              if (u <= 127) {
                  ++len;
              } else if (u <= 2047) {
                  len += 2;
              } else if (u <= 65535) {
                  len += 3;
              } else if (u <= 2097151) {
                  len += 4;
              } else if (u <= 67108863) {
                  len += 5;
              } else {
                  len += 6;
              }
          }
          return len
      }

      Module["lengthBytesUTF8"] = lengthBytesUTF8;

      function UTF16ToString(ptr) {
          var i = 0;
          var str = "";
          while (1) {
              var codeUnit = HEAP16[ptr + i * 2 >> 1];
              if (codeUnit == 0) return str;
              ++i;
              str += String.fromCharCode(codeUnit);
          }
      }

      Module["UTF16ToString"] = UTF16ToString;

      function stringToUTF16(str, outPtr, maxBytesToWrite) {
          if (maxBytesToWrite === undefined) {
              maxBytesToWrite = 2147483647;
          }
          if (maxBytesToWrite < 2) return 0;
          maxBytesToWrite -= 2;
          var startPtr = outPtr;
          var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;
          for (var i = 0; i < numCharsToWrite; ++i) {
              var codeUnit = str.charCodeAt(i);
              HEAP16[outPtr >> 1] = codeUnit;
              outPtr += 2;
          }
          HEAP16[outPtr >> 1] = 0;
          return outPtr - startPtr
      }

      Module["stringToUTF16"] = stringToUTF16;

      function lengthBytesUTF16(str) {
          return str.length * 2
      }

      Module["lengthBytesUTF16"] = lengthBytesUTF16;

      function UTF32ToString(ptr) {
          var i = 0;
          var str = "";
          while (1) {
              var utf32 = HEAP32[ptr + i * 4 >> 2];
              if (utf32 == 0) return str;
              ++i;
              if (utf32 >= 65536) {
                  var ch = utf32 - 65536;
                  str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
              } else {
                  str += String.fromCharCode(utf32);
              }
          }
      }

      Module["UTF32ToString"] = UTF32ToString;

      function stringToUTF32(str, outPtr, maxBytesToWrite) {
          if (maxBytesToWrite === undefined) {
              maxBytesToWrite = 2147483647;
          }
          if (maxBytesToWrite < 4) return 0;
          var startPtr = outPtr;
          var endPtr = startPtr + maxBytesToWrite - 4;
          for (var i = 0; i < str.length; ++i) {
              var codeUnit = str.charCodeAt(i);
              if (codeUnit >= 55296 && codeUnit <= 57343) {
                  var trailSurrogate = str.charCodeAt(++i);
                  codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023;
              }
              HEAP32[outPtr >> 2] = codeUnit;
              outPtr += 4;
              if (outPtr + 4 > endPtr) break
          }
          HEAP32[outPtr >> 2] = 0;
          return outPtr - startPtr
      }

      Module["stringToUTF32"] = stringToUTF32;

      function lengthBytesUTF32(str) {
          var len = 0;
          for (var i = 0; i < str.length; ++i) {
              var codeUnit = str.charCodeAt(i);
              if (codeUnit >= 55296 && codeUnit <= 57343) ++i;
              len += 4;
          }
          return len
      }

      Module["lengthBytesUTF32"] = lengthBytesUTF32;

      function demangle(func) {
          var hasLibcxxabi = !!Module["___cxa_demangle"];
          if (hasLibcxxabi) {
              try {
                  var buf = _malloc(func.length);
                  writeStringToMemory(func.substr(1), buf);
                  var status = _malloc(4);
                  var ret = Module["___cxa_demangle"](buf, 0, 0, status);
                  if (getValue(status, "i32") === 0 && ret) {
                      return Pointer_stringify(ret)
                  }
              } catch (e) {
              } finally {
                  if (buf) _free(buf);
                  if (status) _free(status);
                  if (ret) _free(ret);
              }
          }
          var i = 3;
          var basicTypes = {
              "v": "void",
              "b": "bool",
              "c": "char",
              "s": "short",
              "i": "int",
              "l": "long",
              "f": "float",
              "d": "double",
              "w": "wchar_t",
              "a": "signed char",
              "h": "unsigned char",
              "t": "unsigned short",
              "j": "unsigned int",
              "m": "unsigned long",
              "x": "long long",
              "y": "unsigned long long",
              "z": "..."
          };
          var subs = [];
          var first = true;

          function parseNested() {
              i++;
              if (func[i] === "K") i++;
              var parts = [];
              while (func[i] !== "E") {
                  if (func[i] === "S") {
                      i++;
                      var next = func.indexOf("_", i);
                      var num = func.substring(i, next) || 0;
                      parts.push(subs[num] || "?");
                      i = next + 1;
                      continue
                  }
                  if (func[i] === "C") {
                      parts.push(parts[parts.length - 1]);
                      i += 2;
                      continue
                  }
                  var size = parseInt(func.substr(i));
                  var pre = size.toString().length;
                  if (!size || !pre) {
                      i--;
                      break
                  }
                  var curr = func.substr(i + pre, size);
                  parts.push(curr);
                  subs.push(curr);
                  i += pre + size;
              }
              i++;
              return parts
          }

          function parse(rawList, limit, allowVoid) {
              limit = limit || Infinity;
              var ret = "", list = [];

              function flushList() {
                  return "(" + list.join(", ") + ")"
              }

              var name;
              if (func[i] === "N") {
                  name = parseNested().join("::");
                  limit--;
                  if (limit === 0) return rawList ? [name] : name
              } else {
                  if (func[i] === "K" || first && func[i] === "L") i++;
                  var size = parseInt(func.substr(i));
                  if (size) {
                      var pre = size.toString().length;
                      name = func.substr(i + pre, size);
                      i += pre + size;
                  }
              }
              first = false;
              if (func[i] === "I") {
                  i++;
                  var iList = parse(true);
                  var iRet = parse(true, 1, true);
                  ret += iRet[0] + " " + name + "<" + iList.join(", ") + ">";
              } else {
                  ret = name;
              }
              paramLoop:while (i < func.length && limit-- > 0) {
                  var c = func[i++];
                  if (c in basicTypes) {
                      list.push(basicTypes[c]);
                  } else {
                      switch (c) {
                          case"P":
                              list.push(parse(true, 1, true)[0] + "*");
                              break;
                          case"R":
                              list.push(parse(true, 1, true)[0] + "&");
                              break;
                          case"L": {
                              i++;
                              var end = func.indexOf("E", i);
                              var size = end - i;
                              list.push(func.substr(i, size));
                              i += size + 2;
                              break
                          }
                          case"A": {
                              var size = parseInt(func.substr(i));
                              i += size.toString().length;
                              if (func[i] !== "_") throw "?";
                              i++;
                              list.push(parse(true, 1, true)[0] + " [" + size + "]");
                              break
                          }
                          case"E":
                              break paramLoop;
                          default:
                              ret += "?" + c;
                              break paramLoop
                      }
                  }
              }
              if (!allowVoid && list.length === 1 && list[0] === "void") list = [];
              if (rawList) {
                  if (ret) {
                      list.push(ret + "?");
                  }
                  return list
              } else {
                  return ret + flushList()
              }
          }

          var parsed = func;
          try {
              if (func == "Object._main" || func == "_main") {
                  return "main()"
              }
              if (typeof func === "number") func = Pointer_stringify(func);
              if (func[0] !== "_") return func;
              if (func[1] !== "_") return func;
              if (func[2] !== "Z") return func;
              switch (func[3]) {
                  case"n":
                      return "operator new()";
                  case"d":
                      return "operator delete()"
              }
              parsed = parse();
          } catch (e) {
              parsed += "?";
          }
          if (parsed.indexOf("?") >= 0 && !hasLibcxxabi) {
              Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling");
          }
          return parsed
      }

      function demangleAll(text) {
          return text.replace(/__Z[\w\d_]+/g, (function (x) {
              var y = demangle(x);
              return x === y ? x : x + " [" + y + "]"
          }))
      }

      function jsStackTrace() {
          var err = new Error;
          if (!err.stack) {
              try {
                  throw new Error(0)
              } catch (e) {
                  err = e;
              }
              if (!err.stack) {
                  return "(no stack trace available)"
              }
          }
          return err.stack.toString()
      }

      function stackTrace() {
          return demangleAll(jsStackTrace())
      }

      Module["stackTrace"] = stackTrace;
      var PAGE_SIZE = 4096;

      function alignMemoryPage(x) {
          if (x % 4096 > 0) {
              x += 4096 - x % 4096;
          }
          return x
      }

      var HEAP;
      var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
      var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false;
      var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0;
      var DYNAMIC_BASE = 0, DYNAMICTOP = 0;

      function enlargeMemory() {
          abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " + TOTAL_MEMORY + ", (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.");
      }

      var TOTAL_STACK = Module["TOTAL_STACK"] || 65536;
      var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 524288;
      var totalMemory = 64 * 1024;
      while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) {
          if (totalMemory < 16 * 1024 * 1024) {
              totalMemory *= 2;
          } else {
              totalMemory += 16 * 1024 * 1024;
          }
      }
      if (totalMemory !== TOTAL_MEMORY) {
          Module.printErr("increasing TOTAL_MEMORY to " + totalMemory + " to be compliant with the asm.js spec (and given that TOTAL_STACK=" + TOTAL_STACK + ")");
          TOTAL_MEMORY = totalMemory;
      }
      assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && !!(new Int32Array(1))["subarray"] && !!(new Int32Array(1))["set"], "JS engine does not provide full typed array support");
      var buffer;
      buffer = new ArrayBuffer(TOTAL_MEMORY);
      HEAP8 = new Int8Array(buffer);
      HEAP16 = new Int16Array(buffer);
      HEAP32 = new Int32Array(buffer);
      HEAPU8 = new Uint8Array(buffer);
      HEAPU16 = new Uint16Array(buffer);
      HEAPU32 = new Uint32Array(buffer);
      HEAPF32 = new Float32Array(buffer);
      HEAPF64 = new Float64Array(buffer);
      HEAP32[0] = 255;
      assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, "Typed arrays 2 must be run on a little-endian system");
      Module["HEAP"] = HEAP;
      Module["buffer"] = buffer;
      Module["HEAP8"] = HEAP8;
      Module["HEAP16"] = HEAP16;
      Module["HEAP32"] = HEAP32;
      Module["HEAPU8"] = HEAPU8;
      Module["HEAPU16"] = HEAPU16;
      Module["HEAPU32"] = HEAPU32;
      Module["HEAPF32"] = HEAPF32;
      Module["HEAPF64"] = HEAPF64;

      function callRuntimeCallbacks(callbacks) {
          while (callbacks.length > 0) {
              var callback = callbacks.shift();
              if (typeof callback == "function") {
                  callback();
                  continue
              }
              var func = callback.func;
              if (typeof func === "number") {
                  if (callback.arg === undefined) {
                      Runtime.dynCall("v", func);
                  } else {
                      Runtime.dynCall("vi", func, [callback.arg]);
                  }
              } else {
                  func(callback.arg === undefined ? null : callback.arg);
              }
          }
      }

      var __ATPRERUN__ = [];
      var __ATINIT__ = [];
      var __ATMAIN__ = [];
      var __ATEXIT__ = [];
      var __ATPOSTRUN__ = [];
      var runtimeInitialized = false;

      function preRun() {
          if (Module["preRun"]) {
              if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];
              while (Module["preRun"].length) {
                  addOnPreRun(Module["preRun"].shift());
              }
          }
          callRuntimeCallbacks(__ATPRERUN__);
      }

      function ensureInitRuntime() {
          if (runtimeInitialized) return;
          runtimeInitialized = true;
          callRuntimeCallbacks(__ATINIT__);
      }

      function preMain() {
          callRuntimeCallbacks(__ATMAIN__);
      }

      function exitRuntime() {
          callRuntimeCallbacks(__ATEXIT__);
      }

      function postRun() {
          if (Module["postRun"]) {
              if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];
              while (Module["postRun"].length) {
                  addOnPostRun(Module["postRun"].shift());
              }
          }
          callRuntimeCallbacks(__ATPOSTRUN__);
      }

      function addOnPreRun(cb) {
          __ATPRERUN__.unshift(cb);
      }

      Module["addOnPreRun"] = addOnPreRun;

      function addOnInit(cb) {
          __ATINIT__.unshift(cb);
      }

      Module["addOnInit"] = addOnInit;

      function addOnPreMain(cb) {
          __ATMAIN__.unshift(cb);
      }

      Module["addOnPreMain"] = addOnPreMain;

      function addOnExit(cb) {
          __ATEXIT__.unshift(cb);
      }

      Module["addOnExit"] = addOnExit;

      function addOnPostRun(cb) {
          __ATPOSTRUN__.unshift(cb);
      }

      Module["addOnPostRun"] = addOnPostRun;

      function intArrayFromString(stringy, dontAddNull, length) {
          var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
          var u8array = new Array(len);
          var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);
          if (dontAddNull) u8array.length = numBytesWritten;
          return u8array
      }

      Module["intArrayFromString"] = intArrayFromString;

      function intArrayToString(array) {
          var ret = [];
          for (var i = 0; i < array.length; i++) {
              var chr = array[i];
              if (chr > 255) {
                  chr &= 255;
              }
              ret.push(String.fromCharCode(chr));
          }
          return ret.join("")
      }

      Module["intArrayToString"] = intArrayToString;

      function writeStringToMemory(string, buffer, dontAddNull) {
          var array = intArrayFromString(string, dontAddNull);
          var i = 0;
          while (i < array.length) {
              var chr = array[i];
              HEAP8[buffer + i >> 0] = chr;
              i = i + 1;
          }
      }

      Module["writeStringToMemory"] = writeStringToMemory;

      function writeArrayToMemory(array, buffer) {
          for (var i = 0; i < array.length; i++) {
              HEAP8[buffer++ >> 0] = array[i];
          }
      }

      Module["writeArrayToMemory"] = writeArrayToMemory;

      function writeAsciiToMemory(str, buffer, dontAddNull) {
          for (var i = 0; i < str.length; ++i) {
              HEAP8[buffer++ >> 0] = str.charCodeAt(i);
          }
          if (!dontAddNull) HEAP8[buffer >> 0] = 0;
      }

      Module["writeAsciiToMemory"] = writeAsciiToMemory;

      if (!Math["imul"] || Math["imul"](4294967295, 5) !== -5) Math["imul"] = function imul(a, b) {
          var ah = a >>> 16;
          var al = a & 65535;
          var bh = b >>> 16;
          var bl = b & 65535;
          return al * bl + (ah * bl + al * bh << 16) | 0
      };
      Math.imul = Math["imul"];
      if (!Math["clz32"]) Math["clz32"] = (function (x) {
          x = x >>> 0;
          for (var i = 0; i < 32; i++) {
              if (x & 1 << 31 - i) return i
          }
          return 32
      });
      Math.clz32 = Math["clz32"];
      var Math_abs = Math.abs;
      var Math_ceil = Math.ceil;
      var Math_floor = Math.floor;
      var Math_min = Math.min;
      var runDependencies = 0;
      var dependenciesFulfilled = null;

      function addRunDependency(id) {
          runDependencies++;
          if (Module["monitorRunDependencies"]) {
              Module["monitorRunDependencies"](runDependencies);
          }
      }

      Module["addRunDependency"] = addRunDependency;

      function removeRunDependency(id) {
          runDependencies--;
          if (Module["monitorRunDependencies"]) {
              Module["monitorRunDependencies"](runDependencies);
          }
          if (runDependencies == 0) {
              if (dependenciesFulfilled) {
                  var callback = dependenciesFulfilled;
                  dependenciesFulfilled = null;
                  callback();
              }
          }
      }

      Module["removeRunDependency"] = removeRunDependency;
      Module["preloadedImages"] = {};
      Module["preloadedAudios"] = {};
      STATIC_BASE = 8;
      STATICTOP = STATIC_BASE + 31776;
      __ATINIT__.push();
      allocate([154, 14, 0, 0, 188, 14, 0, 0, 226, 14, 0, 0, 8, 15, 0, 0, 46, 15, 0, 0, 84, 15, 0, 0, 130, 15, 0, 0, 208, 15, 0, 0, 66, 16, 0, 0, 108, 16, 0, 0, 42, 17, 0, 0, 248, 17, 0, 0, 228, 18, 0, 0, 240, 19, 0, 0, 24, 21, 0, 0, 86, 22, 0, 0, 238, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0, 15, 0, 17, 0, 19, 0, 20, 0, 26, 0, 31, 0, 5, 0, 6, 0, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 252, 146, 252, 36, 253, 182, 253, 72, 254, 218, 254, 108, 255, 0, 0, 0, 0, 32, 78, 32, 78, 32, 78, 32, 78, 32, 78, 80, 70, 0, 64, 0, 32, 0, 0, 0, 0, 255, 127, 112, 125, 112, 125, 112, 125, 112, 125, 112, 125, 153, 89, 255, 127, 112, 125, 112, 125, 102, 102, 102, 38, 153, 25, 153, 25, 154, 89, 185, 62, 232, 43, 188, 30, 132, 21, 16, 15, 139, 10, 97, 7, 42, 5, 157, 3, 0, 96, 0, 72, 0, 54, 128, 40, 96, 30, 200, 22, 22, 17, 209, 12, 157, 9, 54, 7, 102, 70, 184, 38, 75, 21, 182, 11, 113, 6, 139, 3, 243, 1, 18, 1, 151, 0, 83, 0, 154, 89, 185, 62, 232, 43, 188, 30, 132, 21, 16, 15, 139, 10, 97, 7, 42, 5, 157, 3, 44, 3, 128, 0, 30, 2, 140, 0, 57, 11, 111, 4, 218, 8, 74, 13, 19, 8, 51, 2, 133, 49, 135, 2, 36, 16, 6, 7, 225, 21, 165, 20, 9, 30, 118, 1, 151, 14, 185, 1, 160, 42, 78, 10, 31, 46, 190, 9, 10, 80, 29, 3, 98, 20, 163, 2, 68, 26, 162, 32, 162, 20, 160, 6, 208, 5, 172, 1, 250, 22, 196, 1, 212, 20, 232, 15, 255, 13, 244, 4, 165, 9, 133, 3, 22, 62, 237, 3, 134, 58, 199, 12, 91, 40, 250, 18, 51, 14, 229, 7, 36, 10, 67, 3, 72, 48, 28, 19, 174, 47, 168, 6, 120, 52, 68, 6, 158, 35, 37, 9, 128, 15, 2, 6, 103, 21, 208, 38, 211, 14, 161, 1, 79, 5, 158, 1, 56, 14, 33, 6, 59, 31, 213, 13, 141, 44, 133, 2, 104, 33, 123, 2, 216, 15, 97, 5, 224, 64, 236, 23, 156, 44, 188, 2, 215, 7, 95, 2, 127, 48, 42, 6, 111, 43, 46, 18, 112, 53, 172, 6, 214, 46, 205, 4, 60, 31, 129, 28, 175, 51, 83, 22, 124, 9, 135, 4, 25, 8, 149, 7, 74, 24, 233, 23, 218, 13, 12, 7, 221, 34, 10, 7, 231, 33, 44, 6, 111, 54, 248, 13, 1, 52, 93, 24, 254, 23, 106, 4, 106, 23, 198, 6, 61, 55, 54, 18, 7, 44, 249, 12, 194, 47, 15, 6, 107, 54, 199, 11, 217, 19, 224, 40, 228, 36, 50, 26, 153, 6, 171, 2, 156, 5, 26, 5, 44, 28, 93, 15, 242, 15, 153, 10, 113, 30, 192, 2, 222, 58, 34, 3, 155, 24, 92, 20, 241, 16, 237, 20, 20, 26, 29, 2, 174, 23, 114, 2, 83, 53, 116, 14, 234, 44, 104, 9, 28, 63, 204, 2, 145, 47, 239, 2, 129, 31, 225, 44, 170, 24, 208, 8, 114, 17, 240, 1, 125, 28, 11, 2, 229, 39, 249, 14, 202, 32, 221, 11, 211, 32, 198, 3, 148, 55, 88, 7, 255, 33, 33, 21, 11, 64, 255, 18, 252, 28, 187, 7, 201, 23, 206, 4, 155, 36, 46, 17, 222, 56, 35, 13, 247, 52, 57, 11, 107, 51, 185, 5, 158, 21, 142, 6, 82, 51, 179, 57, 170, 28, 88, 2, 38, 5, 36, 2, 156, 16, 211, 13, 60, 39, 60, 9, 91, 41, 110, 2, 32, 51, 157, 2, 46, 55, 198, 13, 175, 19, 56, 38, 234, 59, 107, 2, 43, 12, 78, 2, 58, 64, 197, 11, 182, 60, 72, 16, 177, 60, 75, 6, 45, 60, 204, 4, 151, 62, 83, 36, 110, 29, 112, 19, 198, 7, 189, 4, 183, 44, 133, 4, 224, 48, 143, 21, 3, 37, 84, 10, 36, 30, 242, 7, 224, 51, 191, 8, 139, 62, 229, 19, 130, 31, 105, 26, 99, 39, 133, 5, 138, 19, 43, 9, 235, 48, 87, 23, 22, 59, 83, 11, 88, 71, 241, 8, 211, 61, 223, 9, 137, 63, 14, 40, 59, 57, 55, 44, 5, 7, 81, 1, 43, 12, 141, 1, 182, 13, 112, 11, 240, 17, 110, 10, 95, 29, 116, 2, 151, 44, 144, 2, 58, 23, 131, 9, 144, 25, 199, 28, 46, 32, 61, 3, 160, 15, 95, 3, 48, 39, 188, 9, 185, 62, 223, 13, 28, 71, 30, 4, 215, 23, 174, 5, 252, 22, 220, 30, 64, 73, 140, 13, 72, 7, 32, 2, 238, 35, 171, 2, 103, 45, 64, 16, 242, 17, 108, 6, 86, 12, 133, 4, 81, 62, 0, 10, 61, 48, 149, 14, 12, 68, 140, 20, 218, 23, 212, 7, 101, 11, 206, 6, 83, 64, 137, 20, 147, 65, 144, 6, 53, 67, 223, 6, 165, 18, 159, 12, 218, 28, 147, 23, 6, 56, 28, 39, 195, 15, 186, 1, 98, 16, 202, 1, 254, 35, 194, 8, 3, 29, 121, 16, 60, 50, 33, 3, 178, 43, 57, 3, 104, 49, 36, 8, 156, 50, 154, 25, 33, 37, 228, 3, 229, 25, 217, 3, 41, 41, 198, 9, 185, 59, 142, 19, 58, 49, 7, 8, 124, 60, 117, 6, 66, 63, 9, 27, 151, 55, 158, 22, 66, 10, 60, 3, 239, 21, 150, 6, 95, 53, 146, 22, 84, 14, 18, 6, 49, 44, 73, 10, 42, 38, 179, 5, 179, 54, 125, 18, 25, 62, 147, 24, 134, 24, 78, 7, 230, 30, 237, 8, 82, 66, 219, 17, 192, 64, 9, 15, 144, 59, 7, 9, 151, 62, 172, 12, 123, 56, 144, 69, 71, 46, 203, 10, 189, 7, 127, 5, 120, 5, 108, 3, 239, 16, 219, 13, 39, 17, 114, 16, 29, 21, 168, 2, 53, 68, 13, 3, 101, 25, 254, 19, 155, 31, 253, 29, 187, 28, 26, 3, 141, 32, 158, 4, 193, 58, 88, 12, 80, 58, 223, 11, 197, 79, 112, 3, 209, 56, 84, 3, 49, 48, 116, 57, 248, 26, 128, 7, 129, 16, 165, 3, 26, 32, 63, 4, 163, 41, 244, 15, 98, 39, 181, 17, 175, 10, 72, 3, 177, 80, 57, 4, 71, 65, 78, 23, 1, 62, 226, 17, 119, 42, 14, 10, 189, 14, 142, 4, 183, 56, 204, 15, 219, 80, 67, 10, 115, 59, 174, 10, 170, 59, 138, 8, 113, 24, 154, 12, 69, 51, 24, 76, 28, 28, 162, 3, 158, 9, 82, 6, 163, 17, 20, 12, 28, 54, 181, 16, 220, 40, 65, 3, 187, 67, 42, 3, 251, 65, 241, 8, 186, 60, 25, 32, 35, 53, 148, 6, 125, 12, 42, 7, 76, 62, 4, 11, 196, 61, 207, 20, 110, 66, 134, 9, 148, 65, 46, 5, 55, 61, 220, 31, 206, 45, 108, 33, 178, 14, 5, 8, 91, 37, 37, 5, 249, 52, 134, 26, 195, 47, 144, 7, 244, 31, 222, 13, 231, 51, 242, 6, 171, 63, 199, 25, 163, 63, 78, 30, 73, 33, 247, 9, 57, 28, 85, 10, 93, 71, 65, 29, 245, 65, 200, 8, 218, 69, 68, 11, 113, 67, 0, 13, 201, 36, 194, 78, 34, 43, 128, 32, 6, 5, 108, 2, 151, 5, 71, 2, 105, 23, 241, 8, 138, 15, 42, 14, 24, 20, 240, 2, 97, 52, 62, 3, 177, 21, 44, 11, 244, 45, 20, 23, 241, 41, 48, 2, 70, 21, 52, 2, 9, 52, 192, 11, 170, 46, 99, 14, 175, 77, 30, 3, 97, 38, 216, 2, 95, 53, 44, 34, 223, 28, 237, 11, 211, 9, 10, 3, 162, 23, 65, 3, 69, 25, 210, 19, 113, 32, 159, 9, 253, 23, 73, 7, 204, 59, 238, 4, 72, 56, 195, 17, 95, 53, 163, 17, 65, 12, 167, 11, 175, 9, 235, 4, 240, 58, 39, 18, 22, 60, 47, 10, 156, 56, 88, 9, 174, 48, 233, 9, 115, 29, 133, 11, 109, 50, 28, 47, 92, 21, 172, 2, 69, 12, 210, 2, 217, 19, 250, 4, 188, 49, 104, 16, 198, 59, 169, 2, 139, 30, 80, 2, 134, 25, 229, 7, 94, 64, 33, 34, 52, 52, 114, 3, 21, 21, 131, 3, 64, 57, 130, 8, 149, 57, 131, 16, 190, 55, 18, 5, 105, 54, 237, 7, 117, 60, 58, 29, 199, 61, 220, 17, 217, 9, 221, 7, 198, 19, 12, 7, 39, 20, 182, 25, 218, 27, 13, 14, 168, 42, 75, 6, 209, 45, 172, 6, 7, 66, 127, 13, 140, 63, 240, 25, 90, 36, 239, 3, 153, 36, 58, 8, 238, 74, 173, 19, 153, 48, 173, 16, 47, 62, 52, 5, 253, 59, 184, 13, 122, 46, 61, 55, 229, 62, 198, 26, 218, 7, 225, 2, 195, 14, 93, 3, 190, 44, 64, 11, 236, 13, 212, 13, 97, 35, 217, 4, 103, 48, 128, 3, 98, 33, 21, 18, 41, 45, 144, 22, 193, 31, 77, 2, 26, 32, 76, 2, 40, 73, 171, 14, 173, 50, 77, 12, 113, 61, 246, 2, 250, 64, 242, 2, 118, 59, 130, 43, 255, 61, 160, 8, 65, 18, 98, 2, 234, 39, 166, 2, 153, 59, 50, 16, 97, 22, 255, 12, 185, 32, 134, 6, 150, 77, 17, 9, 90, 60, 135, 21, 230, 54, 105, 21, 96, 22, 72, 11, 156, 29, 66, 5, 48, 56, 205, 20, 108, 63, 110, 15, 14, 59, 160, 14, 202, 59, 155, 5, 5, 57, 230, 15, 13, 48, 80, 61, 193, 29, 163, 6, 122, 8, 116, 3, 107, 17, 215, 17, 174, 70, 234, 12, 198, 49, 47, 3, 78, 58, 139, 3, 168, 58, 185, 16, 158, 60, 176, 32, 74, 70, 63, 4, 54, 9, 97, 3, 153, 63, 203, 14, 63, 61, 244, 17, 228, 63, 254, 5, 200, 64, 162, 8, 193, 65, 225, 37, 57, 62, 161, 17, 205, 12, 61, 4, 171, 37, 139, 8, 197, 46, 180, 23, 239, 35, 110, 17, 251, 34, 93, 6, 49, 40, 246, 11, 97, 64, 35, 20, 106, 60, 154, 27, 110, 53, 239, 9, 153, 20, 229, 8, 106, 65, 69, 24, 15, 65, 80, 13, 80, 79, 35, 13, 0, 73, 193, 7, 92, 55, 67, 50, 50, 59, 87, 61, 121, 17, 252, 3, 145, 6, 118, 3, 215, 16, 205, 16, 248, 34, 73, 14, 5, 23, 123, 4, 127, 45, 172, 5, 14, 62, 179, 8, 230, 17, 244, 25, 17, 27, 181, 4, 76, 24, 31, 3, 127, 48, 81, 13, 96, 62, 37, 15, 147, 77, 61, 8, 217, 37, 93, 8, 150, 57, 126, 34, 144, 56, 39, 10, 25, 7, 214, 4, 91, 30, 45, 3, 135, 74, 58, 17, 178, 21, 16, 8, 103, 14, 28, 11, 27, 68, 208, 8, 57, 65, 134, 17, 71, 63, 12, 21, 92, 31, 203, 10, 77, 13, 71, 8, 18, 68, 101, 21, 130, 53, 226, 10, 167, 77, 160, 10, 138, 35, 40, 15, 252, 70, 225, 18, 184, 67, 175, 47, 252, 19, 228, 3, 71, 19, 220, 3, 160, 38, 9, 12, 126, 23, 251, 20, 9, 62, 131, 6, 213, 32, 159, 4, 239, 58, 62, 9, 65, 77, 90, 27, 187, 46, 26, 6, 111, 28, 104, 4, 219, 65, 252, 5, 146, 61, 5, 21, 116, 57, 17, 8, 137, 78, 107, 8, 6, 67, 53, 32, 247, 69, 174, 24, 91, 21, 224, 5, 4, 16, 14, 10, 13, 68, 154, 26, 41, 22, 72, 11, 252, 64, 54, 13, 15, 35, 39, 7, 191, 78, 129, 18, 94, 76, 126, 28, 2, 26, 221, 10, 208, 44, 249, 12, 197, 75, 190, 19, 190, 73, 114, 18, 55, 64, 69, 9, 206, 79, 34, 17, 89, 44, 158, 103, 73, 45, 252, 11, 50, 11, 30, 6, 244, 19, 46, 4, 142, 37, 51, 19, 75, 19, 208, 13, 117, 29, 110, 3, 237, 80, 83, 3, 26, 27, 43, 17, 159, 65, 53, 30, 153, 39, 251, 3, 117, 38, 196, 3, 134, 60, 115, 15, 99, 60, 102, 13, 175, 73, 214, 3, 152, 78, 195, 3, 236, 65, 87, 50, 254, 55, 104, 16, 199, 25, 196, 4, 6, 36, 46, 3, 46, 66, 14, 20, 29, 22, 34, 19, 112, 21, 6, 7, 34, 79, 122, 15, 109, 66, 34, 24, 9, 70, 41, 23, 149, 36, 92, 13, 50, 29, 179, 7, 81, 76, 57, 20, 59, 74, 190, 11, 70, 64, 204, 14, 198, 62, 63, 9, 216, 33, 183, 10, 229, 36, 246, 102, 104, 42, 7, 5, 227, 13, 241, 3, 230, 21, 38, 14, 253, 75, 136, 21, 165, 48, 29, 3, 154, 80, 143, 3, 67, 60, 250, 11, 141, 66, 35, 40, 195, 73, 73, 10, 73, 15, 244, 4, 63, 76, 43, 13, 132, 70, 110, 20, 91, 75, 142, 6, 52, 76, 100, 12, 152, 70, 2, 42, 241, 64, 189, 26, 62, 12, 250, 8, 117, 42, 133, 9, 220, 60, 1, 27, 53, 49, 53, 13, 108, 43, 225, 12, 122, 65, 120, 9, 165, 73, 59, 26, 19, 67, 159, 38, 199, 49, 45, 10, 233, 34, 68, 12, 89, 74, 84, 30, 171, 71, 40, 15, 251, 79, 98, 14, 146, 76, 52, 13, 244, 50, 173, 75, 30, 41, 84, 90, 1, 0, 3, 0, 0, 0, 1, 0, 2, 0, 4, 0, 82, 120, 26, 113, 81, 106, 240, 99, 241, 93, 78, 88, 2, 83, 7, 78, 89, 73, 242, 68, 51, 115, 174, 103, 80, 93, 251, 83, 149, 75, 6, 68, 56, 61, 25, 55, 150, 49, 161, 44, 205, 76, 21, 46, 166, 27, 151, 16, 244, 9, 249, 5, 149, 3, 38, 2, 74, 1, 198, 0, 249, 79, 26, 80, 59, 80, 92, 80, 125, 80, 164, 80, 197, 80, 236, 80, 13, 81, 52, 81, 85, 81, 124, 81, 157, 81, 196, 81, 236, 81, 19, 82, 58, 82, 97, 82, 137, 82, 176, 82, 215, 82, 255, 82, 38, 83, 84, 83, 123, 83, 169, 83, 208, 83, 254, 83, 38, 84, 84, 84, 129, 84, 175, 84, 221, 84, 11, 85, 57, 85, 103, 85, 149, 85, 201, 85, 247, 85, 43, 86, 89, 86, 142, 86, 194, 86, 247, 86, 43, 87, 95, 87, 148, 87, 200, 87, 3, 88, 56, 88, 115, 88, 174, 88, 233, 88, 36, 89, 95, 89, 154, 89, 219, 89, 22, 90, 88, 90, 153, 90, 212, 90, 28, 91, 94, 91, 159, 91, 231, 91, 48, 92, 113, 92, 192, 92, 8, 93, 80, 93, 159, 93, 237, 93, 60, 94, 138, 94, 224, 94, 46, 95, 131, 95, 217, 95, 52, 96, 138, 96, 229, 96, 72, 97, 163, 97, 6, 98, 104, 98, 209, 98, 51, 99, 156, 99, 11, 100, 123, 100, 234, 100, 96, 101, 214, 101, 76, 102, 201, 102, 76, 103, 207, 103, 82, 104, 220, 104, 108, 105, 252, 105, 147, 106, 48, 107, 205, 107, 113, 108, 27, 109, 204, 109, 125, 110, 59, 111, 249, 111, 197, 112, 150, 113, 111, 114, 84, 115, 64, 116, 50, 117, 50, 118, 63, 119, 88, 120, 225, 122, 255, 127, 255, 127, 255, 127, 255, 127, 255, 127, 255, 127, 255, 127, 225, 122, 88, 120, 63, 119, 50, 118, 50, 117, 64, 116, 84, 115, 111, 114, 150, 113, 197, 112, 249, 111, 59, 111, 125, 110, 204, 109, 27, 109, 113, 108, 205, 107, 48, 107, 147, 106, 252, 105, 108, 105, 220, 104, 82, 104, 207, 103, 76, 103, 201, 102, 76, 102, 214, 101, 96, 101, 234, 100, 123, 100, 11, 100, 156, 99, 51, 99, 209, 98, 104, 98, 6, 98, 163, 97, 72, 97, 229, 96, 138, 96, 52, 96, 217, 95, 131, 95, 46, 95, 224, 94, 138, 94, 60, 94, 237, 93, 159, 93, 80, 93, 8, 93, 192, 92, 113, 92, 48, 92, 231, 91, 159, 91, 94, 91, 28, 91, 212, 90, 153, 90, 88, 90, 22, 90, 219, 89, 154, 89, 95, 89, 36, 89, 233, 88, 174, 88, 115, 88, 56, 88, 3, 88, 200, 87, 148, 87, 95, 87, 43, 87, 247, 86, 194, 86, 142, 86, 89, 86, 43, 86, 247, 85, 201, 85, 149, 85, 103, 85, 57, 85, 11, 85, 221, 84, 175, 84, 129, 84, 84, 84, 38, 84, 254, 83, 208, 83, 169, 83, 123, 83, 84, 83, 38, 83, 255, 82, 215, 82, 176, 82, 137, 82, 97, 82, 58, 82, 19, 82, 236, 81, 196, 81, 157, 81, 124, 81, 85, 81, 52, 81, 13, 81, 236, 80, 197, 80, 164, 80, 125, 80, 92, 80, 59, 80, 26, 80, 249, 79, 210, 79, 177, 79, 145, 79, 112, 79, 13, 0, 14, 0, 16, 0, 18, 0, 20, 0, 21, 0, 27, 0, 32, 0, 6, 0, 7, 0, 6, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 13, 0, 14, 0, 16, 0, 18, 0, 19, 0, 21, 0, 26, 0, 31, 0, 6, 0, 6, 0, 6, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 79, 115, 156, 110, 74, 97, 126, 77, 72, 54, 9, 31, 195, 10, 153, 251, 125, 242, 48, 239, 127, 240, 173, 244, 231, 249, 176, 254, 22, 2, 202, 3, 255, 3, 55, 3, 4, 2, 220, 0, 0, 0, 125, 255, 62, 255, 41, 255, 0, 0, 216, 127, 107, 127, 182, 126, 187, 125, 123, 124, 248, 122, 53, 121, 53, 119, 250, 116, 137, 114, 128, 46, 128, 67, 0, 120, 0, 101, 128, 94, 64, 113, 64, 95, 192, 28, 64, 76, 192, 57, 84, 0, 1, 0, 254, 255, 2, 0, 5, 0, 10, 0, 5, 0, 9, 0, 20, 0, 84, 0, 1, 0, 254, 255, 2, 0, 5, 0, 10, 0, 5, 0, 9, 0, 20, 0, 84, 0, 1, 0, 254, 255, 2, 0, 3, 0, 6, 0, 5, 0, 9, 0, 20, 0, 84, 0, 1, 0, 254, 255, 2, 0, 3, 0, 6, 0, 5, 0, 9, 0, 20, 0, 84, 0, 1, 0, 254, 255, 2, 0, 3, 0, 6, 0, 5, 0, 9, 0, 20, 0, 84, 0, 1, 0, 254, 255, 2, 0, 3, 0, 6, 0, 10, 0, 19, 0, 20, 0, 84, 0, 1, 0, 254, 255, 2, 0, 3, 0, 6, 0, 5, 0, 9, 0, 20, 0, 94, 0, 0, 0, 253, 255, 3, 0, 3, 0, 6, 0, 5, 0, 9, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 19, 0, 19, 0, 19, 0, 19, 0, 23, 0, 39, 0, 57, 0, 5, 0, 8, 0, 8, 0, 7, 0, 8, 0, 7, 0, 2, 0, 8, 0, 4, 0, 7, 0, 2, 0, 4, 0, 7, 0, 2, 0, 8, 0, 4, 0, 7, 0, 2, 0, 8, 0, 8, 0, 7, 0, 8, 0, 7, 0, 2, 0, 6, 0, 4, 0, 7, 0, 2, 0, 6, 0, 4, 0, 7, 0, 2, 0, 6, 0, 4, 0, 7, 0, 2, 0, 6, 0, 8, 0, 9, 0, 9, 0, 8, 0, 9, 0, 2, 0, 6, 0, 4, 0, 9, 0, 2, 0, 6, 0, 8, 0, 9, 0, 2, 0, 6, 0, 4, 0, 9, 0, 2, 0, 6, 0, 8, 0, 9, 0, 9, 0, 8, 0, 11, 0, 3, 0, 7, 0, 4, 0, 11, 0, 3, 0, 7, 0, 8, 0, 11, 0, 3, 0, 7, 0, 4, 0, 11, 0, 3, 0, 7, 0, 8, 0, 9, 0, 9, 0, 8, 0, 13, 0, 4, 0, 7, 0, 5, 0, 13, 0, 4, 0, 7, 0, 8, 0, 13, 0, 4, 0, 7, 0, 5, 0, 13, 0, 4, 0, 7, 0, 9, 0, 9, 0, 9, 0, 8, 0, 13, 0, 4, 0, 4, 0, 5, 0, 6, 0, 13, 0, 4, 0, 4, 0, 5, 0, 8, 0, 13, 0, 4, 0, 4, 0, 5, 0, 6, 0, 13, 0, 4, 0, 4, 0, 5, 0, 8, 0, 9, 0, 9, 0, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 10, 0, 10, 0, 7, 0, 7, 0, 5, 0, 1, 0, 1, 0, 1, 0, 1, 0, 10, 0, 10, 0, 7, 0, 7, 0, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 10, 0, 10, 0, 7, 0, 7, 0, 5, 0, 1, 0, 1, 0, 1, 0, 1, 0, 10, 0, 10, 0, 7, 0, 7, 0, 7, 0, 8, 0, 9, 0, 8, 0, 6, 0, 9, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 5, 0, 6, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 5, 0, 9, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 5, 0, 6, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 5, 0, 3, 0, 8, 0, 9, 0, 9, 0, 6, 0, 95, 0, 103, 0, 118, 0, 134, 0, 148, 0, 159, 0, 204, 0, 244, 0, 39, 0, 43, 0, 38, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 48, 0, 49, 0, 61, 0, 62, 0, 82, 0, 83, 0, 47, 0, 46, 0, 45, 0, 44, 0, 81, 0, 80, 0, 79, 0, 78, 0, 17, 0, 18, 0, 20, 0, 22, 0, 77, 0, 76, 0, 75, 0, 74, 0, 29, 0, 30, 0, 43, 0, 42, 0, 41, 0, 40, 0, 38, 0, 39, 0, 16, 0, 19, 0, 21, 0, 50, 0, 51, 0, 59, 0, 60, 0, 63, 0, 64, 0, 72, 0, 73, 0, 84, 0, 85, 0, 93, 0, 94, 0, 32, 0, 33, 0, 35, 0, 36, 0, 53, 0, 54, 0, 56, 0, 57, 0, 66, 0, 67, 0, 69, 0, 70, 0, 87, 0, 88, 0, 90, 0, 91, 0, 34, 0, 55, 0, 68, 0, 89, 0, 37, 0, 58, 0, 71, 0, 92, 0, 31, 0, 52, 0, 65, 0, 86, 0, 7, 0, 6, 0, 5, 0, 4, 0, 3, 0, 2, 0, 1, 0, 0, 0, 15, 0, 14, 0, 13, 0, 12, 0, 11, 0, 10, 0, 9, 0, 8, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 46, 0, 65, 0, 84, 0, 45, 0, 44, 0, 43, 0, 64, 0, 63, 0, 62, 0, 83, 0, 82, 0, 81, 0, 102, 0, 101, 0, 100, 0, 42, 0, 61, 0, 80, 0, 99, 0, 28, 0, 47, 0, 66, 0, 85, 0, 18, 0, 41, 0, 60, 0, 79, 0, 98, 0, 29, 0, 48, 0, 67, 0, 17, 0, 20, 0, 22, 0, 40, 0, 59, 0, 78, 0, 97, 0, 21, 0, 30, 0, 49, 0, 68, 0, 86, 0, 19, 0, 16, 0, 87, 0, 39, 0, 38, 0, 58, 0, 57, 0, 77, 0, 35, 0, 54, 0, 73, 0, 92, 0, 76, 0, 96, 0, 95, 0, 36, 0, 55, 0, 74, 0, 93, 0, 32, 0, 51, 0, 33, 0, 52, 0, 70, 0, 71, 0, 89, 0, 90, 0, 31, 0, 50, 0, 69, 0, 88, 0, 37, 0, 56, 0, 75, 0, 94, 0, 34, 0, 53, 0, 72, 0, 91, 0, 0, 0, 1, 0, 4, 0, 5, 0, 3, 0, 6, 0, 7, 0, 2, 0, 13, 0, 15, 0, 8, 0, 9, 0, 11, 0, 12, 0, 14, 0, 10, 0, 16, 0, 28, 0, 74, 0, 29, 0, 75, 0, 27, 0, 73, 0, 26, 0, 72, 0, 30, 0, 76, 0, 51, 0, 97, 0, 50, 0, 71, 0, 96, 0, 117, 0, 31, 0, 77, 0, 52, 0, 98, 0, 49, 0, 70, 0, 95, 0, 116, 0, 53, 0, 99, 0, 32, 0, 78, 0, 33, 0, 79, 0, 48, 0, 69, 0, 94, 0, 115, 0, 47, 0, 68, 0, 93, 0, 114, 0, 46, 0, 67, 0, 92, 0, 113, 0, 19, 0, 21, 0, 23, 0, 22, 0, 18, 0, 17, 0, 20, 0, 24, 0, 111, 0, 43, 0, 89, 0, 110, 0, 64, 0, 65, 0, 44, 0, 90, 0, 25, 0, 45, 0, 66, 0, 91, 0, 112, 0, 54, 0, 100, 0, 40, 0, 61, 0, 86, 0, 107, 0, 39, 0, 60, 0, 85, 0, 106, 0, 36, 0, 57, 0, 82, 0, 103, 0, 35, 0, 56, 0, 81, 0, 102, 0, 34, 0, 55, 0, 80, 0, 101, 0, 42, 0, 63, 0, 88, 0, 109, 0, 41, 0, 62, 0, 87, 0, 108, 0, 38, 0, 59, 0, 84, 0, 105, 0, 37, 0, 58, 0, 83, 0, 104, 0, 0, 0, 1, 0, 4, 0, 3, 0, 5, 0, 6, 0, 13, 0, 7, 0, 2, 0, 8, 0, 9, 0, 11, 0, 15, 0, 12, 0, 14, 0, 10, 0, 28, 0, 82, 0, 29, 0, 83, 0, 27, 0, 81, 0, 26, 0, 80, 0, 30, 0, 84, 0, 16, 0, 55, 0, 109, 0, 56, 0, 110, 0, 31, 0, 85, 0, 57, 0, 111, 0, 48, 0, 73, 0, 102, 0, 127, 0, 32, 0, 86, 0, 51, 0, 76, 0, 105, 0, 130, 0, 52, 0, 77, 0, 106, 0, 131, 0, 58, 0, 112, 0, 33, 0, 87, 0, 19, 0, 23, 0, 53, 0, 78, 0, 107, 0, 132, 0, 21, 0, 22, 0, 18, 0, 17, 0, 20, 0, 24, 0, 25, 0, 50, 0, 75, 0, 104, 0, 129, 0, 47, 0, 72, 0, 101, 0, 126, 0, 54, 0, 79, 0, 108, 0, 133, 0, 46, 0, 71, 0, 100, 0, 125, 0, 128, 0, 103, 0, 74, 0, 49, 0, 45, 0, 70, 0, 99, 0, 124, 0, 42, 0, 67, 0, 96, 0, 121, 0, 39, 0, 64, 0, 93, 0, 118, 0, 38, 0, 63, 0, 92, 0, 117, 0, 35, 0, 60, 0, 89, 0, 114, 0, 34, 0, 59, 0, 88, 0, 113, 0, 44, 0, 69, 0, 98, 0, 123, 0, 43, 0, 68, 0, 97, 0, 122, 0, 41, 0, 66, 0, 95, 0, 120, 0, 40, 0, 65, 0, 94, 0, 119, 0, 37, 0, 62, 0, 91, 0, 116, 0, 36, 0, 61, 0, 90, 0, 115, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0, 26, 0, 87, 0, 27, 0, 88, 0, 28, 0, 89, 0, 29, 0, 90, 0, 30, 0, 91, 0, 51, 0, 80, 0, 112, 0, 141, 0, 52, 0, 81, 0, 113, 0, 142, 0, 54, 0, 83, 0, 115, 0, 144, 0, 55, 0, 84, 0, 116, 0, 145, 0, 58, 0, 119, 0, 59, 0, 120, 0, 21, 0, 22, 0, 23, 0, 17, 0, 18, 0, 19, 0, 31, 0, 60, 0, 92, 0, 121, 0, 56, 0, 85, 0, 117, 0, 146, 0, 20, 0, 24, 0, 25, 0, 50, 0, 79, 0, 111, 0, 140, 0, 57, 0, 86, 0, 118, 0, 147, 0, 49, 0, 78, 0, 110, 0, 139, 0, 48, 0, 77, 0, 53, 0, 82, 0, 114, 0, 143, 0, 109, 0, 138, 0, 47, 0, 76, 0, 108, 0, 137, 0, 32, 0, 33, 0, 61, 0, 62, 0, 93, 0, 94, 0, 122, 0, 123, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 102, 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 131, 0, 132, 0, 133, 0, 134, 0, 135, 0, 136, 0, 34, 0, 63, 0, 95, 0, 124, 0, 35, 0, 64, 0, 96, 0, 125, 0, 36, 0, 65, 0, 97, 0, 126, 0, 37, 0, 66, 0, 98, 0, 127, 0, 38, 0, 67, 0, 99, 0, 128, 0, 39, 0, 68, 0, 100, 0, 129, 0, 40, 0, 69, 0, 101, 0, 130, 0, 8, 0, 7, 0, 6, 0, 5, 0, 4, 0, 3, 0, 2, 0, 14, 0, 16, 0, 9, 0, 10, 0, 12, 0, 13, 0, 15, 0, 11, 0, 17, 0, 20, 0, 22, 0, 24, 0, 23, 0, 19, 0, 18, 0, 21, 0, 56, 0, 88, 0, 122, 0, 154, 0, 57, 0, 89, 0, 123, 0, 155, 0, 58, 0, 90, 0, 124, 0, 156, 0, 52, 0, 84, 0, 118, 0, 150, 0, 53, 0, 85, 0, 119, 0, 151, 0, 27, 0, 93, 0, 28, 0, 94, 0, 29, 0, 95, 0, 30, 0, 96, 0, 31, 0, 97, 0, 61, 0, 127, 0, 62, 0, 128, 0, 63, 0, 129, 0, 59, 0, 91, 0, 125, 0, 157, 0, 32, 0, 98, 0, 64, 0, 130, 0, 1, 0, 0, 0, 25, 0, 26, 0, 33, 0, 99, 0, 34, 0, 100, 0, 65, 0, 131, 0, 66, 0, 132, 0, 54, 0, 86, 0, 120, 0, 152, 0, 60, 0, 92, 0, 126, 0, 158, 0, 55, 0, 87, 0, 121, 0, 153, 0, 117, 0, 116, 0, 115, 0, 46, 0, 78, 0, 112, 0, 144, 0, 43, 0, 75, 0, 109, 0, 141, 0, 40, 0, 72, 0, 106, 0, 138, 0, 36, 0, 68, 0, 102, 0, 134, 0, 114, 0, 149, 0, 148, 0, 147, 0, 146, 0, 83, 0, 82, 0, 81, 0, 80, 0, 51, 0, 50, 0, 49, 0, 48, 0, 47, 0, 45, 0, 44, 0, 42, 0, 39, 0, 35, 0, 79, 0, 77, 0, 76, 0, 74, 0, 71, 0, 67, 0, 113, 0, 111, 0, 110, 0, 108, 0, 105, 0, 101, 0, 145, 0, 143, 0, 142, 0, 140, 0, 137, 0, 133, 0, 41, 0, 73, 0, 107, 0, 139, 0, 37, 0, 69, 0, 103, 0, 135, 0, 38, 0, 70, 0, 104, 0, 136, 0, 7, 0, 6, 0, 5, 0, 4, 0, 3, 0, 2, 0, 1, 0, 0, 0, 16, 0, 15, 0, 14, 0, 13, 0, 12, 0, 11, 0, 10, 0, 9, 0, 8, 0, 26, 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 115, 0, 116, 0, 117, 0, 118, 0, 119, 0, 120, 0, 72, 0, 73, 0, 161, 0, 162, 0, 65, 0, 68, 0, 69, 0, 108, 0, 111, 0, 112, 0, 154, 0, 157, 0, 158, 0, 197, 0, 200, 0, 201, 0, 32, 0, 33, 0, 121, 0, 122, 0, 74, 0, 75, 0, 163, 0, 164, 0, 66, 0, 109, 0, 155, 0, 198, 0, 19, 0, 23, 0, 21, 0, 22, 0, 18, 0, 17, 0, 20, 0, 24, 0, 25, 0, 37, 0, 36, 0, 35, 0, 34, 0, 80, 0, 79, 0, 78, 0, 77, 0, 126, 0, 125, 0, 124, 0, 123, 0, 169, 0, 168, 0, 167, 0, 166, 0, 70, 0, 67, 0, 71, 0, 113, 0, 110, 0, 114, 0, 159, 0, 156, 0, 160, 0, 202, 0, 199, 0, 203, 0, 76, 0, 165, 0, 81, 0, 82, 0, 92, 0, 91, 0, 93, 0, 83, 0, 95, 0, 85, 0, 84, 0, 94, 0, 101, 0, 102, 0, 96, 0, 104, 0, 86, 0, 103, 0, 87, 0, 97, 0, 127, 0, 128, 0, 138, 0, 137, 0, 139, 0, 129, 0, 141, 0, 131, 0, 130, 0, 140, 0, 147, 0, 148, 0, 142, 0, 150, 0, 132, 0, 149, 0, 133, 0, 143, 0, 170, 0, 171, 0, 181, 0, 180, 0, 182, 0, 172, 0, 184, 0, 174, 0, 173, 0, 183, 0, 190, 0, 191, 0, 185, 0, 193, 0, 175, 0, 192, 0, 176, 0, 186, 0, 38, 0, 39, 0, 49, 0, 48, 0, 50, 0, 40, 0, 52, 0, 42, 0, 41, 0, 51, 0, 58, 0, 59, 0, 53, 0, 61, 0, 43, 0, 60, 0, 44, 0, 54, 0, 194, 0, 179, 0, 189, 0, 196, 0, 177, 0, 195, 0, 178, 0, 187, 0, 188, 0, 151, 0, 136, 0, 146, 0, 153, 0, 134, 0, 152, 0, 135, 0, 144, 0, 145, 0, 105, 0, 90, 0, 100, 0, 107, 0, 88, 0, 106, 0, 89, 0, 98, 0, 99, 0, 62, 0, 47, 0, 57, 0, 64, 0, 45, 0, 63, 0, 46, 0, 55, 0, 56, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 23, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 38, 0, 141, 0, 39, 0, 142, 0, 40, 0, 143, 0, 41, 0, 144, 0, 42, 0, 145, 0, 43, 0, 146, 0, 44, 0, 147, 0, 45, 0, 148, 0, 46, 0, 149, 0, 47, 0, 97, 0, 150, 0, 200, 0, 48, 0, 98, 0, 151, 0, 201, 0, 49, 0, 99, 0, 152, 0, 202, 0, 86, 0, 136, 0, 189, 0, 239, 0, 87, 0, 137, 0, 190, 0, 240, 0, 88, 0, 138, 0, 191, 0, 241, 0, 91, 0, 194, 0, 92, 0, 195, 0, 93, 0, 196, 0, 94, 0, 197, 0, 95, 0, 198, 0, 29, 0, 30, 0, 31, 0, 32, 0, 33, 0, 34, 0, 35, 0, 50, 0, 100, 0, 153, 0, 203, 0, 89, 0, 139, 0, 192, 0, 242, 0, 51, 0, 101, 0, 154, 0, 204, 0, 55, 0, 105, 0, 158, 0, 208, 0, 90, 0, 140, 0, 193, 0, 243, 0, 59, 0, 109, 0, 162, 0, 212, 0, 63, 0, 113, 0, 166, 0, 216, 0, 67, 0, 117, 0, 170, 0, 220, 0, 36, 0, 37, 0, 54, 0, 53, 0, 52, 0, 58, 0, 57, 0, 56, 0, 62, 0, 61, 0, 60, 0, 66, 0, 65, 0, 64, 0, 70, 0, 69, 0, 68, 0, 104, 0, 103, 0, 102, 0, 108, 0, 107, 0, 106, 0, 112, 0, 111, 0, 110, 0, 116, 0, 115, 0, 114, 0, 120, 0, 119, 0, 118, 0, 157, 0, 156, 0, 155, 0, 161, 0, 160, 0, 159, 0, 165, 0, 164, 0, 163, 0, 169, 0, 168, 0, 167, 0, 173, 0, 172, 0, 171, 0, 207, 0, 206, 0, 205, 0, 211, 0, 210, 0, 209, 0, 215, 0, 214, 0, 213, 0, 219, 0, 218, 0, 217, 0, 223, 0, 222, 0, 221, 0, 73, 0, 72, 0, 71, 0, 76, 0, 75, 0, 74, 0, 79, 0, 78, 0, 77, 0, 82, 0, 81, 0, 80, 0, 85, 0, 84, 0, 83, 0, 123, 0, 122, 0, 121, 0, 126, 0, 125, 0, 124, 0, 129, 0, 128, 0, 127, 0, 132, 0, 131, 0, 130, 0, 135, 0, 134, 0, 133, 0, 176, 0, 175, 0, 174, 0, 179, 0, 178, 0, 177, 0, 182, 0, 181, 0, 180, 0, 185, 0, 184, 0, 183, 0, 188, 0, 187, 0, 186, 0, 226, 0, 225, 0, 224, 0, 229, 0, 228, 0, 227, 0, 232, 0, 231, 0, 230, 0, 235, 0, 234, 0, 233, 0, 238, 0, 237, 0, 236, 0, 96, 0, 199, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 1, 0, 3, 0, 2, 0, 4, 0, 1, 0, 4, 0, 1, 0, 4, 0, 0, 0, 205, 12, 156, 25, 0, 32, 102, 38, 205, 44, 0, 48, 51, 51, 102, 54, 154, 57, 205, 60, 0, 64, 51, 67, 102, 70, 154, 73, 205, 76, 159, 0, 64, 241, 53, 167, 206, 0, 190, 242, 52, 176, 12, 1, 67, 244, 88, 185, 93, 1, 201, 245, 133, 194, 163, 1, 215, 246, 223, 200, 226, 1, 166, 247, 189, 205, 42, 2, 116, 248, 147, 210, 125, 2, 66, 249, 109, 215, 221, 2, 18, 250, 77, 220, 74, 3, 222, 250, 30, 225, 201, 3, 174, 251, 0, 230, 90, 4, 124, 252, 216, 234, 1, 5, 74, 253, 179, 239, 193, 5, 25, 254, 141, 244, 158, 6, 231, 254, 104, 249, 156, 7, 181, 255, 67, 254, 193, 8, 133, 0, 33, 3, 17, 10, 83, 1, 252, 7, 147, 11, 33, 2, 213, 12, 80, 13, 240, 2, 178, 17, 79, 15, 190, 3, 140, 22, 155, 17, 141, 4, 104, 27, 63, 20, 91, 5, 67, 32, 72, 23, 41, 6, 29, 37, 199, 26, 248, 6, 249, 41, 203, 30, 199, 7, 212, 46, 105, 35, 149, 8, 175, 51, 185, 40, 100, 9, 138, 56, 222, 48, 113, 10, 224, 62, 135, 63, 244, 11, 253, 71, 150, 82, 120, 13, 27, 81, 93, 107, 252, 14, 57, 90, 93, 107, 252, 14, 57, 90, 0, 0, 1, 0, 3, 0, 2, 0, 6, 0, 4, 0, 5, 0, 7, 0, 0, 0, 1, 0, 3, 0, 2, 0, 5, 0, 6, 0, 4, 0, 7, 0, 248, 127, 211, 127, 76, 127, 108, 126, 51, 125, 163, 123, 188, 121, 127, 119, 239, 116, 12, 114, 217, 110, 89, 107, 141, 103, 121, 99, 31, 95, 130, 90, 166, 85, 141, 80, 60, 75, 182, 69, 0, 64, 28, 58, 15, 52, 223, 45, 141, 39, 32, 33, 156, 26, 6, 20, 97, 13, 178, 6, 0, 0, 78, 249, 159, 242, 250, 235, 100, 229, 224, 222, 115, 216, 33, 210, 241, 203, 228, 197, 0, 192, 74, 186, 196, 180, 115, 175, 90, 170, 126, 165, 225, 160, 135, 156, 115, 152, 167, 148, 39, 145, 244, 141, 17, 139, 129, 136, 68, 134, 93, 132, 205, 130, 148, 129, 180, 128, 45, 128, 8, 128, 255, 127, 46, 124, 174, 120, 118, 117, 125, 114, 186, 111, 41, 109, 194, 106, 131, 104, 102, 102, 105, 100, 137, 98, 194, 96, 19, 95, 122, 93, 245, 91, 130, 90, 33, 89, 207, 87, 139, 86, 85, 85, 44, 84, 15, 83, 252, 81, 244, 80, 246, 79, 1, 79, 20, 78, 48, 77, 83, 76, 126, 75, 175, 74, 231, 73, 37, 73, 104, 72, 178, 71, 0, 71, 84, 70, 173, 69, 10, 69, 107, 68, 209, 67, 59, 67, 168, 66, 25, 66, 142, 65, 6, 65, 130, 64, 0, 64, 0, 0, 175, 5, 50, 11, 140, 16, 192, 21, 207, 26, 188, 31, 136, 36, 53, 41, 196, 45, 55, 50, 143, 54, 206, 58, 245, 62, 4, 67, 252, 70, 223, 74, 174, 78, 105, 82, 17, 86, 167, 89, 44, 93, 159, 96, 3, 100, 87, 103, 155, 106, 209, 109, 250, 112, 20, 116, 33, 119, 34, 122, 23, 125, 255, 127, 255, 127, 217, 127, 98, 127, 157, 126, 138, 125, 42, 124, 125, 122, 133, 120, 66, 118, 182, 115, 227, 112, 202, 109, 110, 106, 208, 102, 242, 98, 215, 94, 130, 90, 246, 85, 52, 81, 64, 76, 29, 71, 206, 65, 87, 60, 186, 54, 252, 48, 31, 43, 40, 37, 26, 31, 249, 24, 200, 18, 140, 12, 72, 6, 0, 0, 184, 249, 116, 243, 56, 237, 7, 231, 230, 224, 216, 218, 225, 212, 4, 207, 70, 201, 169, 195, 50, 190, 227, 184, 192, 179, 204, 174, 10, 170, 126, 165, 41, 161, 14, 157, 48, 153, 146, 149, 54, 146, 29, 143, 74, 140, 190, 137, 123, 135, 131, 133, 214, 131, 118, 130, 99, 129, 158, 128, 39, 128, 0, 128, 249, 150, 148, 221, 53, 235, 27, 241, 93, 244, 116, 246, 223, 247, 237, 248, 184, 249, 86, 250, 214, 250, 61, 251, 148, 251, 221, 251, 26, 252, 78, 252, 123, 252, 163, 252, 197, 252, 227, 252, 252, 252, 18, 253, 38, 253, 55, 253, 69, 253, 81, 253, 91, 253, 100, 253, 106, 253, 111, 253, 114, 253, 116, 253, 116, 253, 114, 253, 111, 253, 106, 253, 100, 253, 91, 253, 81, 253, 69, 253, 55, 253, 38, 253, 18, 253, 252, 252, 227, 252, 197, 252, 163, 252, 123, 252, 78, 252, 26, 252, 221, 251, 148, 251, 61, 251, 214, 250, 86, 250, 184, 249, 237, 248, 223, 247, 116, 246, 93, 244, 27, 241, 53, 235, 148, 221, 249, 150, 48, 117, 144, 101, 8, 82, 152, 58, 64, 31, 0, 0, 192, 224, 104, 197, 248, 173, 112, 154, 153, 104, 33, 3, 201, 9, 85, 253, 154, 250, 70, 2, 92, 2, 6, 251, 183, 13, 250, 232, 182, 17, 13, 254, 108, 248, 195, 11, 62, 236, 238, 21, 58, 248, 219, 251, 77, 250, 90, 17, 68, 253, 41, 235, 1, 18, 196, 1, 179, 253, 232, 242, 137, 11, 243, 4, 68, 251, 226, 245, 195, 6, 86, 14, 133, 238, 49, 252, 39, 17, 23, 246, 181, 3, 173, 250, 45, 252, 102, 22, 66, 118, 247, 14, 60, 240, 156, 11, 232, 251, 22, 252, 173, 9, 29, 244, 255, 10, 73, 247, 217, 6, 181, 249, 178, 6, 17, 249, 7, 6, 16, 252, 173, 1, 87, 255, 216, 1, 16, 251, 128, 8, 110, 245, 219, 9, 171, 249, 88, 1, 58, 3, 7, 250, 188, 6, 135, 249, 165, 6, 241, 247, 84, 10, 12, 244, 81, 11, 70, 248, 45, 2, 12, 3, 167, 250, 74, 3, 143, 2, 98, 57, 254, 44, 244, 4, 55, 245, 217, 233, 90, 29, 221, 255, 9, 245, 32, 244, 215, 18, 136, 11, 24, 223, 201, 14, 175, 5, 131, 8, 67, 222, 115, 31, 201, 247, 82, 250, 9, 3, 84, 4, 175, 246, 206, 8, 149, 254, 94, 253, 201, 247, 158, 23, 207, 233, 48, 4, 51, 12, 62, 236, 192, 20, 231, 246, 112, 241, 12, 27, 207, 240, 163, 2, 17, 249, 29, 0, 161, 39, 66, 118, 247, 14, 60, 240, 156, 11, 232, 251, 22, 252, 173, 9, 29, 244, 255, 10, 73, 247, 217, 6, 181, 249, 178, 6, 17, 249, 7, 6, 16, 252, 173, 1, 87, 255, 216, 1, 16, 251, 128, 8, 110, 245, 219, 9, 171, 249, 88, 1, 58, 3, 7, 250, 188, 6, 135, 249, 165, 6, 241, 247, 84, 10, 12, 244, 81, 11, 70, 248, 45, 2, 12, 3, 167, 250, 74, 3, 143, 2, 0, 64, 103, 65, 213, 66, 76, 68, 203, 69, 82, 71, 226, 72, 122, 74, 28, 76, 199, 77, 123, 79, 56, 81, 255, 82, 209, 84, 172, 86, 146, 88, 130, 90, 126, 92, 132, 94, 150, 96, 180, 98, 221, 100, 18, 103, 84, 105, 162, 107, 254, 109, 102, 112, 221, 114, 96, 117, 242, 119, 147, 122, 66, 125, 255, 127, 3, 115, 186, 110, 119, 98, 225, 79, 109, 57, 245, 33, 71, 12, 184, 250, 206, 238, 23, 233, 38, 233, 191, 237, 33, 245, 96, 253, 187, 4, 232, 9, 58, 12, 175, 11, 211, 8, 146, 4, 0, 0, 23, 252, 140, 249, 180, 248, 126, 249, 133, 251, 48, 254, 218, 0, 244, 2, 36, 4, 75, 4, 136, 3, 38, 2, 135, 0, 11, 255, 254, 253, 134, 253, 166, 253, 61, 254, 25, 255, 0, 0, 191, 0, 52, 1, 84, 1, 40, 1, 198, 0, 78, 0, 220, 255, 136, 255, 93, 255, 91, 255, 124, 255, 177, 255, 237, 255, 34, 0, 73, 0, 91, 0, 89, 0, 70, 0, 38, 0, 0, 0, 254, 254, 194, 254, 73, 254, 134, 253, 112, 253, 251, 252, 57, 253, 10, 254, 244, 254, 63, 255, 254, 255, 125, 0, 122, 0, 217, 255, 247, 255, 105, 0, 129, 0, 27, 1, 116, 1, 63, 2, 235, 254, 188, 254, 59, 255, 25, 254, 67, 254, 150, 254, 220, 254, 229, 255, 177, 0, 31, 2, 86, 1, 5, 2, 4, 2, 130, 0, 27, 0, 152, 255, 136, 255, 116, 255, 182, 255, 200, 255, 204, 253, 81, 252, 16, 250, 59, 252, 210, 252, 242, 253, 190, 254, 254, 255, 159, 0, 145, 2, 200, 254, 228, 254, 126, 254, 171, 253, 19, 254, 242, 253, 94, 254, 27, 255, 105, 0, 193, 1, 211, 253, 154, 252, 205, 251, 105, 252, 74, 252, 16, 253, 59, 253, 196, 254, 62, 0, 230, 1, 198, 254, 65, 255, 53, 255, 182, 254, 96, 255, 153, 255, 205, 255, 131, 0, 82, 1, 3, 2, 10, 6, 224, 8, 194, 14, 112, 21, 60, 27, 190, 32, 63, 39, 221, 43, 222, 49, 146, 53, 84, 37, 17, 42, 27, 49, 236, 51, 45, 56, 131, 45, 92, 41, 39, 38, 145, 33, 84, 25, 6, 0, 82, 0, 125, 255, 154, 0, 200, 255, 33, 253, 183, 0, 191, 255, 247, 254, 9, 0, 46, 255, 151, 254, 113, 0, 206, 2, 25, 7, 242, 3, 190, 4, 37, 6, 89, 3, 53, 5, 228, 8, 59, 3, 32, 6, 141, 7, 205, 2, 197, 7, 158, 8, 70, 3, 148, 4, 31, 7, 209, 2, 232, 3, 106, 8, 30, 1, 220, 1, 229, 5, 9, 255, 237, 253, 230, 0, 147, 0, 174, 255, 57, 2, 26, 0, 79, 255, 80, 252, 229, 255, 239, 254, 180, 2, 92, 255, 248, 254, 73, 255, 224, 0, 22, 3, 15, 4, 131, 3, 178, 3, 89, 2, 229, 1, 3, 3, 126, 4, 12, 2, 165, 2, 135, 3, 116, 255, 119, 1, 10, 3, 154, 1, 164, 2, 173, 1, 45, 1, 18, 2, 241, 3, 207, 2, 134, 2, 38, 0, 226, 0, 111, 1, 40, 0, 145, 0, 211, 255, 7, 254, 34, 1, 121, 0, 135, 255, 46, 1, 127, 0, 166, 0, 132, 255, 129, 254, 68, 252, 154, 254, 57, 254, 47, 252, 203, 2, 110, 3, 126, 3, 210, 3, 155, 3, 211, 0, 221, 1, 16, 1, 64, 0, 188, 0, 178, 255, 17, 0, 113, 255, 191, 255, 38, 0, 131, 2, 74, 2, 109, 2, 122, 255, 86, 254, 117, 253, 91, 1, 33, 2, 4, 11, 164, 4, 166, 10, 138, 9, 142, 0, 176, 255, 199, 6, 27, 1, 130, 0, 205, 1, 250, 254, 113, 254, 135, 251, 101, 254, 155, 0, 174, 1, 73, 1, 119, 1, 11, 3, 53, 0, 30, 255, 117, 255, 127, 255, 20, 255, 146, 6, 29, 1, 232, 2, 47, 5, 226, 2, 185, 2, 128, 6, 56, 1, 153, 1, 10, 1, 69, 1, 208, 2, 135, 0, 1, 0, 221, 0, 197, 1, 8, 0, 203, 0, 145, 0, 43, 1, 128, 2, 248, 2, 29, 0, 212, 1, 126, 2, 103, 0, 173, 1, 123, 1, 164, 1, 186, 3, 164, 3, 46, 5, 186, 4, 234, 4, 192, 2, 244, 3, 128, 4, 90, 255, 68, 254, 246, 254, 196, 254, 126, 255, 136, 254, 191, 0, 127, 4, 112, 7, 16, 255, 225, 253, 20, 251, 144, 255, 12, 1, 183, 4, 70, 0, 38, 4, 47, 6, 22, 1, 80, 5, 38, 6, 254, 254, 240, 254, 0, 253, 19, 0, 51, 2, 192, 8, 253, 255, 247, 254, 135, 0, 217, 254, 177, 253, 124, 254, 140, 0, 98, 1, 50, 255, 252, 254, 8, 254, 229, 252, 79, 254, 50, 253, 217, 250, 109, 0, 75, 1, 194, 3, 83, 254, 169, 255, 140, 2, 216, 254, 170, 1, 251, 3, 17, 255, 7, 3, 83, 3, 233, 1, 54, 5, 49, 4, 178, 254, 180, 254, 25, 0, 31, 2, 182, 4, 15, 7, 70, 1, 61, 0, 215, 2, 66, 2, 81, 3, 125, 5, 48, 255, 235, 254, 73, 1, 104, 255, 64, 0, 157, 2, 78, 254, 90, 253, 41, 253, 58, 254, 185, 255, 251, 0, 93, 2, 224, 1, 254, 0, 30, 254, 11, 0, 228, 3, 223, 254, 139, 1, 230, 1, 210, 2, 25, 4, 160, 5, 226, 255, 196, 254, 238, 252, 150, 255, 141, 255, 149, 253, 93, 3, 194, 5, 132, 5, 31, 4, 86, 5, 160, 4, 44, 3, 213, 4, 157, 3, 42, 0, 5, 255, 192, 253, 86, 1, 141, 0, 58, 254, 88, 255, 176, 255, 79, 5, 170, 254, 112, 253, 29, 249, 100, 0, 53, 3, 213, 2, 222, 3, 235, 2, 32, 3, 76, 1, 184, 1, 56, 2, 151, 2, 123, 1, 84, 3, 112, 0, 165, 0, 143, 254, 85, 2, 142, 3, 26, 1, 248, 255, 66, 3, 1, 5, 160, 254, 60, 2, 183, 2, 206, 1, 198, 8, 14, 7, 89, 1, 190, 0, 94, 5, 160, 1, 147, 3, 118, 8, 168, 0, 174, 255, 24, 1, 252, 253, 66, 254, 72, 3, 47, 0, 21, 2, 44, 0, 150, 254, 57, 253, 137, 251, 22, 0, 193, 0, 192, 5, 171, 255, 233, 0, 21, 7, 194, 255, 67, 2, 224, 5, 38, 2, 176, 3, 213, 6, 211, 2, 138, 2, 124, 4, 204, 3, 116, 3, 115, 5, 87, 254, 131, 2, 0, 0, 232, 3, 184, 3, 74, 4, 249, 0, 166, 5, 160, 2, 178, 254, 169, 255, 124, 8, 214, 253, 90, 7, 112, 10, 140, 0, 34, 7, 61, 7, 152, 3, 213, 6, 30, 10, 52, 4, 141, 7, 246, 7, 119, 255, 69, 254, 237, 249, 245, 4, 150, 4, 212, 1, 19, 254, 134, 255, 241, 5, 61, 254, 9, 4, 190, 4, 226, 1, 159, 6, 94, 4, 47, 3, 137, 2, 128, 1, 66, 254, 76, 253, 107, 0, 193, 254, 163, 253, 138, 255, 49, 255, 7, 254, 13, 2, 44, 254, 244, 255, 176, 10, 75, 0, 142, 7, 25, 5, 112, 3, 54, 9, 219, 8, 5, 5, 39, 6, 212, 7, 208, 255, 208, 254, 94, 251, 77, 254, 51, 254, 5, 255, 146, 254, 108, 254, 221, 253, 223, 254, 163, 253, 171, 253, 230, 253, 214, 252, 91, 255, 136, 255, 3, 0, 100, 1, 127, 2, 217, 4, 222, 5, 96, 0, 177, 0, 238, 2, 77, 254, 183, 253, 106, 251, 156, 254, 109, 0, 177, 255, 27, 254, 32, 1, 213, 7, 9, 0, 92, 4, 219, 2, 112, 3, 86, 8, 178, 3, 247, 254, 49, 6, 41, 4, 133, 4, 186, 4, 75, 3, 14, 254, 100, 253, 175, 1, 118, 1, 65, 1, 27, 255, 160, 5, 53, 8, 101, 5, 193, 1, 205, 1, 131, 4, 151, 255, 39, 0, 128, 254, 249, 254, 111, 1, 182, 0, 141, 254, 108, 253, 5, 3, 68, 255, 127, 4, 203, 3, 53, 5, 96, 6, 155, 5, 6, 3, 243, 4, 197, 4, 30, 254, 192, 252, 47, 250, 19, 255, 46, 255, 92, 3, 122, 3, 79, 6, 40, 4, 216, 1, 38, 4, 168, 4, 185, 0, 53, 4, 221, 3, 200, 253, 32, 252, 88, 249, 63, 254, 122, 252, 5, 248, 114, 255, 135, 254, 54, 254, 46, 255, 214, 253, 251, 251, 245, 255, 109, 4, 217, 8, 183, 254, 93, 253, 131, 252, 6, 255, 145, 2, 163, 4, 7, 2, 230, 5, 243, 6, 8, 2, 27, 2, 123, 5, 15, 2, 141, 5, 22, 5, 205, 253, 153, 252, 32, 251, 109, 255, 49, 254, 111, 3, 180, 255, 30, 9, 24, 11, 51, 2, 13, 10, 81, 9, 120, 2, 134, 7, 104, 11, 207, 2, 231, 7, 48, 7, 223, 253, 45, 253, 84, 4, 129, 0, 131, 255, 116, 3, 137, 5, 96, 6, 157, 3, 162, 255, 30, 6, 215, 6, 171, 254, 253, 5, 15, 6, 79, 2, 139, 1, 238, 254, 180, 255, 213, 3, 15, 11, 153, 0, 169, 11, 52, 7, 8, 4, 5, 10, 189, 10, 228, 5, 16, 11, 87, 7, 23, 3, 175, 4, 26, 2, 66, 255, 59, 254, 209, 5, 234, 254, 220, 253, 134, 4, 11, 255, 149, 7, 252, 7, 0, 4, 24, 6, 114, 6, 0, 2, 253, 0, 210, 1, 194, 255, 189, 254, 127, 4, 39, 254, 136, 254, 251, 1, 79, 254, 100, 5, 114, 8, 131, 3, 151, 7, 165, 5, 134, 0, 192, 2, 184, 1, 204, 1, 13, 2, 228, 255, 62, 254, 23, 1, 58, 5, 0, 0, 203, 3, 252, 0, 67, 254, 141, 253, 33, 252, 164, 254, 166, 253, 112, 250, 142, 1, 200, 2, 120, 6, 149, 255, 58, 1, 78, 255, 93, 0, 178, 8, 190, 8, 6, 2, 81, 3, 144, 2, 50, 254, 57, 253, 65, 254, 174, 0, 222, 255, 167, 4, 137, 255, 42, 0, 237, 3, 140, 254, 18, 1, 246, 2, 12, 4, 48, 9, 46, 7, 163, 2, 188, 6, 218, 5, 174, 1, 6, 5, 85, 8, 127, 255, 73, 254, 0, 0, 139, 254, 32, 3, 96, 8, 6, 0, 51, 6, 174, 9, 222, 1, 84, 2, 80, 8, 84, 254, 32, 253, 225, 5, 129, 1, 178, 0, 212, 3, 139, 0, 193, 1, 201, 4, 242, 253, 182, 252, 42, 252, 145, 0, 18, 6, 218, 4, 111, 2, 168, 5, 144, 2, 93, 1, 248, 3, 202, 5, 31, 0, 232, 254, 159, 1, 196, 254, 212, 2, 105, 6, 104, 1, 34, 4, 44, 2, 76, 254, 154, 254, 177, 4, 157, 254, 99, 4, 147, 7, 145, 1, 48, 6, 200, 8, 241, 253, 12, 252, 99, 1, 233, 0, 238, 0, 185, 8, 218, 253, 127, 252, 129, 253, 147, 254, 11, 254, 165, 7, 133, 1, 68, 7, 85, 6, 162, 0, 108, 4, 240, 4, 19, 255, 150, 4, 110, 5, 128, 253, 101, 254, 116, 0, 28, 255, 158, 6, 250, 8, 103, 6, 138, 8, 219, 8, 50, 2, 249, 4, 98, 10, 67, 1, 82, 1, 238, 6, 66, 2, 83, 4, 84, 3, 22, 0, 82, 2, 166, 3, 113, 255, 206, 2, 190, 1, 50, 0, 71, 0, 247, 255, 174, 254, 70, 253, 129, 250, 102, 0, 118, 255, 204, 252, 202, 254, 43, 254, 133, 251, 158, 1, 67, 0, 245, 254, 36, 4, 46, 3, 161, 5, 12, 6, 80, 5, 248, 4, 218, 6, 103, 7, 125, 6, 227, 7, 85, 8, 28, 7, 16, 7, 14, 9, 53, 7, 132, 2, 163, 255, 198, 1, 90, 3, 73, 1, 120, 255, 233, 1, 254, 254, 128, 255, 58, 255, 23, 253, 215, 255, 204, 255, 247, 254, 39, 252, 90, 1, 137, 0, 223, 1, 51, 249, 20, 253, 84, 253, 117, 251, 67, 249, 145, 254, 129, 252, 135, 251, 240, 252, 24, 254, 78, 252, 56, 252, 171, 255, 122, 254, 43, 253, 215, 0, 172, 254, 85, 255, 252, 3, 148, 3, 177, 7, 52, 2, 179, 0, 234, 2, 150, 2, 209, 3, 198, 6, 119, 3, 110, 2, 146, 3, 171, 3, 88, 3, 141, 4, 53, 1, 176, 2, 35, 3, 149, 3, 161, 0, 58, 2, 118, 0, 236, 255, 229, 254, 208, 252, 214, 255, 204, 0, 52, 251, 187, 254, 50, 254, 61, 252, 54, 255, 113, 255, 36, 252, 28, 254, 151, 254, 66, 253, 46, 252, 35, 254, 210, 254, 234, 252, 92, 251, 156, 255, 238, 252, 192, 251, 226, 251, 77, 252, 108, 249, 54, 255, 181, 252, 242, 252, 241, 251, 158, 250, 123, 252, 144, 253, 146, 255, 171, 255, 100, 1, 213, 0, 246, 255, 19, 254, 108, 1, 6, 3, 169, 1, 54, 3, 223, 1, 173, 255, 45, 2, 8, 2, 32, 252, 232, 249, 196, 253, 165, 253, 27, 253, 230, 255, 10, 254, 130, 253, 121, 252, 209, 0, 50, 1, 147, 0, 196, 254, 175, 253, 172, 253, 171, 255, 45, 255, 31, 255, 106, 252, 239, 253, 117, 0, 233, 0, 73, 254, 30, 253, 77, 4, 239, 2, 121, 2, 177, 5, 180, 6, 231, 5, 229, 6, 177, 5, 142, 3, 98, 4, 132, 4, 81, 3, 74, 5, 100, 3, 214, 1, 153, 252, 130, 251, 252, 248, 153, 252, 163, 252, 32, 252, 138, 255, 155, 0, 212, 0, 229, 251, 175, 252, 162, 253, 163, 251, 199, 248, 66, 245, 5, 252, 109, 250, 179, 248, 114, 1, 72, 255, 98, 254, 191, 3, 237, 1, 104, 0, 190, 3, 15, 4, 31, 2, 154, 0, 141, 2, 201, 0, 225, 4, 251, 1, 150, 0, 151, 2, 247, 1, 230, 0, 111, 2, 9, 3, 163, 2, 147, 2, 88, 0, 146, 255, 75, 3, 244, 0, 224, 0, 126, 1, 29, 2, 46, 1, 212, 2, 177, 1, 154, 2, 142, 4, 222, 2, 85, 1, 118, 255, 20, 0, 115, 254, 97, 251, 88, 254, 210, 255, 191, 254, 160, 254, 132, 255, 53, 5, 253, 3, 56, 4, 6, 1, 110, 1, 211, 2, 154, 3, 27, 1, 217, 253, 31, 0, 132, 253, 157, 253, 79, 253, 71, 253, 97, 254, 72, 252, 245, 252, 55, 255, 207, 250, 170, 253, 153, 254, 71, 252, 251, 250, 166, 0, 237, 1, 49, 1, 221, 0, 78, 3, 191, 2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
      allocate([98, 2, 72, 3, 168, 3, 6, 3, 45, 253, 212, 250, 19, 251, 155, 254, 255, 251, 148, 250, 184, 251, 160, 250, 147, 254, 120, 250, 167, 248, 160, 253, 250, 248, 65, 249, 94, 253, 223, 253, 107, 251, 65, 253, 166, 2, 18, 3, 148, 0, 133, 255, 184, 2, 8, 5, 132, 2, 94, 1, 246, 255, 158, 1, 102, 2, 15, 0, 137, 0, 88, 1, 45, 255, 210, 252, 24, 250, 205, 252, 121, 254, 94, 252, 180, 253, 47, 0, 177, 253, 126, 252, 115, 252, 183, 251, 93, 255, 8, 251, 113, 251, 99, 255, 72, 250, 11, 250, 123, 254, 6, 251, 92, 251, 144, 253, 159, 2, 213, 0, 198, 1, 124, 0, 238, 254, 243, 253, 39, 253, 16, 254, 104, 255, 192, 250, 122, 0, 135, 0, 167, 244, 179, 253, 118, 254, 64, 249, 185, 1, 206, 255, 196, 5, 136, 3, 19, 3, 60, 1, 236, 0, 72, 254, 165, 254, 217, 0, 157, 1, 113, 252, 107, 252, 121, 0, 57, 254, 92, 252, 202, 0, 164, 255, 47, 254, 137, 254, 232, 1, 134, 1, 218, 1, 108, 3, 217, 2, 60, 1, 233, 248, 224, 250, 99, 253, 87, 0, 194, 3, 176, 1, 51, 2, 7, 255, 222, 251, 250, 0, 29, 1, 81, 4, 117, 4, 171, 1, 184, 2, 242, 251, 128, 249, 210, 249, 76, 252, 90, 1, 160, 0, 203, 254, 240, 254, 166, 252, 158, 2, 112, 2, 226, 4, 80, 252, 104, 254, 102, 253, 162, 253, 192, 254, 128, 254, 20, 254, 230, 0, 65, 0, 78, 1, 206, 255, 240, 255, 240, 255, 78, 253, 139, 250, 255, 6, 180, 6, 119, 5, 174, 9, 15, 8, 124, 5, 221, 4, 191, 5, 146, 5, 130, 254, 243, 251, 254, 255, 173, 0, 114, 254, 121, 4, 211, 5, 232, 7, 9, 7, 4, 3, 250, 4, 226, 5, 149, 5, 199, 6, 209, 7, 55, 4, 194, 4, 249, 4, 126, 251, 197, 248, 207, 250, 216, 252, 147, 251, 184, 251, 61, 254, 247, 251, 70, 249, 65, 0, 66, 2, 172, 255, 60, 250, 126, 246, 14, 249, 3, 253, 170, 250, 18, 254, 38, 255, 174, 253, 93, 252, 81, 1, 20, 255, 50, 2, 53, 9, 102, 10, 146, 7, 209, 5, 252, 4, 106, 3, 189, 0, 102, 1, 118, 1, 17, 250, 23, 247, 214, 246, 57, 252, 9, 251, 209, 247, 140, 253, 92, 251, 250, 249, 125, 6, 19, 4, 34, 2, 53, 2, 37, 4, 220, 2, 192, 255, 188, 252, 78, 254, 76, 254, 160, 255, 203, 0, 54, 4, 192, 4, 100, 6, 139, 3, 254, 5, 218, 3, 70, 1, 197, 3, 77, 3, 142, 0, 172, 255, 197, 0, 214, 1, 75, 9, 34, 6, 109, 4, 214, 1, 190, 4, 139, 1, 96, 5, 176, 4, 101, 4, 18, 4, 92, 1, 225, 253, 46, 251, 136, 254, 41, 255, 75, 255, 225, 1, 101, 248, 171, 249, 46, 255, 18, 253, 95, 251, 134, 1, 29, 0, 113, 254, 27, 0, 52, 3, 212, 4, 243, 2, 183, 2, 211, 3, 153, 1, 82, 255, 173, 4, 11, 4, 144, 3, 76, 5, 54, 7, 32, 252, 99, 250, 228, 1, 51, 250, 92, 249, 208, 0, 100, 254, 180, 4, 152, 5, 241, 254, 128, 3, 120, 4, 96, 254, 241, 6, 154, 5, 96, 249, 172, 245, 52, 255, 3, 249, 241, 249, 9, 4, 136, 249, 233, 249, 23, 5, 27, 251, 203, 249, 57, 4, 99, 253, 185, 251, 190, 255, 86, 253, 64, 1, 167, 254, 147, 2, 49, 1, 45, 4, 244, 250, 220, 252, 237, 255, 157, 249, 245, 250, 29, 0, 109, 249, 15, 254, 71, 0, 225, 254, 249, 255, 156, 255, 18, 254, 62, 252, 19, 255, 84, 3, 89, 7, 204, 6, 63, 251, 149, 250, 227, 0, 108, 253, 46, 1, 117, 1, 96, 0, 63, 4, 233, 4, 206, 251, 123, 249, 160, 0, 229, 1, 28, 8, 6, 7, 90, 252, 36, 255, 40, 2, 172, 253, 156, 253, 237, 0, 80, 1, 184, 6, 111, 3, 131, 2, 117, 2, 178, 1, 243, 4, 10, 2, 97, 6, 15, 0, 244, 0, 71, 254, 195, 5, 205, 2, 184, 0, 27, 7, 54, 6, 173, 6, 220, 3, 5, 1, 169, 3, 45, 8, 41, 9, 240, 5, 91, 8, 66, 7, 70, 6, 191, 253, 189, 253, 77, 251, 68, 252, 135, 0, 24, 254, 48, 254, 51, 0, 174, 254, 139, 253, 164, 254, 45, 253, 122, 4, 25, 8, 162, 5, 144, 8, 186, 5, 143, 3, 92, 250, 220, 249, 26, 247, 120, 5, 198, 2, 17, 5, 55, 5, 121, 2, 160, 3, 154, 5, 146, 8, 34, 10, 118, 9, 156, 8, 89, 7, 214, 3, 194, 8, 62, 7, 124, 1, 24, 3, 121, 4, 193, 255, 229, 253, 158, 1, 4, 255, 60, 252, 198, 254, 19, 251, 85, 253, 244, 252, 193, 252, 242, 253, 19, 252, 126, 249, 145, 251, 88, 254, 181, 249, 60, 254, 213, 254, 244, 4, 24, 4, 130, 2, 123, 4, 85, 3, 88, 3, 93, 253, 176, 254, 139, 0, 220, 8, 63, 5, 138, 5, 29, 0, 0, 3, 29, 3, 56, 251, 167, 1, 52, 2, 218, 250, 198, 251, 245, 0, 234, 250, 212, 252, 61, 2, 238, 250, 175, 249, 134, 2, 56, 252, 66, 3, 211, 2, 225, 3, 116, 6, 235, 7, 65, 255, 207, 252, 176, 1, 150, 2, 60, 0, 198, 0, 114, 2, 229, 3, 50, 5, 112, 6, 171, 7, 9, 5, 195, 249, 163, 255, 211, 255, 192, 251, 37, 0, 172, 255, 117, 6, 47, 10, 33, 9, 41, 4, 248, 7, 73, 9, 115, 4, 22, 9, 70, 8, 91, 3, 101, 1, 230, 5, 152, 2, 203, 4, 75, 4, 223, 1, 80, 5, 144, 3, 105, 7, 218, 6, 227, 7, 144, 4, 117, 7, 248, 6, 143, 1, 34, 0, 0, 1, 175, 253, 208, 254, 227, 251, 35, 2, 158, 6, 127, 5, 135, 2, 157, 255, 171, 254, 212, 5, 111, 6, 166, 4, 38, 0, 124, 253, 44, 255, 139, 1, 78, 3, 222, 0, 64, 253, 3, 253, 52, 253, 44, 253, 84, 248, 12, 245, 106, 255, 35, 1, 174, 255, 209, 4, 179, 5, 239, 3, 116, 255, 101, 255, 153, 0, 183, 1, 41, 1, 32, 6, 7, 250, 102, 254, 132, 253, 0, 6, 199, 1, 19, 255, 208, 250, 117, 255, 252, 254, 19, 2, 42, 2, 100, 3, 13, 1, 240, 4, 94, 2, 23, 255, 115, 3, 207, 1, 230, 2, 88, 2, 136, 255, 183, 255, 165, 1, 212, 0, 73, 254, 198, 255, 36, 3, 250, 250, 39, 251, 216, 2, 38, 1, 22, 254, 50, 0, 177, 253, 119, 252, 26, 251, 42, 0, 81, 253, 147, 0, 231, 255, 17, 1, 84, 2, 201, 254, 189, 4, 89, 2, 14, 253, 81, 3, 72, 2, 173, 1, 95, 2, 75, 2, 166, 253, 90, 255, 205, 1, 228, 252, 201, 252, 9, 3, 100, 5, 142, 3, 219, 6, 119, 0, 137, 5, 204, 3, 37, 255, 144, 252, 196, 249, 231, 251, 14, 252, 182, 1, 55, 253, 157, 250, 78, 0, 0, 0, 65, 254, 101, 251, 144, 251, 217, 250, 219, 249, 200, 8, 231, 6, 29, 5, 178, 3, 47, 6, 152, 5, 126, 4, 226, 1, 180, 1, 43, 254, 172, 251, 106, 2, 65, 254, 58, 252, 64, 4, 28, 251, 21, 250, 142, 255, 176, 251, 40, 248, 189, 253, 210, 0, 101, 2, 241, 1, 73, 248, 99, 250, 130, 2, 11, 251, 168, 252, 243, 3, 146, 249, 95, 251, 39, 4, 237, 249, 96, 253, 180, 4, 100, 249, 166, 251, 111, 2, 45, 252, 210, 250, 3, 251, 27, 2, 109, 255, 126, 3, 182, 250, 127, 252, 78, 254, 120, 3, 219, 1, 172, 1, 153, 0, 128, 254, 82, 1, 44, 250, 1, 254, 103, 1, 50, 252, 165, 251, 42, 254, 105, 0, 218, 253, 165, 2, 87, 252, 135, 251, 109, 3, 124, 1, 252, 254, 210, 0, 149, 6, 156, 3, 232, 4, 239, 6, 166, 4, 71, 4, 139, 5, 119, 2, 21, 2, 115, 2, 43, 1, 165, 254, 101, 254, 234, 253, 135, 2, 118, 253, 29, 0, 173, 253, 134, 254, 169, 250, 27, 6, 122, 5, 97, 4, 185, 5, 65, 4, 130, 5, 136, 2, 208, 247, 190, 251, 250, 255, 55, 1, 62, 255, 155, 252, 129, 253, 193, 252, 160, 1, 118, 251, 56, 251, 69, 5, 33, 251, 83, 252, 21, 7, 111, 247, 61, 248, 197, 1, 149, 253, 169, 250, 68, 252, 186, 249, 76, 248, 29, 250, 105, 251, 223, 251, 176, 251, 135, 254, 89, 2, 201, 0, 84, 7, 57, 3, 118, 1, 82, 254, 213, 250, 29, 0, 139, 250, 31, 251, 205, 250, 17, 252, 32, 250, 192, 3, 135, 250, 39, 248, 197, 0, 157, 250, 99, 248, 20, 255, 203, 251, 123, 0, 166, 1, 103, 2, 245, 4, 34, 2, 206, 254, 246, 5, 136, 3, 170, 4, 252, 6, 153, 4, 142, 253, 140, 252, 10, 250, 199, 0, 254, 2, 224, 5, 215, 251, 94, 3, 197, 0, 246, 251, 19, 249, 137, 252, 224, 252, 145, 0, 87, 2, 146, 251, 249, 253, 114, 2, 75, 251, 122, 248, 244, 1, 114, 252, 239, 251, 141, 250, 60, 250, 225, 249, 55, 252, 245, 253, 74, 3, 34, 0, 2, 7, 134, 2, 94, 3, 73, 251, 160, 248, 22, 252, 178, 255, 247, 255, 96, 253, 20, 4, 247, 2, 80, 0, 168, 253, 115, 4, 251, 3, 57, 0, 208, 7, 142, 5, 191, 252, 134, 5, 97, 4, 78, 251, 94, 6, 236, 4, 51, 254, 140, 5, 220, 4, 1, 6, 207, 3, 253, 0, 229, 254, 68, 1, 153, 254, 87, 2, 61, 255, 106, 0, 76, 2, 62, 0, 181, 253, 11, 253, 133, 2, 205, 0, 51, 0, 177, 4, 246, 2, 71, 251, 161, 2, 122, 254, 144, 253, 45, 6, 173, 3, 105, 255, 255, 3, 223, 2, 4, 11, 21, 5, 178, 2, 210, 254, 12, 2, 157, 255, 124, 252, 204, 249, 91, 251, 60, 4, 251, 0, 238, 0, 222, 7, 0, 7, 242, 3, 221, 4, 97, 6, 205, 6, 53, 251, 252, 249, 72, 251, 147, 253, 200, 1, 147, 255, 40, 0, 191, 255, 20, 3, 219, 252, 69, 253, 186, 250, 185, 253, 136, 3, 64, 3, 223, 252, 20, 2, 82, 2, 180, 7, 128, 5, 71, 5, 103, 251, 168, 248, 190, 247, 251, 252, 56, 2, 180, 3, 9, 252, 55, 4, 236, 4, 169, 251, 226, 1, 126, 255, 242, 6, 20, 4, 12, 3, 45, 250, 245, 0, 144, 3, 196, 254, 139, 251, 107, 252, 232, 253, 94, 250, 214, 246, 239, 252, 246, 249, 60, 248, 45, 248, 1, 1, 141, 3, 199, 248, 135, 253, 71, 251, 254, 249, 130, 248, 226, 251, 70, 6, 191, 8, 40, 6, 201, 253, 36, 250, 248, 249, 1, 251, 195, 0, 89, 5, 207, 252, 37, 1, 195, 4, 243, 253, 118, 2, 173, 4, 94, 249, 135, 246, 208, 248, 209, 254, 219, 2, 235, 2, 111, 251, 5, 255, 13, 1, 74, 252, 181, 255, 148, 6, 98, 251, 59, 254, 237, 3, 193, 249, 73, 2, 122, 1, 229, 247, 197, 253, 85, 254, 239, 253, 121, 251, 109, 251, 229, 254, 51, 255, 204, 253, 228, 252, 222, 4, 205, 2, 229, 8, 159, 3, 27, 2, 58, 254, 47, 2, 184, 1, 51, 253, 180, 5, 79, 6, 250, 251, 28, 4, 74, 6, 111, 251, 118, 255, 79, 3, 226, 0, 39, 0, 156, 253, 29, 251, 150, 255, 39, 253, 117, 253, 200, 3, 22, 5, 54, 253, 132, 253, 191, 6, 97, 1, 45, 4, 154, 1, 226, 252, 100, 255, 75, 4, 194, 253, 150, 3, 190, 1, 226, 250, 244, 3, 210, 1, 128, 5, 55, 6, 253, 2, 149, 5, 100, 5, 221, 6, 157, 7, 164, 7, 74, 9, 42, 6, 255, 7, 100, 8, 148, 3, 98, 0, 249, 255, 101, 7, 138, 5, 93, 8, 92, 1, 125, 5, 43, 6, 152, 0, 110, 4, 9, 7, 245, 254, 154, 0, 115, 5, 114, 251, 213, 1, 30, 4, 138, 251, 107, 254, 207, 251, 195, 250, 40, 247, 211, 249, 148, 254, 101, 3, 170, 6, 118, 251, 37, 2, 14, 6, 55, 251, 116, 248, 126, 249, 51, 250, 71, 248, 249, 247, 65, 249, 118, 252, 158, 255, 151, 248, 233, 0, 212, 5, 124, 3, 108, 0, 181, 254, 64, 249, 110, 251, 92, 249, 220, 251, 188, 7, 254, 6, 210, 251, 51, 249, 139, 248, 245, 255, 3, 6, 37, 5, 192, 249, 94, 0, 241, 1, 165, 1, 187, 1, 59, 255, 214, 249, 163, 254, 30, 252, 169, 253, 229, 253, 116, 4, 59, 252, 117, 250, 127, 255, 195, 250, 175, 0, 65, 254, 137, 254, 31, 5, 7, 8, 141, 254, 118, 253, 205, 254, 207, 251, 93, 2, 109, 1, 247, 247, 143, 255, 174, 1, 140, 2, 146, 3, 199, 3, 12, 252, 206, 249, 237, 246, 225, 5, 224, 4, 47, 2, 6, 1, 26, 254, 111, 254, 65, 249, 62, 5, 10, 6, 50, 0, 56, 0, 176, 1, 182, 254, 119, 0, 164, 253, 19, 250, 200, 251, 214, 252, 178, 3, 103, 4, 31, 4, 136, 250, 89, 249, 80, 249, 10, 251, 64, 253, 219, 250, 39, 3, 29, 7, 119, 4, 200, 10, 70, 6, 123, 8, 96, 4, 153, 1, 106, 255, 109, 255, 148, 1, 191, 3, 135, 9, 119, 7, 141, 8, 118, 252, 115, 255, 158, 252, 120, 252, 114, 255, 54, 254, 211, 253, 60, 253, 113, 249, 194, 252, 105, 250, 209, 249, 206, 248, 190, 250, 194, 251, 188, 249, 240, 254, 147, 3, 84, 251, 4, 3, 32, 4, 130, 253, 46, 251, 151, 248, 12, 254, 175, 255, 202, 252, 247, 250, 179, 249, 33, 253, 139, 255, 17, 3, 168, 0, 190, 251, 109, 4, 154, 3, 184, 251, 22, 253, 104, 5, 31, 1, 221, 253, 217, 251, 160, 250, 103, 247, 76, 251, 128, 247, 222, 249, 35, 249, 25, 250, 63, 247, 253, 252, 55, 249, 75, 4, 62, 3, 204, 249, 212, 2, 219, 4, 250, 249, 181, 2, 37, 3, 102, 249, 16, 255, 129, 6, 92, 249, 252, 255, 100, 253, 101, 8, 48, 3, 18, 4, 206, 252, 207, 248, 22, 0, 4, 253, 5, 254, 193, 1, 129, 251, 151, 253, 33, 1, 181, 252, 196, 249, 16, 255, 242, 1, 22, 255, 111, 253, 16, 253, 224, 1, 142, 6, 193, 254, 31, 254, 193, 0, 213, 252, 171, 0, 137, 255, 176, 247, 54, 255, 176, 252, 181, 6, 116, 4, 164, 6, 67, 0, 239, 255, 66, 0, 244, 255, 102, 249, 187, 253, 152, 255, 240, 254, 204, 251, 94, 251, 203, 248, 136, 254, 140, 251, 98, 252, 92, 254, 198, 255, 253, 254, 112, 253, 146, 251, 215, 253, 252, 6, 203, 4, 199, 1, 129, 0, 206, 1, 185, 1, 16, 255, 240, 253, 72, 3, 2, 2, 130, 0, 181, 255, 90, 4, 111, 2, 153, 0, 216, 0, 44, 4, 52, 2, 250, 255, 236, 254, 95, 4, 215, 2, 190, 0, 188, 255, 192, 2, 50, 1, 119, 0, 248, 254, 73, 1, 61, 0, 156, 255, 156, 0, 108, 1, 123, 0, 183, 0, 48, 255, 85, 255, 133, 255, 220, 0, 191, 255, 206, 254, 194, 255, 146, 1, 17, 0, 108, 253, 86, 252, 246, 254, 0, 0, 129, 1, 235, 0, 20, 1, 29, 1, 64, 1, 12, 1, 176, 254, 56, 255, 44, 253, 17, 0, 172, 255, 125, 1, 224, 253, 173, 1, 238, 1, 7, 2, 139, 255, 32, 1, 48, 1, 73, 1, 131, 2, 157, 0, 189, 2, 252, 1, 176, 4, 113, 2, 28, 3, 96, 2, 230, 3, 165, 1, 236, 1, 120, 2, 180, 4, 12, 3, 190, 1, 132, 0, 233, 4, 76, 3, 35, 2, 193, 1, 61, 3, 146, 2, 29, 2, 214, 1, 108, 4, 234, 4, 150, 3, 127, 2, 35, 2, 51, 0, 167, 1, 23, 1, 9, 0, 136, 1, 83, 0, 94, 0, 30, 2, 31, 2, 229, 0, 109, 255, 58, 255, 129, 0, 194, 0, 71, 255, 161, 252, 215, 250, 210, 254, 30, 0, 171, 253, 139, 253, 237, 255, 114, 0, 124, 252, 199, 251, 210, 1, 97, 1, 53, 250, 219, 249, 15, 0, 113, 255, 84, 249, 245, 247, 17, 253, 196, 0, 172, 248, 237, 247, 126, 253, 254, 254, 225, 246, 66, 250, 62, 254, 204, 253, 184, 253, 70, 255, 152, 252, 98, 254, 243, 248, 36, 252, 155, 251, 226, 250, 42, 253, 151, 251, 28, 0, 169, 0, 241, 251, 160, 252, 50, 253, 10, 255, 228, 1, 36, 0, 23, 255, 207, 255, 9, 1, 67, 0, 33, 1, 211, 1, 178, 0, 31, 2, 42, 3, 28, 2, 84, 0, 26, 1, 160, 2, 191, 2, 49, 252, 247, 252, 129, 0, 31, 1, 86, 252, 29, 255, 187, 3, 83, 2, 175, 249, 223, 254, 68, 3, 137, 2, 201, 248, 41, 255, 82, 4, 206, 2, 14, 248, 195, 251, 138, 2, 184, 1, 203, 247, 239, 253, 139, 3, 63, 2, 37, 248, 176, 254, 158, 2, 204, 0, 171, 246, 76, 253, 104, 1, 137, 0, 148, 247, 100, 247, 247, 255, 24, 1, 246, 254, 119, 0, 39, 0, 193, 0, 78, 0, 197, 255, 136, 255, 226, 0, 49, 252, 166, 252, 243, 252, 185, 251, 149, 253, 99, 254, 61, 254, 182, 252, 64, 251, 215, 250, 211, 252, 141, 252, 160, 250, 177, 249, 118, 254, 84, 254, 31, 253, 167, 251, 219, 253, 234, 252, 144, 252, 49, 252, 57, 252, 126, 253, 39, 252, 138, 252, 7, 251, 175, 250, 39, 254, 220, 252, 135, 250, 129, 250, 160, 0, 247, 254, 105, 252, 237, 254, 8, 255, 6, 255, 50, 253, 132, 254, 97, 0, 153, 255, 137, 254, 27, 255, 97, 254, 63, 255, 121, 255, 213, 253, 116, 2, 105, 1, 119, 0, 216, 0, 67, 2, 108, 1, 135, 1, 209, 0, 122, 2, 10, 2, 102, 255, 108, 255, 14, 2, 133, 1, 170, 0, 33, 0, 105, 0, 11, 1, 64, 0, 124, 1, 33, 250, 24, 252, 226, 255, 143, 254, 210, 251, 58, 0, 135, 2, 223, 0, 16, 250, 221, 254, 109, 2, 51, 1, 5, 250, 156, 0, 250, 2, 148, 1, 19, 248, 141, 0, 222, 2, 243, 1, 199, 248, 118, 253, 50, 1, 0, 2, 69, 255, 152, 255, 197, 255, 182, 1, 134, 0, 26, 255, 156, 0, 70, 255, 195, 255, 252, 254, 240, 255, 10, 0, 199, 253, 253, 255, 91, 254, 215, 254, 67, 249, 247, 253, 166, 254, 178, 0, 174, 250, 197, 255, 212, 255, 157, 0, 158, 247, 51, 254, 42, 254, 163, 254, 134, 247, 255, 255, 143, 254, 135, 255, 213, 249, 139, 254, 124, 252, 9, 252, 163, 251, 177, 253, 155, 253, 240, 252, 207, 253, 122, 0, 181, 255, 63, 254, 252, 255, 85, 255, 133, 255, 140, 254, 192, 0, 168, 0, 180, 255, 124, 255, 252, 0, 149, 255, 84, 1, 210, 0, 136, 1, 253, 1, 16, 1, 181, 0, 147, 255, 145, 0, 218, 0, 119, 0, 96, 254, 249, 254, 229, 1, 9, 1, 75, 255, 248, 255, 226, 254, 226, 0, 12, 255, 38, 255, 69, 0, 222, 254, 98, 255, 191, 0, 255, 255, 192, 255, 176, 253, 166, 255, 213, 0, 160, 255, 255, 0, 179, 1, 178, 0, 176, 255, 143, 254, 238, 255, 223, 255, 176, 255, 214, 255, 159, 1, 140, 0, 34, 255, 119, 4, 139, 2, 137, 2, 73, 1, 255, 2, 44, 2, 249, 0, 235, 0, 180, 3, 157, 1, 186, 1, 23, 1, 141, 0, 83, 1, 100, 1, 45, 2, 42, 254, 86, 255, 99, 0, 237, 0, 199, 253, 224, 252, 96, 1, 53, 2, 26, 1, 217, 1, 214, 1, 76, 1, 57, 255, 78, 253, 252, 250, 107, 252, 63, 255, 86, 254, 224, 252, 158, 251, 230, 255, 141, 254, 22, 254, 63, 255, 125, 2, 83, 2, 7, 2, 74, 1, 152, 1, 141, 255, 79, 0, 12, 0, 221, 1, 87, 0, 153, 255, 136, 254, 102, 253, 165, 254, 235, 254, 221, 254, 2, 254, 31, 254, 169, 0, 41, 1, 195, 252, 30, 253, 51, 255, 85, 255, 192, 254, 228, 253, 72, 1, 27, 1, 165, 252, 66, 252, 186, 1, 254, 255, 44, 2, 174, 2, 130, 0, 56, 0, 103, 5, 244, 3, 243, 2, 171, 1, 100, 2, 229, 2, 116, 2, 41, 2, 173, 254, 228, 252, 134, 0, 21, 1, 135, 253, 195, 251, 254, 255, 10, 255, 144, 252, 245, 251, 185, 249, 216, 251, 30, 252, 38, 254, 142, 251, 24, 254, 98, 254, 229, 252, 73, 0, 50, 255, 248, 255, 117, 255, 183, 1, 204, 0, 80, 255, 190, 253, 23, 0, 131, 0, 243, 254, 11, 253, 65, 255, 245, 0, 147, 255, 174, 254, 112, 0, 60, 1, 120, 0, 106, 254, 138, 255, 99, 2, 76, 255, 70, 255, 123, 253, 115, 0, 83, 255, 34, 0, 250, 253, 23, 254, 105, 255, 61, 0, 185, 253, 180, 252, 220, 0, 118, 255, 87, 253, 4, 252, 135, 1, 239, 255, 170, 253, 191, 254, 157, 0, 217, 254, 129, 0, 155, 0, 98, 252, 149, 252, 37, 252, 29, 1, 241, 0, 173, 255, 131, 255, 131, 255, 108, 2, 85, 2, 176, 1, 92, 0, 137, 1, 78, 0, 153, 1, 61, 0, 119, 254, 29, 253, 99, 254, 20, 253, 83, 0, 54, 0, 105, 1, 27, 0, 196, 251, 130, 0, 175, 254, 74, 253, 227, 249, 41, 1, 62, 1, 237, 255, 175, 248, 36, 0, 51, 0, 195, 254, 237, 246, 10, 255, 231, 0, 172, 255, 254, 246, 241, 252, 40, 0, 77, 255, 71, 247, 94, 252, 38, 254, 50, 254, 14, 253, 170, 255, 224, 254, 142, 253, 149, 246, 57, 254, 193, 255, 171, 0, 181, 251, 186, 251, 230, 255, 113, 255, 87, 251, 57, 254, 106, 254, 131, 254, 163, 253, 46, 255, 160, 255, 205, 255, 188, 253, 36, 254, 236, 254, 241, 255, 85, 251, 134, 253, 77, 251, 143, 252, 134, 254, 35, 255, 99, 253, 72, 252, 82, 2, 178, 0, 109, 254, 92, 253, 251, 2, 71, 1, 89, 2, 34, 1, 172, 0, 44, 1, 203, 0, 157, 0, 200, 255, 176, 254, 100, 1, 24, 0, 28, 255, 216, 254, 253, 254, 227, 255, 70, 255, 7, 1, 160, 1, 14, 0, 159, 254, 117, 1, 244, 255, 40, 255, 1, 1, 96, 0, 174, 0, 57, 0, 10, 250, 152, 253, 70, 252, 13, 254, 15, 254, 104, 255, 179, 254, 125, 0, 105, 0, 200, 0, 179, 0, 159, 255, 181, 254, 32, 255, 253, 2, 185, 2, 248, 2, 0, 1, 45, 1, 59, 0, 199, 1, 171, 255, 204, 0, 32, 1, 254, 253, 240, 0, 251, 0, 147, 255, 0, 1, 161, 1, 222, 255, 99, 254, 101, 0, 174, 1, 128, 1, 156, 0, 225, 255, 246, 255, 206, 0, 170, 1, 77, 2, 145, 0, 143, 0, 71, 0, 40, 3, 138, 3, 77, 1, 93, 1, 218, 3, 170, 3, 77, 2, 75, 1, 20, 5, 56, 3, 187, 0, 253, 1, 38, 4, 141, 2, 123, 1, 210, 1, 182, 5, 169, 3, 145, 1, 18, 1, 19, 3, 93, 3, 9, 1, 2, 0, 97, 2, 41, 2, 28, 0, 49, 1, 158, 3, 84, 1, 106, 0, 130, 1, 241, 0, 245, 254, 109, 255, 225, 0, 78, 255, 234, 253, 91, 1, 246, 1, 125, 253, 131, 254, 141, 1, 30, 0, 117, 253, 35, 253, 77, 254, 142, 1, 105, 254, 42, 253, 28, 254, 8, 255, 235, 252, 110, 252, 74, 254, 36, 254, 14, 254, 122, 254, 75, 0, 217, 254, 60, 252, 178, 253, 162, 253, 150, 0, 135, 255, 207, 255, 101, 255, 178, 255, 167, 3, 38, 2, 133, 1, 38, 0, 191, 254, 127, 0, 168, 1, 59, 1, 227, 254, 143, 255, 27, 1, 3, 1, 146, 2, 203, 0, 66, 1, 230, 1, 135, 3, 249, 1, 236, 2, 161, 1, 99, 2, 167, 1, 43, 2, 0, 2, 239, 0, 173, 255, 190, 253, 237, 255, 173, 254, 37, 253, 93, 1, 13, 0, 90, 252, 137, 250, 142, 255, 152, 254, 107, 0, 180, 2, 182, 0, 90, 0, 37, 251, 254, 249, 241, 249, 43, 253, 200, 253, 121, 252, 173, 250, 243, 253, 251, 253, 171, 252, 163, 252, 20, 252, 88, 255, 78, 253, 189, 252, 63, 0, 119, 255, 212, 253, 221, 253, 144, 0, 226, 254, 207, 252, 229, 1, 63, 1, 109, 255, 104, 254, 14, 2, 246, 0, 165, 254, 78, 254, 41, 1, 228, 255, 222, 254, 41, 254, 170, 251, 251, 250, 52, 254, 153, 254, 36, 252, 230, 252, 67, 5, 19, 5, 178, 2, 11, 2, 192, 4, 44, 4, 70, 4, 245, 2, 57, 3, 116, 4, 240, 2, 238, 1, 228, 4, 85, 5, 171, 4, 130, 3, 9, 2, 29, 4, 20, 2, 176, 1, 178, 254, 40, 255, 199, 254, 249, 254, 96, 255, 52, 0, 40, 254, 101, 255, 127, 0, 136, 0, 132, 254, 44, 0, 83, 3, 154, 1, 94, 255, 23, 254, 123, 0, 1, 255, 228, 252, 101, 253, 66, 4, 149, 3, 21, 3, 237, 1, 117, 5, 173, 4, 46, 2, 202, 0, 205, 255, 138, 255, 170, 254, 67, 253, 83, 0, 108, 0, 214, 255, 71, 254, 61, 0, 95, 0, 31, 1, 0, 1, 229, 255, 89, 0, 12, 2, 19, 2, 95, 1, 227, 0, 80, 2, 33, 2, 185, 2, 155, 0, 92, 255, 51, 1, 126, 2, 18, 1, 23, 254, 206, 255, 242, 2, 240, 0, 90, 255, 132, 255, 140, 255, 189, 253, 68, 251, 193, 255, 190, 0, 217, 254, 240, 251, 240, 250, 147, 0, 136, 254, 79, 255, 143, 255, 73, 3, 217, 4, 27, 4, 156, 2, 2, 0, 37, 1, 39, 2, 48, 1, 184, 251, 71, 252, 8, 255, 120, 1, 18, 253, 59, 252, 87, 0, 4, 2, 237, 254, 252, 253, 177, 2, 135, 1, 133, 254, 125, 253, 108, 3, 82, 2, 122, 254, 11, 252, 123, 253, 61, 2, 149, 255, 200, 253, 79, 253, 198, 252, 255, 251, 229, 255, 184, 254, 53, 255, 93, 3, 237, 2, 36, 2, 233, 0, 132, 249, 237, 251, 195, 1, 108, 0, 108, 253, 148, 253, 174, 1, 236, 0, 21, 0, 116, 254, 122, 251, 137, 253, 92, 5, 18, 5, 199, 3, 65, 2, 101, 4, 101, 4, 77, 2, 198, 1, 189, 254, 159, 252, 45, 254, 153, 0, 44, 254, 69, 253, 220, 252, 3, 254, 120, 254, 50, 253, 52, 255, 221, 255, 165, 253, 187, 251, 201, 253, 94, 255, 7, 254, 20, 252, 154, 255, 94, 1, 219, 0, 224, 0, 167, 1, 252, 0, 139, 1, 79, 2, 96, 2, 107, 1, 22, 253, 160, 255, 117, 1, 172, 0, 171, 0, 39, 1, 202, 2, 83, 1, 233, 0, 77, 0, 107, 0, 21, 1, 157, 0, 153, 0, 13, 254, 156, 254, 11, 6, 49, 4, 64, 2, 238, 1, 220, 254, 173, 254, 8, 254, 176, 253, 121, 252, 184, 255, 149, 253, 31, 254, 198, 249, 163, 251, 201, 253, 2, 255, 231, 252, 5, 254, 204, 253, 221, 254, 20, 254, 236, 253, 246, 1, 48, 2, 130, 254, 171, 1, 88, 2, 230, 0, 29, 255, 221, 1, 251, 0, 75, 0, 29, 1, 74, 3, 45, 3, 220, 1, 226, 250, 203, 250, 186, 0, 121, 1, 181, 253, 107, 252, 131, 2, 125, 1, 94, 251, 215, 253, 155, 1, 82, 0, 153, 251, 204, 252, 82, 255, 228, 253, 164, 253, 119, 0, 31, 2, 205, 0, 132, 254, 145, 2, 141, 3, 55, 2, 112, 0, 214, 254, 138, 254, 114, 0, 167, 252, 5, 255, 56, 0, 159, 0, 145, 1, 89, 1, 222, 255, 116, 255, 145, 255, 161, 253, 41, 0, 102, 2, 99, 1, 142, 255, 179, 255, 218, 1, 66, 2, 56, 0, 170, 5, 156, 3, 74, 4, 140, 5, 229, 2, 144, 1, 246, 0, 22, 0, 76, 2, 57, 1, 135, 255, 71, 1, 63, 3, 216, 1, 142, 251, 160, 253, 88, 3, 40, 2, 39, 251, 208, 251, 126, 2, 88, 2, 154, 254, 254, 0, 179, 254, 209, 254, 122, 253, 227, 2, 102, 1, 74, 0, 202, 4, 135, 6, 197, 4, 81, 3, 193, 8, 88, 6, 215, 3, 124, 2, 49, 7, 197, 5, 237, 2, 128, 1, 94, 1, 7, 1, 87, 0, 128, 0, 146, 248, 83, 252, 112, 255, 192, 255, 58, 249, 1, 255, 32, 1, 225, 255, 172, 245, 42, 251, 110, 1, 235, 0, 149, 249, 188, 251, 192, 250, 208, 254, 227, 253, 205, 251, 164, 251, 123, 0, 102, 251, 4, 255, 208, 252, 76, 255, 8, 252, 21, 2, 53, 2, 233, 0, 25, 254, 82, 254, 68, 255, 78, 1, 99, 3, 212, 4, 22, 2, 171, 0, 202, 249, 185, 249, 123, 2, 118, 2, 108, 247, 54, 1, 156, 3, 156, 1, 202, 246, 184, 254, 188, 3, 17, 2, 177, 245, 135, 254, 118, 2, 22, 1, 214, 245, 61, 1, 31, 3, 43, 1, 154, 246, 133, 0, 84, 1, 31, 0, 148, 247, 68, 250, 131, 0, 125, 0, 96, 251, 22, 254, 117, 255, 46, 0, 24, 253, 191, 1, 123, 3, 52, 2, 67, 0, 61, 254, 134, 2, 92, 2, 215, 253, 83, 254, 148, 252, 140, 1, 162, 0, 190, 255, 25, 5, 147, 3, 223, 1, 67, 2, 64, 4, 26, 3, 194, 1, 22, 1, 54, 2, 68, 1, 223, 251, 102, 255, 148, 0, 79, 255, 15, 246, 168, 0, 46, 4, 80, 2, 209, 246, 214, 255, 51, 3, 89, 1, 216, 246, 61, 253, 209, 2, 250, 0, 129, 247, 39, 250, 203, 254, 122, 0, 178, 255, 183, 255, 120, 0, 173, 0, 252, 255, 6, 1, 249, 254, 251, 254, 81, 254, 192, 255, 107, 254, 36, 253, 207, 245, 116, 0, 173, 255, 63, 255, 11, 250, 80, 252, 35, 254, 43, 253, 4, 254, 51, 1, 170, 0, 172, 0, 64, 3, 161, 1, 64, 3, 174, 2, 31, 255, 177, 0, 126, 3, 50, 3, 30, 254, 123, 254, 255, 4, 15, 4, 129, 254, 201, 0, 162, 254, 40, 0, 218, 2, 123, 2, 226, 0, 14, 2, 247, 1, 206, 1, 82, 1, 142, 1, 23, 2, 202, 2, 40, 0, 230, 254, 202, 5, 191, 5, 61, 4, 219, 2, 25, 6, 48, 4, 141, 3, 181, 2, 139, 5, 2, 5, 121, 3, 111, 3, 129, 4, 216, 2, 162, 4, 72, 3, 30, 255, 106, 4, 181, 3, 177, 2, 18, 254, 38, 252, 236, 249, 128, 255, 200, 253, 47, 253, 55, 253, 230, 255, 61, 1, 12, 2, 70, 0, 135, 0, 107, 254, 159, 252, 26, 249, 116, 253, 82, 255, 223, 252, 117, 3, 5, 3, 103, 255, 165, 255, 75, 4, 239, 2, 6, 254, 131, 251, 85, 3, 134, 2, 241, 0, 14, 3, 7, 2, 27, 2, 61, 7, 164, 6, 77, 4, 172, 2, 31, 251, 50, 250, 48, 254, 188, 0, 131, 252, 127, 250, 224, 250, 171, 254, 121, 255, 182, 1, 81, 255, 18, 0, 87, 4, 208, 3, 63, 1, 208, 0, 106, 250, 24, 249, 83, 0, 202, 1, 238, 253, 24, 252, 51, 1, 129, 0, 184, 252, 241, 255, 227, 255, 156, 254, 113, 252, 100, 252, 133, 251, 14, 255, 137, 255, 240, 253, 127, 0, 123, 255, 7, 253, 3, 253, 190, 0, 173, 255, 197, 254, 127, 3, 10, 2, 231, 0, 34, 255, 102, 0, 193, 255, 84, 254, 60, 1, 187, 2, 123, 1, 70, 0, 25, 0, 204, 2, 58, 1, 148, 255, 251, 1, 106, 3, 54, 2, 238, 0, 108, 0, 173, 3, 7, 2, 195, 0, 169, 1, 196, 255, 85, 254, 1, 1, 139, 0, 153, 255, 138, 253, 190, 1, 78, 1, 114, 1, 156, 1, 48, 0, 84, 255, 78, 253, 229, 254, 45, 2, 187, 0, 226, 254, 158, 0, 227, 1, 140, 0, 14, 1, 168, 254, 137, 253, 156, 3, 67, 2, 140, 255, 132, 0, 142, 0, 210, 1, 188, 255, 192, 255, 230, 0, 111, 255, 210, 254, 226, 253, 221, 252, 112, 252, 250, 3, 225, 2, 251, 252, 247, 3, 118, 2, 41, 1, 220, 245, 95, 0, 189, 1, 80, 1, 182, 247, 235, 1, 254, 1, 191, 0, 27, 251, 161, 0, 254, 255, 188, 254, 86, 250, 135, 253, 56, 253, 151, 255, 182, 252, 2, 255, 101, 254, 100, 0, 128, 253, 222, 254, 242, 3, 251, 2, 118, 253, 57, 1, 145, 4, 218, 2, 140, 0, 249, 1, 6, 4, 254, 2, 4, 3, 31, 1, 43, 4, 55, 3, 239, 1, 237, 2, 49, 1, 67, 1, 92, 255, 206, 1, 78, 0, 143, 1, 170, 254, 150, 252, 69, 0, 85, 2, 240, 255, 108, 2, 109, 2, 81, 1, 118, 255, 68, 254, 247, 254, 218, 0, 84, 0, 62, 254, 185, 3, 154, 2, 34, 255, 221, 252, 29, 2, 92, 2, 103, 252, 160, 250, 244, 0, 116, 0, 183, 252, 45, 253, 118, 2, 76, 2, 140, 0, 151, 2, 38, 1, 112, 1, 167, 3, 22, 4, 113, 3, 247, 2, 210, 6, 184, 5, 148, 3, 116, 2, 180, 1, 195, 3, 25, 1, 1, 0, 137, 255, 74, 0, 30, 2, 213, 0, 1, 0, 201, 253, 45, 1, 241, 0, 4, 1, 179, 1, 222, 0, 140, 1, 168, 3, 189, 3, 84, 4, 191, 2, 254, 1, 250, 1, 40, 3, 222, 1, 89, 2, 182, 2, 192, 3, 108, 2, 204, 3, 229, 2, 212, 3, 88, 2, 66, 3, 205, 2, 255, 2, 172, 2, 131, 2, 204, 3, 167, 3, 126, 2, 245, 1, 149, 2, 208, 2, 83, 3, 151, 255, 136, 253, 209, 254, 139, 255, 83, 254, 130, 0, 21, 3, 186, 1, 246, 253, 68, 255, 192, 2, 117, 1, 9, 253, 42, 0, 46, 3, 11, 2, 237, 253, 143, 251, 117, 1, 66, 2, 86, 253, 77, 251, 57, 254, 29, 1, 117, 251, 215, 249, 182, 251, 44, 0, 81, 0, 174, 255, 200, 2, 107, 1, 221, 1, 246, 0, 186, 3, 110, 2, 68, 6, 86, 6, 253, 4, 123, 3, 129, 5, 91, 3, 156, 3, 124, 3, 6, 3, 17, 4, 179, 3, 118, 4, 40, 0, 222, 253, 181, 255, 32, 1, 152, 253, 150, 255, 71, 253, 230, 255, 87, 255, 96, 255, 133, 252, 29, 253, 233, 254, 128, 254, 251, 251, 162, 254, 245, 6, 28, 5, 22, 4, 48, 3, 44, 6, 253, 5, 192, 5, 154, 4, 225, 5, 52, 4, 192, 4, 131, 3, 122, 3, 136, 3, 52, 2, 142, 2, 152, 3, 180, 2, 253, 3, 88, 3, 19, 254, 132, 0, 177, 0, 249, 1, 71, 0, 195, 0, 228, 255, 97, 0, 200, 1, 95, 1, 92, 255, 88, 0, 183, 1, 22, 1, 216, 255, 94, 1, 115, 5, 181, 3, 234, 0, 161, 255, 219, 252, 40, 254, 38, 0, 93, 255, 111, 1, 158, 255, 233, 1, 11, 2, 1, 4, 154, 4, 188, 4, 138, 3, 63, 1, 34, 5, 46, 3, 205, 1, 133, 255, 225, 253, 220, 252, 191, 1, 20, 253, 188, 254, 127, 252, 153, 251, 31, 253, 11, 254, 235, 252, 55, 253, 203, 2, 9, 3, 215, 4, 154, 3, 157, 7, 147, 7, 88, 5, 97, 3, 218, 2, 112, 3, 246, 2, 132, 1, 153, 252, 198, 1, 17, 0, 5, 255, 131, 254, 214, 252, 209, 249, 239, 0, 247, 253, 58, 252, 232, 252, 3, 1, 134, 252, 178, 250, 254, 252, 183, 255, 166, 0, 93, 1, 44, 255, 67, 1, 184, 252, 211, 254, 217, 1, 179, 1, 89, 253, 48, 254, 216, 2, 95, 1, 100, 255, 57, 255, 155, 2, 176, 1, 29, 0, 4, 255, 159, 1, 224, 1, 37, 253, 133, 254, 145, 0, 47, 2, 240, 253, 137, 253, 122, 251, 97, 255, 189, 1, 17, 1, 123, 0, 127, 2, 117, 1, 130, 255, 32, 3, 56, 2, 84, 0, 94, 255, 208, 2, 200, 2, 194, 252, 232, 253, 71, 255, 222, 0, 152, 1, 196, 1, 245, 1, 3, 3, 127, 252, 181, 250, 189, 255, 186, 1, 232, 252, 130, 250, 54, 2, 90, 2, 167, 0, 186, 254, 253, 1, 74, 1, 161, 255, 142, 253, 38, 253, 168, 254, 132, 6, 193, 4, 11, 3, 199, 1, 36, 5, 60, 3, 72, 2, 207, 2, 148, 1, 225, 255, 245, 3, 21, 3, 89, 0, 107, 0, 123, 3, 37, 2, 103, 3, 45, 6, 149, 3, 159, 2, 98, 3, 199, 5, 9, 5, 86, 3, 135, 1, 44, 4, 98, 4, 44, 3, 78, 0, 206, 253, 89, 1, 51, 2, 173, 1, 153, 255, 161, 1, 19, 3, 134, 255, 75, 254, 155, 1, 20, 3, 111, 252, 95, 254, 90, 2, 242, 2, 30, 255, 240, 255, 151, 0, 248, 2, 68, 253, 118, 0, 152, 255, 242, 255, 152, 251, 48, 0, 28, 1, 137, 1, 122, 254, 93, 254, 129, 253, 140, 255, 114, 252, 50, 1, 60, 1, 243, 255, 183, 4, 216, 3, 53, 3, 157, 2, 85, 251, 75, 253, 140, 0, 43, 255, 140, 252, 96, 254, 57, 255, 210, 253, 152, 253, 245, 0, 108, 254, 104, 253, 6, 1, 56, 0, 151, 253, 44, 253, 171, 255, 21, 254, 192, 254, 112, 253, 198, 253, 193, 252, 127, 255, 240, 253, 30, 250, 193, 255, 145, 254, 127, 254, 154, 254, 191, 254, 4, 0, 51, 0, 146, 254, 42, 255, 63, 1, 255, 1, 146, 0, 159, 2, 239, 255, 221, 254, 146, 255, 208, 1, 117, 255, 16, 254, 54, 255, 220, 0, 200, 254, 137, 253, 108, 253, 183, 255, 113, 253, 204, 252, 106, 253, 115, 253, 248, 250, 167, 252, 82, 254, 71, 252, 65, 252, 248, 254, 207, 255, 44, 254, 184, 255, 131, 254, 162, 254, 205, 253, 63, 255, 105, 254, 55, 0, 104, 254, 221, 252, 11, 0, 203, 254, 137, 2, 188, 0, 58, 255, 0, 254, 205, 1, 177, 255, 54, 254, 218, 250, 249, 254, 122, 255, 245, 253, 135, 249, 77, 254, 17, 254, 3, 253, 57, 0, 165, 254, 98, 254, 178, 1, 139, 251, 14, 255, 104, 253, 167, 252, 34, 0, 188, 255, 61, 253, 174, 254, 163, 1, 163, 0, 226, 255, 250, 254, 57, 254, 235, 252, 106, 250, 47, 253, 238, 3, 152, 2, 13, 1, 25, 0, 107, 2, 4, 1, 183, 0, 96, 0, 56, 252, 178, 250, 124, 254, 135, 0, 75, 253, 67, 3, 200, 1, 154, 0, 81, 4, 191, 2, 57, 2, 107, 1, 89, 6, 46, 5, 217, 3, 236, 2, 36, 255, 219, 0, 76, 0, 48, 255, 81, 250, 130, 249, 49, 0, 149, 0, 60, 252, 84, 255, 16, 253, 176, 254, 113, 2, 209, 0, 6, 255, 190, 255, 7, 252, 186, 252, 254, 255, 61, 1, 136, 247, 51, 250, 118, 255, 123, 0, 172, 248, 205, 247, 247, 253, 85, 0, 57, 252, 146, 254, 73, 253, 143, 252, 103, 252, 13, 252, 5, 253, 75, 252, 132, 255, 0, 255, 160, 254, 108, 253, 178, 0, 207, 1, 98, 1, 48, 1, 48, 249, 177, 253, 230, 254, 79, 0, 55, 247, 175, 0, 99, 3, 243, 1, 118, 255, 76, 255, 75, 255, 235, 255, 13, 247, 39, 251, 52, 254, 248, 253, 253, 252, 195, 1, 246, 255, 204, 254, 15, 1, 191, 255, 4, 0, 214, 0, 233, 254, 77, 254, 213, 255, 164, 254, 98, 253, 35, 0, 191, 255, 45, 255, 38, 3, 23, 2, 85, 0, 41, 1, 57, 0, 239, 0, 210, 2, 237, 1, 225, 0, 149, 2, 72, 3, 35, 2, 228, 253, 136, 254, 14, 0, 93, 1, 213, 1, 209, 2, 75, 1, 162, 0, 224, 253, 16, 253, 194, 255, 246, 255, 142, 1, 168, 255, 212, 2, 189, 2, 237, 255, 235, 253, 162, 255, 89, 2, 136, 0, 185, 255, 87, 253, 21, 253, 90, 255, 168, 254, 5, 1, 206, 255, 161, 0, 204, 255, 229, 1, 81, 1, 117, 249, 50, 0, 190, 0, 163, 255, 22, 247, 25, 255, 62, 255, 174, 255, 161, 255, 173, 253, 102, 255, 128, 0, 126, 3, 245, 1, 76, 2, 201, 1, 167, 254, 206, 0, 122, 0, 110, 0, 137, 253, 29, 255, 199, 253, 3, 0, 152, 1, 239, 0, 141, 1, 226, 0, 59, 255, 254, 255, 128, 0, 235, 1, 1, 5, 136, 3, 36, 1, 215, 0, 26, 2, 50, 1, 3, 1, 253, 1, 91, 253, 233, 251, 13, 0, 65, 1, 89, 253, 180, 253, 154, 254, 44, 255, 210, 253, 243, 0, 134, 2, 223, 1, 230, 1, 86, 1, 122, 2, 20, 2, 107, 0, 34, 3, 75, 1, 136, 0, 144, 255, 114, 254, 249, 251, 226, 254, 186, 254, 63, 253, 32, 1, 16, 1, 19, 5, 120, 4, 154, 4, 92, 3, 89, 254, 121, 0, 127, 254, 108, 255, 217, 254, 210, 254, 190, 252, 205, 252, 16, 0, 232, 255, 55, 255, 36, 254, 43, 2, 91, 0, 11, 255, 38, 1, 218, 255, 133, 254, 62, 252, 59, 251, 89, 251, 18, 250, 239, 254, 117, 254, 122, 254, 11, 252, 123, 253, 61, 2, 205, 248, 250, 251, 249, 1, 212, 1, 232, 2, 179, 3, 97, 2, 237, 1, 79, 253, 108, 251, 140, 253, 121, 255, 254, 251, 195, 0, 155, 1, 196, 0, 46, 6, 123, 4, 63, 2, 81, 1, 41, 251, 247, 252, 120, 253, 114, 255, 83, 2, 57, 3, 199, 3, 223, 2, 74, 251, 54, 252, 175, 255, 170, 254, 23, 253, 13, 0, 184, 255, 119, 1, 198, 1, 19, 0, 127, 5, 153, 3, 145, 249, 84, 255, 93, 3, 50, 2, 160, 3, 1, 6, 39, 4, 228, 2, 88, 246, 72, 252, 8, 1, 82, 0, 10, 254, 59, 252, 202, 250, 123, 0, 99, 3, 212, 4, 22, 2, 171, 0, 240, 246, 52, 254, 12, 3, 107, 1, 90, 251, 151, 253, 252, 0, 195, 255, 82, 255, 34, 0, 243, 3, 20, 3, 227, 246, 247, 0, 167, 1, 153, 0, 240, 255, 157, 254, 6, 1, 193, 1, 216, 249, 207, 251, 224, 253, 141, 254, 153, 253, 207, 254, 27, 4, 37, 3, 175, 2, 16, 2, 6, 0, 74, 255, 167, 3, 107, 3, 234, 3, 41, 3, 199, 0, 1, 1, 126, 0, 76, 0, 184, 253, 142, 251, 87, 2, 44, 2, 175, 251, 145, 250, 201, 249, 249, 253, 47, 252, 211, 250, 108, 0, 91, 1, 46, 253, 49, 252, 109, 1, 101, 0, 111, 255, 169, 2, 249, 0, 103, 255, 0, 0, 178, 254, 198, 253, 159, 0, 156, 1, 29, 1, 176, 254, 151, 253, 71, 252, 58, 252, 119, 3, 177, 2, 29, 251, 84, 0, 71, 255, 114, 254, 176, 253, 177, 1, 20, 4, 141, 2, 85, 0, 73, 1, 216, 255, 105, 1, 79, 254, 63, 253, 210, 1, 62, 2, 102, 255, 142, 2, 80, 2, 34, 1, 89, 255, 72, 0, 93, 1, 175, 0, 162, 2, 41, 1, 209, 3, 208, 2, 211, 4, 180, 4, 245, 2, 232, 1, 112, 254, 243, 254, 26, 2, 116, 1, 186, 250, 149, 250, 86, 251, 165, 255, 238, 4, 108, 3, 7, 3, 188, 2, 169, 253, 218, 255, 82, 254, 46, 253, 184, 7, 94, 6, 223, 3, 96, 2, 111, 0, 20, 1, 30, 255, 160, 255, 77, 252, 124, 254, 245, 255, 249, 255, 209, 254, 237, 253, 185, 252, 82, 1, 198, 6, 174, 6, 125, 5, 245, 3, 252, 253, 169, 252, 123, 253, 210, 0, 80, 253, 96, 254, 1, 2, 230, 0, 202, 252, 131, 253, 134, 251, 192, 254, 72, 252, 110, 253, 74, 253, 183, 0, 142, 255, 145, 253, 50, 3, 162, 2, 65, 255, 52, 255, 219, 2, 123, 2, 51, 0, 197, 4, 115, 3, 64, 2, 70, 252, 81, 254, 58, 3, 86, 2, 170, 254, 13, 253, 124, 252, 105, 254, 154, 251, 158, 254, 50, 255, 0, 254, 221, 253, 214, 252, 155, 254, 148, 253, 66, 0, 3, 2, 183, 255, 102, 254, 152, 252, 79, 252, 92, 250, 53, 251, 191, 0, 239, 255, 224, 253, 25, 255, 252, 249, 224, 253, 123, 252, 138, 252, 134, 252, 242, 249, 19, 246, 205, 252, 54, 252, 175, 0, 198, 252, 46, 251, 6, 253, 169, 253, 234, 255, 122, 2, 213, 252, 37, 252, 122, 252, 189, 254, 203, 0, 26, 0, 129, 254, 21, 255, 243, 252, 113, 254, 238, 4, 138, 3, 92, 252, 137, 250, 156, 250, 144, 253, 93, 0, 87, 0, 98, 254, 229, 253, 77, 253, 37, 0, 121, 2, 254, 1, 125, 254, 36, 254, 206, 250, 143, 1, 66, 0, 7, 1, 105, 254, 207, 255, 177, 254, 95, 254, 17, 4, 73, 7, 245, 252, 191, 251, 96, 250, 22, 253, 166, 252, 64, 3, 187, 253, 9, 253, 141, 254, 95, 253, 6, 254, 40, 8, 208, 253, 134, 253, 101, 251, 15, 1, 241, 0, 14, 0, 74, 254, 12, 255, 115, 254, 207, 1, 178, 4, 23, 4, 162, 253, 227, 252, 98, 250, 205, 255, 189, 254, 225, 1, 32, 255, 184, 253, 241, 253, 238, 1, 113, 3, 170, 2, 79, 254, 206, 254, 22, 252, 42, 2, 147, 2, 222, 0, 171, 0, 96, 255, 159, 254, 169, 2, 6, 7, 29, 6, 172, 252, 99, 251, 97, 249, 176, 254, 102, 253, 114, 0, 187, 253, 12, 253, 24, 253, 61, 255, 119, 1, 241, 1, 47, 254, 220, 252, 182, 251, 154, 0, 26, 1, 125, 255, 206, 255, 65, 255, 49, 253, 67, 1, 220, 2, 6, 6, 46, 253, 205, 252, 132, 250, 105, 0, 6, 255, 185, 0, 78, 255, 10, 254, 26, 253, 65, 1, 254, 1, 87, 4, 189, 254, 201, 253, 58, 252, 127, 0, 228, 1, 82, 1, 96, 255, 52, 0, 174, 254, 220, 2, 87, 5, 18, 6, 142, 253, 222, 252, 96, 249, 226, 254, 182, 253, 164, 2, 73, 253, 169, 254, 142, 254, 22, 254, 39, 1, 101, 7, 138, 253, 194, 253, 10, 252, 176, 255, 133, 2, 187, 255, 250, 255, 194, 254, 148, 254, 14, 3, 170, 5, 14, 4, 199, 254, 35, 253, 141, 250, 120, 0, 60, 0, 221, 1, 248, 254, 183, 253, 133, 255, 199, 2, 221, 4, 121, 2, 165, 255, 157, 254, 8, 252, 3, 3, 246, 2, 5, 1, 253, 0, 81, 0, 38, 254, 162, 3, 167, 8, 184, 6, 216, 252, 181, 251, 123, 248, 208, 253, 242, 252, 169, 0, 220, 252, 206, 251, 68, 255, 142, 253, 201, 255, 125, 5, 74, 253, 52, 253, 86, 251, 108, 253, 98, 1, 73, 1, 254, 253, 201, 255, 225, 253, 110, 1, 9, 4, 158, 4, 110, 253, 65, 252, 179, 250, 201, 255, 72, 255, 93, 0, 163, 253, 226, 254, 106, 253, 148, 1, 193, 1, 59, 3, 226, 254, 162, 254, 17, 251, 116, 2, 50, 1, 227, 0, 240, 255, 147, 0, 145, 253, 186, 0, 155, 3, 98, 8, 94, 253, 134, 252, 186, 249, 69, 254, 28, 255, 83, 1, 143, 254, 234, 252, 103, 254, 231, 0, 86, 0, 189, 5, 64, 254, 187, 253, 219, 251, 82, 2, 194, 1, 79, 255, 132, 255, 86, 255, 65, 254, 159, 2, 135, 4, 124, 5, 36, 254, 101, 253, 25, 250, 179, 255, 118, 255, 204, 2, 79, 255, 140, 254, 131, 254, 195, 1, 166, 3, 147, 3, 6, 255, 80, 254, 202, 252, 16, 1, 60, 3, 190, 1, 26, 0, 19, 0, 225, 255, 186, 2, 156, 6, 120, 8, 122, 253, 47, 252, 124, 248, 77, 255, 39, 254, 12, 1, 133, 254, 23, 253, 77, 253, 11, 0, 127, 0, 9, 4, 24, 254, 107, 252, 199, 252, 61, 0, 67, 1, 135, 0, 147, 0, 111, 255, 82, 253, 173, 2, 18, 3, 146, 6, 6, 254, 176, 252, 239, 250, 35, 0, 90, 0, 222, 0, 233, 255, 166, 254, 98, 253, 199, 1, 79, 2, 7, 5, 53, 255, 175, 253, 194, 251, 140, 2, 96, 1, 181, 1, 39, 0, 63, 0, 55, 254, 73, 3, 241, 4, 57, 8, 248, 253, 142, 252, 208, 249, 184, 254, 57, 253, 141, 5, 172, 253, 170, 254, 186, 255, 209, 0, 173, 0, 136, 7, 89, 254, 170, 253, 103, 252, 165, 1, 93, 2, 218, 255, 254, 255, 11, 255, 129, 255, 128, 3, 177, 7, 111, 4, 133, 254, 250, 253, 213, 249, 173, 0, 118, 0, 241, 2, 201, 255, 131, 254, 204, 255, 217, 3, 253, 3, 241, 2, 254, 255, 221, 254, 133, 252, 241, 2, 224, 3, 167, 1, 8, 1, 131, 0, 60, 255, 127, 3, 226, 8, 239, 9, 133, 253, 192, 251, 61, 246, 239, 253, 42, 252, 14, 2, 4, 253, 194, 252, 220, 253, 76, 254, 60, 1, 87, 2, 93, 253, 84, 252, 22, 253, 199, 255, 236, 0, 245, 255, 55, 255, 175, 255, 226, 252, 16, 0, 77, 3, 22, 6, 31, 253, 39, 252, 68, 251, 44, 254, 17, 0, 34, 1, 233, 254, 184, 253, 68, 253, 183, 0, 54, 3, 193, 2, 247, 254, 20, 254, 93, 251, 165, 1, 152, 0, 212, 1, 122, 254, 166, 0, 244, 254, 39, 0, 14, 6, 76, 7, 133, 253, 58, 252, 221, 249, 59, 254, 20, 254, 142, 3, 228, 254, 253, 251, 181, 255, 75, 255, 123, 255, 60, 7, 67, 254, 144, 253, 106, 251, 164, 1, 111, 1, 207, 255, 123, 254, 44, 255, 87, 255, 195, 2, 49, 4, 184, 4, 229, 253, 58, 253, 87, 250, 83, 0, 93, 255, 228, 1, 20, 255, 225, 253, 157, 254, 82, 1, 151, 4, 46, 3, 10, 255, 203, 254, 66, 252, 94, 2, 248, 2, 60, 0, 166, 0, 248, 255, 93, 255, 206, 254, 57, 7, 3, 10, 21, 253, 255, 251, 9, 249, 93, 254, 66, 254, 209, 0, 50, 253, 202, 253, 234, 253, 6, 254, 181, 2, 89, 3, 49, 254, 71, 253, 198, 251, 69, 1, 175, 1, 50, 255, 241, 255, 248, 255, 5, 253, 33, 2, 151, 3, 238, 5, 157, 253, 241, 252, 223, 250, 0, 1, 201, 255, 208, 0, 91, 255, 164, 254, 106, 253, 65, 1, 168, 2, 162, 3, 186, 254, 83, 254, 73, 252, 228, 1, 190, 1, 58, 2, 59, 255, 72, 0, 183, 255, 141, 3, 175, 5, 205, 6, 205, 253, 31, 253, 74, 248, 132, 255, 96, 254, 206, 2, 34, 254, 108, 254, 198, 254, 240, 255, 190, 1, 100, 6, 217, 253, 231, 253, 18, 253, 198, 255, 126, 2, 214, 0, 55, 0, 71, 255, 241, 254, 124, 4, 21, 5, 188, 4, 29, 254, 97, 253, 16, 251, 117, 0, 29, 1, 31, 2, 52, 255, 121, 254, 145, 255, 1, 2, 2, 6, 86, 3, 142, 255, 66, 255, 46, 252, 109, 3, 83, 2, 208, 1, 4, 1, 4, 1, 201, 254, 236, 2, 235, 8, 168, 8, 251, 253, 79, 252, 133, 247, 186, 254, 60, 253, 122, 1, 212, 252, 77, 253, 24, 255, 208, 253, 175, 2, 129, 5, 36, 253, 78, 253, 188, 252, 153, 254, 133, 2, 130, 1, 247, 254, 62, 0, 90, 253, 145, 0, 108, 6, 184, 4, 213, 253, 36, 252, 47, 251, 178, 255, 14, 0, 114, 0, 185, 254, 154, 254, 23, 254, 136, 1, 165, 2, 185, 2, 55, 255, 20, 255, 140, 251, 181, 2, 193, 1, 178, 0, 13, 255, 0, 1, 79, 254, 99, 2, 105, 5, 152, 9, 156, 253, 123, 252, 72, 250, 205, 254, 239, 255, 243, 1, 197, 254, 101, 253, 2, 255, 0, 1, 172, 1, 183, 5, 26, 254, 90, 254, 224, 251, 143, 2, 114, 1, 18, 0, 154, 255, 71, 255, 236, 254, 243, 2, 42, 6, 55, 5, 24, 254, 165, 253, 118, 250, 182, 0, 163, 255, 102, 3, 183, 255, 54, 254, 164, 254, 67, 3, 94, 3, 189, 3, 230, 254, 179, 254, 22, 253, 35, 2, 71, 3, 172, 1, 17, 1, 167, 255, 13, 0, 172, 3, 172, 6, 16, 10, 94, 254, 196, 251, 34, 249, 212, 255, 154, 254, 3, 1, 15, 254, 125, 253, 208, 253, 99, 0, 45, 2, 193, 3, 91, 254, 2, 253, 107, 252, 39, 1, 70, 1, 184, 0, 175, 0, 15, 0, 142, 253, 20, 2, 110, 3, 189, 7, 69, 254, 0, 253, 5, 251, 221, 0, 156, 0, 12, 1, 39, 0, 149, 254, 7, 254, 183, 2, 4, 3, 116, 4, 94, 255, 53, 254, 112, 252, 197, 2, 188, 1, 146, 2, 25, 0, 47, 1, 200, 254, 244, 4, 130, 5, 179, 6, 215, 254, 2, 253, 212, 248, 249, 254, 148, 255, 46, 4, 106, 254, 243, 255, 127, 255, 57, 0, 182, 1, 174, 10, 138, 254, 25, 254, 189, 252, 48, 1, 184, 2, 164, 0, 104, 0, 21, 255, 5, 0, 75, 6, 108, 7, 119, 5, 27, 255, 186, 253, 211, 250, 149, 1, 192, 0, 49, 3, 169, 255, 74, 254, 111, 0, 4, 4, 175, 4, 225, 3, 68, 0, 81, 255, 90, 252, 9, 4, 93, 4, 195, 1, 222, 1, 200, 0, 8, 255, 79, 8, 136, 10, 250, 7, 189, 252, 213, 250, 173, 247, 225, 252, 76, 253, 210, 1, 212, 252, 248, 251, 43, 254, 146, 253, 32, 1, 152, 3, 67, 253, 183, 252, 210, 251, 101, 254, 0, 2, 8, 0, 122, 254, 165, 255, 24, 253, 226, 255, 19, 4, 137, 4, 202, 252, 132, 251, 124, 251, 218, 254, 210, 255, 110, 0, 101, 254, 138, 254, 90, 253, 214, 0, 19, 2, 156, 2, 106, 254, 92, 254, 86, 251, 231, 1, 232, 0, 47, 1, 194, 254, 91, 0, 40, 254, 123, 0, 208, 4, 141, 9, 46, 253, 72, 252, 41, 250, 30, 253, 93, 253, 52, 5, 225, 253, 162, 253, 45, 255, 161, 255, 158, 255, 228, 5, 219, 253, 254, 253, 87, 251, 217, 1, 211, 0, 73, 0, 224, 254, 144, 255, 123, 254, 25, 2, 52, 5, 234, 4, 201, 253, 13, 253, 247, 249, 71, 0, 229, 254, 120, 2, 86, 255, 31, 254, 19, 254, 169, 2, 234, 3, 49, 3, 156, 254, 181, 254, 147, 252, 163, 1, 194, 2, 90, 1, 241, 0, 222, 255, 186, 254, 121, 1, 158, 7, 91, 7, 41, 253, 205, 251, 167, 249, 23, 255, 225, 253, 116, 0, 244, 253, 218, 252, 183, 253, 183, 255, 222, 1, 217, 2, 224, 254, 99, 252, 137, 251, 173, 0, 191, 1, 204, 255, 68, 0, 27, 255, 162, 253, 193, 1, 17, 2, 5, 7, 177, 253, 149, 252, 173, 250, 183, 0, 112, 255, 68, 1, 153, 255, 60, 254, 102, 253, 111, 2, 232, 1, 152, 4, 18, 255, 1, 254, 20, 252, 70, 1, 40, 2, 202, 1, 136, 0, 108, 0, 193, 254, 114, 2, 63, 5, 91, 7, 22, 254, 122, 253, 62, 249, 70, 255, 63, 254, 216, 3, 30, 253, 180, 255, 86, 255, 218, 253, 243, 2, 0, 10, 16, 254, 2, 254, 77, 252, 210, 0, 182, 2, 204, 255, 84, 0, 190, 254, 57, 255, 66, 4, 89, 6, 200, 4, 136, 254, 165, 253, 140, 250, 87, 1, 74, 0, 120, 2, 81, 255, 10, 254, 224, 255, 204, 3, 52, 5, 222, 2, 52, 0, 217, 254, 167, 251, 41, 4, 150, 3, 160, 0, 137, 1, 107, 0, 115, 254, 190, 4, 89, 10, 205, 6, 136, 253, 79, 251, 157, 248, 49, 253, 235, 254, 97, 1, 117, 253, 144, 252, 134, 255, 45, 255, 209, 0, 58, 5, 206, 253, 54, 253, 221, 251, 48, 255, 132, 1, 159, 0, 192, 254, 195, 255, 217, 253, 37, 1, 68, 4, 163, 5, 120, 253, 159, 252, 27, 251, 207, 255, 113, 255, 49, 1, 111, 254, 29, 255, 183, 253, 49, 2, 20, 2, 159, 3, 139, 255, 69, 254, 92, 251, 251, 1, 180, 1, 36, 1, 177, 255, 233, 0, 54, 254, 159, 2, 1, 4, 92, 9, 135, 253, 182, 252, 11, 250, 204, 254, 226, 254, 128, 2, 139, 254, 147, 253, 105, 254, 162, 1, 253, 0, 25, 5, 197, 254, 187, 253, 143, 251, 60, 2, 173, 2, 231, 254, 61, 0, 188, 255, 141, 254, 223, 3, 77, 4, 218, 5, 19, 254, 85, 253, 174, 250, 209, 255, 164, 0, 192, 2, 0, 255, 198, 254, 244, 254, 119, 2, 181, 3, 28, 4, 138, 255, 164, 254, 191, 252, 68, 0, 156, 4, 56, 2, 152, 0, 117, 0, 34, 0, 89, 4, 110, 7, 191, 8, 167, 253, 65, 252, 86, 249, 113, 255, 23, 254, 224, 1, 180, 254, 113, 253, 194, 253, 54, 0, 97, 1, 168, 4, 50, 254, 116, 253, 228, 252, 150, 0, 37, 2, 112, 0, 195, 0, 145, 255, 253, 253, 167, 2, 84, 4, 111, 6, 210, 253, 19, 253, 63, 251, 247, 255, 16, 1, 85, 1, 203, 255, 247, 254, 233, 253, 233, 1, 75, 3, 18, 5, 136, 255, 30, 254, 248, 251, 120, 2, 31, 2, 152, 1, 179, 0, 50, 1, 242, 253, 100, 4, 184, 5, 196, 8, 95, 254, 238, 252, 230, 249, 32, 255, 128, 254, 84, 5, 135, 254, 53, 254, 231, 255, 129, 1, 233, 1, 126, 8, 180, 254, 117, 253, 195, 252, 32, 2, 41, 2, 61, 0, 22, 0, 143, 255, 167, 255, 104, 4, 189, 6, 244, 5, 40, 255, 139, 254, 139, 249, 161, 0, 60, 1, 140, 3, 91, 255, 34, 255, 189, 255, 82, 5, 151, 4, 21, 3, 73, 0, 4, 255, 1, 253, 226, 2, 164, 3, 104, 2, 106, 1, 246, 0, 130, 255, 19, 3, 94, 10, 211, 11, 77, 253, 174, 251, 114, 247, 203, 253, 180, 253, 12, 2, 178, 253, 45, 252, 22, 254, 249, 254, 141, 1, 214, 3, 191, 253, 187, 252, 79, 252, 234, 255, 179, 1, 207, 255, 66, 255, 138, 255, 139, 253, 168, 255, 216, 4, 233, 5, 132, 253, 229, 251, 5, 252, 221, 254, 189, 0, 3, 1, 255, 254, 42, 254, 139, 253, 145, 0, 177, 3, 126, 3, 186, 254, 148, 254, 186, 251, 31, 2, 4, 1, 118, 2, 54, 255, 189, 0, 47, 255, 101, 1, 99, 5, 43, 8, 199, 253, 205, 251, 87, 250, 54, 253, 17, 255, 151, 3, 92, 254, 63, 253, 172, 255, 147, 255, 142, 255, 103, 9, 99, 254, 239, 253, 103, 251, 226, 1, 112, 1, 131, 0, 70, 255, 184, 255, 125, 255, 93, 3, 231, 4, 196, 4, 157, 253, 110, 253, 195, 250, 227, 0, 135, 255, 119, 2, 80, 255, 23, 254, 38, 255, 233, 2, 151, 4, 189, 3, 191, 254, 108, 255, 88, 252, 159, 2, 198, 3, 216, 0, 84, 1, 253, 255, 113, 255, 213, 1, 56, 7, 133, 9, 39, 253, 63, 252, 109, 249, 43, 255, 2, 255, 65, 1, 1, 254, 74, 254, 247, 253, 130, 255, 213, 2, 135, 3, 172, 254, 83, 253, 248, 251, 60, 1, 224, 1, 20, 0, 23, 0, 167, 255, 217, 253, 97, 1, 27, 4, 253, 6, 224, 253, 11, 253, 172, 250, 42, 1, 231, 255, 180, 1, 156, 255, 120, 254, 249, 253, 211, 1, 242, 2, 54, 4, 46, 255, 114, 254, 202, 251, 108, 2, 146, 2, 118, 2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 10240);
      allocate([33, 0, 147, 0, 78, 255, 153, 3, 151, 6, 129, 7, 187, 254, 240, 253, 70, 248, 2, 0, 227, 254, 142, 3, 141, 254, 22, 254, 26, 255, 0, 0, 85, 2, 218, 7, 16, 254, 117, 254, 190, 252, 37, 0, 177, 3, 245, 0, 181, 0, 96, 255, 112, 255, 201, 5, 93, 5, 77, 5, 157, 254, 167, 253, 10, 251, 42, 1, 66, 1, 160, 2, 63, 255, 176, 254, 77, 0, 65, 4, 253, 5, 154, 3, 177, 0, 217, 255, 155, 251, 228, 3, 13, 3, 24, 2, 200, 1, 110, 1, 80, 254, 135, 5, 136, 9, 231, 8, 46, 254, 10, 253, 235, 246, 209, 254, 3, 254, 131, 1, 41, 253, 211, 253, 66, 0, 111, 255, 131, 2, 224, 4, 224, 253, 92, 253, 108, 252, 31, 255, 94, 3, 76, 2, 104, 255, 40, 0, 235, 253, 167, 1, 143, 5, 22, 6, 196, 253, 181, 252, 135, 251, 128, 255, 85, 0, 205, 1, 18, 255, 255, 254, 184, 253, 93, 2, 236, 2, 93, 3, 24, 0, 54, 255, 127, 250, 29, 3, 231, 1, 47, 1, 75, 255, 108, 1, 74, 255, 104, 2, 98, 5, 126, 11, 18, 254, 172, 252, 95, 250, 220, 254, 61, 0, 44, 3, 172, 255, 45, 253, 74, 255, 43, 2, 20, 2, 226, 5, 147, 254, 19, 254, 223, 251, 54, 3, 76, 2, 11, 0, 242, 255, 238, 255, 26, 255, 233, 3, 121, 5, 171, 5, 38, 254, 199, 253, 244, 250, 46, 1, 62, 0, 38, 4, 186, 255, 136, 254, 34, 255, 214, 3, 206, 3, 125, 4, 60, 255, 22, 255, 229, 252, 223, 1, 74, 4, 243, 1, 106, 1, 58, 0, 70, 0, 123, 4, 21, 8, 41, 11, 25, 254, 146, 252, 224, 248, 73, 0, 224, 254, 92, 1, 154, 254, 12, 254, 4, 254, 199, 0, 209, 2, 218, 4, 178, 255, 71, 253, 229, 252, 105, 1, 24, 2, 196, 0, 118, 1, 110, 0, 33, 253, 79, 3, 27, 4, 104, 7, 146, 254, 55, 253, 98, 251, 59, 1, 64, 1, 173, 1, 72, 0, 41, 255, 62, 254, 247, 2, 118, 3, 83, 5, 226, 255, 84, 254, 190, 252, 93, 3, 115, 2, 28, 3, 118, 0, 212, 1, 233, 254, 75, 5, 91, 7, 101, 7, 68, 255, 126, 253, 180, 249, 63, 0, 81, 255, 174, 4, 94, 254, 45, 255, 51, 0, 158, 1, 75, 2, 41, 10, 22, 255, 211, 253, 166, 252, 168, 1, 121, 3, 222, 0, 136, 0, 155, 255, 83, 0, 133, 5, 230, 8, 103, 5, 172, 255, 67, 254, 147, 250, 158, 1, 57, 1, 21, 4, 29, 0, 169, 254, 65, 0, 16, 6, 111, 6, 212, 3, 183, 0, 165, 255, 195, 252, 249, 4, 133, 5, 104, 1, 41, 2, 16, 1, 149, 255, 51, 6, 77, 12, 43, 10, 104, 5, 29, 8, 92, 13, 244, 19, 86, 26, 186, 31, 135, 38, 84, 43, 170, 49, 133, 53, 61, 254, 215, 251, 239, 253, 231, 250, 62, 254, 12, 253, 15, 254, 161, 252, 128, 254, 149, 253, 99, 254, 99, 253, 195, 254, 230, 253, 181, 254, 212, 253, 98, 254, 4, 254, 88, 254, 134, 254, 238, 254, 188, 254, 78, 254, 154, 253, 30, 255, 12, 254, 24, 255, 254, 253, 249, 254, 135, 254, 214, 254, 102, 254, 105, 255, 58, 253, 82, 255, 206, 252, 107, 255, 100, 254, 100, 255, 83, 254, 224, 254, 50, 254, 70, 255, 53, 255, 86, 255, 210, 254, 65, 255, 191, 254, 125, 255, 109, 255, 215, 254, 117, 254, 28, 255, 42, 255, 11, 255, 64, 255, 189, 255, 196, 254, 185, 255, 185, 254, 152, 255, 51, 255, 162, 255, 73, 255, 113, 255, 218, 255, 63, 255, 161, 255, 16, 0, 180, 255, 132, 255, 8, 255, 23, 0, 19, 255, 24, 0, 12, 255, 18, 0, 120, 255, 44, 0, 145, 255, 223, 255, 232, 255, 231, 255, 0, 0, 149, 0, 19, 0, 23, 0, 113, 255, 158, 0, 87, 255, 174, 0, 75, 255, 133, 0, 201, 255, 165, 0, 230, 255, 111, 0, 84, 0, 98, 0, 75, 0, 87, 0, 183, 0, 141, 255, 245, 255, 248, 255, 130, 0, 11, 0, 170, 0, 254, 0, 77, 0, 205, 0, 17, 0, 183, 0, 112, 0, 6, 1, 194, 0, 202, 0, 31, 1, 95, 0, 189, 0, 214, 255, 151, 255, 234, 0, 179, 0, 39, 0, 186, 0, 163, 0, 89, 1, 76, 1, 199, 0, 43, 1, 161, 0, 202, 255, 29, 1, 178, 255, 25, 1, 123, 255, 141, 0, 74, 255, 111, 0, 249, 0, 85, 1, 15, 1, 108, 1, 93, 0, 147, 1, 75, 0, 135, 1, 92, 0, 254, 1, 118, 255, 220, 0, 71, 255, 227, 255, 222, 255, 105, 1, 141, 255, 64, 1, 3, 0, 42, 2, 99, 0, 30, 1, 218, 0, 79, 2, 11, 255, 150, 1, 244, 254, 197, 1, 0, 0, 68, 2, 25, 0, 94, 2, 19, 1, 20, 2, 148, 0, 194, 1, 183, 255, 227, 2, 227, 254, 6, 2, 224, 254, 94, 0, 53, 255, 162, 2, 116, 255, 182, 255, 205, 0, 202, 2, 142, 255, 43, 1, 176, 0, 155, 3, 182, 0, 45, 2, 240, 0, 193, 2, 240, 255, 1, 2, 229, 1, 81, 2, 37, 1, 128, 1, 195, 1, 105, 2, 218, 255, 50, 0, 51, 2, 17, 2, 47, 1, 209, 0, 203, 1, 107, 1, 177, 1, 196, 1, 194, 1, 198, 1, 111, 1, 94, 2, 221, 1, 229, 2, 176, 1, 97, 1, 112, 1, 11, 1, 105, 1, 204, 2, 17, 1, 71, 2, 197, 1, 166, 0, 254, 1, 172, 0, 201, 0, 117, 2, 18, 1, 191, 0, 56, 2, 127, 2, 46, 1, 42, 1, 122, 2, 131, 1, 131, 2, 94, 1, 75, 2, 48, 2, 100, 2, 53, 2, 88, 2, 20, 3, 231, 1, 160, 2, 0, 2, 247, 3, 65, 1, 77, 1, 101, 1, 86, 3, 131, 255, 157, 1, 218, 1, 200, 2, 17, 0, 105, 255, 52, 2, 29, 1, 14, 1, 15, 255, 203, 3, 121, 3, 233, 1, 220, 0, 254, 1, 128, 3, 37, 2, 156, 3, 71, 1, 57, 3, 34, 1, 143, 3, 28, 2, 84, 4, 158, 0, 37, 3, 199, 0, 189, 3, 255, 1, 218, 2, 100, 0, 106, 3, 13, 0, 23, 3, 179, 1, 120, 2, 164, 2, 204, 3, 249, 0, 132, 3, 211, 1, 194, 4, 13, 3, 50, 4, 73, 2, 17, 3, 233, 255, 157, 2, 11, 1, 19, 4, 107, 2, 60, 4, 103, 2, 121, 4, 110, 2, 137, 3, 148, 3, 25, 4, 80, 0, 75, 1, 72, 2, 51, 4, 89, 0, 127, 2, 220, 3, 193, 3, 2, 3, 208, 2, 30, 3, 187, 2, 236, 1, 191, 1, 131, 3, 115, 2, 15, 1, 164, 4, 213, 2, 53, 5, 87, 0, 91, 2, 64, 3, 67, 6, 104, 2, 103, 4, 122, 3, 225, 5, 232, 3, 132, 4, 98, 3, 241, 3, 227, 3, 59, 3, 125, 4, 90, 3, 49, 3, 170, 5, 5, 3, 40, 5, 244, 1, 109, 5, 56, 1, 129, 4, 236, 255, 60, 4, 64, 0, 3, 5, 2, 0, 148, 4, 143, 1, 77, 7, 2, 2, 170, 6, 246, 1, 100, 6, 118, 3, 242, 5, 160, 1, 88, 2, 107, 4, 70, 5, 251, 4, 110, 5, 121, 3, 3, 7, 146, 3, 230, 6, 227, 0, 159, 4, 226, 4, 34, 7, 249, 1, 62, 7, 151, 3, 49, 9, 57, 255, 175, 1, 152, 0, 199, 6, 43, 255, 228, 255, 136, 1, 54, 5, 103, 255, 204, 255, 210, 3, 127, 4, 189, 254, 112, 254, 45, 3, 167, 6, 120, 255, 84, 0, 169, 5, 223, 7, 181, 254, 113, 255, 119, 255, 168, 4, 0, 255, 22, 2, 99, 255, 7, 4, 205, 254, 73, 254, 30, 2, 219, 2, 183, 254, 92, 254, 159, 255, 104, 2, 150, 254, 88, 255, 190, 254, 110, 1, 9, 255, 146, 255, 45, 255, 89, 0, 60, 255, 203, 254, 20, 0, 59, 0, 148, 254, 49, 254, 226, 254, 89, 0, 176, 254, 175, 0, 80, 254, 141, 0, 133, 254, 66, 255, 78, 254, 60, 255, 177, 255, 150, 0, 234, 254, 29, 255, 232, 254, 166, 0, 213, 253, 90, 254, 101, 255, 29, 2, 146, 254, 54, 0, 227, 255, 173, 255, 211, 254, 250, 252, 186, 0, 116, 2, 115, 254, 248, 254, 242, 0, 37, 1, 59, 255, 183, 253, 124, 0, 154, 1, 53, 0, 123, 255, 10, 0, 84, 1, 198, 253, 215, 251, 65, 0, 66, 254, 68, 0, 19, 254, 127, 1, 169, 3, 155, 254, 57, 253, 153, 254, 6, 255, 91, 253, 212, 251, 36, 1, 230, 255, 107, 1, 6, 0, 95, 2, 33, 5, 129, 255, 246, 255, 233, 5, 94, 7, 201, 2, 204, 3, 189, 5, 133, 8, 163, 5, 224, 7, 161, 249, 192, 249, 252, 248, 14, 247, 253, 251, 22, 249, 180, 251, 23, 248, 3, 251, 148, 250, 169, 250, 2, 250, 77, 252, 75, 250, 52, 252, 12, 250, 25, 252, 58, 251, 4, 252, 108, 251, 209, 252, 37, 252, 32, 252, 165, 250, 64, 251, 18, 252, 247, 250, 186, 251, 24, 253, 12, 251, 13, 253, 243, 250, 162, 252, 101, 252, 119, 252, 40, 252, 90, 253, 229, 251, 83, 253, 230, 251, 193, 251, 39, 252, 218, 251, 89, 253, 35, 252, 127, 253, 153, 251, 48, 252, 6, 253, 114, 253, 134, 252, 218, 252, 191, 252, 189, 251, 62, 253, 139, 253, 147, 253, 218, 252, 128, 253, 212, 252, 249, 252, 134, 253, 245, 252, 225, 253, 28, 252, 203, 253, 205, 251, 188, 253, 222, 253, 157, 253, 196, 253, 149, 253, 8, 253, 222, 254, 145, 252, 242, 253, 201, 252, 50, 254, 229, 252, 3, 255, 215, 253, 97, 254, 179, 253, 73, 254, 235, 253, 172, 254, 76, 253, 89, 252, 7, 254, 252, 252, 66, 253, 149, 251, 249, 254, 206, 254, 53, 252, 29, 254, 67, 254, 182, 255, 213, 253, 220, 253, 154, 253, 127, 255, 75, 253, 22, 255, 116, 254, 10, 255, 37, 254, 6, 255, 247, 254, 108, 254, 136, 254, 254, 253, 95, 254, 2, 254, 212, 254, 199, 254, 178, 254, 104, 253, 49, 254, 210, 252, 126, 254, 64, 253, 175, 254, 153, 253, 22, 255, 55, 255, 23, 255, 17, 255, 89, 255, 201, 253, 53, 255, 149, 253, 109, 255, 97, 254, 141, 255, 160, 254, 90, 255, 18, 253, 85, 255, 7, 253, 242, 254, 145, 252, 248, 254, 121, 252, 145, 254, 24, 253, 43, 0, 37, 254, 14, 0, 115, 253, 43, 0, 98, 253, 11, 0, 64, 254, 197, 255, 247, 253, 130, 255, 137, 255, 101, 255, 155, 253, 214, 255, 161, 252, 229, 255, 93, 252, 136, 0, 29, 254, 183, 0, 44, 254, 55, 0, 214, 254, 55, 0, 208, 254, 57, 1, 159, 253, 57, 1, 48, 253, 66, 1, 89, 255, 100, 0, 227, 253, 253, 255, 137, 255, 145, 255, 69, 255, 233, 0, 20, 255, 4, 1, 22, 255, 26, 0, 91, 255, 134, 0, 211, 255, 216, 255, 219, 253, 104, 1, 53, 255, 122, 1, 124, 254, 194, 1, 129, 254, 19, 1, 20, 0, 182, 0, 153, 255, 246, 0, 145, 255, 175, 1, 37, 0, 206, 1, 110, 255, 231, 1, 99, 255, 228, 254, 197, 255, 247, 1, 72, 255, 24, 0, 53, 0, 253, 255, 54, 0, 122, 0, 3, 1, 77, 1, 66, 0, 228, 1, 104, 0, 180, 1, 68, 0, 195, 0, 116, 0, 190, 0, 206, 0, 13, 1, 247, 255, 226, 1, 96, 1, 126, 1, 29, 1, 143, 1, 21, 1, 196, 1, 0, 1, 69, 0, 186, 0, 13, 0, 41, 1, 243, 255, 3, 1, 161, 255, 30, 0, 56, 0, 138, 1, 196, 0, 169, 1, 205, 0, 200, 1, 25, 1, 65, 2, 15, 0, 191, 0, 119, 1, 34, 1, 151, 1, 64, 2, 200, 255, 227, 0, 32, 2, 149, 1, 0, 0, 37, 2, 164, 255, 16, 2, 27, 255, 95, 1, 11, 255, 82, 1, 150, 254, 179, 1, 167, 0, 15, 2, 181, 255, 46, 1, 91, 0, 56, 3, 129, 0, 87, 2, 240, 1, 167, 2, 186, 0, 237, 2, 153, 0, 225, 2, 231, 254, 88, 2, 164, 254, 103, 2, 20, 255, 1, 3, 41, 0, 113, 3, 38, 0, 122, 3, 36, 255, 73, 3, 155, 254, 115, 3, 119, 254, 135, 3, 134, 253, 218, 1, 68, 254, 82, 3, 81, 255, 166, 2, 19, 254, 242, 0, 249, 253, 17, 3, 54, 253, 70, 2, 227, 253, 110, 1, 225, 253, 178, 1, 171, 253, 244, 1, 3, 253, 222, 0, 66, 253, 149, 3, 25, 253, 194, 3, 155, 252, 245, 1, 125, 252, 36, 2, 133, 254, 200, 0, 77, 254, 157, 0, 205, 252, 214, 0, 163, 252, 157, 0, 154, 253, 40, 0, 136, 253, 94, 0, 141, 252, 202, 255, 27, 253, 4, 2, 11, 254, 42, 1, 154, 253, 85, 255, 154, 252, 95, 255, 159, 252, 233, 255, 206, 252, 93, 0, 9, 252, 245, 254, 106, 253, 153, 254, 219, 253, 2, 0, 70, 254, 135, 255, 135, 254, 0, 0, 29, 255, 33, 0, 98, 254, 130, 255, 127, 255, 212, 0, 90, 252, 34, 0, 198, 251, 230, 254, 161, 251, 244, 254, 58, 253, 199, 252, 92, 254, 65, 255, 204, 251, 96, 252, 107, 252, 163, 255, 140, 253, 154, 254, 97, 0, 7, 0, 50, 255, 119, 254, 155, 255, 24, 0, 53, 255, 38, 0, 88, 255, 83, 0, 169, 253, 89, 254, 233, 254, 170, 1, 68, 253, 118, 0, 181, 255, 206, 0, 43, 252, 95, 253, 88, 253, 161, 1, 145, 254, 37, 0, 233, 254, 218, 1, 127, 255, 194, 254, 63, 1, 40, 1, 142, 253, 217, 255, 87, 1, 90, 2, 72, 253, 217, 255, 209, 254, 172, 3, 104, 0, 233, 0, 132, 254, 137, 0, 220, 255, 13, 1, 181, 255, 42, 255, 120, 0, 43, 0, 239, 253, 35, 254, 203, 1, 164, 0, 54, 255, 27, 255, 207, 255, 89, 255, 97, 2, 24, 3, 98, 0, 36, 255, 147, 3, 148, 0, 37, 1, 27, 1, 101, 3, 91, 0, 63, 2, 138, 1, 70, 1, 178, 255, 205, 2, 67, 0, 109, 1, 189, 254, 104, 2, 220, 255, 219, 2, 27, 0, 107, 2, 238, 0, 120, 2, 17, 1, 192, 1, 99, 0, 33, 3, 220, 1, 101, 3, 17, 1, 173, 2, 64, 0, 21, 3, 72, 0, 253, 3, 217, 0, 25, 3, 203, 1, 222, 2, 104, 1, 134, 2, 224, 1, 104, 1, 66, 1, 173, 1, 208, 1, 126, 2, 174, 1, 244, 2, 107, 1, 232, 3, 148, 1, 171, 2, 16, 2, 90, 2, 103, 2, 143, 2, 157, 1, 178, 3, 175, 2, 169, 3, 90, 2, 136, 3, 92, 2, 43, 2, 225, 2, 18, 3, 150, 2, 211, 1, 142, 2, 106, 1, 77, 2, 161, 3, 198, 2, 242, 1, 222, 1, 159, 1, 164, 1, 181, 2, 115, 3, 45, 3, 171, 2, 13, 3, 157, 3, 145, 3, 171, 3, 214, 2, 220, 2, 235, 1, 85, 3, 19, 2, 180, 3, 222, 2, 195, 3, 59, 1, 40, 3, 249, 2, 243, 2, 120, 4, 248, 2, 143, 2, 52, 4, 58, 3, 33, 4, 67, 4, 70, 3, 235, 3, 40, 3, 23, 4, 109, 4, 147, 2, 77, 4, 224, 3, 26, 4, 50, 4, 51, 4, 203, 3, 182, 2, 202, 4, 30, 4, 59, 2, 73, 3, 116, 3, 124, 5, 99, 5, 72, 4, 56, 4, 93, 3, 207, 4, 223, 2, 4, 5, 248, 2, 248, 4, 223, 3, 87, 5, 29, 4, 233, 4, 188, 2, 26, 4, 22, 2, 220, 3, 197, 1, 240, 4, 87, 2, 116, 4, 167, 2, 85, 6, 47, 3, 104, 5, 9, 2, 37, 5, 137, 1, 28, 6, 37, 3, 168, 5, 174, 2, 44, 4, 136, 2, 107, 3, 51, 1, 59, 4, 105, 1, 23, 4, 61, 1, 137, 5, 196, 3, 163, 2, 59, 2, 128, 4, 79, 0, 90, 4, 209, 255, 250, 5, 55, 1, 185, 6, 58, 1, 142, 4, 177, 2, 2, 2, 162, 255, 93, 1, 26, 1, 132, 5, 72, 1, 1, 4, 231, 1, 191, 255, 57, 0, 37, 3, 202, 3, 36, 0, 62, 0, 1, 3, 249, 254, 23, 3, 166, 254, 125, 2, 187, 2, 119, 255, 108, 2, 22, 2, 29, 2, 33, 253, 194, 0, 199, 2, 44, 1, 244, 254, 161, 252, 158, 3, 1, 3, 60, 253, 84, 254, 250, 1, 174, 0, 132, 252, 138, 253, 179, 1, 35, 2, 101, 250, 254, 254, 109, 2, 215, 1, 6, 252, 168, 250, 119, 254, 9, 2, 104, 252, 82, 253, 231, 255, 20, 0, 42, 252, 124, 251, 84, 1, 9, 0, 234, 249, 145, 251, 160, 254, 48, 0, 213, 249, 110, 254, 137, 252, 6, 0, 124, 251, 136, 252, 220, 253, 160, 254, 149, 249, 112, 251, 97, 255, 98, 2, 24, 248, 61, 252, 31, 255, 193, 0, 136, 249, 88, 248, 11, 255, 19, 254, 60, 252, 112, 249, 88, 252, 133, 253, 237, 250, 48, 249, 148, 250, 164, 253, 252, 249, 189, 252, 139, 250, 121, 255, 204, 249, 222, 254, 122, 249, 56, 253, 37, 248, 160, 249, 129, 249, 229, 255, 46, 247, 213, 252, 123, 251, 184, 0, 15, 251, 189, 0, 169, 250, 74, 2, 37, 248, 201, 0, 234, 252, 200, 2, 70, 251, 3, 0, 247, 251, 40, 3, 29, 251, 62, 3, 145, 255, 123, 2, 156, 249, 191, 1, 49, 254, 75, 252, 67, 254, 96, 252, 8, 254, 118, 251, 11, 254, 69, 251, 144, 0, 161, 254, 140, 254, 228, 251, 229, 254, 221, 251, 233, 254, 157, 251, 193, 253, 98, 250, 181, 253, 178, 249, 89, 252, 40, 252, 229, 0, 178, 2, 103, 252, 49, 253, 109, 254, 82, 5, 83, 253, 47, 254, 106, 3, 141, 1, 3, 254, 210, 255, 61, 1, 54, 5, 27, 254, 200, 1, 45, 3, 183, 1, 101, 254, 83, 1, 130, 3, 43, 4, 87, 254, 46, 0, 161, 5, 241, 1, 115, 252, 224, 252, 185, 5, 22, 4, 2, 255, 191, 254, 150, 5, 141, 4, 68, 0, 94, 1, 10, 4, 154, 2, 114, 1, 11, 0, 31, 5, 22, 3, 143, 0, 232, 0, 17, 4, 26, 6, 142, 255, 151, 2, 80, 6, 54, 4, 198, 1, 67, 2, 251, 4, 16, 4, 180, 255, 141, 3, 240, 2, 43, 4, 153, 0, 0, 2, 92, 1, 190, 4, 102, 2, 129, 1, 51, 7, 40, 3, 13, 1, 10, 4, 203, 0, 62, 4, 140, 2, 249, 3, 247, 6, 106, 4, 173, 1, 47, 5, 131, 1, 104, 5, 207, 255, 159, 4, 184, 255, 191, 4, 96, 254, 233, 3, 32, 2, 213, 6, 160, 254, 199, 4, 10, 254, 175, 4, 179, 253, 57, 2, 29, 255, 94, 6, 114, 255, 42, 6, 26, 255, 179, 6, 54, 253, 8, 5, 186, 252, 118, 5, 107, 4, 77, 5, 48, 255, 208, 4, 181, 1, 197, 3, 95, 252, 50, 3, 43, 3, 130, 5, 91, 3, 227, 5, 164, 0, 188, 4, 107, 5, 1, 7, 228, 1, 82, 7, 200, 1, 15, 8, 228, 3, 146, 4, 46, 5, 122, 5, 36, 5, 80, 5, 111, 4, 238, 4, 210, 4, 82, 6, 81, 5, 232, 6, 141, 5, 203, 4, 48, 6, 67, 5, 86, 3, 160, 2, 149, 6, 30, 6, 115, 4, 246, 4, 224, 7, 33, 7, 237, 6, 45, 6, 252, 5, 180, 5, 207, 5, 178, 3, 123, 6, 253, 3, 208, 6, 188, 4, 112, 5, 209, 3, 236, 6, 137, 4, 34, 7, 140, 4, 182, 6, 149, 5, 181, 7, 55, 6, 161, 4, 96, 3, 84, 8, 37, 4, 7, 7, 46, 3, 46, 7, 245, 2, 56, 8, 35, 5, 6, 8, 234, 4, 65, 8, 147, 3, 27, 9, 162, 3, 187, 5, 123, 4, 30, 10, 159, 5, 197, 8, 208, 6, 42, 8, 84, 6, 54, 9, 174, 5, 106, 10, 226, 5, 84, 7, 45, 7, 22, 8, 183, 7, 203, 6, 41, 6, 170, 2, 9, 5, 48, 6, 253, 7, 174, 5, 50, 8, 194, 9, 212, 7, 151, 10, 18, 8, 214, 2, 52, 6, 196, 10, 32, 9, 228, 0, 79, 3, 152, 9, 123, 6, 36, 0, 45, 1, 150, 7, 165, 7, 66, 254, 160, 255, 106, 8, 116, 5, 253, 5, 77, 4, 14, 0, 96, 2, 101, 252, 36, 253, 103, 5, 190, 7, 65, 5, 184, 3, 88, 253, 65, 1, 1, 5, 244, 4, 198, 249, 109, 1, 173, 3, 178, 3, 55, 249, 202, 252, 70, 9, 227, 10, 29, 7, 228, 10, 236, 248, 29, 247, 169, 248, 23, 246, 152, 249, 200, 248, 97, 249, 44, 248, 60, 251, 136, 248, 59, 251, 198, 247, 233, 249, 204, 249, 219, 249, 236, 249, 85, 251, 177, 249, 56, 251, 65, 249, 177, 250, 129, 251, 176, 249, 100, 248, 6, 251, 145, 250, 231, 250, 133, 250, 185, 249, 101, 251, 116, 249, 225, 250, 93, 250, 58, 250, 169, 250, 126, 252, 24, 251, 221, 251, 205, 250, 146, 251, 42, 252, 147, 251, 131, 251, 32, 250, 200, 251, 228, 250, 4, 252, 97, 251, 44, 252, 50, 250, 57, 252, 41, 250, 36, 252, 102, 252, 233, 251, 203, 251, 186, 252, 101, 251, 166, 252, 58, 251, 149, 251, 239, 251, 216, 251, 1, 253, 152, 252, 123, 251, 67, 253, 144, 252, 62, 253, 118, 252, 250, 252, 8, 252, 190, 253, 200, 251, 223, 252, 58, 250, 177, 253, 169, 251, 176, 253, 134, 251, 55, 253, 148, 250, 128, 253, 160, 250, 171, 253, 221, 251, 96, 254, 121, 252, 82, 253, 192, 252, 107, 253, 60, 253, 68, 254, 156, 252, 22, 254, 103, 252, 138, 254, 248, 252, 149, 253, 110, 251, 183, 253, 219, 253, 255, 252, 229, 252, 77, 254, 109, 253, 238, 253, 27, 253, 14, 254, 187, 252, 155, 254, 171, 253, 233, 254, 153, 252, 13, 255, 137, 252, 230, 254, 103, 253, 232, 254, 101, 253, 91, 255, 208, 253, 118, 254, 121, 252, 150, 254, 102, 254, 64, 254, 185, 253, 103, 254, 194, 253, 199, 254, 155, 254, 131, 253, 220, 253, 198, 253, 76, 254, 128, 252, 8, 254, 130, 254, 11, 253, 198, 255, 31, 254, 91, 255, 150, 253, 65, 255, 138, 254, 22, 255, 130, 254, 34, 255, 85, 253, 231, 255, 32, 254, 94, 254, 153, 254, 38, 253, 159, 254, 188, 254, 99, 255, 80, 254, 190, 254, 118, 254, 209, 254, 228, 254, 152, 255, 167, 253, 223, 254, 212, 253, 60, 255, 180, 253, 106, 255, 109, 253, 160, 253, 39, 254, 232, 255, 188, 255, 64, 254, 38, 254, 248, 255, 6, 254, 211, 255, 20, 253, 72, 255, 180, 252, 4, 255, 123, 252, 165, 255, 184, 253, 159, 255, 116, 253, 138, 0, 4, 253, 125, 255, 90, 253, 244, 255, 98, 253, 165, 0, 253, 254, 253, 255, 184, 252, 149, 255, 115, 252, 37, 0, 32, 252, 44, 0, 170, 252, 97, 254, 185, 252, 13, 0, 23, 252, 241, 254, 254, 251, 203, 254, 226, 252, 34, 254, 192, 252, 24, 254, 81, 252, 168, 0, 168, 251, 125, 254, 95, 251, 155, 255, 97, 251, 216, 255, 83, 252, 196, 254, 250, 251, 254, 252, 236, 251, 143, 253, 199, 251, 230, 253, 56, 251, 213, 254, 224, 250, 76, 254, 83, 251, 105, 253, 113, 251, 95, 255, 64, 251, 78, 253, 43, 251, 193, 252, 104, 250, 48, 253, 133, 250, 19, 254, 126, 252, 28, 253, 102, 252, 223, 252, 178, 251, 110, 254, 213, 249, 60, 252, 219, 251, 130, 253, 11, 251, 98, 250, 37, 250, 90, 252, 34, 250, 129, 252, 194, 249, 204, 253, 69, 249, 51, 253, 162, 253, 171, 253, 114, 251, 195, 251, 167, 250, 44, 254, 102, 248, 43, 250, 210, 248, 71, 252, 116, 248, 93, 252, 37, 250, 68, 255, 157, 249, 91, 254, 79, 250, 174, 254, 88, 250, 234, 255, 106, 248, 90, 254, 42, 248, 7, 255, 16, 254, 142, 255, 138, 248, 13, 253, 247, 250, 174, 0, 85, 250, 147, 255, 30, 254, 255, 254, 59, 251, 4, 254, 175, 249, 151, 0, 98, 249, 208, 0, 114, 253, 107, 0, 141, 249, 29, 0, 139, 251, 23, 1, 65, 251, 50, 1, 52, 251, 6, 254, 38, 253, 81, 255, 44, 251, 155, 255, 55, 252, 39, 2, 154, 252, 22, 1, 201, 252, 59, 1, 205, 253, 120, 1, 229, 251, 228, 0, 5, 254, 24, 1, 169, 253, 25, 1, 10, 253, 253, 0, 207, 254, 123, 1, 13, 253, 122, 255, 157, 253, 148, 2, 200, 252, 24, 2, 207, 252, 134, 2, 99, 254, 49, 0, 171, 254, 177, 0, 59, 254, 14, 2, 30, 254, 77, 2, 185, 255, 83, 1, 111, 253, 8, 1, 12, 255, 39, 1, 19, 255, 59, 1, 125, 254, 57, 2, 6, 254, 247, 255, 135, 254, 14, 0, 96, 255, 149, 2, 40, 255, 40, 0, 204, 254, 210, 255, 95, 0, 214, 0, 14, 255, 167, 0, 170, 255, 192, 0, 200, 255, 27, 0, 180, 255, 31, 0, 36, 0, 53, 1, 150, 255, 74, 255, 143, 255, 74, 0, 71, 254, 234, 255, 23, 0, 139, 0, 81, 0, 245, 255, 44, 0, 15, 0, 169, 255, 119, 255, 138, 255, 49, 255, 98, 255, 198, 255, 16, 1, 164, 255, 100, 255, 71, 254, 8, 0, 120, 255, 128, 0, 35, 255, 101, 0, 38, 255, 40, 0, 59, 255, 180, 255, 56, 254, 9, 0, 67, 254, 33, 0, 89, 254, 226, 0, 60, 0, 73, 0, 34, 255, 156, 0, 113, 254, 24, 1, 194, 254, 245, 0, 171, 254, 166, 0, 13, 254, 83, 1, 66, 255, 71, 1, 37, 255, 69, 1, 119, 255, 167, 255, 172, 253, 100, 0, 141, 253, 144, 0, 91, 253, 231, 1, 28, 0, 252, 0, 121, 254, 214, 0, 215, 255, 26, 1, 228, 255, 99, 0, 226, 254, 75, 1, 49, 0, 203, 1, 124, 254, 53, 2, 143, 254, 180, 1, 28, 0, 80, 1, 247, 255, 141, 1, 89, 255, 106, 2, 34, 0, 84, 2, 239, 255, 49, 2, 116, 255, 43, 1, 79, 0, 10, 2, 125, 0, 203, 0, 2, 0, 244, 0, 32, 1, 255, 0, 211, 0, 175, 0, 82, 0, 84, 2, 187, 0, 5, 2, 108, 0, 125, 1, 255, 0, 109, 1, 41, 1, 241, 1, 96, 1, 71, 1, 174, 255, 25, 0, 210, 0, 115, 1, 245, 0, 5, 1, 3, 0, 33, 2, 193, 1, 140, 0, 38, 1, 44, 0, 39, 1, 212, 0, 91, 1, 244, 0, 238, 1, 75, 1, 16, 2, 201, 0, 51, 1, 93, 1, 155, 1, 101, 2, 28, 1, 102, 2, 157, 1, 208, 1, 66, 1, 112, 2, 141, 1, 97, 0, 200, 0, 96, 255, 128, 1, 149, 0, 106, 1, 239, 1, 13, 2, 13, 1, 73, 2, 33, 0, 235, 1, 135, 255, 177, 1, 171, 1, 99, 2, 242, 1, 4, 2, 171, 0, 187, 1, 241, 1, 154, 2, 184, 1, 19, 1, 54, 2, 63, 2, 146, 0, 127, 2, 155, 0, 158, 2, 223, 255, 173, 0, 212, 0, 184, 2, 90, 255, 89, 2, 65, 255, 183, 2, 23, 254, 247, 1, 175, 0, 230, 2, 214, 0, 220, 1, 116, 1, 59, 4, 66, 2, 18, 2, 74, 2, 9, 3, 169, 1, 106, 3, 59, 1, 73, 3, 118, 1, 80, 3, 91, 255, 53, 2, 35, 0, 223, 3, 217, 255, 38, 4, 73, 1, 200, 2, 18, 3, 72, 3, 133, 2, 27, 3, 149, 2, 164, 2, 59, 2, 150, 3, 120, 2, 55, 4, 161, 2, 49, 3, 62, 1, 132, 1, 106, 3, 244, 3, 52, 2, 80, 3, 112, 3, 108, 2, 45, 2, 223, 1, 159, 2, 197, 1, 180, 2, 212, 1, 72, 3, 130, 2, 76, 3, 133, 2, 250, 1, 172, 1, 129, 3, 55, 2, 69, 3, 131, 1, 194, 3, 243, 1, 179, 2, 49, 2, 171, 3, 158, 3, 15, 3, 40, 1, 22, 3, 12, 1, 4, 4, 18, 2, 106, 3, 73, 1, 36, 2, 143, 0, 163, 2, 35, 1, 247, 1, 66, 0, 17, 4, 103, 1, 18, 3, 97, 0, 37, 3, 33, 0, 69, 3, 214, 1, 255, 1, 49, 0, 68, 4, 71, 1, 150, 4, 67, 1, 3, 0, 242, 0, 104, 3, 218, 1, 177, 2, 173, 1, 49, 5, 166, 2, 18, 4, 108, 2, 85, 4, 152, 2, 65, 1, 193, 0, 121, 3, 182, 3, 129, 4, 106, 3, 125, 3, 123, 2, 109, 3, 94, 3, 180, 3, 145, 3, 13, 5, 153, 2, 40, 5, 127, 2, 229, 3, 25, 3, 122, 5, 6, 4, 152, 4, 244, 3, 86, 4, 191, 3, 130, 5, 157, 3, 123, 5, 147, 3, 31, 2, 94, 3, 92, 4, 198, 4, 67, 3, 166, 4, 67, 3, 166, 4, 191, 3, 124, 4, 123, 4, 96, 5, 20, 5, 169, 4, 135, 5, 207, 4, 55, 5, 61, 5, 234, 2, 68, 4, 175, 6, 3, 5, 109, 5, 49, 4, 54, 5, 30, 6, 129, 4, 195, 5, 109, 6, 113, 4, 33, 7, 196, 4, 32, 4, 102, 5, 241, 5, 194, 6, 96, 6, 9, 6, 84, 6, 6, 6, 87, 3, 60, 6, 97, 3, 131, 6, 181, 2, 117, 3, 180, 6, 239, 5, 143, 4, 16, 5, 161, 8, 224, 6, 160, 7, 213, 5, 228, 7, 202, 5, 254, 5, 74, 7, 158, 6, 216, 7, 30, 6, 236, 2, 225, 6, 57, 3, 38, 1, 112, 5, 60, 4, 10, 8, 109, 2, 35, 5, 109, 1, 7, 5, 198, 0, 4, 4, 232, 1, 128, 5, 249, 0, 147, 1, 246, 3, 25, 6, 68, 1, 107, 1, 109, 6, 20, 4, 193, 0, 111, 1, 242, 7, 67, 7, 5, 255, 67, 2, 238, 2, 226, 3, 13, 255, 30, 0, 45, 5, 111, 3, 228, 255, 87, 255, 112, 2, 149, 3, 59, 254, 159, 0, 186, 0, 90, 5, 154, 253, 6, 0, 25, 2, 136, 1, 162, 255, 221, 254, 13, 3, 229, 0, 128, 255, 214, 254, 245, 0, 235, 1, 67, 253, 120, 253, 204, 3, 21, 3, 11, 254, 128, 253, 178, 0, 255, 0, 147, 254, 122, 254, 1, 255, 61, 1, 66, 252, 218, 254, 65, 255, 228, 0, 249, 252, 65, 254, 157, 0, 19, 255, 111, 253, 48, 253, 105, 254, 92, 0, 139, 255, 157, 253, 78, 1, 26, 255, 89, 253, 196, 251, 112, 255, 195, 254, 123, 252, 163, 252, 30, 253, 152, 254, 171, 255, 41, 253, 166, 255, 237, 252, 100, 0, 234, 255, 121, 254, 249, 254, 200, 255, 183, 255, 175, 254, 14, 253, 5, 0, 67, 255, 62, 253, 144, 253, 89, 0, 168, 254, 121, 255, 167, 251, 159, 254, 19, 255, 84, 253, 145, 251, 237, 254, 178, 251, 243, 254, 77, 251, 152, 0, 145, 0, 46, 253, 48, 251, 49, 0, 80, 0, 32, 251, 248, 252, 8, 255, 135, 1, 36, 253, 221, 253, 213, 1, 218, 0, 1, 255, 160, 252, 69, 0, 110, 1, 90, 255, 27, 254, 80, 253, 191, 0, 68, 251, 84, 251, 86, 255, 87, 255, 228, 250, 161, 249, 65, 1, 214, 1, 117, 250, 37, 251, 192, 255, 16, 1, 175, 250, 8, 255, 236, 1, 53, 2, 47, 253, 159, 253, 195, 0, 229, 1, 195, 253, 123, 255, 171, 1, 202, 0, 85, 255, 138, 255, 199, 0, 63, 2, 2, 0, 225, 255, 182, 2, 243, 2, 170, 250, 217, 255, 40, 2, 45, 2, 23, 254, 15, 1, 168, 2, 25, 2, 13, 0, 59, 254, 87, 3, 186, 3, 123, 255, 204, 255, 175, 255, 226, 2, 111, 251, 125, 2, 31, 4, 35, 4, 161, 255, 164, 2, 235, 4, 57, 4, 233, 1, 49, 1, 63, 254, 186, 3, 234, 253, 228, 3, 55, 252, 98, 3, 222, 251, 35, 4, 242, 250, 106, 2, 120, 250, 105, 2, 54, 254, 86, 5, 97, 255, 29, 7, 250, 252, 240, 253, 242, 255, 86, 4, 78, 251, 123, 252, 252, 252, 177, 1, 24, 251, 25, 251, 13, 252, 210, 254, 166, 253, 183, 253, 9, 253, 174, 249, 8, 253, 243, 249, 184, 252, 127, 248, 208, 252, 229, 253, 23, 249, 69, 247, 29, 255, 220, 255, 14, 248, 217, 248, 197, 247, 154, 251, 89, 246, 232, 248, 66, 250, 252, 0, 115, 245, 97, 254, 197, 253, 45, 254, 229, 5, 18, 6, 132, 8, 183, 7, 22, 9, 228, 7, 191, 248, 111, 249, 191, 248, 37, 249, 248, 247, 130, 251, 170, 247, 138, 249, 173, 249, 181, 251, 88, 249, 149, 251, 191, 250, 184, 249, 177, 250, 154, 249, 198, 250, 243, 250, 211, 250, 15, 251, 128, 249, 143, 249, 49, 250, 173, 252, 190, 250, 216, 248, 123, 250, 116, 247, 254, 250, 87, 253, 7, 249, 143, 249, 58, 252, 198, 251, 97, 251, 116, 249, 226, 251, 207, 251, 138, 251, 122, 251, 73, 251, 24, 253, 6, 251, 27, 252, 90, 252, 153, 250, 97, 252, 120, 250, 14, 252, 231, 250, 241, 252, 69, 252, 231, 251, 124, 252, 31, 252, 207, 252, 31, 253, 201, 252, 52, 252, 91, 251, 30, 253, 186, 251, 30, 253, 126, 251, 240, 252, 223, 252, 214, 252, 238, 252, 132, 252, 248, 253, 24, 252, 206, 252, 124, 253, 59, 252, 191, 253, 142, 252, 227, 253, 74, 253, 97, 253, 107, 252, 173, 253, 126, 253, 122, 253, 153, 253, 68, 252, 147, 253, 99, 252, 253, 253, 41, 253, 29, 254, 209, 252, 27, 254, 184, 252, 190, 253, 72, 254, 55, 253, 190, 253, 187, 254, 111, 253, 98, 253, 126, 254, 198, 253, 71, 254, 102, 253, 254, 253, 237, 252, 120, 254, 239, 253, 246, 253, 59, 254, 25, 254, 89, 254, 152, 253, 183, 253, 151, 253, 99, 255, 106, 253, 244, 254, 88, 253, 164, 254, 190, 254, 189, 254, 136, 253, 68, 254, 208, 254, 82, 254, 180, 254, 54, 254, 235, 254, 44, 254, 109, 253, 231, 252, 193, 254, 132, 253, 29, 255, 214, 253, 139, 254, 165, 254, 178, 254, 46, 255, 56, 254, 64, 255, 238, 253, 14, 255, 40, 255, 58, 255, 146, 254, 142, 254, 174, 254, 95, 255, 103, 254, 20, 253, 149, 255, 132, 254, 218, 254, 125, 253, 33, 255, 103, 253, 22, 255, 27, 253, 115, 255, 16, 254, 126, 255, 2, 254, 117, 255, 185, 254, 84, 255, 207, 254, 206, 254, 188, 253, 92, 255, 249, 254, 250, 254, 84, 255, 189, 255, 110, 254, 31, 0, 146, 254, 246, 255, 76, 254, 170, 255, 241, 253, 71, 0, 135, 254, 234, 255, 159, 253, 244, 255, 90, 253, 189, 255, 193, 254, 63, 0, 65, 255, 35, 0, 75, 255, 217, 255, 14, 255, 126, 0, 89, 255, 116, 255, 224, 253, 155, 0, 215, 254, 174, 0, 215, 254, 38, 0, 248, 255, 117, 0, 132, 254, 197, 0, 60, 254, 240, 0, 246, 253, 223, 0, 153, 255, 110, 0, 69, 255, 87, 0, 101, 255, 169, 0, 209, 255, 157, 0, 26, 0, 173, 255, 156, 255, 128, 0, 80, 0, 209, 0, 194, 255, 6, 0, 7, 0, 22, 0, 5, 0, 62, 1, 236, 255, 248, 0, 211, 255, 56, 255, 193, 255, 156, 0, 187, 255, 250, 0, 73, 255, 113, 1, 130, 255, 143, 255, 180, 255, 114, 255, 134, 255, 192, 255, 2, 255, 225, 255, 35, 0, 79, 255, 185, 255, 249, 255, 171, 0, 93, 0, 27, 0, 108, 0, 212, 0, 182, 254, 47, 255, 133, 255, 186, 255, 233, 254, 95, 0, 160, 255, 20, 0, 68, 255, 195, 255, 198, 254, 87, 0, 212, 254, 178, 255, 158, 254, 122, 255, 11, 0, 122, 0, 116, 255, 122, 0, 237, 254, 152, 0, 219, 254, 140, 0, 174, 255, 138, 0, 191, 254, 145, 255, 32, 254, 100, 255, 153, 254, 76, 0, 2, 255, 216, 255, 133, 253, 160, 255, 246, 253, 79, 0, 5, 254, 8, 0, 244, 254, 47, 1, 229, 253, 68, 0, 66, 254, 61, 0, 246, 253, 50, 1, 111, 0, 189, 0, 77, 254, 122, 0, 133, 254, 166, 0, 197, 253, 114, 254, 136, 253, 182, 255, 21, 253, 161, 255, 57, 254, 194, 0, 72, 252, 83, 0, 226, 252, 192, 0, 13, 253, 192, 0, 243, 252, 94, 255, 149, 253, 234, 0, 105, 253, 215, 254, 24, 254, 147, 255, 60, 252, 124, 255, 186, 252, 188, 255, 181, 252, 58, 0, 168, 251, 170, 255, 219, 252, 213, 254, 80, 252, 3, 255, 246, 252, 206, 255, 59, 252, 219, 253, 160, 254, 158, 255, 32, 252, 169, 254, 163, 251, 197, 254, 163, 251, 205, 254, 125, 251, 138, 254, 131, 253, 26, 255, 114, 251, 213, 255, 237, 250, 156, 255, 99, 252, 119, 254, 6, 251, 168, 253, 79, 253, 126, 255, 57, 250, 200, 254, 215, 250, 2, 255, 72, 250, 70, 254, 244, 250, 155, 253, 19, 251, 9, 254, 35, 250, 144, 254, 214, 250, 26, 0, 104, 250, 190, 255, 49, 249, 95, 255, 148, 249, 45, 254, 32, 249, 220, 253, 143, 250, 200, 253, 236, 249, 153, 252, 41, 250, 246, 251, 149, 250, 197, 253, 131, 248, 240, 253, 9, 249, 133, 255, 151, 248, 25, 255, 250, 247, 189, 254, 252, 247, 118, 252, 72, 248, 201, 253, 131, 248, 148, 253, 1, 248, 35, 252, 203, 251, 142, 254, 17, 248, 64, 253, 205, 246, 19, 253, 76, 245, 191, 251, 139, 248, 159, 0, 36, 248, 248, 0, 142, 253, 133, 255, 221, 246, 62, 252, 99, 253, 104, 254, 157, 250, 106, 251, 60, 254, 148, 254, 236, 251, 33, 253, 124, 255, 183, 0, 172, 249, 16, 253, 221, 253, 205, 254, 247, 252, 19, 251, 158, 255, 41, 0, 144, 252, 189, 251, 255, 254, 97, 0, 190, 249, 215, 248, 31, 0, 230, 255, 124, 253, 207, 253, 76, 255, 222, 253, 127, 254, 185, 251, 102, 254, 222, 252, 98, 254, 197, 252, 55, 254, 54, 252, 22, 254, 171, 251, 41, 255, 108, 252, 112, 255, 87, 252, 19, 254, 11, 251, 251, 253, 29, 250, 181, 0, 101, 0, 180, 254, 135, 252, 188, 252, 87, 252, 209, 253, 83, 254, 139, 253, 221, 253, 73, 255, 175, 254, 223, 253, 174, 255, 6, 255, 226, 254, 5, 0, 124, 255, 164, 254, 4, 255, 219, 254, 40, 254, 98, 255, 100, 0, 227, 255, 197, 0, 20, 255, 88, 254, 163, 252, 43, 255, 116, 255, 249, 255, 85, 254, 69, 254, 187, 0, 159, 255, 84, 253, 32, 253, 219, 254, 2, 1, 144, 254, 104, 255, 106, 255, 136, 1, 159, 253, 175, 0, 114, 255, 43, 1, 118, 255, 152, 0, 137, 255, 73, 1, 26, 254, 204, 255, 37, 1, 198, 0, 73, 255, 117, 0, 175, 0, 75, 1, 198, 255, 238, 254, 231, 0, 44, 1, 224, 254, 74, 1, 207, 254, 116, 1, 145, 255, 153, 1, 247, 255, 167, 1, 83, 0, 0, 1, 67, 0, 111, 1, 237, 255, 248, 0, 91, 0, 113, 0, 221, 255, 150, 1, 65, 255, 154, 0, 238, 0, 40, 1, 5, 0, 197, 0, 141, 0, 221, 0, 57, 1, 198, 0, 211, 0, 165, 1, 244, 0, 78, 1, 88, 0, 170, 1, 13, 255, 198, 1, 202, 0, 40, 2, 251, 255, 147, 1, 35, 1, 185, 0, 219, 0, 45, 1, 251, 0, 138, 0, 128, 0, 69, 0, 197, 0, 32, 1, 116, 255, 195, 255, 188, 0, 105, 1, 197, 0, 86, 2, 186, 1, 17, 1, 34, 1, 143, 0, 216, 1, 226, 1, 157, 0, 114, 1, 159, 1, 65, 1, 116, 1, 129, 1, 146, 1, 40, 2, 155, 0, 24, 0, 38, 2, 7, 1, 245, 255, 21, 0, 104, 1, 227, 0, 147, 0, 2, 255, 168, 1, 97, 0, 110, 1, 243, 255, 119, 1, 141, 0, 193, 1, 232, 0, 140, 1, 251, 1, 218, 1, 16, 1, 189, 2, 68, 1, 106, 1, 209, 255, 75, 2, 148, 0, 31, 2, 69, 0, 144, 1, 205, 255, 49, 2, 59, 0, 220, 0, 246, 255, 96, 1, 147, 0, 206, 0, 211, 0, 141, 2, 185, 0, 51, 2, 41, 1, 53, 2, 28, 1, 82, 2, 121, 0, 254, 2, 192, 0, 142, 1, 118, 0, 130, 2, 178, 1, 233, 0, 8, 1, 225, 1, 211, 1, 129, 0, 91, 255, 187, 2, 239, 0, 90, 0, 26, 0, 86, 1, 218, 1, 201, 255, 27, 0, 132, 1, 94, 0, 84, 255, 0, 0, 213, 2, 123, 1, 196, 255, 81, 1, 114, 1, 209, 1, 95, 0, 63, 1, 38, 3, 83, 2, 78, 0, 4, 1, 241, 1, 83, 3, 210, 0, 48, 2, 202, 1, 62, 2, 48, 254, 202, 0, 241, 1, 113, 2, 54, 255, 152, 0, 48, 0, 200, 2, 236, 255, 54, 2, 100, 0, 203, 2, 199, 1, 212, 1, 155, 1, 93, 2, 63, 1, 134, 2, 195, 0, 103, 2, 145, 1, 26, 2, 168, 2, 227, 2, 201, 0, 155, 2, 178, 1, 186, 3, 198, 1, 169, 1, 134, 2, 235, 1, 94, 2, 169, 2, 160, 1, 252, 1, 241, 1, 54, 3, 170, 1, 47, 3, 148, 2, 135, 2, 116, 2, 204, 2, 185, 2, 210, 1, 106, 2, 201, 1, 173, 2, 204, 1, 109, 1, 53, 1, 209, 2, 55, 2, 68, 3, 89, 2, 97, 2, 44, 1, 57, 3, 203, 1, 175, 3, 175, 2, 169, 2, 21, 2, 147, 3, 86, 2, 79, 2, 243, 0, 108, 3, 195, 1, 106, 3, 164, 1, 18, 3, 61, 1, 220, 2, 220, 0, 154, 3, 61, 1, 84, 4, 111, 1, 19, 2, 210, 1, 4, 4, 137, 2, 29, 4, 103, 2, 10, 4, 41, 2, 61, 3, 90, 2, 253, 3, 31, 3, 159, 3, 35, 3, 110, 3, 251, 2, 31, 3, 240, 1, 93, 5, 5, 3, 73, 2, 2, 3, 35, 3, 162, 3, 75, 4, 25, 3, 198, 4, 94, 3, 185, 4, 127, 3, 1, 4, 215, 2, 4, 3, 77, 3, 148, 4, 91, 4, 99, 3, 253, 3, 62, 3, 245, 3, 73, 3, 142, 3, 250, 1, 191, 2, 215, 4, 53, 4, 108, 2, 51, 3, 172, 4, 59, 4, 131, 4, 57, 4, 118, 4, 139, 3, 11, 6, 97, 4, 29, 5, 136, 2, 63, 5, 100, 2, 204, 5, 220, 3, 199, 5, 169, 3, 217, 3, 48, 5, 187, 3, 61, 5, 173, 1, 142, 3, 73, 3, 58, 5, 52, 2, 155, 4, 156, 1, 132, 4, 147, 5, 40, 5, 154, 5, 50, 5, 128, 2, 248, 2, 190, 6, 130, 5, 190, 0, 43, 2, 49, 4, 237, 3, 170, 1, 1, 1, 71, 3, 212, 3, 235, 0, 231, 0, 240, 5, 143, 4, 109, 0, 37, 1, 246, 3, 33, 6, 49, 1, 142, 0, 124, 4, 27, 2, 221, 254, 148, 255, 189, 4, 204, 3, 22, 0, 40, 255, 155, 2, 60, 3, 30, 254, 182, 1, 197, 1, 151, 5, 187, 253, 90, 254, 21, 3, 131, 1, 154, 254, 58, 254, 174, 0, 12, 3, 220, 255, 140, 254, 134, 1, 122, 255, 139, 253, 160, 0, 206, 254, 239, 2, 22, 251, 181, 254, 177, 0, 10, 2, 8, 255, 62, 2, 5, 255, 127, 2, 237, 253, 151, 1, 172, 253, 138, 1, 93, 254, 21, 3, 151, 253, 33, 3, 38, 252, 143, 1, 167, 252, 215, 2, 249, 255, 6, 2, 65, 253, 54, 1, 137, 251, 232, 255, 22, 252, 31, 1, 64, 252, 107, 1, 237, 250, 56, 1, 2, 250, 245, 0, 235, 249, 49, 1, 28, 0, 153, 0, 165, 252, 81, 255, 223, 255, 76, 1, 138, 250, 102, 255, 212, 0, 154, 1, 175, 253, 59, 255, 188, 251, 64, 253, 120, 252, 191, 255, 26, 1, 111, 1, 106, 252, 82, 253, 89, 1, 93, 0, 254, 254, 155, 254, 184, 2, 132, 2, 75, 253, 228, 255, 192, 1, 237, 1, 239, 254, 193, 0, 15, 2, 34, 2, 13, 255, 255, 253, 128, 1, 120, 255, 17, 1, 159, 254, 0, 2, 114, 255, 25, 2, 58, 255, 173, 3, 238, 2, 83, 0, 248, 0, 66, 2, 93, 3, 200, 255, 80, 2, 74, 3, 44, 0, 124, 3, 24, 0, 33, 0, 122, 3, 240, 255, 214, 3, 63, 3, 118, 5, 255, 5, 106, 7, 180, 6, 96, 5, 156, 7, 185, 5, 22, 252, 95, 252, 184, 251, 77, 251, 127, 253, 93, 252, 164, 253, 63, 252, 245, 252, 95, 253, 189, 252, 236, 252, 96, 254, 104, 253, 54, 254, 2, 253, 116, 253, 247, 253, 106, 253, 17, 254, 1, 252, 3, 254, 1, 252, 84, 254, 68, 254, 216, 253, 144, 254, 63, 254, 33, 254, 45, 255, 226, 251, 121, 252, 196, 254, 7, 255, 199, 253, 177, 253, 199, 253, 237, 254, 227, 253, 65, 255, 52, 253, 68, 255, 182, 252, 248, 254, 179, 254, 8, 255, 194, 254, 28, 255, 237, 254, 1, 0, 201, 253, 28, 255, 141, 255, 35, 255, 18, 255, 138, 254, 59, 255, 5, 254, 34, 255, 189, 253, 254, 254, 80, 254, 195, 255, 12, 255, 167, 254, 2, 0, 174, 254, 39, 0, 41, 255, 87, 255, 198, 255, 0, 0, 200, 255, 250, 255, 53, 255, 125, 255, 1, 0, 70, 255, 251, 255, 45, 255, 6, 0, 132, 254, 11, 0, 94, 254, 140, 255, 131, 0, 122, 255, 113, 0, 89, 0, 252, 255, 71, 0, 254, 255, 237, 255, 64, 255, 6, 1, 24, 0, 189, 0, 151, 0, 123, 255, 147, 255, 186, 0, 103, 255, 166, 0, 37, 255, 37, 0, 139, 0, 193, 0, 171, 0, 81, 1, 124, 0, 158, 0, 195, 255, 141, 0, 226, 0, 243, 255, 190, 0, 231, 0, 34, 0, 98, 1, 109, 0, 60, 1, 201, 0, 244, 0, 164, 0, 74, 1, 171, 255, 134, 1, 172, 255, 254, 0, 71, 1, 1, 1, 79, 1, 235, 1, 147, 0, 220, 1, 105, 0, 54, 0, 77, 0, 181, 1, 114, 1, 165, 1, 58, 1, 193, 1, 86, 1, 73, 1, 126, 0, 161, 2, 36, 1, 59, 2, 132, 1, 243, 0, 193, 0, 141, 2, 64, 1, 109, 2, 24, 1, 194, 0, 124, 1, 5, 2, 69, 2, 45, 0, 67, 1, 111, 0, 166, 1, 233, 1, 139, 1, 222, 2, 22, 2, 110, 2, 34, 2, 230, 1, 246, 1, 62, 1, 60, 2, 189, 0, 38, 2, 129, 1, 166, 1, 99, 255, 153, 0, 131, 255, 126, 1, 59, 255, 130, 1, 249, 254, 78, 1, 228, 0, 185, 2, 68, 255, 1, 0, 51, 0, 41, 1, 5, 254, 213, 0, 136, 254, 141, 1, 232, 255, 255, 0, 221, 253, 89, 0, 10, 254, 162, 255, 131, 1, 179, 0, 148, 253, 68, 0, 84, 253, 112, 0, 126, 253, 162, 254, 252, 254, 172, 0, 74, 254, 188, 254, 8, 1, 136, 2, 60, 252, 252, 255, 159, 251, 7, 0, 122, 255, 134, 0, 147, 251, 206, 254, 143, 0, 96, 0, 92, 254, 15, 254, 59, 251, 162, 254, 9, 250, 83, 253, 95, 255, 72, 0, 105, 3, 179, 2, 220, 2, 27, 1, 153, 3, 97, 1, 78, 1, 219, 1, 71, 4, 53, 3, 96, 3, 12, 2, 75, 3, 241, 1, 202, 2, 199, 2, 20, 3, 238, 2, 52, 4, 202, 2, 180, 4, 241, 2, 65, 2, 150, 2, 124, 245, 170, 192, 38, 3, 44, 7, 95, 251, 33, 228, 37, 12, 28, 4, 40, 248, 202, 208, 85, 16, 107, 5, 192, 249, 99, 218, 69, 9, 145, 5, 232, 249, 78, 219, 176, 12, 193, 7, 210, 251, 214, 230, 35, 7, 16, 9, 184, 252, 64, 236, 173, 3, 242, 12, 199, 254, 163, 248, 47, 9, 161, 11, 41, 254, 234, 244, 32, 14, 116, 9, 247, 252, 183, 237, 123, 13, 24, 12, 98, 254, 70, 246, 139, 11, 205, 16, 72, 0, 178, 1, 56, 7, 148, 17, 139, 0, 68, 3, 44, 15, 40, 21, 157, 1, 180, 9, 163, 4, 42, 28, 67, 3, 166, 19, 11, 12, 40, 35, 139, 4, 90, 27, 216, 28, 115, 3, 37, 247, 177, 202, 74, 23, 226, 5, 58, 250, 60, 221, 35, 20, 86, 8, 61, 252, 88, 233, 8, 31, 217, 7, 228, 251, 65, 231, 107, 25, 202, 8, 139, 252, 49, 235, 246, 29, 192, 10, 180, 253, 47, 242, 64, 23, 200, 11, 60, 254, 92, 245, 34, 19, 180, 14, 131, 255, 17, 253, 77, 27, 4, 14, 60, 255, 103, 251, 238, 31, 138, 15, 213, 255, 252, 254, 176, 23, 52, 17, 107, 0, 133, 2, 29, 30, 223, 19, 64, 1, 136, 7, 147, 21, 133, 23, 57, 2, 98, 13, 89, 30, 214, 27, 50, 3, 62, 19, 172, 23, 2, 31, 209, 3, 253, 22, 218, 21, 223, 44, 243, 5, 212, 35, 85, 41, 76, 5, 159, 249, 153, 217, 89, 35, 61, 6, 145, 250, 68, 223, 66, 38, 243, 7, 247, 251, 180, 231, 242, 34, 111, 9, 244, 252, 164, 237, 56, 40, 24, 10, 87, 253, 253, 239, 191, 36, 174, 10, 171, 253, 245, 241, 252, 33, 146, 12, 156, 254, 160, 247, 29, 38, 67, 13, 235, 254, 123, 249, 193, 39, 52, 15, 181, 255, 58, 254, 210, 35, 176, 17, 148, 0, 123, 3, 168, 39, 140, 19, 40, 1, 245, 6, 154, 35, 103, 22, 241, 1, 177, 11, 4, 41, 122, 24, 116, 2, 198, 14, 126, 39, 207, 29, 151, 3, 158, 21, 140, 34, 23, 34, 93, 4, 72, 26, 252, 34, 208, 48, 112, 6, 193, 38, 124, 50, 208, 3, 185, 247, 47, 206, 171, 44, 219, 6, 28, 251, 141, 226, 106, 47, 24, 9, 189, 252, 96, 236, 124, 44, 64, 9, 214, 252, 248, 236, 204, 41, 248, 11, 83, 254, 236, 245, 44, 48, 45, 11, 238, 253, 136, 243, 202, 45, 255, 12, 205, 254, 200, 248, 6, 44, 116, 14, 106, 255, 120, 252, 109, 42, 61, 17, 110, 0, 151, 2, 50, 47, 181, 17, 150, 0, 134, 3, 19, 44, 85, 20, 98, 1, 84, 8, 184, 46, 161, 24, 125, 2, 253, 14, 159, 43, 110, 29, 132, 3, 44, 21, 96, 47, 137, 32, 25, 4, 168, 24, 217, 42, 25, 42, 149, 5, 156, 33, 60, 40, 224, 67, 87, 8, 53, 50, 75, 54, 145, 6, 220, 250, 15, 225, 36, 49, 253, 7, 254, 251, 221, 231, 209, 51, 135, 9, 2, 253, 254, 237, 209, 54, 173, 11, 47, 254, 14, 245, 140, 52, 26, 12, 99, 254, 78, 246, 108, 48, 74, 14, 89, 255, 18, 252, 198, 52, 196, 14, 137, 255, 55, 253, 80, 50, 176, 16, 62, 0, 118, 1, 221, 52, 253, 18, 253, 0, 243, 5, 123, 49, 81, 21, 168, 1, 248, 9, 30, 54, 218, 23, 78, 2, 223, 13, 231, 50, 83, 25, 166, 2, 244, 15, 245, 52, 41, 30, 169, 3, 7, 22, 157, 50, 95, 36, 189, 4, 136, 28, 146, 53, 31, 45, 252, 5, 5, 36, 47, 49, 102, 59, 146, 7, 147, 45, 9, 59, 4, 6, 91, 250, 4, 222, 224, 58, 29, 9, 192, 252, 113, 236, 191, 56, 207, 9, 45, 253, 0, 239, 100, 57, 127, 12, 147, 254, 107, 247, 22, 60, 232, 13, 49, 255, 33, 251, 53, 55, 120, 15, 206, 255, 212, 254, 254, 58, 140, 16, 50, 0, 42, 1, 252, 55, 216, 18, 242, 0, 174, 5, 254, 57, 75, 21, 166, 1, 238, 9, 202, 59, 195, 23, 72, 2, 190, 13, 249, 55, 232, 26, 0, 3, 15, 18, 212, 58, 9, 30, 162, 3, 226, 21, 70, 56, 210, 36, 207, 4, 245, 28, 27, 60, 13, 38, 0, 5, 26, 30, 232, 57, 191, 55, 52, 7, 94, 43, 32, 53, 107, 97, 109, 10, 195, 62, 12, 64, 177, 7, 198, 251, 139, 230, 177, 65, 16, 11, 223, 253, 45, 243, 97, 61, 27, 11, 229, 253, 80, 243, 232, 62, 8, 13, 209, 254, 223, 248, 0, 64, 123, 15, 207, 255, 218, 254, 44, 66, 227, 17, 165, 0, 224, 3, 95, 61, 247, 17, 171, 0, 6, 4, 94, 63, 72, 21, 165, 1, 233, 9, 192, 65, 238, 24, 143, 2, 105, 15, 129, 61, 229, 27, 53, 3, 80, 19, 198, 63, 45, 29, 120, 3, 223, 20, 227, 64, 176, 33, 76, 4, 222, 25, 132, 66, 178, 40, 99, 5, 111, 32, 33, 62, 41, 46, 29, 6, 207, 36, 238, 65, 98, 57, 95, 7, 96, 44, 131, 64, 134, 81, 102, 9, 147, 56, 222, 70, 35, 8, 25, 252, 131, 232, 201, 75, 106, 12, 137, 254, 47, 247, 100, 68, 98, 13, 248, 254, 203, 249, 86, 78, 187, 15, 231, 255, 105, 255, 149, 70, 153, 16, 54, 0, 70, 1, 8, 74, 202, 19, 58, 1, 98, 7, 47, 69, 26, 21, 153, 1, 157, 9, 123, 77, 48, 24, 98, 2, 92, 14, 30, 70, 102, 27, 27, 3, 176, 18, 70, 83, 197, 30, 198, 3, 184, 22, 246, 69, 73, 36, 186, 4, 115, 28, 200, 74, 74, 36, 186, 4, 116, 28, 37, 80, 117, 44, 230, 5, 129, 35, 155, 70, 149, 56, 74, 7, 226, 43, 31, 78, 218, 69, 129, 8, 52, 51, 154, 73, 252, 127, 0, 12, 62, 72, 61, 42, 81, 112, 63, 11, 181, 67, 0, 80, 225, 10, 198, 253, 153, 242, 153, 73, 194, 25, 191, 2, 139, 16, 81, 24, 245, 28, 108, 3, 156, 20, 51, 67, 204, 40, 103, 5, 133, 32, 122, 84, 245, 4, 61, 249, 74, 215, 143, 82, 71, 17, 113, 0, 171, 2, 40, 44, 20, 6, 106, 250, 95, 222, 61, 74, 20, 50, 150, 6, 164, 39, 215, 67, 194, 9, 37, 253, 210, 238, 194, 69, 225, 18, 244, 0, 192, 5, 10, 39, 194, 9, 37, 253, 210, 238, 122, 68, 184, 30, 196, 3, 170, 22, 174, 55, 92, 7, 133, 251, 5, 229, 20, 62, 81, 12, 125, 254, 233, 246, 61, 26, 10, 7, 67, 251, 121, 227, 10, 71, 225, 78, 53, 9, 109, 55, 102, 70, 215, 11, 67, 254, 138, 245, 71, 65, 225, 22, 16, 2, 109, 12, 143, 34, 174, 15, 226, 255, 76, 255, 20, 62, 10, 35, 134, 4, 60, 27, 102, 70, 112, 5, 198, 249, 129, 218, 71, 65, 0, 16, 0, 0, 0, 0, 0, 32, 143, 2, 108, 245, 79, 192, 133, 59, 102, 54, 16, 7, 132, 42, 174, 55, 40, 12, 106, 254, 116, 246, 10, 55, 61, 18, 193, 0, 141, 4, 30, 21, 143, 10, 154, 253, 143, 241, 122, 52, 153, 25, 182, 2, 84, 16, 163, 48, 133, 3, 67, 247, 100, 203, 163, 48, 102, 10, 131, 253, 7, 241, 184, 14, 143, 2, 108, 245, 79, 192, 153, 57, 215, 91, 22, 10, 183, 60, 225, 74, 153, 9, 13, 253, 62, 238, 184, 78, 215, 19, 62, 1, 121, 7, 225, 26, 0, 16, 0, 0, 0, 0, 0, 80, 112, 33, 65, 4, 156, 25, 204, 76, 225, 2, 26, 246, 105, 196, 61, 74, 163, 16, 58, 0, 91, 1, 184, 30, 40, 8, 29, 252, 151, 232, 204, 44, 0, 48, 87, 6, 43, 38, 20, 62, 194, 5, 26, 250, 126, 220, 112, 61, 20, 18, 180, 0, 62, 4, 215, 35, 153, 5, 240, 249, 131, 219, 184, 62, 92, 27, 25, 3, 164, 18, 235, 57, 225, 2, 26, 246, 105, 196, 225, 58, 204, 8, 140, 252, 55, 235, 215, 19, 204, 4, 12, 249, 38, 214, 215, 51, 174, 67, 83, 8, 27, 50, 163, 64, 30, 9, 193, 252, 118, 236, 225, 58, 184, 22, 6, 2, 46, 12, 92, 15, 102, 14, 100, 255, 86, 252, 174, 55, 153, 33, 72, 4, 198, 25, 235, 65, 10, 3, 106, 246, 74, 198, 225, 58, 225, 14, 149, 255, 122, 253, 174, 23, 102, 2, 12, 245, 17, 190, 122, 36, 40, 36, 180, 4, 83, 28, 215, 51, 225, 6, 33, 251, 172, 226, 215, 51, 194, 13, 33, 255, 193, 250, 153, 9, 174, 7, 196, 251, 127, 230, 204, 44, 153, 21, 187, 1, 108, 10, 245, 40, 225, 2, 26, 246, 105, 196, 112, 45, 122, 12, 145, 254, 92, 247, 194, 5, 10, 3, 106, 246, 74, 198, 0, 64, 248, 65, 226, 67, 190, 69, 142, 71, 82, 73, 12, 75, 188, 76, 98, 78, 0, 80, 150, 81, 35, 83, 170, 84, 42, 86, 163, 87, 22, 89, 130, 90, 234, 91, 76, 93, 168, 94, 0, 96, 83, 97, 161, 98, 236, 99, 49, 101, 115, 102, 177, 103, 235, 104, 34, 106, 85, 107, 132, 108, 177, 109, 218, 110, 0, 112, 35, 113, 67, 114, 97, 115, 123, 116, 147, 117, 169, 118, 188, 119, 204, 120, 218, 121, 230, 122, 239, 123, 247, 124, 252, 125, 255, 126, 255, 127, 255, 127, 61, 10, 63, 10, 69, 10, 78, 10, 91, 10, 108, 10, 129, 10, 153, 10, 181, 10, 212, 10, 248, 10, 31, 11, 74, 11, 120, 11, 170, 11, 224, 11, 25, 12, 86, 12, 151, 12, 219, 12, 35, 13, 110, 13, 189, 13, 15, 14, 101, 14, 190, 14, 27, 15, 123, 15, 223, 15, 70, 16, 176, 16, 30, 17, 143, 17, 3, 18, 123, 18, 245, 18, 115, 19, 244, 19, 120, 20, 0, 21, 138, 21, 23, 22, 168, 22, 59, 23, 209, 23, 106, 24, 6, 25, 165, 25, 70, 26, 234, 26, 145, 27, 59, 28, 231, 28, 149, 29, 70, 30, 250, 30, 176, 31, 104, 32, 35, 33, 224, 33, 159, 34, 97, 35, 36, 36, 234, 36, 178, 37, 124, 38, 71, 39, 21, 40, 228, 40, 181, 41, 136, 42, 93, 43, 51, 44, 11, 45, 228, 45, 191, 46, 155, 47, 121, 48, 88, 49, 56, 50, 26, 51, 252, 51, 224, 52, 196, 53, 170, 54, 145, 55, 120, 56, 96, 57, 73, 58, 51, 59, 29, 60, 8, 61, 243, 61, 223, 62, 203, 63, 184, 64, 165, 65, 146, 66, 127, 67, 108, 68, 90, 69, 71, 70, 52, 71, 33, 72, 14, 73, 251, 73, 231, 74, 211, 75, 191, 76, 170, 77, 149, 78, 126, 79, 104, 80, 80, 81, 56, 82, 31, 83, 5, 84, 234, 84, 207, 85, 178, 86, 148, 87, 116, 88, 84, 89, 50, 90, 15, 91, 235, 91, 197, 92, 157, 93, 117, 94, 74, 95, 30, 96, 240, 96, 192, 97, 143, 98, 91, 99, 38, 100, 239, 100, 181, 101, 122, 102, 60, 103, 253, 103, 187, 104, 119, 105, 48, 106, 232, 106, 156, 107, 79, 108, 255, 108, 172, 109, 87, 110, 255, 110, 165, 111, 71, 112, 231, 112, 133, 113, 31, 114, 183, 114, 75, 115, 221, 115, 108, 116, 248, 116, 129, 117, 6, 118, 137, 118, 8, 119, 133, 119, 254, 119, 116, 120, 230, 120, 86, 121, 194, 121, 42, 122, 144, 122, 242, 122, 80, 123, 171, 123, 3, 124, 87, 124, 167, 124, 244, 124, 62, 125, 132, 125, 198, 125, 5, 126, 64, 126, 120, 126, 172, 126, 220, 126, 9, 127, 49, 127, 87, 127, 120, 127, 150, 127, 176, 127, 199, 127, 217, 127, 232, 127, 243, 127, 251, 127, 255, 127, 255, 127, 229, 127, 153, 127, 25, 127, 103, 126, 129, 125], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 20480);
      allocate([106, 124, 33, 123, 167, 121, 252, 119, 34, 118, 24, 116, 223, 113, 122, 111, 231, 108, 41, 106, 65, 103, 47, 100, 245, 96, 149, 93, 15, 90, 101, 86, 153, 82, 171, 78, 158, 74, 116, 70, 45, 66, 204, 61, 82, 57, 193, 52, 27, 48, 98, 43, 151, 38, 189, 33, 213, 28, 226, 23, 230, 18, 226, 13, 216, 8, 203, 3, 61, 10, 64, 10, 73, 10, 88, 10, 108, 10, 135, 10, 167, 10, 205, 10, 249, 10, 43, 11, 99, 11, 160, 11, 227, 11, 44, 12, 122, 12, 207, 12, 40, 13, 136, 13, 237, 13, 87, 14, 199, 14, 60, 15, 183, 15, 55, 16, 189, 16, 71, 17, 215, 17, 108, 18, 6, 19, 165, 19, 73, 20, 242, 20, 159, 21, 82, 22, 9, 23, 196, 23, 133, 24, 73, 25, 18, 26, 224, 26, 177, 27, 135, 28, 97, 29, 62, 30, 32, 31, 5, 32, 238, 32, 219, 33, 203, 34, 191, 35, 182, 36, 176, 37, 174, 38, 174, 39, 177, 40, 184, 41, 193, 42, 204, 43, 218, 44, 235, 45, 254, 46, 19, 48, 42, 49, 67, 50, 94, 51, 123, 52, 154, 53, 186, 54, 219, 55, 254, 56, 34, 58, 71, 59, 109, 60, 148, 61, 188, 62, 228, 63, 13, 65, 54, 66, 96, 67, 138, 68, 180, 69, 221, 70, 7, 72, 48, 73, 89, 74, 130, 75, 169, 76, 208, 77, 246, 78, 27, 80, 63, 81, 98, 82, 132, 83, 164, 84, 194, 85, 223, 86, 250, 87, 19, 89, 43, 90, 64, 91, 83, 92, 99, 93, 113, 94, 125, 95, 134, 96, 140, 97, 143, 98, 144, 99, 141, 100, 135, 101, 126, 102, 114, 103, 98, 104, 79, 105, 56, 106, 30, 107, 255, 107, 221, 108, 183, 109, 140, 110, 94, 111, 43, 112, 244, 112, 185, 113, 121, 114, 53, 115, 236, 115, 158, 116, 76, 117, 245, 117, 153, 118, 55, 119, 209, 119, 102, 120, 246, 120, 129, 121, 6, 122, 134, 122, 1, 123, 118, 123, 230, 123, 81, 124, 182, 124, 21, 125, 111, 125, 195, 125, 17, 126, 90, 126, 157, 126, 219, 126, 18, 127, 68, 127, 112, 127, 150, 127, 183, 127, 209, 127, 230, 127, 244, 127, 253, 127, 255, 127, 255, 127, 244, 127, 208, 127, 149, 127, 66, 127, 215, 126, 85, 126, 188, 125, 12, 125, 69, 124, 104, 123, 117, 122, 108, 121, 78, 120, 28, 119, 213, 117, 122, 116, 13, 115, 140, 113, 250, 111, 87, 110, 162, 108, 222, 106, 11, 105, 40, 103, 57, 101, 60, 99, 51, 97, 30, 95, 255, 92, 215, 90, 165, 88, 108, 86, 44, 84, 229, 81, 154, 79, 74, 77, 247, 74, 161, 72, 74, 70, 243, 67, 156, 65, 71, 63, 244, 60, 164, 58, 88, 56, 18, 54, 209, 51, 152, 49, 103, 47, 62, 45, 31, 43, 11, 41, 2, 39, 5, 37, 21, 35, 51, 33, 95, 31, 155, 29, 231, 27, 67, 26, 177, 24, 49, 23, 195, 21, 105, 20, 34, 19, 239, 17, 209, 16, 201, 15, 214, 14, 249, 13, 50, 13, 130, 12, 232, 11, 102, 11, 252, 10, 169, 10, 109, 10, 73, 10, 61, 10, 61, 10, 63, 10, 67, 10, 74, 10, 84, 10, 96, 10, 111, 10, 129, 10, 150, 10, 174, 10, 200, 10, 229, 10, 5, 11, 39, 11, 77, 11, 117, 11, 159, 11, 205, 11, 253, 11, 48, 12, 101, 12, 157, 12, 216, 12, 22, 13, 86, 13, 153, 13, 222, 13, 38, 14, 113, 14, 190, 14, 13, 15, 96, 15, 181, 15, 12, 16, 102, 16, 194, 16, 33, 17, 130, 17, 230, 17, 76, 18, 180, 18, 31, 19, 140, 19, 252, 19, 110, 20, 226, 20, 88, 21, 209, 21, 76, 22, 201, 22, 72, 23, 202, 23, 77, 24, 211, 24, 91, 25, 229, 25, 113, 26, 254, 26, 142, 27, 32, 28, 180, 28, 74, 29, 225, 29, 123, 30, 22, 31, 179, 31, 82, 32, 242, 32, 149, 33, 57, 34, 222, 34, 133, 35, 46, 36, 216, 36, 132, 37, 50, 38, 224, 38, 145, 39, 66, 40, 245, 40, 169, 41, 95, 42, 22, 43, 206, 43, 135, 44, 66, 45, 253, 45, 186, 46, 120, 47, 54, 48, 246, 48, 183, 49, 120, 50, 59, 51, 254, 51, 194, 52, 135, 53, 77, 54, 19, 55, 218, 55, 161, 56, 106, 57, 50, 58, 252, 58, 197, 59, 144, 60, 90, 61, 37, 62, 240, 62, 188, 63, 136, 64, 84, 65, 32, 66, 236, 66, 185, 67, 133, 68, 82, 69, 30, 70, 235, 70, 183, 71, 132, 72, 80, 73, 28, 74, 231, 74, 179, 75, 126, 76, 73, 77, 19, 78, 221, 78, 166, 79, 111, 80, 56, 81, 0, 82, 199, 82, 142, 83, 84, 84, 25, 85, 221, 85, 161, 86, 100, 87, 38, 88, 231, 88, 167, 89, 103, 90, 37, 91, 226, 91, 158, 92, 89, 93, 19, 94, 204, 94, 131, 95, 57, 96, 238, 96, 162, 97, 84, 98, 5, 99, 181, 99, 99, 100, 15, 101, 186, 101, 100, 102, 12, 103, 178, 103, 87, 104, 250, 104, 155, 105, 59, 106, 217, 106, 117, 107, 16, 108, 168, 108, 63, 109, 211, 109, 102, 110, 247, 110, 134, 111, 19, 112, 158, 112, 39, 113, 174, 113, 50, 114, 181, 114, 53, 115, 179, 115, 47, 116, 169, 116, 33, 117, 150, 117, 9, 118, 122, 118, 232, 118, 84, 119, 190, 119, 37, 120, 138, 120, 236, 120, 76, 121, 170, 121, 5, 122, 94, 122, 180, 122, 7, 123, 88, 123, 167, 123, 242, 123, 60, 124, 130, 124, 198, 124, 8, 125, 71, 125, 131, 125, 188, 125, 243, 125, 39, 126, 89, 126, 136, 126, 180, 126, 221, 126, 4, 127, 40, 127, 73, 127, 103, 127, 131, 127, 156, 127, 178, 127, 197, 127, 214, 127, 228, 127, 239, 127, 247, 127, 253, 127, 255, 127, 255, 127, 97, 125, 160, 117, 15, 105, 48, 88, 181, 67, 116, 44, 98, 19, 68, 101, 99, 111, 100, 101, 114, 0, 101, 110, 99, 111, 100, 101, 114, 0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE + 30720);
      var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
      assert(tempDoublePtr % 8 == 0);

      function _sbrk(bytes) {
          var self = _sbrk;
          if (!self.called) {
              DYNAMICTOP = alignMemoryPage(DYNAMICTOP);
              self.called = true;
              assert(Runtime.dynamicAlloc);
              self.alloc = Runtime.dynamicAlloc;
              Runtime.dynamicAlloc = (function () {
                  abort("cannot dynamically allocate, sbrk now has control");
              });
          }
          var ret = DYNAMICTOP;
          if (bytes != 0) {
              var success = self.alloc(bytes);
              if (!success) return -1 >>> 0
          }
          return ret
      }

      function ___setErrNo(value) {
          if (Module["___errno_location"]) HEAP32[Module["___errno_location"]() >> 2] = value;
          return value
      }

      var ERRNO_CODES = {
          EPERM: 1,
          ENOENT: 2,
          ESRCH: 3,
          EINTR: 4,
          EIO: 5,
          ENXIO: 6,
          E2BIG: 7,
          ENOEXEC: 8,
          EBADF: 9,
          ECHILD: 10,
          EAGAIN: 11,
          EWOULDBLOCK: 11,
          ENOMEM: 12,
          EACCES: 13,
          EFAULT: 14,
          ENOTBLK: 15,
          EBUSY: 16,
          EEXIST: 17,
          EXDEV: 18,
          ENODEV: 19,
          ENOTDIR: 20,
          EISDIR: 21,
          EINVAL: 22,
          ENFILE: 23,
          EMFILE: 24,
          ENOTTY: 25,
          ETXTBSY: 26,
          EFBIG: 27,
          ENOSPC: 28,
          ESPIPE: 29,
          EROFS: 30,
          EMLINK: 31,
          EPIPE: 32,
          EDOM: 33,
          ERANGE: 34,
          ENOMSG: 42,
          EIDRM: 43,
          ECHRNG: 44,
          EL2NSYNC: 45,
          EL3HLT: 46,
          EL3RST: 47,
          ELNRNG: 48,
          EUNATCH: 49,
          ENOCSI: 50,
          EL2HLT: 51,
          EDEADLK: 35,
          ENOLCK: 37,
          EBADE: 52,
          EBADR: 53,
          EXFULL: 54,
          ENOANO: 55,
          EBADRQC: 56,
          EBADSLT: 57,
          EDEADLOCK: 35,
          EBFONT: 59,
          ENOSTR: 60,
          ENODATA: 61,
          ETIME: 62,
          ENOSR: 63,
          ENONET: 64,
          ENOPKG: 65,
          EREMOTE: 66,
          ENOLINK: 67,
          EADV: 68,
          ESRMNT: 69,
          ECOMM: 70,
          EPROTO: 71,
          EMULTIHOP: 72,
          EDOTDOT: 73,
          EBADMSG: 74,
          ENOTUNIQ: 76,
          EBADFD: 77,
          EREMCHG: 78,
          ELIBACC: 79,
          ELIBBAD: 80,
          ELIBSCN: 81,
          ELIBMAX: 82,
          ELIBEXEC: 83,
          ENOSYS: 38,
          ENOTEMPTY: 39,
          ENAMETOOLONG: 36,
          ELOOP: 40,
          EOPNOTSUPP: 95,
          EPFNOSUPPORT: 96,
          ECONNRESET: 104,
          ENOBUFS: 105,
          EAFNOSUPPORT: 97,
          EPROTOTYPE: 91,
          ENOTSOCK: 88,
          ENOPROTOOPT: 92,
          ESHUTDOWN: 108,
          ECONNREFUSED: 111,
          EADDRINUSE: 98,
          ECONNABORTED: 103,
          ENETUNREACH: 101,
          ENETDOWN: 100,
          ETIMEDOUT: 110,
          EHOSTDOWN: 112,
          EHOSTUNREACH: 113,
          EINPROGRESS: 115,
          EALREADY: 114,
          EDESTADDRREQ: 89,
          EMSGSIZE: 90,
          EPROTONOSUPPORT: 93,
          ESOCKTNOSUPPORT: 94,
          EADDRNOTAVAIL: 99,
          ENETRESET: 102,
          EISCONN: 106,
          ENOTCONN: 107,
          ETOOMANYREFS: 109,
          EUSERS: 87,
          EDQUOT: 122,
          ESTALE: 116,
          ENOTSUP: 95,
          ENOMEDIUM: 123,
          EILSEQ: 84,
          EOVERFLOW: 75,
          ECANCELED: 125,
          ENOTRECOVERABLE: 131,
          EOWNERDEAD: 130,
          ESTRPIPE: 86
      };

      function _sysconf(name) {
          switch (name) {
              case 30:
                  return PAGE_SIZE;
              case 85:
                  return totalMemory / PAGE_SIZE;
              case 132:
              case 133:
              case 12:
              case 137:
              case 138:
              case 15:
              case 235:
              case 16:
              case 17:
              case 18:
              case 19:
              case 20:
              case 149:
              case 13:
              case 10:
              case 236:
              case 153:
              case 9:
              case 21:
              case 22:
              case 159:
              case 154:
              case 14:
              case 77:
              case 78:
              case 139:
              case 80:
              case 81:
              case 82:
              case 68:
              case 67:
              case 164:
              case 11:
              case 29:
              case 47:
              case 48:
              case 95:
              case 52:
              case 51:
              case 46:
                  return 200809;
              case 79:
                  return 0;
              case 27:
              case 246:
              case 127:
              case 128:
              case 23:
              case 24:
              case 160:
              case 161:
              case 181:
              case 182:
              case 242:
              case 183:
              case 184:
              case 243:
              case 244:
              case 245:
              case 165:
              case 178:
              case 179:
              case 49:
              case 50:
              case 168:
              case 169:
              case 175:
              case 170:
              case 171:
              case 172:
              case 97:
              case 76:
              case 32:
              case 173:
              case 35:
                  return -1;
              case 176:
              case 177:
              case 7:
              case 155:
              case 8:
              case 157:
              case 125:
              case 126:
              case 92:
              case 93:
              case 129:
              case 130:
              case 131:
              case 94:
              case 91:
                  return 1;
              case 74:
              case 60:
              case 69:
              case 70:
              case 4:
                  return 1024;
              case 31:
              case 42:
              case 72:
                  return 32;
              case 87:
              case 26:
              case 33:
                  return 2147483647;
              case 34:
              case 1:
                  return 47839;
              case 38:
              case 36:
                  return 99;
              case 43:
              case 37:
                  return 2048;
              case 0:
                  return 2097152;
              case 3:
                  return 65536;
              case 28:
                  return 32768;
              case 44:
                  return 32767;
              case 75:
                  return 16384;
              case 39:
                  return 1e3;
              case 89:
                  return 700;
              case 71:
                  return 256;
              case 40:
                  return 255;
              case 2:
                  return 100;
              case 180:
                  return 64;
              case 25:
                  return 20;
              case 5:
                  return 16;
              case 6:
                  return 6;
              case 73:
                  return 4;
              case 84: {
                  if (typeof navigator === "object") return navigator["hardwareConcurrency"] || 1;
                  return 1
              }
          }
          ___setErrNo(ERRNO_CODES.EINVAL);
          return -1
      }

      function _emscripten_memcpy_big(dest, src, num) {
          HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
          return dest
      }

      Module["_memcpy"] = _memcpy;
      Module["_memmove"] = _memmove;
      Module["_memset"] = _memset;

      function _abort() {
          Module["abort"]();
      }

      var ERRNO_MESSAGES = {
          0: "Success",
          1: "Not super-user",
          2: "No such file or directory",
          3: "No such process",
          4: "Interrupted system call",
          5: "I/O error",
          6: "No such device or address",
          7: "Arg list too long",
          8: "Exec format error",
          9: "Bad file number",
          10: "No children",
          11: "No more processes",
          12: "Not enough core",
          13: "Permission denied",
          14: "Bad address",
          15: "Block device required",
          16: "Mount device busy",
          17: "File exists",
          18: "Cross-device link",
          19: "No such device",
          20: "Not a directory",
          21: "Is a directory",
          22: "Invalid argument",
          23: "Too many open files in system",
          24: "Too many open files",
          25: "Not a typewriter",
          26: "Text file busy",
          27: "File too large",
          28: "No space left on device",
          29: "Illegal seek",
          30: "Read only file system",
          31: "Too many links",
          32: "Broken pipe",
          33: "Math arg out of domain of func",
          34: "Math result not representable",
          35: "File locking deadlock error",
          36: "File or path name too long",
          37: "No record locks available",
          38: "Function not implemented",
          39: "Directory not empty",
          40: "Too many symbolic links",
          42: "No message of desired type",
          43: "Identifier removed",
          44: "Channel number out of range",
          45: "Level 2 not synchronized",
          46: "Level 3 halted",
          47: "Level 3 reset",
          48: "Link number out of range",
          49: "Protocol driver not attached",
          50: "No CSI structure available",
          51: "Level 2 halted",
          52: "Invalid exchange",
          53: "Invalid request descriptor",
          54: "Exchange full",
          55: "No anode",
          56: "Invalid request code",
          57: "Invalid slot",
          59: "Bad font file fmt",
          60: "Device not a stream",
          61: "No data (for no delay io)",
          62: "Timer expired",
          63: "Out of streams resources",
          64: "Machine is not on the network",
          65: "Package not installed",
          66: "The object is remote",
          67: "The link has been severed",
          68: "Advertise error",
          69: "Srmount error",
          70: "Communication error on send",
          71: "Protocol error",
          72: "Multihop attempted",
          73: "Cross mount point (not really error)",
          74: "Trying to read unreadable message",
          75: "Value too large for defined data type",
          76: "Given log. name not unique",
          77: "f.d. invalid for this operation",
          78: "Remote address changed",
          79: "Can   access a needed shared lib",
          80: "Accessing a corrupted shared lib",
          81: ".lib section in a.out corrupted",
          82: "Attempting to link in too many libs",
          83: "Attempting to exec a shared library",
          84: "Illegal byte sequence",
          86: "Streams pipe error",
          87: "Too many users",
          88: "Socket operation on non-socket",
          89: "Destination address required",
          90: "Message too long",
          91: "Protocol wrong type for socket",
          92: "Protocol not available",
          93: "Unknown protocol",
          94: "Socket type not supported",
          95: "Not supported",
          96: "Protocol family not supported",
          97: "Address family not supported by protocol family",
          98: "Address already in use",
          99: "Address not available",
          100: "Network interface is not configured",
          101: "Network is unreachable",
          102: "Connection reset by network",
          103: "Connection aborted",
          104: "Connection reset by peer",
          105: "No buffer space available",
          106: "Socket is already connected",
          107: "Socket is not connected",
          108: "Can't send after socket shutdown",
          109: "Too many references",
          110: "Connection timed out",
          111: "Connection refused",
          112: "Host is down",
          113: "Host is unreachable",
          114: "Socket already connected",
          115: "Connection already in progress",
          116: "Stale file handle",
          122: "Quota exceeded",
          123: "No medium (in tape drive)",
          125: "Operation canceled",
          130: "Previous owner died",
          131: "State not recoverable"
      };
      var TTY = {
          ttys: [], init: (function () {
          }), shutdown: (function () {
          }), register: (function (dev, ops) {
              TTY.ttys[dev] = {input: [], output: [], ops: ops};
              FS.registerDevice(dev, TTY.stream_ops);
          }), stream_ops: {
              open: (function (stream) {
                  var tty = TTY.ttys[stream.node.rdev];
                  if (!tty) {
                      throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
                  }
                  stream.tty = tty;
                  stream.seekable = false;
              }), close: (function (stream) {
                  stream.tty.ops.flush(stream.tty);
              }), flush: (function (stream) {
                  stream.tty.ops.flush(stream.tty);
              }), read: (function (stream, buffer, offset, length, pos) {
                  if (!stream.tty || !stream.tty.ops.get_char) {
                      throw new FS.ErrnoError(ERRNO_CODES.ENXIO)
                  }
                  var bytesRead = 0;
                  for (var i = 0; i < length; i++) {
                      var result;
                      try {
                          result = stream.tty.ops.get_char(stream.tty);
                      } catch (e) {
                          throw new FS.ErrnoError(ERRNO_CODES.EIO)
                      }
                      if (result === undefined && bytesRead === 0) {
                          throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
                      }
                      if (result === null || result === undefined) break;
                      bytesRead++;
                      buffer[offset + i] = result;
                  }
                  if (bytesRead) {
                      stream.node.timestamp = Date.now();
                  }
                  return bytesRead
              }), write: (function (stream, buffer, offset, length, pos) {
                  if (!stream.tty || !stream.tty.ops.put_char) {
                      throw new FS.ErrnoError(ERRNO_CODES.ENXIO)
                  }
                  for (var i = 0; i < length; i++) {
                      try {
                          stream.tty.ops.put_char(stream.tty, buffer[offset + i]);
                      } catch (e) {
                          throw new FS.ErrnoError(ERRNO_CODES.EIO)
                      }
                  }
                  if (length) {
                      stream.node.timestamp = Date.now();
                  }
                  return i
              })
          }, default_tty_ops: {
              get_char: (function (tty) {
                  if (!tty.input.length) {
                      var result = null;
                      if (typeof window != "undefined" && typeof window.prompt == "function") {
                          result = window.prompt("Input: ");
                          if (result !== null) {
                              result += "\n";
                          }
                      } else if (typeof readline == "function") {
                          result = readline();
                          if (result !== null) {
                              result += "\n";
                          }
                      }
                      if (!result) {
                          return null
                      }
                      tty.input = intArrayFromString(result, true);
                  }
                  return tty.input.shift()
              }), put_char: (function (tty, val) {
                  if (val === null || val === 10) {
                      Module["print"](UTF8ArrayToString(tty.output, 0));
                      tty.output = [];
                  } else {
                      if (val != 0) tty.output.push(val);
                  }
              }), flush: (function (tty) {
                  if (tty.output && tty.output.length > 0) {
                      Module["print"](UTF8ArrayToString(tty.output, 0));
                      tty.output = [];
                  }
              })
          }, default_tty1_ops: {
              put_char: (function (tty, val) {
                  if (val === null || val === 10) {
                      Module["printErr"](UTF8ArrayToString(tty.output, 0));
                      tty.output = [];
                  } else {
                      if (val != 0) tty.output.push(val);
                  }
              }), flush: (function (tty) {
                  if (tty.output && tty.output.length > 0) {
                      Module["printErr"](UTF8ArrayToString(tty.output, 0));
                      tty.output = [];
                  }
              })
          }
      };
      var MEMFS = {
          ops_table: null, mount: (function (mount) {
              return MEMFS.createNode(null, "/", 16384 | 511, 0)
          }), createNode: (function (parent, name, mode, dev) {
              if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              if (!MEMFS.ops_table) {
                  MEMFS.ops_table = {
                      dir: {
                          node: {
                              getattr: MEMFS.node_ops.getattr,
                              setattr: MEMFS.node_ops.setattr,
                              lookup: MEMFS.node_ops.lookup,
                              mknod: MEMFS.node_ops.mknod,
                              rename: MEMFS.node_ops.rename,
                              unlink: MEMFS.node_ops.unlink,
                              rmdir: MEMFS.node_ops.rmdir,
                              readdir: MEMFS.node_ops.readdir,
                              symlink: MEMFS.node_ops.symlink
                          }, stream: {llseek: MEMFS.stream_ops.llseek}
                      },
                      file: {
                          node: {getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr},
                          stream: {
                              llseek: MEMFS.stream_ops.llseek,
                              read: MEMFS.stream_ops.read,
                              write: MEMFS.stream_ops.write,
                              allocate: MEMFS.stream_ops.allocate,
                              mmap: MEMFS.stream_ops.mmap,
                              msync: MEMFS.stream_ops.msync
                          }
                      },
                      link: {
                          node: {
                              getattr: MEMFS.node_ops.getattr,
                              setattr: MEMFS.node_ops.setattr,
                              readlink: MEMFS.node_ops.readlink
                          }, stream: {}
                      },
                      chrdev: {
                          node: {getattr: MEMFS.node_ops.getattr, setattr: MEMFS.node_ops.setattr},
                          stream: FS.chrdev_stream_ops
                      }
                  };
              }
              var node = FS.createNode(parent, name, mode, dev);
              if (FS.isDir(node.mode)) {
                  node.node_ops = MEMFS.ops_table.dir.node;
                  node.stream_ops = MEMFS.ops_table.dir.stream;
                  node.contents = {};
              } else if (FS.isFile(node.mode)) {
                  node.node_ops = MEMFS.ops_table.file.node;
                  node.stream_ops = MEMFS.ops_table.file.stream;
                  node.usedBytes = 0;
                  node.contents = null;
              } else if (FS.isLink(node.mode)) {
                  node.node_ops = MEMFS.ops_table.link.node;
                  node.stream_ops = MEMFS.ops_table.link.stream;
              } else if (FS.isChrdev(node.mode)) {
                  node.node_ops = MEMFS.ops_table.chrdev.node;
                  node.stream_ops = MEMFS.ops_table.chrdev.stream;
              }
              node.timestamp = Date.now();
              if (parent) {
                  parent.contents[name] = node;
              }
              return node
          }), getFileDataAsRegularArray: (function (node) {
              if (node.contents && node.contents.subarray) {
                  var arr = [];
                  for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);
                  return arr
              }
              return node.contents
          }), getFileDataAsTypedArray: (function (node) {
              if (!node.contents) return new Uint8Array;
              if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);
              return new Uint8Array(node.contents)
          }), expandFileStorage: (function (node, newCapacity) {
              if (node.contents && node.contents.subarray && newCapacity > node.contents.length) {
                  node.contents = MEMFS.getFileDataAsRegularArray(node);
                  node.usedBytes = node.contents.length;
              }
              if (!node.contents || node.contents.subarray) {
                  var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0;
                  if (prevCapacity >= newCapacity) return;
                  var CAPACITY_DOUBLING_MAX = 1024 * 1024;
                  newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) | 0);
                  if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);
                  var oldContents = node.contents;
                  node.contents = new Uint8Array(newCapacity);
                  if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
                  return
              }
              if (!node.contents && newCapacity > 0) node.contents = [];
              while (node.contents.length < newCapacity) node.contents.push(0);
          }), resizeFileStorage: (function (node, newSize) {
              if (node.usedBytes == newSize) return;
              if (newSize == 0) {
                  node.contents = null;
                  node.usedBytes = 0;
                  return
              }
              if (!node.contents || node.contents.subarray) {
                  var oldContents = node.contents;
                  node.contents = new Uint8Array(new ArrayBuffer(newSize));
                  if (oldContents) {
                      node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));
                  }
                  node.usedBytes = newSize;
                  return
              }
              if (!node.contents) node.contents = [];
              if (node.contents.length > newSize) node.contents.length = newSize; else while (node.contents.length < newSize) node.contents.push(0);
              node.usedBytes = newSize;
          }), node_ops: {
              getattr: (function (node) {
                  var attr = {};
                  attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
                  attr.ino = node.id;
                  attr.mode = node.mode;
                  attr.nlink = 1;
                  attr.uid = 0;
                  attr.gid = 0;
                  attr.rdev = node.rdev;
                  if (FS.isDir(node.mode)) {
                      attr.size = 4096;
                  } else if (FS.isFile(node.mode)) {
                      attr.size = node.usedBytes;
                  } else if (FS.isLink(node.mode)) {
                      attr.size = node.link.length;
                  } else {
                      attr.size = 0;
                  }
                  attr.atime = new Date(node.timestamp);
                  attr.mtime = new Date(node.timestamp);
                  attr.ctime = new Date(node.timestamp);
                  attr.blksize = 4096;
                  attr.blocks = Math.ceil(attr.size / attr.blksize);
                  return attr
              }), setattr: (function (node, attr) {
                  if (attr.mode !== undefined) {
                      node.mode = attr.mode;
                  }
                  if (attr.timestamp !== undefined) {
                      node.timestamp = attr.timestamp;
                  }
                  if (attr.size !== undefined) {
                      MEMFS.resizeFileStorage(node, attr.size);
                  }
              }), lookup: (function (parent, name) {
                  throw FS.genericErrors[ERRNO_CODES.ENOENT]
              }), mknod: (function (parent, name, mode, dev) {
                  return MEMFS.createNode(parent, name, mode, dev)
              }), rename: (function (old_node, new_dir, new_name) {
                  if (FS.isDir(old_node.mode)) {
                      var new_node;
                      try {
                          new_node = FS.lookupNode(new_dir, new_name);
                      } catch (e) {
                      }
                      if (new_node) {
                          for (var i in new_node.contents) {
                              throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
                          }
                      }
                  }
                  delete old_node.parent.contents[old_node.name];
                  old_node.name = new_name;
                  new_dir.contents[new_name] = old_node;
                  old_node.parent = new_dir;
              }), unlink: (function (parent, name) {
                  delete parent.contents[name];
              }), rmdir: (function (parent, name) {
                  var node = FS.lookupNode(parent, name);
                  for (var i in node.contents) {
                      throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
                  }
                  delete parent.contents[name];
              }), readdir: (function (node) {
                  var entries = [".", ".."];
                  for (var key in node.contents) {
                      if (!node.contents.hasOwnProperty(key)) {
                          continue
                      }
                      entries.push(key);
                  }
                  return entries
              }), symlink: (function (parent, newname, oldpath) {
                  var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
                  node.link = oldpath;
                  return node
              }), readlink: (function (node) {
                  if (!FS.isLink(node.mode)) {
                      throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
                  }
                  return node.link
              })
          }, stream_ops: {
              read: (function (stream, buffer, offset, length, position) {
                  var contents = stream.node.contents;
                  if (position >= stream.node.usedBytes) return 0;
                  var size = Math.min(stream.node.usedBytes - position, length);
                  assert(size >= 0);
                  if (size > 8 && contents.subarray) {
                      buffer.set(contents.subarray(position, position + size), offset);
                  } else {
                      for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];
                  }
                  return size
              }), write: (function (stream, buffer, offset, length, position, canOwn) {
                  if (!length) return 0;
                  var node = stream.node;
                  node.timestamp = Date.now();
                  if (buffer.subarray && (!node.contents || node.contents.subarray)) {
                      if (canOwn) {
                          node.contents = buffer.subarray(offset, offset + length);
                          node.usedBytes = length;
                          return length
                      } else if (node.usedBytes === 0 && position === 0) {
                          node.contents = new Uint8Array(buffer.subarray(offset, offset + length));
                          node.usedBytes = length;
                          return length
                      } else if (position + length <= node.usedBytes) {
                          node.contents.set(buffer.subarray(offset, offset + length), position);
                          return length
                      }
                  }
                  MEMFS.expandFileStorage(node, position + length);
                  if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); else {
                      for (var i = 0; i < length; i++) {
                          node.contents[position + i] = buffer[offset + i];
                      }
                  }
                  node.usedBytes = Math.max(node.usedBytes, position + length);
                  return length
              }), llseek: (function (stream, offset, whence) {
                  var position = offset;
                  if (whence === 1) {
                      position += stream.position;
                  } else if (whence === 2) {
                      if (FS.isFile(stream.node.mode)) {
                          position += stream.node.usedBytes;
                      }
                  }
                  if (position < 0) {
                      throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
                  }
                  return position
              }), allocate: (function (stream, offset, length) {
                  MEMFS.expandFileStorage(stream.node, offset + length);
                  stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);
              }), mmap: (function (stream, buffer, offset, length, position, prot, flags) {
                  if (!FS.isFile(stream.node.mode)) {
                      throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
                  }
                  var ptr;
                  var allocated;
                  var contents = stream.node.contents;
                  if (!(flags & 2) && (contents.buffer === buffer || contents.buffer === buffer.buffer)) {
                      allocated = false;
                      ptr = contents.byteOffset;
                  } else {
                      if (position > 0 || position + length < stream.node.usedBytes) {
                          if (contents.subarray) {
                              contents = contents.subarray(position, position + length);
                          } else {
                              contents = Array.prototype.slice.call(contents, position, position + length);
                          }
                      }
                      allocated = true;
                      ptr = _malloc(length);
                      if (!ptr) {
                          throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)
                      }
                      buffer.set(contents, ptr);
                  }
                  return {ptr: ptr, allocated: allocated}
              }), msync: (function (stream, buffer, offset, length, mmapFlags) {
                  if (!FS.isFile(stream.node.mode)) {
                      throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
                  }
                  if (mmapFlags & 2) {
                      return 0
                  }
                  MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);
                  return 0
              })
          }
      };
      var IDBFS = {
          dbs: {}, indexedDB: (function () {
              if (typeof indexedDB !== "undefined") return indexedDB;
              var ret = null;
              if (typeof window === "object") ret = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
              assert(ret, "IDBFS used, but indexedDB not supported");
              return ret
          }), DB_VERSION: 21, DB_STORE_NAME: "FILE_DATA", mount: (function (mount) {
              return MEMFS.mount.apply(null, arguments)
          }), syncfs: (function (mount, populate, callback) {
              IDBFS.getLocalSet(mount, (function (err, local) {
                  if (err) return callback(err);
                  IDBFS.getRemoteSet(mount, (function (err, remote) {
                      if (err) return callback(err);
                      var src = populate ? remote : local;
                      var dst = populate ? local : remote;
                      IDBFS.reconcile(src, dst, callback);
                  }));
              }));
          }), getDB: (function (name, callback) {
              var db = IDBFS.dbs[name];
              if (db) {
                  return callback(null, db)
              }
              var req;
              try {
                  req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
              } catch (e) {
                  return callback(e)
              }
              req.onupgradeneeded = (function (e) {
                  var db = e.target.result;
                  var transaction = e.target.transaction;
                  var fileStore;
                  if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
                      fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
                  } else {
                      fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
                  }
                  if (!fileStore.indexNames.contains("timestamp")) {
                      fileStore.createIndex("timestamp", "timestamp", {unique: false});
                  }
              });
              req.onsuccess = (function () {
                  db = req.result;
                  IDBFS.dbs[name] = db;
                  callback(null, db);
              });
              req.onerror = (function (e) {
                  callback(this.error);
                  e.preventDefault();
              });
          }), getLocalSet: (function (mount, callback) {
              var entries = {};

              function isRealDir(p) {
                  return p !== "." && p !== ".."
              }

              function toAbsolute(root) {
                  return (function (p) {
                      return PATH.join2(root, p)
                  })
              }

              var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
              while (check.length) {
                  var path = check.pop();
                  var stat;
                  try {
                      stat = FS.stat(path);
                  } catch (e) {
                      return callback(e)
                  }
                  if (FS.isDir(stat.mode)) {
                      check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
                  }
                  entries[path] = {timestamp: stat.mtime};
              }
              return callback(null, {type: "local", entries: entries})
          }), getRemoteSet: (function (mount, callback) {
              var entries = {};
              IDBFS.getDB(mount.mountpoint, (function (err, db) {
                  if (err) return callback(err);
                  var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readonly");
                  transaction.onerror = (function (e) {
                      callback(this.error);
                      e.preventDefault();
                  });
                  var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
                  var index = store.index("timestamp");
                  index.openKeyCursor().onsuccess = (function (event) {
                      var cursor = event.target.result;
                      if (!cursor) {
                          return callback(null, {type: "remote", db: db, entries: entries})
                      }
                      entries[cursor.primaryKey] = {timestamp: cursor.key};
                      cursor.continue();
                  });
              }));
          }), loadLocalEntry: (function (path, callback) {
              var stat, node;
              try {
                  var lookup = FS.lookupPath(path);
                  node = lookup.node;
                  stat = FS.stat(path);
              } catch (e) {
                  return callback(e)
              }
              if (FS.isDir(stat.mode)) {
                  return callback(null, {timestamp: stat.mtime, mode: stat.mode})
              } else if (FS.isFile(stat.mode)) {
                  node.contents = MEMFS.getFileDataAsTypedArray(node);
                  return callback(null, {timestamp: stat.mtime, mode: stat.mode, contents: node.contents})
              } else {
                  return callback(new Error("node type not supported"))
              }
          }), storeLocalEntry: (function (path, entry, callback) {
              try {
                  if (FS.isDir(entry.mode)) {
                      FS.mkdir(path, entry.mode);
                  } else if (FS.isFile(entry.mode)) {
                      FS.writeFile(path, entry.contents, {encoding: "binary", canOwn: true});
                  } else {
                      return callback(new Error("node type not supported"))
                  }
                  FS.chmod(path, entry.mode);
                  FS.utime(path, entry.timestamp, entry.timestamp);
              } catch (e) {
                  return callback(e)
              }
              callback(null);
          }), removeLocalEntry: (function (path, callback) {
              try {
                  var lookup = FS.lookupPath(path);
                  var stat = FS.stat(path);
                  if (FS.isDir(stat.mode)) {
                      FS.rmdir(path);
                  } else if (FS.isFile(stat.mode)) {
                      FS.unlink(path);
                  }
              } catch (e) {
                  return callback(e)
              }
              callback(null);
          }), loadRemoteEntry: (function (store, path, callback) {
              var req = store.get(path);
              req.onsuccess = (function (event) {
                  callback(null, event.target.result);
              });
              req.onerror = (function (e) {
                  callback(this.error);
                  e.preventDefault();
              });
          }), storeRemoteEntry: (function (store, path, entry, callback) {
              var req = store.put(entry, path);
              req.onsuccess = (function () {
                  callback(null);
              });
              req.onerror = (function (e) {
                  callback(this.error);
                  e.preventDefault();
              });
          }), removeRemoteEntry: (function (store, path, callback) {
              var req = store.delete(path);
              req.onsuccess = (function () {
                  callback(null);
              });
              req.onerror = (function (e) {
                  callback(this.error);
                  e.preventDefault();
              });
          }), reconcile: (function (src, dst, callback) {
              var total = 0;
              var create = [];
              Object.keys(src.entries).forEach((function (key) {
                  var e = src.entries[key];
                  var e2 = dst.entries[key];
                  if (!e2 || e.timestamp > e2.timestamp) {
                      create.push(key);
                      total++;
                  }
              }));
              var remove = [];
              Object.keys(dst.entries).forEach((function (key) {
                  dst.entries[key];
                  var e2 = src.entries[key];
                  if (!e2) {
                      remove.push(key);
                      total++;
                  }
              }));
              if (!total) {
                  return callback(null)
              }
              var completed = 0;
              var db = src.type === "remote" ? src.db : dst.db;
              var transaction = db.transaction([IDBFS.DB_STORE_NAME], "readwrite");
              var store = transaction.objectStore(IDBFS.DB_STORE_NAME);

              function done(err) {
                  if (err) {
                      if (!done.errored) {
                          done.errored = true;
                          return callback(err)
                      }
                      return
                  }
                  if (++completed >= total) {
                      return callback(null)
                  }
              }

              transaction.onerror = (function (e) {
                  done(this.error);
                  e.preventDefault();
              });
              create.sort().forEach((function (path) {
                  if (dst.type === "local") {
                      IDBFS.loadRemoteEntry(store, path, (function (err, entry) {
                          if (err) return done(err);
                          IDBFS.storeLocalEntry(path, entry, done);
                      }));
                  } else {
                      IDBFS.loadLocalEntry(path, (function (err, entry) {
                          if (err) return done(err);
                          IDBFS.storeRemoteEntry(store, path, entry, done);
                      }));
                  }
              }));
              remove.sort().reverse().forEach((function (path) {
                  if (dst.type === "local") {
                      IDBFS.removeLocalEntry(path, done);
                  } else {
                      IDBFS.removeRemoteEntry(store, path, done);
                  }
              }));
          })
      };
      
      var WORKERFS = {
          DIR_MODE: 16895, FILE_MODE: 33279, reader: null, mount: (function (mount) {
              assert(ENVIRONMENT_IS_WORKER);
              if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync;
              var root = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0);
              var createdParents = {};

              function ensureParent(path) {
                  var parts = path.split("/");
                  var parent = root;
                  for (var i = 0; i < parts.length - 1; i++) {
                      var curr = parts.slice(0, i + 1).join("/");
                      if (!createdParents[curr]) {
                          createdParents[curr] = WORKERFS.createNode(parent, curr, WORKERFS.DIR_MODE, 0);
                      }
                      parent = createdParents[curr];
                  }
                  return parent
              }

              function base(path) {
                  var parts = path.split("/");
                  return parts[parts.length - 1]
              }

              Array.prototype.forEach.call(mount.opts["files"] || [], (function (file) {
                  WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);
              }));
              (mount.opts["blobs"] || []).forEach((function (obj) {
                  WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]);
              }));
              (mount.opts["packages"] || []).forEach((function (pack) {
                  pack["metadata"].files.forEach((function (file) {
                      var name = file.filename.substr(1);
                      WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack["blob"].slice(file.start, file.end));
                  }));
              }));
              return root
          }), createNode: (function (parent, name, mode, dev, contents, mtime) {
              var node = FS.createNode(parent, name, mode);
              node.mode = mode;
              node.node_ops = WORKERFS.node_ops;
              node.stream_ops = WORKERFS.stream_ops;
              node.timestamp = (mtime || new Date).getTime();
              assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);
              if (mode === WORKERFS.FILE_MODE) {
                  node.size = contents.size;
                  node.contents = contents;
              } else {
                  node.size = 4096;
                  node.contents = {};
              }
              if (parent) {
                  parent.contents[name] = node;
              }
              return node
          }), node_ops: {
              getattr: (function (node) {
                  return {
                      dev: 1,
                      ino: undefined,
                      mode: node.mode,
                      nlink: 1,
                      uid: 0,
                      gid: 0,
                      rdev: undefined,
                      size: node.size,
                      atime: new Date(node.timestamp),
                      mtime: new Date(node.timestamp),
                      ctime: new Date(node.timestamp),
                      blksize: 4096,
                      blocks: Math.ceil(node.size / 4096)
                  }
              }), setattr: (function (node, attr) {
                  if (attr.mode !== undefined) {
                      node.mode = attr.mode;
                  }
                  if (attr.timestamp !== undefined) {
                      node.timestamp = attr.timestamp;
                  }
              }), lookup: (function (parent, name) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
              }), mknod: (function (parent, name, mode, dev) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }), rename: (function (oldNode, newDir, newName) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }), unlink: (function (parent, name) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }), rmdir: (function (parent, name) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }), readdir: (function (node) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }), symlink: (function (parent, newName, oldPath) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }), readlink: (function (node) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              })
          }, stream_ops: {
              read: (function (stream, buffer, offset, length, position) {
                  if (position >= stream.node.size) return 0;
                  var chunk = stream.node.contents.slice(position, position + length);
                  var ab = WORKERFS.reader.readAsArrayBuffer(chunk);
                  buffer.set(new Uint8Array(ab), offset);
                  return chunk.size
              }), write: (function (stream, buffer, offset, length, position) {
                  throw new FS.ErrnoError(ERRNO_CODES.EIO)
              }), llseek: (function (stream, offset, whence) {
                  var position = offset;
                  if (whence === 1) {
                      position += stream.position;
                  } else if (whence === 2) {
                      if (FS.isFile(stream.node.mode)) {
                          position += stream.node.size;
                      }
                  }
                  if (position < 0) {
                      throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
                  }
                  return position
              })
          }
      };
      allocate(1, "i32*", ALLOC_STATIC);
      allocate(1, "i32*", ALLOC_STATIC);
      allocate(1, "i32*", ALLOC_STATIC);
      var FS = {
          root: null,
          mounts: [],
          devices: [null],
          streams: [],
          nextInode: 1,
          nameTable: null,
          currentPath: "/",
          initialized: false,
          ignorePermissions: true,
          trackingDelegate: {},
          tracking: {openFlags: {READ: 1, WRITE: 2}},
          ErrnoError: null,
          genericErrors: {},
          filesystems: null,
          handleFSError: (function (e) {
              if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace();
              return ___setErrNo(e.errno)
          }),
          lookupPath: (function (path, opts) {
              path = PATH.resolve(FS.cwd(), path);
              opts = opts || {};
              if (!path) return {path: "", node: null};
              var defaults = {follow_mount: true, recurse_count: 0};
              for (var key in defaults) {
                  if (opts[key] === undefined) {
                      opts[key] = defaults[key];
                  }
              }
              if (opts.recurse_count > 8) {
                  throw new FS.ErrnoError(ERRNO_CODES.ELOOP)
              }
              var parts = PATH.normalizeArray(path.split("/").filter((function (p) {
                  return !!p
              })), false);
              var current = FS.root;
              var current_path = "/";
              for (var i = 0; i < parts.length; i++) {
                  var islast = i === parts.length - 1;
                  if (islast && opts.parent) {
                      break
                  }
                  current = FS.lookupNode(current, parts[i]);
                  current_path = PATH.join2(current_path, parts[i]);
                  if (FS.isMountpoint(current)) {
                      if (!islast || islast && opts.follow_mount) {
                          current = current.mounted.root;
                      }
                  }
                  if (!islast || opts.follow) {
                      var count = 0;
                      while (FS.isLink(current.mode)) {
                          var link = FS.readlink(current_path);
                          current_path = PATH.resolve(PATH.dirname(current_path), link);
                          var lookup = FS.lookupPath(current_path, {recurse_count: opts.recurse_count});
                          current = lookup.node;
                          if (count++ > 40) {
                              throw new FS.ErrnoError(ERRNO_CODES.ELOOP)
                          }
                      }
                  }
              }
              return {path: current_path, node: current}
          }),
          getPath: (function (node) {
              var path;
              while (true) {
                  if (FS.isRoot(node)) {
                      var mount = node.mount.mountpoint;
                      if (!path) return mount;
                      return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path
                  }
                  path = path ? node.name + "/" + path : node.name;
                  node = node.parent;
              }
          }),
          hashName: (function (parentid, name) {
              var hash = 0;
              for (var i = 0; i < name.length; i++) {
                  hash = (hash << 5) - hash + name.charCodeAt(i) | 0;
              }
              return (parentid + hash >>> 0) % FS.nameTable.length
          }),
          hashAddNode: (function (node) {
              var hash = FS.hashName(node.parent.id, node.name);
              node.name_next = FS.nameTable[hash];
              FS.nameTable[hash] = node;
          }),
          hashRemoveNode: (function (node) {
              var hash = FS.hashName(node.parent.id, node.name);
              if (FS.nameTable[hash] === node) {
                  FS.nameTable[hash] = node.name_next;
              } else {
                  var current = FS.nameTable[hash];
                  while (current) {
                      if (current.name_next === node) {
                          current.name_next = node.name_next;
                          break
                      }
                      current = current.name_next;
                  }
              }
          }),
          lookupNode: (function (parent, name) {
              var err = FS.mayLookup(parent);
              if (err) {
                  throw new FS.ErrnoError(err, parent)
              }
              var hash = FS.hashName(parent.id, name);
              for (var node = FS.nameTable[hash]; node; node = node.name_next) {
                  var nodeName = node.name;
                  if (node.parent.id === parent.id && nodeName === name) {
                      return node
                  }
              }
              return FS.lookup(parent, name)
          }),
          createNode: (function (parent, name, mode, rdev) {
              if (!FS.FSNode) {
                  FS.FSNode = (function (parent, name, mode, rdev) {
                      if (!parent) {
                          parent = this;
                      }
                      this.parent = parent;
                      this.mount = parent.mount;
                      this.mounted = null;
                      this.id = FS.nextInode++;
                      this.name = name;
                      this.mode = mode;
                      this.node_ops = {};
                      this.stream_ops = {};
                      this.rdev = rdev;
                  });
                  FS.FSNode.prototype = {};
                  var readMode = 292 | 73;
                  var writeMode = 146;
                  Object.defineProperties(FS.FSNode.prototype, {
                      read: {
                          get: (function () {
                              return (this.mode & readMode) === readMode
                          }), set: (function (val) {
                              val ? this.mode |= readMode : this.mode &= ~readMode;
                          })
                      }, write: {
                          get: (function () {
                              return (this.mode & writeMode) === writeMode
                          }), set: (function (val) {
                              val ? this.mode |= writeMode : this.mode &= ~writeMode;
                          })
                      }, isFolder: {
                          get: (function () {
                              return FS.isDir(this.mode)
                          })
                      }, isDevice: {
                          get: (function () {
                              return FS.isChrdev(this.mode)
                          })
                      }
                  });
              }
              var node = new FS.FSNode(parent, name, mode, rdev);
              FS.hashAddNode(node);
              return node
          }),
          destroyNode: (function (node) {
              FS.hashRemoveNode(node);
          }),
          isRoot: (function (node) {
              return node === node.parent
          }),
          isMountpoint: (function (node) {
              return !!node.mounted
          }),
          isFile: (function (mode) {
              return (mode & 61440) === 32768
          }),
          isDir: (function (mode) {
              return (mode & 61440) === 16384
          }),
          isLink: (function (mode) {
              return (mode & 61440) === 40960
          }),
          isChrdev: (function (mode) {
              return (mode & 61440) === 8192
          }),
          isBlkdev: (function (mode) {
              return (mode & 61440) === 24576
          }),
          isFIFO: (function (mode) {
              return (mode & 61440) === 4096
          }),
          isSocket: (function (mode) {
              return (mode & 49152) === 49152
          }),
          flagModes: {
              "r": 0,
              "rs": 1052672,
              "r+": 2,
              "w": 577,
              "wx": 705,
              "xw": 705,
              "w+": 578,
              "wx+": 706,
              "xw+": 706,
              "a": 1089,
              "ax": 1217,
              "xa": 1217,
              "a+": 1090,
              "ax+": 1218,
              "xa+": 1218
          },
          modeStringToFlags: (function (str) {
              var flags = FS.flagModes[str];
              if (typeof flags === "undefined") {
                  throw new Error("Unknown file open mode: " + str)
              }
              return flags
          }),
          flagsToPermissionString: (function (flag) {
              var perms = ["r", "w", "rw"][flag & 3];
              if (flag & 512) {
                  perms += "w";
              }
              return perms
          }),
          nodePermissions: (function (node, perms) {
              if (FS.ignorePermissions) {
                  return 0
              }
              if (perms.indexOf("r") !== -1 && !(node.mode & 292)) {
                  return ERRNO_CODES.EACCES
              } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) {
                  return ERRNO_CODES.EACCES
              } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) {
                  return ERRNO_CODES.EACCES
              }
              return 0
          }),
          mayLookup: (function (dir) {
              var err = FS.nodePermissions(dir, "x");
              if (err) return err;
              if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES;
              return 0
          }),
          mayCreate: (function (dir, name) {
              try {
                  var node = FS.lookupNode(dir, name);
                  return ERRNO_CODES.EEXIST
              } catch (e) {
              }
              return FS.nodePermissions(dir, "wx")
          }),
          mayDelete: (function (dir, name, isdir) {
              var node;
              try {
                  node = FS.lookupNode(dir, name);
              } catch (e) {
                  return e.errno
              }
              var err = FS.nodePermissions(dir, "wx");
              if (err) {
                  return err
              }
              if (isdir) {
                  if (!FS.isDir(node.mode)) {
                      return ERRNO_CODES.ENOTDIR
                  }
                  if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
                      return ERRNO_CODES.EBUSY
                  }
              } else {
                  if (FS.isDir(node.mode)) {
                      return ERRNO_CODES.EISDIR
                  }
              }
              return 0
          }),
          mayOpen: (function (node, flags) {
              if (!node) {
                  return ERRNO_CODES.ENOENT
              }
              if (FS.isLink(node.mode)) {
                  return ERRNO_CODES.ELOOP
              } else if (FS.isDir(node.mode)) {
                  if ((flags & 2097155) !== 0 || flags & 512) {
                      return ERRNO_CODES.EISDIR
                  }
              }
              return FS.nodePermissions(node, FS.flagsToPermissionString(flags))
          }),
          MAX_OPEN_FDS: 4096,
          nextfd: (function (fd_start, fd_end) {
              fd_start = fd_start || 0;
              fd_end = fd_end || FS.MAX_OPEN_FDS;
              for (var fd = fd_start; fd <= fd_end; fd++) {
                  if (!FS.streams[fd]) {
                      return fd
                  }
              }
              throw new FS.ErrnoError(ERRNO_CODES.EMFILE)
          }),
          getStream: (function (fd) {
              return FS.streams[fd]
          }),
          createStream: (function (stream, fd_start, fd_end) {
              if (!FS.FSStream) {
                  FS.FSStream = (function () {
                  });
                  FS.FSStream.prototype = {};
                  Object.defineProperties(FS.FSStream.prototype, {
                      object: {
                          get: (function () {
                              return this.node
                          }), set: (function (val) {
                              this.node = val;
                          })
                      }, isRead: {
                          get: (function () {
                              return (this.flags & 2097155) !== 1
                          })
                      }, isWrite: {
                          get: (function () {
                              return (this.flags & 2097155) !== 0
                          })
                      }, isAppend: {
                          get: (function () {
                              return this.flags & 1024
                          })
                      }
                  });
              }
              var newStream = new FS.FSStream;
              for (var p in stream) {
                  newStream[p] = stream[p];
              }
              stream = newStream;
              var fd = FS.nextfd(fd_start, fd_end);
              stream.fd = fd;
              FS.streams[fd] = stream;
              return stream
          }),
          closeStream: (function (fd) {
              FS.streams[fd] = null;
          }),
          chrdev_stream_ops: {
              open: (function (stream) {
                  var device = FS.getDevice(stream.node.rdev);
                  stream.stream_ops = device.stream_ops;
                  if (stream.stream_ops.open) {
                      stream.stream_ops.open(stream);
                  }
              }), llseek: (function () {
                  throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
              })
          },
          major: (function (dev) {
              return dev >> 8
          }),
          minor: (function (dev) {
              return dev & 255
          }),
          makedev: (function (ma, mi) {
              return ma << 8 | mi
          }),
          registerDevice: (function (dev, ops) {
              FS.devices[dev] = {stream_ops: ops};
          }),
          getDevice: (function (dev) {
              return FS.devices[dev]
          }),
          getMounts: (function (mount) {
              var mounts = [];
              var check = [mount];
              while (check.length) {
                  var m = check.pop();
                  mounts.push(m);
                  check.push.apply(check, m.mounts);
              }
              return mounts
          }),
          syncfs: (function (populate, callback) {
              if (typeof populate === "function") {
                  callback = populate;
                  populate = false;
              }
              var mounts = FS.getMounts(FS.root.mount);
              var completed = 0;

              function done(err) {
                  if (err) {
                      if (!done.errored) {
                          done.errored = true;
                          return callback(err)
                      }
                      return
                  }
                  if (++completed >= mounts.length) {
                      callback(null);
                  }
              }

              mounts.forEach((function (mount) {
                  if (!mount.type.syncfs) {
                      return done(null)
                  }
                  mount.type.syncfs(mount, populate, done);
              }));
          }),
          mount: (function (type, opts, mountpoint) {
              var root = mountpoint === "/";
              var pseudo = !mountpoint;
              var node;
              if (root && FS.root) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
              } else if (!root && !pseudo) {
                  var lookup = FS.lookupPath(mountpoint, {follow_mount: false});
                  mountpoint = lookup.path;
                  node = lookup.node;
                  if (FS.isMountpoint(node)) {
                      throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
                  }
                  if (!FS.isDir(node.mode)) {
                      throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
                  }
              }
              var mount = {type: type, opts: opts, mountpoint: mountpoint, mounts: []};
              var mountRoot = type.mount(mount);
              mountRoot.mount = mount;
              mount.root = mountRoot;
              if (root) {
                  FS.root = mountRoot;
              } else if (node) {
                  node.mounted = mount;
                  if (node.mount) {
                      node.mount.mounts.push(mount);
                  }
              }
              return mountRoot
          }),
          unmount: (function (mountpoint) {
              var lookup = FS.lookupPath(mountpoint, {follow_mount: false});
              if (!FS.isMountpoint(lookup.node)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              var node = lookup.node;
              var mount = node.mounted;
              var mounts = FS.getMounts(mount);
              Object.keys(FS.nameTable).forEach((function (hash) {
                  var current = FS.nameTable[hash];
                  while (current) {
                      var next = current.name_next;
                      if (mounts.indexOf(current.mount) !== -1) {
                          FS.destroyNode(current);
                      }
                      current = next;
                  }
              }));
              node.mounted = null;
              var idx = node.mount.mounts.indexOf(mount);
              assert(idx !== -1);
              node.mount.mounts.splice(idx, 1);
          }),
          lookup: (function (parent, name) {
              return parent.node_ops.lookup(parent, name)
          }),
          mknod: (function (path, mode, dev) {
              var lookup = FS.lookupPath(path, {parent: true});
              var parent = lookup.node;
              var name = PATH.basename(path);
              if (!name || name === "." || name === "..") {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              var err = FS.mayCreate(parent, name);
              if (err) {
                  throw new FS.ErrnoError(err)
              }
              if (!parent.node_ops.mknod) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              return parent.node_ops.mknod(parent, name, mode, dev)
          }),
          create: (function (path, mode) {
              mode = mode !== undefined ? mode : 438;
              mode &= 4095;
              mode |= 32768;
              return FS.mknod(path, mode, 0)
          }),
          mkdir: (function (path, mode) {
              mode = mode !== undefined ? mode : 511;
              mode &= 511 | 512;
              mode |= 16384;
              return FS.mknod(path, mode, 0)
          }),
          mkdev: (function (path, mode, dev) {
              if (typeof dev === "undefined") {
                  dev = mode;
                  mode = 438;
              }
              mode |= 8192;
              return FS.mknod(path, mode, dev)
          }),
          symlink: (function (oldpath, newpath) {
              if (!PATH.resolve(oldpath)) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
              }
              var lookup = FS.lookupPath(newpath, {parent: true});
              var parent = lookup.node;
              if (!parent) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
              }
              var newname = PATH.basename(newpath);
              var err = FS.mayCreate(parent, newname);
              if (err) {
                  throw new FS.ErrnoError(err)
              }
              if (!parent.node_ops.symlink) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              return parent.node_ops.symlink(parent, newname, oldpath)
          }),
          rename: (function (old_path, new_path) {
              var old_dirname = PATH.dirname(old_path);
              var new_dirname = PATH.dirname(new_path);
              var old_name = PATH.basename(old_path);
              var new_name = PATH.basename(new_path);
              var lookup, old_dir, new_dir;
              try {
                  lookup = FS.lookupPath(old_path, {parent: true});
                  old_dir = lookup.node;
                  lookup = FS.lookupPath(new_path, {parent: true});
                  new_dir = lookup.node;
              } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
              }
              if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
              if (old_dir.mount !== new_dir.mount) {
                  throw new FS.ErrnoError(ERRNO_CODES.EXDEV)
              }
              var old_node = FS.lookupNode(old_dir, old_name);
              var relative = PATH.relative(old_path, new_dirname);
              if (relative.charAt(0) !== ".") {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              relative = PATH.relative(new_path, old_dirname);
              if (relative.charAt(0) !== ".") {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
              }
              var new_node;
              try {
                  new_node = FS.lookupNode(new_dir, new_name);
              } catch (e) {
              }
              if (old_node === new_node) {
                  return
              }
              var isdir = FS.isDir(old_node.mode);
              var err = FS.mayDelete(old_dir, old_name, isdir);
              if (err) {
                  throw new FS.ErrnoError(err)
              }
              err = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
              if (err) {
                  throw new FS.ErrnoError(err)
              }
              if (!old_dir.node_ops.rename) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
              }
              if (new_dir !== old_dir) {
                  err = FS.nodePermissions(old_dir, "w");
                  if (err) {
                      throw new FS.ErrnoError(err)
                  }
              }
              try {
                  if (FS.trackingDelegate["willMovePath"]) {
                      FS.trackingDelegate["willMovePath"](old_path, new_path);
                  }
              } catch (e) {
                  console.log("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message);
              }
              FS.hashRemoveNode(old_node);
              try {
                  old_dir.node_ops.rename(old_node, new_dir, new_name);
              } catch (e) {
                  throw e
              } finally {
                  FS.hashAddNode(old_node);
              }
              try {
                  if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path);
              } catch (e) {
                  console.log("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message);
              }
          }),
          rmdir: (function (path) {
              var lookup = FS.lookupPath(path, {parent: true});
              var parent = lookup.node;
              var name = PATH.basename(path);
              var node = FS.lookupNode(parent, name);
              var err = FS.mayDelete(parent, name, true);
              if (err) {
                  throw new FS.ErrnoError(err)
              }
              if (!parent.node_ops.rmdir) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              if (FS.isMountpoint(node)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
              }
              try {
                  if (FS.trackingDelegate["willDeletePath"]) {
                      FS.trackingDelegate["willDeletePath"](path);
                  }
              } catch (e) {
                  console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message);
              }
              parent.node_ops.rmdir(parent, name);
              FS.destroyNode(node);
              try {
                  if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path);
              } catch (e) {
                  console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message);
              }
          }),
          readdir: (function (path) {
              var lookup = FS.lookupPath(path, {follow: true});
              var node = lookup.node;
              if (!node.node_ops.readdir) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
              }
              return node.node_ops.readdir(node)
          }),
          unlink: (function (path) {
              var lookup = FS.lookupPath(path, {parent: true});
              var parent = lookup.node;
              var name = PATH.basename(path);
              var node = FS.lookupNode(parent, name);
              var err = FS.mayDelete(parent, name, false);
              if (err) {
                  if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
                  throw new FS.ErrnoError(err)
              }
              if (!parent.node_ops.unlink) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              if (FS.isMountpoint(node)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
              }
              try {
                  if (FS.trackingDelegate["willDeletePath"]) {
                      FS.trackingDelegate["willDeletePath"](path);
                  }
              } catch (e) {
                  console.log("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message);
              }
              parent.node_ops.unlink(parent, name);
              FS.destroyNode(node);
              try {
                  if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path);
              } catch (e) {
                  console.log("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message);
              }
          }),
          readlink: (function (path) {
              var lookup = FS.lookupPath(path);
              var link = lookup.node;
              if (!link) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
              }
              if (!link.node_ops.readlink) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              return PATH.resolve(FS.getPath(link.parent), link.node_ops.readlink(link))
          }),
          stat: (function (path, dontFollow) {
              var lookup = FS.lookupPath(path, {follow: !dontFollow});
              var node = lookup.node;
              if (!node) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
              }
              if (!node.node_ops.getattr) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              return node.node_ops.getattr(node)
          }),
          lstat: (function (path) {
              return FS.stat(path, true)
          }),
          chmod: (function (path, mode, dontFollow) {
              var node;
              if (typeof path === "string") {
                  var lookup = FS.lookupPath(path, {follow: !dontFollow});
                  node = lookup.node;
              } else {
                  node = path;
              }
              if (!node.node_ops.setattr) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              node.node_ops.setattr(node, {mode: mode & 4095 | node.mode & ~4095, timestamp: Date.now()});
          }),
          lchmod: (function (path, mode) {
              FS.chmod(path, mode, true);
          }),
          fchmod: (function (fd, mode) {
              var stream = FS.getStream(fd);
              if (!stream) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBADF)
              }
              FS.chmod(stream.node, mode);
          }),
          chown: (function (path, uid, gid, dontFollow) {
              var node;
              if (typeof path === "string") {
                  var lookup = FS.lookupPath(path, {follow: !dontFollow});
                  node = lookup.node;
              } else {
                  node = path;
              }
              if (!node.node_ops.setattr) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              node.node_ops.setattr(node, {timestamp: Date.now()});
          }),
          lchown: (function (path, uid, gid) {
              FS.chown(path, uid, gid, true);
          }),
          fchown: (function (fd, uid, gid) {
              var stream = FS.getStream(fd);
              if (!stream) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBADF)
              }
              FS.chown(stream.node, uid, gid);
          }),
          truncate: (function (path, len) {
              if (len < 0) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              var node;
              if (typeof path === "string") {
                  var lookup = FS.lookupPath(path, {follow: true});
                  node = lookup.node;
              } else {
                  node = path;
              }
              if (!node.node_ops.setattr) {
                  throw new FS.ErrnoError(ERRNO_CODES.EPERM)
              }
              if (FS.isDir(node.mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EISDIR)
              }
              if (!FS.isFile(node.mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              var err = FS.nodePermissions(node, "w");
              if (err) {
                  throw new FS.ErrnoError(err)
              }
              node.node_ops.setattr(node, {size: len, timestamp: Date.now()});
          }),
          ftruncate: (function (fd, len) {
              var stream = FS.getStream(fd);
              if (!stream) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBADF)
              }
              if ((stream.flags & 2097155) === 0) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              FS.truncate(stream.node, len);
          }),
          utime: (function (path, atime, mtime) {
              var lookup = FS.lookupPath(path, {follow: true});
              var node = lookup.node;
              node.node_ops.setattr(node, {timestamp: Math.max(atime, mtime)});
          }),
          open: (function (path, flags, mode, fd_start, fd_end) {
              if (path === "") {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
              }
              flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;
              mode = typeof mode === "undefined" ? 438 : mode;
              if (flags & 64) {
                  mode = mode & 4095 | 32768;
              } else {
                  mode = 0;
              }
              var node;
              if (typeof path === "object") {
                  node = path;
              } else {
                  path = PATH.normalize(path);
                  try {
                      var lookup = FS.lookupPath(path, {follow: !(flags & 131072)});
                      node = lookup.node;
                  } catch (e) {
                  }
              }
              var created = false;
              if (flags & 64) {
                  if (node) {
                      if (flags & 128) {
                          throw new FS.ErrnoError(ERRNO_CODES.EEXIST)
                      }
                  } else {
                      node = FS.mknod(path, mode, 0);
                      created = true;
                  }
              }
              if (!node) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOENT)
              }
              if (FS.isChrdev(node.mode)) {
                  flags &= ~512;
              }
              if (flags & 65536 && !FS.isDir(node.mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
              }
              if (!created) {
                  var err = FS.mayOpen(node, flags);
                  if (err) {
                      throw new FS.ErrnoError(err)
                  }
              }
              if (flags & 512) {
                  FS.truncate(node, 0);
              }
              flags &= ~(128 | 512);
              var stream = FS.createStream({
                  node: node,
                  path: FS.getPath(node),
                  flags: flags,
                  seekable: true,
                  position: 0,
                  stream_ops: node.stream_ops,
                  ungotten: [],
                  error: false
              }, fd_start, fd_end);
              if (stream.stream_ops.open) {
                  stream.stream_ops.open(stream);
              }
              if (Module["logReadFiles"] && !(flags & 1)) {
                  if (!FS.readFiles) FS.readFiles = {};
                  if (!(path in FS.readFiles)) {
                      FS.readFiles[path] = 1;
                      Module["printErr"]("read file: " + path);
                  }
              }
              try {
                  if (FS.trackingDelegate["onOpenFile"]) {
                      var trackingFlags = 0;
                      if ((flags & 2097155) !== 1) {
                          trackingFlags |= FS.tracking.openFlags.READ;
                      }
                      if ((flags & 2097155) !== 0) {
                          trackingFlags |= FS.tracking.openFlags.WRITE;
                      }
                      FS.trackingDelegate["onOpenFile"](path, trackingFlags);
                  }
              } catch (e) {
                  console.log("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message);
              }
              return stream
          }),
          close: (function (stream) {
              if (stream.getdents) stream.getdents = null;
              try {
                  if (stream.stream_ops.close) {
                      stream.stream_ops.close(stream);
                  }
              } catch (e) {
                  throw e
              } finally {
                  FS.closeStream(stream.fd);
              }
          }),
          llseek: (function (stream, offset, whence) {
              if (!stream.seekable || !stream.stream_ops.llseek) {
                  throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
              }
              stream.position = stream.stream_ops.llseek(stream, offset, whence);
              stream.ungotten = [];
              return stream.position
          }),
          read: (function (stream, buffer, offset, length, position) {
              if (length < 0 || position < 0) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              if ((stream.flags & 2097155) === 1) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBADF)
              }
              if (FS.isDir(stream.node.mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EISDIR)
              }
              if (!stream.stream_ops.read) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              var seeking = true;
              if (typeof position === "undefined") {
                  position = stream.position;
                  seeking = false;
              } else if (!stream.seekable) {
                  throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
              }
              var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
              if (!seeking) stream.position += bytesRead;
              return bytesRead
          }),
          write: (function (stream, buffer, offset, length, position, canOwn) {
              if (length < 0 || position < 0) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              if ((stream.flags & 2097155) === 0) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBADF)
              }
              if (FS.isDir(stream.node.mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.EISDIR)
              }
              if (!stream.stream_ops.write) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              if (stream.flags & 1024) {
                  FS.llseek(stream, 0, 2);
              }
              var seeking = true;
              if (typeof position === "undefined") {
                  position = stream.position;
                  seeking = false;
              } else if (!stream.seekable) {
                  throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
              }
              var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
              if (!seeking) stream.position += bytesWritten;
              try {
                  if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path);
              } catch (e) {
                  console.log("FS.trackingDelegate['onWriteToFile']('" + path + "') threw an exception: " + e.message);
              }
              return bytesWritten
          }),
          allocate: (function (stream, offset, length) {
              if (offset < 0 || length <= 0) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
              }
              if ((stream.flags & 2097155) === 0) {
                  throw new FS.ErrnoError(ERRNO_CODES.EBADF)
              }
              if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
              }
              if (!stream.stream_ops.allocate) {
                  throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)
              }
              stream.stream_ops.allocate(stream, offset, length);
          }),
          mmap: (function (stream, buffer, offset, length, position, prot, flags) {
              if ((stream.flags & 2097155) === 1) {
                  throw new FS.ErrnoError(ERRNO_CODES.EACCES)
              }
              if (!stream.stream_ops.mmap) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENODEV)
              }
              return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags)
          }),
          msync: (function (stream, buffer, offset, length, mmapFlags) {
              if (!stream || !stream.stream_ops.msync) {
                  return 0
              }
              return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags)
          }),
          munmap: (function (stream) {
              return 0
          }),
          ioctl: (function (stream, cmd, arg) {
              if (!stream.stream_ops.ioctl) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)
              }
              return stream.stream_ops.ioctl(stream, cmd, arg)
          }),
          readFile: (function (path, opts) {
              opts = opts || {};
              opts.flags = opts.flags || "r";
              opts.encoding = opts.encoding || "binary";
              if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
                  throw new Error('Invalid encoding type "' + opts.encoding + '"')
              }
              var ret;
              var stream = FS.open(path, opts.flags);
              var stat = FS.stat(path);
              var length = stat.size;
              var buf = new Uint8Array(length);
              FS.read(stream, buf, 0, length, 0);
              if (opts.encoding === "utf8") {
                  ret = UTF8ArrayToString(buf, 0);
              } else if (opts.encoding === "binary") {
                  ret = buf;
              }
              FS.close(stream);
              return ret
          }),
          writeFile: (function (path, data, opts) {
              opts = opts || {};
              opts.flags = opts.flags || "w";
              opts.encoding = opts.encoding || "utf8";
              if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
                  throw new Error('Invalid encoding type "' + opts.encoding + '"')
              }
              var stream = FS.open(path, opts.flags, opts.mode);
              if (opts.encoding === "utf8") {
                  var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
                  var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
                  FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn);
              } else if (opts.encoding === "binary") {
                  FS.write(stream, data, 0, data.length, 0, opts.canOwn);
              }
              FS.close(stream);
          }),
          cwd: (function () {
              return FS.currentPath
          }),
          chdir: (function (path) {
              var lookup = FS.lookupPath(path, {follow: true});
              if (!FS.isDir(lookup.node.mode)) {
                  throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)
              }
              var err = FS.nodePermissions(lookup.node, "x");
              if (err) {
                  throw new FS.ErrnoError(err)
              }
              FS.currentPath = lookup.path;
          }),
          createDefaultDirectories: (function () {
              FS.mkdir("/tmp");
              FS.mkdir("/home");
              FS.mkdir("/home/web_user");
          }),
          createDefaultDevices: (function () {
              FS.mkdir("/dev");
              FS.registerDevice(FS.makedev(1, 3), {
                  read: (function () {
                      return 0
                  }), write: (function (stream, buffer, offset, length, pos) {
                      return length
                  })
              });
              FS.mkdev("/dev/null", FS.makedev(1, 3));
              TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
              TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
              FS.mkdev("/dev/tty", FS.makedev(5, 0));
              FS.mkdev("/dev/tty1", FS.makedev(6, 0));
              var random_device;
              if (typeof crypto !== "undefined") {
                  var randomBuffer = new Uint8Array(1);
                  random_device = (function () {
                      crypto.getRandomValues(randomBuffer);
                      return randomBuffer[0]
                  });
              } else {
                  random_device = (function () {
                      return Math.random() * 256 | 0
                  });
              }
              FS.createDevice("/dev", "random", random_device);
              FS.createDevice("/dev", "urandom", random_device);
              FS.mkdir("/dev/shm");
              FS.mkdir("/dev/shm/tmp");
          }),
          createSpecialDirectories: (function () {
              FS.mkdir("/proc");
              FS.mkdir("/proc/self");
              FS.mkdir("/proc/self/fd");
              FS.mount({
                  mount: (function () {
                      var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73);
                      node.node_ops = {
                          lookup: (function (parent, name) {
                              var fd = +name;
                              var stream = FS.getStream(fd);
                              if (!stream) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
                              var ret = {
                                  parent: null, mount: {mountpoint: "fake"}, node_ops: {
                                      readlink: (function () {
                                          return stream.path
                                      })
                                  }
                              };
                              ret.parent = ret;
                              return ret
                          })
                      };
                      return node
                  })
              }, {}, "/proc/self/fd");
          }),
          createStandardStreams: (function () {
              if (Module["stdin"]) {
                  FS.createDevice("/dev", "stdin", Module["stdin"]);
              } else {
                  FS.symlink("/dev/tty", "/dev/stdin");
              }
              if (Module["stdout"]) {
                  FS.createDevice("/dev", "stdout", null, Module["stdout"]);
              } else {
                  FS.symlink("/dev/tty", "/dev/stdout");
              }
              if (Module["stderr"]) {
                  FS.createDevice("/dev", "stderr", null, Module["stderr"]);
              } else {
                  FS.symlink("/dev/tty1", "/dev/stderr");
              }
              var stdin = FS.open("/dev/stdin", "r");
              assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")");
              var stdout = FS.open("/dev/stdout", "w");
              assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")");
              var stderr = FS.open("/dev/stderr", "w");
              assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")");
          }),
          ensureErrnoError: (function () {
              if (FS.ErrnoError) return;
              FS.ErrnoError = function ErrnoError(errno, node) {
                  this.node = node;
                  this.setErrno = (function (errno) {
                      this.errno = errno;
                      for (var key in ERRNO_CODES) {
                          if (ERRNO_CODES[key] === errno) {
                              this.code = key;
                              break
                          }
                      }
                  });
                  this.setErrno(errno);
                  this.message = ERRNO_MESSAGES[errno];
              };
              FS.ErrnoError.prototype = new Error;
              FS.ErrnoError.prototype.constructor = FS.ErrnoError;
              [ERRNO_CODES.ENOENT].forEach((function (code) {
                  FS.genericErrors[code] = new FS.ErrnoError(code);
                  FS.genericErrors[code].stack = "<generic error, no stack>";
              }));
          }),
          staticInit: (function () {
              FS.ensureErrnoError();
              FS.nameTable = new Array(4096);
              FS.mount(MEMFS, {}, "/");
              FS.createDefaultDirectories();
              FS.createDefaultDevices();
              FS.createSpecialDirectories();
              FS.filesystems = {"MEMFS": MEMFS, "IDBFS": IDBFS, "NODEFS": {}, "WORKERFS": WORKERFS};
          }),
          init: (function (input, output, error) {
              assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");
              FS.init.initialized = true;
              FS.ensureErrnoError();
              Module["stdin"] = input || Module["stdin"];
              Module["stdout"] = output || Module["stdout"];
              Module["stderr"] = error || Module["stderr"];
              FS.createStandardStreams();
          }),
          quit: (function () {
              FS.init.initialized = false;
              var fflush = Module["_fflush"];
              if (fflush) fflush(0);
              for (var i = 0; i < FS.streams.length; i++) {
                  var stream = FS.streams[i];
                  if (!stream) {
                      continue
                  }
                  FS.close(stream);
              }
          }),
          getMode: (function (canRead, canWrite) {
              var mode = 0;
              if (canRead) mode |= 292 | 73;
              if (canWrite) mode |= 146;
              return mode
          }),
          joinPath: (function (parts, forceRelative) {
              var path = PATH.join.apply(null, parts);
              if (forceRelative && path[0] == "/") path = path.substr(1);
              return path
          }),
          absolutePath: (function (relative, base) {
              return PATH.resolve(base, relative)
          }),
          standardizePath: (function (path) {
              return PATH.normalize(path)
          }),
          findObject: (function (path, dontResolveLastLink) {
              var ret = FS.analyzePath(path, dontResolveLastLink);
              if (ret.exists) {
                  return ret.object
              } else {
                  ___setErrNo(ret.error);
                  return null
              }
          }),
          analyzePath: (function (path, dontResolveLastLink) {
              try {
                  var lookup = FS.lookupPath(path, {follow: !dontResolveLastLink});
                  path = lookup.path;
              } catch (e) {
              }
              var ret = {
                  isRoot: false,
                  exists: false,
                  error: 0,
                  name: null,
                  path: null,
                  object: null,
                  parentExists: false,
                  parentPath: null,
                  parentObject: null
              };
              try {
                  var lookup = FS.lookupPath(path, {parent: true});
                  ret.parentExists = true;
                  ret.parentPath = lookup.path;
                  ret.parentObject = lookup.node;
                  ret.name = PATH.basename(path);
                  lookup = FS.lookupPath(path, {follow: !dontResolveLastLink});
                  ret.exists = true;
                  ret.path = lookup.path;
                  ret.object = lookup.node;
                  ret.name = lookup.node.name;
                  ret.isRoot = lookup.path === "/";
              } catch (e) {
                  ret.error = e.errno;
              }
              return ret
          }),
          createFolder: (function (parent, name, canRead, canWrite) {
              var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
              var mode = FS.getMode(canRead, canWrite);
              return FS.mkdir(path, mode)
          }),
          createPath: (function (parent, path, canRead, canWrite) {
              parent = typeof parent === "string" ? parent : FS.getPath(parent);
              var parts = path.split("/").reverse();
              while (parts.length) {
                  var part = parts.pop();
                  if (!part) continue;
                  var current = PATH.join2(parent, part);
                  try {
                      FS.mkdir(current);
                  } catch (e) {
                  }
                  parent = current;
              }
              return current
          }),
          createFile: (function (parent, name, properties, canRead, canWrite) {
              var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
              var mode = FS.getMode(canRead, canWrite);
              return FS.create(path, mode)
          }),
          createDataFile: (function (parent, name, data, canRead, canWrite, canOwn) {
              var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent;
              var mode = FS.getMode(canRead, canWrite);
              var node = FS.create(path, mode);
              if (data) {
                  if (typeof data === "string") {
                      var arr = new Array(data.length);
                      for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
                      data = arr;
                  }
                  FS.chmod(node, mode | 146);
                  var stream = FS.open(node, "w");
                  FS.write(stream, data, 0, data.length, 0, canOwn);
                  FS.close(stream);
                  FS.chmod(node, mode);
              }
              return node
          }),
          createDevice: (function (parent, name, input, output) {
              var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
              var mode = FS.getMode(!!input, !!output);
              if (!FS.createDevice.major) FS.createDevice.major = 64;
              var dev = FS.makedev(FS.createDevice.major++, 0);
              FS.registerDevice(dev, {
                  open: (function (stream) {
                      stream.seekable = false;
                  }), close: (function (stream) {
                      if (output && output.buffer && output.buffer.length) {
                          output(10);
                      }
                  }), read: (function (stream, buffer, offset, length, pos) {
                      var bytesRead = 0;
                      for (var i = 0; i < length; i++) {
                          var result;
                          try {
                              result = input();
                          } catch (e) {
                              throw new FS.ErrnoError(ERRNO_CODES.EIO)
                          }
                          if (result === undefined && bytesRead === 0) {
                              throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
                          }
                          if (result === null || result === undefined) break;
                          bytesRead++;
                          buffer[offset + i] = result;
                      }
                      if (bytesRead) {
                          stream.node.timestamp = Date.now();
                      }
                      return bytesRead
                  }), write: (function (stream, buffer, offset, length, pos) {
                      for (var i = 0; i < length; i++) {
                          try {
                              output(buffer[offset + i]);
                          } catch (e) {
                              throw new FS.ErrnoError(ERRNO_CODES.EIO)
                          }
                      }
                      if (length) {
                          stream.node.timestamp = Date.now();
                      }
                      return i
                  })
              });
              return FS.mkdev(path, mode, dev)
          }),
          createLink: (function (parent, name, target, canRead, canWrite) {
              var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);
              return FS.symlink(target, path)
          }),
          forceLoadFile: (function (obj) {
              if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
              var success = true;
              if (typeof XMLHttpRequest !== "undefined") {
                  throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")
              } else if (Module["read"]) {
                  try {
                      obj.contents = intArrayFromString(Module["read"](obj.url), true);
                      obj.usedBytes = obj.contents.length;
                  } catch (e) {
                      success = false;
                  }
              } else {
                  throw new Error("Cannot load without read() or XMLHttpRequest.")
              }
              if (!success) ___setErrNo(ERRNO_CODES.EIO);
              return success
          }),
          createLazyFile: (function (parent, name, url, canRead, canWrite) {
              function LazyUint8Array() {
                  this.lengthKnown = false;
                  this.chunks = [];
              }

              LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
                  if (idx > this.length - 1 || idx < 0) {
                      return undefined
                  }
                  var chunkOffset = idx % this.chunkSize;
                  var chunkNum = idx / this.chunkSize | 0;
                  return this.getter(chunkNum)[chunkOffset]
              };
              LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
                  this.getter = getter;
              };
              LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
                  var xhr = new XMLHttpRequest;
                  xhr.open("HEAD", url, false);
                  xhr.send(null);
                  if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
                  var datalength = Number(xhr.getResponseHeader("Content-length"));
                  var header;
                  var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
                  var chunkSize = 1024 * 1024;
                  if (!hasByteServing) chunkSize = datalength;
                  var doXHR = (function (from, to) {
                      if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
                      if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!");
                      var xhr = new XMLHttpRequest;
                      xhr.open("GET", url, false);
                      if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
                      if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer";
                      if (xhr.overrideMimeType) {
                          xhr.overrideMimeType("text/plain; charset=x-user-defined");
                      }
                      xhr.send(null);
                      if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
                      if (xhr.response !== undefined) {
                          return new Uint8Array(xhr.response || [])
                      } else {
                          return intArrayFromString(xhr.responseText || "", true)
                      }
                  });
                  var lazyArray = this;
                  lazyArray.setDataGetter((function (chunkNum) {
                      var start = chunkNum * chunkSize;
                      var end = (chunkNum + 1) * chunkSize - 1;
                      end = Math.min(end, datalength - 1);
                      if (typeof lazyArray.chunks[chunkNum] === "undefined") {
                          lazyArray.chunks[chunkNum] = doXHR(start, end);
                      }
                      if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!");
                      return lazyArray.chunks[chunkNum]
                  }));
                  this._length = datalength;
                  this._chunkSize = chunkSize;
                  this.lengthKnown = true;
              };
              if (typeof XMLHttpRequest !== "undefined") {
                  if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
                  var lazyArray = new LazyUint8Array;
                  Object.defineProperty(lazyArray, "length", {
                      get: (function () {
                          if (!this.lengthKnown) {
                              this.cacheLength();
                          }
                          return this._length
                      })
                  });
                  Object.defineProperty(lazyArray, "chunkSize", {
                      get: (function () {
                          if (!this.lengthKnown) {
                              this.cacheLength();
                          }
                          return this._chunkSize
                      })
                  });
                  var properties = {isDevice: false, contents: lazyArray};
              } else {
                  var properties = {isDevice: false, url: url};
              }
              var node = FS.createFile(parent, name, properties, canRead, canWrite);
              if (properties.contents) {
                  node.contents = properties.contents;
              } else if (properties.url) {
                  node.contents = null;
                  node.url = properties.url;
              }
              Object.defineProperty(node, "usedBytes", {
                  get: (function () {
                      return this.contents.length
                  })
              });
              var stream_ops = {};
              var keys = Object.keys(node.stream_ops);
              keys.forEach((function (key) {
                  var fn = node.stream_ops[key];
                  stream_ops[key] = function forceLoadLazyFile() {
                      if (!FS.forceLoadFile(node)) {
                          throw new FS.ErrnoError(ERRNO_CODES.EIO)
                      }
                      return fn.apply(null, arguments)
                  };
              }));
              stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
                  if (!FS.forceLoadFile(node)) {
                      throw new FS.ErrnoError(ERRNO_CODES.EIO)
                  }
                  var contents = stream.node.contents;
                  if (position >= contents.length) return 0;
                  var size = Math.min(contents.length - position, length);
                  assert(size >= 0);
                  if (contents.slice) {
                      for (var i = 0; i < size; i++) {
                          buffer[offset + i] = contents[position + i];
                      }
                  } else {
                      for (var i = 0; i < size; i++) {
                          buffer[offset + i] = contents.get(position + i);
                      }
                  }
                  return size
              };
              node.stream_ops = stream_ops;
              return node
          }),
          createPreloadedFile: (function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
              Browser.init();
              var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;

              function processData(byteArray) {
                  function finish(byteArray) {
                      if (preFinish) preFinish();
                      if (!dontCreateFile) {
                          FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
                      }
                      if (onload) onload();
                      removeRunDependency();
                  }

                  var handled = false;
                  Module["preloadPlugins"].forEach((function (plugin) {
                      if (handled) return;
                      if (plugin["canHandle"](fullname)) {
                          plugin["handle"](byteArray, fullname, finish, (function () {
                              if (onerror) onerror();
                              removeRunDependency();
                          }));
                          handled = true;
                      }
                  }));
                  if (!handled) finish(byteArray);
              }

              addRunDependency();
              if (typeof url == "string") {
                  Browser.asyncLoad(url, (function (byteArray) {
                      processData(byteArray);
                  }), onerror);
              } else {
                  processData(url);
              }
          }),
          indexedDB: (function () {
              return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB
          }),
          DB_NAME: (function () {
              return "EM_FS_" + window.location.pathname
          }),
          DB_VERSION: 20,
          DB_STORE_NAME: "FILE_DATA",
          saveFilesToDB: (function (paths, onload, onerror) {
              onload = onload || (function () {
              });
              onerror = onerror || (function () {
              });
              var indexedDB = FS.indexedDB();
              try {
                  var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
              } catch (e) {
                  return onerror(e)
              }
              openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
                  console.log("creating db");
                  var db = openRequest.result;
                  db.createObjectStore(FS.DB_STORE_NAME);
              };
              openRequest.onsuccess = function openRequest_onsuccess() {
                  var db = openRequest.result;
                  var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite");
                  var files = transaction.objectStore(FS.DB_STORE_NAME);
                  var ok = 0, fail = 0, total = paths.length;

                  function finish() {
                      if (fail == 0) onload(); else onerror();
                  }

                  paths.forEach((function (path) {
                      var putRequest = files.put(FS.analyzePath(path).object.contents, path);
                      putRequest.onsuccess = function putRequest_onsuccess() {
                          ok++;
                          if (ok + fail == total) finish();
                      };
                      putRequest.onerror = function putRequest_onerror() {
                          fail++;
                          if (ok + fail == total) finish();
                      };
                  }));
                  transaction.onerror = onerror;
              };
              openRequest.onerror = onerror;
          }),
          loadFilesFromDB: (function (paths, onload, onerror) {
              onload = onload || (function () {
              });
              onerror = onerror || (function () {
              });
              var indexedDB = FS.indexedDB();
              try {
                  var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
              } catch (e) {
                  return onerror(e)
              }
              openRequest.onupgradeneeded = onerror;
              openRequest.onsuccess = function openRequest_onsuccess() {
                  var db = openRequest.result;
                  try {
                      var transaction = db.transaction([FS.DB_STORE_NAME], "readonly");
                  } catch (e) {
                      onerror(e);
                      return
                  }
                  var files = transaction.objectStore(FS.DB_STORE_NAME);
                  var ok = 0, fail = 0, total = paths.length;

                  function finish() {
                      if (fail == 0) onload(); else onerror();
                  }

                  paths.forEach((function (path) {
                      var getRequest = files.get(path);
                      getRequest.onsuccess = function getRequest_onsuccess() {
                          if (FS.analyzePath(path).exists) {
                              FS.unlink(path);
                          }
                          FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
                          ok++;
                          if (ok + fail == total) finish();
                      };
                      getRequest.onerror = function getRequest_onerror() {
                          fail++;
                          if (ok + fail == total) finish();
                      };
                  }));
                  transaction.onerror = onerror;
              };
              openRequest.onerror = onerror;
          })
      };
      var PATH = {
          splitPath: (function (filename) {
              var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
              return splitPathRe.exec(filename).slice(1)
          }), normalizeArray: (function (parts, allowAboveRoot) {
              var up = 0;
              for (var i = parts.length - 1; i >= 0; i--) {
                  var last = parts[i];
                  if (last === ".") {
                      parts.splice(i, 1);
                  } else if (last === "..") {
                      parts.splice(i, 1);
                      up++;
                  } else if (up) {
                      parts.splice(i, 1);
                      up--;
                  }
              }
              if (allowAboveRoot) {
                  for (; up--; up) {
                      parts.unshift("..");
                  }
              }
              return parts
          }), normalize: (function (path) {
              var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/";
              path = PATH.normalizeArray(path.split("/").filter((function (p) {
                  return !!p
              })), !isAbsolute).join("/");
              if (!path && !isAbsolute) {
                  path = ".";
              }
              if (path && trailingSlash) {
                  path += "/";
              }
              return (isAbsolute ? "/" : "") + path
          }), dirname: (function (path) {
              var result = PATH.splitPath(path), root = result[0], dir = result[1];
              if (!root && !dir) {
                  return "."
              }
              if (dir) {
                  dir = dir.substr(0, dir.length - 1);
              }
              return root + dir
          }), basename: (function (path) {
              if (path === "/") return "/";
              var lastSlash = path.lastIndexOf("/");
              if (lastSlash === -1) return path;
              return path.substr(lastSlash + 1)
          }), extname: (function (path) {
              return PATH.splitPath(path)[3]
          }), join: (function () {
              var paths = Array.prototype.slice.call(arguments, 0);
              return PATH.normalize(paths.join("/"))
          }), join2: (function (l, r) {
              return PATH.normalize(l + "/" + r)
          }), resolve: (function () {
              var resolvedPath = "", resolvedAbsolute = false;
              for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
                  var path = i >= 0 ? arguments[i] : FS.cwd();
                  if (typeof path !== "string") {
                      throw new TypeError("Arguments to path.resolve must be strings")
                  } else if (!path) {
                      return ""
                  }
                  resolvedPath = path + "/" + resolvedPath;
                  resolvedAbsolute = path.charAt(0) === "/";
              }
              resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter((function (p) {
                  return !!p
              })), !resolvedAbsolute).join("/");
              return (resolvedAbsolute ? "/" : "") + resolvedPath || "."
          }), relative: (function (from, to) {
              from = PATH.resolve(from).substr(1);
              to = PATH.resolve(to).substr(1);

              function trim(arr) {
                  var start = 0;
                  for (; start < arr.length; start++) {
                      if (arr[start] !== "") break
                  }
                  var end = arr.length - 1;
                  for (; end >= 0; end--) {
                      if (arr[end] !== "") break
                  }
                  if (start > end) return [];
                  return arr.slice(start, end - start + 1)
              }

              var fromParts = trim(from.split("/"));
              var toParts = trim(to.split("/"));
              var length = Math.min(fromParts.length, toParts.length);
              var samePartsLength = length;
              for (var i = 0; i < length; i++) {
                  if (fromParts[i] !== toParts[i]) {
                      samePartsLength = i;
                      break
                  }
              }
              var outputParts = [];
              for (var i = samePartsLength; i < fromParts.length; i++) {
                  outputParts.push("..");
              }
              outputParts = outputParts.concat(toParts.slice(samePartsLength));
              return outputParts.join("/")
          })
      };

      function _emscripten_set_main_loop_timing(mode, value) {
          Browser.mainLoop.timingMode = mode;
          Browser.mainLoop.timingValue = value;
          if (!Browser.mainLoop.func) {
              return 1
          }
          if (mode == 0) {
              Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setTimeout() {
                  setTimeout(Browser.mainLoop.runner, value);
              };
              Browser.mainLoop.method = "timeout";
          } else if (mode == 1) {
              Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_rAF() {
                  Browser.requestAnimationFrame(Browser.mainLoop.runner);
              };
              Browser.mainLoop.method = "rAF";
          } else if (mode == 2) {
              if (!window["setImmediate"]) {
                  var setImmediates = [];
                  var emscriptenMainLoopMessageId = "__emcc";

                  function Browser_setImmediate_messageHandler(event) {
                      if (event.source === window && event.data === emscriptenMainLoopMessageId) {
                          event.stopPropagation();
                          setImmediates.shift()();
                      }
                  }

                  window.addEventListener("message", Browser_setImmediate_messageHandler, true);
                  window["setImmediate"] = function Browser_emulated_setImmediate(func) {
                      setImmediates.push(func);
                      window.postMessage(emscriptenMainLoopMessageId, "*");
                  };
              }
              Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler_setImmediate() {
                  window["setImmediate"](Browser.mainLoop.runner);
              };
              Browser.mainLoop.method = "immediate";
          }
          return 0
      }

      function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg, noSetTiming) {
          Module["noExitRuntime"] = true;
          assert(!Browser.mainLoop.func, "emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");
          Browser.mainLoop.func = func;
          Browser.mainLoop.arg = arg;
          var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop;
          Browser.mainLoop.runner = function Browser_mainLoop_runner() {
              if (ABORT) return;
              if (Browser.mainLoop.queue.length > 0) {
                  var start = Date.now();
                  var blocker = Browser.mainLoop.queue.shift();
                  blocker.func(blocker.arg);
                  if (Browser.mainLoop.remainingBlockers) {
                      var remaining = Browser.mainLoop.remainingBlockers;
                      var next = remaining % 1 == 0 ? remaining - 1 : Math.floor(remaining);
                      if (blocker.counted) {
                          Browser.mainLoop.remainingBlockers = next;
                      } else {
                          next = next + .5;
                          Browser.mainLoop.remainingBlockers = (8 * remaining + next) / 9;
                      }
                  }
                  console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + " ms");
                  Browser.mainLoop.updateStatus();
                  setTimeout(Browser.mainLoop.runner, 0);
                  return
              }
              if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
              Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0;
              if (Browser.mainLoop.timingMode == 1 && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) {
                  Browser.mainLoop.scheduler();
                  return
              }
              if (Browser.mainLoop.method === "timeout" && Module.ctx) {
                  Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");
                  Browser.mainLoop.method = "";
              }
              Browser.mainLoop.runIter((function () {
                  if (typeof arg !== "undefined") {
                      Runtime.dynCall("vi", func, [arg]);
                  } else {
                      Runtime.dynCall("v", func);
                  }
              }));
              if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return;
              if (typeof SDL === "object" && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData();
              Browser.mainLoop.scheduler();
          };
          if (!noSetTiming) {
              if (fps && fps > 0) _emscripten_set_main_loop_timing(0, 1e3 / fps); else _emscripten_set_main_loop_timing(1, 1);
              Browser.mainLoop.scheduler();
          }
          if (simulateInfiniteLoop) {
              throw "SimulateInfiniteLoop"
          }
      }

      var Browser = {
          mainLoop: {
              scheduler: null,
              method: "",
              currentlyRunningMainloop: 0,
              func: null,
              arg: 0,
              timingMode: 0,
              timingValue: 0,
              currentFrameNumber: 0,
              queue: [],
              pause: (function () {
                  Browser.mainLoop.scheduler = null;
                  Browser.mainLoop.currentlyRunningMainloop++;
              }),
              resume: (function () {
                  Browser.mainLoop.currentlyRunningMainloop++;
                  var timingMode = Browser.mainLoop.timingMode;
                  var timingValue = Browser.mainLoop.timingValue;
                  var func = Browser.mainLoop.func;
                  Browser.mainLoop.func = null;
                  _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true);
                  _emscripten_set_main_loop_timing(timingMode, timingValue);
                  Browser.mainLoop.scheduler();
              }),
              updateStatus: (function () {
                  if (Module["setStatus"]) {
                      var message = Module["statusMessage"] || "Please wait...";
                      var remaining = Browser.mainLoop.remainingBlockers;
                      var expected = Browser.mainLoop.expectedBlockers;
                      if (remaining) {
                          if (remaining < expected) {
                              Module["setStatus"](message + " (" + (expected - remaining) + "/" + expected + ")");
                          } else {
                              Module["setStatus"](message);
                          }
                      } else {
                          Module["setStatus"]("");
                      }
                  }
              }),
              runIter: (function (func) {
                  if (ABORT) return;
                  if (Module["preMainLoop"]) {
                      var preRet = Module["preMainLoop"]();
                      if (preRet === false) {
                          return
                      }
                  }
                  try {
                      func();
                  } catch (e) {
                      if (e instanceof ExitStatus) {
                          return
                      } else {
                          if (e && typeof e === "object" && e.stack) Module.printErr("exception thrown: " + [e, e.stack]);
                          throw e
                      }
                  }
                  if (Module["postMainLoop"]) Module["postMainLoop"]();
              })
          },
          isFullScreen: false,
          pointerLock: false,
          moduleContextCreatedCallbacks: [],
          workers: [],
          init: (function () {
              if (!Module["preloadPlugins"]) Module["preloadPlugins"] = [];
              if (Browser.initted) return;
              Browser.initted = true;
              try {
                  new Blob;
                  Browser.hasBlobConstructor = true;
              } catch (e) {
                  Browser.hasBlobConstructor = false;
                  console.log("warning: no blob constructor, cannot create blobs with mimetypes");
              }
              Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : !Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null;
              Browser.URLObject = typeof window != "undefined" ? window.URL ? window.URL : window.webkitURL : undefined;
              if (!Module.noImageDecoding && typeof Browser.URLObject === "undefined") {
                  console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
                  Module.noImageDecoding = true;
              }
              var imagePlugin = {};
              imagePlugin["canHandle"] = function imagePlugin_canHandle(name) {
                  return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name)
              };
              imagePlugin["handle"] = function imagePlugin_handle(byteArray, name, onload, onerror) {
                  var b = null;
                  if (Browser.hasBlobConstructor) {
                      try {
                          b = new Blob([byteArray], {type: Browser.getMimetype(name)});
                          if (b.size !== byteArray.length) {
                              b = new Blob([(new Uint8Array(byteArray)).buffer], {type: Browser.getMimetype(name)});
                          }
                      } catch (e) {
                          Runtime.warnOnce("Blob constructor present but fails: " + e + "; falling back to blob builder");
                      }
                  }
                  if (!b) {
                      var bb = new Browser.BlobBuilder;
                      bb.append((new Uint8Array(byteArray)).buffer);
                      b = bb.getBlob();
                  }
                  var url = Browser.URLObject.createObjectURL(b);
                  var img = new Image;
                  img.onload = function img_onload() {
                      assert(img.complete, "Image " + name + " could not be decoded");
                      var canvas = document.createElement("canvas");
                      canvas.width = img.width;
                      canvas.height = img.height;
                      var ctx = canvas.getContext("2d");
                      ctx.drawImage(img, 0, 0);
                      Module["preloadedImages"][name] = canvas;
                      Browser.URLObject.revokeObjectURL(url);
                      if (onload) onload(byteArray);
                  };
                  img.onerror = function img_onerror(event) {
                      console.log("Image " + url + " could not be decoded");
                      if (onerror) onerror();
                  };
                  img.src = url;
              };
              Module["preloadPlugins"].push(imagePlugin);
              var audioPlugin = {};
              audioPlugin["canHandle"] = function audioPlugin_canHandle(name) {
                  return !Module.noAudioDecoding && name.substr(-4) in {".ogg": 1, ".wav": 1, ".mp3": 1}
              };
              audioPlugin["handle"] = function audioPlugin_handle(byteArray, name, onload, onerror) {
                  var done = false;

                  function finish(audio) {
                      if (done) return;
                      done = true;
                      Module["preloadedAudios"][name] = audio;
                      if (onload) onload(byteArray);
                  }

                  function fail() {
                      if (done) return;
                      done = true;
                      Module["preloadedAudios"][name] = new Audio;
                      if (onerror) onerror();
                  }

                  if (Browser.hasBlobConstructor) {
                      try {
                          var b = new Blob([byteArray], {type: Browser.getMimetype(name)});
                      } catch (e) {
                          return fail()
                      }
                      var url = Browser.URLObject.createObjectURL(b);
                      var audio = new Audio;
                      audio.addEventListener("canplaythrough", (function () {
                          finish(audio);
                      }), false);
                      audio.onerror = function audio_onerror(event) {
                          if (done) return;
                          console.log("warning: browser could not fully decode audio " + name + ", trying slower base64 approach");

                          function encode64(data) {
                              var BASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
                              var PAD = "=";
                              var ret = "";
                              var leftchar = 0;
                              var leftbits = 0;
                              for (var i = 0; i < data.length; i++) {
                                  leftchar = leftchar << 8 | data[i];
                                  leftbits += 8;
                                  while (leftbits >= 6) {
                                      var curr = leftchar >> leftbits - 6 & 63;
                                      leftbits -= 6;
                                      ret += BASE[curr];
                                  }
                              }
                              if (leftbits == 2) {
                                  ret += BASE[(leftchar & 3) << 4];
                                  ret += PAD + PAD;
                              } else if (leftbits == 4) {
                                  ret += BASE[(leftchar & 15) << 2];
                                  ret += PAD;
                              }
                              return ret
                          }

                          audio.src = "data:audio/x-" + name.substr(-3) + ";base64," + encode64(byteArray);
                          finish(audio);
                      };
                      audio.src = url;
                      Browser.safeSetTimeout((function () {
                          finish(audio);
                      }), 1e4);
                  } else {
                      return fail()
                  }
              };
              Module["preloadPlugins"].push(audioPlugin);
              var canvas = Module["canvas"];

              function pointerLockChange() {
                  Browser.pointerLock = document["pointerLockElement"] === canvas || document["mozPointerLockElement"] === canvas || document["webkitPointerLockElement"] === canvas || document["msPointerLockElement"] === canvas;
              }

              if (canvas) {
                  canvas.requestPointerLock = canvas["requestPointerLock"] || canvas["mozRequestPointerLock"] || canvas["webkitRequestPointerLock"] || canvas["msRequestPointerLock"] || (function () {
                  });
                  canvas.exitPointerLock = document["exitPointerLock"] || document["mozExitPointerLock"] || document["webkitExitPointerLock"] || document["msExitPointerLock"] || (function () {
                  });
                  canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
                  document.addEventListener("pointerlockchange", pointerLockChange, false);
                  document.addEventListener("mozpointerlockchange", pointerLockChange, false);
                  document.addEventListener("webkitpointerlockchange", pointerLockChange, false);
                  document.addEventListener("mspointerlockchange", pointerLockChange, false);
                  if (Module["elementPointerLock"]) {
                      canvas.addEventListener("click", (function (ev) {
                          if (!Browser.pointerLock && canvas.requestPointerLock) {
                              canvas.requestPointerLock();
                              ev.preventDefault();
                          }
                      }), false);
                  }
              }
          }),
          createContext: (function (canvas, useWebGL, setInModule, webGLContextAttributes) {
              if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx;
              var ctx;
              var contextHandle;
              if (useWebGL) {
                  var contextAttributes = {antialias: false, alpha: false};
                  if (webGLContextAttributes) {
                      for (var attribute in webGLContextAttributes) {
                          contextAttributes[attribute] = webGLContextAttributes[attribute];
                      }
                  }
                  contextHandle = GL.createContext(canvas, contextAttributes);
                  if (contextHandle) {
                      ctx = GL.getContext(contextHandle).GLctx;
                  }
                  canvas.style.backgroundColor = "black";
              } else {
                  ctx = canvas.getContext("2d");
              }
              if (!ctx) return null;
              if (setInModule) {
                  if (!useWebGL) assert(typeof GLctx === "undefined", "cannot set in module if GLctx is used, but we are a non-GL context that would replace it");
                  Module.ctx = ctx;
                  if (useWebGL) GL.makeContextCurrent(contextHandle);
                  Module.useWebGL = useWebGL;
                  Browser.moduleContextCreatedCallbacks.forEach((function (callback) {
                      callback();
                  }));
                  Browser.init();
              }
              return ctx
          }),
          destroyContext: (function (canvas, useWebGL, setInModule) {
          }),
          fullScreenHandlersInstalled: false,
          lockPointer: undefined,
          resizeCanvas: undefined,
          requestFullScreen: (function (lockPointer, resizeCanvas, vrDevice) {
              Browser.lockPointer = lockPointer;
              Browser.resizeCanvas = resizeCanvas;
              Browser.vrDevice = vrDevice;
              if (typeof Browser.lockPointer === "undefined") Browser.lockPointer = true;
              if (typeof Browser.resizeCanvas === "undefined") Browser.resizeCanvas = false;
              if (typeof Browser.vrDevice === "undefined") Browser.vrDevice = null;
              var canvas = Module["canvas"];

              function fullScreenChange() {
                  Browser.isFullScreen = false;
                  var canvasContainer = canvas.parentNode;
                  if ((document["webkitFullScreenElement"] || document["webkitFullscreenElement"] || document["mozFullScreenElement"] || document["mozFullscreenElement"] || document["fullScreenElement"] || document["fullscreenElement"] || document["msFullScreenElement"] || document["msFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvasContainer) {
                      canvas.cancelFullScreen = document["cancelFullScreen"] || document["mozCancelFullScreen"] || document["webkitCancelFullScreen"] || document["msExitFullscreen"] || document["exitFullscreen"] || (function () {
                      });
                      canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
                      if (Browser.lockPointer) canvas.requestPointerLock();
                      Browser.isFullScreen = true;
                      if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
                  } else {
                      canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
                      canvasContainer.parentNode.removeChild(canvasContainer);
                      if (Browser.resizeCanvas) Browser.setWindowedCanvasSize();
                  }
                  if (Module["onFullScreen"]) Module["onFullScreen"](Browser.isFullScreen);
                  Browser.updateCanvasDimensions(canvas);
              }

              if (!Browser.fullScreenHandlersInstalled) {
                  Browser.fullScreenHandlersInstalled = true;
                  document.addEventListener("fullscreenchange", fullScreenChange, false);
                  document.addEventListener("mozfullscreenchange", fullScreenChange, false);
                  document.addEventListener("webkitfullscreenchange", fullScreenChange, false);
                  document.addEventListener("MSFullscreenChange", fullScreenChange, false);
              }
              var canvasContainer = document.createElement("div");
              canvas.parentNode.insertBefore(canvasContainer, canvas);
              canvasContainer.appendChild(canvas);
              canvasContainer.requestFullScreen = canvasContainer["requestFullScreen"] || canvasContainer["mozRequestFullScreen"] || canvasContainer["msRequestFullscreen"] || (canvasContainer["webkitRequestFullScreen"] ? (function () {
                  canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]);
              }) : null);
              if (vrDevice) {
                  canvasContainer.requestFullScreen({vrDisplay: vrDevice});
              } else {
                  canvasContainer.requestFullScreen();
              }
          }),
          nextRAF: 0,
          fakeRequestAnimationFrame: (function (func) {
              var now = Date.now();
              if (Browser.nextRAF === 0) {
                  Browser.nextRAF = now + 1e3 / 60;
              } else {
                  while (now + 2 >= Browser.nextRAF) {
                      Browser.nextRAF += 1e3 / 60;
                  }
              }
              var delay = Math.max(Browser.nextRAF - now, 0);
              setTimeout(func, delay);
          }),
          requestAnimationFrame: function requestAnimationFrame(func) {
              if (typeof window === "undefined") {
                  Browser.fakeRequestAnimationFrame(func);
              } else {
                  if (!window.requestAnimationFrame) {
                      window.requestAnimationFrame = window["requestAnimationFrame"] || window["mozRequestAnimationFrame"] || window["webkitRequestAnimationFrame"] || window["msRequestAnimationFrame"] || window["oRequestAnimationFrame"] || Browser.fakeRequestAnimationFrame;
                  }
                  window.requestAnimationFrame(func);
              }
          },
          safeCallback: (function (func) {
              return (function () {
                  if (!ABORT) return func.apply(null, arguments)
              })
          }),
          allowAsyncCallbacks: true,
          queuedAsyncCallbacks: [],
          pauseAsyncCallbacks: (function () {
              Browser.allowAsyncCallbacks = false;
          }),
          resumeAsyncCallbacks: (function () {
              Browser.allowAsyncCallbacks = true;
              if (Browser.queuedAsyncCallbacks.length > 0) {
                  var callbacks = Browser.queuedAsyncCallbacks;
                  Browser.queuedAsyncCallbacks = [];
                  callbacks.forEach((function (func) {
                      func();
                  }));
              }
          }),
          safeRequestAnimationFrame: (function (func) {
              return Browser.requestAnimationFrame((function () {
                  if (ABORT) return;
                  if (Browser.allowAsyncCallbacks) {
                      func();
                  } else {
                      Browser.queuedAsyncCallbacks.push(func);
                  }
              }))
          }),
          safeSetTimeout: (function (func, timeout) {
              Module["noExitRuntime"] = true;
              return setTimeout((function () {
                  if (ABORT) return;
                  if (Browser.allowAsyncCallbacks) {
                      func();
                  } else {
                      Browser.queuedAsyncCallbacks.push(func);
                  }
              }), timeout)
          }),
          safeSetInterval: (function (func, timeout) {
              Module["noExitRuntime"] = true;
              return setInterval((function () {
                  if (ABORT) return;
                  if (Browser.allowAsyncCallbacks) {
                      func();
                  }
              }), timeout)
          }),
          getMimetype: (function (name) {
              return {
                  "jpg": "image/jpeg",
                  "jpeg": "image/jpeg",
                  "png": "image/png",
                  "bmp": "image/bmp",
                  "ogg": "audio/ogg",
                  "wav": "audio/wav",
                  "mp3": "audio/mpeg"
              }[name.substr(name.lastIndexOf(".") + 1)]
          }),
          getUserMedia: (function (func) {
              if (!window.getUserMedia) {
                  window.getUserMedia = navigator["getUserMedia"] || navigator["mozGetUserMedia"];
              }
              window.getUserMedia(func);
          }),
          getMovementX: (function (event) {
              return event["movementX"] || event["mozMovementX"] || event["webkitMovementX"] || 0
          }),
          getMovementY: (function (event) {
              return event["movementY"] || event["mozMovementY"] || event["webkitMovementY"] || 0
          }),
          getMouseWheelDelta: (function (event) {
              var delta = 0;
              switch (event.type) {
                  case"DOMMouseScroll":
                      delta = event.detail;
                      break;
                  case"mousewheel":
                      delta = event.wheelDelta;
                      break;
                  case"wheel":
                      delta = event["deltaY"];
                      break;
                  default:
                      throw "unrecognized mouse wheel event: " + event.type
              }
              return delta
          }),
          mouseX: 0,
          mouseY: 0,
          mouseMovementX: 0,
          mouseMovementY: 0,
          touches: {},
          lastTouches: {},
          calculateMouseEvent: (function (event) {
              if (Browser.pointerLock) {
                  if (event.type != "mousemove" && "mozMovementX" in event) {
                      Browser.mouseMovementX = Browser.mouseMovementY = 0;
                  } else {
                      Browser.mouseMovementX = Browser.getMovementX(event);
                      Browser.mouseMovementY = Browser.getMovementY(event);
                  }
                  if (typeof SDL != "undefined") {
                      Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
                      Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
                  } else {
                      Browser.mouseX += Browser.mouseMovementX;
                      Browser.mouseY += Browser.mouseMovementY;
                  }
              } else {
                  var rect = Module["canvas"].getBoundingClientRect();
                  var cw = Module["canvas"].width;
                  var ch = Module["canvas"].height;
                  var scrollX = typeof window.scrollX !== "undefined" ? window.scrollX : window.pageXOffset;
                  var scrollY = typeof window.scrollY !== "undefined" ? window.scrollY : window.pageYOffset;
                  if (event.type === "touchstart" || event.type === "touchend" || event.type === "touchmove") {
                      var touch = event.touch;
                      if (touch === undefined) {
                          return
                      }
                      var adjustedX = touch.pageX - (scrollX + rect.left);
                      var adjustedY = touch.pageY - (scrollY + rect.top);
                      adjustedX = adjustedX * (cw / rect.width);
                      adjustedY = adjustedY * (ch / rect.height);
                      var coords = {x: adjustedX, y: adjustedY};
                      if (event.type === "touchstart") {
                          Browser.lastTouches[touch.identifier] = coords;
                          Browser.touches[touch.identifier] = coords;
                      } else if (event.type === "touchend" || event.type === "touchmove") {
                          var last = Browser.touches[touch.identifier];
                          if (!last) last = coords;
                          Browser.lastTouches[touch.identifier] = last;
                          Browser.touches[touch.identifier] = coords;
                      }
                      return
                  }
                  var x = event.pageX - (scrollX + rect.left);
                  var y = event.pageY - (scrollY + rect.top);
                  x = x * (cw / rect.width);
                  y = y * (ch / rect.height);
                  Browser.mouseMovementX = x - Browser.mouseX;
                  Browser.mouseMovementY = y - Browser.mouseY;
                  Browser.mouseX = x;
                  Browser.mouseY = y;
              }
          }),
          xhrLoad: (function (url, onload, onerror) {
              var xhr = new XMLHttpRequest;
              xhr.open("GET", url, true);
              xhr.responseType = "arraybuffer";
              xhr.onload = function xhr_onload() {
                  if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
                      onload(xhr.response);
                  } else {
                      onerror();
                  }
              };
              xhr.onerror = onerror;
              xhr.send(null);
          }),
          asyncLoad: (function (url, onload, onerror, noRunDep) {
              Browser.xhrLoad(url, (function (arrayBuffer) {
                  assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
                  onload(new Uint8Array(arrayBuffer));
                  if (!noRunDep) removeRunDependency();
              }), (function (event) {
                  if (onerror) {
                      onerror();
                  } else {
                      throw 'Loading data file "' + url + '" failed.'
                  }
              }));
              if (!noRunDep) addRunDependency();
          }),
          resizeListeners: [],
          updateResizeListeners: (function () {
              var canvas = Module["canvas"];
              Browser.resizeListeners.forEach((function (listener) {
                  listener(canvas.width, canvas.height);
              }));
          }),
          setCanvasSize: (function (width, height, noUpdates) {
              var canvas = Module["canvas"];
              Browser.updateCanvasDimensions(canvas, width, height);
              if (!noUpdates) Browser.updateResizeListeners();
          }),
          windowedWidth: 0,
          windowedHeight: 0,
          setFullScreenCanvasSize: (function () {
              if (typeof SDL != "undefined") {
                  var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
                  flags = flags | 8388608;
                  HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags;
              }
              Browser.updateResizeListeners();
          }),
          setWindowedCanvasSize: (function () {
              if (typeof SDL != "undefined") {
                  var flags = HEAPU32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2];
                  flags = flags & ~8388608;
                  HEAP32[SDL.screen + Runtime.QUANTUM_SIZE * 0 >> 2] = flags;
              }
              Browser.updateResizeListeners();
          }),
          updateCanvasDimensions: (function (canvas, wNative, hNative) {
              if (wNative && hNative) {
                  canvas.widthNative = wNative;
                  canvas.heightNative = hNative;
              } else {
                  wNative = canvas.widthNative;
                  hNative = canvas.heightNative;
              }
              var w = wNative;
              var h = hNative;
              if (Module["forcedAspectRatio"] && Module["forcedAspectRatio"] > 0) {
                  if (w / h < Module["forcedAspectRatio"]) {
                      w = Math.round(h * Module["forcedAspectRatio"]);
                  } else {
                      h = Math.round(w / Module["forcedAspectRatio"]);
                  }
              }
              if ((document["webkitFullScreenElement"] || document["webkitFullscreenElement"] || document["mozFullScreenElement"] || document["mozFullscreenElement"] || document["fullScreenElement"] || document["fullscreenElement"] || document["msFullScreenElement"] || document["msFullscreenElement"] || document["webkitCurrentFullScreenElement"]) === canvas.parentNode && typeof screen != "undefined") {
                  var factor = Math.min(screen.width / w, screen.height / h);
                  w = Math.round(w * factor);
                  h = Math.round(h * factor);
              }
              if (Browser.resizeCanvas) {
                  if (canvas.width != w) canvas.width = w;
                  if (canvas.height != h) canvas.height = h;
                  if (typeof canvas.style != "undefined") {
                      canvas.style.removeProperty("width");
                      canvas.style.removeProperty("height");
                  }
              } else {
                  if (canvas.width != wNative) canvas.width = wNative;
                  if (canvas.height != hNative) canvas.height = hNative;
                  if (typeof canvas.style != "undefined") {
                      if (w != wNative || h != hNative) {
                          canvas.style.setProperty("width", w + "px", "important");
                          canvas.style.setProperty("height", h + "px", "important");
                      } else {
                          canvas.style.removeProperty("width");
                          canvas.style.removeProperty("height");
                      }
                  }
              }
          }),
          wgetRequests: {},
          nextWgetRequestHandle: 0,
          getNextWgetRequestHandle: (function () {
              var handle = Browser.nextWgetRequestHandle;
              Browser.nextWgetRequestHandle++;
              return handle
          })
      };

      function _time(ptr) {
          var ret = Date.now() / 1e3 | 0;
          if (ptr) {
              HEAP32[ptr >> 2] = ret;
          }
          return ret
      }

      function _pthread_self() {
          return 0
      }

      Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas, vrDevice) {
          Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice);
      };
      Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) {
          Browser.requestAnimationFrame(func);
      };
      Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) {
          Browser.setCanvasSize(width, height, noUpdates);
      };
      Module["pauseMainLoop"] = function Module_pauseMainLoop() {
          Browser.mainLoop.pause();
      };
      Module["resumeMainLoop"] = function Module_resumeMainLoop() {
          Browser.mainLoop.resume();
      };
      Module["getUserMedia"] = function Module_getUserMedia() {
          Browser.getUserMedia();
      };
      Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) {
          return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes)
      };
      FS.staticInit();
      __ATINIT__.unshift((function () {
          if (!Module["noFSInit"] && !FS.init.initialized) FS.init();
      }));
      __ATMAIN__.push((function () {
          FS.ignorePermissions = false;
      }));
      __ATEXIT__.push((function () {
          FS.quit();
      }));
      Module["FS_createFolder"] = FS.createFolder;
      Module["FS_createPath"] = FS.createPath;
      Module["FS_createDataFile"] = FS.createDataFile;
      Module["FS_createPreloadedFile"] = FS.createPreloadedFile;
      Module["FS_createLazyFile"] = FS.createLazyFile;
      Module["FS_createLink"] = FS.createLink;
      Module["FS_createDevice"] = FS.createDevice;
      Module["FS_unlink"] = FS.unlink;
      __ATINIT__.unshift((function () {
      }));
      __ATEXIT__.push((function () {
      }));
      STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
      staticSealed = true;
      STACK_MAX = STACK_BASE + TOTAL_STACK;
      DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
      assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
      Module.asmGlobalArg = {
          "Math": Math,
          "Int8Array": Int8Array,
          "Int16Array": Int16Array,
          "Int32Array": Int32Array,
          "Uint8Array": Uint8Array,
          "Uint16Array": Uint16Array,
          "Uint32Array": Uint32Array,
          "Float32Array": Float32Array,
          "Float64Array": Float64Array,
          "NaN": NaN,
          "Infinity": Infinity
      };
      Module.asmLibraryArg = {
          "abort": abort,
          "assert": assert,
          "_sysconf": _sysconf,
          "_pthread_self": _pthread_self,
          "_abort": _abort,
          "___setErrNo": ___setErrNo,
          "_sbrk": _sbrk,
          "_time": _time,
          "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing,
          "_emscripten_memcpy_big": _emscripten_memcpy_big,
          "_emscripten_set_main_loop": _emscripten_set_main_loop,
          "STACKTOP": STACKTOP,
          "STACK_MAX": STACK_MAX,
          "tempDoublePtr": tempDoublePtr,
          "ABORT": ABORT
      };// EMSCRIPTEN_START_ASM
      var asm = (function (global, env, buffer) {
          "use asm";
          var a = new global.Int8Array(buffer);
          var b = new global.Int16Array(buffer);
          var c = new global.Int32Array(buffer);
          var d = new global.Uint8Array(buffer);
          var e = new global.Uint16Array(buffer);
          var f = new global.Uint32Array(buffer);
          var g = new global.Float32Array(buffer);
          var h = new global.Float64Array(buffer);
          var i = env.STACKTOP | 0;
          var j = env.STACK_MAX | 0;
          var k = env.tempDoublePtr | 0;
          var l = env.ABORT | 0;
          var m = 0;
          var n = 0;
          var o = 0;
          var p = 0;
          var q = global.NaN, r = global.Infinity;
          var s = 0, t = 0, u = 0, v = 0, w = 0.0, x = 0, y = 0, z = 0, A = 0.0;
          var B = 0;
          var C = 0;
          var D = 0;
          var E = 0;
          var F = 0;
          var G = 0;
          var H = 0;
          var I = 0;
          var J = 0;
          var K = 0;
          var L = global.Math.floor;
          var M = global.Math.abs;
          var N = global.Math.sqrt;
          var O = global.Math.pow;
          var P = global.Math.cos;
          var Q = global.Math.sin;
          var R = global.Math.tan;
          var S = global.Math.acos;
          var T = global.Math.asin;
          var U = global.Math.atan;
          var V = global.Math.atan2;
          var W = global.Math.exp;
          var X = global.Math.log;
          var Y = global.Math.ceil;
          var Z = global.Math.imul;
          var _ = global.Math.min;
          var $ = global.Math.clz32;
          var aa = env.abort;
          var ba = env.assert;
          var ca = env._sysconf;
          var da = env._pthread_self;
          var ea = env._abort;
          var fa = env.___setErrNo;
          var ga = env._sbrk;
          var ha = env._time;
          var ia = env._emscripten_set_main_loop_timing;
          var ja = env._emscripten_memcpy_big;
          var ka = env._emscripten_set_main_loop;
          var la = 0.0;

  // EMSCRIPTEN_START_FUNCS
          function ma(a) {
              a = a | 0;
              var b = 0;
              b = i;
              i = i + a | 0;
              i = i + 15 & -16;
              return b | 0
          }

          function na() {
              return i | 0
          }

          function oa(a) {
              a = a | 0;
              i = a;
          }

          function pa(a, b) {
              a = a | 0;
              b = b | 0;
              i = a;
              j = b;
          }

          function qa(a, b) {
              a = a | 0;
              b = b | 0;
              if (!m) {
                  m = a;
                  n = b;
              }
          }

          function ra(b) {
              b = b | 0;
              a[k >> 0] = a[b >> 0];
              a[k + 1 >> 0] = a[b + 1 >> 0];
              a[k + 2 >> 0] = a[b + 2 >> 0];
              a[k + 3 >> 0] = a[b + 3 >> 0];
          }

          function sa(b) {
              b = b | 0;
              a[k >> 0] = a[b >> 0];
              a[k + 1 >> 0] = a[b + 1 >> 0];
              a[k + 2 >> 0] = a[b + 2 >> 0];
              a[k + 3 >> 0] = a[b + 3 >> 0];
              a[k + 4 >> 0] = a[b + 4 >> 0];
              a[k + 5 >> 0] = a[b + 5 >> 0];
              a[k + 6 >> 0] = a[b + 6 >> 0];
              a[k + 7 >> 0] = a[b + 7 >> 0];
          }

          function ta(a) {
              a = a | 0;
              B = a;
          }

          function ua() {
              return B | 0
          }

          function va() {
              var a = 0, b = 0;
              b = i;
              i = i + 16 | 0;
              a = b;
              c[a >> 2] = 0;
              Db(a, 31756) | 0;
              i = b;
              return c[a >> 2] | 0
          }

          function wa(a) {
              a = a | 0;
              var b = 0, d = 0;
              b = i;
              i = i + 16 | 0;
              d = b;
              c[d >> 2] = a;
              Eb(d);
              i = b;
              return
          }

          function xa(a, b, c, e) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              e = e | 0;
              Ea(a, (e | 0) == 0 ? (d[b >> 0] | 0) >>> 3 & 15 : 15, b + 1 | 0, c, 2) | 0;
              return
          }

          function ya(a) {
              a = a | 0;
              var b = 0;
              b = Je(8) | 0;
              Hb(b, b + 4 | 0, a) | 0;
              return b | 0
          }

          function za(a) {
              a = a | 0;
              Ib(a, a + 4 | 0);
              Ke(a);
              return
          }

          function Aa(b, e, f, g, h) {
              b = b | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0;
              h = i;
              i = i + 16 | 0;
              j = h;
              c[j >> 2] = e;
              f = (Jb(c[b >> 2] | 0, c[b + 4 >> 2] | 0, e, f, g, j, 3) | 0) << 16 >> 16;
              a[g >> 0] = d[g >> 0] | 0 | 4;
              i = h;
              return f | 0
          }

          function Ba(a) {
              a = a | 0;
              if (!a) a = -1; else {
                  b[a >> 1] = 4096;
                  a = 0;
              }
              return a | 0
          }

          function Ca(a, d, e, f, g, h) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0;
              m = c[h >> 2] | 0;
              q = g << 16 >> 16 > 0;
              if (q) {
                  i = 0;
                  j = 0;
                  do {
                      l = b[e + (i << 1) >> 1] | 0;
                      l = Z(l, l) | 0;
                      if ((l | 0) != 1073741824) {
                          k = (l << 1) + j | 0;
                          if ((l ^ j | 0) > 0 & (k ^ j | 0) < 0) {
                              c[h >> 2] = 1;
                              j = (j >>> 31) + 2147483647 | 0;
                          } else j = k;
                      } else {
                          c[h >> 2] = 1;
                          j = 2147483647;
                      }
                      i = i + 1 | 0;
                  } while ((i & 65535) << 16 >> 16 != g << 16 >> 16);
                  if ((j | 0) == 2147483647) {
                      c[h >> 2] = m;
                      l = 0;
                      k = 0;
                      do {
                          j = b[e + (l << 1) >> 1] >> 2;
                          j = Z(j, j) | 0;
                          if ((j | 0) != 1073741824) {
                              i = (j << 1) + k | 0;
                              if ((j ^ k | 0) > 0 & (i ^ k | 0) < 0) {
                                  c[h >> 2] = 1;
                                  k = (k >>> 31) + 2147483647 | 0;
                              } else k = i;
                          } else {
                              c[h >> 2] = 1;
                              k = 2147483647;
                          }
                          l = l + 1 | 0;
                      } while ((l & 65535) << 16 >> 16 != g << 16 >> 16)
                  } else p = 8;
              } else {
                  j = 0;
                  p = 8;
              }
              if ((p | 0) == 8) k = j >> 4;
              if (!k) {
                  b[a >> 1] = 0;
                  return
              }
              o = ((pe(k) | 0) & 65535) + 65535 | 0;
              j = o << 16 >> 16;
              if ((o & 65535) << 16 >> 16 > 0) {
                  i = k << j;
                  if ((i >> j | 0) == (k | 0)) k = i; else k = k >> 31 ^ 2147483647;
              } else {
                  j = 0 - j << 16;
                  if ((j | 0) < 2031616) k = k >> (j >> 16); else k = 0;
              }
              n = Ce(k, h) | 0;
              i = c[h >> 2] | 0;
              if (q) {
                  j = 0;
                  k = 0;
                  do {
                      m = b[d + (j << 1) >> 1] | 0;
                      m = Z(m, m) | 0;
                      if ((m | 0) != 1073741824) {
                          l = (m << 1) + k | 0;
                          if ((m ^ k | 0) > 0 & (l ^ k | 0) < 0) {
                              c[h >> 2] = 1;
                              k = (k >>> 31) + 2147483647 | 0;
                          } else k = l;
                      } else {
                          c[h >> 2] = 1;
                          k = 2147483647;
                      }
                      j = j + 1 | 0;
                  } while ((j & 65535) << 16 >> 16 != g << 16 >> 16);
                  if ((k | 0) == 2147483647) {
                      c[h >> 2] = i;
                      m = 0;
                      k = 0;
                      do {
                          l = b[d + (m << 1) >> 1] >> 2;
                          l = Z(l, l) | 0;
                          if ((l | 0) != 1073741824) {
                              j = (l << 1) + k | 0;
                              if ((l ^ k | 0) > 0 & (j ^ k | 0) < 0) {
                                  c[h >> 2] = 1;
                                  k = (k >>> 31) + 2147483647 | 0;
                              } else k = j;
                          } else {
                              c[h >> 2] = 1;
                              k = 2147483647;
                          }
                          m = m + 1 | 0;
                      } while ((m & 65535) << 16 >> 16 != g << 16 >> 16)
                  } else p = 29;
              } else {
                  k = 0;
                  p = 29;
              }
              if ((p | 0) == 29) k = k >> 4;
              if (!k) l = 0; else {
                  j = (pe(k) | 0) << 16 >> 16;
                  i = o - j | 0;
                  l = i & 65535;
                  k = (Td(n, Ce(k << j, h) | 0) | 0) << 16 >> 16;
                  j = k << 7;
                  i = i << 16 >> 16;
                  if (l << 16 >> 16 > 0) i = l << 16 >> 16 < 31 ? j >> i : 0; else {
                      p = 0 - i << 16 >> 16;
                      i = j << p;
                      i = (i >> p | 0) == (j | 0) ? i : k >> 24 ^ 2147483647;
                  }
                  l = (Z(((ce(i, h) | 0) << 9) + 32768 >> 16, 32767 - (f & 65535) << 16 >> 16) | 0) >>> 15 << 16 >> 16;
              }
              i = b[a >> 1] | 0;
              if (q) {
                  k = f << 16 >> 16;
                  j = 0;
                  while (1) {
                      f = ((Z(i << 16 >> 16, k) | 0) >>> 15 & 65535) + l | 0;
                      i = f & 65535;
                      b[e >> 1] = (Z(b[e >> 1] | 0, f << 16 >> 16) | 0) >>> 12;
                      j = j + 1 << 16 >> 16;
                      if (j << 16 >> 16 >= g << 16 >> 16) break; else e = e + 2 | 0;
                  }
              }
              b[a >> 1] = i;
              return
          }

          function Da(a, d, e, f) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;
              i = c[f >> 2] | 0;
              g = e << 16 >> 16 > 0;
              if (g) {
                  j = 0;
                  h = 0;
                  do {
                      l = b[d + (j << 1) >> 1] | 0;
                      l = Z(l, l) | 0;
                      if ((l | 0) != 1073741824) {
                          k = (l << 1) + h | 0;
                          if ((l ^ h | 0) > 0 & (k ^ h | 0) < 0) {
                              c[f >> 2] = 1;
                              h = (h >>> 31) + 2147483647 | 0;
                          } else h = k;
                      } else {
                          c[f >> 2] = 1;
                          h = 2147483647;
                      }
                      j = j + 1 | 0;
                  } while ((j & 65535) << 16 >> 16 != e << 16 >> 16);
                  if ((h | 0) == 2147483647) {
                      c[f >> 2] = i;
                      l = 0;
                      i = 0;
                      do {
                          k = b[d + (l << 1) >> 1] >> 2;
                          k = Z(k, k) | 0;
                          if ((k | 0) != 1073741824) {
                              j = (k << 1) + i | 0;
                              if ((k ^ i | 0) > 0 & (j ^ i | 0) < 0) {
                                  c[f >> 2] = 1;
                                  i = (i >>> 31) + 2147483647 | 0;
                              } else i = j;
                          } else {
                              c[f >> 2] = 1;
                              i = 2147483647;
                          }
                          l = l + 1 | 0;
                      } while ((l & 65535) << 16 >> 16 != e << 16 >> 16)
                  } else o = 8;
              } else {
                  h = 0;
                  o = 8;
              }
              if ((o | 0) == 8) i = h >> 4;
              if (!i) return;
              n = ((pe(i) | 0) & 65535) + 65535 | 0;
              k = n << 16 >> 16;
              if ((n & 65535) << 16 >> 16 > 0) {
                  j = i << k;
                  if ((j >> k | 0) == (i | 0)) i = j; else i = i >> 31 ^ 2147483647;
              } else {
                  k = 0 - k << 16;
                  if ((k | 0) < 2031616) i = i >> (k >> 16); else i = 0;
              }
              m = Ce(i, f) | 0;
              i = c[f >> 2] | 0;
              if (g) {
                  j = 0;
                  h = 0;
                  do {
                      l = b[a + (j << 1) >> 1] | 0;
                      l = Z(l, l) | 0;
                      if ((l | 0) != 1073741824) {
                          k = (l << 1) + h | 0;
                          if ((l ^ h | 0) > 0 & (k ^ h | 0) < 0) {
                              c[f >> 2] = 1;
                              h = (h >>> 31) + 2147483647 | 0;
                          } else h = k;
                      } else {
                          c[f >> 2] = 1;
                          h = 2147483647;
                      }
                      j = j + 1 | 0;
                  } while ((j & 65535) << 16 >> 16 != e << 16 >> 16);
                  if ((h | 0) == 2147483647) {
                      c[f >> 2] = i;
                      i = 0;
                      j = 0;
                      do {
                          l = b[a + (i << 1) >> 1] >> 2;
                          l = Z(l, l) | 0;
                          if ((l | 0) != 1073741824) {
                              k = (l << 1) + j | 0;
                              if ((l ^ j | 0) > 0 & (k ^ j | 0) < 0) {
                                  c[f >> 2] = 1;
                                  j = (j >>> 31) + 2147483647 | 0;
                              } else j = k;
                          } else {
                              c[f >> 2] = 1;
                              j = 2147483647;
                          }
                          i = i + 1 | 0;
                      } while ((i & 65535) << 16 >> 16 != e << 16 >> 16)
                  } else o = 28;
              } else {
                  h = 0;
                  o = 28;
              }
              if ((o | 0) == 28) j = h >> 4;
              if (!j) g = 0; else {
                  l = pe(j) | 0;
                  k = l << 16 >> 16;
                  if (l << 16 >> 16 > 0) {
                      i = j << k;
                      if ((i >> k | 0) == (j | 0)) j = i; else j = j >> 31 ^ 2147483647;
                  } else {
                      k = 0 - k << 16;
                      if ((k | 0) < 2031616) j = j >> (k >> 16); else j = 0;
                  }
                  i = n - (l & 65535) | 0;
                  k = i & 65535;
                  h = (Td(m, Ce(j, f) | 0) | 0) << 16 >> 16;
                  g = h << 7;
                  i = i << 16 >> 16;
                  if (k << 16 >> 16 > 0) g = k << 16 >> 16 < 31 ? g >> i : 0; else {
                      n = 0 - i << 16 >> 16;
                      a = g << n;
                      g = (a >> n | 0) == (g | 0) ? a : h >> 24 ^ 2147483647;
                  }
                  g = ce(g, f) | 0;
                  if ((g | 0) > 4194303) g = 2147483647; else g = (g | 0) < -4194304 ? -2147483648 : g << 9;
                  g = Ce(g, f) | 0;
              }
              h = (e & 65535) + 65535 & 65535;
              if (h << 16 >> 16 <= -1) return;
              l = g << 16 >> 16;
              k = e + -1 << 16 >> 16 << 16 >> 16;
              while (1) {
                  i = d + (k << 1) | 0;
                  g = Z(b[i >> 1] | 0, l) | 0;
                  do if ((g | 0) != 1073741824) {
                      j = g << 1;
                      if ((j | 0) <= 268435455) if ((j | 0) < -268435456) {
                          b[i >> 1] = -32768;
                          break
                      } else {
                          b[i >> 1] = g >>> 12;
                          break
                      } else o = 52;
                  } else {
                      c[f >> 2] = 1;
                      o = 52;
                  } while (0);
                  if ((o | 0) == 52) {
                      o = 0;
                      b[i >> 1] = 32767;
                  }
                  h = h + -1 << 16 >> 16;
                  if (h << 16 >> 16 <= -1) break; else k = k + -1 | 0;
              }
              return
          }

          function Ea(a, d, e, f, g) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0;
              l = i;
              i = i + 496 | 0;
              k = l;
              j = (g | 0) == 2;
              do if (!(j & 1 | (g | 0) == 4)) {
                  if (g) {
                      a = -1;
                      i = l;
                      return a | 0
                  }
                  j = b[e >> 1] | 0;
                  d = e + 490 | 0;
                  g = e + 2 | 0;
                  h = 0;
                  while (1) {
                      b[k + (h << 1) >> 1] = b[g >> 1] | 0;
                      h = h + 1 | 0;
                      if ((h | 0) == 244) break; else g = g + 2 | 0;
                  }
                  h = j << 16 >> 16;
                  if (j << 16 >> 16 == 7) {
                      g = 492;
                      d = c[a + 1760 >> 2] | 0;
                      break
                  } else {
                      g = 492;
                      d = b[d >> 1] | 0;
                      break
                  }
              } else {
                  h = a + 1168 | 0;
                  if (j) {
                      Gb(d, e, k, h);
                      h = 604;
                  } else {
                      pb(d, e, k, h);
                      h = 3436;
                  }
                  g = b[h + (d << 1) >> 1] | 0;
                  do if (d >>> 0 >= 8) {
                      if ((d | 0) == 8) {
                          d = b[k + 76 >> 1] << 2 | (b[k + 74 >> 1] << 1 | b[k + 72 >> 1]);
                          h = (b[k + 70 >> 1] | 0) == 0 ? 4 : 5;
                          break
                      }
                      if (d >>> 0 < 15) {
                          a = -1;
                          i = l;
                          return a | 0
                      } else {
                          d = c[a + 1760 >> 2] | 0;
                          h = 7;
                          break
                      }
                  } else h = 0; while (0);
                  if (g << 16 >> 16 == -1) {
                      a = -1;
                      i = l;
                      return a | 0
                  }
              } while (0);
              Fb(a, d, k, h, f);
              c[a + 1760 >> 2] = d;
              a = g;
              i = l;
              return a | 0
          }

          function Fa(a, d, f) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0;
              t = i;
              i = i + 48 | 0;
              r = t + 20 | 0;
              s = t;
              h = r;
              g = h + 20 | 0;
              do {
                  b[h >> 1] = b[a >> 1] | 0;
                  h = h + 2 | 0;
                  a = a + 2 | 0;
              } while ((h | 0) < (g | 0));
              a = b[r + 18 >> 1] | 0;
              q = (a & 65535) - ((a & 65535) >>> 15 & 65535) | 0;
              a:do if (((q << 16 >> 31 ^ q) & 65535) << 16 >> 16 <= 4095) {
                  g = 9;
                  q = 9;
                  while (1) {
                      a = a << 16 >> 16;
                      a = (a << 19 >> 19 | 0) == (a | 0) ? a << 3 : a >>> 15 ^ 32767;
                      p = d + (g << 1) | 0;
                      b[p >> 1] = a;
                      a = a << 16 >> 16;
                      a = Z(a, a) | 0;
                      if ((a | 0) == 1073741824) {
                          c[f >> 2] = 1;
                          h = 2147483647;
                      } else h = a << 1;
                      a = 2147483647 - h | 0;
                      if ((a & h | 0) < 0) {
                          c[f >> 2] = 1;
                          a = 2147483647;
                      }
                      n = pe(a) | 0;
                      o = 15 - (n & 65535) & 65535;
                      j = n << 16 >> 16;
                      if (n << 16 >> 16 > 0) {
                          h = a << j;
                          if ((h >> j | 0) != (a | 0)) h = a >> 31 ^ 2147483647;
                      } else {
                          h = 0 - j << 16;
                          if ((h | 0) < 2031616) h = a >> (h >> 16); else h = 0;
                      }
                      h = Td(16384, Ce(h, f) | 0) | 0;
                      do if (q << 16 >> 16 > 0) {
                          n = g + -1 | 0;
                          k = h << 16 >> 16;
                          l = q << 16 >> 16;
                          m = 0;
                          while (1) {
                              g = e[r + (m << 1) >> 1] | 0;
                              a = g << 16;
                              j = Z(b[r + (n - m << 1) >> 1] | 0, b[p >> 1] | 0) | 0;
                              if ((j | 0) == 1073741824) {
                                  c[f >> 2] = 1;
                                  h = 2147483647;
                              } else h = j << 1;
                              j = a - h | 0;
                              if (((j ^ a) & (h ^ a) | 0) < 0) {
                                  c[f >> 2] = 1;
                                  j = (g >>> 15) + 2147483647 | 0;
                              }
                              j = Z((Ce(j, f) | 0) << 16 >> 16, k) | 0;
                              if ((j | 0) == 1073741824) {
                                  c[f >> 2] = 1;
                                  j = 2147483647;
                              } else j = j << 1;
                              j = ge(j, o, f) | 0;
                              h = j - (j >>> 31) | 0;
                              if ((h >> 31 ^ h | 0) > 32767) {
                                  j = 24;
                                  break
                              }
                              b[s + (m << 1) >> 1] = j;
                              m = m + 1 | 0;
                              if ((l | 0) <= (m | 0)) {
                                  j = 26;
                                  break
                              }
                          }
                          if ((j | 0) == 24) {
                              j = 0;
                              h = d;
                              g = h + 20 | 0;
                              do {
                                  b[h >> 1] = 0;
                                  h = h + 2 | 0;
                              } while ((h | 0) < (g | 0));
                              a = 10;
                          } else if ((j | 0) == 26) {
                              j = 0;
                              if (q << 16 >> 16 > 0) a = q; else {
                                  j = 28;
                                  break
                              }
                          }
                          h = a + -1 << 16 >> 16;
                          Oe(r | 0, s | 0, ((h & 65535) << 1) + 2 | 0) | 0;
                          g = h << 16 >> 16;
                      } else j = 28; while (0);
                      if ((j | 0) == 28) {
                          a = q + -1 << 16 >> 16;
                          if (a << 16 >> 16 > -1) {
                              g = a << 16 >> 16;
                              h = 32767;
                          } else break
                      }
                      a = b[r + (g << 1) >> 1] | 0;
                      q = (a & 65535) - ((a & 65535) >>> 15 & 65535) | 0;
                      if (((q << 16 >> 31 ^ q) & 65535) << 16 >> 16 > 4095) break a; else q = h;
                  }
                  i = t;
                  return
              } while (0);
              h = d;
              g = h + 20 | 0;
              do {
                  b[h >> 1] = 0;
                  h = h + 2 | 0;
              } while ((h | 0) < (g | 0));
              i = t;
              return
          }

          function Ga(a, b) {
              a = a | 0;
              b = b | 0;
              var d = 0, e = 0, f = 0, g = 0, h = 0;
              if (b << 16 >> 16 <= 0) {
                  a = 0;
                  return a | 0
              }
              e = c[a >> 2] | 0;
              f = 0;
              d = 0;
              do {
                  h = e & 1;
                  d = h | d << 1 & 131070;
                  g = e >> 1;
                  e = (h | 0) == (e >>> 28 & 1 | 0) ? g : g | 1073741824;
                  f = f + 1 << 16 >> 16;
              } while (f << 16 >> 16 < b << 16 >> 16);
              c[a >> 2] = e;
              h = d & 65535;
              return h | 0
          }

          function Ha(a, d, e) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;
              g = d;
              f = g + 80 | 0;
              do {
                  b[g >> 1] = 0;
                  g = g + 2 | 0;
              } while ((g | 0) < (f | 0));
              f = 0;
              g = c[a >> 2] | 0;
              do {
                  k = g & 1;
                  j = g >> 1;
                  j = (k | 0) == (g >>> 28 & 1 | 0) ? j : j | 1073741824;
                  h = j & 1;
                  i = j >> 1;
                  c[a >> 2] = (h | 0) == (j >>> 28 & 1 | 0) ? i : i | 1073741824;
                  h = Rd((Z(k << 1 | h, 1310720) | 0) >>> 17 & 65535, f, e) | 0;
                  k = c[a >> 2] | 0;
                  i = k & 1;
                  j = k >> 1;
                  g = (i | 0) == (k >>> 28 & 1 | 0) ? j : j | 1073741824;
                  c[a >> 2] = g;
                  b[d + (h << 16 >> 16 << 1) >> 1] = ((i & 65535) << 13 & 65535) + -4096 << 16 >> 16;
                  f = f + 1 << 16 >> 16;
              } while (f << 16 >> 16 < 10);
              return
          }

          function Ia(a, d, f, g, h, i) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              var j = 0, k = 0;
              j = b[a >> 1] | 0;
              if ((j * 31821 | 0) == 1073741824) {
                  c[i >> 2] = 1;
                  k = 1073741823;
              } else k = j * 63642 >> 1;
              j = k + 13849 | 0;
              if ((k | 0) > -1 & (j ^ k | 0) < 0) {
                  c[i >> 2] = 1;
                  j = (k >>> 31) + 2147483647 | 0;
              }
              b[a >> 1] = j;
              if (d << 16 >> 16 <= 0) return;
              k = 0;
              j = h + ((j & 127) << 1) | 0;
              while (1) {
                  b[g + (k << 1) >> 1] = (-65536 << b[f + (k << 1) >> 1] >>> 16 ^ 65535) & e[j >> 1];
                  k = k + 1 | 0;
                  if ((k & 65535) << 16 >> 16 == d << 16 >> 16) break; else j = j + 2 | 0;
              }
              return
          }

          function Ja(a) {
              a = a | 0;
              var c = 0;
              if (!a) {
                  c = -1;
                  return c | 0
              }
              c = a + 122 | 0;
              do {
                  b[a >> 1] = 0;
                  a = a + 2 | 0;
              } while ((a | 0) < (c | 0));
              c = 0;
              return c | 0
          }

          function Ka(a, d, f, g, h) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;
              k = 159;
              j = 0;
              while (1) {
                  m = b[f + (k << 1) >> 1] | 0;
                  m = Z(m, m) | 0;
                  m = (m | 0) == 1073741824 ? 2147483647 : m << 1;
                  i = m + j | 0;
                  if ((m ^ j | 0) > -1 & (i ^ j | 0) < 0) {
                      c[h >> 2] = 1;
                      j = (j >>> 31) + 2147483647 | 0;
                  } else j = i;
                  if ((k | 0) > 0) k = k + -1 | 0; else {
                      k = j;
                      break
                  }
              }
              h = k >>> 14 & 65535;
              j = 32767;
              i = 59;
              while (1) {
                  m = b[a + (i << 1) >> 1] | 0;
                  j = m << 16 >> 16 < j << 16 >> 16 ? m : j;
                  if ((i | 0) > 0) i = i + -1 | 0; else break
              }
              m = (k | 0) > 536870911 ? 32767 : h;
              h = j << 16 >> 16;
              i = h << 20 >> 16;
              k = j << 16 >> 16 > 0 ? 32767 : -32768;
              f = 55;
              j = b[a >> 1] | 0;
              while (1) {
                  l = b[a + (f << 1) >> 1] | 0;
                  j = j << 16 >> 16 < l << 16 >> 16 ? l : j;
                  if ((f | 0) > 1) f = f + -1 | 0; else break
              }
              f = b[a + 80 >> 1] | 0;
              l = b[a + 82 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 84 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 86 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 88 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 90 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 92 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 94 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 96 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 98 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 100 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 102 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 104 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 106 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 108 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 110 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 112 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 114 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = b[a + 116 >> 1] | 0;
              f = f << 16 >> 16 < l << 16 >> 16 ? l : f;
              l = a + 118 | 0;
              o = b[l >> 1] | 0;
              do if ((m + -21 & 65535) < 17557 & j << 16 >> 16 > 20 ? ((m << 16 >> 16 | 0) < (((h << 4 | 0) == (i | 0) ? i : k) | 0) ? 1 : (f << 16 >> 16 < o << 16 >> 16 ? o : f) << 16 >> 16 < 1953) : 0) {
                  j = a + 120 | 0;
                  i = b[j >> 1] | 0;
                  if (i << 16 >> 16 > 29) {
                      b[j >> 1] = 30;
                      f = j;
                      k = 1;
                      break
                  } else {
                      k = (i & 65535) + 1 & 65535;
                      b[j >> 1] = k;
                      f = j;
                      k = k << 16 >> 16 > 1 & 1;
                      break
                  }
              } else n = 14; while (0);
              if ((n | 0) == 14) {
                  f = a + 120 | 0;
                  b[f >> 1] = 0;
                  k = 0;
              }
              j = 0;
              do {
                  o = j;
                  j = j + 1 | 0;
                  b[a + (o << 1) >> 1] = b[a + (j << 1) >> 1] | 0;
              } while ((j | 0) != 59);
              b[l >> 1] = m;
              j = b[f >> 1] | 0;
              j = j << 16 >> 16 > 15 ? 16383 : j << 16 >> 16 > 8 ? 15565 : 13926;
              i = Zd(d + 8 | 0, 5) | 0;
              if ((b[f >> 1] | 0) > 20) {
                  if (((Zd(d, 9) | 0) << 16 >> 16 | 0) > (j | 0)) n = 20;
              } else if ((i << 16 >> 16 | 0) > (j | 0)) n = 20;
              if ((n | 0) == 20) {
                  b[g >> 1] = 0;
                  return k | 0
              }
              i = (e[g >> 1] | 0) + 1 & 65535;
              if (i << 16 >> 16 > 10) {
                  b[g >> 1] = 10;
                  return k | 0
              } else {
                  b[g >> 1] = i;
                  return k | 0
              }
              return 0
          }

          function La(a) {
              a = a | 0;
              var c = 0;
              if (!a) {
                  c = -1;
                  return c | 0
              }
              c = a + 18 | 0;
              do {
                  b[a >> 1] = 0;
                  a = a + 2 | 0;
              } while ((a | 0) < (c | 0));
              c = 0;
              return c | 0
          }

          function Ma(a, d, f, g, h, i, j, k, l, m, n, o) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              var p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0;
              y = a + 2 | 0;
              b[a >> 1] = b[y >> 1] | 0;
              z = a + 4 | 0;
              b[y >> 1] = b[z >> 1] | 0;
              A = a + 6 | 0;
              b[z >> 1] = b[A >> 1] | 0;
              B = a + 8 | 0;
              b[A >> 1] = b[B >> 1] | 0;
              C = a + 10 | 0;
              b[B >> 1] = b[C >> 1] | 0;
              D = a + 12 | 0;
              b[C >> 1] = b[D >> 1] | 0;
              b[D >> 1] = f;
              t = 0;
              x = 0;
              do {
                  p = h + (x << 1) | 0;
                  r = Ge(b[p >> 1] | 0, b[g + (x << 1) >> 1] | 0, o) | 0;
                  r = (r & 65535) - ((r & 65535) >>> 15 & 65535) | 0;
                  r = r << 16 >> 31 ^ r;
                  w = ((qe(r & 65535) | 0) & 65535) + 65535 | 0;
                  q = w << 16 >> 16;
                  if ((w & 65535) << 16 >> 16 < 0) {
                      s = 0 - q << 16;
                      if ((s | 0) < 983040) u = r << 16 >> 16 >> (s >> 16) & 65535; else u = 0;
                  } else {
                      s = r << 16 >> 16;
                      r = s << q;
                      if ((r << 16 >> 16 >> q | 0) == (s | 0)) u = r & 65535; else u = (s >>> 15 ^ 32767) & 65535;
                  }
                  v = qe(b[p >> 1] | 0) | 0;
                  r = b[p >> 1] | 0;
                  q = v << 16 >> 16;
                  if (v << 16 >> 16 < 0) {
                      s = 0 - q << 16;
                      if ((s | 0) < 983040) s = r << 16 >> 16 >> (s >> 16) & 65535; else s = 0;
                  } else {
                      s = r << 16 >> 16;
                      r = s << q;
                      if ((r << 16 >> 16 >> q | 0) == (s | 0)) s = r & 65535; else s = (s >>> 15 ^ 32767) & 65535;
                  }
                  q = Td(u, s) | 0;
                  s = (w & 65535) + 2 - (v & 65535) | 0;
                  r = s & 65535;
                  do if (s & 32768) {
                      if (r << 16 >> 16 != -32768) {
                          w = 0 - s | 0;
                          s = w << 16 >> 16;
                          if ((w & 65535) << 16 >> 16 < 0) {
                              s = 0 - s << 16;
                              if ((s | 0) >= 983040) {
                                  s = 0;
                                  break
                              }
                              s = q << 16 >> 16 >> (s >> 16) & 65535;
                              break
                          }
                      } else s = 32767;
                      r = q << 16 >> 16;
                      q = r << s;
                      if ((q << 16 >> 16 >> s | 0) == (r | 0)) s = q & 65535; else s = (r >>> 15 ^ 32767) & 65535;
                  } else s = De(q, r, o) | 0; while (0);
                  t = Rd(t, s, o) | 0;
                  x = x + 1 | 0;
              } while ((x | 0) != 10);
              s = t & 65535;
              r = t << 16 >> 16 > 5325;
              t = a + 14 | 0;
              if (r) {
                  h = (e[t >> 1] | 0) + 1 & 65535;
                  b[t >> 1] = h;
                  if (h << 16 >> 16 > 10) b[a + 16 >> 1] = 0;
              } else b[t >> 1] = 0;
              switch (d | 0) {
                  case 0:
                  case 1:
                  case 2:
                  case 3:
                  case 6:
                      break;
                  default: {
                      D = a + 16 | 0;
                      o = f;
                      f = b[D >> 1] | 0;
                      f = f & 65535;
                      f = f + 1 | 0;
                      f = f & 65535;
                      b[D >> 1] = f;
                      return o | 0
                  }
              }
              u = (j | i) << 16 >> 16 == 0;
              v = m << 16 >> 16 == 0;
              w = d >>> 0 < 3;
              t = s + (w & ((v | (u & (k << 16 >> 16 == 0 | l << 16 >> 16 == 0) | n << 16 >> 16 < 2)) ^ 1) ? 61030 : 62259) & 65535;
              t = t << 16 >> 16 > 0 ? t : 0;
              if (t << 16 >> 16 <= 2048) {
                  t = t << 16 >> 16;
                  if ((t << 18 >> 18 | 0) == (t | 0)) l = t << 2; else l = t >>> 15 ^ 32767;
              } else l = 8192;
              k = a + 16 | 0;
              n = r | (b[k >> 1] | 0) < 40;
              t = b[z >> 1] | 0;
              if ((t * 6554 | 0) == 1073741824) {
                  c[o >> 2] = 1;
                  r = 2147483647;
              } else r = t * 13108 | 0;
              t = b[A >> 1] | 0;
              s = t * 6554 | 0;
              if ((s | 0) != 1073741824) {
                  t = (t * 13108 | 0) + r | 0;
                  if ((s ^ r | 0) > 0 & (t ^ r | 0) < 0) {
                      c[o >> 2] = 1;
                      t = (r >>> 31) + 2147483647 | 0;
                  }
              } else {
                  c[o >> 2] = 1;
                  t = 2147483647;
              }
              s = b[B >> 1] | 0;
              r = s * 6554 | 0;
              if ((r | 0) != 1073741824) {
                  s = (s * 13108 | 0) + t | 0;
                  if ((r ^ t | 0) > 0 & (s ^ t | 0) < 0) {
                      c[o >> 2] = 1;
                      s = (t >>> 31) + 2147483647 | 0;
                  }
              } else {
                  c[o >> 2] = 1;
                  s = 2147483647;
              }
              t = b[C >> 1] | 0;
              r = t * 6554 | 0;
              if ((r | 0) != 1073741824) {
                  t = (t * 13108 | 0) + s | 0;
                  if ((r ^ s | 0) > 0 & (t ^ s | 0) < 0) {
                      c[o >> 2] = 1;
                      r = (s >>> 31) + 2147483647 | 0;
                  } else r = t;
              } else {
                  c[o >> 2] = 1;
                  r = 2147483647;
              }
              t = b[D >> 1] | 0;
              s = t * 6554 | 0;
              if ((s | 0) != 1073741824) {
                  t = (t * 13108 | 0) + r | 0;
                  if ((s ^ r | 0) > 0 & (t ^ r | 0) < 0) {
                      c[o >> 2] = 1;
                      t = (r >>> 31) + 2147483647 | 0;
                  }
              } else {
                  c[o >> 2] = 1;
                  t = 2147483647;
              }
              r = Ce(t, o) | 0;
              if (w & ((u | v) ^ 1)) {
                  t = b[a >> 1] | 0;
                  if ((t * 4681 | 0) == 1073741824) {
                      c[o >> 2] = 1;
                      r = 2147483647;
                  } else r = t * 9362 | 0;
                  t = b[y >> 1] | 0;
                  s = t * 4681 | 0;
                  if ((s | 0) != 1073741824) {
                      t = (t * 9362 | 0) + r | 0;
                      if ((s ^ r | 0) > 0 & (t ^ r | 0) < 0) {
                          c[o >> 2] = 1;
                          r = (r >>> 31) + 2147483647 | 0;
                      } else r = t;
                  } else {
                      c[o >> 2] = 1;
                      r = 2147483647;
                  }
                  t = b[z >> 1] | 0;
                  s = t * 4681 | 0;
                  if ((s | 0) != 1073741824) {
                      t = (t * 9362 | 0) + r | 0;
                      if ((s ^ r | 0) > 0 & (t ^ r | 0) < 0) {
                          c[o >> 2] = 1;
                          r = (r >>> 31) + 2147483647 | 0;
                      } else r = t;
                  } else {
                      c[o >> 2] = 1;
                      r = 2147483647;
                  }
                  t = b[A >> 1] | 0;
                  s = t * 4681 | 0;
                  if ((s | 0) != 1073741824) {
                      t = (t * 9362 | 0) + r | 0;
                      if ((s ^ r | 0) > 0 & (t ^ r | 0) < 0) {
                          c[o >> 2] = 1;
                          t = (r >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[o >> 2] = 1;
                      t = 2147483647;
                  }
                  s = b[B >> 1] | 0;
                  r = s * 4681 | 0;
                  if ((r | 0) != 1073741824) {
                      s = (s * 9362 | 0) + t | 0;
                      if ((r ^ t | 0) > 0 & (s ^ t | 0) < 0) {
                          c[o >> 2] = 1;
                          t = (t >>> 31) + 2147483647 | 0;
                      } else t = s;
                  } else {
                      c[o >> 2] = 1;
                      t = 2147483647;
                  }
                  s = b[C >> 1] | 0;
                  r = s * 4681 | 0;
                  if ((r | 0) != 1073741824) {
                      s = (s * 9362 | 0) + t | 0;
                      if ((r ^ t | 0) > 0 & (s ^ t | 0) < 0) {
                          c[o >> 2] = 1;
                          s = (t >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[o >> 2] = 1;
                      s = 2147483647;
                  }
                  r = b[D >> 1] | 0;
                  p = r * 4681 | 0;
                  if ((p | 0) != 1073741824) {
                      q = (r * 9362 | 0) + s | 0;
                      if ((p ^ s | 0) > 0 & (q ^ s | 0) < 0) {
                          c[o >> 2] = 1;
                          q = (s >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[o >> 2] = 1;
                      q = 2147483647;
                  }
                  r = Ce(q, o) | 0;
              }
              t = n ? 8192 : l << 16 >> 16;
              p = Z(t, f << 16 >> 16) | 0;
              if ((p | 0) == 1073741824) {
                  c[o >> 2] = 1;
                  s = 2147483647;
              } else s = p << 1;
              r = r << 16 >> 16;
              q = r << 13;
              if ((q | 0) != 1073741824) {
                  p = s + (r << 14) | 0;
                  if ((s ^ q | 0) > 0 & (p ^ s | 0) < 0) {
                      c[o >> 2] = 1;
                      s = (s >>> 31) + 2147483647 | 0;
                  } else s = p;
              } else {
                  c[o >> 2] = 1;
                  s = 2147483647;
              }
              p = Z(r, t) | 0;
              if ((p | 0) == 1073741824) {
                  c[o >> 2] = 1;
                  q = 2147483647;
              } else q = p << 1;
              p = s - q | 0;
              if (((p ^ s) & (q ^ s) | 0) < 0) {
                  c[o >> 2] = 1;
                  p = (s >>> 31) + 2147483647 | 0;
              }
              D = p << 2;
              f = k;
              o = Ce((D >> 2 | 0) == (p | 0) ? D : p >> 31 ^ 2147483647, o) | 0;
              D = b[f >> 1] | 0;
              D = D & 65535;
              D = D + 1 | 0;
              D = D & 65535;
              b[f >> 1] = D;
              return o | 0
          }

          function Na(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var f = 0, g = 0, h = 0, i = 0;
              f = c;
              g = f + 80 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (g | 0));
              f = 0;
              do {
                  i = b[a + (f << 1) >> 1] | 0;
                  g = ((i & 8) << 10 & 65535 ^ 8192) + -4096 << 16 >> 16;
                  h = f << 16;
                  i = ((b[d + ((i & 7) << 1) >> 1] | 0) * 327680 | 0) + h >> 16;
                  b[c + (i << 1) >> 1] = g;
                  h = ((b[d + ((e[a + (f + 5 << 1) >> 1] & 7) << 1) >> 1] | 0) * 327680 | 0) + h >> 16;
                  if ((h | 0) < (i | 0)) g = 0 - (g & 65535) & 65535;
                  i = c + (h << 1) | 0;
                  b[i >> 1] = (e[i >> 1] | 0) + (g & 65535);
                  f = f + 1 | 0;
              } while ((f | 0) != 5);
              return
          }

          function Oa(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var e = 0, f = 0, g = 0;
              f = c << 16 >> 16;
              e = (f << 1 & 2 | 1) + ((f >>> 1 & 7) * 5 | 0) | 0;
              c = f >>> 4 & 3;
              c = ((f >>> 6 & 7) * 5 | 0) + ((c | 0) == 3 ? 4 : c) | 0;
              f = d;
              g = f + 80 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (g | 0));
              a = a << 16 >> 16;
              b[d + (e << 1) >> 1] = (0 - (a & 1) & 16383) + 57344;
              b[d + (c << 1) >> 1] = (0 - (a >>> 1 & 1) & 16383) + 57344;
              return
          }

          function Pa(a, c, d, f, g, h) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0;
              h = d << 16 >> 16;
              j = h >>> 3;
              a = a << 16 >> 16;
              a = ((a << 17 >> 17 | 0) == (a | 0) ? a << 1 : a >>> 15 ^ 32767) + (j & 8) << 16;
              j = (e[f + (a + 65536 >> 16 << 1) >> 1] | 0) + ((j & 7) * 5 | 0) | 0;
              d = c << 16 >> 16;
              i = (0 - (d & 1) & 16383) + 57344 & 65535;
              a = g + ((e[f + (a >> 16 << 1) >> 1] | 0) + ((h & 7) * 5 | 0) << 16 >> 16 << 1) | 0;
              c = g;
              h = c + 80 | 0;
              do {
                  b[c >> 1] = 0;
                  c = c + 2 | 0;
              } while ((c | 0) < (h | 0));
              b[a >> 1] = i;
              b[g + (j << 16 >> 16 << 1) >> 1] = (0 - (d >>> 1 & 1) & 16383) + 57344;
              return
          }

          function Qa(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var e = 0, f = 0, g = 0, h = 0;
              c = c << 16 >> 16;
              e = (c & 7) * 5 | 0;
              f = (c >>> 2 & 2 | 1) + ((c >>> 4 & 7) * 5 | 0) | 0;
              c = (c >>> 6 & 2) + 2 + ((c >>> 8 & 7) * 5 | 0) | 0;
              g = d;
              h = g + 80 | 0;
              do {
                  b[g >> 1] = 0;
                  g = g + 2 | 0;
              } while ((g | 0) < (h | 0));
              a = a << 16 >> 16;
              b[d + (e << 1) >> 1] = (0 - (a & 1) & 16383) + 57344;
              b[d + (f << 1) >> 1] = (0 - (a >>> 1 & 1) & 16383) + 57344;
              b[d + (c << 1) >> 1] = (0 - (a >>> 2 & 1) & 16383) + 57344;
              return
          }

          function Ra(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0;
              c = c << 16 >> 16;
              h = b[d + ((c & 7) << 1) >> 1] | 0;
              i = b[d + ((c >>> 3 & 7) << 1) >> 1] | 0;
              g = b[d + ((c >>> 6 & 7) << 1) >> 1] | 0;
              d = (c >>> 9 & 1) + 3 + ((b[d + ((c >>> 10 & 7) << 1) >> 1] | 0) * 5 | 0) | 0;
              c = e;
              f = c + 80 | 0;
              do {
                  b[c >> 1] = 0;
                  c = c + 2 | 0;
              } while ((c | 0) < (f | 0));
              a = a << 16 >> 16;
              b[e + (h * 327680 >> 16 << 1) >> 1] = (0 - (a & 1) & 16383) + 57344;
              b[e + ((i * 327680 | 0) + 65536 >> 16 << 1) >> 1] = (0 - (a >>> 1 & 1) & 16383) + 57344;
              b[e + ((g * 327680 | 0) + 131072 >> 16 << 1) >> 1] = (0 - (a >>> 2 & 1) & 16383) + 57344;
              b[e + (d << 16 >> 16 << 1) >> 1] = (0 - (a >>> 3 & 1) & 16383) + 57344;
              return
          }

          function Sa(a, d, f) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0;
              q = i;
              i = i + 32 | 0;
              p = q + 16 | 0;
              o = q;
              j = d;
              h = j + 80 | 0;
              do {
                  b[j >> 1] = 0;
                  j = j + 2 | 0;
              } while ((j | 0) < (h | 0));
              h = b[a >> 1] | 0;
              b[p >> 1] = h;
              b[p + 2 >> 1] = b[a + 2 >> 1] | 0;
              b[p + 4 >> 1] = b[a + 4 >> 1] | 0;
              b[p + 6 >> 1] = b[a + 6 >> 1] | 0;
              m = b[a + 8 >> 1] | 0;
              Ta(m >>> 3 & 65535, m & 7, 0, 4, 1, o, f);
              m = b[a + 10 >> 1] | 0;
              Ta(m >>> 3 & 65535, m & 7, 2, 6, 5, o, f);
              m = b[a + 12 >> 1] | 0;
              g = m >> 2;
              do if ((g * 25 | 0) != 1073741824) {
                  j = (Z(g, 1638400) | 0) + 786432 >> 21;
                  g = j * 6554 >> 15;
                  if ((g | 0) > 32767) {
                      c[f >> 2] = 1;
                      k = 1;
                      l = 1;
                      a = 163835;
                      n = 6;
                      break
                  }
                  a = (g << 16 >> 16) * 5 | 0;
                  k = g & 1;
                  if ((a | 0) == 1073741824) {
                      c[f >> 2] = 1;
                      l = 0;
                      a = 65535;
                  } else {
                      l = 0;
                      n = 6;
                  }
              } else {
                  c[f >> 2] = 1;
                  k = 0;
                  g = 0;
                  l = 0;
                  j = 0;
                  a = 0;
                  n = 6;
              } while (0);
              if ((n | 0) == 6) a = a & 65535;
              n = j - a | 0;
              k = k << 16 >> 16 == 0 ? n : 4 - n | 0;
              n = k << 16 >> 16;
              b[o + 6 >> 1] = Rd(((k << 17 >> 17 | 0) == (n | 0) ? k << 1 : n >>> 15 ^ 32767) & 65535, m & 1, f) | 0;
              if (l) {
                  c[f >> 2] = 1;
                  g = 32767;
              }
              n = g << 16 >> 16;
              b[o + 14 >> 1] = ((g << 17 >> 17 | 0) == (n | 0) ? g << 1 : n >>> 15 ^ 32767) + (m >>> 1 & 1);
              g = 0;
              while (1) {
                  h = h << 16 >> 16 == 0 ? 8191 : -8191;
                  n = (b[o + (g << 1) >> 1] << 2) + g << 16;
                  j = n >> 16;
                  if ((n | 0) < 2621440) b[d + (j << 1) >> 1] = h;
                  k = (b[o + (g + 4 << 1) >> 1] << 2) + g << 16;
                  a = k >> 16;
                  if ((a | 0) < (j | 0)) h = 0 - (h & 65535) & 65535;
                  if ((k | 0) < 2621440) {
                      n = d + (a << 1) | 0;
                      b[n >> 1] = (e[n >> 1] | 0) + (h & 65535);
                  }
                  g = g + 1 | 0;
                  if ((g | 0) == 4) break;
                  h = b[p + (g << 1) >> 1] | 0;
              }
              i = q;
              return
          }

          function Ta(a, d, e, f, g, h, i) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;
              k = a << 16 >> 16 > 124 ? 124 : a;
              a = (k << 16 >> 16) * 1311 >> 15;
              p = (a | 0) > 32767;
              if (!p) {
                  j = a << 16 >> 16;
                  if ((j * 25 | 0) == 1073741824) {
                      c[i >> 2] = 1;
                      j = 1073741823;
                  } else o = 4;
              } else {
                  c[i >> 2] = 1;
                  j = 32767;
                  o = 4;
              }
              if ((o | 0) == 4) j = (j * 50 | 0) >>> 1;
              m = (k & 65535) - j | 0;
              j = (m << 16 >> 16) * 6554 >> 15;
              n = (j | 0) > 32767;
              if (!n) {
                  k = j << 16 >> 16;
                  if ((k * 5 | 0) == 1073741824) {
                      c[i >> 2] = 1;
                      l = 1073741823;
                  } else o = 9;
              } else {
                  c[i >> 2] = 1;
                  k = 32767;
                  o = 9;
              }
              if ((o | 0) == 9) l = (k * 10 | 0) >>> 1;
              m = m - l | 0;
              o = m << 16 >> 16;
              k = d << 16 >> 16;
              l = k >> 2;
              k = k - (l << 2) | 0;
              b[h + (e << 16 >> 16 << 1) >> 1] = ((m << 17 >> 17 | 0) == (o | 0) ? m << 1 : o >>> 15 ^ 32767) + (k & 1);
              if (n) {
                  c[i >> 2] = 1;
                  j = 32767;
              }
              e = j << 16 >> 16;
              b[h + (f << 16 >> 16 << 1) >> 1] = ((j << 17 >> 17 | 0) == (e | 0) ? j << 1 : e >>> 15 ^ 32767) + (k << 16 >> 17);
              if (p) {
                  c[i >> 2] = 1;
                  a = 32767;
              }
              f = a << 16 >> 16;
              b[h + (g << 16 >> 16 << 1) >> 1] = Rd(l & 65535, ((a << 17 >> 17 | 0) == (f | 0) ? a << 1 : f >>> 15 ^ 32767) & 65535, i) | 0;
              return
          }

          function Ua(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0, g = 0;
              if (!a) {
                  g = -1;
                  return g | 0
              }
              Yd(a + 1168 | 0);
              b[a + 460 >> 1] = 40;
              c[a + 1164 >> 2] = 0;
              d = a + 646 | 0;
              e = a + 1216 | 0;
              f = a + 462 | 0;
              g = f + 22 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (g | 0));
              db(d, c[e >> 2] | 0) | 0;
              mb(a + 686 | 0) | 0;
              ib(a + 700 | 0) | 0;
              La(a + 608 | 0) | 0;
              rb(a + 626 | 0, c[e >> 2] | 0) | 0;
              Ja(a + 484 | 0) | 0;
              tb(a + 730 | 0) | 0;
              eb(a + 748 | 0) | 0;
              Ud(a + 714 | 0) | 0;
              Va(a, 0) | 0;
              g = 0;
              return g | 0
          }

          function Va(a, d) {
              a = a | 0;
              d = d | 0;
              var e = 0, f = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a + 388 >> 2] = a + 308;
              Qe(a | 0, 0, 308) | 0;
              d = (d | 0) != 8;
              if (d) {
                  e = a + 412 | 0;
                  f = e + 20 | 0;
                  do {
                      b[e >> 1] = 0;
                      e = e + 2 | 0;
                  } while ((e | 0) < (f | 0));
                  b[a + 392 >> 1] = 3e4;
                  b[a + 394 >> 1] = 26e3;
                  b[a + 396 >> 1] = 21e3;
                  b[a + 398 >> 1] = 15e3;
                  b[a + 400 >> 1] = 8e3;
                  b[a + 402 >> 1] = 0;
                  b[a + 404 >> 1] = -8e3;
                  b[a + 406 >> 1] = -15e3;
                  b[a + 408 >> 1] = -21e3;
                  b[a + 410 >> 1] = -26e3;
              }
              b[a + 432 >> 1] = 0;
              b[a + 434 >> 1] = 40;
              c[a + 1164 >> 2] = 0;
              b[a + 436 >> 1] = 0;
              b[a + 438 >> 1] = 0;
              b[a + 440 >> 1] = 0;
              b[a + 460 >> 1] = 40;
              b[a + 462 >> 1] = 0;
              b[a + 464 >> 1] = 0;
              if (d) {
                  e = a + 442 | 0;
                  f = e + 18 | 0;
                  do {
                      b[e >> 1] = 0;
                      e = e + 2 | 0;
                  } while ((e | 0) < (f | 0));
                  e = a + 466 | 0;
                  f = e + 18 | 0;
                  do {
                      b[e >> 1] = 0;
                      e = e + 2 | 0;
                  } while ((e | 0) < (f | 0));
                  La(a + 608 | 0) | 0;
                  f = a + 1216 | 0;
                  rb(a + 626 | 0, c[f >> 2] | 0) | 0;
                  db(a + 646 | 0, c[f >> 2] | 0) | 0;
                  mb(a + 686 | 0) | 0;
                  ib(a + 700 | 0) | 0;
                  Ud(a + 714 | 0) | 0;
              } else {
                  e = a + 466 | 0;
                  f = e + 18 | 0;
                  do {
                      b[e >> 1] = 0;
                      e = e + 2 | 0;
                  } while ((e | 0) < (f | 0));
                  La(a + 608 | 0) | 0;
                  db(a + 646 | 0, c[a + 1216 >> 2] | 0) | 0;
                  mb(a + 686 | 0) | 0;
                  ib(a + 700 | 0) | 0;
              }
              Ja(a + 484 | 0) | 0;
              b[a + 606 >> 1] = 21845;
              tb(a + 730 | 0) | 0;
              if (!d) {
                  a = 0;
                  return a | 0
              }
              eb(a + 748 | 0) | 0;
              a = 0;
              return a | 0
          }

          function Wa(d, f, g, h, j, k) {
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0,
                  A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0,
                  P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, _ = 0, $ = 0, aa = 0, ba = 0,
                  ca = 0, da = 0, ea = 0, fa = 0, ga = 0, ha = 0, ia = 0, ja = 0, ka = 0, la = 0, ma = 0, na = 0, oa = 0,
                  pa = 0, qa = 0, ra = 0, sa = 0, ta = 0, ua = 0, va = 0, wa = 0, xa = 0, ya = 0, za = 0, Aa = 0, Ba = 0,
                  Ca = 0, Ea = 0, Fa = 0, Ga = 0, Ha = 0, Ja = 0, La = 0, Ta = 0, Ua = 0, Wa = 0, bb = 0, db = 0, eb = 0,
                  ib = 0, mb = 0, pb = 0, rb = 0, tb = 0, xb = 0, yb = 0, zb = 0, Ab = 0, Bb = 0;
              Bb = i;
              i = i + 336 | 0;
              r = Bb + 236 | 0;
              q = Bb + 216 | 0;
              zb = Bb + 112 | 0;
              yb = Bb + 12 | 0;
              mb = Bb + 256 | 0;
              rb = Bb + 136 | 0;
              pb = Bb + 32 | 0;
              eb = Bb + 8 | 0;
              ib = Bb + 6 | 0;
              xb = Bb + 4 | 0;
              tb = Bb + 2 | 0;
              Ab = Bb;
              Ta = d + 1164 | 0;
              Ua = d + 748 | 0;
              Wa = hb(Ua, h, Ta) | 0;
              if (Wa) {
                  Va(d, 8) | 0;
                  fb(Ua, d + 412 | 0, d + 646 | 0, d + 714 | 0, d + 608 | 0, Wa, f, g, d + 1168 | 0, j, k, Ta);
                  Ab = d + 666 | 0;
                  me(Ab, d + 392 | 0, 10, Ta);
                  sb(d + 626 | 0, Ab, Ta);
                  Ab = d + 1156 | 0;
                  c[Ab >> 2] = Wa;
                  i = Bb;
                  return
              }
              switch (h | 0) {
                  case 1: {
                      l = 1;
                      x = 6;
                      break
                  }
                  case 2:
                  case 7: {
                      Ia(d + 606 | 0, b[(c[d + 1256 >> 2] | 0) + (f << 1) >> 1] | 0, c[(c[d + 1260 >> 2] | 0) + (f << 2) >> 2] | 0, g, c[d + 1276 >> 2] | 0, Ta);
                      x = 9;
                      break
                  }
                  case 3: {
                      x = 9;
                      break
                  }
                  default: {
                      l = 0;
                      x = 6;
                  }
              }
              do if ((x | 0) == 6) {
                  h = d + 440 | 0;
                  if ((b[h >> 1] | 0) == 6) {
                      b[h >> 1] = 5;
                      Ja = 0;
                      La = 0;
                      break
                  } else {
                      b[h >> 1] = 0;
                      Ja = 0;
                      La = 0;
                      break
                  }
              } else if ((x | 0) == 9) {
                  h = d + 440 | 0;
                  Ja = (e[h >> 1] | 0) + 1 & 65535;
                  b[h >> 1] = Ja << 16 >> 16 > 6 ? 6 : Ja;
                  Ja = 1;
                  La = 1;
                  l = 0;
              } while (0);
              Ea = d + 1156 | 0;
              switch (c[Ea >> 2] | 0) {
                  case 1: {
                      b[h >> 1] = 5;
                      b[d + 436 >> 1] = 0;
                      break
                  }
                  case 2: {
                      b[h >> 1] = 5;
                      b[d + 436 >> 1] = 1;
                      break
                  }
                  default: {
                  }
              }
              n = d + 646 | 0;
              Fa = d + 666 | 0;
              m = zb;
              o = Fa;
              p = m + 20 | 0;
              do {
                  a[m >> 0] = a[o >> 0] | 0;
                  m = m + 1 | 0;
                  o = o + 1 | 0;
              } while ((m | 0) < (p | 0));
              Ga = (f | 0) != 7;
              Ha = d + 1168 | 0;
              if (Ga) {
                  ab(n, f, La, g, Ha, r, Ta);
                  m = d + 392 | 0;
                  ae(m, r, k, Ta);
                  g = g + 6 | 0;
              } else {
                  cb(n, La, g, Ha, q, r, Ta);
                  m = d + 392 | 0;
                  _d(m, q, r, k, Ta);
                  g = g + 10 | 0;
              }
              o = r;
              p = m + 20 | 0;
              do {
                  b[m >> 1] = b[o >> 1] | 0;
                  m = m + 2 | 0;
                  o = o + 2 | 0;
              } while ((m | 0) < (p | 0));
              Ca = f >>> 0 > 1;
              B = f >>> 0 < 4 & 1;
              Ba = (f | 0) == 5;
              Aa = Ba ? 10 : 5;
              Ba = Ba ? 19 : 9;
              E = d + 434 | 0;
              F = 143 - Ba & 65535;
              G = d + 460 | 0;
              H = d + 462 | 0;
              I = d + 464 | 0;
              C = f >>> 0 > 2;
              J = d + 388 | 0;
              K = (f | 0) == 0;
              L = f >>> 0 < 2;
              M = d + 1244 | 0;
              N = d + 432 | 0;
              O = f >>> 0 < 6;
              P = d + 1168 | 0;
              Q = (f | 0) == 6;
              R = La << 16 >> 16 == 0;
              S = d + 714 | 0;
              T = d + 686 | 0;
              U = d + 436 | 0;
              V = d + 700 | 0;
              W = (f | 0) == 7;
              X = d + 482 | 0;
              Y = f >>> 0 < 3;
              _ = d + 608 | 0;
              $ = d + 626 | 0;
              aa = d + 438 | 0;
              ba = f >>> 0 < 7;
              ca = d + 730 | 0;
              D = Ja ^ 1;
              da = l << 16 >> 16 != 0;
              za = da ? La ^ 1 : 0;
              ea = d + 442 | 0;
              fa = d + 458 | 0;
              ga = d + 412 | 0;
              ha = d + 80 | 0;
              ia = d + 1236 | 0;
              ja = d + 1240 | 0;
              ka = d + 468 | 0;
              la = d + 466 | 0;
              ma = d + 470 | 0;
              na = d + 472 | 0;
              oa = d + 474 | 0;
              pa = d + 476 | 0;
              qa = d + 478 | 0;
              ra = d + 480 | 0;
              sa = d + 444 | 0;
              ta = d + 446 | 0;
              ua = d + 448 | 0;
              va = d + 450 | 0;
              wa = d + 452 | 0;
              xa = d + 454 | 0;
              ya = d + 456 | 0;
              y = 0;
              z = 0;
              s = 0;
              t = 0;
              A = -1;
              while (1) {
                  A = (A << 16 >> 16) + 1 | 0;
                  p = A & 65535;
                  z = 1 - (z << 16 >> 16) | 0;
                  v = z & 65535;
                  q = Ca & s << 16 >> 16 == 80 ? 0 : s;
                  u = g + 2 | 0;
                  r = b[g >> 1] | 0;
                  a:do if (Ga) {
                      w = b[E >> 1] | 0;
                      m = (w & 65535) - Aa & 65535;
                      m = m << 16 >> 16 < 20 ? 20 : m;
                      o = (m & 65535) + Ba & 65535;
                      n = o << 16 >> 16 > 143;
                      Ya(r, n ? F : m, n ? 143 : o, q, w, eb, ib, B, Ta);
                      q = b[eb >> 1] | 0;
                      b[G >> 1] = q;
                      if (Ja) {
                          r = b[E >> 1] | 0;
                          if (r << 16 >> 16 < 143) {
                              r = (r & 65535) + 1 & 65535;
                              b[E >> 1] = r;
                          }
                          b[eb >> 1] = r;
                          b[ib >> 1] = 0;
                          if ((b[H >> 1] | 0) != 0 ? !(C | (b[I >> 1] | 0) < 5) : 0) {
                              b[eb >> 1] = q;
                              r = q;
                              q = 0;
                          } else q = 0;
                      } else {
                          r = q;
                          q = b[ib >> 1] | 0;
                      }
                      se(c[J >> 2] | 0, r, q, 40, 1, Ta);
                      if (L) {
                          q = g + 6 | 0;
                          Pa(p, b[g + 4 >> 1] | 0, b[u >> 1] | 0, c[M >> 2] | 0, mb, Ta);
                          g = b[N >> 1] | 0;
                          w = g << 16 >> 16;
                          r = w << 1;
                          if ((r | 0) == (w << 17 >> 16 | 0)) {
                              o = K;
                              break
                          }
                          o = K;
                          r = g << 16 >> 16 > 0 ? 32767 : -32768;
                          break
                      }
                      switch (f | 0) {
                          case 2: {
                              q = g + 6 | 0;
                              Oa(b[g + 4 >> 1] | 0, b[u >> 1] | 0, mb);
                              g = b[N >> 1] | 0;
                              w = g << 16 >> 16;
                              r = w << 1;
                              if ((r | 0) == (w << 17 >> 16 | 0)) {
                                  o = K;
                                  break a
                              }
                              o = K;
                              r = g << 16 >> 16 > 0 ? 32767 : -32768;
                              break a
                          }
                          case 3: {
                              q = g + 6 | 0;
                              Qa(b[g + 4 >> 1] | 0, b[u >> 1] | 0, mb);
                              g = b[N >> 1] | 0;
                              w = g << 16 >> 16;
                              r = w << 1;
                              if ((r | 0) == (w << 17 >> 16 | 0)) {
                                  o = K;
                                  break a
                              }
                              o = K;
                              r = g << 16 >> 16 > 0 ? 32767 : -32768;
                              break a
                          }
                          default: {
                              if (O) {
                                  q = g + 6 | 0;
                                  Ra(b[g + 4 >> 1] | 0, b[u >> 1] | 0, c[P >> 2] | 0, mb);
                                  g = b[N >> 1] | 0;
                                  w = g << 16 >> 16;
                                  r = w << 1;
                                  if ((r | 0) == (w << 17 >> 16 | 0)) {
                                      o = K;
                                      break a
                                  }
                                  o = K;
                                  r = g << 16 >> 16 > 0 ? 32767 : -32768;
                                  break a
                              }
                              if (!Q) {
                                  o = K;
                                  x = 44;
                                  break a
                              }
                              Sa(u, mb, Ta);
                              r = g + 16 | 0;
                              g = b[N >> 1] | 0;
                              w = g << 16 >> 16;
                              p = w << 1;
                              if ((p | 0) == (w << 17 >> 16 | 0)) {
                                  q = r;
                                  o = K;
                                  r = p;
                                  break a
                              }
                              q = r;
                              o = K;
                              r = g << 16 >> 16 > 0 ? 32767 : -32768;
                              break a
                          }
                      }
                  } else {
                      Za(r, 18, 143, q, eb, ib, Ta);
                      if (R ? q << 16 >> 16 == 0 | r << 16 >> 16 < 61 : 0) {
                          r = b[eb >> 1] | 0;
                          q = b[ib >> 1] | 0;
                      } else {
                          b[G >> 1] = b[eb >> 1] | 0;
                          r = b[E >> 1] | 0;
                          b[eb >> 1] = r;
                          b[ib >> 1] = 0;
                          q = 0;
                      }
                      se(c[J >> 2] | 0, r, q, 40, 0, Ta);
                      o = 0;
                      x = 44;
                  } while (0);
                  if ((x | 0) == 44) {
                      x = 0;
                      if (Ja) lb(T, b[h >> 1] | 0, xb, Ta); else b[xb >> 1] = $a(f, b[u >> 1] | 0, c[ja >> 2] | 0) | 0;
                      nb(T, La, b[U >> 1] | 0, xb, Ta);
                      Na(g + 4 | 0, mb, c[P >> 2] | 0);
                      r = g + 24 | 0;
                      g = b[xb >> 1] | 0;
                      w = g << 16 >> 16;
                      p = w << 1;
                      if ((p | 0) == (w << 17 >> 16 | 0)) {
                          q = r;
                          r = p;
                      } else {
                          q = r;
                          r = g << 16 >> 16 > 0 ? 32767 : -32768;
                      }
                  }
                  g = b[eb >> 1] | 0;
                  b:do if (g << 16 >> 16 < 40) {
                      m = r << 16 >> 16;
                      n = g;
                      r = g << 16 >> 16;
                      while (1) {
                          p = mb + (r << 1) | 0;
                          g = (Z(b[mb + (r - (n << 16 >> 16) << 1) >> 1] | 0, m) | 0) >> 15;
                          if ((g | 0) > 32767) {
                              c[Ta >> 2] = 1;
                              g = 32767;
                          }
                          w = g & 65535;
                          b[Ab >> 1] = w;
                          b[p >> 1] = Rd(b[p >> 1] | 0, w, Ta) | 0;
                          r = r + 1 | 0;
                          if ((r & 65535) << 16 >> 16 == 40) break b;
                          n = b[eb >> 1] | 0;
                      }
                  } while (0);
                  c:do if (o) {
                      o = (z & 65535 | 0) == 0;
                      if (o) {
                          g = q;
                          p = t;
                      } else {
                          g = q + 2 | 0;
                          p = b[q >> 1] | 0;
                      }
                      if (R) Xa(S, f, p, mb, v, xb, tb, Ha, Ta); else {
                          lb(T, b[h >> 1] | 0, xb, Ta);
                          jb(V, S, b[h >> 1] | 0, tb, Ta);
                      }
                      nb(T, La, b[U >> 1] | 0, xb, Ta);
                      kb(V, La, b[U >> 1] | 0, tb, Ta);
                      q = b[xb >> 1] | 0;
                      r = q << 16 >> 16 > 13017 ? 13017 : q;
                      if (o) x = 80; else w = p;
                  } else {
                      g = q + 2 | 0;
                      r = b[q >> 1] | 0;
                      switch (f | 0) {
                          case 1:
                          case 2:
                          case 3:
                          case 4:
                          case 6: {
                              if (R) Xa(S, f, r, mb, v, xb, tb, Ha, Ta); else {
                                  lb(T, b[h >> 1] | 0, xb, Ta);
                                  jb(V, S, b[h >> 1] | 0, tb, Ta);
                              }
                              nb(T, La, b[U >> 1] | 0, xb, Ta);
                              kb(V, La, b[U >> 1] | 0, tb, Ta);
                              q = b[xb >> 1] | 0;
                              r = q << 16 >> 16 > 13017 ? 13017 : q;
                              if (!Q) {
                                  p = t;
                                  x = 80;
                                  break c
                              }
                              if ((b[E >> 1] | 0) <= 45) {
                                  p = t;
                                  x = 80;
                                  break c
                              }
                              p = t;
                              r = r << 16 >> 16 >>> 2 & 65535;
                              x = 80;
                              break c
                          }
                          case 5: {
                              if (Ja) lb(T, b[h >> 1] | 0, xb, Ta); else b[xb >> 1] = $a(5, r, c[ja >> 2] | 0) | 0;
                              nb(T, La, b[U >> 1] | 0, xb, Ta);
                              if (R) _a(S, 5, b[g >> 1] | 0, mb, c[ia >> 2] | 0, tb, Ta); else jb(V, S, b[h >> 1] | 0, tb, Ta);
                              kb(V, La, b[U >> 1] | 0, tb, Ta);
                              r = b[xb >> 1] | 0;
                              g = q + 4 | 0;
                              q = r;
                              p = t;
                              r = r << 16 >> 16 > 13017 ? 13017 : r;
                              x = 80;
                              break c
                          }
                          default: {
                              if (R) _a(S, f, r, mb, c[ia >> 2] | 0, tb, Ta); else jb(V, S, b[h >> 1] | 0, tb, Ta);
                              kb(V, La, b[U >> 1] | 0, tb, Ta);
                              r = b[xb >> 1] | 0;
                              q = r;
                              p = t;
                              x = 80;
                              break c
                          }
                      }
                  } while (0);
                  if ((x | 0) == 80) {
                      x = 0;
                      b[N >> 1] = q << 16 >> 16 > 13017 ? 13017 : q;
                      w = p;
                  }
                  r = r << 16 >> 16;
                  r = (r << 17 >> 17 | 0) == (r | 0) ? r << 1 : r >>> 15 ^ 32767;
                  v = (r & 65535) << 16 >> 16 > 16384;
                  d:do if (v) {
                      u = r << 16 >> 16;
                      if (W) q = 0; else {
                          q = 0;
                          while (1) {
                              r = (Z(b[(c[J >> 2] | 0) + (q << 1) >> 1] | 0, u) | 0) >> 15;
                              if ((r | 0) > 32767) {
                                  c[Ta >> 2] = 1;
                                  r = 32767;
                              }
                              b[Ab >> 1] = r;
                              r = Z(b[xb >> 1] | 0, r << 16 >> 16) | 0;
                              if ((r | 0) == 1073741824) {
                                  c[Ta >> 2] = 1;
                                  r = 2147483647;
                              } else r = r << 1;
                              b[rb + (q << 1) >> 1] = Ce(r, Ta) | 0;
                              q = q + 1 | 0;
                              if ((q | 0) == 40) break d
                          }
                      }
                      do {
                          r = (Z(b[(c[J >> 2] | 0) + (q << 1) >> 1] | 0, u) | 0) >> 15;
                          if ((r | 0) > 32767) {
                              c[Ta >> 2] = 1;
                              r = 32767;
                          }
                          b[Ab >> 1] = r;
                          r = Z(b[xb >> 1] | 0, r << 16 >> 16) | 0;
                          if ((r | 0) != 1073741824) {
                              r = r << 1;
                              if ((r | 0) < 0) r = ~((r ^ -2) >> 1); else x = 88;
                          } else {
                              c[Ta >> 2] = 1;
                              r = 2147483647;
                              x = 88;
                          }
                          if ((x | 0) == 88) {
                              x = 0;
                              r = r >> 1;
                          }
                          b[rb + (q << 1) >> 1] = Ce(r, Ta) | 0;
                          q = q + 1 | 0;
                      } while ((q | 0) != 40)
                  } while (0);
                  if (R) {
                      b[la >> 1] = b[ka >> 1] | 0;
                      b[ka >> 1] = b[ma >> 1] | 0;
                      b[ma >> 1] = b[na >> 1] | 0;
                      b[na >> 1] = b[oa >> 1] | 0;
                      b[oa >> 1] = b[pa >> 1] | 0;
                      b[pa >> 1] = b[qa >> 1] | 0;
                      b[qa >> 1] = b[ra >> 1] | 0;
                      b[ra >> 1] = b[X >> 1] | 0;
                      b[X >> 1] = b[xb >> 1] | 0;
                  }
                  if ((Ja | (b[U >> 1] | 0) != 0 ? Y & (b[H >> 1] | 0) != 0 : 0) ? (bb = b[xb >> 1] | 0, bb << 16 >> 16 > 12288) : 0) {
                      x = (((bb << 16 >> 16) + 118784 | 0) >>> 1) + 12288 & 65535;
                      b[xb >> 1] = x << 16 >> 16 > 14745 ? 14745 : x;
                  }
                  qb(zb, Fa, s, yb, Ta);
                  r = Ma(_, f, b[tb >> 1] | 0, yb, $, La, b[U >> 1] | 0, l, b[aa >> 1] | 0, b[H >> 1] | 0, b[I >> 1] | 0, Ta) | 0;
                  switch (f | 0) {
                      case 0:
                      case 1:
                      case 2:
                      case 3:
                      case 6: {
                          p = b[xb >> 1] | 0;
                          u = 1;
                          break
                      }
                      default: {
                          r = b[tb >> 1] | 0;
                          p = b[xb >> 1] | 0;
                          if (ba) u = 1; else {
                              q = p << 16 >> 16;
                              if (p << 16 >> 16 < 0) q = ~((q ^ -2) >> 1); else q = q >>> 1;
                              p = q & 65535;
                              u = 2;
                          }
                      }
                  }
                  m = p << 16 >> 16;
                  s = u & 65535;
                  q = c[J >> 2] | 0;
                  t = 0;
                  do {
                      q = q + (t << 1) | 0;
                      b[pb + (t << 1) >> 1] = b[q >> 1] | 0;
                      q = Z(b[q >> 1] | 0, m) | 0;
                      if ((q | 0) == 1073741824) {
                          c[Ta >> 2] = 1;
                          n = 2147483647;
                      } else n = q << 1;
                      o = Z(b[tb >> 1] | 0, b[mb + (t << 1) >> 1] | 0) | 0;
                      if ((o | 0) != 1073741824) {
                          q = (o << 1) + n | 0;
                          if ((o ^ n | 0) > 0 & (q ^ n | 0) < 0) {
                              c[Ta >> 2] = 1;
                              q = (n >>> 31) + 2147483647 | 0;
                          }
                      } else {
                          c[Ta >> 2] = 1;
                          q = 2147483647;
                      }
                      x = q << s;
                      x = Ce((x >> s | 0) == (q | 0) ? x : q >> 31 ^ 2147483647, Ta) | 0;
                      q = c[J >> 2] | 0;
                      b[q + (t << 1) >> 1] = x;
                      t = t + 1 | 0;
                  } while ((t | 0) != 40);
                  vb(ca);
                  if ((Y ? (b[I >> 1] | 0) > 3 : 0) ? !((b[H >> 1] | 0) == 0 | D) : 0) ub(ca);
                  wb(ca, f, pb, r, b[xb >> 1] | 0, mb, p, u, Ha, Ta);
                  r = 0;
                  o = 0;
                  do {
                      q = b[pb + (o << 1) >> 1] | 0;
                      q = Z(q, q) | 0;
                      if ((q | 0) != 1073741824) {
                          p = (q << 1) + r | 0;
                          if ((q ^ r | 0) > 0 & (p ^ r | 0) < 0) {
                              c[Ta >> 2] = 1;
                              r = (r >>> 31) + 2147483647 | 0;
                          } else r = p;
                      } else {
                          c[Ta >> 2] = 1;
                          r = 2147483647;
                      }
                      o = o + 1 | 0;
                  } while ((o | 0) != 40);
                  if ((r | 0) < 0) r = ~((r ^ -2) >> 1); else r = r >> 1;
                  r = Fe(r, Ab, Ta) | 0;
                  p = ((b[Ab >> 1] | 0) >>> 1) + 15 | 0;
                  q = p & 65535;
                  p = p << 16 >> 16;
                  if (q << 16 >> 16 > 0) if (q << 16 >> 16 < 31) {
                      r = r >> p;
                      x = 135;
                  } else {
                      r = 0;
                      x = 137;
                  } else {
                      u = 0 - p << 16 >> 16;
                      x = r << u;
                      r = (x >> u | 0) == (r | 0) ? x : r >> 31 ^ 2147483647;
                      x = 135;
                  }
                  if ((x | 0) == 135) {
                      x = 0;
                      if ((r | 0) < 0) r = ~((r ^ -4) >> 2); else x = 137;
                  }
                  if ((x | 0) == 137) {
                      x = 0;
                      r = r >>> 2;
                  }
                  r = r & 65535;
                  do if (Y ? (db = b[I >> 1] | 0, db << 16 >> 16 > 5) : 0) if (b[H >> 1] | 0) if ((b[h >> 1] | 0) < 4) {
                      if (da) {
                          if (!(Ja | (b[aa >> 1] | 0) != 0)) x = 145;
                      } else if (!Ja) x = 145;
                      if ((x | 0) == 145 ? (0, (b[U >> 1] | 0) == 0) : 0) {
                          x = 147;
                          break
                      }
                      ob(pb, r, ea, db, b[U >> 1] | 0, za, Ta) | 0;
                      x = 147;
                  } else x = 147; else x = 151; else x = 147; while (0);
                  do if ((x | 0) == 147) {
                      x = 0;
                      if (b[H >> 1] | 0) {
                          if (!Ja ? (b[U >> 1] | 0) == 0 : 0) {
                              x = 151;
                              break
                          }
                          if ((b[h >> 1] | 0) >= 4) x = 151;
                      } else x = 151;
                  } while (0);
                  if ((x | 0) == 151) {
                      x = 0;
                      b[ea >> 1] = b[sa >> 1] | 0;
                      b[sa >> 1] = b[ta >> 1] | 0;
                      b[ta >> 1] = b[ua >> 1] | 0;
                      b[ua >> 1] = b[va >> 1] | 0;
                      b[va >> 1] = b[wa >> 1] | 0;
                      b[wa >> 1] = b[xa >> 1] | 0;
                      b[xa >> 1] = b[ya >> 1] | 0;
                      b[ya >> 1] = b[fa >> 1] | 0;
                      b[fa >> 1] = r;
                  }
                  if (v) {
                      r = 0;
                      do {
                          v = rb + (r << 1) | 0;
                          b[v >> 1] = Rd(b[v >> 1] | 0, b[pb + (r << 1) >> 1] | 0, Ta) | 0;
                          r = r + 1 | 0;
                      } while ((r | 0) != 40);
                      Da(pb, rb, 40, Ta);
                      c[Ta >> 2] = 0;
                      He(k, rb, j + (y << 1) | 0, 40, ga, 0);
                  } else {
                      c[Ta >> 2] = 0;
                      He(k, pb, j + (y << 1) | 0, 40, ga, 0);
                  }
                  if (!(c[Ta >> 2] | 0)) Pe(ga | 0, j + (y + 30 << 1) | 0, 20) | 0; else {
                      p = 193;
                      while (1) {
                          q = d + (p << 1) | 0;
                          v = b[q >> 1] | 0;
                          r = v << 16 >> 16;
                          if (v << 16 >> 16 < 0) r = ~((r ^ -4) >> 2); else r = r >>> 2;
                          b[q >> 1] = r;
                          if ((p | 0) > 0) p = p + -1 | 0; else {
                              p = 39;
                              break
                          }
                      }
                      while (1) {
                          q = pb + (p << 1) | 0;
                          v = b[q >> 1] | 0;
                          r = v << 16 >> 16;
                          if (v << 16 >> 16 < 0) r = ~((r ^ -4) >> 2); else r = r >>> 2;
                          b[q >> 1] = r;
                          if ((p | 0) > 0) p = p + -1 | 0; else break
                      }
                      He(k, pb, j + (y << 1) | 0, 40, ga, 1);
                  }
                  Pe(d | 0, ha | 0, 308) | 0;
                  b[E >> 1] = b[eb >> 1] | 0;
                  r = y + 40 | 0;
                  s = r & 65535;
                  if (s << 16 >> 16 >= 160) break; else {
                      y = r << 16 >> 16;
                      k = k + 22 | 0;
                      t = w;
                  }
              }
              b[H >> 1] = Ka(d + 484 | 0, d + 466 | 0, j, I, Ta) | 0;
              gb(Ua, Fa, j, Ta);
              b[U >> 1] = La;
              b[aa >> 1] = l;
              sb(d + 626 | 0, Fa, Ta);
              Ab = Ea;
              c[Ab >> 2] = Wa;
              i = Bb;
              return
          }

          function Xa(a, d, f, g, h, j, k, l, m) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              var n = 0, o = 0, p = 0, q = 0, r = 0;
              r = i;
              i = i + 16 | 0;
              p = r + 2 | 0;
              q = r;
              f = f << 16 >> 16;
              f = (f << 18 >> 18 | 0) == (f | 0) ? f << 2 : f >>> 15 ^ 32767;
              switch (d | 0) {
                  case 3:
                  case 4:
                  case 6: {
                      o = f << 16 >> 16;
                      f = c[l + 84 >> 2] | 0;
                      b[j >> 1] = b[f + (o << 1) >> 1] | 0;
                      l = b[f + (o + 1 << 1) >> 1] | 0;
                      n = b[f + (o + 3 << 1) >> 1] | 0;
                      j = b[f + (o + 2 << 1) >> 1] | 0;
                      break
                  }
                  case 0: {
                      l = (f & 65535) + (h << 16 >> 16 << 1 ^ 2) | 0;
                      l = (l & 65535) << 16 >> 16 > 1022 ? 1022 : l << 16 >> 16;
                      b[j >> 1] = b[782 + (l << 1) >> 1] | 0;
                      j = b[782 + (l + 1 << 1) >> 1] | 0;
                      de(j << 16 >> 16, q, p, m);
                      b[q >> 1] = (e[q >> 1] | 0) + 65524;
                      l = Ee(b[p >> 1] | 0, 5, m) | 0;
                      o = b[q >> 1] | 0;
                      o = Rd(l, ((o << 26 >> 26 | 0) == (o | 0) ? o << 10 : o >>> 15 ^ 32767) & 65535, m) | 0;
                      l = b[p >> 1] | 0;
                      f = b[q >> 1] | 0;
                      if ((f * 24660 | 0) == 1073741824) {
                          c[m >> 2] = 1;
                          h = 2147483647;
                      } else h = f * 49320 | 0;
                      n = (l << 16 >> 16) * 24660 >> 15;
                      f = h + (n << 1) | 0;
                      if ((h ^ n | 0) > 0 & (f ^ h | 0) < 0) {
                          c[m >> 2] = 1;
                          f = (h >>> 31) + 2147483647 | 0;
                      }
                      n = f << 13;
                      l = j;
                      n = Ce((n >> 13 | 0) == (f | 0) ? n : f >> 31 ^ 2147483647, m) | 0;
                      j = o;
                      break
                  }
                  default: {
                      o = f << 16 >> 16;
                      f = c[l + 80 >> 2] | 0;
                      b[j >> 1] = b[f + (o << 1) >> 1] | 0;
                      l = b[f + (o + 1 << 1) >> 1] | 0;
                      n = b[f + (o + 3 << 1) >> 1] | 0;
                      j = b[f + (o + 2 << 1) >> 1] | 0;
                  }
              }
              Vd(a, d, g, q, p, 0, 0, m);
              h = Z((re(14, b[p >> 1] | 0, m) | 0) << 16 >> 16, l << 16 >> 16) | 0;
              if ((h | 0) == 1073741824) {
                  c[m >> 2] = 1;
                  f = 2147483647;
              } else f = h << 1;
              l = 10 - (e[q >> 1] | 0) | 0;
              h = l & 65535;
              l = l << 16 >> 16;
              if (h << 16 >> 16 > 0) {
                  q = h << 16 >> 16 < 31 ? f >> l : 0;
                  q = q >>> 16;
                  q = q & 65535;
                  b[k >> 1] = q;
                  Wd(a, j, n);
                  i = r;
                  return
              } else {
                  m = 0 - l << 16 >> 16;
                  q = f << m;
                  q = (q >> m | 0) == (f | 0) ? q : f >> 31 ^ 2147483647;
                  q = q >>> 16;
                  q = q & 65535;
                  b[k >> 1] = q;
                  Wd(a, j, n);
                  i = r;
                  return
              }
          }

          function Ya(a, d, e, f, g, h, i, j, k) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              j = j | 0;
              k = k | 0;
              if (!(f << 16 >> 16)) {
                  j = a << 16 >> 16;
                  if (a << 16 >> 16 >= 197) {
                      b[h >> 1] = j + 65424;
                      b[i >> 1] = 0;
                      return
                  }
                  g = ((j << 16) + 131072 >> 16) * 10923 >> 15;
                  if ((g | 0) > 32767) {
                      c[k >> 2] = 1;
                      g = 32767;
                  }
                  a = (g & 65535) + 19 | 0;
                  b[h >> 1] = a;
                  b[i >> 1] = j + 58 - ((a * 196608 | 0) >>> 16);
                  return
              }
              if (!(j << 16 >> 16)) {
                  k = a << 16 >> 16 << 16;
                  a = ((k + 131072 >> 16) * 21846 | 0) + -65536 >> 16;
                  b[h >> 1] = a + (d & 65535);
                  b[i >> 1] = ((k + -131072 | 0) >>> 16) - ((a * 196608 | 0) >>> 16);
                  return
              }
              if ((Ge(g, d, k) | 0) << 16 >> 16 > 5) g = (d & 65535) + 5 & 65535;
              j = e << 16 >> 16;
              j = (j - (g & 65535) & 65535) << 16 >> 16 > 4 ? j + 65532 & 65535 : g;
              g = a << 16 >> 16;
              if (a << 16 >> 16 < 4) {
                  b[h >> 1] = ((((j & 65535) << 16) + -327680 | 0) >>> 16) + g;
                  b[i >> 1] = 0;
                  return
              }
              g = g << 16;
              if (a << 16 >> 16 < 12) {
                  k = (((g + -327680 >> 16) * 10923 | 0) >>> 15 << 16) + -65536 | 0;
                  a = k >> 16;
                  b[h >> 1] = (j & 65535) + a;
                  b[i >> 1] = ((g + -589824 | 0) >>> 16) - (k >>> 15) - a;
                  return
              } else {
                  b[h >> 1] = ((g + -786432 + ((j & 65535) << 16) | 0) >>> 16) + 1;
                  b[i >> 1] = 0;
                  return
              }
          }

          function Za(a, c, d, f, g, h, i) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              if (f << 16 >> 16) {
                  i = (e[g >> 1] | 0) + 65531 | 0;
                  i = (i << 16 >> 16 | 0) < (c << 16 >> 16 | 0) ? c : i & 65535;
                  d = d << 16 >> 16;
                  c = a << 16 >> 16 << 16;
                  a = ((c + 327680 >> 16) * 10924 | 0) + -65536 >> 16;
                  b[g >> 1] = (((((i & 65535) << 16) + 589824 >> 16 | 0) > (d | 0) ? d + 65527 & 65535 : i) & 65535) + a;
                  b[h >> 1] = ((c + -196608 | 0) >>> 16) - ((a * 393216 | 0) >>> 16);
                  return
              }
              f = a << 16 >> 16;
              if (a << 16 >> 16 < 463) {
                  a = ((((f << 16) + 327680 >> 16) * 10924 | 0) >>> 16) + 17 | 0;
                  b[g >> 1] = a;
                  b[h >> 1] = f + 105 - ((a * 393216 | 0) >>> 16);
                  return
              } else {
                  b[g >> 1] = f + 65168;
                  b[h >> 1] = 0;
                  return
              }
          }

          function _a(a, d, e, f, g, h, j) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              var k = 0, l = 0, m = 0, n = 0;
              n = i;
              i = i + 16 | 0;
              l = n + 6 | 0;
              k = n + 4 | 0;
              Vd(a, d, f, l, k, n + 2 | 0, n, j);
              m = (e & 31) * 3 | 0;
              f = g + (m << 1) | 0;
              if (!((Ge(d & 65535, 7, j) | 0) << 16 >> 16)) {
                  l = re(b[l >> 1] | 0, b[k >> 1] | 0, j) | 0;
                  k = l << 16 >> 16;
                  k = (Z(((l << 20 >> 20 | 0) == (k | 0) ? l << 4 : k >>> 15 ^ 32767) << 16 >> 16, b[f >> 1] | 0) | 0) >> 15;
                  if ((k | 0) > 32767) {
                      c[j >> 2] = 1;
                      k = 32767;
                  }
                  f = k << 16;
                  e = f >> 16;
                  if ((k << 17 >> 17 | 0) == (e | 0)) k = f >> 15; else k = e >>> 15 ^ 32767;
              } else {
                  e = re(14, b[k >> 1] | 0, j) | 0;
                  e = Z(e << 16 >> 16, b[f >> 1] | 0) | 0;
                  if ((e | 0) == 1073741824) {
                      c[j >> 2] = 1;
                      f = 2147483647;
                  } else f = e << 1;
                  e = Ge(9, b[l >> 1] | 0, j) | 0;
                  k = e << 16 >> 16;
                  if (e << 16 >> 16 > 0) k = e << 16 >> 16 < 31 ? f >> k : 0; else {
                      j = 0 - k << 16 >> 16;
                      k = f << j;
                      k = (k >> j | 0) == (f | 0) ? k : f >> 31 ^ 2147483647;
                  }
                  k = k >>> 16;
              }
              b[h >> 1] = k;
              Wd(a, b[g + (m + 1 << 1) >> 1] | 0, b[g + (m + 2 << 1) >> 1] | 0);
              i = n;
              return
          }

          function $a(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              c = b[d + (c << 16 >> 16 << 1) >> 1] | 0;
              if ((a | 0) != 7) {
                  a = c;
                  return a | 0
              }
              a = c & 65532;
              return a | 0
          }

          function ab(d, e, f, g, h, j, k) {
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0;
              v = i;
              i = i + 48 | 0;
              r = v + 20 | 0;
              u = v;
              t = c[h + 44 >> 2] | 0;
              s = c[h + 64 >> 2] | 0;
              l = c[h + 4 >> 2] | 0;
              q = c[h + 12 >> 2] | 0;
              n = c[h + 20 >> 2] | 0;
              m = c[h + 56 >> 2] | 0;
              if (!(f << 16 >> 16)) {
                  o = e >>> 0 < 2;
                  if (o) {
                      f = 765;
                      p = 508;
                      n = c[h + 52 >> 2] | 0;
                  } else {
                      h = (e | 0) == 5;
                      f = h ? 1533 : 765;
                      p = 2044;
                      l = h ? m : l;
                  }
                  m = b[g >> 1] | 0;
                  f = ((m * 196608 >> 16 | 0) > (f & 65535 | 0) ? f : m * 3 & 65535) << 16 >> 16;
                  m = b[l + (f << 1) >> 1] | 0;
                  b[r >> 1] = m;
                  b[r + 2 >> 1] = b[l + (f + 1 << 1) >> 1] | 0;
                  b[r + 4 >> 1] = b[l + (f + 2 << 1) >> 1] | 0;
                  f = b[g + 2 >> 1] | 0;
                  if (o) f = f << 16 >> 16 << 1 & 65535;
                  o = (f << 16 >> 16) * 196608 | 0;
                  o = (o | 0) > 100466688 ? 1533 : o >> 16;
                  b[r + 6 >> 1] = b[q + (o << 1) >> 1] | 0;
                  b[r + 8 >> 1] = b[q + (o + 1 << 1) >> 1] | 0;
                  b[r + 10 >> 1] = b[q + (o + 2 << 1) >> 1] | 0;
                  g = b[g + 4 >> 1] | 0;
                  g = ((g << 18 >> 16 | 0) > (p & 65535 | 0) ? p : g << 2 & 65535) << 16 >> 16;
                  b[r + 12 >> 1] = b[n + (g << 1) >> 1] | 0;
                  b[r + 14 >> 1] = b[n + ((g | 1) << 1) >> 1] | 0;
                  b[r + 16 >> 1] = b[n + ((g | 2) << 1) >> 1] | 0;
                  b[r + 18 >> 1] = b[n + ((g | 3) << 1) >> 1] | 0;
                  if ((e | 0) == 8) {
                      f = 0;
                      while (1) {
                          s = d + (f << 1) | 0;
                          b[u + (f << 1) >> 1] = Rd(m, Rd(b[t + (f << 1) >> 1] | 0, b[s >> 1] | 0, k) | 0, k) | 0;
                          b[s >> 1] = m;
                          f = f + 1 | 0;
                          if ((f | 0) == 10) break;
                          m = b[r + (f << 1) >> 1] | 0;
                      }
                      Ae(u, 205, 10, k);
                      l = d + 20 | 0;
                      m = u;
                      f = l + 20 | 0;
                      do {
                          a[l >> 0] = a[m >> 0] | 0;
                          l = l + 1 | 0;
                          m = m + 1 | 0;
                      } while ((l | 0) < (f | 0));
                      me(u, j, 10, k);
                      i = v;
                      return
                  } else l = 0;
                  do {
                      m = d + (l << 1) | 0;
                      f = (Z(b[s + (l << 1) >> 1] | 0, b[m >> 1] | 0) | 0) >> 15;
                      if ((f | 0) > 32767) {
                          c[k >> 2] = 1;
                          f = 32767;
                      }
                      g = Rd(b[t + (l << 1) >> 1] | 0, f & 65535, k) | 0;
                      e = b[r + (l << 1) >> 1] | 0;
                      b[u + (l << 1) >> 1] = Rd(e, g, k) | 0;
                      b[m >> 1] = e;
                      l = l + 1 | 0;
                  } while ((l | 0) != 10);
                  Ae(u, 205, 10, k);
                  l = d + 20 | 0;
                  m = u;
                  f = l + 20 | 0;
                  do {
                      a[l >> 0] = a[m >> 0] | 0;
                      l = l + 1 | 0;
                      m = m + 1 | 0;
                  } while ((l | 0) < (f | 0));
                  me(u, j, 10, k);
                  i = v;
                  return
              } else {
                  l = 0;
                  do {
                      f = (b[d + 20 + (l << 1) >> 1] | 0) * 29491 >> 15;
                      if ((f | 0) > 32767) {
                          c[k >> 2] = 1;
                          f = 32767;
                      }
                      m = (b[t + (l << 1) >> 1] | 0) * 3277 >> 15;
                      if ((m | 0) > 32767) {
                          c[k >> 2] = 1;
                          m = 32767;
                      }
                      b[u + (l << 1) >> 1] = Rd(m & 65535, f & 65535, k) | 0;
                      l = l + 1 | 0;
                  } while ((l | 0) != 10);
                  if ((e | 0) == 8) {
                      l = 0;
                      do {
                          s = d + (l << 1) | 0;
                          r = Rd(b[t + (l << 1) >> 1] | 0, b[s >> 1] | 0, k) | 0;
                          b[s >> 1] = Ge(b[u + (l << 1) >> 1] | 0, r, k) | 0;
                          l = l + 1 | 0;
                      } while ((l | 0) != 10);
                      Ae(u, 205, 10, k);
                      l = d + 20 | 0;
                      m = u;
                      f = l + 20 | 0;
                      do {
                          a[l >> 0] = a[m >> 0] | 0;
                          l = l + 1 | 0;
                          m = m + 1 | 0;
                      } while ((l | 0) < (f | 0));
                      me(u, j, 10, k);
                      i = v;
                      return
                  } else l = 0;
                  do {
                      m = d + (l << 1) | 0;
                      f = (Z(b[s + (l << 1) >> 1] | 0, b[m >> 1] | 0) | 0) >> 15;
                      if ((f | 0) > 32767) {
                          c[k >> 2] = 1;
                          f = 32767;
                      }
                      r = Rd(b[t + (l << 1) >> 1] | 0, f & 65535, k) | 0;
                      b[m >> 1] = Ge(b[u + (l << 1) >> 1] | 0, r, k) | 0;
                      l = l + 1 | 0;
                  } while ((l | 0) != 10);
                  Ae(u, 205, 10, k);
                  l = d + 20 | 0;
                  m = u;
                  f = l + 20 | 0;
                  do {
                      a[l >> 0] = a[m >> 0] | 0;
                      l = l + 1 | 0;
                      m = m + 1 | 0;
                  } while ((l | 0) < (f | 0));
                  me(u, j, 10, k);
                  i = v;
                  return
              }
          }

          function bb(a, b, c) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              Pe(a | 0, c + ((b << 16 >> 16) * 10 << 1) | 0, 20) | 0;
              return
          }

          function cb(d, e, f, g, h, j, k) {
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0;
              v = i;
              i = i + 80 | 0;
              q = v + 60 | 0;
              r = v + 40 | 0;
              t = v + 20 | 0;
              u = v;
              s = c[g + 48 >> 2] | 0;
              n = c[g + 24 >> 2] | 0;
              o = c[g + 28 >> 2] | 0;
              p = c[g + 32 >> 2] | 0;
              if (e << 16 >> 16) {
                  l = 0;
                  do {
                      q = s + (l << 1) | 0;
                      f = Rd(((b[q >> 1] | 0) * 1639 | 0) >>> 15 & 65535, ((b[d + 20 + (l << 1) >> 1] | 0) * 31128 | 0) >>> 15 & 65535, k) | 0;
                      b[t + (l << 1) >> 1] = f;
                      b[u + (l << 1) >> 1] = f;
                      r = d + (l << 1) | 0;
                      b[r >> 1] = Ge(f, Rd(b[q >> 1] | 0, ((b[r >> 1] | 0) * 21299 | 0) >>> 15 & 65535, k) | 0, k) | 0;
                      l = l + 1 | 0;
                  } while ((l | 0) != 10);
                  Ae(t, 205, 10, k);
                  Ae(u, 205, 10, k);
                  l = d + 20 | 0;
                  g = u;
                  e = l + 20 | 0;
                  do {
                      a[l >> 0] = a[g >> 0] | 0;
                      l = l + 1 | 0;
                      g = g + 1 | 0;
                  } while ((l | 0) < (e | 0));
                  me(t, h, 10, k);
                  me(u, j, 10, k);
                  i = v;
                  return
              }
              e = c[g + 16 >> 2] | 0;
              g = c[g + 8 >> 2] | 0;
              m = b[f >> 1] | 0;
              m = ((m << 18 >> 18 | 0) == (m | 0) ? m << 2 : m >>> 15 ^ 32767) << 16 >> 16;
              b[q >> 1] = b[g + (m << 1) >> 1] | 0;
              b[q + 2 >> 1] = b[g + (m + 1 << 1) >> 1] | 0;
              b[r >> 1] = b[g + (m + 2 << 1) >> 1] | 0;
              b[r + 2 >> 1] = b[g + (m + 3 << 1) >> 1] | 0;
              m = b[f + 2 >> 1] | 0;
              m = ((m << 18 >> 18 | 0) == (m | 0) ? m << 2 : m >>> 15 ^ 32767) << 16 >> 16;
              b[q + 4 >> 1] = b[e + (m << 1) >> 1] | 0;
              b[q + 6 >> 1] = b[e + (m + 1 << 1) >> 1] | 0;
              b[r + 4 >> 1] = b[e + (m + 2 << 1) >> 1] | 0;
              b[r + 6 >> 1] = b[e + (m + 3 << 1) >> 1] | 0;
              m = b[f + 4 >> 1] | 0;
              g = m << 16 >> 16;
              if (m << 16 >> 16 < 0) e = ~((g ^ -2) >> 1); else e = g >>> 1;
              m = e << 16 >> 16;
              m = ((e << 18 >> 18 | 0) == (m | 0) ? e << 2 : m >>> 15 ^ 32767) << 16 >> 16;
              l = n + (m + 1 << 1) | 0;
              e = b[n + (m << 1) >> 1] | 0;
              if (!(g & 1)) {
                  b[q + 8 >> 1] = e;
                  b[q + 10 >> 1] = b[l >> 1] | 0;
                  b[r + 8 >> 1] = b[n + (m + 2 << 1) >> 1] | 0;
                  b[r + 10 >> 1] = b[n + (m + 3 << 1) >> 1] | 0;
              } else {
                  if (e << 16 >> 16 == -32768) e = 32767; else e = 0 - (e & 65535) & 65535;
                  b[q + 8 >> 1] = e;
                  e = b[l >> 1] | 0;
                  if (e << 16 >> 16 == -32768) e = 32767; else e = 0 - (e & 65535) & 65535;
                  b[q + 10 >> 1] = e;
                  e = b[n + (m + 2 << 1) >> 1] | 0;
                  if (e << 16 >> 16 == -32768) e = 32767; else e = 0 - (e & 65535) & 65535;
                  b[r + 8 >> 1] = e;
                  e = b[n + (m + 3 << 1) >> 1] | 0;
                  if (e << 16 >> 16 == -32768) e = 32767; else e = 0 - (e & 65535) & 65535;
                  b[r + 10 >> 1] = e;
              }
              l = b[f + 6 >> 1] | 0;
              l = ((l << 18 >> 18 | 0) == (l | 0) ? l << 2 : l >>> 15 ^ 32767) << 16 >> 16;
              b[q + 12 >> 1] = b[o + (l << 1) >> 1] | 0;
              b[q + 14 >> 1] = b[o + (l + 1 << 1) >> 1] | 0;
              b[r + 12 >> 1] = b[o + (l + 2 << 1) >> 1] | 0;
              b[r + 14 >> 1] = b[o + (l + 3 << 1) >> 1] | 0;
              l = b[f + 8 >> 1] | 0;
              l = ((l << 18 >> 18 | 0) == (l | 0) ? l << 2 : l >>> 15 ^ 32767) << 16 >> 16;
              b[q + 16 >> 1] = b[p + (l << 1) >> 1] | 0;
              b[q + 18 >> 1] = b[p + (l + 1 << 1) >> 1] | 0;
              b[r + 16 >> 1] = b[p + (l + 2 << 1) >> 1] | 0;
              b[r + 18 >> 1] = b[p + (l + 3 << 1) >> 1] | 0;
              l = 0;
              do {
                  g = d + (l << 1) | 0;
                  e = (b[g >> 1] | 0) * 21299 >> 15;
                  if ((e | 0) > 32767) {
                      c[k >> 2] = 1;
                      e = 32767;
                  }
                  p = Rd(b[s + (l << 1) >> 1] | 0, e & 65535, k) | 0;
                  b[t + (l << 1) >> 1] = Rd(b[q + (l << 1) >> 1] | 0, p, k) | 0;
                  f = b[r + (l << 1) >> 1] | 0;
                  b[u + (l << 1) >> 1] = Rd(f, p, k) | 0;
                  b[g >> 1] = f;
                  l = l + 1 | 0;
              } while ((l | 0) != 10);
              Ae(t, 205, 10, k);
              Ae(u, 205, 10, k);
              l = d + 20 | 0;
              g = u;
              e = l + 20 | 0;
              do {
                  a[l >> 0] = a[g >> 0] | 0;
                  l = l + 1 | 0;
                  g = g + 1 | 0;
              } while ((l | 0) < (e | 0));
              me(t, h, 10, k);
              me(u, j, 10, k);
              i = v;
              return
          }

          function db(a, c) {
              a = a | 0;
              c = c | 0;
              var d = 0, e = 0;
              if (!a) {
                  e = -1;
                  return e | 0
              }
              d = a;
              e = d + 20 | 0;
              do {
                  b[d >> 1] = 0;
                  d = d + 2 | 0;
              } while ((d | 0) < (e | 0));
              Pe(a + 20 | 0, c | 0, 20) | 0;
              e = 0;
              return e | 0
          }

          function eb(d) {
              d = d | 0;
              var e = 0, f = 0, g = 0, h = 0, i = 0;
              if (!d) {
                  i = -1;
                  return i | 0
              }
              b[d >> 1] = 0;
              b[d + 2 >> 1] = 8192;
              e = d + 4 | 0;
              b[e >> 1] = 3500;
              b[d + 6 >> 1] = 3500;
              c[d + 8 >> 2] = 1887529304;
              b[d + 12 >> 1] = 3e4;
              b[d + 14 >> 1] = 26e3;
              b[d + 16 >> 1] = 21e3;
              b[d + 18 >> 1] = 15e3;
              b[d + 20 >> 1] = 8e3;
              b[d + 22 >> 1] = 0;
              b[d + 24 >> 1] = -8e3;
              b[d + 26 >> 1] = -15e3;
              b[d + 28 >> 1] = -21e3;
              b[d + 30 >> 1] = -26e3;
              b[d + 32 >> 1] = 3e4;
              b[d + 34 >> 1] = 26e3;
              b[d + 36 >> 1] = 21e3;
              b[d + 38 >> 1] = 15e3;
              b[d + 40 >> 1] = 8e3;
              b[d + 42 >> 1] = 0;
              b[d + 44 >> 1] = -8e3;
              b[d + 46 >> 1] = -15e3;
              b[d + 48 >> 1] = -21e3;
              b[d + 50 >> 1] = -26e3;
              b[d + 212 >> 1] = 0;
              b[d + 374 >> 1] = 0;
              b[d + 392 >> 1] = 0;
              f = d + 52 | 0;
              b[f >> 1] = 1384;
              b[d + 54 >> 1] = 2077;
              b[d + 56 >> 1] = 3420;
              b[d + 58 >> 1] = 5108;
              b[d + 60 >> 1] = 6742;
              b[d + 62 >> 1] = 8122;
              b[d + 64 >> 1] = 9863;
              b[d + 66 >> 1] = 11092;
              b[d + 68 >> 1] = 12714;
              b[d + 70 >> 1] = 13701;
              g = d + 72 | 0;
              h = f;
              i = g + 20 | 0;
              do {
                  a[g >> 0] = a[h >> 0] | 0;
                  g = g + 1 | 0;
                  h = h + 1 | 0;
              } while ((g | 0) < (i | 0));
              g = d + 92 | 0;
              h = f;
              i = g + 20 | 0;
              do {
                  a[g >> 0] = a[h >> 0] | 0;
                  g = g + 1 | 0;
                  h = h + 1 | 0;
              } while ((g | 0) < (i | 0));
              g = d + 112 | 0;
              h = f;
              i = g + 20 | 0;
              do {
                  a[g >> 0] = a[h >> 0] | 0;
                  g = g + 1 | 0;
                  h = h + 1 | 0;
              } while ((g | 0) < (i | 0));
              g = d + 132 | 0;
              h = f;
              i = g + 20 | 0;
              do {
                  a[g >> 0] = a[h >> 0] | 0;
                  g = g + 1 | 0;
                  h = h + 1 | 0;
              } while ((g | 0) < (i | 0));
              g = d + 152 | 0;
              h = f;
              i = g + 20 | 0;
              do {
                  a[g >> 0] = a[h >> 0] | 0;
                  g = g + 1 | 0;
                  h = h + 1 | 0;
              } while ((g | 0) < (i | 0));
              g = d + 172 | 0;
              h = f;
              i = g + 20 | 0;
              do {
                  a[g >> 0] = a[h >> 0] | 0;
                  g = g + 1 | 0;
                  h = h + 1 | 0;
              } while ((g | 0) < (i | 0));
              g = d + 192 | 0;
              h = f;
              i = g + 20 | 0;
              do {
                  a[g >> 0] = a[h >> 0] | 0;
                  g = g + 1 | 0;
                  h = h + 1 | 0;
              } while ((g | 0) < (i | 0));
              Qe(d + 214 | 0, 0, 160) | 0;
              b[d + 376 >> 1] = 3500;
              b[d + 378 >> 1] = 3500;
              i = b[e >> 1] | 0;
              b[d + 380 >> 1] = i;
              b[d + 382 >> 1] = i;
              b[d + 384 >> 1] = i;
              b[d + 386 >> 1] = i;
              b[d + 388 >> 1] = i;
              b[d + 390 >> 1] = i;
              b[d + 394 >> 1] = 0;
              b[d + 396 >> 1] = 7;
              b[d + 398 >> 1] = 32767;
              b[d + 400 >> 1] = 0;
              b[d + 402 >> 1] = 0;
              b[d + 404 >> 1] = 0;
              c[d + 408 >> 2] = 1;
              b[d + 412 >> 1] = 0;
              i = 0;
              return i | 0
          }

          function fb(d, f, g, h, j, k, l, m, n, o, p, q) {
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              q = q | 0;
              var r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0,
                  G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0,
                  V = 0, W = 0, X = 0, Y = 0, _ = 0;
              _ = i;
              i = i + 304 | 0;
              Q = _ + 192 | 0;
              N = _ + 168 | 0;
              S = _ + 148 | 0;
              W = _ + 216 | 0;
              T = _ + 146 | 0;
              U = _ + 144 | 0;
              O = _ + 124 | 0;
              P = _ + 104 | 0;
              R = _ + 84 | 0;
              V = _ + 60 | 0;
              L = _ + 40 | 0;
              K = _;
              Y = d + 404 | 0;
              X = d + 400 | 0;
              if ((b[Y >> 1] | 0) != 0 ? (b[X >> 1] | 0) != 0 : 0) {
                  J = d + 394 | 0;
                  b[J >> 1] = b[636 + (l << 1) >> 1] | 0;
                  z = b[d + 212 >> 1] | 0;
                  y = z + 10 | 0;
                  Pe(d + 52 + (((y & 65535 | 0) == 80 ? 0 : y << 16 >> 16) << 1) | 0, d + 52 + (z << 1) | 0, 20) | 0;
                  z = b[d + 392 >> 1] | 0;
                  y = z + 1 | 0;
                  b[d + 376 + (((y & 65535 | 0) == 8 ? 0 : y << 16 >> 16) << 1) >> 1] = b[d + 376 + (z << 1) >> 1] | 0;
                  y = d + 4 | 0;
                  b[y >> 1] = 0;
                  z = K + 36 | 0;
                  A = K + 32 | 0;
                  B = K + 28 | 0;
                  C = K + 24 | 0;
                  D = K + 20 | 0;
                  E = K + 16 | 0;
                  F = K + 12 | 0;
                  G = K + 8 | 0;
                  H = K + 4 | 0;
                  I = d + 52 | 0;
                  t = K;
                  M = t + 40 | 0;
                  do {
                      c[t >> 2] = 0;
                      t = t + 4 | 0;
                  } while ((t | 0) < (M | 0));
                  s = 0;
                  r = 7;
                  while (1) {
                      M = b[d + 376 + (r << 1) >> 1] | 0;
                      x = M << 16 >> 16;
                      if (M << 16 >> 16 < 0) x = ~((x ^ -8) >> 3); else x = x >>> 3;
                      s = Rd(s, x & 65535, q) | 0;
                      b[y >> 1] = s;
                      v = r * 10 | 0;
                      t = 9;
                      while (1) {
                          u = K + (t << 2) | 0;
                          w = c[u >> 2] | 0;
                          M = b[d + 52 + (t + v << 1) >> 1] | 0;
                          x = M + w | 0;
                          if ((M ^ w | 0) > -1 & (x ^ w | 0) < 0) {
                              c[q >> 2] = 1;
                              x = (w >>> 31) + 2147483647 | 0;
                          }
                          c[u >> 2] = x;
                          if ((t | 0) > 0) t = t + -1 | 0; else break
                      }
                      if ((r | 0) <= 0) break; else r = r + -1 | 0;
                  }
                  b[L + 18 >> 1] = (c[z >> 2] | 0) >>> 3;
                  b[L + 16 >> 1] = (c[A >> 2] | 0) >>> 3;
                  b[L + 14 >> 1] = (c[B >> 2] | 0) >>> 3;
                  b[L + 12 >> 1] = (c[C >> 2] | 0) >>> 3;
                  b[L + 10 >> 1] = (c[D >> 2] | 0) >>> 3;
                  b[L + 8 >> 1] = (c[E >> 2] | 0) >>> 3;
                  b[L + 6 >> 1] = (c[F >> 2] | 0) >>> 3;
                  b[L + 4 >> 1] = (c[G >> 2] | 0) >>> 3;
                  b[L + 2 >> 1] = (c[H >> 2] | 0) >>> 3;
                  b[L >> 1] = (c[K >> 2] | 0) >>> 3;
                  me(L, d + 12 | 0, 10, q);
                  b[y >> 1] = Ge(b[y >> 1] | 0, b[J >> 1] | 0, q) | 0;
                  Oe(d + 214 | 0, I | 0, 160) | 0;
                  L = 9;
                  while (1) {
                      M = b[d + 214 + (L + 70 << 1) >> 1] | 0;
                      u = M << 16 >> 16;
                      K = b[d + 214 + (L + 60 << 1) >> 1] | 0;
                      t = (K << 16 >> 16) + u | 0;
                      if ((K ^ M) << 16 >> 16 > -1 & (t ^ u | 0) < 0) {
                          c[q >> 2] = 1;
                          t = (u >>> 31) + 2147483647 | 0;
                      }
                      M = b[d + 214 + (L + 50 << 1) >> 1] | 0;
                      u = M + t | 0;
                      if ((M ^ t | 0) > -1 & (u ^ t | 0) < 0) {
                          c[q >> 2] = 1;
                          u = (t >>> 31) + 2147483647 | 0;
                      }
                      M = b[d + 214 + (L + 40 << 1) >> 1] | 0;
                      t = M + u | 0;
                      if ((M ^ u | 0) > -1 & (t ^ u | 0) < 0) {
                          c[q >> 2] = 1;
                          t = (u >>> 31) + 2147483647 | 0;
                      }
                      M = b[d + 214 + (L + 30 << 1) >> 1] | 0;
                      u = M + t | 0;
                      if ((M ^ t | 0) > -1 & (u ^ t | 0) < 0) {
                          c[q >> 2] = 1;
                          u = (t >>> 31) + 2147483647 | 0;
                      }
                      M = b[d + 214 + (L + 20 << 1) >> 1] | 0;
                      t = M + u | 0;
                      if ((M ^ u | 0) > -1 & (t ^ u | 0) < 0) {
                          c[q >> 2] = 1;
                          t = (u >>> 31) + 2147483647 | 0;
                      }
                      M = b[d + 214 + (L + 10 << 1) >> 1] | 0;
                      u = M + t | 0;
                      if ((M ^ t | 0) > -1 & (u ^ t | 0) < 0) {
                          c[q >> 2] = 1;
                          t = (t >>> 31) + 2147483647 | 0;
                      } else t = u;
                      M = b[d + 214 + (L << 1) >> 1] | 0;
                      u = M + t | 0;
                      if ((M ^ t | 0) > -1 & (u ^ t | 0) < 0) {
                          c[q >> 2] = 1;
                          u = (t >>> 31) + 2147483647 | 0;
                      }
                      if ((u | 0) < 0) u = ~((u ^ -8) >> 3); else u = u >>> 3;
                      x = u & 65535;
                      v = b[654 + (L << 1) >> 1] | 0;
                      w = 7;
                      while (1) {
                          r = d + 214 + ((w * 10 | 0) + L << 1) | 0;
                          u = Ge(b[r >> 1] | 0, x, q) | 0;
                          b[r >> 1] = u;
                          u = (Z(v, u << 16 >> 16) | 0) >> 15;
                          if ((u | 0) > 32767) {
                              c[q >> 2] = 1;
                              u = 32767;
                          }
                          b[r >> 1] = u;
                          s = (u & 65535) - (u >>> 15 & 1) | 0;
                          s = s << 16 >> 31 ^ s;
                          t = s & 65535;
                          if (t << 16 >> 16 > 655) t = (((s << 16 >> 16) + 261489 | 0) >>> 2) + 655 & 65535;
                          t = t << 16 >> 16 > 1310 ? 1310 : t;
                          if (!(u & 32768)) u = t; else u = 0 - (t & 65535) & 65535;
                          b[r >> 1] = u;
                          if ((w | 0) > 0) w = w + -1 | 0; else break
                      }
                      if ((L | 0) > 0) L = L + -1 | 0; else break
                  }
              }
              if (b[X >> 1] | 0) {
                  x = d + 32 | 0;
                  w = d + 12 | 0;
                  t = x;
                  v = w;
                  M = t + 20 | 0;
                  do {
                      a[t >> 0] = a[v >> 0] | 0;
                      t = t + 1 | 0;
                      v = v + 1 | 0;
                  } while ((t | 0) < (M | 0));
                  v = d + 4 | 0;
                  s = b[v >> 1] | 0;
                  r = d + 6 | 0;
                  b[r >> 1] = s;
                  do if (b[d + 402 >> 1] | 0) {
                      t = b[d >> 1] | 0;
                      b[d >> 1] = 0;
                      t = t << 16 >> 16 < 32 ? t : 32;
                      M = t << 16 >> 16;
                      u = M << 10;
                      if ((u | 0) != (M << 26 >> 16 | 0)) {
                          c[q >> 2] = 1;
                          u = t << 16 >> 16 > 0 ? 32767 : -32768;
                      }
                      if (t << 16 >> 16 > 1) u = Td(1024, u & 65535) | 0; else u = 16384;
                      b[d + 2 >> 1] = u;
                      bb(g, b[m >> 1] | 0, c[n + 60 >> 2] | 0);
                      ab(g, 8, 0, m + 2 | 0, n, w, q);
                      t = g;
                      M = t + 20 | 0;
                      do {
                          a[t >> 0] = 0;
                          t = t + 1 | 0;
                      } while ((t | 0) < (M | 0));
                      s = b[m + 8 >> 1] | 0;
                      s = s << 16 >> 16 == 0 ? -32768 : ((s + 64 & 65535) > 127 ? (s << 16 >> 16 > 0 ? 32767 : 32768) : s << 16 >> 16 << 9) + 60416 & 65535;
                      b[v >> 1] = s;
                      if ((b[d + 412 >> 1] | 0) != 0 ? (c[d + 408 >> 2] | 0) != 0 : 0) break;
                      t = x;
                      v = w;
                      M = t + 20 | 0;
                      do {
                          a[t >> 0] = a[v >> 0] | 0;
                          t = t + 1 | 0;
                          v = v + 1 | 0;
                      } while ((t | 0) < (M | 0));
                      b[r >> 1] = s;
                  } while (0);
                  t = s << 16 >> 16;
                  if (s << 16 >> 16 < 0) t = ~((t ^ -2) >> 1); else t = t >>> 1;
                  t = t + 56536 | 0;
                  u = t << 16;
                  if ((u | 0) > 0) t = 0; else t = (u | 0) < -946077696 ? -14436 : t & 65535;
                  b[h >> 1] = t;
                  b[h + 2 >> 1] = t;
                  b[h + 4 >> 1] = t;
                  b[h + 6 >> 1] = t;
                  m = ((t << 16 >> 16) * 5443 | 0) >>> 15 & 65535;
                  b[h + 8 >> 1] = m;
                  b[h + 10 >> 1] = m;
                  b[h + 12 >> 1] = m;
                  b[h + 14 >> 1] = m;
              }
              t = ((b[636 + (l << 1) >> 1] | 0) * 104864 | 0) >>> 15 << 16;
              if ((t | 0) < 0) t = ~((t >> 16 ^ -32) >> 5); else t = t >> 21;
              l = d + 394 | 0;
              b[l >> 1] = Rd(((b[l >> 1] | 0) * 29491 | 0) >>> 15 & 65535, t & 65535, q) | 0;
              h = (e[d >> 1] << 16) + 65536 | 0;
              t = h >> 16;
              n = d + 2 | 0;
              t = (Z(((h << 10 >> 26 | 0) == (t | 0) ? h >>> 6 : t >>> 15 ^ 32767) << 16 >> 16, b[n >> 1] | 0) | 0) >> 15;
              if ((t | 0) > 32767) {
                  c[q >> 2] = 1;
                  t = 32767;
              }
              s = t & 65535;
              if (s << 16 >> 16 <= 1024) if (s << 16 >> 16 < -2048) w = -32768; else w = t << 4 & 65535; else w = 16384;
              m = d + 4 | 0;
              x = w << 16 >> 16;
              u = Z(b[m >> 1] | 0, x) | 0;
              if ((u | 0) == 1073741824) {
                  c[q >> 2] = 1;
                  L = 2147483647;
              } else L = u << 1;
              u = (Z(b[d + 30 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              y = u & 65535;
              b[Q + 18 >> 1] = y;
              u = (Z(b[d + 28 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 16 >> 1] = u;
              u = (Z(b[d + 26 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 14 >> 1] = u;
              u = (Z(b[d + 24 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 12 >> 1] = u;
              u = (Z(b[d + 22 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 10 >> 1] = u;
              u = (Z(b[d + 20 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 8 >> 1] = u;
              u = (Z(b[d + 18 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 6 >> 1] = u;
              u = (Z(b[d + 16 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 4 >> 1] = u;
              u = (Z(b[d + 14 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q + 2 >> 1] = u;
              u = (Z(b[d + 12 >> 1] | 0, x) | 0) >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              b[Q >> 1] = u;
              h = d + 6 | 0;
              x = 16384 - (w & 65535) << 16 >> 16;
              u = Z(b[h >> 1] | 0, x) | 0;
              if ((u | 0) != 1073741824) {
                  t = (u << 1) + L | 0;
                  if ((u ^ L | 0) > 0 & (t ^ L | 0) < 0) {
                      c[q >> 2] = 1;
                      K = (L >>> 31) + 2147483647 | 0;
                  } else K = t;
              } else {
                  c[q >> 2] = 1;
                  K = 2147483647;
              }
              t = y;
              v = 9;
              while (1) {
                  s = Q + (v << 1) | 0;
                  u = (Z(b[d + 32 + (v << 1) >> 1] | 0, x) | 0) >> 15;
                  if ((u | 0) > 32767) {
                      c[q >> 2] = 1;
                      u = 32767;
                  }
                  t = Rd(t, u & 65535, q) | 0;
                  b[s >> 1] = t;
                  M = t << 16 >> 16;
                  u = M << 1;
                  if ((u | 0) != (M << 17 >> 16 | 0)) {
                      c[q >> 2] = 1;
                      u = t << 16 >> 16 > 0 ? 32767 : -32768;
                  }
                  b[s >> 1] = u;
                  u = v + -1 | 0;
                  if ((v | 0) <= 0) break;
                  t = b[Q + (u << 1) >> 1] | 0;
                  v = u;
              }
              L = d + 374 | 0;
              u = ((e[L >> 1] << 16) + -161021952 >> 16) * 9830 >> 15;
              if ((u | 0) > 32767) {
                  c[q >> 2] = 1;
                  u = 32767;
              }
              u = 4096 - (u & 65535) | 0;
              t = u << 16;
              if ((t | 0) > 268369920) x = 32767; else x = (t | 0) < 0 ? 0 : u << 19 >> 16;
              J = d + 8 | 0;
              u = Ga(J, 3) | 0;
              ne(Q, O, 10, q);
              t = P;
              v = O;
              M = t + 20 | 0;
              do {
                  b[t >> 1] = b[v >> 1] | 0;
                  t = t + 2 | 0;
                  v = v + 2 | 0;
              } while ((t | 0) < (M | 0));
              t = (u << 16 >> 16) * 10 | 0;
              v = 9;
              while (1) {
                  s = P + (v << 1) | 0;
                  r = b[s >> 1] | 0;
                  u = (Z(b[d + 214 + (v + t << 1) >> 1] | 0, x) | 0) >> 15;
                  if ((u | 0) > 32767) {
                      c[q >> 2] = 1;
                      u = 32767;
                  }
                  b[s >> 1] = Rd(r, u & 65535, q) | 0;
                  if ((v | 0) > 0) v = v + -1 | 0; else break
              }
              Ae(O, 205, 10, q);
              Ae(P, 205, 10, q);
              t = g + 20 | 0;
              v = O;
              M = t + 20 | 0;
              do {
                  a[t >> 0] = a[v >> 0] | 0;
                  t = t + 1 | 0;
                  v = v + 1 | 0;
              } while ((t | 0) < (M | 0));
              me(O, Q, 10, q);
              me(P, R, 10, q);
              he(Q, N, q);
              he(R, V, q);
              t = p;
              v = N;
              M = t + 22 | 0;
              do {
                  a[t >> 0] = a[v >> 0] | 0;
                  t = t + 1 | 0;
                  v = v + 1 | 0;
              } while ((t | 0) < (M | 0));
              t = p + 22 | 0;
              v = N;
              M = t + 22 | 0;
              do {
                  a[t >> 0] = a[v >> 0] | 0;
                  t = t + 1 | 0;
                  v = v + 1 | 0;
              } while ((t | 0) < (M | 0));
              t = p + 44 | 0;
              v = N;
              M = t + 22 | 0;
              do {
                  a[t >> 0] = a[v >> 0] | 0;
                  t = t + 1 | 0;
                  v = v + 1 | 0;
              } while ((t | 0) < (M | 0));
              t = p + 66 | 0;
              v = N;
              M = t + 22 | 0;
              do {
                  a[t >> 0] = a[v >> 0] | 0;
                  t = t + 1 | 0;
                  v = v + 1 | 0;
              } while ((t | 0) < (M | 0));
              Fa(N + 2 | 0, S, q);
              u = 0;
              t = 32767;
              do {
                  s = b[S + (u << 1) >> 1] | 0;
                  s = Z(s, s) | 0;
                  if (s >>> 0 < 1073741824) s = 32767 - (s >>> 15) | 0; else {
                      c[q >> 2] = 1;
                      s = 0;
                  }
                  t = (Z(s << 16 >> 16, t << 16 >> 16) | 0) >> 15;
                  if ((t | 0) > 32767) {
                      c[q >> 2] = 1;
                      t = 32767;
                  }
                  u = u + 1 | 0;
              } while ((u | 0) != 10);
              de(t << 16 >> 16, T, U, q);
              t = (e[T >> 1] << 16) + -983040 | 0;
              s = t >> 16;
              s = De(Ge(0, Rd(((t << 12 >> 28 | 0) == (s | 0) ? t >>> 4 : s >>> 15 ^ 32767) & 65535, De(b[U >> 1] | 0, 3, q) | 0, q) | 0, q) | 0, 1, q) | 0;
              t = (b[L >> 1] | 0) * 29491 >> 15;
              if ((t | 0) > 32767) {
                  c[q >> 2] = 1;
                  t = 32767;
              }
              u = s << 16 >> 16;
              s = u * 3277 >> 15;
              if ((s | 0) > 32767) {
                  c[q >> 2] = 1;
                  s = 32767;
              }
              b[L >> 1] = Rd(t & 65535, s & 65535, q) | 0;
              s = K >> 10;
              r = s + 262144 | 0;
              if ((s | 0) > -1 & (r ^ s | 0) < 0) {
                  c[q >> 2] = 1;
                  r = (s >>> 31) + 2147483647 | 0;
              }
              U = u << 4;
              s = r - U | 0;
              if (((s ^ r) & (r ^ U) | 0) < 0) {
                  c[q >> 2] = 1;
                  r = (r >>> 31) + 2147483647 | 0;
              } else r = s;
              U = b[l >> 1] << 5;
              s = U + r | 0;
              if ((U ^ r | 0) > -1 & (s ^ r | 0) < 0) {
                  c[q >> 2] = 1;
                  s = (r >>> 31) + 2147483647 | 0;
              }
              u = (re(s >>> 16 & 65535, s >>> 1 & 32767, q) | 0) << 16 >> 16;
              Ha(J, W, q);
              r = 39;
              while (1) {
                  t = W + (r << 1) | 0;
                  s = (Z(b[t >> 1] | 0, u) | 0) >> 15;
                  if ((s | 0) > 32767) {
                      c[q >> 2] = 1;
                      s = 32767;
                  }
                  b[t >> 1] = s;
                  if ((r | 0) > 0) r = r + -1 | 0; else break
              }
              He(V, W, o, 40, f, 1);
              Ha(J, W, q);
              r = 39;
              while (1) {
                  t = W + (r << 1) | 0;
                  s = (Z(b[t >> 1] | 0, u) | 0) >> 15;
                  if ((s | 0) > 32767) {
                      c[q >> 2] = 1;
                      s = 32767;
                  }
                  b[t >> 1] = s;
                  if ((r | 0) > 0) r = r + -1 | 0; else break
              }
              He(V, W, o + 80 | 0, 40, f, 1);
              Ha(J, W, q);
              r = 39;
              while (1) {
                  t = W + (r << 1) | 0;
                  s = (Z(b[t >> 1] | 0, u) | 0) >> 15;
                  if ((s | 0) > 32767) {
                      c[q >> 2] = 1;
                      s = 32767;
                  }
                  b[t >> 1] = s;
                  if ((r | 0) > 0) r = r + -1 | 0; else break
              }
              He(V, W, o + 160 | 0, 40, f, 1);
              Ha(J, W, q);
              t = 39;
              while (1) {
                  r = W + (t << 1) | 0;
                  s = (Z(b[r >> 1] | 0, u) | 0) >> 15;
                  if ((s | 0) > 32767) {
                      c[q >> 2] = 1;
                      s = 32767;
                  }
                  b[r >> 1] = s;
                  if ((t | 0) > 0) t = t + -1 | 0; else break
              }
              He(V, W, o + 240 | 0, 40, f, 1);
              b[j + 14 >> 1] = 20;
              b[j + 16 >> 1] = 0;
              if ((k | 0) == 2) {
                  s = b[d >> 1] | 0;
                  s = s << 16 >> 16 > 32 ? 32 : s << 16 >> 16 < 1 ? 8 : s;
                  o = s << 16 >> 16;
                  r = o << 10;
                  if ((r | 0) != (o << 26 >> 16 | 0)) {
                      c[q >> 2] = 1;
                      r = s << 16 >> 16 > 0 ? 32767 : -32768;
                  }
                  b[n >> 1] = Td(1024, r & 65535) | 0;
                  b[d >> 1] = 0;
                  t = d + 32 | 0;
                  v = d + 12 | 0;
                  M = t + 20 | 0;
                  do {
                      a[t >> 0] = a[v >> 0] | 0;
                      t = t + 1 | 0;
                      v = v + 1 | 0;
                  } while ((t | 0) < (M | 0));
                  q = b[m >> 1] | 0;
                  b[h >> 1] = q;
                  b[m >> 1] = (q & 65535) + 65280;
              }
              if (!(b[X >> 1] | 0)) {
                  i = _;
                  return
              }
              do if (!(b[d + 402 >> 1] | 0)) {
                  if (b[Y >> 1] | 0) break;
                  i = _;
                  return
              } while (0);
              b[d >> 1] = 0;
              b[d + 412 >> 1] = 1;
              i = _;
              return
          }

          function gb(a, d, f, g) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
              m = i;
              i = i + 16 | 0;
              k = m + 2 | 0;
              l = m;
              b[l >> 1] = 0;
              j = a + 212 | 0;
              h = (e[j >> 1] | 0) + 10 | 0;
              h = (h & 65535 | 0) == 80 ? 0 : h & 65535;
              b[j >> 1] = h;
              Pe(a + 52 + (h << 16 >> 16 << 1) | 0, d | 0, 20) | 0;
              h = 0;
              j = 159;
              while (1) {
                  n = b[f + (j << 1) >> 1] | 0;
                  n = Z(n, n) | 0;
                  n = (n | 0) == 1073741824 ? 2147483647 : n << 1;
                  d = n + h | 0;
                  if ((n ^ h | 0) > -1 & (d ^ h | 0) < 0) {
                      c[g >> 2] = 1;
                      h = (h >>> 31) + 2147483647 | 0;
                  } else h = d;
                  if ((j | 0) > 0) j = j + -1 | 0; else break
              }
              de(h, k, l, g);
              h = b[k >> 1] | 0;
              n = h << 16 >> 16;
              d = n << 10;
              if ((d | 0) != (n << 26 >> 16 | 0)) {
                  c[g >> 2] = 1;
                  d = h << 16 >> 16 > 0 ? 32767 : -32768;
              }
              b[k >> 1] = d;
              n = b[l >> 1] | 0;
              h = n << 16 >> 16;
              if (n << 16 >> 16 < 0) h = ~((h ^ -32) >> 5); else h = h >>> 5;
              l = a + 392 | 0;
              n = (e[l >> 1] | 0) + 1 | 0;
              n = (n & 65535 | 0) == 8 ? 0 : n & 65535;
              b[l >> 1] = n;
              b[a + 376 + (n << 16 >> 16 << 1) >> 1] = h + 57015 + d;
              i = m;
              return
          }

          function hb(a, d, f) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
              l = (d | 0) == 4;
              m = (d | 0) == 5;
              n = (d | 0) == 6;
              g = c[a + 408 >> 2] | 0;
              a:do if ((d + -4 | 0) >>> 0 < 3) k = 4; else {
                  if ((g + -1 | 0) >>> 0 < 2) switch (d | 0) {
                      case 2:
                      case 3:
                      case 7: {
                          k = 4;
                          break a
                      }
                      default: {
                      }
                  }
                  b[a >> 1] = 0;
                  j = 0;
              } while (0);
              if ((k | 0) == 4) {
                  b:do if ((g | 0) == 2) {
                      switch (d | 0) {
                          case 2:
                          case 4:
                          case 6:
                          case 7:
                              break;
                          default: {
                              h = 1;
                              break b
                          }
                      }
                      h = 2;
                  } else h = 1; while (0);
                  j = (e[a >> 1] | 0) + 1 & 65535;
                  b[a >> 1] = j;
                  j = (d | 0) != 5 & j << 16 >> 16 > 50 ? 2 : h;
              }
              i = a + 398 | 0;
              if (m & (b[a + 412 >> 1] | 0) == 0) {
                  b[i >> 1] = 0;
                  h = 0;
              } else h = b[i >> 1] | 0;
              h = Rd(h, 1, f) | 0;
              b[i >> 1] = h;
              f = a + 404 | 0;
              b[f >> 1] = 0;
              c:do switch (d | 0) {
                  case 2:
                  case 4:
                  case 5:
                  case 6:
                  case 7: {
                      if (!((d | 0) == 7 & (j | 0) == 0)) {
                          if (h << 16 >> 16 > 30) {
                              b[f >> 1] = 1;
                              b[i >> 1] = 0;
                              b[a + 396 >> 1] = 0;
                              break c
                          }
                          h = a + 396 | 0;
                          g = b[h >> 1] | 0;
                          if (!(g << 16 >> 16)) {
                              b[i >> 1] = 0;
                              break c
                          } else {
                              b[h >> 1] = (g & 65535) + 65535;
                              break c
                          }
                      } else k = 14;
                      break
                  }
                  default:
                      k = 14;
              } while (0);
              if ((k | 0) == 14) b[a + 396 >> 1] = 7;
              if (!j) return j | 0;
              h = a + 400 | 0;
              b[h >> 1] = 0;
              g = a + 402 | 0;
              b[g >> 1] = 0;
              if (l) {
                  b[h >> 1] = 1;
                  return j | 0
              }
              if (m) {
                  b[h >> 1] = 1;
                  b[g >> 1] = 1;
                  return j | 0
              }
              if (!n) return j | 0;
              b[h >> 1] = 1;
              b[f >> 1] = 0;
              return j | 0
          }

          function ib(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              b[a >> 1] = 1;
              b[a + 2 >> 1] = 1;
              b[a + 4 >> 1] = 1;
              b[a + 6 >> 1] = 1;
              b[a + 8 >> 1] = 1;
              b[a + 10 >> 1] = 0;
              b[a + 12 >> 1] = 1;
              a = 0;
              return a | 0
          }

          function jb(a, d, e, f, g) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0;
              l = i;
              i = i + 16 | 0;
              k = l + 2 | 0;
              j = l;
              h = Zd(a, 5) | 0;
              a = a + 10 | 0;
              if ((Ge(h, b[a >> 1] | 0, g) | 0) << 16 >> 16 > 0) h = b[a >> 1] | 0;
              h = (Z(b[674 + (e << 16 >> 16 << 1) >> 1] | 0, h << 16 >> 16) | 0) >> 15;
              if ((h | 0) > 32767) {
                  c[g >> 2] = 1;
                  h = 32767;
              }
              b[f >> 1] = h;
              Xd(d, k, j, g);
              Wd(d, b[k >> 1] | 0, b[j >> 1] | 0);
              i = l;
              return
          }

          function kb(a, c, d, e, f) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              if (!(c << 16 >> 16)) {
                  if (d << 16 >> 16) {
                      c = a + 12 | 0;
                      if ((Ge(b[e >> 1] | 0, b[c >> 1] | 0, f) | 0) << 16 >> 16 > 0) b[e >> 1] = b[c >> 1] | 0;
                  } else c = a + 12 | 0;
                  b[c >> 1] = b[e >> 1] | 0;
              }
              b[a + 10 >> 1] = b[e >> 1] | 0;
              f = a + 2 | 0;
              b[a >> 1] = b[f >> 1] | 0;
              d = a + 4 | 0;
              b[f >> 1] = b[d >> 1] | 0;
              f = a + 6 | 0;
              b[d >> 1] = b[f >> 1] | 0;
              a = a + 8 | 0;
              b[f >> 1] = b[a >> 1] | 0;
              b[a >> 1] = b[e >> 1] | 0;
              return
          }

          function lb(a, d, e, f) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0;
              g = Zd(a, 5) | 0;
              a = a + 10 | 0;
              if ((Ge(g, b[a >> 1] | 0, f) | 0) << 16 >> 16 > 0) g = b[a >> 1] | 0;
              g = (Z(b[688 + (d << 16 >> 16 << 1) >> 1] | 0, g << 16 >> 16) | 0) >> 15;
              if ((g | 0) <= 32767) {
                  f = g;
                  f = f & 65535;
                  b[e >> 1] = f;
                  return
              }
              c[f >> 2] = 1;
              f = 32767;
              f = f & 65535;
              b[e >> 1] = f;
              return
          }

          function mb(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              b[a >> 1] = 1640;
              b[a + 2 >> 1] = 1640;
              b[a + 4 >> 1] = 1640;
              b[a + 6 >> 1] = 1640;
              b[a + 8 >> 1] = 1640;
              b[a + 10 >> 1] = 0;
              b[a + 12 >> 1] = 16384;
              a = 0;
              return a | 0
          }

          function nb(a, c, d, e, f) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              if (!(c << 16 >> 16)) {
                  if (d << 16 >> 16) {
                      c = a + 12 | 0;
                      if ((Ge(b[e >> 1] | 0, b[c >> 1] | 0, f) | 0) << 16 >> 16 > 0) b[e >> 1] = b[c >> 1] | 0;
                  } else c = a + 12 | 0;
                  b[c >> 1] = b[e >> 1] | 0;
              }
              e = b[e >> 1] | 0;
              c = a + 10 | 0;
              b[c >> 1] = e;
              if ((Ge(e, 16384, f) | 0) << 16 >> 16 > 0) {
                  b[c >> 1] = 16384;
                  c = 16384;
              } else c = b[c >> 1] | 0;
              f = a + 2 | 0;
              b[a >> 1] = b[f >> 1] | 0;
              e = a + 4 | 0;
              b[f >> 1] = b[e >> 1] | 0;
              f = a + 6 | 0;
              b[e >> 1] = b[f >> 1] | 0;
              a = a + 8 | 0;
              b[f >> 1] = b[a >> 1] | 0;
              b[a >> 1] = c;
              return
          }

          function ob(a, d, e, f, g, h, i) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              var j = 0, k = 0, l = 0;
              k = Zd(e, 9) | 0;
              l = b[e + 16 >> 1] | 0;
              j = l << 16 >> 16;
              e = (j + (b[e + 14 >> 1] | 0) | 0) >>> 1;
              e = (j | 0) < (e << 16 >> 16 | 0) ? l : e & 65535;
              if (!(d << 16 >> 16 > 5 ? k << 16 >> 16 > d << 16 >> 16 : 0)) return 0;
              j = e << 16 >> 16;
              j = ((j << 18 >> 18 | 0) == (j | 0) ? j << 2 : j >>> 15 ^ 32767) & 65535;
              if (!(f << 16 >> 16 > 6 & g << 16 >> 16 == 0)) j = Ge(j, e, i) | 0;
              k = k << 16 >> 16 > j << 16 >> 16 ? j : k;
              l = qe(d) | 0;
              j = l << 16 >> 16;
              if (l << 16 >> 16 < 0) {
                  e = 0 - j << 16;
                  if ((e | 0) < 983040) j = d << 16 >> 16 >> (e >> 16) & 65535; else j = 0;
              } else {
                  e = d << 16 >> 16;
                  g = e << j;
                  if ((g << 16 >> 16 >> j | 0) == (e | 0)) j = g & 65535; else j = (e >>> 15 ^ 32767) & 65535;
              }
              f = Z((Td(16383, j) | 0) << 16 >> 16, k << 16 >> 16) | 0;
              if ((f | 0) == 1073741824) {
                  c[i >> 2] = 1;
                  g = 2147483647;
              } else g = f << 1;
              f = Ge(20, l, i) | 0;
              j = f << 16 >> 16;
              if (f << 16 >> 16 > 0) f = f << 16 >> 16 < 31 ? g >> j : 0; else {
                  d = 0 - j << 16 >> 16;
                  f = g << d;
                  f = (f >> d | 0) == (g | 0) ? f : g >> 31 ^ 2147483647;
              }
              f = (f | 0) > 32767 ? 32767 : f & 65535;
              f = h << 16 >> 16 != 0 & f << 16 >> 16 > 3072 ? 3072 : f << 16 >> 16;
              e = 0;
              do {
                  g = a + (e << 1) | 0;
                  j = Z(b[g >> 1] | 0, f) | 0;
                  if ((j | 0) == 1073741824) {
                      c[i >> 2] = 1;
                      j = 2147483647;
                  } else j = j << 1;
                  b[g >> 1] = j >>> 11;
                  e = e + 1 | 0;
              } while ((e | 0) != 40);
              return 0
          }

          function pb(a, e, f, g) {
              a = a | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, i = 0, j = 0, k = 0;
              h = c[g + 104 >> 2] | 0;
              i = c[g + 96 >> 2] | 0;
              if (a >>> 0 >= 8) {
                  b[f >> 1] = (d[e >> 0] | 0) >>> 4 & 1;
                  b[f + 2 >> 1] = (d[e >> 0] | 0) >>> 5 & 1;
                  b[f + 4 >> 1] = (d[e >> 0] | 0) >>> 6 & 1;
                  b[f + 6 >> 1] = (d[e >> 0] | 0) >>> 7 & 255;
                  h = h + (a << 1) | 0;
                  if ((b[h >> 1] | 0) > 1) {
                      a = 1;
                      g = 1;
                      i = 4;
                  } else return;
                  while (1) {
                      j = e + a | 0;
                      a = i | 1;
                      b[f + (i << 16 >> 16 << 1) >> 1] = d[j >> 0] & 1;
                      b[f + (a << 16 >> 16 << 1) >> 1] = (d[j >> 0] | 0) >>> 1 & 1;
                      k = i | 3;
                      b[f + (a + 1 << 16 >> 16 << 16 >> 16 << 1) >> 1] = (d[j >> 0] | 0) >>> 2 & 1;
                      b[f + (k << 16 >> 16 << 1) >> 1] = (d[j >> 0] | 0) >>> 3 & 1;
                      b[f + (k + 1 << 16 >> 16 << 16 >> 16 << 1) >> 1] = (d[j >> 0] | 0) >>> 4 & 1;
                      b[f + (k + 2 << 16 >> 16 << 16 >> 16 << 1) >> 1] = (d[j >> 0] | 0) >>> 5 & 1;
                      b[f + (k + 3 << 16 >> 16 << 16 >> 16 << 1) >> 1] = (d[j >> 0] | 0) >>> 6 & 1;
                      b[f + (k + 4 << 16 >> 16 << 16 >> 16 << 1) >> 1] = (d[j >> 0] | 0) >>> 7 & 255;
                      g = g + 1 << 16 >> 16;
                      if (g << 16 >> 16 < (b[h >> 1] | 0)) {
                          a = g << 16 >> 16;
                          i = i + 8 << 16 >> 16;
                      } else break
                  }
                  return
              }
              k = c[(c[g + 100 >> 2] | 0) + (a << 2) >> 2] | 0;
              b[f + (b[k >> 1] << 1) >> 1] = (d[e >> 0] | 0) >>> 4 & 1;
              b[f + (b[k + 2 >> 1] << 1) >> 1] = (d[e >> 0] | 0) >>> 5 & 1;
              b[f + (b[k + 4 >> 1] << 1) >> 1] = (d[e >> 0] | 0) >>> 6 & 1;
              b[f + (b[k + 6 >> 1] << 1) >> 1] = (d[e >> 0] | 0) >>> 7 & 255;
              j = h + (a << 1) | 0;
              if ((b[j >> 1] | 0) <= 1) return;
              g = i + (a << 1) | 0;
              h = 1;
              a = 1;
              i = 4;
              while (1) {
                  h = e + h | 0;
                  i = i << 16 >> 16;
                  if ((i | 0) < (b[g >> 1] | 0)) {
                      b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = d[h >> 0] & 1;
                      i = i + 1 | 0;
                      if ((i | 0) < (b[g >> 1] | 0)) {
                          b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = (d[h >> 0] | 0) >>> 1 & 1;
                          i = i + 1 | 0;
                          if ((i | 0) < (b[g >> 1] | 0)) {
                              b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = (d[h >> 0] | 0) >>> 2 & 1;
                              i = i + 1 | 0;
                              if ((i | 0) < (b[g >> 1] | 0)) {
                                  b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = (d[h >> 0] | 0) >>> 3 & 1;
                                  i = i + 1 | 0;
                                  if ((i | 0) < (b[g >> 1] | 0)) {
                                      b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = (d[h >> 0] | 0) >>> 4 & 1;
                                      i = i + 1 | 0;
                                      if ((i | 0) < (b[g >> 1] | 0)) {
                                          b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = (d[h >> 0] | 0) >>> 5 & 1;
                                          i = i + 1 | 0;
                                          if ((i | 0) < (b[g >> 1] | 0)) {
                                              b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = (d[h >> 0] | 0) >>> 6 & 1;
                                              i = i + 1 | 0;
                                              if ((i | 0) < (b[g >> 1] | 0)) {
                                                  b[f + (b[k + (i << 1) >> 1] << 1) >> 1] = (d[h >> 0] | 0) >>> 7 & 1;
                                                  i = i + 1 | 0;
                                              }
                                          }
                                      }
                                  }
                              }
                          }
                      }
                  }
                  a = a + 1 << 16 >> 16;
                  if (a << 16 >> 16 < (b[j >> 1] | 0)) h = a << 16 >> 16; else break
              }
              return
          }

          function qb(a, c, d, e, f) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0, j = 0;
              switch (d << 16 >> 16) {
                  case 0: {
                      j = 9;
                      while (1) {
                          i = b[a + (j << 1) >> 1] | 0;
                          d = i << 16 >> 16;
                          if (i << 16 >> 16 < 0) d = ~((d ^ -4) >> 2); else d = d >>> 2;
                          h = b[c + (j << 1) >> 1] | 0;
                          g = h << 16 >> 16;
                          if (h << 16 >> 16 < 0) h = ~((g ^ -4) >> 2); else h = g >>> 2;
                          b[e + (j << 1) >> 1] = Rd((i & 65535) - d & 65535, h & 65535, f) | 0;
                          if ((j | 0) > 0) j = j + -1 | 0; else break
                      }
                      return
                  }
                  case 40: {
                      h = 9;
                      while (1) {
                          f = b[a + (h << 1) >> 1] | 0;
                          d = f << 16 >> 16;
                          if (f << 16 >> 16 < 0) g = ~((d ^ -2) >> 1); else g = d >>> 1;
                          f = b[c + (h << 1) >> 1] | 0;
                          d = f << 16 >> 16;
                          if (f << 16 >> 16 < 0) d = ~((d ^ -2) >> 1); else d = d >>> 1;
                          b[e + (h << 1) >> 1] = d + g;
                          if ((h | 0) > 0) h = h + -1 | 0; else break
                      }
                      return
                  }
                  case 80: {
                      j = 9;
                      while (1) {
                          i = b[a + (j << 1) >> 1] | 0;
                          d = i << 16 >> 16;
                          if (i << 16 >> 16 < 0) i = ~((d ^ -4) >> 2); else i = d >>> 2;
                          d = b[c + (j << 1) >> 1] | 0;
                          g = d << 16 >> 16;
                          if (d << 16 >> 16 < 0) h = ~((g ^ -4) >> 2); else h = g >>> 2;
                          b[e + (j << 1) >> 1] = Rd(i & 65535, (d & 65535) - h & 65535, f) | 0;
                          if ((j | 0) > 0) j = j + -1 | 0; else break
                      }
                      return
                  }
                  case 120: {
                      b[e + 18 >> 1] = b[c + 18 >> 1] | 0;
                      b[e + 16 >> 1] = b[c + 16 >> 1] | 0;
                      b[e + 14 >> 1] = b[c + 14 >> 1] | 0;
                      b[e + 12 >> 1] = b[c + 12 >> 1] | 0;
                      b[e + 10 >> 1] = b[c + 10 >> 1] | 0;
                      b[e + 8 >> 1] = b[c + 8 >> 1] | 0;
                      b[e + 6 >> 1] = b[c + 6 >> 1] | 0;
                      b[e + 4 >> 1] = b[c + 4 >> 1] | 0;
                      b[e + 2 >> 1] = b[c + 2 >> 1] | 0;
                      b[e >> 1] = b[c >> 1] | 0;
                      return
                  }
                  default:
                      return
              }
          }

          function rb(a, b) {
              a = a | 0;
              b = b | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              Pe(a | 0, b | 0, 20) | 0;
              a = 0;
              return a | 0
          }

          function sb(a, d, e) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0;
              l = 0;
              do {
                  k = a + (l << 1) | 0;
                  f = b[k >> 1] | 0;
                  i = f & 65535;
                  j = i << 16;
                  f = f << 16 >> 16;
                  if ((f * 5243 | 0) == 1073741824) {
                      c[e >> 2] = 1;
                      h = 2147483647;
                  } else h = f * 10486 | 0;
                  g = j - h | 0;
                  if (((g ^ j) & (h ^ j) | 0) < 0) {
                      c[e >> 2] = 1;
                      h = (i >>> 15) + 2147483647 | 0;
                  } else h = g;
                  f = b[d + (l << 1) >> 1] | 0;
                  g = f * 5243 | 0;
                  if ((g | 0) != 1073741824) {
                      f = (f * 10486 | 0) + h | 0;
                      if ((g ^ h | 0) > 0 & (f ^ h | 0) < 0) {
                          c[e >> 2] = 1;
                          f = (h >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[e >> 2] = 1;
                      f = 2147483647;
                  }
                  b[k >> 1] = Ce(f, e) | 0;
                  l = l + 1 | 0;
              } while ((l | 0) != 10);
              return
          }

          function tb(a) {
              a = a | 0;
              var c = 0;
              if (!a) {
                  c = -1;
                  return c | 0
              }
              c = a + 18 | 0;
              do {
                  b[a >> 1] = 0;
                  a = a + 2 | 0;
              } while ((a | 0) < (c | 0));
              c = 0;
              return c | 0
          }

          function ub(a) {
              a = a | 0;
              b[a + 14 >> 1] = 1;
              return
          }

          function vb(a) {
              a = a | 0;
              b[a + 14 >> 1] = 0;
              return
          }

          function wb(a, d, e, f, g, h, j, k, l, m) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              var n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0,
                  C = 0;
              C = i;
              i = i + 160 | 0;
              z = C + 80 | 0;
              A = C;
              v = c[l + 120 >> 2] | 0;
              w = c[l + 124 >> 2] | 0;
              x = c[l + 128 >> 2] | 0;
              u = c[l + 132 >> 2] | 0;
              o = a + 6 | 0;
              t = a + 8 | 0;
              b[t >> 1] = b[o >> 1] | 0;
              r = a + 4 | 0;
              b[o >> 1] = b[r >> 1] | 0;
              s = a + 2 | 0;
              b[r >> 1] = b[s >> 1] | 0;
              b[s >> 1] = b[a >> 1] | 0;
              b[a >> 1] = g;
              l = g << 16 >> 16 < 14746 ? g << 16 >> 16 > 9830 & 1 : 2;
              n = a + 12 | 0;
              g = b[n >> 1] | 0;
              p = g << 15;
              do if ((p | 0) <= 536870911) if ((p | 0) < -536870912) {
                  c[m >> 2] = 1;
                  g = -2147483648;
                  break
              } else {
                  g = g << 17;
                  break
              } else {
                  c[m >> 2] = 1;
                  g = 2147483647;
              } while (0);
              y = f << 16 >> 16;
              q = a + 16 | 0;
              if ((Ce(g, m) | 0) << 16 >> 16 >= f << 16 >> 16) {
                  p = b[q >> 1] | 0;
                  if (p << 16 >> 16 > 0) {
                      p = (p & 65535) + 65535 & 65535;
                      b[q >> 1] = p;
                  }
                  if (!(p << 16 >> 16)) {
                      g = (b[a >> 1] | 0) < 9830;
                      g = (b[s >> 1] | 0) < 9830 ? (g ? 2 : 1) : g & 1;
                      if ((b[r >> 1] | 0) < 9830) g = (g & 65535) + 1 & 65535;
                      if ((b[o >> 1] | 0) < 9830) g = (g & 65535) + 1 & 65535;
                      if ((b[t >> 1] | 0) < 9830) g = (g & 65535) + 1 & 65535;
                      p = 0;
                      l = g << 16 >> 16 > 2 ? 0 : l;
                  }
              } else {
                  b[q >> 1] = 2;
                  p = 2;
              }
              s = l << 16 >> 16;
              t = a + 10 | 0;
              s = (p << 16 >> 16 == 0 ? (s | 0) > ((b[t >> 1] | 0) + 1 | 0) : 0) ? s + 65535 & 65535 : l;
              a = (b[a + 14 >> 1] | 0) == 1 ? 0 : f << 16 >> 16 < 10 ? 2 : s << 16 >> 16 < 2 & p << 16 >> 16 > 0 ? (s & 65535) + 1 & 65535 : s;
              b[t >> 1] = a;
              b[n >> 1] = f;
              switch (d | 0) {
                  case 4:
                  case 6:
                  case 7:
                      break;
                  default:
                      if (a << 16 >> 16 < 2) {
                          p = 0;
                          l = 0;
                          o = h;
                          n = z;
                          while (1) {
                              if (!(b[o >> 1] | 0)) g = 0; else {
                                  l = l << 16 >> 16;
                                  b[A + (l << 1) >> 1] = p;
                                  g = b[o >> 1] | 0;
                                  l = l + 1 & 65535;
                              }
                              b[n >> 1] = g;
                              b[o >> 1] = 0;
                              p = p + 1 << 16 >> 16;
                              if (p << 16 >> 16 >= 40) {
                                  t = l;
                                  break
                              } else {
                                  o = o + 2 | 0;
                                  n = n + 2 | 0;
                              }
                          }
                          s = a << 16 >> 16 == 0;
                          s = (d | 0) == 5 ? (s ? v : w) : s ? x : u;
                          if (t << 16 >> 16 > 0) {
                              r = 0;
                              do {
                                  q = b[A + (r << 1) >> 1] | 0;
                                  l = q << 16 >> 16;
                                  a = b[z + (l << 1) >> 1] | 0;
                                  if (q << 16 >> 16 < 40) {
                                      p = a << 16 >> 16;
                                      o = 39 - q & 65535;
                                      n = q;
                                      l = h + (l << 1) | 0;
                                      g = s;
                                      while (1) {
                                          d = (Z(b[g >> 1] | 0, p) | 0) >>> 15 & 65535;
                                          b[l >> 1] = Rd(b[l >> 1] | 0, d, m) | 0;
                                          n = n + 1 << 16 >> 16;
                                          if (n << 16 >> 16 >= 40) break; else {
                                              l = l + 2 | 0;
                                              g = g + 2 | 0;
                                          }
                                      }
                                      if (q << 16 >> 16 > 0) {
                                          l = s + (o + 1 << 1) | 0;
                                          B = 36;
                                      }
                                  } else {
                                      l = s;
                                      B = 36;
                                  }
                                  if ((B | 0) == 36) {
                                      B = 0;
                                      g = a << 16 >> 16;
                                      p = 0;
                                      o = h;
                                      while (1) {
                                          d = (Z(b[l >> 1] | 0, g) | 0) >>> 15 & 65535;
                                          b[o >> 1] = Rd(b[o >> 1] | 0, d, m) | 0;
                                          p = p + 1 << 16 >> 16;
                                          if (p << 16 >> 16 >= q << 16 >> 16) break; else {
                                              o = o + 2 | 0;
                                              l = l + 2 | 0;
                                          }
                                      }
                                  }
                                  r = r + 1 | 0;
                              } while ((r & 65535) << 16 >> 16 != t << 16 >> 16)
                          }
                      }
              }
              r = j << 16 >> 16;
              s = y << 1;
              g = k << 16 >> 16;
              n = 0 - g << 16;
              l = n >> 16;
              if (k << 16 >> 16 > 0) {
                  p = 0;
                  o = e;
                  while (1) {
                      a = Z(b[e + (p << 1) >> 1] | 0, r) | 0;
                      if ((a | 0) == 1073741824) {
                          c[m >> 2] = 1;
                          n = 2147483647;
                      } else n = a << 1;
                      k = Z(s, b[h >> 1] | 0) | 0;
                      a = k + n | 0;
                      if ((k ^ n | 0) > -1 & (a ^ n | 0) < 0) {
                          c[m >> 2] = 1;
                          a = (n >>> 31) + 2147483647 | 0;
                      }
                      k = a << g;
                      b[o >> 1] = Ce((k >> g | 0) == (a | 0) ? k : a >> 31 ^ 2147483647, m) | 0;
                      p = p + 1 | 0;
                      if ((p | 0) == 40) break; else {
                          h = h + 2 | 0;
                          o = o + 2 | 0;
                      }
                  }
                  i = C;
                  return
              }
              if ((n | 0) < 2031616) {
                  p = 0;
                  o = e;
                  while (1) {
                      a = Z(b[e + (p << 1) >> 1] | 0, r) | 0;
                      if ((a | 0) == 1073741824) {
                          c[m >> 2] = 1;
                          n = 2147483647;
                      } else n = a << 1;
                      k = Z(s, b[h >> 1] | 0) | 0;
                      a = k + n | 0;
                      if ((k ^ n | 0) > -1 & (a ^ n | 0) < 0) {
                          c[m >> 2] = 1;
                          a = (n >>> 31) + 2147483647 | 0;
                      }
                      b[o >> 1] = Ce(a >> l, m) | 0;
                      p = p + 1 | 0;
                      if ((p | 0) == 40) break; else {
                          h = h + 2 | 0;
                          o = o + 2 | 0;
                      }
                  }
                  i = C;
                  return
              } else {
                  o = 0;
                  n = e;
                  while (1) {
                      a = Z(b[e + (o << 1) >> 1] | 0, r) | 0;
                      if ((a | 0) == 1073741824) {
                          c[m >> 2] = 1;
                          a = 2147483647;
                      } else a = a << 1;
                      k = Z(s, b[h >> 1] | 0) | 0;
                      if ((k ^ a | 0) > -1 & (k + a ^ a | 0) < 0) c[m >> 2] = 1;
                      b[n >> 1] = Ce(0, m) | 0;
                      o = o + 1 | 0;
                      if ((o | 0) == 40) break; else {
                          h = h + 2 | 0;
                          n = n + 2 | 0;
                      }
                  }
                  i = C;
                  return
              }
          }

          function xb(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              ;b[a >> 1] = 0;
              b[a + 2 >> 1] = 0;
              b[a + 4 >> 1] = 0;
              b[a + 6 >> 1] = 0;
              b[a + 8 >> 1] = 0;
              b[a + 10 >> 1] = 0;
              a = 0;
              return a | 0
          }

          function yb(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0;
              if (d << 16 >> 16 <= 0) return;
              f = a + 10 | 0;
              j = a + 8 | 0;
              l = a + 4 | 0;
              m = a + 6 | 0;
              n = a + 2 | 0;
              g = b[l >> 1] | 0;
              h = b[m >> 1] | 0;
              i = b[a >> 1] | 0;
              k = b[n >> 1] | 0;
              o = 0;
              while (1) {
                  p = b[f >> 1] | 0;
                  q = b[j >> 1] | 0;
                  b[f >> 1] = q;
                  r = b[c >> 1] | 0;
                  b[j >> 1] = r;
                  p = ((r << 16 >> 16) * 7699 | 0) + ((Z(i << 16 >> 16, -7667) | 0) + (((g << 16 >> 16) * 15836 | 0) + ((h << 16 >> 16) * 15836 >> 15)) + ((Z(k << 16 >> 16, -7667) | 0) >> 15)) + (Z(q << 16 >> 16, -15398) | 0) + ((p << 16 >> 16) * 7699 | 0) | 0;
                  q = p << 3;
                  p = (q >> 3 | 0) == (p | 0) ? q : p >> 31 ^ 2147483647;
                  q = p << 1;
                  b[c >> 1] = Ce((q >> 1 | 0) == (p | 0) ? q : p >> 31 ^ 2147483647, e) | 0;
                  i = b[l >> 1] | 0;
                  b[a >> 1] = i;
                  k = b[m >> 1] | 0;
                  b[n >> 1] = k;
                  g = p >>> 16 & 65535;
                  b[l >> 1] = g;
                  h = (p >>> 1) - (p >> 16 << 15) & 65535;
                  b[m >> 1] = h;
                  o = o + 1 << 16 >> 16;
                  if (o << 16 >> 16 >= d << 16 >> 16) break; else c = c + 2 | 0;
              }
              return
          }

          function zb(a) {
              a = a | 0;
              if (!a) a = -1; else {
                  b[a >> 1] = 0;
                  a = 0;
              }
              return a | 0
          }

          function Ab(a, d, e, f, g) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, i = 0, j = 0, k = 0;
              j = f << 16 >> 16;
              h = d + (j + -1 << 1) | 0;
              j = j + -2 | 0;
              k = b[h >> 1] | 0;
              if (f << 16 >> 16 < 2) f = e << 16 >> 16; else {
                  f = e << 16 >> 16;
                  i = 0;
                  d = d + (j << 1) | 0;
                  while (1) {
                      e = (Z(b[d >> 1] | 0, f) | 0) >> 15;
                      if ((e | 0) > 32767) {
                          c[g >> 2] = 1;
                          e = 32767;
                      }
                      b[h >> 1] = Ge(b[h >> 1] | 0, e & 65535, g) | 0;
                      h = h + -2 | 0;
                      i = i + 1 << 16 >> 16;
                      if ((i << 16 >> 16 | 0) > (j | 0)) break; else d = d + -2 | 0;
                  }
              }
              f = (Z(b[a >> 1] | 0, f) | 0) >> 15;
              if ((f | 0) <= 32767) {
                  j = f;
                  j = j & 65535;
                  i = b[h >> 1] | 0;
                  g = Ge(i, j, g) | 0;
                  b[h >> 1] = g;
                  b[a >> 1] = k;
                  return
              }
              c[g >> 2] = 1;
              j = 32767;
              j = j & 65535;
              i = b[h >> 1] | 0;
              g = Ge(i, j, g) | 0;
              b[h >> 1] = g;
              b[a >> 1] = k;
              return
          }

          function Bb(a) {
              a = a | 0;
              var c = 0, d = 0, e = 0;
              if (!a) {
                  e = -1;
                  return e | 0
              }
              Qe(a + 104 | 0, 0, 340) | 0;
              c = a + 102 | 0;
              d = a;
              e = d + 100 | 0;
              do {
                  b[d >> 1] = 0;
                  d = d + 2 | 0;
              } while ((d | 0) < (e | 0));
              Ba(c) | 0;
              zb(a + 100 | 0) | 0;
              e = 0;
              return e | 0
          }

          function Cb(d, e, f, g, h) {
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0;
              w = i;
              i = i + 96 | 0;
              s = w + 22 | 0;
              t = w;
              u = w + 44 | 0;
              Pe(d + 124 | 0, f | 0, 320) | 0;
              o = u + 22 | 0;
              p = d + 100 | 0;
              q = d + 80 | 0;
              r = d + 102 | 0;
              if ((e & -2 | 0) == 6) {
                  n = 0;
                  while (1) {
                      Ie(g, 702, s);
                      Ie(g, 722, t);
                      m = d + 104 + (n + 10 << 1) | 0;
                      Be(s, m, d, 40);
                      k = u;
                      j = s;
                      e = k + 22 | 0;
                      do {
                          b[k >> 1] = b[j >> 1] | 0;
                          k = k + 2 | 0;
                          j = j + 2 | 0;
                      } while ((k | 0) < (e | 0));
                      k = o;
                      e = k + 22 | 0;
                      do {
                          b[k >> 1] = 0;
                          k = k + 2 | 0;
                      } while ((k | 0) < (e | 0));
                      He(t, u, u, 22, o, 0);
                      e = 0;
                      k = 21;
                      do {
                          j = b[u + (k << 16 >> 16 << 1) >> 1] | 0;
                          j = Z(j, j) | 0;
                          if ((j | 0) == 1073741824) {
                              v = 7;
                              break
                          }
                          l = j << 1;
                          j = l + e | 0;
                          if ((l ^ e | 0) > -1 & (j ^ e | 0) < 0) {
                              c[h >> 2] = 1;
                              e = (e >>> 31) + 2147483647 | 0;
                          } else e = j;
                          k = k + -1 << 16 >> 16;
                      } while (k << 16 >> 16 > -1);
                      if ((v | 0) == 7) {
                          v = 0;
                          c[h >> 2] = 1;
                      }
                      l = e >>> 16 & 65535;
                      j = 20;
                      e = 0;
                      k = 20;
                      while (1) {
                          j = Z(b[u + (j + 1 << 1) >> 1] | 0, b[u + (j << 1) >> 1] | 0) | 0;
                          if ((j | 0) == 1073741824) {
                              v = 13;
                              break
                          }
                          x = j << 1;
                          j = x + e | 0;
                          if ((x ^ e | 0) > -1 & (j ^ e | 0) < 0) {
                              c[h >> 2] = 1;
                              e = (e >>> 31) + 2147483647 | 0;
                          } else e = j;
                          j = (k & 65535) + -1 << 16 >> 16;
                          if (j << 16 >> 16 > -1) {
                              j = j << 16 >> 16;
                              k = k + -1 | 0;
                          } else break
                      }
                      if ((v | 0) == 13) {
                          v = 0;
                          c[h >> 2] = 1;
                      }
                      e = e >> 16;
                      if ((e | 0) < 1) e = 0; else e = Td((e * 26214 | 0) >>> 15 & 65535, l) | 0;
                      Ab(p, d, e, 40, h);
                      e = f + (n << 1) | 0;
                      He(t, d, e, 40, q, 1);
                      Ca(r, m, e, 29491, 40, h);
                      e = (n << 16) + 2621440 | 0;
                      if ((e | 0) < 10485760) {
                          n = e >> 16;
                          g = g + 22 | 0;
                      } else break
                  }
                  k = d + 104 | 0;
                  j = d + 424 | 0;
                  e = k + 20 | 0;
                  do {
                      a[k >> 0] = a[j >> 0] | 0;
                      k = k + 1 | 0;
                      j = j + 1 | 0;
                  } while ((k | 0) < (e | 0));
                  i = w;
                  return
              } else {
                  n = 0;
                  while (1) {
                      Ie(g, 742, s);
                      Ie(g, 762, t);
                      m = d + 104 + (n + 10 << 1) | 0;
                      Be(s, m, d, 40);
                      k = u;
                      j = s;
                      e = k + 22 | 0;
                      do {
                          b[k >> 1] = b[j >> 1] | 0;
                          k = k + 2 | 0;
                          j = j + 2 | 0;
                      } while ((k | 0) < (e | 0));
                      k = o;
                      e = k + 22 | 0;
                      do {
                          b[k >> 1] = 0;
                          k = k + 2 | 0;
                      } while ((k | 0) < (e | 0));
                      He(t, u, u, 22, o, 0);
                      e = 0;
                      k = 21;
                      do {
                          j = b[u + (k << 16 >> 16 << 1) >> 1] | 0;
                          j = Z(j, j) | 0;
                          if ((j | 0) == 1073741824) {
                              v = 22;
                              break
                          }
                          x = j << 1;
                          j = x + e | 0;
                          if ((x ^ e | 0) > -1 & (j ^ e | 0) < 0) {
                              c[h >> 2] = 1;
                              e = (e >>> 31) + 2147483647 | 0;
                          } else e = j;
                          k = k + -1 << 16 >> 16;
                      } while (k << 16 >> 16 > -1);
                      if ((v | 0) == 22) {
                          v = 0;
                          c[h >> 2] = 1;
                      }
                      l = e >>> 16 & 65535;
                      j = 20;
                      e = 0;
                      k = 20;
                      while (1) {
                          j = Z(b[u + (j + 1 << 1) >> 1] | 0, b[u + (j << 1) >> 1] | 0) | 0;
                          if ((j | 0) == 1073741824) {
                              v = 28;
                              break
                          }
                          x = j << 1;
                          j = x + e | 0;
                          if ((x ^ e | 0) > -1 & (j ^ e | 0) < 0) {
                              c[h >> 2] = 1;
                              e = (e >>> 31) + 2147483647 | 0;
                          } else e = j;
                          j = (k & 65535) + -1 << 16 >> 16;
                          if (j << 16 >> 16 > -1) {
                              j = j << 16 >> 16;
                              k = k + -1 | 0;
                          } else break
                      }
                      if ((v | 0) == 28) {
                          v = 0;
                          c[h >> 2] = 1;
                      }
                      e = e >> 16;
                      if ((e | 0) < 1) e = 0; else e = Td((e * 26214 | 0) >>> 15 & 65535, l) | 0;
                      Ab(p, d, e, 40, h);
                      e = f + (n << 1) | 0;
                      He(t, d, e, 40, q, 1);
                      Ca(r, m, e, 29491, 40, h);
                      e = (n << 16) + 2621440 | 0;
                      if ((e | 0) < 10485760) {
                          n = e >> 16;
                          g = g + 22 | 0;
                      } else break
                  }
                  k = d + 104 | 0;
                  j = d + 424 | 0;
                  e = k + 20 | 0;
                  do {
                      a[k >> 0] = a[j >> 0] | 0;
                      k = k + 1 | 0;
                      j = j + 1 | 0;
                  } while ((k | 0) < (e | 0));
                  i = w;
                  return
              }
          }

          function Db(a, b) {
              a = a | 0;
              b = b | 0;
              var d = 0, e = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(1764) | 0;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              if ((Ua(d) | 0) << 16 >> 16 == 0 ? (e = d + 1748 | 0, (xb(e) | 0) << 16 >> 16 == 0) : 0) {
                  Va(d, 0) | 0;
                  Bb(d + 1304 | 0) | 0;
                  xb(e) | 0;
                  c[d + 1760 >> 2] = 0;
                  c[a >> 2] = d;
                  a = 0;
                  return a | 0
              }
              b = c[d >> 2] | 0;
              if (!b) {
                  a = -1;
                  return a | 0
              }
              Ke(b);
              c[d >> 2] = 0;
              a = -1;
              return a | 0
          }

          function Eb(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function Fb(a, d, f, g, h) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0;
              v = i;
              i = i + 208 | 0;
              u = v + 88 | 0;
              t = v;
              s = a + 1164 | 0;
              j = c[a + 1256 >> 2] | 0;
              if ((g + -5 | 0) >>> 0 < 2) {
                  r = j + 16 | 0;
                  if ((b[r >> 1] | 0) > 0) {
                      q = c[(c[a + 1260 >> 2] | 0) + 32 >> 2] | 0;
                      p = 0;
                      j = 0;
                      while (1) {
                          o = q + (p << 1) | 0;
                          m = b[o >> 1] | 0;
                          if (m << 16 >> 16 > 0) {
                              l = f;
                              n = 0;
                              k = 0;
                              while (1) {
                                  k = e[l >> 1] | k << 1 & 131070;
                                  n = n + 1 << 16 >> 16;
                                  if (n << 16 >> 16 >= m << 16 >> 16) break; else l = l + 2 | 0;
                              }
                              k = k & 65535;
                          } else k = 0;
                          b[u + (p << 1) >> 1] = k;
                          j = j + 1 << 16 >> 16;
                          if (j << 16 >> 16 < (b[r >> 1] | 0)) {
                              f = f + (b[o >> 1] << 1) | 0;
                              p = j << 16 >> 16;
                          } else break
                      }
                  }
              } else {
                  q = j + (d << 1) | 0;
                  if ((b[q >> 1] | 0) > 0) {
                      r = c[(c[a + 1260 >> 2] | 0) + (d << 2) >> 2] | 0;
                      o = 0;
                      j = 0;
                      while (1) {
                          p = r + (o << 1) | 0;
                          m = b[p >> 1] | 0;
                          if (m << 16 >> 16 > 0) {
                              l = f;
                              n = 0;
                              k = 0;
                              while (1) {
                                  k = e[l >> 1] | k << 1 & 131070;
                                  n = n + 1 << 16 >> 16;
                                  if (n << 16 >> 16 >= m << 16 >> 16) break; else l = l + 2 | 0;
                              }
                              k = k & 65535;
                          } else k = 0;
                          b[u + (o << 1) >> 1] = k;
                          j = j + 1 << 16 >> 16;
                          if (j << 16 >> 16 < (b[q >> 1] | 0)) {
                              f = f + (b[p >> 1] << 1) | 0;
                              o = j << 16 >> 16;
                          } else break
                      }
                  }
              }
              Wa(a, d, u, g, h, t);
              Cb(a + 1304 | 0, d, h, t, s);
              yb(a + 1748 | 0, h, 160, s);
              j = 0;
              do {
                  a = h + (j << 1) | 0;
                  b[a >> 1] = e[a >> 1] & 65528;
                  j = j + 1 | 0;
              } while ((j | 0) != 160);
              i = v;
              return
          }

          function Gb(a, f, g, h) {
              a = a | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0;
              j = c[h + 100 >> 2] | 0;
              k = (e[(c[h + 96 >> 2] | 0) + (a << 1) >> 1] | 0) + 65535 | 0;
              h = k & 65535;
              i = h << 16 >> 16 > -1;
              if (a >>> 0 < 8) {
                  if (!i) return;
                  j = c[j + (a << 2) >> 2] | 0;
                  i = k << 16 >> 16;
                  while (1) {
                      b[g + (b[j + (i << 1) >> 1] << 1) >> 1] = (d[f + (i >> 3) >> 0] | 0) >>> (i & 7 ^ 7) & 1;
                      h = h + -1 << 16 >> 16;
                      if (h << 16 >> 16 > -1) i = h << 16 >> 16; else break
                  }
                  return
              } else {
                  if (!i) return;
                  i = k << 16 >> 16;
                  while (1) {
                      b[g + (i << 1) >> 1] = (d[f + (i >> 3) >> 0] | 0) >>> (i & 7 ^ 7) & 1;
                      h = h + -1 << 16 >> 16;
                      if (h << 16 >> 16 > -1) i = h << 16 >> 16; else break
                  }
                  return
              }
          }

          function Hb(a, b, c) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              a = vd(a, c, 31764) | 0;
              return ((sd(b) | 0 | a) << 16 >> 16 != 0) << 31 >> 31 | 0
          }

          function Ib(a, b) {
              a = a | 0;
              b = b | 0;
              wd(a);
              td(b);
              return
          }

          function Jb(d, f, g, h, j, k, l) {
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              var m = 0, n = 0, o = 0, p = 0, q = 0;
              q = i;
              i = i + 512 | 0;
              m = q + 8 | 0;
              n = q + 4 | 0;
              o = q;
              c[o >> 2] = 0;
              p = l << 16 >> 16 == 3;
              if (!((l & 65535) < 2 | p & 1)) {
                  if (l << 16 >> 16 != 2) {
                      j = -1;
                      i = q;
                      return j | 0
                  }
                  xd(d, g, h, m + 2 | 0, o);
                  d = c[o >> 2] | 0;
                  c[k >> 2] = d;
                  ud(f, d, n);
                  f = c[n >> 2] | 0;
                  b[m >> 1] = f;
                  b[m + 490 >> 1] = (f | 0) == 3 ? -1 : g & 65535;
                  a[j >> 0] = f;
                  f = 1;
                  do {
                      m = m + 1 | 0;
                      a[j + f >> 0] = a[m >> 0] | 0;
                      f = f + 1 | 0;
                  } while ((f | 0) != 492);
                  m = 492;
                  i = q;
                  return m | 0
              }
              xd(d, g, h, m, o);
              ud(f, c[o >> 2] | 0, n);
              h = c[n >> 2] | 0;
              if ((h | 0) != 3) {
                  f = c[o >> 2] | 0;
                  c[k >> 2] = f;
                  if ((f | 0) == 8) {
                      switch (h | 0) {
                          case 1: {
                              b[m + 70 >> 1] = 0;
                              break
                          }
                          case 2: {
                              o = m + 70 | 0;
                              b[o >> 1] = e[o >> 1] | 0 | 1;
                              break
                          }
                          default: {
                          }
                      }
                      b[m + 72 >> 1] = g & 1;
                      b[m + 74 >> 1] = g >>> 1 & 1;
                      b[m + 76 >> 1] = g >>> 2 & 1;
                      f = 8;
                  }
              } else {
                  c[k >> 2] = 15;
                  f = 15;
              }
              if (p) {
                  tc(f, m, j, (c[d + 4 >> 2] | 0) + 2392 | 0);
                  j = b[3404 + (c[k >> 2] << 16 >> 16 << 1) >> 1] | 0;
                  i = q;
                  return j | 0
              }
              switch (l << 16 >> 16) {
                  case 0: {
                      sc(f, m, j, (c[d + 4 >> 2] | 0) + 2392 | 0);
                      j = b[3404 + (c[k >> 2] << 16 >> 16 << 1) >> 1] | 0;
                      i = q;
                      return j | 0
                  }
                  case 1: {
                      rc(f, m, j, (c[d + 4 >> 2] | 0) + 2392 | 0);
                      j = b[3436 + (c[k >> 2] << 16 >> 16 << 1) >> 1] | 0;
                      i = q;
                      return j | 0
                  }
                  default: {
                      j = -1;
                      i = q;
                      return j | 0
                  }
              }
              return 0
          }

          function Kb(a, c, d, e, f, g) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0,
                  x = 0, y = 0;
              y = i;
              i = i + 480 | 0;
              x = y;
              g = 240;
              l = f;
              k = a;
              j = x;
              h = 0;
              while (1) {
                  w = ((Z(b[l >> 1] | 0, b[k >> 1] | 0) | 0) + 16384 | 0) >>> 15;
                  b[j >> 1] = w;
                  w = w << 16;
                  h = (Z(w >> 15, w >> 16) | 0) + h | 0;
                  if ((h | 0) < 0) {
                      m = 4;
                      break
                  }
                  g = g + -1 | 0;
                  if (!((g & 65535) << 16 >> 16)) {
                      g = 0;
                      break
                  } else {
                      l = l + 2 | 0;
                      k = k + 2 | 0;
                      j = j + 2 | 0;
                  }
              }
              if ((m | 0) == 4) {
                  h = g & 65535;
                  j = 240 - g | 0;
                  if (!(h << 16 >> 16)) g = 0; else {
                      l = h;
                      k = f + (j << 1) | 0;
                      g = a + (j << 1) | 0;
                      h = x + (j << 1) | 0;
                      while (1) {
                          b[h >> 1] = ((Z(b[k >> 1] | 0, b[g >> 1] | 0) | 0) + 16384 | 0) >>> 15;
                          l = l + -1 << 16 >> 16;
                          if (!(l << 16 >> 16)) {
                              g = 0;
                              break
                          } else {
                              k = k + 2 | 0;
                              g = g + 2 | 0;
                              h = h + 2 | 0;
                          }
                      }
                  }
                  do {
                      k = g & 65535;
                      g = 120;
                      j = x;
                      h = 0;
                      while (1) {
                          w = (b[j >> 1] | 0) >>> 2;
                          u = j + 2 | 0;
                          b[j >> 1] = w;
                          w = w << 16 >> 16;
                          w = Z(w, w) | 0;
                          v = (b[u >> 1] | 0) >>> 2;
                          b[u >> 1] = v;
                          v = v << 16 >> 16;
                          h = ((Z(v, v) | 0) + w << 1) + h | 0;
                          g = g + -1 << 16 >> 16;
                          if (!(g << 16 >> 16)) break; else j = j + 4 | 0;
                      }
                      g = k + 4 | 0;
                  } while ((h | 0) < 1)
              }
              w = h + 1 | 0;
              v = (pe(w) | 0) << 16 >> 16;
              w = w << v;
              b[d >> 1] = w >>> 16;
              b[e >> 1] = (w >>> 1) - (w >> 16 << 15);
              w = x + 478 | 0;
              l = c << 16 >> 16;
              if (c << 16 >> 16 <= 0) {
                  x = v - g | 0;
                  x = x & 65535;
                  i = y;
                  return x | 0
              }
              r = x + 476 | 0;
              s = v + 1 | 0;
              t = 239 - l | 0;
              u = x + (236 - l << 1) | 0;
              c = l;
              d = d + (l << 1) | 0;
              e = e + (l << 1) | 0;
              while (1) {
                  m = Z((t >>> 1) + 65535 & 65535, -2) | 0;
                  k = x + (m + 236 << 1) | 0;
                  m = u + (m << 1) | 0;
                  f = 240 - c | 0;
                  q = f + -1 | 0;
                  j = x + (q << 1) | 0;
                  a = q >>> 1 & 65535;
                  f = x + (f + -2 << 1) | 0;
                  l = Z(b[w >> 1] | 0, b[j >> 1] | 0) | 0;
                  if (!(a << 16 >> 16)) {
                      m = f;
                      k = r;
                  } else {
                      p = r;
                      o = w;
                      while (1) {
                          h = j + -4 | 0;
                          n = o + -4 | 0;
                          l = (Z(b[p >> 1] | 0, b[f >> 1] | 0) | 0) + l | 0;
                          a = a + -1 << 16 >> 16;
                          l = (Z(b[n >> 1] | 0, b[h >> 1] | 0) | 0) + l | 0;
                          if (!(a << 16 >> 16)) break; else {
                              f = j + -6 | 0;
                              p = o + -6 | 0;
                              j = h;
                              o = n;
                          }
                      }
                  }
                  if (q & 1) l = (Z(b[k >> 1] | 0, b[m >> 1] | 0) | 0) + l | 0;
                  q = l << s;
                  b[d >> 1] = q >>> 16;
                  b[e >> 1] = (q >>> 1) - (q >> 16 << 15);
                  if ((c & 65535) + -1 << 16 >> 16 << 16 >> 16 > 0) {
                      t = t + 1 | 0;
                      u = u + 2 | 0;
                      c = c + -1 | 0;
                      d = d + -2 | 0;
                      e = e + -2 | 0;
                  } else break
              }
              x = v - g | 0;
              x = x & 65535;
              i = y;
              return x | 0
          }

          function Lb(a, c, d, f, g, h, j, k) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0,
                  A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0;
              E = i;
              i = i + 3440 | 0;
              D = E + 3420 | 0;
              z = E + 3400 | 0;
              A = E + 3224 | 0;
              C = E;
              x = E + 3320 | 0;
              B = E + 3240 | 0;
              y = E + 24 | 0;
              hc(d, a, x, 2, k);
              rd(x, c, B, A, 5, z, 5, k);
              fc(d, B, y, k);
              pd(10, 5, 5, x, y, z, A, C, k);
              c = f;
              k = c + 80 | 0;
              do {
                  b[c >> 1] = 0;
                  c = c + 2 | 0;
              } while ((c | 0) < (k | 0));
              b[h >> 1] = 65535;
              b[h + 2 >> 1] = 65535;
              b[h + 4 >> 1] = 65535;
              b[h + 6 >> 1] = 65535;
              b[h + 8 >> 1] = 65535;
              p = 0;
              q = C;
              r = D;
              do {
                  a = b[q >> 1] | 0;
                  q = q + 2 | 0;
                  l = (a * 6554 | 0) >>> 15;
                  m = l << 16 >> 16;
                  c = f + (a << 1) | 0;
                  k = b[c >> 1] | 0;
                  if ((b[B + (a << 1) >> 1] | 0) > 0) {
                      b[c >> 1] = k + 4096;
                      b[r >> 1] = 8192;
                      n = l;
                  } else {
                      b[c >> 1] = k + 61440;
                      b[r >> 1] = -8192;
                      n = m + 8 | 0;
                  }
                  r = r + 2 | 0;
                  o = n & 65535;
                  c = a - (l << 2) - m << 16 >> 16;
                  l = h + (c << 1) | 0;
                  k = b[l >> 1] | 0;
                  a = k << 16 >> 16;
                  do if (k << 16 >> 16 >= 0) {
                      m = n << 16 >> 16;
                      if (!((m ^ a) & 8)) {
                          c = h + (c + 5 << 1) | 0;
                          if ((a | 0) > (m | 0)) {
                              b[c >> 1] = k;
                              b[l >> 1] = o;
                              break
                          } else {
                              b[c >> 1] = o;
                              break
                          }
                      } else {
                          c = h + (c + 5 << 1) | 0;
                          if ((a & 7) >>> 0 > (m & 7) >>> 0) {
                              b[c >> 1] = o;
                              break
                          } else {
                              b[c >> 1] = k;
                              b[l >> 1] = o;
                              break
                          }
                      }
                  } else b[l >> 1] = o; while (0);
                  p = p + 1 << 16 >> 16;
              } while (p << 16 >> 16 < 10);
              r = D + 2 | 0;
              p = D + 4 | 0;
              n = D + 6 | 0;
              m = D + 8 | 0;
              l = D + 10 | 0;
              c = D + 12 | 0;
              k = D + 14 | 0;
              a = D + 16 | 0;
              s = D + 18 | 0;
              t = 40;
              u = d + (0 - (b[C >> 1] | 0) << 1) | 0;
              v = d + (0 - (b[C + 2 >> 1] | 0) << 1) | 0;
              w = d + (0 - (b[C + 4 >> 1] | 0) << 1) | 0;
              x = d + (0 - (b[C + 6 >> 1] | 0) << 1) | 0;
              y = d + (0 - (b[C + 8 >> 1] | 0) << 1) | 0;
              z = d + (0 - (b[C + 10 >> 1] | 0) << 1) | 0;
              A = d + (0 - (b[C + 12 >> 1] | 0) << 1) | 0;
              B = d + (0 - (b[C + 14 >> 1] | 0) << 1) | 0;
              f = d + (0 - (b[C + 16 >> 1] | 0) << 1) | 0;
              q = d + (0 - (b[C + 18 >> 1] | 0) << 1) | 0;
              o = g;
              while (1) {
                  K = (Z(b[D >> 1] | 0, b[u >> 1] | 0) | 0) >> 7;
                  J = (Z(b[r >> 1] | 0, b[v >> 1] | 0) | 0) >> 7;
                  I = (Z(b[p >> 1] | 0, b[w >> 1] | 0) | 0) >> 7;
                  H = (Z(b[n >> 1] | 0, b[x >> 1] | 0) | 0) >> 7;
                  G = (Z(b[m >> 1] | 0, b[y >> 1] | 0) | 0) >> 7;
                  F = (Z(b[l >> 1] | 0, b[z >> 1] | 0) | 0) >> 7;
                  C = (Z(b[c >> 1] | 0, b[A >> 1] | 0) | 0) >> 7;
                  d = (Z(b[k >> 1] | 0, b[B >> 1] | 0) | 0) >>> 7;
                  g = (Z(b[a >> 1] | 0, b[f >> 1] | 0) | 0) >>> 7;
                  b[o >> 1] = (K + 128 + J + I + H + G + F + C + d + g + ((Z(b[s >> 1] | 0, b[q >> 1] | 0) | 0) >>> 7) | 0) >>> 8;
                  t = t + -1 << 16 >> 16;
                  if (!(t << 16 >> 16)) break; else {
                      u = u + 2 | 0;
                      v = v + 2 | 0;
                      w = w + 2 | 0;
                      x = x + 2 | 0;
                      y = y + 2 | 0;
                      z = z + 2 | 0;
                      A = A + 2 | 0;
                      B = B + 2 | 0;
                      f = f + 2 | 0;
                      q = q + 2 | 0;
                      o = o + 2 | 0;
                  }
              }
              c = 0;
              do {
                  k = h + (c << 1) | 0;
                  a = b[k >> 1] | 0;
                  if ((c | 0) < 5) a = (e[j + ((a & 7) << 1) >> 1] | a & 8) & 65535; else a = b[j + ((a & 7) << 1) >> 1] | 0;
                  b[k >> 1] = a;
                  c = c + 1 | 0;
              } while ((c | 0) != 10);
              i = E;
              return
          }

          function Mb(a, d, e, f, g, h, j, k) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0,
                  A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0;
              N = i;
              i = i + 3456 | 0;
              I = N + 3448 | 0;
              G = N + 3360 | 0;
              E = N + 3368 | 0;
              p = N + 3280 | 0;
              H = N + 3200 | 0;
              F = N;
              K = (f & 65535) << 17;
              M = e << 16 >> 16;
              J = e << 16 >> 16 < 40;
              if (J) {
                  f = K >> 16;
                  e = M;
                  do {
                      m = (Z(b[d + (e - M << 1) >> 1] | 0, f) | 0) >> 15;
                      if ((m | 0) > 32767) {
                          c[k >> 2] = 1;
                          m = 32767;
                      }
                      D = d + (e << 1) | 0;
                      b[D >> 1] = Rd(b[D >> 1] | 0, m & 65535, k) | 0;
                      e = e + 1 | 0;
                  } while ((e & 65535) << 16 >> 16 != 40)
              }
              hc(d, a, E, 1, k);
              qd(E, H, p, 8);
              fc(d, H, F, k);
              D = G + 2 | 0;
              b[G >> 1] = 0;
              b[D >> 1] = 1;
              a = 1;
              m = 0;
              o = 1;
              p = 0;
              n = -1;
              do {
                  B = b[2830 + (p << 1) >> 1] | 0;
                  C = B << 16 >> 16;
                  A = 0;
                  do {
                      y = b[2834 + (A << 1) >> 1] | 0;
                      z = y << 16 >> 16;
                      x = a;
                      v = C;
                      u = o;
                      w = B;
                      t = n;
                      while (1) {
                          l = b[E + (v << 1) >> 1] | 0;
                          r = b[F + (v * 80 | 0) + (v << 1) >> 1] | 0;
                          e = z;
                          o = 1;
                          s = y;
                          a = y;
                          n = -1;
                          while (1) {
                              f = Rd(l, b[E + (e << 1) >> 1] | 0, k) | 0;
                              f = f << 16 >> 16;
                              f = (Z(f, f) | 0) >>> 15;
                              q = (b[F + (v * 80 | 0) + (e << 1) >> 1] << 15) + 32768 + ((b[F + (e * 80 | 0) + (e << 1) >> 1] | 0) + r << 14) | 0;
                              if (((Z(f << 16 >> 16, o << 16 >> 16) | 0) - (Z(q >> 16, n << 16 >> 16) | 0) << 1 | 0) > 0) {
                                  o = q >>> 16 & 65535;
                                  a = s;
                                  n = f & 65535;
                              }
                              q = e + 5 | 0;
                              s = q & 65535;
                              if (s << 16 >> 16 >= 40) break; else e = q << 16 >> 16;
                          }
                          if (((Z(n << 16 >> 16, u << 16 >> 16) | 0) - (Z(o << 16 >> 16, t << 16 >> 16) | 0) << 1 | 0) > 0) {
                              b[G >> 1] = w;
                              b[D >> 1] = a;
                              m = w;
                          } else {
                              a = x;
                              o = u;
                              n = t;
                          }
                          q = v + 5 | 0;
                          w = q & 65535;
                          if (w << 16 >> 16 >= 40) break; else {
                              x = a;
                              v = q << 16 >> 16;
                              u = o;
                              t = n;
                          }
                      }
                      A = A + 1 | 0;
                  } while ((A | 0) != 4);
                  p = p + 1 | 0;
              } while ((p | 0) != 2);
              r = a;
              s = m;
              f = g;
              e = f + 80 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (e | 0));
              o = s;
              e = 0;
              q = 0;
              f = 0;
              while (1) {
                  m = o << 16 >> 16;
                  l = b[H + (m << 1) >> 1] | 0;
                  a = (m * 6554 | 0) >>> 15;
                  o = a << 16;
                  p = o >> 15;
                  n = m - (p + (a << 3) << 16 >> 17) | 0;
                  switch (n << 16 >> 16 | 0) {
                      case 0: {
                          p = o >> 10;
                          a = 1;
                          break
                      }
                      case 1: {
                          if (!((e & 65535) << 16 >> 16)) a = 0; else {
                              p = a << 22 >> 16 | 16;
                              a = 1;
                          }
                          break
                      }
                      case 2: {
                          p = a << 22 >> 16 | 32;
                          a = 1;
                          break
                      }
                      case 3: {
                          p = a << 17 >> 16 | 1;
                          a = 0;
                          break
                      }
                      case 4: {
                          p = a << 22 >> 16 | 48;
                          a = 1;
                          break
                      }
                      default: {
                          p = a;
                          a = n & 65535;
                      }
                  }
                  p = p & 65535;
                  n = g + (m << 1) | 0;
                  if (l << 16 >> 16 > 0) {
                      b[n >> 1] = 8191;
                      b[I + (e << 1) >> 1] = 32767;
                      m = a << 16 >> 16;
                      if (a << 16 >> 16 < 0) {
                          m = 0 - m << 16;
                          if ((m | 0) < 983040) m = 1 >>> (m >> 16) & 65535; else m = 0;
                      } else {
                          F = 1 << m;
                          m = (F << 16 >> 16 >> m | 0) == 1 ? F & 65535 : 32767;
                      }
                      f = Rd(f, m, k) | 0;
                  } else {
                      b[n >> 1] = -8192;
                      b[I + (e << 1) >> 1] = -32768;
                  }
                  m = Rd(q, p, k) | 0;
                  e = e + 1 | 0;
                  if ((e | 0) == 2) {
                      q = m;
                      break
                  }
                  o = b[G + (e << 1) >> 1] | 0;
                  q = m;
              }
              b[j >> 1] = f;
              p = I + 2 | 0;
              o = b[I >> 1] | 0;
              a = 0;
              n = d + (0 - (s << 16 >> 16) << 1) | 0;
              m = d + (0 - (r << 16 >> 16) << 1) | 0;
              do {
                  f = Z(b[n >> 1] | 0, o) | 0;
                  n = n + 2 | 0;
                  if ((f | 0) != 1073741824 ? (L = f << 1, !((f | 0) > 0 & (L | 0) < 0)) : 0) l = L; else {
                      c[k >> 2] = 1;
                      l = 2147483647;
                  }
                  e = Z(b[p >> 1] | 0, b[m >> 1] | 0) | 0;
                  m = m + 2 | 0;
                  if ((e | 0) != 1073741824) {
                      f = (e << 1) + l | 0;
                      if ((e ^ l | 0) > 0 & (f ^ l | 0) < 0) {
                          c[k >> 2] = 1;
                          f = (l >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      f = 2147483647;
                  }
                  b[h + (a << 1) >> 1] = Ce(f, k) | 0;
                  a = a + 1 | 0;
              } while ((a | 0) != 40);
              if (!J) {
                  i = N;
                  return q | 0
              }
              e = K >> 16;
              f = M;
              do {
                  l = (Z(b[g + (f - M << 1) >> 1] | 0, e) | 0) >> 15;
                  if ((l | 0) > 32767) {
                      c[k >> 2] = 1;
                      l = 32767;
                  }
                  h = g + (f << 1) | 0;
                  b[h >> 1] = Rd(b[h >> 1] | 0, l & 65535, k) | 0;
                  f = f + 1 | 0;
              } while ((f & 65535) << 16 >> 16 != 40);
              i = N;
              return q | 0
          }

          function Nb(a, d, e, f, g, h, j, k, l, m) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              var n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0;
              x = i;
              i = i + 3456 | 0;
              r = x + 3360 | 0;
              s = x + 3368 | 0;
              t = x + 3280 | 0;
              u = x + 3200 | 0;
              v = x;
              w = g << 16 >> 16;
              p = w << 1;
              if ((p | 0) == (w << 17 >> 16 | 0)) q = p; else {
                  c[m >> 2] = 1;
                  q = g << 16 >> 16 > 0 ? 32767 : -32768;
              }
              w = f << 16 >> 16;
              n = f << 16 >> 16 < 40;
              if (n) {
                  g = q << 16 >> 16;
                  o = w;
                  do {
                      f = e + (o << 1) | 0;
                      p = (Z(b[e + (o - w << 1) >> 1] | 0, g) | 0) >> 15;
                      if ((p | 0) > 32767) {
                          c[m >> 2] = 1;
                          p = 32767;
                      }
                      b[f >> 1] = Rd(b[f >> 1] | 0, p & 65535, m) | 0;
                      o = o + 1 | 0;
                  } while ((o & 65535) << 16 >> 16 != 40)
              }
              hc(e, d, s, 1, m);
              qd(s, u, t, 8);
              fc(e, u, v, m);
              Ob(a, s, v, l, r);
              p = Pb(a, r, u, h, e, j, k, m) | 0;
              if (!n) {
                  i = x;
                  return p | 0
              }
              o = q << 16 >> 16;
              g = w;
              do {
                  f = h + (g << 1) | 0;
                  n = (Z(b[h + (g - w << 1) >> 1] | 0, o) | 0) >> 15;
                  if ((n | 0) > 32767) {
                      c[m >> 2] = 1;
                      n = 32767;
                  }
                  b[f >> 1] = Rd(b[f >> 1] | 0, n & 65535, m) | 0;
                  g = g + 1 | 0;
              } while ((g & 65535) << 16 >> 16 != 40);
              i = x;
              return p | 0
          }

          function Ob(a, c, d, f, g) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0,
                  w = 0, x = 0;
              x = g + 2 | 0;
              b[g >> 1] = 0;
              b[x >> 1] = 1;
              v = a << 16 >> 16 << 1;
              h = 1;
              w = 0;
              a = -1;
              do {
                  u = (w << 3) + v << 16 >> 16;
                  k = b[f + (u << 1) >> 1] | 0;
                  u = b[f + ((u | 1) << 1) >> 1] | 0;
                  i = k << 16 >> 16;
                  a:do if (k << 16 >> 16 < 40) {
                      t = u << 16 >> 16;
                      if (u << 16 >> 16 < 40) s = h; else while (1) {
                          if ((a << 16 >> 16 | 0) < (0 - (h << 16 >> 16) | 0)) {
                              b[g >> 1] = k;
                              b[x >> 1] = u;
                              j = 1;
                              a = -1;
                          } else j = h;
                          h = i + 5 | 0;
                          k = h & 65535;
                          if (k << 16 >> 16 >= 40) {
                              h = j;
                              break a
                          } else {
                              i = h << 16 >> 16;
                              h = j;
                          }
                      }
                      while (1) {
                          q = b[d + (i * 80 | 0) + (i << 1) >> 1] | 0;
                          p = e[c + (i << 1) >> 1] | 0;
                          o = t;
                          h = 1;
                          r = u;
                          j = u;
                          l = -1;
                          while (1) {
                              n = (e[c + (o << 1) >> 1] | 0) + p << 16 >> 16;
                              n = (Z(n, n) | 0) >>> 15;
                              m = (b[d + (i * 80 | 0) + (o << 1) >> 1] << 15) + 32768 + ((b[d + (o * 80 | 0) + (o << 1) >> 1] | 0) + q << 14) | 0;
                              if (((Z(n << 16 >> 16, h << 16 >> 16) | 0) - (Z(m >> 16, l << 16 >> 16) | 0) << 1 | 0) > 0) {
                                  h = m >>> 16 & 65535;
                                  j = r;
                                  l = n & 65535;
                              }
                              m = o + 5 | 0;
                              r = m & 65535;
                              if (r << 16 >> 16 >= 40) break; else o = m << 16 >> 16;
                          }
                          if (((Z(l << 16 >> 16, s << 16 >> 16) | 0) - (Z(h << 16 >> 16, a << 16 >> 16) | 0) << 1 | 0) > 0) {
                              b[g >> 1] = k;
                              b[x >> 1] = j;
                              a = l;
                          } else h = s;
                          i = i + 5 | 0;
                          k = i & 65535;
                          if (k << 16 >> 16 >= 40) break; else {
                              i = i << 16 >> 16;
                              s = h;
                          }
                      }
                  } while (0);
                  w = w + 1 | 0;
              } while ((w | 0) != 2);
              return
          }

          function Pb(a, d, e, f, g, h, i, j) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              j = j | 0;
              var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;
              k = f;
              l = k + 80 | 0;
              do {
                  b[k >> 1] = 0;
                  k = k + 2 | 0;
              } while ((k | 0) < (l | 0));
              k = b[d >> 1] | 0;
              o = (k * 6554 | 0) >>> 15;
              l = o << 16 >> 16;
              n = (748250 >>> ((k + (Z(l, -5) | 0) << 16 >> 16) + ((a << 16 >> 16) * 5 | 0) | 0) & 1 | 0) == 0;
              m = (b[e + (k << 1) >> 1] | 0) > 0;
              p = m ? 32767 : -32768;
              b[f + (k << 1) >> 1] = m ? 8191 : -8192;
              k = d + 2 | 0;
              a = b[k >> 1] | 0;
              f = f + (a << 1) | 0;
              if ((b[e + (a << 1) >> 1] | 0) > 0) {
                  b[f >> 1] = 8191;
                  e = 32767;
                  f = (m & 1 | 2) & 65535;
              } else {
                  b[f >> 1] = -8192;
                  e = -32768;
                  f = m & 1;
              }
              o = ((a * 6554 | 0) >>> 15 << 3) + (n ? o : l + 64 | 0) & 65535;
              b[i >> 1] = f;
              n = 0;
              m = g + (0 - (b[d >> 1] | 0) << 1) | 0;
              f = g + (0 - (b[k >> 1] | 0) << 1) | 0;
              do {
                  k = Z(p, b[m >> 1] | 0) | 0;
                  m = m + 2 | 0;
                  if ((k | 0) == 1073741824) {
                      c[j >> 2] = 1;
                      a = 2147483647;
                  } else a = k << 1;
                  l = Z(e, b[f >> 1] | 0) | 0;
                  f = f + 2 | 0;
                  if ((l | 0) != 1073741824) {
                      k = (l << 1) + a | 0;
                      if ((l ^ a | 0) > 0 & (k ^ a | 0) < 0) {
                          c[j >> 2] = 1;
                          k = (a >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[j >> 2] = 1;
                      k = 2147483647;
                  }
                  b[h + (n << 1) >> 1] = Ce(k, j) | 0;
                  n = n + 1 | 0;
              } while ((n | 0) != 40);
              return o | 0
          }

          function Qb(a, d, f, g, h, j, k, l) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              var m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0,
                  B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0,
                  Q = 0, R = 0, S = 0, T = 0, U = 0;
              U = i;
              i = i + 3440 | 0;
              M = U + 3360 | 0;
              N = U + 3280 | 0;
              P = U + 3200 | 0;
              O = U;
              R = (g & 65535) << 17;
              T = f << 16 >> 16;
              Q = f << 16 >> 16 < 40;
              if (Q) {
                  f = R >> 16;
                  m = T;
                  do {
                      g = (Z(b[d + (m - T << 1) >> 1] | 0, f) | 0) >> 15;
                      if ((g | 0) > 32767) {
                          c[l >> 2] = 1;
                          g = 32767;
                      }
                      L = d + (m << 1) | 0;
                      b[L >> 1] = Rd(b[L >> 1] | 0, g & 65535, l) | 0;
                      m = m + 1 | 0;
                  } while ((m & 65535) << 16 >> 16 != 40)
              }
              hc(d, a, M, 1, l);
              qd(M, P, N, 6);
              fc(d, P, O, l);
              L = 1;
              n = 2;
              o = 1;
              g = 0;
              m = 1;
              a = -1;
              p = 1;
              while (1) {
                  K = 2;
                  s = 2;
                  while (1) {
                      H = 0;
                      I = 0;
                      J = p;
                      G = s;
                      while (1) {
                          if (I << 16 >> 16 < 40) {
                              C = J << 16 >> 16;
                              D = J << 16 >> 16 < 40;
                              E = G << 16 >> 16;
                              F = G << 16 >> 16 < 40;
                              A = I << 16 >> 16;
                              B = I;
                              while (1) {
                                  if ((b[N + (A << 1) >> 1] | 0) > -1) {
                                      x = b[O + (A * 80 | 0) + (A << 1) >> 1] | 0;
                                      if (D) {
                                          y = e[M + (A << 1) >> 1] | 0;
                                          w = C;
                                          r = 1;
                                          z = J;
                                          f = J;
                                          s = 0;
                                          q = -1;
                                          while (1) {
                                              u = (e[M + (w << 1) >> 1] | 0) + y | 0;
                                              v = u << 16 >> 16;
                                              v = (Z(v, v) | 0) >>> 15;
                                              t = (b[O + (A * 80 | 0) + (w << 1) >> 1] << 15) + 32768 + ((b[O + (w * 80 | 0) + (w << 1) >> 1] | 0) + x << 14) | 0;
                                              if (((Z(v << 16 >> 16, r << 16 >> 16) | 0) - (Z(t >> 16, q << 16 >> 16) | 0) << 1 | 0) > 0) {
                                                  r = t >>> 16 & 65535;
                                                  f = z;
                                                  s = u & 65535;
                                                  q = v & 65535;
                                              }
                                              t = w + 5 | 0;
                                              z = t & 65535;
                                              if (z << 16 >> 16 >= 40) break; else w = t << 16 >> 16;
                                          }
                                      } else {
                                          r = 1;
                                          f = J;
                                          s = 0;
                                      }
                                      if (F) {
                                          y = s & 65535;
                                          z = f << 16 >> 16;
                                          w = (r << 16 >> 16 << 14) + 32768 | 0;
                                          v = E;
                                          s = 1;
                                          x = G;
                                          q = G;
                                          r = -1;
                                          while (1) {
                                              u = (e[M + (v << 1) >> 1] | 0) + y << 16 >> 16;
                                              u = (Z(u, u) | 0) >>> 15;
                                              t = w + (b[O + (v * 80 | 0) + (v << 1) >> 1] << 12) + ((b[O + (A * 80 | 0) + (v << 1) >> 1] | 0) + (b[O + (z * 80 | 0) + (v << 1) >> 1] | 0) << 13) | 0;
                                              if (((Z(u << 16 >> 16, s << 16 >> 16) | 0) - (Z(t >> 16, r << 16 >> 16) | 0) << 1 | 0) > 0) {
                                                  s = t >>> 16 & 65535;
                                                  q = x;
                                                  r = u & 65535;
                                              }
                                              t = v + 5 | 0;
                                              x = t & 65535;
                                              if (x << 16 >> 16 >= 40) {
                                                  w = s;
                                                  v = r;
                                                  break
                                              } else v = t << 16 >> 16;
                                          }
                                      } else {
                                          w = 1;
                                          q = G;
                                          v = -1;
                                      }
                                      s = Z(v << 16 >> 16, m << 16 >> 16) | 0;
                                      if ((s | 0) == 1073741824) {
                                          c[l >> 2] = 1;
                                          t = 2147483647;
                                      } else t = s << 1;
                                      s = Z(w << 16 >> 16, a << 16 >> 16) | 0;
                                      if ((s | 0) == 1073741824) {
                                          c[l >> 2] = 1;
                                          r = 2147483647;
                                      } else r = s << 1;
                                      s = t - r | 0;
                                      if (((s ^ t) & (r ^ t) | 0) < 0) {
                                          c[l >> 2] = 1;
                                          s = (t >>> 31) + 2147483647 | 0;
                                      }
                                      z = (s | 0) > 0;
                                      n = z ? q : n;
                                      o = z ? f : o;
                                      g = z ? B : g;
                                      m = z ? w : m;
                                      a = z ? v : a;
                                  }
                                  s = A + 5 | 0;
                                  B = s & 65535;
                                  if (B << 16 >> 16 >= 40) break; else A = s << 16 >> 16;
                              }
                          }
                          H = H + 1 << 16 >> 16;
                          if (H << 16 >> 16 >= 3) break; else {
                              F = G;
                              G = J;
                              J = I;
                              I = F;
                          }
                      }
                      f = K + 2 | 0;
                      s = f & 65535;
                      if (s << 16 >> 16 >= 5) break; else K = f & 65535;
                  }
                  f = L + 2 | 0;
                  p = f & 65535;
                  if (p << 16 >> 16 < 4) L = f & 65535; else {
                      s = n;
                      n = o;
                      break
                  }
              }
              f = h;
              m = f + 80 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (m | 0));
              v = g << 16 >> 16;
              a = b[P + (v << 1) >> 1] | 0;
              g = (v * 6554 | 0) >>> 15;
              f = g << 16;
              m = v - (((f >> 16) * 327680 | 0) >>> 16) | 0;
              switch (m << 16 >> 16 | 0) {
                  case 1: {
                      g = f >> 12;
                      break
                  }
                  case 2: {
                      g = f >> 8;
                      m = 2;
                      break
                  }
                  case 3: {
                      g = g << 20 >> 16 | 8;
                      m = 1;
                      break
                  }
                  case 4: {
                      g = g << 24 >> 16 | 128;
                      m = 2;
                      break
                  }
                  default: {
                  }
              }
              f = h + (v << 1) | 0;
              if (a << 16 >> 16 > 0) {
                  b[f >> 1] = 8191;
                  z = 32767;
                  o = 65536 << (m << 16 >> 16) >>> 16 & 65535;
              } else {
                  b[f >> 1] = -8192;
                  z = -32768;
                  o = 0;
              }
              t = n << 16 >> 16;
              n = b[P + (t << 1) >> 1] | 0;
              f = (t * 6554 | 0) >>> 15;
              m = f << 16;
              a = t - (((m >> 16) * 327680 | 0) >>> 16) | 0;
              switch (a << 16 >> 16 | 0) {
                  case 1: {
                      f = m >> 12;
                      break
                  }
                  case 2: {
                      f = m >> 8;
                      a = 2;
                      break
                  }
                  case 3: {
                      f = f << 20 >> 16 | 8;
                      a = 1;
                      break
                  }
                  case 4: {
                      f = f << 24 >> 16 | 128;
                      a = 2;
                      break
                  }
                  default: {
                  }
              }
              m = h + (t << 1) | 0;
              if (n << 16 >> 16 > 0) {
                  b[m >> 1] = 8191;
                  u = 32767;
                  o = (65536 << (a << 16 >> 16) >>> 16) + (o & 65535) & 65535;
              } else {
                  b[m >> 1] = -8192;
                  u = -32768;
              }
              p = f + g | 0;
              r = s << 16 >> 16;
              n = b[P + (r << 1) >> 1] | 0;
              g = (r * 6554 | 0) >>> 15;
              f = g << 16;
              m = r - (((f >> 16) * 327680 | 0) >>> 16) | 0;
              switch (m << 16 >> 16 | 0) {
                  case 1: {
                      f = f >> 12;
                      break
                  }
                  case 2: {
                      f = f >> 8;
                      m = 2;
                      break
                  }
                  case 3: {
                      f = g << 20 >> 16 | 8;
                      m = 1;
                      break
                  }
                  case 4: {
                      f = g << 24 >> 16 | 128;
                      m = 2;
                      break
                  }
                  default:
                      f = g;
              }
              g = h + (r << 1) | 0;
              if (n << 16 >> 16 > 0) {
                  b[g >> 1] = 8191;
                  s = 32767;
                  g = (65536 << (m << 16 >> 16) >>> 16) + (o & 65535) & 65535;
              } else {
                  b[g >> 1] = -8192;
                  s = -32768;
                  g = o;
              }
              q = p + f | 0;
              b[k >> 1] = g;
              o = 0;
              p = d + (0 - v << 1) | 0;
              a = d + (0 - t << 1) | 0;
              n = d + (0 - r << 1) | 0;
              do {
                  g = Z(b[p >> 1] | 0, z) | 0;
                  p = p + 2 | 0;
                  if ((g | 0) != 1073741824 ? (S = g << 1, !((g | 0) > 0 & (S | 0) < 0)) : 0) m = S; else {
                      c[l >> 2] = 1;
                      m = 2147483647;
                  }
                  g = Z(b[a >> 1] | 0, u) | 0;
                  a = a + 2 | 0;
                  if ((g | 0) != 1073741824) {
                      f = (g << 1) + m | 0;
                      if ((g ^ m | 0) > 0 & (f ^ m | 0) < 0) {
                          c[l >> 2] = 1;
                          f = (m >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[l >> 2] = 1;
                      f = 2147483647;
                  }
                  m = Z(b[n >> 1] | 0, s) | 0;
                  n = n + 2 | 0;
                  if ((m | 0) != 1073741824) {
                      g = (m << 1) + f | 0;
                      if ((m ^ f | 0) > 0 & (g ^ f | 0) < 0) {
                          c[l >> 2] = 1;
                          g = (f >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[l >> 2] = 1;
                      g = 2147483647;
                  }
                  b[j + (o << 1) >> 1] = Ce(g, l) | 0;
                  o = o + 1 | 0;
              } while ((o | 0) != 40);
              g = q & 65535;
              if (!Q) {
                  i = U;
                  return g | 0
              }
              m = R >> 16;
              f = T;
              do {
                  a = (Z(b[h + (f - T << 1) >> 1] | 0, m) | 0) >> 15;
                  if ((a | 0) > 32767) {
                      c[l >> 2] = 1;
                      a = 32767;
                  }
                  j = h + (f << 1) | 0;
                  b[j >> 1] = Rd(b[j >> 1] | 0, a & 65535, l) | 0;
                  f = f + 1 | 0;
              } while ((f & 65535) << 16 >> 16 != 40);
              i = U;
              return g | 0
          }

          function Rb(a, d, f, g, h, j, k, l, m) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              var n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0,
                  C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0,
                  R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, _ = 0, $ = 0, aa = 0, ba = 0, ca = 0, da = 0;
              da = i;
              i = i + 3456 | 0;
              _ = da + 3448 | 0;
              X = da + 3360 | 0;
              U = da + 3368 | 0;
              V = da + 3280 | 0;
              Y = da + 3200 | 0;
              W = da;
              aa = (g & 65535) << 17;
              ca = f << 16 >> 16;
              $ = f << 16 >> 16 < 40;
              if ($) {
                  f = aa >> 16;
                  n = ca;
                  do {
                      g = (Z(b[d + (n - ca << 1) >> 1] | 0, f) | 0) >> 15;
                      if ((g | 0) > 32767) {
                          c[m >> 2] = 1;
                          g = 32767;
                      }
                      T = d + (n << 1) | 0;
                      b[T >> 1] = Rd(b[T >> 1] | 0, g & 65535, m) | 0;
                      n = n + 1 | 0;
                  } while ((n & 65535) << 16 >> 16 != 40)
              }
              hc(d, a, U, 1, m);
              qd(U, Y, V, 4);
              fc(d, Y, W, m);
              R = X + 2 | 0;
              b[X >> 1] = 0;
              S = X + 4 | 0;
              b[R >> 1] = 1;
              T = X + 6 | 0;
              b[S >> 1] = 2;
              b[T >> 1] = 3;
              r = 3;
              p = 2;
              o = 1;
              g = 0;
              f = 1;
              n = -1;
              q = 3;
              do {
                  M = 0;
                  N = 0;
                  O = q;
                  P = 1;
                  Q = 2;
                  while (1) {
                      if (N << 16 >> 16 < 40) {
                          G = P << 16 >> 16;
                          H = P << 16 >> 16 < 40;
                          I = Q << 16 >> 16;
                          J = Q << 16 >> 16 < 40;
                          K = O << 16 >> 16;
                          L = O << 16 >> 16 < 40;
                          F = N << 16 >> 16;
                          E = p;
                          C = o;
                          B = f;
                          D = N;
                          while (1) {
                              if ((b[V + (F << 1) >> 1] | 0) > -1) {
                                  t = b[W + (F * 80 | 0) + (F << 1) >> 1] | 0;
                                  if (H) {
                                      s = e[U + (F << 1) >> 1] | 0;
                                      u = G;
                                      z = 1;
                                      p = P;
                                      o = P;
                                      x = 0;
                                      y = -1;
                                      while (1) {
                                          w = (e[U + (u << 1) >> 1] | 0) + s | 0;
                                          v = w << 16 >> 16;
                                          v = (Z(v, v) | 0) >>> 15;
                                          A = (b[W + (F * 80 | 0) + (u << 1) >> 1] << 15) + 32768 + ((b[W + (u * 80 | 0) + (u << 1) >> 1] | 0) + t << 14) | 0;
                                          if (((Z(v << 16 >> 16, z << 16 >> 16) | 0) - (Z(A >> 16, y << 16 >> 16) | 0) << 1 | 0) > 0) {
                                              z = A >>> 16 & 65535;
                                              o = p;
                                              x = w & 65535;
                                              y = v & 65535;
                                          }
                                          A = u + 5 | 0;
                                          p = A & 65535;
                                          if (p << 16 >> 16 >= 40) break; else u = A << 16 >> 16;
                                      }
                                  } else {
                                      z = 1;
                                      o = P;
                                      x = 0;
                                  }
                                  if (J) {
                                      f = x & 65535;
                                      a = o << 16 >> 16;
                                      t = (z << 16 >> 16 << 14) + 32768 | 0;
                                      u = I;
                                      A = 1;
                                      s = Q;
                                      p = Q;
                                      y = 0;
                                      x = -1;
                                      while (1) {
                                          w = (e[U + (u << 1) >> 1] | 0) + f | 0;
                                          v = w << 16 >> 16;
                                          v = (Z(v, v) | 0) >>> 15;
                                          z = t + (b[W + (u * 80 | 0) + (u << 1) >> 1] << 12) + ((b[W + (F * 80 | 0) + (u << 1) >> 1] | 0) + (b[W + (a * 80 | 0) + (u << 1) >> 1] | 0) << 13) | 0;
                                          if (((Z(v << 16 >> 16, A << 16 >> 16) | 0) - (Z(z >> 16, x << 16 >> 16) | 0) << 1 | 0) > 0) {
                                              A = z >>> 16 & 65535;
                                              p = s;
                                              y = w & 65535;
                                              x = v & 65535;
                                          }
                                          z = u + 5 | 0;
                                          s = z & 65535;
                                          if (s << 16 >> 16 >= 40) break; else u = z << 16 >> 16;
                                      }
                                  } else {
                                      A = 1;
                                      p = Q;
                                      y = 0;
                                  }
                                  if (L) {
                                      t = y & 65535;
                                      s = p << 16 >> 16;
                                      a = o << 16 >> 16;
                                      v = (A & 65535) << 16 | 32768;
                                      w = K;
                                      f = 1;
                                      u = O;
                                      z = O;
                                      A = -1;
                                      while (1) {
                                          x = (e[U + (w << 1) >> 1] | 0) + t << 16 >> 16;
                                          x = (Z(x, x) | 0) >>> 15;
                                          y = (b[W + (w * 80 | 0) + (w << 1) >> 1] << 12) + v + ((b[W + (a * 80 | 0) + (w << 1) >> 1] | 0) + (b[W + (s * 80 | 0) + (w << 1) >> 1] | 0) + (b[W + (F * 80 | 0) + (w << 1) >> 1] | 0) << 13) | 0;
                                          if (((Z(x << 16 >> 16, f << 16 >> 16) | 0) - (Z(y >> 16, A << 16 >> 16) | 0) << 1 | 0) > 0) {
                                              f = y >>> 16 & 65535;
                                              z = u;
                                              A = x & 65535;
                                          }
                                          y = w + 5 | 0;
                                          u = y & 65535;
                                          if (u << 16 >> 16 >= 40) break; else w = y << 16 >> 16;
                                      }
                                  } else {
                                      f = 1;
                                      z = O;
                                      A = -1;
                                  }
                                  if (((Z(A << 16 >> 16, B << 16 >> 16) | 0) - (Z(f << 16 >> 16, n << 16 >> 16) | 0) << 1 | 0) > 0) {
                                      b[X >> 1] = D;
                                      b[R >> 1] = o;
                                      b[S >> 1] = p;
                                      b[T >> 1] = z;
                                      r = z;
                                      g = D;
                                      n = A;
                                  } else {
                                      p = E;
                                      o = C;
                                      f = B;
                                  }
                              } else {
                                  p = E;
                                  o = C;
                                  f = B;
                              }
                              w = F + 5 | 0;
                              D = w & 65535;
                              if (D << 16 >> 16 >= 40) break; else {
                                  F = w << 16 >> 16;
                                  E = p;
                                  C = o;
                                  B = f;
                              }
                          }
                      }
                      M = M + 1 << 16 >> 16;
                      if (M << 16 >> 16 >= 4) break; else {
                          K = Q;
                          L = O;
                          Q = P;
                          P = N;
                          O = K;
                          N = L;
                      }
                  }
                  q = q + 1 << 16 >> 16;
              } while (q << 16 >> 16 < 5);
              A = r;
              z = p;
              y = o;
              x = g;
              g = h;
              f = g + 80 | 0;
              do {
                  b[g >> 1] = 0;
                  g = g + 2 | 0;
              } while ((g | 0) < (f | 0));
              a = x;
              f = 0;
              n = 0;
              g = 0;
              while (1) {
                  p = a << 16 >> 16;
                  q = b[Y + (p << 1) >> 1] | 0;
                  a = p * 13108 >> 16;
                  o = p - ((a * 327680 | 0) >>> 16) | 0;
                  a = b[l + (a << 1) >> 1] | 0;
                  switch (o << 16 >> 16 | 0) {
                      case 1: {
                          r = a << 16 >> 16 << 3 & 65535;
                          break
                      }
                      case 2: {
                          r = a << 16 >> 16 << 6 & 65535;
                          break
                      }
                      case 3: {
                          r = a << 16 >> 16 << 10 & 65535;
                          break
                      }
                      case 4: {
                          r = ((a & 65535) << 10 | 512) & 65535;
                          o = 3;
                          break
                      }
                      default:
                          r = a;
                  }
                  a = h + (p << 1) | 0;
                  if (q << 16 >> 16 > 0) {
                      b[a >> 1] = 8191;
                      a = 32767;
                      g = (65536 << (o << 16 >> 16) >>> 16) + (g & 65535) & 65535;
                  } else {
                      b[a >> 1] = -8192;
                      a = -32768;
                  }
                  b[_ + (f << 1) >> 1] = a;
                  n = (r & 65535) + (n & 65535) | 0;
                  f = f + 1 | 0;
                  if ((f | 0) == 4) {
                      w = n;
                      break
                  }
                  a = b[X + (f << 1) >> 1] | 0;
              }
              b[k >> 1] = g;
              t = _ + 2 | 0;
              u = _ + 4 | 0;
              v = _ + 6 | 0;
              a = b[_ >> 1] | 0;
              s = 0;
              o = d + (0 - (x << 16 >> 16) << 1) | 0;
              p = d + (0 - (y << 16 >> 16) << 1) | 0;
              q = d + (0 - (z << 16 >> 16) << 1) | 0;
              r = d + (0 - (A << 16 >> 16) << 1) | 0;
              do {
                  g = Z(b[o >> 1] | 0, a) | 0;
                  o = o + 2 | 0;
                  if ((g | 0) != 1073741824 ? (ba = g << 1, !((g | 0) > 0 & (ba | 0) < 0)) : 0) n = ba; else {
                      c[m >> 2] = 1;
                      n = 2147483647;
                  }
                  g = Z(b[t >> 1] | 0, b[p >> 1] | 0) | 0;
                  p = p + 2 | 0;
                  if ((g | 0) != 1073741824) {
                      f = (g << 1) + n | 0;
                      if ((g ^ n | 0) > 0 & (f ^ n | 0) < 0) {
                          c[m >> 2] = 1;
                          f = (n >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[m >> 2] = 1;
                      f = 2147483647;
                  }
                  g = Z(b[u >> 1] | 0, b[q >> 1] | 0) | 0;
                  q = q + 2 | 0;
                  if ((g | 0) != 1073741824) {
                      n = (g << 1) + f | 0;
                      if ((g ^ f | 0) > 0 & (n ^ f | 0) < 0) {
                          c[m >> 2] = 1;
                          n = (f >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[m >> 2] = 1;
                      n = 2147483647;
                  }
                  f = Z(b[v >> 1] | 0, b[r >> 1] | 0) | 0;
                  r = r + 2 | 0;
                  if ((f | 0) != 1073741824) {
                      g = (f << 1) + n | 0;
                      if ((f ^ n | 0) > 0 & (g ^ n | 0) < 0) {
                          c[m >> 2] = 1;
                          g = (n >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[m >> 2] = 1;
                      g = 2147483647;
                  }
                  b[j + (s << 1) >> 1] = Ce(g, m) | 0;
                  s = s + 1 | 0;
              } while ((s | 0) != 40);
              g = w & 65535;
              if (((ca << 16) + -2621440 | 0) > -1 | $ ^ 1) {
                  i = da;
                  return g | 0
              }
              n = aa >> 16;
              f = ca;
              do {
                  a = (Z(b[h + (f - ca << 1) >> 1] | 0, n) | 0) >> 15;
                  if ((a | 0) > 32767) {
                      c[m >> 2] = 1;
                      a = 32767;
                  }
                  j = h + (f << 1) | 0;
                  b[j >> 1] = Rd(b[j >> 1] | 0, a & 65535, m) | 0;
                  f = f + 1 | 0;
              } while ((f & 65535) << 16 >> 16 != 40);
              i = da;
              return g | 0
          }

          function Sb(a, d, f, g, h, j, k) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0,
                  A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0;
              L = i;
              i = i + 3440 | 0;
              t = L + 3424 | 0;
              G = L + 3408 | 0;
              H = L + 3240 | 0;
              u = L + 3224 | 0;
              E = L + 3328 | 0;
              s = L + 3248 | 0;
              F = L + 24 | 0;
              K = L + 16 | 0;
              J = L;
              gc(f, a, E, 2, 4, 4, k);
              rd(E, d, s, H, 4, G, 4, k);
              fc(f, s, F, k);
              pd(8, 4, 4, E, F, G, H, u, k);
              d = g;
              a = d + 80 | 0;
              do {
                  b[d >> 1] = 0;
                  d = d + 2 | 0;
              } while ((d | 0) < (a | 0));
              b[J >> 1] = -1;
              b[K >> 1] = -1;
              C = J + 2 | 0;
              b[C >> 1] = -1;
              D = K + 2 | 0;
              b[D >> 1] = -1;
              E = J + 4 | 0;
              b[E >> 1] = -1;
              F = K + 4 | 0;
              b[F >> 1] = -1;
              H = J + 6 | 0;
              b[H >> 1] = -1;
              G = K + 6 | 0;
              b[G >> 1] = -1;
              q = 0;
              do {
                  o = b[u + (q << 1) >> 1] | 0;
                  d = o >>> 2;
                  m = d & 65535;
                  a = o & 3;
                  n = (b[s + (o << 1) >> 1] | 0) > 0;
                  o = g + (o << 1) | 0;
                  r = n & 1 ^ 1;
                  b[o >> 1] = (e[o >> 1] | 0) + (n ? 8191 : 57345);
                  b[t + (q << 1) >> 1] = n ? 32767 : -32768;
                  n = J + (a << 1) | 0;
                  o = b[n >> 1] | 0;
                  do if (o << 16 >> 16 >= 0) {
                      p = K + (a << 1) | 0;
                      l = (o << 16 >> 16 | 0) <= (d << 16 >> 16 | 0);
                      d = J + ((a | 4) << 1) | 0;
                      if ((r & 65535 | 0) == (e[p >> 1] & 1 | 0)) if (l) {
                          b[d >> 1] = m;
                          break
                      } else {
                          b[d >> 1] = o;
                          b[n >> 1] = m;
                          b[p >> 1] = r;
                          break
                      } else if (l) {
                          b[d >> 1] = o;
                          b[n >> 1] = m;
                          b[p >> 1] = r;
                          break
                      } else {
                          b[d >> 1] = m;
                          break
                      }
                  } else {
                      b[n >> 1] = m;
                      b[K + (a << 1) >> 1] = r;
                  } while (0);
                  q = q + 1 | 0;
              } while ((q | 0) != 8);
              v = t + 2 | 0;
              w = t + 4 | 0;
              x = t + 6 | 0;
              y = t + 8 | 0;
              z = t + 10 | 0;
              A = t + 12 | 0;
              B = t + 14 | 0;
              t = b[t >> 1] | 0;
              q = 0;
              p = f + (0 - (b[u >> 1] | 0) << 1) | 0;
              o = f + (0 - (b[u + 2 >> 1] | 0) << 1) | 0;
              n = f + (0 - (b[u + 4 >> 1] | 0) << 1) | 0;
              m = f + (0 - (b[u + 6 >> 1] | 0) << 1) | 0;
              d = f + (0 - (b[u + 8 >> 1] | 0) << 1) | 0;
              a = f + (0 - (b[u + 10 >> 1] | 0) << 1) | 0;
              l = f + (0 - (b[u + 12 >> 1] | 0) << 1) | 0;
              f = f + (0 - (b[u + 14 >> 1] | 0) << 1) | 0;
              do {
                  r = Z(b[p >> 1] | 0, t) | 0;
                  p = p + 2 | 0;
                  if ((r | 0) != 1073741824 ? (I = r << 1, !((r | 0) > 0 & (I | 0) < 0)) : 0) r = I; else {
                      c[k >> 2] = 1;
                      r = 2147483647;
                  }
                  s = Z(b[v >> 1] | 0, b[o >> 1] | 0) | 0;
                  o = o + 2 | 0;
                  if ((s | 0) != 1073741824) {
                      g = (s << 1) + r | 0;
                      if ((s ^ r | 0) > 0 & (g ^ r | 0) < 0) {
                          c[k >> 2] = 1;
                          r = (r >>> 31) + 2147483647 | 0;
                      } else r = g;
                  } else {
                      c[k >> 2] = 1;
                      r = 2147483647;
                  }
                  s = Z(b[w >> 1] | 0, b[n >> 1] | 0) | 0;
                  n = n + 2 | 0;
                  if ((s | 0) != 1073741824) {
                      g = (s << 1) + r | 0;
                      if ((s ^ r | 0) > 0 & (g ^ r | 0) < 0) {
                          c[k >> 2] = 1;
                          g = (r >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      g = 2147483647;
                  }
                  s = Z(b[x >> 1] | 0, b[m >> 1] | 0) | 0;
                  m = m + 2 | 0;
                  if ((s | 0) != 1073741824) {
                      r = (s << 1) + g | 0;
                      if ((s ^ g | 0) > 0 & (r ^ g | 0) < 0) {
                          c[k >> 2] = 1;
                          r = (g >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      r = 2147483647;
                  }
                  s = Z(b[y >> 1] | 0, b[d >> 1] | 0) | 0;
                  d = d + 2 | 0;
                  if ((s | 0) != 1073741824) {
                      g = (s << 1) + r | 0;
                      if ((s ^ r | 0) > 0 & (g ^ r | 0) < 0) {
                          c[k >> 2] = 1;
                          g = (r >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      g = 2147483647;
                  }
                  s = Z(b[z >> 1] | 0, b[a >> 1] | 0) | 0;
                  a = a + 2 | 0;
                  if ((s | 0) != 1073741824) {
                      r = (s << 1) + g | 0;
                      if ((s ^ g | 0) > 0 & (r ^ g | 0) < 0) {
                          c[k >> 2] = 1;
                          r = (g >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      r = 2147483647;
                  }
                  s = Z(b[A >> 1] | 0, b[l >> 1] | 0) | 0;
                  l = l + 2 | 0;
                  if ((s | 0) != 1073741824) {
                      g = (s << 1) + r | 0;
                      if ((s ^ r | 0) > 0 & (g ^ r | 0) < 0) {
                          c[k >> 2] = 1;
                          g = (r >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      g = 2147483647;
                  }
                  s = Z(b[B >> 1] | 0, b[f >> 1] | 0) | 0;
                  f = f + 2 | 0;
                  if ((s | 0) != 1073741824) {
                      r = (s << 1) + g | 0;
                      if ((s ^ g | 0) > 0 & (r ^ g | 0) < 0) {
                          c[k >> 2] = 1;
                          r = (g >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      r = 2147483647;
                  }
                  b[h + (q << 1) >> 1] = Ce(r, k) | 0;
                  q = q + 1 | 0;
              } while ((q | 0) != 40);
              b[j >> 1] = b[K >> 1] | 0;
              b[j + 2 >> 1] = b[D >> 1] | 0;
              b[j + 4 >> 1] = b[F >> 1] | 0;
              b[j + 6 >> 1] = b[G >> 1] | 0;
              a = b[J >> 1] | 0;
              d = b[J + 8 >> 1] | 0;
              l = b[C >> 1] | 0;
              b[j + 8 >> 1] = d << 1 & 2 | a & 1 | l << 2 & 4 | (((d >> 1) * 327680 | 0) + (a >>> 1 << 16) + (Z(l >> 1, 1638400) | 0) | 0) >>> 13 & 65528;
              l = b[E >> 1] | 0;
              a = b[J + 12 >> 1] | 0;
              d = b[J + 10 >> 1] | 0;
              b[j + 10 >> 1] = a << 1 & 2 | l & 1 | d << 2 & 4 | (((a >> 1) * 327680 | 0) + (l >>> 1 << 16) + (Z(d >> 1, 1638400) | 0) | 0) >>> 13 & 65528;
              d = b[J + 14 >> 1] | 0;
              l = b[H >> 1] | 0;
              a = l << 16 >> 16 >>> 1;
              if (!(d & 2)) {
                  h = a;
                  k = d << 16 >> 16;
                  K = k >> 1;
                  K = K * 327680 | 0;
                  h = h << 16;
                  K = h + K | 0;
                  K = K << 5;
                  K = K >> 16;
                  K = K | 12;
                  K = K * 2622 | 0;
                  K = K >>> 16;
                  h = l & 65535;
                  h = h & 1;
                  k = k << 17;
                  k = k & 131072;
                  K = K << 18;
                  k = K | k;
                  k = k >>> 16;
                  h = k | h;
                  h = h & 65535;
                  j = j + 12 | 0;
                  b[j >> 1] = h;
                  i = L;
                  return
              }
              h = 4 - (a << 16 >> 16) | 0;
              k = d << 16 >> 16;
              K = k >> 1;
              K = K * 327680 | 0;
              h = h << 16;
              K = h + K | 0;
              K = K << 5;
              K = K >> 16;
              K = K | 12;
              K = K * 2622 | 0;
              K = K >>> 16;
              h = l & 65535;
              h = h & 1;
              k = k << 17;
              k = k & 131072;
              K = K << 18;
              k = K | k;
              k = k >>> 16;
              h = k | h;
              h = h & 65535;
              j = j + 12 | 0;
              b[j >> 1] = h;
              i = L;
              return
          }

          function Tb(a, d, e, f, g) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0;
              r = e << 16 >> 16;
              h = 0 - r | 0;
              e = g + (h << 2) | 0;
              g = ((r - (f << 16 >> 16) | 0) >>> 2) + 1 & 65535;
              if (g << 16 >> 16 <= 0) return;
              r = d << 16 >> 16 >>> 1 & 65535;
              if (!(r << 16 >> 16)) {
                  while (1) {
                      c[e >> 2] = 0;
                      c[e + 4 >> 2] = 0;
                      c[e + 8 >> 2] = 0;
                      c[e + 12 >> 2] = 0;
                      if (g << 16 >> 16 > 1) {
                          e = e + 16 | 0;
                          g = g + -1 << 16 >> 16;
                      } else break
                  }
                  return
              }
              q = a + (h << 1) | 0;
              while (1) {
                  l = q + 4 | 0;
                  n = b[l >> 1] | 0;
                  j = b[q >> 1] | 0;
                  m = n;
                  k = r;
                  o = a;
                  p = q;
                  q = q + 8 | 0;
                  i = 0;
                  h = 0;
                  f = 0;
                  d = 0;
                  while (1) {
                      t = b[o >> 1] | 0;
                      s = (Z(j << 16 >> 16, t) | 0) + i | 0;
                      i = b[p + 2 >> 1] | 0;
                      h = (Z(i, t) | 0) + h | 0;
                      j = (Z(m << 16 >> 16, t) | 0) + f | 0;
                      f = b[p + 6 >> 1] | 0;
                      m = (Z(f, t) | 0) + d | 0;
                      d = b[o + 2 >> 1] | 0;
                      i = s + (Z(d, i) | 0) | 0;
                      h = h + (Z(n << 16 >> 16, d) | 0) | 0;
                      l = l + 4 | 0;
                      f = j + (Z(d, f) | 0) | 0;
                      j = b[l >> 1] | 0;
                      d = m + (Z(j << 16 >> 16, d) | 0) | 0;
                      k = k + -1 << 16 >> 16;
                      if (!(k << 16 >> 16)) break;
                      t = n;
                      m = j;
                      n = b[p + 8 >> 1] | 0;
                      o = o + 4 | 0;
                      p = p + 4 | 0;
                      j = t;
                  }
                  c[e >> 2] = i << 1;
                  c[e + 4 >> 2] = h << 1;
                  c[e + 8 >> 2] = f << 1;
                  c[e + 12 >> 2] = d << 1;
                  if (g << 16 >> 16 <= 1) break; else {
                      e = e + 16 | 0;
                      g = g + -1 << 16 >> 16;
                  }
              }
              return
          }

          function Ub(a, d, f, g, h, j, k, l, m) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              var n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0;
              y = i;
              i = i + 16 | 0;
              w = y + 2 | 0;
              x = y;
              do if (h << 16 >> 16 > 0) {
                  s = g << 16 >> 16;
                  u = 0;
                  p = 0;
                  g = 0;
                  o = 0;
                  t = 0;
                  while (1) {
                      n = b[a + (u << 1) >> 1] | 0;
                      q = n << 16 >> 16;
                      p = (Z(q, q) | 0) + p | 0;
                      q = b[d + (u << 1) >> 1] | 0;
                      g = (Z(q, q) | 0) + g | 0;
                      o = (Z(b[f + (u << 1) >> 1] | 0, q) | 0) + o | 0;
                      q = Z(q, s) | 0;
                      if ((q | 0) == 1073741824) {
                          c[m >> 2] = 1;
                          r = 2147483647;
                      } else r = q << 1;
                      q = r << 1;
                      q = (Ge(n, Ce((q >> 1 | 0) == (r | 0) ? q : r >> 31 ^ 2147483647, m) | 0, m) | 0) << 16 >> 16;
                      q = Z(q, q) | 0;
                      if ((q | 0) != 1073741824) {
                          n = (q << 1) + t | 0;
                          if ((q ^ t | 0) > 0 & (n ^ t | 0) < 0) {
                              c[m >> 2] = 1;
                              n = (t >>> 31) + 2147483647 | 0;
                          }
                      } else {
                          c[m >> 2] = 1;
                          n = 2147483647;
                      }
                      u = u + 1 | 0;
                      if ((u & 65535) << 16 >> 16 == h << 16 >> 16) {
                          t = n;
                          break
                      } else t = n;
                  }
                  p = p << 1;
                  g = g << 1;
                  o = o << 1;
                  if ((p | 0) >= 0) {
                      if ((p | 0) < 400) {
                          n = t;
                          v = 14;
                          break
                      }
                  } else {
                      c[m >> 2] = 1;
                      p = 2147483647;
                  }
                  r = pe(p) | 0;
                  q = r << 16 >> 16;
                  if (r << 16 >> 16 > 0) {
                      n = p << q;
                      if ((n >> q | 0) != (p | 0)) n = p >> 31 ^ 2147483647;
                  } else {
                      n = 0 - q << 16;
                      if ((n | 0) < 2031616) n = p >> (n >> 16); else n = 0;
                  }
                  b[j >> 1] = n >>> 16;
                  p = g;
                  s = o;
                  n = t;
                  g = 15 - (r & 65535) & 65535;
              } else {
                  g = 0;
                  o = 0;
                  n = 0;
                  v = 14;
              } while (0);
              if ((v | 0) == 14) {
                  b[j >> 1] = 0;
                  p = g;
                  s = o;
                  g = -15;
              }
              b[k >> 1] = g;
              if ((p | 0) < 0) {
                  c[m >> 2] = 1;
                  p = 2147483647;
              }
              q = pe(p) | 0;
              o = q << 16 >> 16;
              if (q << 16 >> 16 > 0) {
                  g = p << o;
                  if ((g >> o | 0) != (p | 0)) g = p >> 31 ^ 2147483647;
              } else {
                  g = 0 - o << 16;
                  if ((g | 0) < 2031616) g = p >> (g >> 16); else g = 0;
              }
              b[j + 2 >> 1] = g >>> 16;
              b[k + 2 >> 1] = 15 - (q & 65535);
              p = pe(s) | 0;
              o = p << 16 >> 16;
              if (p << 16 >> 16 > 0) {
                  g = s << o;
                  if ((g >> o | 0) != (s | 0)) g = s >> 31 ^ 2147483647;
              } else {
                  g = 0 - o << 16;
                  if ((g | 0) < 2031616) g = s >> (g >> 16); else g = 0;
              }
              b[j + 4 >> 1] = g >>> 16;
              b[k + 4 >> 1] = 2 - (p & 65535);
              p = pe(n) | 0;
              g = p << 16 >> 16;
              if (p << 16 >> 16 > 0) {
                  o = n << g;
                  if ((o >> g | 0) != (n | 0)) o = n >> 31 ^ 2147483647;
              } else {
                  g = 0 - g << 16;
                  if ((g | 0) < 2031616) o = n >> (g >> 16); else o = 0;
              }
              g = o >>> 16 & 65535;
              n = 15 - (p & 65535) & 65535;
              b[j + 6 >> 1] = g;
              b[k + 6 >> 1] = n;
              if ((o >> 16 | 0) <= 0) {
                  m = 0;
                  b[l >> 1] = m;
                  i = y;
                  return
              }
              o = b[j >> 1] | 0;
              if (!(o << 16 >> 16)) {
                  m = 0;
                  b[l >> 1] = m;
                  i = y;
                  return
              }
              g = Td(De(o, 1, m) | 0, g) | 0;
              g = (g & 65535) << 16;
              o = ((Ge(n, b[k >> 1] | 0, m) | 0) & 65535) + 3 | 0;
              n = o & 65535;
              o = o << 16 >> 16;
              if (n << 16 >> 16 > 0) n = n << 16 >> 16 < 31 ? g >> o : 0; else {
                  k = 0 - o << 16 >> 16;
                  n = g << k;
                  n = (n >> k | 0) == (g | 0) ? n : g >> 31 ^ 2147483647;
              }
              de(n, w, x, m);
              x = Ic((e[w >> 1] | 0) + 65509 & 65535, b[x >> 1] | 0, m) | 0;
              w = x << 13;
              m = Ce((w >> 13 | 0) == (x | 0) ? w : x >> 31 ^ 2147483647, m) | 0;
              b[l >> 1] = m;
              i = y;
              return
          }

          function Vb(a, d, f, g, h, j, k, l, m, n, o) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              var p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0;
              y = i;
              i = i + 80 | 0;
              v = y;
              b[k >> 1] = b[j >> 1] | 0;
              b[l >> 1] = b[j + 2 >> 1] | 0;
              r = b[j + 4 >> 1] | 0;
              if (r << 16 >> 16 == -32768) r = 32767; else r = 0 - (r & 65535) & 65535;
              b[k + 2 >> 1] = r;
              b[l + 2 >> 1] = (e[j + 6 >> 1] | 0) + 1;
              switch (a | 0) {
                  case 0:
                  case 5: {
                      u = 0;
                      q = 0;
                      p = 0;
                      t = 0;
                      break
                  }
                  default: {
                      u = 0;
                      q = 1;
                      p = 1;
                      t = 1;
                  }
              }
              while (1) {
                  s = (b[h + (u << 1) >> 1] | 0) >>> 3;
                  b[v + (u << 1) >> 1] = s;
                  s = s << 16 >> 16;
                  r = Z(s, s) | 0;
                  if ((r | 0) != 1073741824) {
                      j = (r << 1) + q | 0;
                      if ((r ^ q | 0) > 0 & (j ^ q | 0) < 0) {
                          c[o >> 2] = 1;
                          q = (q >>> 31) + 2147483647 | 0;
                      } else q = j;
                  } else {
                      c[o >> 2] = 1;
                      q = 2147483647;
                  }
                  r = Z(b[d + (u << 1) >> 1] | 0, s) | 0;
                  if ((r | 0) != 1073741824) {
                      j = (r << 1) + p | 0;
                      if ((r ^ p | 0) > 0 & (j ^ p | 0) < 0) {
                          c[o >> 2] = 1;
                          p = (p >>> 31) + 2147483647 | 0;
                      } else p = j;
                  } else {
                      c[o >> 2] = 1;
                      p = 2147483647;
                  }
                  r = Z(b[g + (u << 1) >> 1] | 0, s) | 0;
                  if ((r | 0) != 1073741824) {
                      j = (r << 1) + t | 0;
                      if ((r ^ t | 0) > 0 & (j ^ t | 0) < 0) {
                          c[o >> 2] = 1;
                          j = (t >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[o >> 2] = 1;
                      j = 2147483647;
                  }
                  u = u + 1 | 0;
                  if ((u | 0) == 40) {
                      g = j;
                      s = p;
                      break
                  } else t = j;
              }
              p = pe(q) | 0;
              j = p << 16 >> 16;
              if (p << 16 >> 16 > 0) {
                  r = q << j;
                  if ((r >> j | 0) != (q | 0)) r = q >> 31 ^ 2147483647;
              } else {
                  r = 0 - j << 16;
                  if ((r | 0) < 2031616) r = q >> (r >> 16); else r = 0;
              }
              h = k + 4 | 0;
              b[h >> 1] = r >>> 16;
              d = l + 4 | 0;
              b[d >> 1] = -3 - (p & 65535);
              q = pe(s) | 0;
              j = q << 16 >> 16;
              if (q << 16 >> 16 > 0) {
                  r = s << j;
                  if ((r >> j | 0) != (s | 0)) r = s >> 31 ^ 2147483647;
              } else {
                  r = 0 - j << 16;
                  if ((r | 0) < 2031616) r = s >> (r >> 16); else r = 0;
              }
              j = r >>> 16;
              b[k + 6 >> 1] = (j | 0) == 32768 ? 32767 : 0 - j & 65535;
              b[l + 6 >> 1] = 7 - (q & 65535);
              q = pe(g) | 0;
              j = q << 16 >> 16;
              if (q << 16 >> 16 > 0) {
                  r = g << j;
                  if ((r >> j | 0) != (g | 0)) r = g >> 31 ^ 2147483647;
              } else {
                  r = 0 - j << 16;
                  if ((r | 0) < 2031616) r = g >> (r >> 16); else r = 0;
              }
              b[k + 8 >> 1] = r >>> 16;
              b[l + 8 >> 1] = 7 - (q & 65535);
              switch (a | 0) {
                  case 0:
                  case 5: {
                      r = 0;
                      p = 0;
                      break
                  }
                  default: {
                      i = y;
                      return
                  }
              }
              do {
                  p = (Z(b[v + (r << 1) >> 1] | 0, b[f + (r << 1) >> 1] | 0) | 0) + p | 0;
                  r = r + 1 | 0;
              } while ((r | 0) != 40);
              j = p << 1;
              r = pe(j) | 0;
              q = r << 16 >> 16;
              if (r << 16 >> 16 > 0) {
                  p = j << q;
                  if ((p >> q | 0) == (j | 0)) {
                      w = p;
                      x = 40;
                  } else {
                      w = j >> 31 ^ 2147483647;
                      x = 40;
                  }
              } else {
                  p = 0 - q << 16;
                  if ((p | 0) < 2031616) {
                      w = j >> (p >> 16);
                      x = 40;
                  }
              }
              if ((x | 0) == 40 ? (w >> 16 | 0) >= 1 : 0) {
                  o = De(w >>> 16 & 65535, 1, o) | 0;
                  b[m >> 1] = Td(o, b[h >> 1] | 0) | 0;
                  b[n >> 1] = 65528 - (r & 65535) - (e[d >> 1] | 0);
                  i = y;
                  return
              }
              b[m >> 1] = 0;
              b[n >> 1] = 0;
              i = y;
              return
          }

          function Wb(a, d, e, f) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0;
              h = 0;
              g = 0;
              do {
                  i = b[a + (h << 1) >> 1] | 0;
                  g = (Z(i, i) | 0) + g | 0;
                  h = h + 1 | 0;
              } while ((h | 0) != 40);
              if ((g | 0) < 0) {
                  c[f >> 2] = 1;
                  g = 2147483647;
              }
              f = pe(g) | 0;
              a = f << 16 >> 16;
              if (f << 16 >> 16 > 0) {
                  h = g << a;
                  if ((h >> a | 0) == (g | 0)) g = h; else g = g >> 31 ^ 2147483647;
              } else {
                  a = 0 - a << 16;
                  if ((a | 0) < 2031616) g = g >> (a >> 16); else g = 0;
              }
              b[e >> 1] = g >>> 16;
              b[d >> 1] = 16 - (f & 65535);
              return
          }

          function Xb(a, d, e, f, g, h, j, k, l, m, n, o, p) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              var q = 0, r = 0, s = 0, t = 0;
              r = i;
              i = i + 16 | 0;
              q = r;
              if (m >>> 0 < 2) {
                  j = Nb(n, a, d, e, f, j, k, q, c[o + 76 >> 2] | 0, p) | 0;
                  p = c[l >> 2] | 0;
                  b[p >> 1] = j;
                  j = b[q >> 1] | 0;
                  c[l >> 2] = p + 4;
                  b[p + 2 >> 1] = j;
                  i = r;
                  return
              }
              switch (m | 0) {
                  case 2: {
                      j = Mb(a, d, e, f, j, k, q, p) | 0;
                      p = c[l >> 2] | 0;
                      b[p >> 1] = j;
                      j = b[q >> 1] | 0;
                      c[l >> 2] = p + 4;
                      b[p + 2 >> 1] = j;
                      i = r;
                      return
                  }
                  case 3: {
                      j = Qb(a, d, e, f, j, k, q, p) | 0;
                      p = c[l >> 2] | 0;
                      b[p >> 1] = j;
                      j = b[q >> 1] | 0;
                      c[l >> 2] = p + 4;
                      b[p + 2 >> 1] = j;
                      i = r;
                      return
                  }
                  default: {
                      if ((m & -2 | 0) == 4) {
                          j = Rb(a, d, e, f, j, k, q, c[o + 36 >> 2] | 0, p) | 0;
                          p = c[l >> 2] | 0;
                          b[p >> 1] = j;
                          j = b[q >> 1] | 0;
                          c[l >> 2] = p + 4;
                          b[p + 2 >> 1] = j;
                          i = r;
                          return
                      }
                      if ((m | 0) != 6) {
                          n = g << 16 >> 16;
                          n = (n << 17 >> 17 | 0) == (n | 0) ? n << 1 : n >>> 15 ^ 32767;
                          g = e << 16 >> 16 < 40;
                          if (!g) {
                              Lb(a, h, d, j, k, c[l >> 2] | 0, c[o + 36 >> 2] | 0, p);
                              c[l >> 2] = (c[l >> 2] | 0) + 20;
                              i = r;
                              return
                          }
                          q = e << 16 >> 16;
                          m = n << 16 >> 16;
                          f = q;
                          do {
                              t = (Z(b[d + (f - q << 1) >> 1] | 0, m) | 0) >>> 15 & 65535;
                              s = d + (f << 1) | 0;
                              b[s >> 1] = Rd(b[s >> 1] | 0, t, p) | 0;
                              f = f + 1 | 0;
                          } while ((f & 65535) << 16 >> 16 != 40);
                          Lb(a, h, d, j, k, c[l >> 2] | 0, c[o + 36 >> 2] | 0, p);
                          c[l >> 2] = (c[l >> 2] | 0) + 20;
                          if (!g) {
                              i = r;
                              return
                          }
                          g = e << 16 >> 16;
                          m = n << 16 >> 16;
                          q = g;
                          do {
                              f = (Z(b[j + (q - g << 1) >> 1] | 0, m) | 0) >> 15;
                              if ((f | 0) > 32767) {
                                  c[p >> 2] = 1;
                                  f = 32767;
                              }
                              t = j + (q << 1) | 0;
                              b[t >> 1] = Rd(b[t >> 1] | 0, f & 65535, p) | 0;
                              q = q + 1 | 0;
                          } while ((q & 65535) << 16 >> 16 != 40);
                          i = r;
                          return
                      }
                      o = f << 16 >> 16;
                      o = (o << 17 >> 17 | 0) == (o | 0) ? o << 1 : o >>> 15 ^ 32767;
                      n = e << 16 >> 16 < 40;
                      if (!n) {
                          Sb(a, h, d, j, k, c[l >> 2] | 0, p);
                          c[l >> 2] = (c[l >> 2] | 0) + 14;
                          i = r;
                          return
                      }
                      q = e << 16 >> 16;
                      m = o << 16 >> 16;
                      f = q;
                      do {
                          g = (Z(b[d + (f - q << 1) >> 1] | 0, m) | 0) >> 15;
                          if ((g | 0) > 32767) {
                              c[p >> 2] = 1;
                              g = 32767;
                          }
                          t = d + (f << 1) | 0;
                          b[t >> 1] = Rd(b[t >> 1] | 0, g & 65535, p) | 0;
                          f = f + 1 | 0;
                      } while ((f & 65535) << 16 >> 16 != 40);
                      Sb(a, h, d, j, k, c[l >> 2] | 0, p);
                      c[l >> 2] = (c[l >> 2] | 0) + 14;
                      if (!n) {
                          i = r;
                          return
                      }
                      g = e << 16 >> 16;
                      m = o << 16 >> 16;
                      q = g;
                      do {
                          f = (Z(b[j + (q - g << 1) >> 1] | 0, m) | 0) >> 15;
                          if ((f | 0) > 32767) {
                              c[p >> 2] = 1;
                              f = 32767;
                          }
                          t = j + (q << 1) | 0;
                          b[t >> 1] = Rd(b[t >> 1] | 0, f & 65535, p) | 0;
                          q = q + 1 | 0;
                      } while ((q & 65535) << 16 >> 16 != 40);
                      i = r;
                      return
                  }
              }
          }

          function Yb(a) {
              a = a | 0;
              var b = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              b = Je(4) | 0;
              if (!b) {
                  a = -1;
                  return a | 0
              }
              if (!((Uc(b) | 0) << 16 >> 16)) {
                  Vc(c[b >> 2] | 0) | 0;
                  c[a >> 2] = b;
                  a = 0;
                  return a | 0
              } else {
                  Wc(b);
                  Ke(b);
                  a = -1;
                  return a | 0
              }
              return 0
          }

          function Zb(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Wc(b);
              Ke(c[a >> 2] | 0);
              c[a >> 2] = 0;
              return
          }

          function _b(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              Vc(c[a >> 2] | 0) | 0;
              a = 0;
              return a | 0
          }

          function $b(a, d, f, g, h, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              q = q | 0;
              r = r | 0;
              s = s | 0;
              t = t | 0;
              u = u | 0;
              v = v | 0;
              w = w | 0;
              x = x | 0;
              var y = 0, z = 0, A = 0, B = 0;
              z = i;
              i = i + 16 | 0;
              B = z + 2 | 0;
              A = z;
              b[q >> 1] = Xc(c[a >> 2] | 0, f, h, k, m, j, 40, g, r, A, B, x) | 0;
              a = b[B >> 1] | 0;
              g = c[u >> 2] | 0;
              c[u >> 2] = g + 2;
              b[g >> 1] = a;
              se(k, b[q >> 1] | 0, b[r >> 1] | 0, 40, b[A >> 1] | 0, x);
              ec(k, j, p, 40);
              b[s >> 1] = Dc(f, m, p, t, 40, x) | 0;
              b[v >> 1] = 32767;
              if (n << 16 >> 16 != 0 ? (y = b[s >> 1] | 0, y << 16 >> 16 > 15565) : 0) y = Ed(d, y, x) | 0; else y = 0;
              if (f >>> 0 < 2) {
                  B = b[s >> 1] | 0;
                  b[s >> 1] = B << 16 >> 16 > 13926 ? 13926 : B;
                  if (y << 16 >> 16) b[v >> 1] = 15565;
              } else {
                  if (y << 16 >> 16) {
                      b[v >> 1] = 15565;
                      b[s >> 1] = 15565;
                  }
                  if ((f | 0) == 7) {
                      A = nd(7, b[v >> 1] | 0, s, 0, 0, w, x) | 0;
                      B = c[u >> 2] | 0;
                      c[u >> 2] = B + 2;
                      b[B >> 1] = A;
                  }
              }
              q = b[s >> 1] | 0;
              y = 0;
              while (1) {
                  A = Z(b[p >> 1] | 0, q) | 0;
                  b[o >> 1] = (e[m >> 1] | 0) - (A >>> 14);
                  A = (Z(b[k >> 1] | 0, q) | 0) >>> 14;
                  B = l + (y << 1) | 0;
                  b[B >> 1] = (e[B >> 1] | 0) - A;
                  y = y + 1 | 0;
                  if ((y | 0) == 40) break; else {
                      k = k + 2 | 0;
                      m = m + 2 | 0;
                      o = o + 2 | 0;
                      p = p + 2 | 0;
                  }
              }
              i = z;
              return
          }

          function ac(a, b) {
              a = a | 0;
              b = b | 0;
              var d = 0, e = 0, f = 0, g = 0;
              g = i;
              i = i + 16 | 0;
              f = g;
              if (!a) {
                  a = -1;
                  i = g;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(2532) | 0;
              c[f >> 2] = d;
              if (!d) {
                  a = -1;
                  i = g;
                  return a | 0
              }
              Yd(d + 2392 | 0);
              c[d + 2188 >> 2] = 0;
              c[(c[f >> 2] | 0) + 2192 >> 2] = 0;
              c[(c[f >> 2] | 0) + 2196 >> 2] = 0;
              c[(c[f >> 2] | 0) + 2200 >> 2] = 0;
              c[(c[f >> 2] | 0) + 2204 >> 2] = 0;
              c[(c[f >> 2] | 0) + 2208 >> 2] = 0;
              c[(c[f >> 2] | 0) + 2212 >> 2] = 0;
              c[(c[f >> 2] | 0) + 2220 >> 2] = 0;
              e = c[f >> 2] | 0;
              c[e + 2216 >> 2] = b;
              c[e + 2528 >> 2] = 0;
              d = e;
              if ((((((((Yb(e + 2196 | 0) | 0) << 16 >> 16 == 0 ? (ie(e + 2192 | 0) | 0) << 16 >> 16 == 0 : 0) ? (yc(e + 2200 | 0) | 0) << 16 >> 16 == 0 : 0) ? (_c(e + 2204 | 0) | 0) << 16 >> 16 == 0 : 0) ? (Ad(e + 2208 | 0) | 0) << 16 >> 16 == 0 : 0) ? (Gd(e + 2212 | 0) | 0) << 16 >> 16 == 0 : 0) ? (jc(e + 2220 | 0, c[e + 2432 >> 2] | 0) | 0) << 16 >> 16 == 0 : 0) ? (Pc(e + 2188 | 0) | 0) << 16 >> 16 == 0 : 0) {
                  cc(e) | 0;
                  c[a >> 2] = d;
                  a = 0;
                  i = g;
                  return a | 0
              }
              bc(f);
              a = -1;
              i = g;
              return a | 0
          }

          function bc(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Qc(b + 2188 | 0);
              ke((c[a >> 2] | 0) + 2192 | 0);
              zc((c[a >> 2] | 0) + 2200 | 0);
              Zb((c[a >> 2] | 0) + 2196 | 0);
              ad((c[a >> 2] | 0) + 2204 | 0);
              Cd((c[a >> 2] | 0) + 2208 | 0);
              Id((c[a >> 2] | 0) + 2212 | 0);
              lc((c[a >> 2] | 0) + 2220 | 0);
              Ke(c[a >> 2] | 0);
              c[a >> 2] = 0;
              return
          }

          function cc(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0, g = 0;
              if (!a) {
                  g = -1;
                  return g | 0
              }
              c[a + 652 >> 2] = a + 320;
              c[a + 640 >> 2] = a + 240;
              c[a + 644 >> 2] = a + 160;
              c[a + 648 >> 2] = a + 80;
              c[a + 1264 >> 2] = a + 942;
              c[a + 1912 >> 2] = a + 1590;
              f = a + 1938 | 0;
              c[a + 2020 >> 2] = f;
              c[a + 2384 >> 2] = a + 2304;
              d = a + 2028 | 0;
              c[a + 2024 >> 2] = a + 2108;
              c[a + 2528 >> 2] = 0;
              Qe(a | 0, 0, 640) | 0;
              Qe(a + 1282 | 0, 0, 308) | 0;
              Qe(a + 656 | 0, 0, 286) | 0;
              e = a + 2224 | 0;
              g = f + 80 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (g | 0));
              f = d;
              g = f + 80 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (g | 0));
              d = a + 1268 | 0;
              f = e;
              g = f + 80 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (g | 0));
              b[d >> 1] = 40;
              b[a + 1270 >> 1] = 40;
              b[a + 1272 >> 1] = 40;
              b[a + 1274 >> 1] = 40;
              b[a + 1276 >> 1] = 40;
              Rc(c[a + 2188 >> 2] | 0) | 0;
              je(c[a + 2192 >> 2] | 0) | 0;
              _b(c[a + 2196 >> 2] | 0) | 0;
              Ac(c[a + 2200 >> 2] | 0) | 0;
              $c(c[a + 2204 >> 2] | 0) | 0;
              Bd(c[a + 2208 >> 2] | 0) | 0;
              Hd(c[a + 2212 >> 2] | 0) | 0;
              kc(c[a + 2220 >> 2] | 0, c[a + 2432 >> 2] | 0) | 0;
              b[a + 2388 >> 1] = 0;
              g = 0;
              return g | 0
          }

          function dc(a, d, e, f, g, h) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0,
                  y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0,
                  N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, Z = 0, _ = 0, $ = 0,
                  aa = 0, ba = 0, ca = 0, da = 0, ea = 0, fa = 0, ga = 0, ha = 0, ia = 0, ja = 0, ka = 0, la = 0, ma = 0,
                  na = 0, oa = 0, pa = 0, qa = 0;
              qa = i;
              i = i + 1184 | 0;
              T = qa;
              n = qa + 1096 | 0;
              o = qa + 1008 | 0;
              l = qa + 904 | 0;
              ka = qa + 928 | 0;
              la = qa + 824 | 0;
              X = qa + 744 | 0;
              na = qa + 664 | 0;
              oa = qa + 584 | 0;
              Z = qa + 328 | 0;
              ha = qa + 504 | 0;
              ia = qa + 424 | 0;
              ma = qa + 344 | 0;
              pa = qa + 248 | 0;
              Y = qa + 168 | 0;
              da = qa + 88 | 0;
              fa = qa + 68 | 0;
              ga = qa + 48 | 0;
              ea = qa + 28 | 0;
              ja = qa + 24 | 0;
              ba = qa + 22 | 0;
              $ = qa + 20 | 0;
              W = qa + 16 | 0;
              U = qa + 12 | 0;
              V = qa + 10 | 0;
              aa = qa + 8 | 0;
              _ = qa + 6 | 0;
              ca = qa + 4 | 0;
              c[T >> 2] = f;
              S = a + 2528 | 0;
              j = a + 652 | 0;
              Oe(c[j >> 2] | 0, e | 0, 320) | 0;
              c[g >> 2] = d;
              m = a + 2216 | 0;
              if (!(c[m >> 2] | 0)) {
                  e = a + 2220 | 0;
                  f = 0;
              } else {
                  f = Nd(c[a + 2212 >> 2] | 0, c[j >> 2] | 0, S) | 0;
                  R = a + 2220 | 0;
                  e = R;
                  f = oc(c[R >> 2] | 0, f, g, S) | 0;
              }
              R = a + 2392 | 0;
              Sc(c[a + 2188 >> 2] | 0, d, c[a + 644 >> 2] | 0, c[a + 648 >> 2] | 0, n, R, S);
              k = a + 2192 | 0;
              le(c[k >> 2] | 0, d, c[g >> 2] | 0, n, o, l, T, S);
              nc(c[e >> 2] | 0, l, c[j >> 2] | 0, S);
              if ((c[g >> 2] | 0) == 8) {
                  mc(c[e >> 2] | 0, f, c[(c[k >> 2] | 0) + 40 >> 2] | 0, (c[a + 2200 >> 2] | 0) + 32 | 0, T, S);
                  Qe(a + 1282 | 0, 0, 308) | 0;
                  j = a + 2244 | 0;
                  q = j + 20 | 0;
                  do {
                      b[j >> 1] = 0;
                      j = j + 2 | 0;
                  } while ((j | 0) < (q | 0));
                  j = a + 2284 | 0;
                  q = j + 20 | 0;
                  do {
                      b[j >> 1] = 0;
                      j = j + 2 | 0;
                  } while ((j | 0) < (q | 0));
                  j = c[a + 2020 >> 2] | 0;
                  q = j + 80 | 0;
                  do {
                      b[j >> 1] = 0;
                      j = j + 2 | 0;
                  } while ((j | 0) < (q | 0));
                  j = a + 2028 | 0;
                  q = j + 80 | 0;
                  do {
                      b[j >> 1] = 0;
                      j = j + 2 | 0;
                  } while ((j | 0) < (q | 0));
                  je(c[k >> 2] | 0) | 0;
                  j = c[k >> 2] | 0;
                  e = l;
                  q = j + 20 | 0;
                  do {
                      b[j >> 1] = b[e >> 1] | 0;
                      j = j + 2 | 0;
                      e = e + 2 | 0;
                  } while ((j | 0) < (q | 0));
                  j = (c[k >> 2] | 0) + 20 | 0;
                  e = l;
                  q = j + 20 | 0;
                  do {
                      b[j >> 1] = b[e >> 1] | 0;
                      j = j + 2 | 0;
                      e = e + 2 | 0;
                  } while ((j | 0) < (q | 0));
                  _b(c[a + 2196 >> 2] | 0) | 0;
                  b[a + 2388 >> 1] = 0;
                  Q = 0;
              } else Q = Dd(c[a + 2208 >> 2] | 0, c[k >> 2] | 0, S) | 0;
              N = a + 640 | 0;
              k = a + 2264 | 0;
              j = a + 1264 | 0;
              e = a + 2204 | 0;
              f = a + 2212 | 0;
              O = a + 1268 | 0;
              P = a + 1278 | 0;
              cd(d, 2842, 2862, 2882, n, 0, c[N >> 2] | 0, k, c[j >> 2] | 0, S);
              if (d >>> 0 > 1) {
                  Tc(c[e >> 2] | 0, c[f >> 2] | 0, d, c[j >> 2] | 0, W, O, P, 0, c[m >> 2] | 0, S);
                  cd(d, 2842, 2862, 2882, n, 80, c[N >> 2] | 0, k, c[j >> 2] | 0, S);
                  Tc(c[e >> 2] | 0, c[f >> 2] | 0, d, (c[j >> 2] | 0) + 160 | 0, W + 2 | 0, O, P, 1, c[m >> 2] | 0, S);
              } else {
                  cd(d, 2842, 2862, 2882, n, 80, c[N >> 2] | 0, k, c[j >> 2] | 0, S);
                  Tc(c[e >> 2] | 0, c[f >> 2] | 0, d, c[j >> 2] | 0, W, O, P, 1, c[m >> 2] | 0, S);
                  b[W + 2 >> 1] = b[W >> 1] | 0;
              }
              if (c[m >> 2] | 0) Md(c[f >> 2] | 0, W, S);
              if ((c[g >> 2] | 0) == 8) {
                  oa = a + 656 | 0;
                  pa = a + 976 | 0;
                  Oe(oa | 0, pa | 0, 286) | 0;
                  pa = a + 320 | 0;
                  Oe(a | 0, pa | 0, 320) | 0;
                  i = qa;
                  return 0
              }
              z = a + 2224 | 0;
              A = a + 2244 | 0;
              B = a + 2284 | 0;
              C = a + 2388 | 0;
              D = a + 2020 | 0;
              E = a + 1916 | 0;
              F = a + 1912 | 0;
              G = a + 2024 | 0;
              H = a + 2384 | 0;
              I = a + 2196 | 0;
              J = a + 2208 | 0;
              K = a + 2464 | 0;
              L = a + 2200 | 0;
              M = a + 2224 | 0;
              w = a + 2244 | 0;
              x = a + 1270 | 0;
              y = a + 1280 | 0;
              v = 0;
              m = 0;
              l = 0;
              s = 0;
              t = 0;
              k = 0;
              u = -1;
              while (1) {
                  p = u;
                  u = u + 1 << 16 >> 16;
                  s = 1 - (s << 16 >> 16) | 0;
                  f = s & 65535;
                  r = (s & 65535 | 0) != 0;
                  e = c[g >> 2] | 0;
                  j = (e | 0) == 0;
                  do if (r) if (j) {
                      j = fa;
                      e = z;
                      q = j + 20 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0));
                      j = ga;
                      e = A;
                      q = j + 20 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0));
                      j = ea;
                      e = B;
                      q = j + 20 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0));
                      b[ja >> 1] = b[C >> 1] | 0;
                      d = (c[N >> 2] | 0) + (v << 1) | 0;
                      j = 20;
                      break
                  } else {
                      d = (c[N >> 2] | 0) + (v << 1) | 0;
                      j = 19;
                      break
                  } else {
                      d = (c[N >> 2] | 0) + (v << 1) | 0;
                      if (j) j = 20; else j = 19;
                  } while (0);
                  if ((j | 0) == 19) yd(e, 2842, 2862, 2882, n, o, d, B, w, c[D >> 2] | 0, E, (c[F >> 2] | 0) + (v << 1) | 0, c[G >> 2] | 0, ka, ha, c[H >> 2] | 0); else if ((j | 0) == 20 ? (0, yd(0, 2842, 2862, 2882, n, o, d, B, ga, c[D >> 2] | 0, E, (c[F >> 2] | 0) + (v << 1) | 0, c[G >> 2] | 0, ka, ha, c[H >> 2] | 0), r) : 0) {
                      j = da;
                      e = c[G >> 2] | 0;
                      q = j + 80 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0))
                  }
                  j = ia;
                  e = ha;
                  q = j + 80 | 0;
                  do {
                      b[j >> 1] = b[e >> 1] | 0;
                      j = j + 2 | 0;
                      e = e + 2 | 0;
                  } while ((j | 0) < (q | 0));
                  $b(c[I >> 2] | 0, c[J >> 2] | 0, c[g >> 2] | 0, t, W, c[G >> 2] | 0, (c[F >> 2] | 0) + (v << 1) | 0, ia, ka, Q, la, na, U, V, aa, Z, T, ca, c[K >> 2] | 0, S);
                  switch (p << 16 >> 16) {
                      case -1: {
                          if ((b[P >> 1] | 0) > 0) b[x >> 1] = b[U >> 1] | 0;
                          break
                      }
                      case 2: {
                          if ((b[y >> 1] | 0) > 0) b[O >> 1] = b[U >> 1] | 0;
                          break
                      }
                      default: {
                      }
                  }
                  Xb(la, c[G >> 2] | 0, b[U >> 1] | 0, b[C >> 1] | 0, b[aa >> 1] | 0, ia, X, oa, T, c[g >> 2] | 0, u, R, S);
                  Bc(c[L >> 2] | 0, c[g >> 2] | 0, ha, (c[F >> 2] | 0) + (v << 1) | 0, X, ka, la, na, oa, Z, f, b[ca >> 1] | 0, ba, $, aa, _, T, R, S);
                  Fd(c[J >> 2] | 0, b[aa >> 1] | 0, S);
                  d = c[g >> 2] | 0;
                  do if (!d) if (r) {
                      j = ma;
                      e = ka;
                      q = j + 80 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0));
                      j = pa;
                      e = oa;
                      q = j + 80 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0));
                      j = Y;
                      e = X;
                      q = j + 80 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0));
                      l = b[U >> 1] | 0;
                      m = b[V >> 1] | 0;
                      zd(c[N >> 2] | 0, 0, t, b[aa >> 1] | 0, b[_ >> 1] | 0, o, h, ka, X, na, oa, fa, B, ga, c[F >> 2] | 0, C, S);
                      b[C >> 1] = b[ja >> 1] | 0;
                      k = t;
                      break
                  } else {
                      j = B;
                      e = ea;
                      q = j + 20 | 0;
                      do {
                          b[j >> 1] = b[e >> 1] | 0;
                          j = j + 2 | 0;
                          e = e + 2 | 0;
                      } while ((j | 0) < (q | 0));
                      r = k << 16 >> 16;
                      se((c[F >> 2] | 0) + (r << 1) | 0, l, m, 40, 1, S);
                      ec((c[F >> 2] | 0) + (r << 1) | 0, da, na, 40);
                      zd(c[N >> 2] | 0, c[g >> 2] | 0, k, b[ba >> 1] | 0, b[$ >> 1] | 0, o + -22 | 0, h, ma, Y, na, pa, M, B, w, c[F >> 2] | 0, ja, S);
                      yd(c[g >> 2] | 0, 2842, 2862, 2882, n, o, (c[N >> 2] | 0) + (v << 1) | 0, B, w, c[D >> 2] | 0, E, (c[F >> 2] | 0) + (v << 1) | 0, c[G >> 2] | 0, ka, ha, c[H >> 2] | 0);
                      se((c[F >> 2] | 0) + (v << 1) | 0, b[U >> 1] | 0, b[V >> 1] | 0, 40, 1, S);
                      ec((c[F >> 2] | 0) + (v << 1) | 0, c[G >> 2] | 0, na, 40);
                      zd(c[N >> 2] | 0, c[g >> 2] | 0, t, b[aa >> 1] | 0, b[_ >> 1] | 0, o, h, ka, X, na, oa, M, B, w, c[F >> 2] | 0, C, S);
                      break
                  } else zd(c[N >> 2] | 0, d, t, b[aa >> 1] | 0, b[_ >> 1] | 0, o, h, ka, X, na, oa, M, B, w, c[F >> 2] | 0, C, S); while (0);
                  d = v + 40 | 0;
                  t = d & 65535;
                  if (t << 16 >> 16 >= 160) break; else {
                      v = d << 16 >> 16;
                      n = n + 22 | 0;
                      o = o + 22 | 0;
                  }
              }
              Oe(a + 1282 | 0, a + 1602 | 0, 308) | 0;
              oa = a + 656 | 0;
              pa = a + 976 | 0;
              Oe(oa | 0, pa | 0, 286) | 0;
              pa = a + 320 | 0;
              Oe(a | 0, pa | 0, 320) | 0;
              i = qa;
              return 0
          }

          function ec(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0;
              o = e << 16 >> 16;
              if (e << 16 >> 16 > 1) n = 1; else return;
              while (1) {
                  f = b[a >> 1] | 0;
                  i = c + (n + -1 << 1) | 0;
                  e = Z(b[c + (n << 1) >> 1] | 0, f) | 0;
                  k = b[i >> 1] | 0;
                  f = Z(k << 16 >> 16, f) | 0;
                  h = (n + 131071 | 0) >>> 1;
                  j = h & 65535;
                  g = b[a + 2 >> 1] | 0;
                  if (!(j << 16 >> 16)) {
                      c = i;
                      h = k;
                  } else {
                      l = (h << 1) + 131070 & 131070;
                      m = n - l | 0;
                      h = a;
                      do {
                          q = (Z(k << 16 >> 16, g) | 0) + e | 0;
                          p = h;
                          h = h + 4 | 0;
                          e = b[i + -2 >> 1] | 0;
                          g = (Z(e, g) | 0) + f | 0;
                          f = b[h >> 1] | 0;
                          i = i + -4 | 0;
                          e = q + (Z(f, e) | 0) | 0;
                          k = b[i >> 1] | 0;
                          f = g + (Z(k << 16 >> 16, f) | 0) | 0;
                          j = j + -1 << 16 >> 16;
                          g = b[p + 6 >> 1] | 0;
                      } while (j << 16 >> 16 != 0);
                      h = c + (m + -3 << 1) | 0;
                      a = a + (l + 2 << 1) | 0;
                      c = h;
                      h = b[h >> 1] | 0;
                  }
                  e = (Z(h << 16 >> 16, g) | 0) + e | 0;
                  b[d >> 1] = f >>> 12;
                  b[d + 2 >> 1] = e >>> 12;
                  e = (n << 16) + 131072 >> 16;
                  if ((e | 0) < (o | 0)) {
                      d = d + 4 | 0;
                      a = a + (1 - n << 1) | 0;
                      n = e;
                  } else break
              }
              return
          }

          function fc(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0,
                  v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0;
              z = i;
              i = i + 80 | 0;
              y = z;
              h = 20;
              g = a;
              f = 1;
              while (1) {
                  x = b[g >> 1] | 0;
                  x = (Z(x, x) | 0) + f | 0;
                  f = b[g + 2 >> 1] | 0;
                  f = x + (Z(f, f) | 0) | 0;
                  h = h + -1 << 16 >> 16;
                  if (!(h << 16 >> 16)) break; else g = g + 4 | 0;
              }
              f = f << 1;
              if ((f | 0) < 0) {
                  g = 20;
                  f = a;
                  e = y;
                  while (1) {
                      b[e >> 1] = (b[f >> 1] | 0) >>> 1;
                      b[e + 2 >> 1] = (b[f + 2 >> 1] | 0) >>> 1;
                      g = g + -1 << 16 >> 16;
                      if (!(g << 16 >> 16)) {
                          x = y;
                          break
                      } else {
                          f = f + 4 | 0;
                          e = e + 4 | 0;
                      }
                  }
              } else {
                  f = ce(f >> 1, e) | 0;
                  if ((f | 0) < 16777215) f = ((f >> 9) * 32440 | 0) >>> 15 << 16 >> 16; else f = 32440;
                  h = 20;
                  g = a;
                  e = y;
                  while (1) {
                      b[e >> 1] = ((Z(b[g >> 1] | 0, f) | 0) + 32 | 0) >>> 6;
                      b[e + 2 >> 1] = ((Z(b[g + 2 >> 1] | 0, f) | 0) + 32 | 0) >>> 6;
                      h = h + -1 << 16 >> 16;
                      if (!(h << 16 >> 16)) {
                          x = y;
                          break
                      } else {
                          g = g + 4 | 0;
                          e = e + 4 | 0;
                      }
                  }
              }
              h = 20;
              g = x;
              e = d + 3198 | 0;
              f = 0;
              while (1) {
                  w = b[g >> 1] | 0;
                  w = (Z(w, w) | 0) + f | 0;
                  b[e >> 1] = (w + 16384 | 0) >>> 15;
                  v = b[g + 2 >> 1] | 0;
                  f = (Z(v, v) | 0) + w | 0;
                  b[e + -82 >> 1] = (f + 16384 | 0) >>> 15;
                  h = h + -1 << 16 >> 16;
                  if (!(h << 16 >> 16)) break; else {
                      g = g + 4 | 0;
                      e = e + -164 | 0;
                  }
              }
              w = c + 78 | 0;
              v = 1;
              while (1) {
                  f = 39 - v | 0;
                  a = d + 3120 + (f << 1) | 0;
                  e = d + (f * 80 | 0) + 78 | 0;
                  f = c + (f << 1) | 0;
                  k = y + (v << 1) | 0;
                  g = 65575 - v | 0;
                  j = g & 65535;
                  h = b[x >> 1] | 0;
                  if (!(j << 16 >> 16)) {
                      j = w;
                      g = 0;
                  } else {
                      r = g + 65535 & 65535;
                      t = r * 41 | 0;
                      u = (Z(v, -40) | 0) - t | 0;
                      s = 0 - v | 0;
                      t = s - t | 0;
                      s = s - r | 0;
                      q = v + r | 0;
                      p = b[k >> 1] | 0;
                      n = x;
                      o = w;
                      l = d + ((38 - v | 0) * 80 | 0) + 78 | 0;
                      g = 0;
                      m = 0;
                      while (1) {
                          k = k + 2 | 0;
                          g = (Z(p << 16 >> 16, h) | 0) + g | 0;
                          n = n + 2 | 0;
                          p = b[k >> 1] | 0;
                          m = (Z(p << 16 >> 16, h) | 0) + m | 0;
                          B = f;
                          f = f + -2 | 0;
                          h = b[f >> 1] | 0;
                          A = b[o >> 1] << 1;
                          B = (Z((Z(A, b[B >> 1] | 0) | 0) >> 16, (g << 1) + 32768 >> 16) | 0) >>> 15 & 65535;
                          b[e >> 1] = B;
                          b[a >> 1] = B;
                          h = (Z((Z(A, h) | 0) >> 16, (m << 1) + 32768 >> 16) | 0) >>> 15 & 65535;
                          b[a + -2 >> 1] = h;
                          b[l >> 1] = h;
                          j = j + -1 << 16 >> 16;
                          h = b[n >> 1] | 0;
                          if (!(j << 16 >> 16)) break; else {
                              o = o + -2 | 0;
                              a = a + -82 | 0;
                              e = e + -82 | 0;
                              l = l + -82 | 0;
                          }
                      }
                      k = y + (q + 1 << 1) | 0;
                      j = c + (38 - r << 1) | 0;
                      f = c + (s + 38 << 1) | 0;
                      a = d + 3040 + (t + 38 << 1) | 0;
                      e = d + 3040 + (u + 38 << 1) | 0;
                  }
                  B = (Z(b[k >> 1] | 0, h) | 0) + g | 0;
                  B = (Z((B << 1) + 32768 >> 16, (Z(b[j >> 1] << 1, b[f >> 1] | 0) | 0) >> 16) | 0) >>> 15 & 65535;
                  b[a >> 1] = B;
                  b[e >> 1] = B;
                  e = (v << 16) + 131072 | 0;
                  if ((e | 0) < 2621440) v = e >> 16; else break
              }
              i = z;
              return
          }

          function gc(a, d, e, f, g, h, j) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0;
              r = i;
              i = i + 160 | 0;
              q = r;
              if (g << 16 >> 16 > 0) {
                  o = h & 65535;
                  p = 0;
                  k = 5;
                  do {
                      if ((p | 0) < 40) {
                          n = p;
                          m = p & 65535;
                          h = 0;
                          while (1) {
                              if (m << 16 >> 16 < 40) {
                                  m = m << 16 >> 16;
                                  l = 0;
                                  do {
                                      l = (Z(b[a + (m - n << 1) >> 1] | 0, b[d + (m << 1) >> 1] | 0) | 0) + l | 0;
                                      m = m + 1 | 0;
                                  } while ((m & 65535) << 16 >> 16 != 40)
                              } else l = 0;
                              l = l << 1;
                              c[q + (n << 2) >> 2] = l;
                              l = Gc(l) | 0;
                              h = (l | 0) > (h | 0) ? l : h;
                              l = n + o | 0;
                              m = l & 65535;
                              if (m << 16 >> 16 >= 40) break; else n = l << 16 >> 16;
                          }
                      } else h = 0;
                      k = (h >> 1) + k | 0;
                      p = p + 1 | 0;
                  } while ((p & 65535) << 16 >> 16 != g << 16 >> 16)
              } else k = 5;
              f = ((pe(k) | 0) & 65535) - (f & 65535) | 0;
              h = f << 16 >> 16;
              l = 0 - h << 16;
              k = (l | 0) < 2031616;
              l = l >> 16;
              if ((f & 65535) << 16 >> 16 > 0) if (k) {
                  k = 0;
                  do {
                      f = c[q + (k << 2) >> 2] | 0;
                      d = f << h;
                      b[e + (k << 1) >> 1] = Ce((d >> h | 0) == (f | 0) ? d : f >> 31 ^ 2147483647, j) | 0;
                      k = k + 1 | 0;
                  } while ((k | 0) != 40);
                  i = r;
                  return
              } else {
                  k = 0;
                  do {
                      f = c[q + (k << 2) >> 2] | 0;
                      d = f << h;
                      b[e + (k << 1) >> 1] = Ce((d >> h | 0) == (f | 0) ? d : f >> 31 ^ 2147483647, j) | 0;
                      k = k + 1 | 0;
                  } while ((k | 0) != 40);
                  i = r;
                  return
              } else if (k) {
                  k = 0;
                  do {
                      b[e + (k << 1) >> 1] = Ce(c[q + (k << 2) >> 2] >> l, j) | 0;
                      k = k + 1 | 0;
                  } while ((k | 0) != 40);
                  i = r;
                  return
              } else {
                  k = 0;
                  do {
                      b[e + (k << 1) >> 1] = Ce(0, j) | 0;
                      k = k + 1 | 0;
                  } while ((k | 0) != 40);
                  i = r;
                  return
              }
          }

          function hc(a, d, e, f, g) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0,
                  x = 0, y = 0, z = 0;
              z = i;
              i = i + 160 | 0;
              y = z;
              v = a + 2 | 0;
              w = b[a >> 1] | 0;
              x = 0;
              g = 5;
              do {
                  u = x;
                  k = 0;
                  while (1) {
                      n = d + (u << 1) | 0;
                      t = 40 - u | 0;
                      h = (t + 131071 | 0) >>> 1 & 65535;
                      l = d + (u + 1 << 1) | 0;
                      j = Z(b[n >> 1] << 1, w) | 0;
                      if (!(h << 16 >> 16)) h = v; else {
                          s = 131111 - u + 131070 & 131070;
                          r = u + s | 0;
                          q = v;
                          p = a;
                          o = n;
                          while (1) {
                              m = o + 4 | 0;
                              n = p + 4 | 0;
                              j = (Z(b[l >> 1] << 1, b[q >> 1] | 0) | 0) + j | 0;
                              h = h + -1 << 16 >> 16;
                              j = (Z(b[m >> 1] << 1, b[n >> 1] | 0) | 0) + j | 0;
                              if (!(h << 16 >> 16)) break; else {
                                  l = o + 6 | 0;
                                  q = p + 6 | 0;
                                  p = n;
                                  o = m;
                              }
                          }
                          l = d + (r + 3 << 1) | 0;
                          h = a + (s + 3 << 1) | 0;
                      }
                      if (!(t & 1)) j = (Z(b[l >> 1] << 1, b[h >> 1] | 0) | 0) + j | 0;
                      c[y + (u << 2) >> 2] = j;
                      j = (j | 0) < 0 ? 0 - j | 0 : j;
                      k = (j | 0) > (k | 0) ? j : k;
                      j = u + 5 | 0;
                      if ((j & 65535) << 16 >> 16 < 40) u = j << 16 >> 16; else break
                  }
                  g = (k >> 1) + g | 0;
                  x = x + 1 | 0;
              } while ((x | 0) != 5);
              f = ((pe(g) | 0) & 65535) - (f & 65535) | 0;
              j = f << 16 >> 16;
              g = 0 - j << 16;
              k = g >> 16;
              if ((f & 65535) << 16 >> 16 > 0) {
                  h = 20;
                  g = y;
                  while (1) {
                      y = c[g >> 2] | 0;
                      f = y << j;
                      b[e >> 1] = (((f >> j | 0) == (y | 0) ? f : y >> 31 ^ 2147483647) + 32768 | 0) >>> 16;
                      y = c[g + 4 >> 2] | 0;
                      f = y << j;
                      b[e + 2 >> 1] = (((f >> j | 0) == (y | 0) ? f : y >> 31 ^ 2147483647) + 32768 | 0) >>> 16;
                      h = h + -1 << 16 >> 16;
                      if (!(h << 16 >> 16)) break; else {
                          e = e + 4 | 0;
                          g = g + 8 | 0;
                      }
                  }
                  i = z;
                  return
              }
              if ((g | 0) < 2031616) {
                  h = 20;
                  g = y;
                  while (1) {
                      b[e >> 1] = ((c[g >> 2] >> k) + 32768 | 0) >>> 16;
                      b[e + 2 >> 1] = ((c[g + 4 >> 2] >> k) + 32768 | 0) >>> 16;
                      h = h + -1 << 16 >> 16;
                      if (!(h << 16 >> 16)) break; else {
                          e = e + 4 | 0;
                          g = g + 8 | 0;
                      }
                  }
                  i = z;
                  return
              } else {
                  b[e >> 1] = 0;
                  y = e + 4 | 0;
                  b[e + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  f = y + 4 | 0;
                  b[y + 2 >> 1] = 0;
                  b[f >> 1] = 0;
                  y = f + 4 | 0;
                  b[f + 2 >> 1] = 0;
                  b[y >> 1] = 0;
                  b[y + 2 >> 1] = 0;
                  i = z;
                  return
              }
          }

          function ic(a, b, d, e) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0;
              h = (Td(16383, b) | 0) << 16 >> 16;
              b = Z(h, b << 16 >> 16) | 0;
              if ((b | 0) == 1073741824) {
                  c[e >> 2] = 1;
                  f = 2147483647;
              } else f = b << 1;
              g = (Z(h, d << 16 >> 16) | 0) >> 15;
              b = f + (g << 1) | 0;
              if ((f ^ g | 0) > 0 & (b ^ f | 0) < 0) {
                  c[e >> 2] = 1;
                  b = (f >>> 31) + 2147483647 | 0;
              }
              f = 2147483647 - b | 0;
              d = f >> 16;
              b = Z(d, h) | 0;
              if ((b | 0) == 1073741824) {
                  c[e >> 2] = 1;
                  g = 2147483647;
              } else g = b << 1;
              h = (Z((f >>> 1) - (d << 15) << 16 >> 16, h) | 0) >> 15;
              b = g + (h << 1) | 0;
              if ((g ^ h | 0) > 0 & (b ^ g | 0) < 0) {
                  c[e >> 2] = 1;
                  b = (g >>> 31) + 2147483647 | 0;
              }
              g = b >> 16;
              h = a >> 16;
              d = Z(g, h) | 0;
              d = (d | 0) == 1073741824 ? 2147483647 : d << 1;
              f = (Z((b >>> 1) - (g << 15) << 16 >> 16, h) | 0) >> 15;
              e = (f << 1) + d | 0;
              e = (f ^ d | 0) > 0 & (e ^ d | 0) < 0 ? (d >>> 31) + 2147483647 | 0 : e;
              h = (Z(g, (a >>> 1) - (h << 15) << 16 >> 16) | 0) >> 15;
              a = e + (h << 1) | 0;
              a = (e ^ h | 0) > 0 & (a ^ e | 0) < 0 ? (e >>> 31) + 2147483647 | 0 : a;
              e = a << 2;
              return ((e >> 2 | 0) == (a | 0) ? e : a >> 31 ^ 2147483647) | 0
          }

          function jc(a, d) {
              a = a | 0;
              d = d | 0;
              var e = 0, f = 0, g = 0, h = 0;
              if (!a) {
                  h = -1;
                  return h | 0
              }
              c[a >> 2] = 0;
              e = Je(192) | 0;
              if (!e) {
                  h = -1;
                  return h | 0
              }
              f = e + 176 | 0;
              b[f >> 1] = 0;
              b[f + 2 >> 1] = 0;
              b[f + 4 >> 1] = 0;
              b[f + 6 >> 1] = 0;
              b[f + 8 >> 1] = 0;
              b[f + 10 >> 1] = 0;
              f = e;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 20 | 0;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 40 | 0;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 60 | 0;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 80 | 0;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 100 | 0;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 120 | 0;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 140 | 0;
              g = d;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = e + 160 | 0;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = 0;
                  f = f + 2 | 0;
              } while ((f | 0) < (h | 0));
              b[e + 188 >> 1] = 7;
              b[e + 190 >> 1] = 32767;
              c[a >> 2] = e;
              h = 0;
              return h | 0
          }

          function kc(a, c) {
              a = a | 0;
              c = c | 0;
              var d = 0, e = 0, f = 0;
              if (!a) {
                  f = -1;
                  return f | 0
              }
              d = a + 176 | 0;
              b[d >> 1] = 0;
              b[d + 2 >> 1] = 0;
              b[d + 4 >> 1] = 0;
              b[d + 6 >> 1] = 0;
              b[d + 8 >> 1] = 0;
              b[d + 10 >> 1] = 0;
              d = a;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 20 | 0;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 40 | 0;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 60 | 0;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 80 | 0;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 100 | 0;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 120 | 0;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 140 | 0;
              e = c;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 160 | 0;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = 0;
                  d = d + 2 | 0;
              } while ((d | 0) < (f | 0));
              b[a + 188 >> 1] = 7;
              b[a + 190 >> 1] = 32767;
              f = 1;
              return f | 0
          }

          function lc(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function mc(a, d, e, f, g, h) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0,
                  y = 0, z = 0, A = 0, B = 0, C = 0, D = 0;
              C = i;
              i = i + 112 | 0;
              z = C + 80 | 0;
              A = C + 60 | 0;
              B = C + 40 | 0;
              y = C;
              if (d << 16 >> 16 == 0 ? (j = a + 178 | 0, (b[j >> 1] | 0) != 0) : 0) {
                  B = a + 180 | 0;
                  h = a + 182 | 0;
                  e = j;
                  B = b[B >> 1] | 0;
                  f = c[g >> 2] | 0;
                  A = f + 2 | 0;
                  b[f >> 1] = B;
                  h = b[h >> 1] | 0;
                  B = f + 4 | 0;
                  b[A >> 1] = h;
                  A = a + 184 | 0;
                  A = b[A >> 1] | 0;
                  h = f + 6 | 0;
                  b[B >> 1] = A;
                  B = a + 186 | 0;
                  B = b[B >> 1] | 0;
                  a = f + 8 | 0;
                  b[h >> 1] = B;
                  e = b[e >> 1] | 0;
                  f = f + 10 | 0;
                  c[g >> 2] = f;
                  b[a >> 1] = e;
                  i = C;
                  return
              }
              s = y + 36 | 0;
              t = y + 32 | 0;
              u = y + 28 | 0;
              v = y + 24 | 0;
              w = y + 20 | 0;
              x = y + 16 | 0;
              p = y + 12 | 0;
              q = y + 8 | 0;
              r = y + 4 | 0;
              d = y;
              j = d + 40 | 0;
              do {
                  c[d >> 2] = 0;
                  d = d + 4 | 0;
              } while ((d | 0) < (j | 0));
              o = 7;
              d = 0;
              while (1) {
                  n = b[a + 160 + (o << 1) >> 1] | 0;
                  j = n << 16 >> 16;
                  if (n << 16 >> 16 < 0) j = ~((j ^ -4) >> 2); else j = j >>> 2;
                  d = Rd(d, j & 65535, h) | 0;
                  l = o * 10 | 0;
                  n = 9;
                  while (1) {
                      m = y + (n << 2) | 0;
                      k = c[m >> 2] | 0;
                      D = b[a + (n + l << 1) >> 1] | 0;
                      j = D + k | 0;
                      if ((D ^ k | 0) > -1 & (j ^ k | 0) < 0) {
                          c[h >> 2] = 1;
                          j = (k >>> 31) + 2147483647 | 0;
                      }
                      c[m >> 2] = j;
                      if ((n | 0) > 0) n = n + -1 | 0; else break
                  }
                  if ((o | 0) > 0) o = o + -1 | 0; else break
              }
              j = d << 16 >> 16;
              if (d << 16 >> 16 < 0) j = ~((j ^ -2) >> 1); else j = j >>> 1;
              b[A + 18 >> 1] = (c[s >> 2] | 0) >>> 3;
              b[A + 16 >> 1] = (c[t >> 2] | 0) >>> 3;
              b[A + 14 >> 1] = (c[u >> 2] | 0) >>> 3;
              b[A + 12 >> 1] = (c[v >> 2] | 0) >>> 3;
              b[A + 10 >> 1] = (c[w >> 2] | 0) >>> 3;
              b[A + 8 >> 1] = (c[x >> 2] | 0) >>> 3;
              b[A + 6 >> 1] = (c[p >> 2] | 0) >>> 3;
              b[A + 4 >> 1] = (c[q >> 2] | 0) >>> 3;
              b[A + 2 >> 1] = (c[r >> 2] | 0) >>> 3;
              b[A >> 1] = (c[y >> 2] | 0) >>> 3;
              d = a + 178 | 0;
              j = (((j << 16) + 167772160 | 0) >>> 16) + 128 | 0;
              b[d >> 1] = j;
              j = j << 16;
              if ((j | 0) < 0) j = ~((j >> 16 ^ -256) >> 8); else j = j >> 24;
              b[d >> 1] = j;
              if ((j | 0) <= 63) {
                  if ((j | 0) < 0) {
                      b[d >> 1] = 0;
                      j = 0;
                  }
              } else {
                  b[d >> 1] = 63;
                  j = 63;
              }
              D = Ge(j << 8 & 65535, 11560, h) | 0;
              D = D << 16 >> 16 > 0 ? 0 : D << 16 >> 16 < -14436 ? -14436 : D;
              b[f >> 1] = D;
              b[f + 2 >> 1] = D;
              b[f + 4 >> 1] = D;
              b[f + 6 >> 1] = D;
              D = ((D << 16 >> 16) * 5443 | 0) >>> 15 & 65535;
              b[f + 8 >> 1] = D;
              b[f + 10 >> 1] = D;
              b[f + 12 >> 1] = D;
              b[f + 14 >> 1] = D;
              ne(A, z, 10, h);
              Ae(z, 205, 10, h);
              me(z, A, 10, h);
              f = a + 182 | 0;
              D = a + 180 | 0;
              te(e, 8, A, B, f, D, h);
              h = f;
              f = d;
              D = b[D >> 1] | 0;
              e = c[g >> 2] | 0;
              B = e + 2 | 0;
              b[e >> 1] = D;
              h = b[h >> 1] | 0;
              D = e + 4 | 0;
              b[B >> 1] = h;
              B = a + 184 | 0;
              B = b[B >> 1] | 0;
              h = e + 6 | 0;
              b[D >> 1] = B;
              a = a + 186 | 0;
              a = b[a >> 1] | 0;
              D = e + 8 | 0;
              b[h >> 1] = a;
              a = b[f >> 1] | 0;
              e = e + 10 | 0;
              c[g >> 2] = e;
              b[D >> 1] = a;
              i = C;
              return
          }

          function nc(a, d, f, g) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
              n = i;
              i = i + 16 | 0;
              k = n + 2 | 0;
              m = n;
              l = a + 176 | 0;
              j = (e[l >> 1] | 0) + 1 | 0;
              j = (j & 65535 | 0) == 8 ? 0 : j & 65535;
              b[l >> 1] = j;
              j = a + ((j << 16 >> 16) * 10 << 1) | 0;
              h = j + 20 | 0;
              do {
                  b[j >> 1] = b[d >> 1] | 0;
                  j = j + 2 | 0;
                  d = d + 2 | 0;
              } while ((j | 0) < (h | 0));
              d = 0;
              h = 160;
              while (1) {
                  j = b[f >> 1] | 0;
                  d = (Z(j << 1, j) | 0) + d | 0;
                  if ((d | 0) < 0) {
                      d = 2147483647;
                      break
                  }
                  h = h + -1 << 16 >> 16;
                  if (!(h << 16 >> 16)) break; else f = f + 2 | 0;
              }
              de(d, k, m, g);
              d = b[k >> 1] | 0;
              k = d << 16 >> 16;
              f = k << 10;
              if ((f | 0) != (k << 26 >> 16 | 0)) {
                  c[g >> 2] = 1;
                  f = d << 16 >> 16 > 0 ? 32767 : -32768;
              }
              b[a + 160 + (b[l >> 1] << 1) >> 1] = (((b[m >> 1] | 0) >>> 5) + f << 16) + -558432256 >> 17;
              i = n;
              return
          }

          function oc(a, d, e, f) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0;
              h = a + 190 | 0;
              i = Rd(b[h >> 1] | 0, 1, f) | 0;
              b[h >> 1] = i;
              g = a + 188 | 0;
              do if (!(d << 16 >> 16)) {
                  a = b[g >> 1] | 0;
                  if (!(a << 16 >> 16)) {
                      b[h >> 1] = 0;
                      c[e >> 2] = 8;
                      a = 1;
                      break
                  }
                  h = (a & 65535) + 65535 & 65535;
                  b[g >> 1] = h;
                  if ((Rd(i, h, f) | 0) << 16 >> 16 < 30) {
                      c[e >> 2] = 8;
                      a = 0;
                  } else a = 0;
              } else {
                  b[g >> 1] = 7;
                  a = 0;
              } while (0);
              return a | 0
          }

          function pc(a, b, c, d, e, f, g, h) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              if (!(f << 16 >> 16)) {
                  f = a << 16 >> 16;
                  if (((f << 16) + -5570560 | 0) < 65536) {
                      b = (f * 3 | 0) + -58 + (b << 16 >> 16) | 0;
                      b = b & 65535;
                      return b | 0
                  } else {
                      b = f + 112 | 0;
                      b = b & 65535;
                      return b | 0
                  }
              }
              if (!(g << 16 >> 16)) {
                  h = (a & 65535) - (d & 65535) << 16;
                  b = (b << 16 >> 16) + 2 + (h >> 15) + (h >> 16) | 0;
                  b = b & 65535;
                  return b | 0
              }
              d = d << 16 >> 16;
              d = (((c & 65535) - d << 16) + -327680 | 0) > 0 ? d + 5 & 65535 : c;
              e = e << 16 >> 16;
              c = a << 16 >> 16;
              d = (((e - (d & 65535) << 16) + -262144 | 0) > 0 ? e + 65532 & 65535 : d) << 16 >> 16;
              e = d * 196608 | 0;
              a = e + -393216 >> 16;
              f = ((b & 65535) << 16) + (c * 196608 | 0) >> 16;
              if (!(a - f & 32768)) {
                  b = c + 5 - d | 0;
                  b = b & 65535;
                  return b | 0
              }
              if ((e + 196608 >> 16 | 0) > (f | 0)) {
                  b = f + 3 - a | 0;
                  b = b & 65535;
                  return b | 0
              } else {
                  b = c + 11 - d | 0;
                  b = b & 65535;
                  return b | 0
              }
              return 0
          }

          function qc(a, b, c, d, e) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              e = a << 16 >> 16;
              do if (!(d << 16 >> 16)) if (a << 16 >> 16 < 95) {
                  e = ((e * 393216 | 0) + -6881280 >> 16) + (b << 16 >> 16) | 0;
                  break
              } else {
                  e = e + 368 | 0;
                  break
              } else e = ((((e - (c & 65535) | 0) * 393216 | 0) + 196608 | 0) >>> 16) + (b & 65535) | 0; while (0);
              return e & 65535 | 0
          }

          function rc(d, f, g, h) {
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
              i = c[h + 96 >> 2] | 0;
              if (d >>> 0 < 8) {
                  m = (c[h + 100 >> 2] | 0) + (d << 2) | 0;
                  l = c[m >> 2] | 0;
                  a[g >> 0] = b[f + (b[l >> 1] << 1) >> 1] << 4 | d | b[f + (b[l + 2 >> 1] << 1) >> 1] << 5 | b[f + (b[l + 4 >> 1] << 1) >> 1] << 6 | b[f + (b[l + 6 >> 1] << 1) >> 1] << 7;
                  l = i + (d << 1) | 0;
                  h = b[l >> 1] | 0;
                  if ((h + -7 | 0) > 4) {
                      i = 4;
                      k = 4;
                      d = 1;
                      while (1) {
                          n = b[f + (b[(c[m >> 2] | 0) + (i << 1) >> 1] << 1) >> 1] | 0;
                          h = g + (d << 16 >> 16) | 0;
                          a[h >> 0] = n;
                          n = e[f + (b[(c[m >> 2] | 0) + ((k | 1) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 1 | n & 65535;
                          a[h >> 0] = n;
                          n = e[f + (b[(c[m >> 2] | 0) + ((k | 2) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 2 | n;
                          a[h >> 0] = n;
                          n = e[f + (b[(c[m >> 2] | 0) + ((k | 3) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 3 | n;
                          a[h >> 0] = n;
                          n = e[f + (b[(c[m >> 2] | 0) + (k + 4 << 16 >> 16 << 16 >> 16 << 1) >> 1] << 1) >> 1] << 4 | n;
                          a[h >> 0] = n;
                          n = e[f + (b[(c[m >> 2] | 0) + (k + 5 << 16 >> 16 << 16 >> 16 << 1) >> 1] << 1) >> 1] << 5 | n;
                          a[h >> 0] = n;
                          n = e[f + (b[(c[m >> 2] | 0) + (k + 6 << 16 >> 16 << 16 >> 16 << 1) >> 1] << 1) >> 1] << 6 | n;
                          a[h >> 0] = n;
                          j = k + 8 << 16 >> 16;
                          d = d + 1 << 16 >> 16;
                          a[h >> 0] = e[f + (b[(c[m >> 2] | 0) + (k + 7 << 16 >> 16 << 16 >> 16 << 1) >> 1] << 1) >> 1] << 7 | n;
                          i = j << 16 >> 16;
                          h = b[l >> 1] | 0;
                          if ((i | 0) >= (h + -7 | 0)) break; else k = j;
                      }
                  } else {
                      j = 4;
                      d = 1;
                  }
                  l = h + 4 & 7;
                  if (!l) return;
                  i = g + (d << 16 >> 16) | 0;
                  a[i >> 0] = 0;
                  h = 0;
                  k = 0;
                  d = 0;
                  while (1) {
                      k = (e[f + (b[(c[m >> 2] | 0) + (j << 16 >> 16 << 1) >> 1] << 1) >> 1] & 255) << h | k & 255;
                      a[i >> 0] = k;
                      d = d + 1 << 16 >> 16;
                      h = d << 16 >> 16;
                      if ((h | 0) >= (l | 0)) break; else j = j + 1 << 16 >> 16;
                  }
                  return
              }
              if ((d | 0) == 15) {
                  a[g >> 0] = 15;
                  return
              }
              a[g >> 0] = b[f >> 1] << 4 | d | b[f + 2 >> 1] << 5 | b[f + 4 >> 1] << 6 | b[f + 6 >> 1] << 7;
              h = i + (d << 1) | 0;
              d = b[h >> 1] | 0;
              i = ((d & 65535) << 16) + 262144 >> 16;
              m = i & -8;
              k = (m + 524281 | 0) >>> 3 & 65535;
              if (k << 16 >> 16 > 0) {
                  i = ((i & -8) + 524281 | 0) >>> 3;
                  l = ((i << 3) + 524280 & 524280) + 12 | 0;
                  j = 1;
                  d = f + 8 | 0;
                  while (1) {
                      a[g + (j << 16 >> 16) >> 0] = e[d + 2 >> 1] << 1 | e[d >> 1] | e[d + 4 >> 1] << 2 | e[d + 6 >> 1] << 3 | e[d + 8 >> 1] << 4 | e[d + 10 >> 1] << 5 | e[d + 12 >> 1] << 6 | e[d + 14 >> 1] << 7;
                      if (k << 16 >> 16 > 1) {
                          k = k + -1 << 16 >> 16;
                          j = j + 1 << 16 >> 16;
                          d = d + 16 | 0;
                      } else break
                  }
                  d = b[h >> 1] | 0;
                  j = (i << 16) + 65536 >> 16;
              } else {
                  l = 4;
                  j = 1;
              }
              d = (0 - m | 4) + (d & 65535) << 16;
              k = d >> 16;
              if (!k) return;
              j = g + j | 0;
              a[j >> 0] = 0;
              if ((d | 0) > 0) {
                  d = 0;
                  i = 0;
                  h = 0;
              } else return;
              do {
                  i = i & 255 | b[f + (l + d << 1) >> 1] << d;
                  a[j >> 0] = i;
                  h = h + 1 << 16 >> 16;
                  d = h << 16 >> 16;
              } while ((d | 0) < (k | 0));
              return
          }

          function sc(d, f, g, h) {
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;
              o = c[h + 100 >> 2] | 0;
              n = c[h + 96 >> 2] | 0;
              a[g >> 0] = d & 15;
              n = n + (d << 1) | 0;
              i = b[n >> 1] | 0;
              if (d >>> 0 >= 8) {
                  l = ((i & 65535) << 16) + -458752 | 0;
                  if ((l | 0) > 0) {
                      m = 1;
                      k = f;
                      while (1) {
                          f = k + 16 | 0;
                          h = m + 1 << 16 >> 16;
                          a[g + (m << 16 >> 16) >> 0] = e[k + 14 >> 1] | e[k + 12 >> 1] << 1 | ((e[k + 2 >> 1] << 6 | e[k >> 1] << 7 | e[k + 4 >> 1] << 5 | e[k + 6 >> 1] << 4) & 240 | e[k + 8 >> 1] << 3 | e[k + 10 >> 1] << 2) & 252;
                          l = l + -524288 & -65536;
                          if ((l | 0) <= 0) break; else {
                              m = h;
                              k = f;
                          }
                      }
                      i = b[n >> 1] | 0;
                  } else h = 1;
                  m = i & 7;
                  i = g + (h << 16 >> 16) | 0;
                  a[i >> 0] = 0;
                  if (!m) return; else {
                      j = 0;
                      k = 0;
                      l = 0;
                      h = f;
                  }
                  while (1) {
                      k = k & 255 | b[h >> 1] << 7 - j;
                      a[i >> 0] = k;
                      l = l + 1 << 16 >> 16;
                      j = l << 16 >> 16;
                      if ((j | 0) >= (m | 0)) break; else h = h + 2 | 0;
                  }
                  return
              }
              k = i << 16 >> 16;
              if (i << 16 >> 16 > 7) {
                  i = o + (d << 2) | 0;
                  h = 0;
                  m = 0;
                  j = 1;
                  while (1) {
                      p = e[f + (b[(c[i >> 2] | 0) + (h << 1) >> 1] << 1) >> 1] << 7;
                      k = g + (j << 16 >> 16) | 0;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 1) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 6 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 2) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 5 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 3) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 4 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 4) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 3 | p & 240;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 5) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 2 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 6) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 1 | p;
                      a[k >> 0] = p;
                      l = m + 8 << 16 >> 16;
                      j = j + 1 << 16 >> 16;
                      a[k >> 0] = p & 254 | e[f + (b[(c[i >> 2] | 0) + ((m | 7) << 16 >> 16 << 1) >> 1] << 1) >> 1];
                      h = l << 16 >> 16;
                      k = b[n >> 1] | 0;
                      if ((h | 0) >= (k + -7 | 0)) break; else m = l;
                  }
              } else {
                  l = 0;
                  j = 1;
              }
              n = k & 7;
              m = g + (j << 16 >> 16) | 0;
              a[m >> 0] = 0;
              if (!n) return;
              j = o + (d << 2) | 0;
              i = 0;
              h = 0;
              k = 0;
              while (1) {
                  h = (e[f + (b[(c[j >> 2] | 0) + (l << 16 >> 16 << 1) >> 1] << 1) >> 1] & 255) << 7 - i | h & 255;
                  a[m >> 0] = h;
                  k = k + 1 << 16 >> 16;
                  i = k << 16 >> 16;
                  if ((i | 0) >= (n | 0)) break; else l = l + 1 << 16 >> 16;
              }
              return
          }

          function tc(d, f, g, h) {
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;
              o = c[h + 100 >> 2] | 0;
              n = c[h + 96 >> 2] | 0;
              a[g >> 0] = d << 3;
              n = n + (d << 1) | 0;
              i = b[n >> 1] | 0;
              if (d >>> 0 >= 8) {
                  l = ((i & 65535) << 16) + -458752 | 0;
                  if ((l | 0) > 0) {
                      m = 1;
                      k = f;
                      while (1) {
                          f = k + 16 | 0;
                          h = m + 1 << 16 >> 16;
                          a[g + (m << 16 >> 16) >> 0] = e[k + 14 >> 1] | e[k + 12 >> 1] << 1 | ((e[k + 2 >> 1] << 6 | e[k >> 1] << 7 | e[k + 4 >> 1] << 5 | e[k + 6 >> 1] << 4) & 240 | e[k + 8 >> 1] << 3 | e[k + 10 >> 1] << 2) & 252;
                          l = l + -524288 & -65536;
                          if ((l | 0) <= 0) break; else {
                              m = h;
                              k = f;
                          }
                      }
                      i = b[n >> 1] | 0;
                  } else h = 1;
                  m = i & 7;
                  i = g + (h << 16 >> 16) | 0;
                  a[i >> 0] = 0;
                  if (!m) return; else {
                      j = 0;
                      k = 0;
                      l = 0;
                      h = f;
                  }
                  while (1) {
                      k = k & 255 | b[h >> 1] << 7 - j;
                      a[i >> 0] = k;
                      l = l + 1 << 16 >> 16;
                      j = l << 16 >> 16;
                      if ((j | 0) >= (m | 0)) break; else h = h + 2 | 0;
                  }
                  return
              }
              k = i << 16 >> 16;
              if (i << 16 >> 16 > 7) {
                  i = o + (d << 2) | 0;
                  h = 0;
                  m = 0;
                  j = 1;
                  while (1) {
                      p = e[f + (b[(c[i >> 2] | 0) + (h << 1) >> 1] << 1) >> 1] << 7;
                      k = g + (j << 16 >> 16) | 0;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 1) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 6 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 2) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 5 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 3) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 4 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 4) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 3 | p & 240;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 5) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 2 | p;
                      a[k >> 0] = p;
                      p = e[f + (b[(c[i >> 2] | 0) + ((m | 6) << 16 >> 16 << 1) >> 1] << 1) >> 1] << 1 | p;
                      a[k >> 0] = p;
                      l = m + 8 << 16 >> 16;
                      j = j + 1 << 16 >> 16;
                      a[k >> 0] = p & 254 | e[f + (b[(c[i >> 2] | 0) + ((m | 7) << 16 >> 16 << 1) >> 1] << 1) >> 1];
                      h = l << 16 >> 16;
                      k = b[n >> 1] | 0;
                      if ((h | 0) >= (k + -7 | 0)) break; else m = l;
                  }
              } else {
                  l = 0;
                  j = 1;
              }
              n = k & 7;
              m = g + (j << 16 >> 16) | 0;
              a[m >> 0] = 0;
              if (!n) return;
              j = o + (d << 2) | 0;
              i = 0;
              h = 0;
              k = 0;
              while (1) {
                  h = (e[f + (b[(c[j >> 2] | 0) + (l << 16 >> 16 << 1) >> 1] << 1) >> 1] & 255) << 7 - i | h & 255;
                  a[m >> 0] = h;
                  k = k + 1 << 16 >> 16;
                  i = k << 16 >> 16;
                  if ((i | 0) >= (n | 0)) break; else l = l + 1 << 16 >> 16;
              }
              return
          }

          function uc(a) {
              a = a | 0;
              var d = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(16) | 0;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              ;b[d >> 1] = 0;
              b[d + 2 >> 1] = 0;
              b[d + 4 >> 1] = 0;
              b[d + 6 >> 1] = 0;
              b[d + 8 >> 1] = 0;
              b[d + 10 >> 1] = 0;
              b[d + 12 >> 1] = 0;
              b[d + 14 >> 1] = 0;
              c[a >> 2] = d;
              a = 0;
              return a | 0
          }

          function vc(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              ;b[a >> 1] = 0;
              b[a + 2 >> 1] = 0;
              b[a + 4 >> 1] = 0;
              b[a + 6 >> 1] = 0;
              b[a + 8 >> 1] = 0;
              b[a + 10 >> 1] = 0;
              b[a + 12 >> 1] = 0;
              b[a + 14 >> 1] = 0;
              a = 0;
              return a | 0
          }

          function wc(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function xc(a, d, e, f, g) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, i = 0, j = 0, k = 0, l = 0;
              j = d << 16 >> 16 < 2722 ? 0 : d << 16 >> 16 < 5444 ? 1 : 2;
              i = Ee(e, 1, g) | 0;
              l = a + 4 | 0;
              if (!(e << 16 >> 16 > 200 ? i << 16 >> 16 > (b[l >> 1] | 0) : 0)) {
                  i = b[a >> 1] | 0;
                  if (i << 16 >> 16) {
                      h = i + -1 << 16 >> 16;
                      b[a >> 1] = h;
                      h = h << 16 >> 16 != 0;
                      k = 5;
                  }
              } else {
                  b[a >> 1] = 8;
                  h = 1;
                  k = 5;
              }
              if ((k | 0) == 5) if ((j & 65535) < 2 & h) j = (j & 65535) + 1 & 65535;
              k = a + 6 | 0;
              b[k >> 1] = d;
              h = Zd(k, 5) | 0;
              if (!(j << 16 >> 16 != 0 | h << 16 >> 16 > 5443)) if (h << 16 >> 16 < 0) h = 16384; else {
                  h = h << 16 >> 16;
                  h = (((h << 18 >> 18 | 0) == (h | 0) ? h << 2 : h >>> 15 ^ 32767) << 16 >> 16) * 24660 >> 15;
                  if ((h | 0) > 32767) {
                      c[g >> 2] = 1;
                      h = 32767;
                  }
                  h = 16384 - h & 65535;
              } else h = 0;
              i = a + 2 | 0;
              if (!(b[i >> 1] | 0)) h = De(h, 1, g) | 0;
              b[f >> 1] = h;
              b[i >> 1] = h;
              b[l >> 1] = e;
              f = a + 12 | 0;
              b[a + 14 >> 1] = b[f >> 1] | 0;
              e = a + 10 | 0;
              b[f >> 1] = b[e >> 1] | 0;
              a = a + 8 | 0;
              b[e >> 1] = b[a >> 1] | 0;
              b[a >> 1] = b[k >> 1] | 0;
              return
          }

          function yc(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(68) | 0;
              f = d;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              c[d + 28 >> 2] = 0;
              g = d + 64 | 0;
              c[g >> 2] = 0;
              h = d + 32 | 0;
              if (((Ud(h) | 0) << 16 >> 16 == 0 ? (i = d + 48 | 0, (Ud(i) | 0) << 16 >> 16 == 0) : 0) ? (uc(g) | 0) << 16 >> 16 == 0 : 0) {
                  e = d + 32 | 0;
                  do {
                      b[d >> 1] = 0;
                      d = d + 2 | 0;
                  } while ((d | 0) < (e | 0));
                  Ud(h) | 0;
                  Ud(i) | 0;
                  vc(c[g >> 2] | 0) | 0;
                  c[a >> 2] = f;
                  a = 0;
                  return a | 0
              }
              wc(g);
              Ke(d);
              a = -1;
              return a | 0
          }

          function zc(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              wc(b + 64 | 0);
              Ke(c[a >> 2] | 0);
              c[a >> 2] = 0;
              return
          }

          function Ac(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0;
              if (!a) {
                  f = -1;
                  return f | 0
              }
              d = a + 32 | 0;
              e = a;
              f = e + 32 | 0;
              do {
                  b[e >> 1] = 0;
                  e = e + 2 | 0;
              } while ((e | 0) < (f | 0));
              Ud(d) | 0;
              Ud(a + 48 | 0) | 0;
              vc(c[a + 64 >> 2] | 0) | 0;
              f = 0;
              return f | 0
          }

          function Bc(a, d, f, g, h, j, k, l, m, n, o, p, q, r, s, t, u, v, w) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              q = q | 0;
              r = r | 0;
              s = s | 0;
              t = t | 0;
              u = u | 0;
              v = v | 0;
              w = w | 0;
              var x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0;
              H = i;
              i = i + 48 | 0;
              y = H + 34 | 0;
              A = H + 32 | 0;
              C = H + 30 | 0;
              B = H + 28 | 0;
              z = H + 18 | 0;
              x = H + 8 | 0;
              D = H + 6 | 0;
              E = H + 4 | 0;
              F = H + 2 | 0;
              G = H;
              if (d) {
                  o = a + 32 | 0;
                  Vd(o, d, h, y, A, D, E, w);
                  do if ((d | 0) != 7) {
                      Vb(d, j, k, l, m, n, z, x, G, F, w);
                      if ((d | 0) == 5) {
                          ld(c[a + 64 >> 2] | 0, f, g, h, z, x, b[D >> 1] | 0, b[E >> 1] | 0, b[y >> 1] | 0, b[A >> 1] | 0, 40, b[G >> 1] | 0, b[F >> 1] | 0, p, s, t, C, B, u, v, w);
                          break
                      } else {
                          a = od(d, b[y >> 1] | 0, b[A >> 1] | 0, z, x, p, s, t, C, B, v, w) | 0;
                          j = c[u >> 2] | 0;
                          c[u >> 2] = j + 2;
                          b[j >> 1] = a;
                          break
                      }
                  } else {
                      b[t >> 1] = Cc(k, m, w) | 0;
                      a = md(7, b[y >> 1] | 0, b[A >> 1] | 0, t, C, B, c[v + 68 >> 2] | 0, w) | 0;
                      j = c[u >> 2] | 0;
                      c[u >> 2] = j + 2;
                      b[j >> 1] = a;
                  } while (0);
                  Wd(o, b[C >> 1] | 0, b[B >> 1] | 0);
                  i = H;
                  return
              }
              if (!(o << 16 >> 16)) {
                  Vd(a + 48 | 0, 0, h, y, A, D, E, w);
                  Vb(0, j, k, l, m, n, z, x, G, F, w);
                  Wb(j, D, E, w);
                  j = jd(a + 32 | 0, b[a >> 1] | 0, b[a + 2 >> 1] | 0, a + 8 | 0, a + 18 | 0, b[a + 4 >> 1] | 0, b[a + 6 >> 1] | 0, h, b[y >> 1] | 0, b[A >> 1] | 0, x, z, b[D >> 1] | 0, b[E >> 1] | 0, p, q, r, s, t, w) | 0;
                  b[c[a + 28 >> 2] >> 1] = j;
                  i = H;
                  return
              }
              o = c[u >> 2] | 0;
              c[u >> 2] = o + 2;
              c[a + 28 >> 2] = o;
              o = a + 48 | 0;
              f = a + 32 | 0;
              q = f;
              q = e[q >> 1] | e[q + 2 >> 1] << 16;
              f = f + 4 | 0;
              f = e[f >> 1] | e[f + 2 >> 1] << 16;
              u = o;
              r = u;
              b[r >> 1] = q;
              b[r + 2 >> 1] = q >>> 16;
              u = u + 4 | 0;
              b[u >> 1] = f;
              b[u + 2 >> 1] = f >>> 16;
              u = a + 40 | 0;
              f = u;
              f = e[f >> 1] | e[f + 2 >> 1] << 16;
              u = u + 4 | 0;
              u = e[u >> 1] | e[u + 2 >> 1] << 16;
              r = a + 56 | 0;
              q = r;
              b[q >> 1] = f;
              b[q + 2 >> 1] = f >>> 16;
              r = r + 4 | 0;
              b[r >> 1] = u;
              b[r + 2 >> 1] = u >>> 16;
              r = a + 2 | 0;
              Vd(o, 0, h, a, r, D, E, w);
              Vb(0, j, k, l, m, n, a + 18 | 0, a + 8 | 0, G, F, w);
              l = (e[F >> 1] | 0) + 1 | 0;
              u = b[G >> 1] | 0;
              q = l << 16 >> 16;
              if ((l & 65535) << 16 >> 16 < 0) {
                  v = 0 - q << 16;
                  if ((v | 0) < 983040) v = u << 16 >> 16 >> (v >> 16) & 65535; else v = 0;
              } else {
                  u = u << 16 >> 16;
                  v = u << q;
                  if ((v << 16 >> 16 >> q | 0) == (u | 0)) v = v & 65535; else v = (u >>> 15 ^ 32767) & 65535;
              }
              b[t >> 1] = v;
              Wb(j, a + 4 | 0, a + 6 | 0, w);
              id(o, b[a >> 1] | 0, b[r >> 1] | 0, b[F >> 1] | 0, b[G >> 1] | 0, w);
              i = H;
              return
          }

          function Cc(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var e = 0, f = 0, g = 0;
              f = 10;
              d = a;
              e = c;
              a = 0;
              while (1) {
                  a = (Z(b[e >> 1] >> 1, b[d >> 1] | 0) | 0) + a | 0;
                  a = a + (Z(b[e + 2 >> 1] >> 1, b[d + 2 >> 1] | 0) | 0) | 0;
                  a = a + (Z(b[e + 4 >> 1] >> 1, b[d + 4 >> 1] | 0) | 0) | 0;
                  a = a + (Z(b[e + 6 >> 1] >> 1, b[d + 6 >> 1] | 0) | 0) | 0;
                  f = f + -1 << 16 >> 16;
                  if (!(f << 16 >> 16)) break; else {
                      d = d + 8 | 0;
                      e = e + 8 | 0;
                  }
              }
              d = a << 1;
              f = pe(d | 1) | 0;
              g = f << 16 >> 16;
              d = (f << 16 >> 16 < 17 ? d >> 17 - g : d << g + -17) & 65535;
              if (d << 16 >> 16 < 1) {
                  c = 0;
                  return c | 0
              } else {
                  f = 20;
                  e = c;
                  a = 0;
              }
              while (1) {
                  c = b[e >> 1] >> 1;
                  c = ((Z(c, c) | 0) >>> 2) + a | 0;
                  a = b[e + 2 >> 1] >> 1;
                  a = c + ((Z(a, a) | 0) >>> 2) | 0;
                  f = f + -1 << 16 >> 16;
                  if (!(f << 16 >> 16)) break; else e = e + 4 | 0;
              }
              a = a << 3;
              f = pe(a) | 0;
              c = f << 16 >> 16;
              d = Td(d, (f << 16 >> 16 < 16 ? a >> 16 - c : a << c + -16) & 65535) | 0;
              c = (g << 16) + 327680 - (c << 16) | 0;
              a = c >> 16;
              if ((c | 0) > 65536) a = d << 16 >> 16 >> a + -1; else a = d << 16 >> 16 << 1 - a;
              c = a & 65535;
              return c | 0
          }

          function Dc(a, d, e, f, g, h) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0;
              c[h >> 2] = 0;
              m = g << 16 >> 16;
              k = m >>> 2 & 65535;
              o = k << 16 >> 16 == 0;
              if (o) j = 0; else {
                  l = k;
                  i = e;
                  j = 0;
                  while (1) {
                      p = b[i >> 1] | 0;
                      p = (Z(p, p) | 0) + j | 0;
                      j = b[i + 2 >> 1] | 0;
                      j = p + (Z(j, j) | 0) | 0;
                      p = b[i + 4 >> 1] | 0;
                      p = j + (Z(p, p) | 0) | 0;
                      j = b[i + 6 >> 1] | 0;
                      j = p + (Z(j, j) | 0) | 0;
                      l = l + -1 << 16 >> 16;
                      if (!(l << 16 >> 16)) break; else i = i + 8 | 0;
                  }
              }
              if (!((j >>> 31 ^ 1) & (j | 0) < 1073741824)) {
                  j = m >>> 1 & 65535;
                  if (!(j << 16 >> 16)) j = 1; else {
                      i = j;
                      l = e;
                      j = 0;
                      while (1) {
                          p = b[l >> 1] >> 2;
                          p = (Z(p, p) | 0) + j | 0;
                          j = b[l + 2 >> 1] >> 2;
                          j = p + (Z(j, j) | 0) | 0;
                          i = i + -1 << 16 >> 16;
                          if (!(i << 16 >> 16)) break; else l = l + 4 | 0;
                      }
                      j = j << 1 | 1;
                  }
                  p = (pe(j) | 0) << 16 >> 16;
                  n = p + 65532 & 65535;
                  p = Ce(j << p, h) | 0;
              } else {
                  m = j << 1 | 1;
                  p = pe(m) | 0;
                  n = p;
                  p = Ce(m << (p << 16 >> 16), h) | 0;
              }
              c[h >> 2] = 0;
              do if (!(g << 16 >> 16)) {
                  j = 1;
                  q = 14;
              } else {
                  m = g;
                  l = d;
                  j = e;
                  g = 0;
                  while (1) {
                      r = Z(b[j >> 1] | 0, b[l >> 1] | 0) | 0;
                      i = r + g | 0;
                      if ((r ^ g | 0) > 0 & (i ^ g | 0) < 0) break;
                      m = m + -1 << 16 >> 16;
                      if (!(m << 16 >> 16)) {
                          q = 13;
                          break
                      } else {
                          l = l + 2 | 0;
                          j = j + 2 | 0;
                          g = i;
                      }
                  }
                  if ((q | 0) == 13) {
                      j = i << 1 | 1;
                      q = 14;
                      break
                  }
                  c[h >> 2] = 1;
                  if (o) j = 1; else {
                      j = d;
                      i = 0;
                      while (1) {
                          i = (Z(b[e >> 1] >> 2, b[j >> 1] | 0) | 0) + i | 0;
                          i = i + (Z(b[e + 2 >> 1] >> 2, b[j + 2 >> 1] | 0) | 0) | 0;
                          i = i + (Z(b[e + 4 >> 1] >> 2, b[j + 4 >> 1] | 0) | 0) | 0;
                          i = i + (Z(b[e + 6 >> 1] >> 2, b[j + 6 >> 1] | 0) | 0) | 0;
                          k = k + -1 << 16 >> 16;
                          if (!(k << 16 >> 16)) break; else {
                              j = j + 8 | 0;
                              e = e + 8 | 0;
                          }
                      }
                      j = i << 1 | 1;
                  }
                  e = (pe(j) | 0) << 16 >> 16;
                  i = e + 65532 & 65535;
                  e = Ce(j << e, h) | 0;
              } while (0);
              if ((q | 0) == 14) {
                  e = pe(j) | 0;
                  i = e;
                  e = Ce(j << (e << 16 >> 16), h) | 0;
              }
              b[f >> 1] = p;
              j = n << 16 >> 16;
              b[f + 2 >> 1] = 15 - j;
              b[f + 4 >> 1] = e;
              i = i << 16 >> 16;
              b[f + 6 >> 1] = 15 - i;
              if (e << 16 >> 16 < 4) {
                  r = 0;
                  return r | 0
              }
              i = De(Td(e << 16 >> 16 >>> 1 & 65535, p) | 0, i - j & 65535, h) | 0;
              i = i << 16 >> 16 > 19661 ? 19661 : i;
              if ((a | 0) != 7) {
                  r = i;
                  return r | 0
              }
              r = i & 65532;
              return r | 0
          }

          function Ec(a, d, e, f, g, h, i) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;
              k = (f & 65535) + 65535 & 65535;
              if (k << 16 >> 16 > g << 16 >> 16) {
                  n = f + -1 << 16 >> 16 << 16 >> 16;
                  f = -2147483648;
                  while (1) {
                      l = c[a + (0 - n << 2) >> 2] | 0;
                      j = l << 1;
                      l = (j >> 1 | 0) == (l | 0) ? j : l >> 31 ^ 2147483647;
                      j = c[a + (~n << 2) >> 2] | 0;
                      m = l - j | 0;
                      if (((m ^ l) & (l ^ j) | 0) < 0) {
                          c[i >> 2] = 1;
                          m = (l >>> 31) + 2147483647 | 0;
                      }
                      l = c[a + (1 - n << 2) >> 2] | 0;
                      j = m - l | 0;
                      if (((j ^ m) & (l ^ m) | 0) < 0) {
                          c[i >> 2] = 1;
                          j = (m >>> 31) + 2147483647 | 0;
                      }
                      m = Gc(j) | 0;
                      f = (m | 0) < (f | 0) ? f : m;
                      k = k + -1 << 16 >> 16;
                      if (k << 16 >> 16 <= g << 16 >> 16) {
                          g = f;
                          break
                      } else n = n + -1 | 0;
                  }
              } else g = -2147483648;
              a = e << 16 >> 16 > 0;
              if (a) {
                  f = 0;
                  j = d;
                  k = 0;
                  while (1) {
                      m = b[j >> 1] | 0;
                      m = Z(m, m) | 0;
                      if ((m | 0) != 1073741824) {
                          l = (m << 1) + k | 0;
                          if ((m ^ k | 0) > 0 & (l ^ k | 0) < 0) {
                              c[i >> 2] = 1;
                              k = (k >>> 31) + 2147483647 | 0;
                          } else k = l;
                      } else {
                          c[i >> 2] = 1;
                          k = 2147483647;
                      }
                      f = f + 1 << 16 >> 16;
                      if (f << 16 >> 16 >= e << 16 >> 16) break; else j = j + 2 | 0;
                  }
                  if (a) {
                      a = 0;
                      n = d;
                      f = d + -2 | 0;
                      j = 0;
                      while (1) {
                          m = Z(b[f >> 1] | 0, b[n >> 1] | 0) | 0;
                          if ((m | 0) != 1073741824) {
                              l = (m << 1) + j | 0;
                              if ((m ^ j | 0) > 0 & (l ^ j | 0) < 0) {
                                  c[i >> 2] = 1;
                                  j = (j >>> 31) + 2147483647 | 0;
                              } else j = l;
                          } else {
                              c[i >> 2] = 1;
                              j = 2147483647;
                          }
                          a = a + 1 << 16 >> 16;
                          if (a << 16 >> 16 >= e << 16 >> 16) break; else {
                              n = n + 2 | 0;
                              f = f + 2 | 0;
                          }
                      }
                  } else j = 0;
              } else {
                  k = 0;
                  j = 0;
              }
              f = k << 1;
              f = (f >> 1 | 0) == (k | 0) ? f : k >> 31 ^ 2147483647;
              e = j << 1;
              e = (e >> 1 | 0) == (j | 0) ? e : j >> 31 ^ 2147483647;
              k = f - e | 0;
              if (((k ^ f) & (e ^ f) | 0) < 0) {
                  c[i >> 2] = 1;
                  k = (f >>> 31) + 2147483647 | 0;
              }
              a = Gc(k) | 0;
              n = ((pe(g) | 0) & 65535) + 65535 | 0;
              k = n << 16 >> 16;
              if ((n & 65535) << 16 >> 16 > 0) {
                  f = g << k;
                  if ((f >> k | 0) != (g | 0)) f = g >> 31 ^ 2147483647;
              } else {
                  k = 0 - k << 16;
                  if ((k | 0) < 2031616) f = g >> (k >> 16); else f = 0;
              }
              m = pe(a) | 0;
              j = m << 16 >> 16;
              if (m << 16 >> 16 > 0) {
                  k = a << j;
                  if ((k >> j | 0) == (a | 0)) o = 33; else {
                      k = a >> 31 ^ 2147483647;
                      o = 33;
                  }
              } else {
                  k = 0 - j << 16;
                  if ((k | 0) < 2031616) {
                      k = a >> (k >> 16);
                      o = 33;
                  } else l = 0;
              }
              if ((o | 0) == 33) if (k >>> 0 > 65535) l = Td(f >>> 16 & 65535, k >>> 16 & 65535) | 0; else l = 0;
              k = m & 65535;
              o = (n & 65535) - k | 0;
              f = o & 65535;
              if (!(o & 32768)) {
                  i = De(l, f, i) | 0;
                  b[h >> 1] = i;
                  return 0
              }
              if (f << 16 >> 16 != -32768) {
                  i = k - n | 0;
                  j = i << 16 >> 16;
                  if ((i & 65535) << 16 >> 16 < 0) {
                      j = 0 - j << 16;
                      if ((j | 0) >= 983040) {
                          i = 0;
                          b[h >> 1] = i;
                          return 0
                      }
                      i = l << 16 >> 16 >> (j >> 16) & 65535;
                      b[h >> 1] = i;
                      return 0
                  }
              } else j = 32767;
              f = l << 16 >> 16;
              k = f << j;
              if ((k << 16 >> 16 >> j | 0) == (f | 0)) {
                  i = k & 65535;
                  b[h >> 1] = i;
                  return 0
              }
              i = (f >>> 15 ^ 32767) & 65535;
              b[h >> 1] = i;
              return 0
          }

          function Fc(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              if (d << 16 >> 16) c = c << 16 >> 16 << 1 & 65535;
              if (c << 16 >> 16 < 0) {
                  a = a + -2 | 0;
                  c = (c & 65535) + 6 & 65535;
              }
              d = c << 16 >> 16;
              e = 6 - d << 16 >> 16;
              c = (Z(b[3468 + (d << 1) >> 1] | 0, b[a >> 1] | 0) | 0) + 16384 | 0;
              c = c + (Z(b[3468 + (e << 1) >> 1] | 0, b[a + 2 >> 1] | 0) | 0) | 0;
              c = c + (Z(b[3468 + (d + 6 << 1) >> 1] | 0, b[a + -2 >> 1] | 0) | 0) | 0;
              c = c + (Z(b[3468 + (e + 6 << 1) >> 1] | 0, b[a + 4 >> 1] | 0) | 0) | 0;
              c = (Z(b[3468 + (d + 12 << 1) >> 1] | 0, b[a + -4 >> 1] | 0) | 0) + c | 0;
              c = c + (Z(b[3468 + (e + 12 << 1) >> 1] | 0, b[a + 6 >> 1] | 0) | 0) | 0;
              d = c + (Z(b[3468 + (d + 18 << 1) >> 1] | 0, b[a + -6 >> 1] | 0) | 0) | 0;
              return (d + (Z(b[3468 + (e + 18 << 1) >> 1] | 0, b[a + 8 >> 1] | 0) | 0) | 0) >>> 15 & 65535 | 0
          }

          function Gc(a) {
              a = a | 0;
              a = a - (a >>> 31) | 0;
              return a >> 31 ^ a | 0
          }

          function Hc(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0, j = 0;
              if (!(a << 16 >> 16)) return; else {
                  f = 3518;
                  g = 3538;
                  e = d;
              }
              while (1) {
                  e = e + 2 | 0;
                  c = c + 2 | 0;
                  j = b[c >> 1] | 0;
                  i = b[f >> 1] | 0;
                  d = Z(i, j) | 0;
                  d = (d | 0) == 1073741824 ? 2147483647 : d << 1;
                  j = (Z(b[g >> 1] | 0, j) | 0) >> 15;
                  h = (j << 1) + d | 0;
                  h = (d ^ j | 0) > 0 & (h ^ d | 0) < 0 ? (d >>> 31) + 2147483647 | 0 : h;
                  i = (Z(i, b[e >> 1] | 0) | 0) >> 15;
                  d = h + (i << 1) | 0;
                  d = (h ^ i | 0) > 0 & (d ^ h | 0) < 0 ? (h >>> 31) + 2147483647 | 0 : d;
                  b[c >> 1] = d >>> 16;
                  b[e >> 1] = (d >>> 1) - (d >> 16 << 15);
                  a = a + -1 << 16 >> 16;
                  if (!(a << 16 >> 16)) break; else {
                      f = f + 2 | 0;
                      g = g + 2 | 0;
                  }
              }
              return
          }

          function Ic(a, b, d) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              var e = 0, f = 0;
              e = a & 65535;
              f = e << 16;
              b = b << 16 >> 16;
              a = (b << 1) + f | 0;
              if (!((b ^ f | 0) > 0 & (a ^ f | 0) < 0)) {
                  f = a;
                  return f | 0
              }
              c[d >> 2] = 1;
              f = (e >>> 15) + 2147483647 | 0;
              return f | 0
          }

          function Jc(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0;
              if (!a) {
                  f = -1;
                  return f | 0
              }
              c[a >> 2] = 0;
              d = Je(22) | 0;
              if (!d) {
                  f = -1;
                  return f | 0
              }
              b[d >> 1] = 4096;
              e = d + 2 | 0;
              f = e + 20 | 0;
              do {
                  b[e >> 1] = 0;
                  e = e + 2 | 0;
              } while ((e | 0) < (f | 0));
              c[a >> 2] = d;
              f = 0;
              return f | 0
          }

          function Kc(a) {
              a = a | 0;
              var c = 0;
              if (!a) {
                  c = -1;
                  return c | 0
              }
              b[a >> 1] = 4096;
              a = a + 2 | 0;
              c = a + 20 | 0;
              do {
                  b[a >> 1] = 0;
                  a = a + 2 | 0;
              } while ((a | 0) < (c | 0));
              c = 0;
              return c | 0
          }

          function Lc(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function Mc(a, c, d, f, g, h) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0,
                  y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0;
              K = i;
              i = i + 96 | 0;
              I = K + 66 | 0;
              J = K + 44 | 0;
              H = K + 22 | 0;
              k = K;
              D = c + 2 | 0;
              G = d + 2 | 0;
              F = (b[G >> 1] << 1) + (e[D >> 1] << 16) | 0;
              j = Gc(F) | 0;
              j = ic(j, b[c >> 1] | 0, b[d >> 1] | 0, h) | 0;
              if ((F | 0) > 0) j = Oc(j) | 0;
              B = j >> 16;
              b[g >> 1] = Ce(j, h) | 0;
              v = j >> 20;
              E = I + 2 | 0;
              b[E >> 1] = v;
              F = J + 2 | 0;
              b[F >> 1] = (j >>> 5) - (v << 15);
              v = Z(B, B) | 0;
              v = (v | 0) == 1073741824 ? 2147483647 : v << 1;
              B = (Z((j >>> 1) - (B << 15) << 16 >> 16, B) | 0) >> 15;
              C = B << 1;
              A = C + v | 0;
              A = (B ^ v | 0) > 0 & (A ^ v | 0) < 0 ? (v >>> 31) + 2147483647 | 0 : A;
              C = A + C | 0;
              C = 2147483647 - (Gc((A ^ B | 0) > 0 & (C ^ A | 0) < 0 ? (A >>> 31) + 2147483647 | 0 : C) | 0) | 0;
              A = C >> 16;
              B = b[c >> 1] | 0;
              v = Z(A, B) | 0;
              v = (v | 0) == 1073741824 ? 2147483647 : v << 1;
              B = (Z((C >>> 1) - (A << 15) << 16 >> 16, B) | 0) >> 15;
              C = (B << 1) + v | 0;
              C = (B ^ v | 0) > 0 & (C ^ v | 0) < 0 ? (v >>> 31) + 2147483647 | 0 : C;
              A = (Z(b[d >> 1] | 0, A) | 0) >> 15;
              v = C + (A << 1) | 0;
              v = (C ^ A | 0) > 0 & (v ^ C | 0) < 0 ? (C >>> 31) + 2147483647 | 0 : v;
              C = pe(v) | 0;
              v = v << (C << 16 >> 16);
              A = H + 2 | 0;
              B = k + 2 | 0;
              l = v;
              v = (v >>> 1) - (v >> 16 << 15) | 0;
              w = k + 4 | 0;
              x = H + 4 | 0;
              y = 2;
              z = 2;
              while (1) {
                  u = l >>> 16;
                  j = u & 65535;
                  r = v & 65535;
                  s = z + -1 | 0;
                  n = I + (s << 1) | 0;
                  t = J + (s << 1) | 0;
                  q = 1;
                  p = n;
                  o = t;
                  m = D;
                  k = G;
                  l = 0;
                  while (1) {
                      L = b[m >> 1] | 0;
                      M = ((Z(b[o >> 1] | 0, L) | 0) >> 15) + l | 0;
                      l = b[p >> 1] | 0;
                      l = M + (Z(l, L) | 0) + ((Z(l, b[k >> 1] | 0) | 0) >> 15) | 0;
                      q = q + 1 << 16 >> 16;
                      if ((q << 16 >> 16 | 0) >= (z | 0)) break; else {
                          p = p + -2 | 0;
                          o = o + -2 | 0;
                          m = m + 2 | 0;
                          k = k + 2 | 0;
                      }
                  }
                  M = (e[c + (z << 1) >> 1] << 16) + (l << 5) + (b[d + (z << 1) >> 1] << 1) | 0;
                  l = ic(Gc(M) | 0, j, r, h) | 0;
                  if ((M | 0) > 0) l = Oc(l) | 0;
                  k = C << 16 >> 16;
                  if (C << 16 >> 16 > 0) {
                      j = l << k;
                      if ((j >> k | 0) != (l | 0)) j = l >> 31 ^ 2147483647;
                  } else {
                      k = 0 - k << 16;
                      if ((k | 0) < 2031616) j = l >> (k >> 16); else j = 0;
                  }
                  q = j >> 16;
                  if ((z | 0) < 5) b[g + (s << 1) >> 1] = (j + 32768 | 0) >>> 16;
                  M = (j >>> 16) - (j >>> 31) | 0;
                  if (((M << 16 >> 31 ^ M) & 65535) << 16 >> 16 > 32750) {
                      j = 16;
                      break
                  }
                  o = (j >>> 1) - (q << 15) << 16 >> 16;
                  p = 1;
                  l = t;
                  k = A;
                  m = B;
                  while (1) {
                      L = (Z(b[l >> 1] | 0, q) | 0) >> 15;
                      t = b[n >> 1] | 0;
                      M = (Z(t, o) | 0) >> 15;
                      t = Z(t, q) | 0;
                      M = t + L + (b[J + (p << 1) >> 1] | 0) + (b[I + (p << 1) >> 1] << 15) + M | 0;
                      b[k >> 1] = M >>> 15;
                      b[m >> 1] = M & 32767;
                      p = p + 1 | 0;
                      if ((p & 65535) << 16 >> 16 == y << 16 >> 16) break; else {
                          n = n + -2 | 0;
                          l = l + -2 | 0;
                          k = k + 2 | 0;
                          m = m + 2 | 0;
                      }
                  }
                  b[x >> 1] = j >> 20;
                  b[w >> 1] = (j >>> 5) - (b[H + (z << 1) >> 1] << 15);
                  L = Z(q, q) | 0;
                  L = (L | 0) == 1073741824 ? 2147483647 : L << 1;
                  j = (Z(o, q) | 0) >> 15;
                  M = j << 1;
                  k = M + L | 0;
                  k = (j ^ L | 0) > 0 & (k ^ L | 0) < 0 ? (L >>> 31) + 2147483647 | 0 : k;
                  M = k + M | 0;
                  M = 2147483647 - (Gc((k ^ j | 0) > 0 & (M ^ k | 0) < 0 ? (k >>> 31) + 2147483647 | 0 : M) | 0) | 0;
                  k = M >> 16;
                  j = u << 16 >> 16;
                  j = ((Z(k, v << 16 >> 16) | 0) >> 15) + (Z(k, j) | 0) + ((Z((M >>> 1) - (k << 15) << 16 >> 16, j) | 0) >> 15) << 1;
                  k = (pe(j) | 0) << 16 >> 16;
                  j = j << k;
                  M = z << 1;
                  Oe(E | 0, A | 0, M | 0) | 0;
                  Oe(F | 0, B | 0, M | 0) | 0;
                  z = z + 1 | 0;
                  if ((z | 0) >= 11) {
                      j = 20;
                      break
                  } else {
                      C = k + (C & 65535) & 65535;
                      l = j;
                      v = (j >> 1) - (j >> 16 << 15) | 0;
                      w = w + 2 | 0;
                      x = x + 2 | 0;
                      y = y + 1 << 16 >> 16;
                  }
              }
              if ((j | 0) == 16) {
                  j = f + 22 | 0;
                  do {
                      b[f >> 1] = b[a >> 1] | 0;
                      f = f + 2 | 0;
                      a = a + 2 | 0;
                  } while ((f | 0) < (j | 0));
                  M = g;
                  L = M;
                  b[L >> 1] = 0;
                  b[L + 2 >> 1] = 0 >>> 16;
                  M = M + 4 | 0;
                  b[M >> 1] = 0;
                  b[M + 2 >> 1] = 0 >>> 16;
                  i = K;
                  return 0
              } else if ((j | 0) == 20) {
                  b[f >> 1] = 4096;
                  M = ((b[F >> 1] | 0) + 8192 + (b[E >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 2 >> 1] = M;
                  b[a + 2 >> 1] = M;
                  M = ((b[J + 4 >> 1] | 0) + 8192 + (b[I + 4 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 4 >> 1] = M;
                  b[a + 4 >> 1] = M;
                  M = ((b[J + 6 >> 1] | 0) + 8192 + (b[I + 6 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 6 >> 1] = M;
                  b[a + 6 >> 1] = M;
                  M = ((b[J + 8 >> 1] | 0) + 8192 + (b[I + 8 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 8 >> 1] = M;
                  b[a + 8 >> 1] = M;
                  M = ((b[J + 10 >> 1] | 0) + 8192 + (b[I + 10 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 10 >> 1] = M;
                  b[a + 10 >> 1] = M;
                  M = ((b[J + 12 >> 1] | 0) + 8192 + (b[I + 12 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 12 >> 1] = M;
                  b[a + 12 >> 1] = M;
                  M = ((b[J + 14 >> 1] | 0) + 8192 + (b[I + 14 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 14 >> 1] = M;
                  b[a + 14 >> 1] = M;
                  M = ((b[J + 16 >> 1] | 0) + 8192 + (b[I + 16 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 16 >> 1] = M;
                  b[a + 16 >> 1] = M;
                  M = ((b[J + 18 >> 1] | 0) + 8192 + (b[I + 18 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 18 >> 1] = M;
                  b[a + 18 >> 1] = M;
                  M = ((b[J + 20 >> 1] | 0) + 8192 + (b[I + 20 >> 1] << 15) | 0) >>> 14 & 65535;
                  b[f + 20 >> 1] = M;
                  b[a + 20 >> 1] = M;
                  i = K;
                  return 0
              }
              return 0
          }

          function Nc(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              e = a >> 16;
              b[c >> 1] = e;
              b[d >> 1] = (a >>> 1) - (e << 15);
              return
          }

          function Oc(a) {
              a = a | 0;
              return ((a | 0) == -2147483648 ? 2147483647 : 0 - a | 0) | 0
          }

          function Pc(a) {
              a = a | 0;
              var b = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              b = Je(4) | 0;
              if (!b) {
                  a = -1;
                  return a | 0
              }
              c[b >> 2] = 0;
              if (!((Jc(b) | 0) << 16 >> 16)) {
                  Kc(c[b >> 2] | 0) | 0;
                  c[a >> 2] = b;
                  a = 0;
                  return a | 0
              } else {
                  Lc(b);
                  Ke(b);
                  a = -1;
                  return a | 0
              }
              return 0
          }

          function Qc(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Lc(b);
              Ke(c[a >> 2] | 0);
              c[a >> 2] = 0;
              return
          }

          function Rc(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              Kc(c[a >> 2] | 0) | 0;
              a = 0;
              return a | 0
          }

          function Sc(a, b, d, e, f, g, h) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0, k = 0, l = 0, m = 0;
              m = i;
              i = i + 64 | 0;
              l = m + 48 | 0;
              k = m + 22 | 0;
              j = m;
              if ((b | 0) == 7) {
                  d = c[g + 116 >> 2] | 0;
                  Kb(e, 10, j, k, c[g + 112 >> 2] | 0, h) | 0;
                  Hc(10, j, k, h);
                  Mc(c[a >> 2] | 0, j, k, f + 22 | 0, l, h) | 0;
                  Kb(e, 10, j, k, d, h) | 0;
                  Hc(10, j, k, h);
                  Mc(c[a >> 2] | 0, j, k, f + 66 | 0, l, h) | 0;
                  i = m;
                  return
              } else {
                  Kb(d, 10, j, k, c[g + 108 >> 2] | 0, h) | 0;
                  Hc(10, j, k, h);
                  Mc(c[a >> 2] | 0, j, k, f + 66 | 0, l, h) | 0;
                  i = m;
                  return
              }
          }

          function Tc(a, c, d, e, f, g, h, i, j, k) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              j = j | 0;
              k = k | 0;
              if ((d | 0) == 6) {
                  b[f >> 1] = bd(a, c, e, 20, 143, 80, g, h, i, j, k) | 0;
                  return
              }
              b[h >> 1] = 0;
              b[h + 2 >> 1] = 0;
              if (d >>> 0 < 2) {
                  b[f >> 1] = Yc(c, d, e, 20, 143, 160, i, j, k) | 0;
                  return
              }
              if (d >>> 0 < 6) {
                  b[f >> 1] = Yc(c, d, e, 20, 143, 80, i, j, k) | 0;
                  return
              } else {
                  b[f >> 1] = Yc(c, d, e, 18, 143, 80, i, j, k) | 0;
                  return
              }
          }

          function Uc(a) {
              a = a | 0;
              var d = 0;
              if ((a | 0) != 0 ? (c[a >> 2] = 0, d = Je(2) | 0, (d | 0) != 0) : 0) {
                  b[d >> 1] = 0;
                  c[a >> 2] = d;
                  d = 0;
              } else d = -1;
              return d | 0
          }

          function Vc(a) {
              a = a | 0;
              if (!a) a = -1; else {
                  b[a >> 1] = 0;
                  a = 0;
              }
              return a | 0
          }

          function Wc(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function Xc(a, c, d, f, g, h, j, k, l, m, n, o) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              var p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0,
                  E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0,
                  T = 0, U = 0;
              U = i;
              i = i + 240 | 0;
              u = U + 160 | 0;
              v = U + 80 | 0;
              O = U;
              N = b[3558 + (c * 18 | 0) >> 1] | 0;
              T = b[3558 + (c * 18 | 0) + 2 >> 1] | 0;
              p = b[3558 + (c * 18 | 0) + 4 >> 1] | 0;
              P = b[3558 + (c * 18 | 0) + 6 >> 1] | 0;
              s = b[3558 + (c * 18 | 0) + 12 >> 1] | 0;
              r = b[3558 + (c * 18 | 0) + 14 >> 1] | 0;
              q = b[3558 + (c * 18 | 0) + 16 >> 1] | 0;
              a:do switch (k << 16 >> 16) {
                  case 0:
                  case 80:
                      if (c >>> 0 < 2 & k << 16 >> 16 == 80) {
                          Q = (e[a >> 1] | 0) - (s & 65535) | 0;
                          Q = (Q << 16 >> 16 | 0) < (q << 16 >> 16 | 0) ? q : Q & 65535;
                          M = r << 16 >> 16;
                          R = (Q & 65535) + M & 65535;
                          S = R << 16 >> 16 > 143;
                          Q = S ? 143 - M & 65535 : Q;
                          R = S ? 143 : R;
                          S = 1;
                          break a
                      } else {
                          Q = (e[d + ((k << 16 >> 16 != 0 & 1) << 1) >> 1] | 0) - (e[3558 + (c * 18 | 0) + 8 >> 1] | 0) | 0;
                          Q = (Q << 16 >> 16 | 0) < (q << 16 >> 16 | 0) ? q : Q & 65535;
                          M = b[3558 + (c * 18 | 0) + 10 >> 1] | 0;
                          R = (Q & 65535) + M & 65535;
                          S = R << 16 >> 16 > 143;
                          Q = S ? 143 - M & 65535 : Q;
                          R = S ? 143 : R;
                          S = 0;
                          break a
                      }
                  default: {
                      Q = (e[a >> 1] | 0) - (s & 65535) | 0;
                      Q = (Q << 16 >> 16 | 0) < (q << 16 >> 16 | 0) ? q : Q & 65535;
                      M = r << 16 >> 16;
                      R = (Q & 65535) + M & 65535;
                      S = R << 16 >> 16 > 143;
                      Q = S ? 143 - M & 65535 : Q;
                      R = S ? 143 : R;
                      S = 1;
                  }
              } while (0);
              L = Q & 65535;
              k = L + 65532 | 0;
              t = k & 65535;
              K = (R & 65535) + 4 & 65535;
              M = k << 16 >> 16;
              k = 0 - (k & 65535) | 0;
              s = k & 65535;
              ec(f + (k << 16 >> 16 << 1) | 0, h, u, j);
              k = j << 16 >> 16;
              B = k >>> 1 & 65535;
              w = B << 16 >> 16 == 0;
              if (w) j = 1; else {
                  j = B;
                  q = u;
                  d = v;
                  r = 0;
                  while (1) {
                      J = b[q >> 1] | 0;
                      b[d >> 1] = J >>> 2;
                      J = (Z(J, J) | 0) + r | 0;
                      r = b[q + 2 >> 1] | 0;
                      b[d + 2 >> 1] = r >>> 2;
                      r = J + (Z(r, r) | 0) | 0;
                      j = j + -1 << 16 >> 16;
                      if (!(j << 16 >> 16)) break; else {
                          q = q + 4 | 0;
                          d = d + 4 | 0;
                      }
                  }
                  j = (r | 0) < 33554433;
              }
              J = j ? 0 : 2;
              A = j ? u : v;
              x = j ? u : v;
              b:do if (t << 16 >> 16 <= K << 16 >> 16) {
                  y = k + -1 | 0;
                  G = A + (y << 1) | 0;
                  H = h + (y << 1) | 0;
                  I = A + (k + -2 << 1) | 0;
                  D = y >>> 1;
                  E = D & 65535;
                  z = E << 16 >> 16 == 0;
                  F = j ? 12 : 14;
                  D = (D << 1) + 131070 & 131070;
                  d = k + -3 - D | 0;
                  C = A + (d << 1) | 0;
                  D = A + (k + -4 - D << 1) | 0;
                  h = h + (d << 1) | 0;
                  if (!w) {
                      w = M;
                      while (1) {
                          v = B;
                          u = x;
                          q = g;
                          r = 0;
                          j = 0;
                          while (1) {
                              v = v + -1 << 16 >> 16;
                              k = b[u >> 1] | 0;
                              r = (Z(k, b[q >> 1] | 0) | 0) + r | 0;
                              k = (Z(k, k) | 0) + j | 0;
                              j = b[u + 2 >> 1] | 0;
                              r = r + (Z(j, b[q + 2 >> 1] | 0) | 0) | 0;
                              j = k + (Z(j, j) | 0) | 0;
                              if (!(v << 16 >> 16)) break; else {
                                  u = u + 4 | 0;
                                  q = q + 4 | 0;
                              }
                          }
                          u = ce(j << 1, o) | 0;
                          j = u >> 16;
                          q = r << 1 >> 16;
                          v = Z(j, q) | 0;
                          v = (v | 0) == 1073741824 ? 2147483647 : v << 1;
                          q = (Z((u >>> 1) - (j << 15) << 16 >> 16, q) | 0) >> 15;
                          u = (q << 1) + v | 0;
                          u = (q ^ v | 0) > 0 & (u ^ v | 0) < 0 ? (v >>> 31) + 2147483647 | 0 : u;
                          j = (Z(j, r & 32767) | 0) >> 15;
                          v = u + (j << 1) | 0;
                          b[O + (w - M << 1) >> 1] = (u ^ j | 0) > 0 & (v ^ u | 0) < 0 ? (u >>> 31) + 65535 | 0 : v;
                          if (t << 16 >> 16 != K << 16 >> 16) {
                              s = s + -1 << 16 >> 16;
                              v = b[f + (s << 16 >> 16 << 1) >> 1] | 0;
                              if (z) {
                                  u = y;
                                  j = I;
                                  r = H;
                                  q = G;
                              } else {
                                  u = E;
                                  j = I;
                                  r = H;
                                  q = G;
                                  while (1) {
                                      w = (Z(b[r >> 1] | 0, v) | 0) >> F;
                                      b[q >> 1] = w + (e[j >> 1] | 0);
                                      w = (Z(b[r + -2 >> 1] | 0, v) | 0) >> F;
                                      b[q + -2 >> 1] = w + (e[j + -2 >> 1] | 0);
                                      u = u + -1 << 16 >> 16;
                                      if (!(u << 16 >> 16)) {
                                          u = d;
                                          j = D;
                                          r = h;
                                          q = C;
                                          break
                                      } else {
                                          j = j + -4 | 0;
                                          r = r + -4 | 0;
                                          q = q + -4 | 0;
                                      }
                                  }
                              }
                              w = (Z(b[r >> 1] | 0, v) | 0) >> F;
                              b[q >> 1] = w + (e[j >> 1] | 0);
                              b[A + (u + -1 << 1) >> 1] = v >> J;
                          }
                          t = t + 1 << 16 >> 16;
                          if (t << 16 >> 16 > K << 16 >> 16) break b; else w = t << 16 >> 16;
                      }
                  }
                  if (z) {
                      j = A + (k + -2 << 1) | 0;
                      r = M;
                      while (1) {
                          ce(0, o) | 0;
                          b[O + (r - M << 1) >> 1] = 0;
                          if (t << 16 >> 16 != K << 16 >> 16) {
                              s = s + -1 << 16 >> 16;
                              g = b[f + (s << 16 >> 16 << 1) >> 1] | 0;
                              E = (Z(b[H >> 1] | 0, g) | 0) >> F;
                              b[G >> 1] = E + (e[I >> 1] | 0);
                              b[j >> 1] = g >> J;
                          }
                          t = t + 1 << 16 >> 16;
                          if (t << 16 >> 16 > K << 16 >> 16) break b; else r = t << 16 >> 16;
                      }
                  }
                  u = A + (d + -1 << 1) | 0;
                  j = M;
                  while (1) {
                      ce(0, o) | 0;
                      b[O + (j - M << 1) >> 1] = 0;
                      if (t << 16 >> 16 != K << 16 >> 16) {
                          s = s + -1 << 16 >> 16;
                          j = b[f + (s << 16 >> 16 << 1) >> 1] | 0;
                          r = E;
                          q = I;
                          d = H;
                          k = G;
                          while (1) {
                              g = (Z(b[d >> 1] | 0, j) | 0) >> F;
                              b[k >> 1] = g + (e[q >> 1] | 0);
                              g = (Z(b[d + -2 >> 1] | 0, j) | 0) >> F;
                              b[k + -2 >> 1] = g + (e[q + -2 >> 1] | 0);
                              r = r + -1 << 16 >> 16;
                              if (!(r << 16 >> 16)) break; else {
                                  q = q + -4 | 0;
                                  d = d + -4 | 0;
                                  k = k + -4 | 0;
                              }
                          }
                          g = (Z(b[h >> 1] | 0, j) | 0) >> F;
                          b[C >> 1] = g + (e[D >> 1] | 0);
                          b[u >> 1] = j >> J;
                      }
                      t = t + 1 << 16 >> 16;
                      if (t << 16 >> 16 > K << 16 >> 16) break; else j = t << 16 >> 16;
                  }
              } while (0);
              t = Q << 16 >> 16;
              d = L + 1 & 65535;
              if (d << 16 >> 16 > R << 16 >> 16) h = Q; else {
                  s = Q;
                  k = b[O + (t - M << 1) >> 1] | 0;
                  while (1) {
                      r = b[O + ((d << 16 >> 16) - M << 1) >> 1] | 0;
                      q = r << 16 >> 16 < k << 16 >> 16;
                      s = q ? s : d;
                      d = d + 1 << 16 >> 16;
                      if (d << 16 >> 16 > R << 16 >> 16) {
                          h = s;
                          break
                      } else k = q ? k : r;
                  }
              }
              c:do if (!(S << 16 >> 16 == 0 ? h << 16 >> 16 > N << 16 >> 16 : 0)) {
                  if (!(c >>> 0 < 4 & S << 16 >> 16 != 0)) {
                      s = O + ((h << 16 >> 16) - M << 1) | 0;
                      r = Fc(s, p, T, o) | 0;
                      d = (p & 65535) + 1 & 65535;
                      if (d << 16 >> 16 <= P << 16 >> 16) while (1) {
                          q = Fc(s, d, T, o) | 0;
                          k = q << 16 >> 16 > r << 16 >> 16;
                          p = k ? d : p;
                          d = d + 1 << 16 >> 16;
                          if (d << 16 >> 16 > P << 16 >> 16) break; else r = k ? q : r;
                      }
                      if ((c + -7 | 0) >>> 0 < 2) {
                          P = p << 16 >> 16 == -3;
                          d = (P << 31 >> 31) + h << 16 >> 16;
                          p = P ? 3 : p;
                          break
                      }
                      switch (p << 16 >> 16) {
                          case -2: {
                              d = h + -1 << 16 >> 16;
                              p = 1;
                              break c
                          }
                          case 2: {
                              d = h + 1 << 16 >> 16;
                              p = -1;
                              break c
                          }
                          default: {
                              d = h;
                              break c
                          }
                      }
                  }
                  N = b[a >> 1] | 0;
                  N = ((N << 16 >> 16) - t | 0) > 5 ? t + 5 & 65535 : N;
                  k = R << 16 >> 16;
                  N = (k - (N << 16 >> 16) | 0) > 4 ? k + 65532 & 65535 : N;
                  k = h << 16 >> 16;
                  d = N << 16 >> 16;
                  if ((k | 0) == (d + -1 | 0) ? 1 : h << 16 >> 16 == N << 16 >> 16) {
                      s = O + (k - M << 1) | 0;
                      k = Fc(s, p, T, o) | 0;
                      d = (p & 65535) + 1 & 65535;
                      if (d << 16 >> 16 <= P << 16 >> 16) while (1) {
                          r = Fc(s, d, T, o) | 0;
                          q = r << 16 >> 16 > k << 16 >> 16;
                          p = q ? d : p;
                          d = d + 1 << 16 >> 16;
                          if (d << 16 >> 16 > P << 16 >> 16) break; else k = q ? r : k;
                      }
                      if ((c + -7 | 0) >>> 0 < 2) {
                          P = p << 16 >> 16 == -3;
                          d = (P << 31 >> 31) + h << 16 >> 16;
                          p = P ? 3 : p;
                          break
                      }
                      switch (p << 16 >> 16) {
                          case -2: {
                              d = h + -1 << 16 >> 16;
                              p = 1;
                              break c
                          }
                          case 2: {
                              d = h + 1 << 16 >> 16;
                              p = -1;
                              break c
                          }
                          default: {
                              d = h;
                              break c
                          }
                      }
                  }
                  if ((k | 0) == (d + -2 | 0)) {
                      d = O + (k - M << 1) | 0;
                      k = Fc(d, 0, T, o) | 0;
                      if ((c | 0) != 8) {
                          p = 0;
                          s = 1;
                          while (1) {
                              r = Fc(d, s, T, o) | 0;
                              q = r << 16 >> 16 > k << 16 >> 16;
                              p = q ? s : p;
                              s = s + 1 << 16 >> 16;
                              if (s << 16 >> 16 > P << 16 >> 16) break; else k = q ? r : k;
                          }
                          if ((c + -7 | 0) >>> 0 >= 2) switch (p << 16 >> 16) {
                              case -2: {
                                  d = h + -1 << 16 >> 16;
                                  p = 1;
                                  break c
                              }
                              case 2: {
                                  d = h + 1 << 16 >> 16;
                                  p = -1;
                                  break c
                              }
                              default: {
                                  d = h;
                                  break c
                              }
                          }
                      } else p = 0;
                      P = p << 16 >> 16 == -3;
                      d = (P << 31 >> 31) + h << 16 >> 16;
                      p = P ? 3 : p;
                      break
                  }
                  if ((k | 0) == (d + 1 | 0)) {
                      s = O + (k - M << 1) | 0;
                      d = Fc(s, p, T, o) | 0;
                      k = (p & 65535) + 1 & 65535;
                      if (k << 16 >> 16 <= 0) while (1) {
                          q = Fc(s, k, T, o) | 0;
                          r = q << 16 >> 16 > d << 16 >> 16;
                          p = r ? k : p;
                          k = k + 1 << 16 >> 16;
                          if (k << 16 >> 16 > 0) break; else d = r ? q : d;
                      }
                      if ((c + -7 | 0) >>> 0 < 2) {
                          P = p << 16 >> 16 == -3;
                          d = (P << 31 >> 31) + h << 16 >> 16;
                          p = P ? 3 : p;
                          break
                      }
                      switch (p << 16 >> 16) {
                          case -2: {
                              d = h + -1 << 16 >> 16;
                              p = 1;
                              break c
                          }
                          case 2: {
                              d = h + 1 << 16 >> 16;
                              p = -1;
                              break c
                          }
                          default: {
                              d = h;
                              break c
                          }
                      }
                  } else {
                      d = h;
                      p = 0;
                  }
              } else {
                  d = h;
                  p = 0;
              } while (0);
              if ((c + -7 | 0) >>> 0 > 1) {
                  P = a;
                  a = pc(d, p, b[a >> 1] | 0, Q, R, S, c >>> 0 < 4 & 1, o) | 0;
                  b[n >> 1] = a;
                  b[P >> 1] = d;
                  b[m >> 1] = T;
                  b[l >> 1] = p;
                  i = U;
                  return d | 0
              } else {
                  o = qc(d, p, Q, S, o) | 0;
                  b[n >> 1] = o;
                  b[a >> 1] = d;
                  b[m >> 1] = T;
                  b[l >> 1] = p;
                  i = U;
                  return d | 0
              }
              return 0
          }

          function Yc(a, d, e, f, g, h, j, k, l) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              var m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0,
                  B = 0, C = 0, D = 0;
              D = i;
              i = i + 1200 | 0;
              B = D + 1188 | 0;
              A = D + 580 | 0;
              C = D + 578 | 0;
              z = D + 576 | 0;
              v = D;
              x = D + 582 | 0;
              y = (k | 0) != 0;
              do if (y) if (d >>> 0 < 2) {
                  Ld(a, 1, l);
                  break
              } else {
                  Ld(a, 0, l);
                  break
              } while (0);
              w = g << 16 >> 16;
              o = 0 - w | 0;
              n = e + (o << 1) | 0;
              o = o & 65535;
              s = h << 16 >> 16;
              do if (o << 16 >> 16 < h << 16 >> 16) {
                  r = o;
                  q = n;
                  o = 0;
                  while (1) {
                      t = b[q >> 1] | 0;
                      o = (Z(t << 1, t) | 0) + o | 0;
                      if ((o | 0) < 0) break;
                      r = r + 1 << 16 >> 16;
                      if (r << 16 >> 16 >= h << 16 >> 16) {
                          u = 14;
                          break
                      } else q = q + 2 | 0;
                  }
                  if ((u | 0) == 14) {
                      if ((o | 0) < 1048576) {
                          u = 15;
                          break
                      }
                      Oe(x | 0, n | 0, s + w << 1 | 0) | 0;
                      t = 0;
                      break
                  }
                  m = s + w | 0;
                  p = m >>> 1;
                  r = p & 65535;
                  if (!(r << 16 >> 16)) o = x; else {
                      t = ((p << 1) + 131070 & 131070) + 2 | 0;
                      s = t - w | 0;
                      q = x;
                      while (1) {
                          b[q >> 1] = (b[n >> 1] | 0) >>> 3;
                          b[q + 2 >> 1] = (b[n + 2 >> 1] | 0) >>> 3;
                          r = r + -1 << 16 >> 16;
                          if (!(r << 16 >> 16)) break; else {
                              n = n + 4 | 0;
                              q = q + 4 | 0;
                          }
                      }
                      n = e + (s << 1) | 0;
                      o = x + (t << 1) | 0;
                  }
                  if (!(m & 1)) t = 3; else {
                      b[o >> 1] = (b[n >> 1] | 0) >>> 3;
                      t = 3;
                  }
              } else u = 15; while (0);
              if ((u | 0) == 15) {
                  t = s + w | 0;
                  o = t >>> 1;
                  p = o & 65535;
                  if (!(p << 16 >> 16)) o = x; else {
                      s = ((o << 1) + 131070 & 131070) + 2 | 0;
                      q = s - w | 0;
                      r = x;
                      while (1) {
                          b[r >> 1] = b[n >> 1] << 3;
                          b[r + 2 >> 1] = b[n + 2 >> 1] << 3;
                          p = p + -1 << 16 >> 16;
                          if (!(p << 16 >> 16)) break; else {
                              n = n + 4 | 0;
                              r = r + 4 | 0;
                          }
                      }
                      n = e + (q << 1) | 0;
                      o = x + (s << 1) | 0;
                  }
                  if (!(t & 1)) t = -3; else {
                      b[o >> 1] = b[n >> 1] << 3;
                      t = -3;
                  }
              }
              s = v + (w << 2) | 0;
              q = x + (w << 1) | 0;
              Tb(q, h, g, f, s);
              m = (d | 0) == 7 & 1;
              o = f << 16 >> 16;
              n = o << 2;
              if ((n | 0) != (o << 18 >> 16 | 0)) {
                  c[l >> 2] = 1;
                  n = f << 16 >> 16 > 0 ? 32767 : -32768;
              }
              r = Zc(a, s, q, t, m, h, g, n & 65535, B, k, l) | 0;
              o = o << 1;
              p = Zc(a, s, q, t, m, h, n + 65535 & 65535, o & 65535, A, k, l) | 0;
              o = Zc(a, s, q, t, m, h, o + 65535 & 65535, f, C, k, l) | 0;
              if (j << 16 >> 16 == 1 & y) {
                  Ec(s, q, h, g, f, z, l) | 0;
                  Jd(a, b[z >> 1] | 0);
              }
              n = b[B >> 1] | 0;
              m = b[A >> 1] | 0;
              if (((n << 16 >> 16) * 55706 >> 16 | 0) >= (m << 16 >> 16 | 0)) {
                  A = n;
                  B = r;
                  A = A << 16 >> 16;
                  A = A * 55706 | 0;
                  A = A >> 16;
                  C = b[C >> 1] | 0;
                  C = C << 16 >> 16;
                  C = (A | 0) < (C | 0);
                  C = C ? o : B;
                  i = D;
                  return C | 0
              }
              b[B >> 1] = m;
              A = m;
              B = p;
              A = A << 16 >> 16;
              A = A * 55706 | 0;
              A = A >> 16;
              C = b[C >> 1] | 0;
              C = C << 16 >> 16;
              C = (A | 0) < (C | 0);
              C = C ? o : B;
              i = D;
              return C | 0
          }

          function Zc(a, d, e, f, g, h, i, j, k, l, m) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              var n = 0, o = 0, p = 0, q = 0, r = 0;
              if (i << 16 >> 16 < j << 16 >> 16) {
                  j = -2147483648;
                  p = i;
              } else {
                  p = i;
                  n = -2147483648;
                  o = d + (0 - (i << 16 >> 16) << 2) | 0;
                  d = i;
                  while (1) {
                      i = c[o >> 2] | 0;
                      r = (i | 0) < (n | 0);
                      d = r ? d : p;
                      n = r ? n : i;
                      p = p + -1 << 16 >> 16;
                      if (p << 16 >> 16 < j << 16 >> 16) {
                          j = n;
                          p = d;
                          break
                      } else o = o + 4 | 0;
                  }
              }
              d = h << 16 >> 16 >>> 2 & 65535;
              if (!(d << 16 >> 16)) d = 0; else {
                  n = d;
                  i = e + (0 - (p << 16 >> 16) << 1) | 0;
                  d = 0;
                  while (1) {
                      r = b[i >> 1] | 0;
                      r = (Z(r, r) | 0) + d | 0;
                      d = b[i + 2 >> 1] | 0;
                      d = r + (Z(d, d) | 0) | 0;
                      r = b[i + 4 >> 1] | 0;
                      r = d + (Z(r, r) | 0) | 0;
                      d = b[i + 6 >> 1] | 0;
                      d = r + (Z(d, d) | 0) | 0;
                      n = n + -1 << 16 >> 16;
                      if (!(n << 16 >> 16)) break; else i = i + 8 | 0;
                  }
                  d = d << 1;
              }
              if (l) Kd(a, j, d, m);
              d = ce(d, m) | 0;
              i = g << 16 >> 16 != 0;
              if (i) d = (d | 0) > 1073741823 ? 2147483647 : d << 1;
              g = j >> 16;
              a = d >> 16;
              m = Z(a, g) | 0;
              m = (m | 0) == 1073741824 ? 2147483647 : m << 1;
              d = (Z((d >>> 1) - (a << 15) << 16 >> 16, g) | 0) >> 15;
              r = (d << 1) + m | 0;
              r = (d ^ m | 0) > 0 & (r ^ m | 0) < 0 ? (m >>> 31) + 2147483647 | 0 : r;
              g = (Z(a, (j >>> 1) - (g << 15) << 16 >> 16) | 0) >> 15;
              d = r + (g << 1) | 0;
              d = (r ^ g | 0) > 0 & (d ^ r | 0) < 0 ? (r >>> 31) + 2147483647 | 0 : d;
              if (!i) {
                  b[k >> 1] = d;
                  return p | 0
              }
              i = f << 16 >> 16;
              if (f << 16 >> 16 > 0) if (f << 16 >> 16 < 31) {
                  i = d >> i;
                  q = 16;
              } else i = 0; else {
                  q = 0 - i << 16 >> 16;
                  i = d << q;
                  i = (i >> q | 0) == (d | 0) ? i : d >> 31 ^ 2147483647;
                  q = 16;
              }
              if ((q | 0) == 16) {
                  if ((i | 0) > 65535) {
                      b[k >> 1] = 32767;
                      return p | 0
                  }
                  if ((i | 0) < -65536) {
                      b[k >> 1] = -32768;
                      return p | 0
                  }
              }
              b[k >> 1] = i >>> 1;
              return p | 0
          }

          function _c(a) {
              a = a | 0;
              var d = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(6) | 0;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              b[d >> 1] = 40;
              b[d + 2 >> 1] = 0;
              b[d + 4 >> 1] = 0;
              c[a >> 2] = d;
              a = 0;
              return a | 0
          }

          function $c(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              b[a >> 1] = 40;
              b[a + 2 >> 1] = 0;
              b[a + 4 >> 1] = 0;
              a = 0;
              return a | 0
          }

          function ad(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function bd(a, d, e, f, g, h, j, k, l, m, n) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              var o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0,
                  D = 0, E = 0, F = 0;
              F = i;
              i = i + 1200 | 0;
              w = F + 1186 | 0;
              x = F + 1184 | 0;
              E = F + 1182 | 0;
              v = F;
              z = F + 576 | 0;
              y = g << 16 >> 16;
              D = z + (y << 1) | 0;
              o = (0 - y & 65535) << 16 >> 16 < h << 16 >> 16;
              if (o) {
                  s = 0 - g << 16 >> 16 << 16 >> 16;
                  p = 0;
                  do {
                      r = b[e + (s << 1) >> 1] | 0;
                      r = Z(r, r) | 0;
                      if ((r | 0) != 1073741824) {
                          q = (r << 1) + p | 0;
                          if ((r ^ p | 0) > 0 & (q ^ p | 0) < 0) {
                              c[n >> 2] = 1;
                              p = (p >>> 31) + 2147483647 | 0;
                          } else p = q;
                      } else {
                          c[n >> 2] = 1;
                          p = 2147483647;
                      }
                      s = s + 1 | 0;
                  } while ((s & 65535) << 16 >> 16 != h << 16 >> 16)
              } else p = 0;
              if ((2147483646 - p & p | 0) >= 0) if ((p | 0) == 2147483647) {
                  if (o) {
                      p = 0 - g << 16 >> 16 << 16 >> 16;
                      do {
                          b[z + (p + y << 1) >> 1] = De(b[e + (p << 1) >> 1] | 0, 3, n) | 0;
                          p = p + 1 | 0;
                      } while ((p & 65535) << 16 >> 16 != h << 16 >> 16)
                  }
              } else t = 14; else {
                  c[n >> 2] = 1;
                  t = 14;
              }
              do if ((t | 0) == 14) {
                  if ((1048575 - p & p | 0) < 0) {
                      c[n >> 2] = 1;
                      p = (p >>> 31) + 2147483647 | 0;
                  } else p = p + -1048576 | 0;
                  if ((p | 0) >= 0) {
                      if (!o) break;
                      C = 0 - g << 16 >> 16 << 16 >> 16;
                      Oe(z + (y + C << 1) | 0, e + (C << 1) | 0, (((h + g << 16 >> 16) + -1 & 65535) << 1) + 2 | 0) | 0;
                      break
                  }
                  if (o) {
                      p = 0 - g << 16 >> 16 << 16 >> 16;
                      do {
                          C = b[e + (p << 1) >> 1] | 0;
                          b[z + (p + y << 1) >> 1] = (C << 19 >> 19 | 0) == (C | 0) ? C << 3 : C >>> 15 ^ 32767;
                          p = p + 1 | 0;
                      } while ((p & 65535) << 16 >> 16 != h << 16 >> 16)
                  }
              } while (0);
              B = v + (y << 2) | 0;
              Tb(D, h, g, f, B);
              s = b[a >> 1] | 0;
              C = a + 4 | 0;
              A = k + (l << 16 >> 16 << 1) | 0;
              a:do if (g << 16 >> 16 < f << 16 >> 16) u = g; else {
                  if ((b[C >> 1] | 0) <= 0) {
                      e = g;
                      k = -2147483648;
                      r = g;
                      t = 3402;
                      while (1) {
                          Nc(c[v + (y - (e << 16 >> 16) << 2) >> 2] | 0, w, x, n);
                          q = b[x >> 1] | 0;
                          p = b[t >> 1] | 0;
                          s = Z(p, b[w >> 1] | 0) | 0;
                          if ((s | 0) == 1073741824) {
                              c[n >> 2] = 1;
                              o = 2147483647;
                          } else o = s << 1;
                          u = (Z(p, q << 16 >> 16) | 0) >> 15;
                          s = o + (u << 1) | 0;
                          if ((o ^ u | 0) > 0 & (s ^ o | 0) < 0) {
                              c[n >> 2] = 1;
                              s = (o >>> 31) + 2147483647 | 0;
                          }
                          q = (s | 0) < (k | 0);
                          r = q ? r : e;
                          e = e + -1 << 16 >> 16;
                          if (e << 16 >> 16 < f << 16 >> 16) {
                              u = r;
                              break a
                          } else {
                              k = q ? k : s;
                              t = t + -2 | 0;
                          }
                      }
                  }
                  k = g;
                  o = -2147483648;
                  r = g;
                  u = 2902 + (y + 123 - (s << 16 >> 16) << 1) | 0;
                  e = 3402;
                  while (1) {
                      Nc(c[v + (y - (k << 16 >> 16) << 2) >> 2] | 0, w, x, n);
                      t = b[x >> 1] | 0;
                      q = b[e >> 1] | 0;
                      s = Z(q, b[w >> 1] | 0) | 0;
                      if ((s | 0) == 1073741824) {
                          c[n >> 2] = 1;
                          p = 2147483647;
                      } else p = s << 1;
                      t = (Z(q, t << 16 >> 16) | 0) >> 15;
                      s = p + (t << 1) | 0;
                      if ((p ^ t | 0) > 0 & (s ^ p | 0) < 0) {
                          c[n >> 2] = 1;
                          s = (p >>> 31) + 2147483647 | 0;
                      }
                      Nc(s, w, x, n);
                      t = b[x >> 1] | 0;
                      q = b[u >> 1] | 0;
                      s = Z(q, b[w >> 1] | 0) | 0;
                      if ((s | 0) == 1073741824) {
                          c[n >> 2] = 1;
                          p = 2147483647;
                      } else p = s << 1;
                      t = (Z(q, t << 16 >> 16) | 0) >> 15;
                      s = p + (t << 1) | 0;
                      if ((p ^ t | 0) > 0 & (s ^ p | 0) < 0) {
                          c[n >> 2] = 1;
                          s = (p >>> 31) + 2147483647 | 0;
                      }
                      q = (s | 0) < (o | 0);
                      r = q ? r : k;
                      k = k + -1 << 16 >> 16;
                      if (k << 16 >> 16 < f << 16 >> 16) {
                          u = r;
                          break
                      } else {
                          o = q ? o : s;
                          u = u + -2 | 0;
                          e = e + -2 | 0;
                      }
                  }
              } while (0);
              if (h << 16 >> 16 > 0) {
                  k = 0;
                  e = D;
                  t = z + (y - (u << 16 >> 16) << 1) | 0;
                  r = 0;
                  p = 0;
                  while (1) {
                      s = b[t >> 1] | 0;
                      q = Z(s, b[e >> 1] | 0) | 0;
                      if ((q | 0) != 1073741824) {
                          o = (q << 1) + r | 0;
                          if ((q ^ r | 0) > 0 & (o ^ r | 0) < 0) {
                              c[n >> 2] = 1;
                              r = (r >>> 31) + 2147483647 | 0;
                          } else r = o;
                      } else {
                          c[n >> 2] = 1;
                          r = 2147483647;
                      }
                      o = Z(s, s) | 0;
                      if ((o | 0) != 1073741824) {
                          q = (o << 1) + p | 0;
                          if ((o ^ p | 0) > 0 & (q ^ p | 0) < 0) {
                              c[n >> 2] = 1;
                              p = (p >>> 31) + 2147483647 | 0;
                          } else p = q;
                      } else {
                          c[n >> 2] = 1;
                          p = 2147483647;
                      }
                      k = k + 1 << 16 >> 16;
                      if (k << 16 >> 16 >= h << 16 >> 16) break; else {
                          e = e + 2 | 0;
                          t = t + 2 | 0;
                      }
                  }
              } else {
                  r = 0;
                  p = 0;
              }
              q = (m | 0) == 0;
              if (!q) {
                  Ld(d, 0, n);
                  Kd(d, r, p, n);
              }
              o = (Ce(p, n) | 0) << 16 >> 16;
              if ((o * 13107 | 0) == 1073741824) {
                  c[n >> 2] = 1;
                  p = 2147483647;
              } else p = o * 26214 | 0;
              o = r - p | 0;
              if (((o ^ r) & (p ^ r) | 0) < 0) {
                  c[n >> 2] = 1;
                  o = (r >>> 31) + 2147483647 | 0;
              }
              m = Ce(o, n) | 0;
              b[A >> 1] = m;
              if (m << 16 >> 16 > 0) {
                  o = j + 6 | 0;
                  b[j + 8 >> 1] = b[o >> 1] | 0;
                  m = j + 4 | 0;
                  b[o >> 1] = b[m >> 1] | 0;
                  o = j + 2 | 0;
                  b[m >> 1] = b[o >> 1] | 0;
                  b[o >> 1] = b[j >> 1] | 0;
                  b[j >> 1] = u;
                  b[a >> 1] = Zd(j, 5) | 0;
                  b[a + 2 >> 1] = 32767;
                  o = 32767;
              } else {
                  b[a >> 1] = u;
                  a = a + 2 | 0;
                  o = ((b[a >> 1] | 0) * 29491 | 0) >>> 15 & 65535;
                  b[a >> 1] = o;
              }
              b[C >> 1] = ((Ge(o, 9830, n) | 0) & 65535) >>> 15 ^ 1;
              if (q) {
                  i = F;
                  return u | 0
              }
              if ((Ge(l, 1, n) | 0) << 16 >> 16) {
                  i = F;
                  return u | 0
              }
              Ec(B, D, h, g, f, E, n) | 0;
              Jd(d, b[E >> 1] | 0);
              i = F;
              return u | 0
          }

          function cd(a, b, c, d, e, f, g, h, j, k) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0;
              k = i;
              i = i + 48 | 0;
              m = k + 22 | 0;
              l = k;
              b = a >>> 0 < 6 ? b : c;
              c = f << 16 >> 16 > 0 ? 22 : 0;
              a = e + (c << 1) | 0;
              Ie(a, b, m);
              Ie(a, d, l);
              a = f << 16 >> 16;
              f = j + (a << 1) | 0;
              Be(m, g + (a << 1) | 0, f, 40);
              He(l, f, f, 40, h, 1);
              c = e + (((c << 16) + 720896 | 0) >>> 16 << 1) | 0;
              Ie(c, b, m);
              Ie(c, d, l);
              a = (a << 16) + 2621440 >> 16;
              j = j + (a << 1) | 0;
              Be(m, g + (a << 1) | 0, j, 40);
              He(l, j, j, 40, h, 1);
              i = k;
              return
          }

          function dd(a) {
              a = a | 0;
              var d = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(12) | 0;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              ;b[d >> 1] = 0;
              b[d + 2 >> 1] = 0;
              b[d + 4 >> 1] = 0;
              b[d + 6 >> 1] = 0;
              b[d + 8 >> 1] = 0;
              b[d + 10 >> 1] = 0;
              c[a >> 2] = d;
              a = 0;
              return a | 0
          }

          function ed(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              ;b[a >> 1] = 0;
              b[a + 2 >> 1] = 0;
              b[a + 4 >> 1] = 0;
              b[a + 6 >> 1] = 0;
              b[a + 8 >> 1] = 0;
              b[a + 10 >> 1] = 0;
              a = 0;
              return a | 0
          }

          function fd(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function gd(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0;
              m = a + 10 | 0;
              f = b[m >> 1] | 0;
              n = a + 8 | 0;
              e = b[n >> 1] | 0;
              if (!(d << 16 >> 16)) {
                  a = e;
                  l = f;
                  b[m >> 1] = l;
                  b[n >> 1] = a;
                  return
              }
              i = a + 4 | 0;
              j = a + 6 | 0;
              k = a + 2 | 0;
              h = b[j >> 1] | 0;
              l = b[i >> 1] | 0;
              g = d;
              d = f;
              while (1) {
                  o = (Z(b[a >> 1] | 0, -3733) | 0) + (((l << 16 >> 16) * 7807 | 0) + ((h << 16 >> 16) * 7807 >> 15)) | 0;
                  b[a >> 1] = l;
                  o = o + ((Z(b[k >> 1] | 0, -3733) | 0) >> 15) | 0;
                  b[k >> 1] = h;
                  o = ((d << 16 >> 16) * 1899 | 0) + o + (Z(e << 16 >> 16, -3798) | 0) | 0;
                  d = b[c >> 1] | 0;
                  o = o + ((d << 16 >> 16) * 1899 | 0) | 0;
                  b[c >> 1] = (o + 2048 | 0) >>> 12;
                  f = o >>> 12;
                  l = f & 65535;
                  b[i >> 1] = l;
                  h = (o << 3) - (f << 15) & 65535;
                  b[j >> 1] = h;
                  g = g + -1 << 16 >> 16;
                  if (!(g << 16 >> 16)) break; else {
                      o = e;
                      c = c + 2 | 0;
                      e = d;
                      d = o;
                  }
              }
              b[m >> 1] = e;
              b[n >> 1] = d;
              return
          }

          function hd(a, d, e, f) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0, j = 0;
              g = b[(c[f + 88 >> 2] | 0) + (a << 1) >> 1] | 0;
              if (!(g << 16 >> 16)) return;
              j = e;
              i = c[(c[f + 92 >> 2] | 0) + (a << 2) >> 2] | 0;
              while (1) {
                  e = b[i >> 1] | 0;
                  if (!(e << 16 >> 16)) e = 0; else {
                      a = b[d >> 1] | 0;
                      h = e;
                      f = j + ((e << 16 >> 16) + -1 << 1) | 0;
                      while (1) {
                          e = a << 16 >> 16;
                          b[f >> 1] = e & 1;
                          h = h + -1 << 16 >> 16;
                          if (!(h << 16 >> 16)) break; else {
                              a = e >>> 1 & 65535;
                              f = f + -2 | 0;
                          }
                      }
                      e = b[i >> 1] | 0;
                  }
                  d = d + 2 | 0;
                  g = g + -1 << 16 >> 16;
                  if (!(g << 16 >> 16)) break; else {
                      j = j + (e << 16 >> 16 << 1) | 0;
                      i = i + 2 | 0;
                  }
              }
              return
          }

          function id(a, d, f, g, h, j) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              var k = 0, l = 0, m = 0, n = 0, o = 0;
              o = i;
              i = i + 16 | 0;
              m = o + 2 | 0;
              n = o;
              k = h << 16 >> 16;
              if (h << 16 >> 16 < 1) {
                  j = -5443;
                  n = -32768;
                  Wd(a, n, j);
                  i = o;
                  return
              }
              l = re(14, f, j) | 0;
              if ((k | 0) < (l << 16 >> 16 | 0)) f = g; else {
                  f = (g & 65535) + 1 & 65535;
                  h = k >>> 1 & 65535;
              }
              g = Td(h, l & 65535) | 0;
              b[n >> 1] = g;
              de(g << 16 >> 16, m, n, j);
              b[m >> 1] = ((((f & 65535) - (d & 65535) << 16) + -65536 | 0) >>> 16) + (e[m >> 1] | 0);
              g = Ee(b[n >> 1] | 0, 5, j) | 0;
              k = b[m >> 1] | 0;
              g = ((k & 65535) << 10) + (g & 65535) & 65535;
              if (g << 16 >> 16 > 18284) {
                  j = 3037;
                  n = 18284;
                  Wd(a, n, j);
                  i = o;
                  return
              }
              h = b[n >> 1] | 0;
              k = k << 16 >> 16;
              if ((k * 24660 | 0) == 1073741824) {
                  c[j >> 2] = 1;
                  f = 2147483647;
              } else f = k * 49320 | 0;
              n = (h << 16 >> 16) * 24660 >> 15;
              k = f + (n << 1) | 0;
              if ((f ^ n | 0) > 0 & (k ^ f | 0) < 0) {
                  c[j >> 2] = 1;
                  k = (f >>> 31) + 2147483647 | 0;
              }
              n = k << 13;
              j = Ce((n >> 13 | 0) == (k | 0) ? n : k >> 31 ^ 2147483647, j) | 0;
              n = g;
              Wd(a, n, j);
              i = o;
              return
          }

          function jd(a, d, f, g, h, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              q = q | 0;
              r = r | 0;
              s = s | 0;
              t = t | 0;
              u = u | 0;
              v = v | 0;
              w = w | 0;
              x = x | 0;
              var y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0,
                  N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, _ = 0, $ = 0,
                  aa = 0, ba = 0, ca = 0, da = 0, ea = 0, fa = 0, ga = 0, ha = 0;
              ha = i;
              i = i + 80 | 0;
              da = ha + 66 | 0;
              ea = ha + 64 | 0;
              fa = ha + 62 | 0;
              ga = ha + 60 | 0;
              O = ha + 40 | 0;
              P = ha + 20 | 0;
              M = ha;
              b[da >> 1] = d;
              b[ea >> 1] = m;
              b[fa >> 1] = n;
              L = re(14, f, x) | 0;
              ca = L & 65535;
              b[ga >> 1] = ca;
              N = re(14, n, x) | 0;
              K = (e[g >> 1] | 0) + 65523 | 0;
              b[M >> 1] = K;
              E = (e[g + 2 >> 1] | 0) + 65522 | 0;
              F = M + 2 | 0;
              b[F >> 1] = E;
              G = ((d & 65535) << 16) + -720896 | 0;
              B = G >> 16;
              G = (G >>> 15) + 15 + (e[g + 4 >> 1] | 0) | 0;
              H = M + 4 | 0;
              b[H >> 1] = G;
              I = (e[g + 6 >> 1] | 0) + B | 0;
              J = M + 6 | 0;
              b[J >> 1] = I;
              B = B + 1 + (e[g + 8 >> 1] | 0) | 0;
              C = M + 8 | 0;
              b[C >> 1] = B;
              y = (e[o >> 1] | 0) + 65523 & 65535;
              b[M + 10 >> 1] = y;
              D = (e[o + 2 >> 1] | 0) + 65522 & 65535;
              b[M + 12 >> 1] = D;
              z = ((m & 65535) << 16) + -720896 | 0;
              g = z >> 16;
              z = (z >>> 15) + 15 + (e[o + 4 >> 1] | 0) & 65535;
              b[M + 14 >> 1] = z;
              A = (e[o + 6 >> 1] | 0) + g & 65535;
              b[M + 16 >> 1] = A;
              g = g + 1 + (e[o + 8 >> 1] | 0) & 65535;
              b[M + 18 >> 1] = g;
              aa = (j & 65535) - (q & 65535) << 16;
              m = aa >> 16;
              if ((aa | 0) > 0) {
                  n = k;
                  f = r << 16 >> 16 >> m & 65535;
              } else {
                  n = k << 16 >> 16 >> 0 - m & 65535;
                  f = r;
              }
              if ((Ee(f, 1, x) | 0) << 16 >> 16 > n << 16 >> 16) f = 1; else f = (((n << 16 >> 16) + 3 >> 2 | 0) > (f << 16 >> 16 | 0)) << 31 >> 31;
              o = K + f & 65535;
              b[M >> 1] = o;
              aa = E + f & 65535;
              b[F >> 1] = aa;
              $ = G + f & 65535;
              b[H >> 1] = $;
              _ = I + f & 65535;
              b[J >> 1] = _;
              Y = B + f & 65535;
              b[C >> 1] = Y;
              m = g << 16 >> 16 > o << 16 >> 16 ? g : o;
              m = A << 16 >> 16 > m << 16 >> 16 ? A : m;
              m = z << 16 >> 16 > m << 16 >> 16 ? z : m;
              m = D << 16 >> 16 > m << 16 >> 16 ? D : m;
              m = y << 16 >> 16 > m << 16 >> 16 ? y : m;
              m = Y << 16 >> 16 > m << 16 >> 16 ? Y : m;
              m = _ << 16 >> 16 > m << 16 >> 16 ? _ : m;
              m = $ << 16 >> 16 > m << 16 >> 16 ? $ : m;
              m = (aa << 16 >> 16 > m << 16 >> 16 ? aa : m) + 1 & 65535;
              g = 0;
              while (1) {
                  f = m - (o & 65535) | 0;
                  o = f & 65535;
                  n = e[h >> 1] << 16;
                  f = f << 16 >> 16;
                  if (o << 16 >> 16 > 0) o = o << 16 >> 16 < 31 ? n >> f : 0; else {
                      aa = 0 - f << 16 >> 16;
                      o = n << aa;
                      o = (o >> aa | 0) == (n | 0) ? o : n >> 31 ^ 2147483647;
                  }
                  aa = o >> 16;
                  b[O + (g << 1) >> 1] = aa;
                  b[P + (g << 1) >> 1] = (o >>> 1) - (aa << 15);
                  g = g + 1 | 0;
                  if ((g | 0) == 5) {
                      f = 5;
                      n = p;
                      break
                  }
                  o = b[M + (g << 1) >> 1] | 0;
                  h = h + 2 | 0;
              }
              while (1) {
                  g = m - (y & 65535) | 0;
                  y = g & 65535;
                  o = e[n >> 1] << 16;
                  g = g << 16 >> 16;
                  if (y << 16 >> 16 > 0) o = y << 16 >> 16 < 31 ? o >> g : 0; else {
                      $ = 0 - g << 16 >> 16;
                      aa = o << $;
                      o = (aa >> $ | 0) == (o | 0) ? aa : o >> 31 ^ 2147483647;
                  }
                  aa = o >> 16;
                  b[O + (f << 1) >> 1] = aa;
                  b[P + (f << 1) >> 1] = (o >>> 1) - (aa << 15);
                  o = f + 1 | 0;
                  if ((o & 65535) << 16 >> 16 == 10) break;
                  y = b[M + (o << 1) >> 1] | 0;
                  f = o;
                  n = n + 2 | 0;
              }
              Q = L << 16 >> 16;
              R = b[O >> 1] | 0;
              S = b[P >> 1] | 0;
              T = b[O + 2 >> 1] | 0;
              U = b[P + 2 >> 1] | 0;
              V = b[O + 4 >> 1] | 0;
              W = b[P + 4 >> 1] | 0;
              X = b[O + 6 >> 1] | 0;
              Y = b[P + 6 >> 1] | 0;
              _ = b[O + 8 >> 1] | 0;
              $ = b[P + 8 >> 1] | 0;
              aa = s & 65535;
              q = N << 16 >> 16;
              j = b[O + 10 >> 1] | 0;
              A = b[P + 10 >> 1] | 0;
              z = b[O + 12 >> 1] | 0;
              h = b[P + 12 >> 1] | 0;
              f = b[O + 14 >> 1] | 0;
              n = b[P + 14 >> 1] | 0;
              g = b[O + 16 >> 1] | 0;
              y = b[P + 16 >> 1] | 0;
              B = b[O + 18 >> 1] | 0;
              P = b[P + 18 >> 1] | 0;
              m = 2147483647;
              O = 0;
              o = 0;
              C = 782;
              do {
                  M = b[C >> 1] | 0;
                  I = (Z(Q, b[C + 2 >> 1] | 0) | 0) >>> 15 << 16;
                  p = I >> 16;
                  G = M << 1;
                  K = (Z(G, M) | 0) >> 16;
                  r = Z(K, R) | 0;
                  if ((r | 0) == 1073741824) {
                      c[x >> 2] = 1;
                      J = 2147483647;
                  } else J = r << 1;
                  N = (Z(S, K) | 0) >> 15;
                  r = J + (N << 1) | 0;
                  if ((J ^ N | 0) > 0 & (r ^ J | 0) < 0) {
                      c[x >> 2] = 1;
                      r = (J >>> 31) + 2147483647 | 0;
                  }
                  K = Z(T, M) | 0;
                  if ((K | 0) == 1073741824) {
                      c[x >> 2] = 1;
                      J = 2147483647;
                  } else J = K << 1;
                  N = (Z(U, M) | 0) >> 15;
                  K = J + (N << 1) | 0;
                  if ((J ^ N | 0) > 0 & (K ^ J | 0) < 0) {
                      c[x >> 2] = 1;
                      K = (J >>> 31) + 2147483647 | 0;
                  }
                  I = (Z(I >> 15, p) | 0) >> 16;
                  J = Z(V, I) | 0;
                  if ((J | 0) == 1073741824) {
                      c[x >> 2] = 1;
                      H = 2147483647;
                  } else H = J << 1;
                  N = (Z(W, I) | 0) >> 15;
                  J = H + (N << 1) | 0;
                  if ((H ^ N | 0) > 0 & (J ^ H | 0) < 0) {
                      c[x >> 2] = 1;
                      J = (H >>> 31) + 2147483647 | 0;
                  }
                  I = Z(X, p) | 0;
                  if ((I | 0) == 1073741824) {
                      c[x >> 2] = 1;
                      H = 2147483647;
                  } else H = I << 1;
                  N = (Z(Y, p) | 0) >> 15;
                  I = H + (N << 1) | 0;
                  if ((H ^ N | 0) > 0 & (I ^ H | 0) < 0) {
                      c[x >> 2] = 1;
                      N = (H >>> 31) + 2147483647 | 0;
                  } else N = I;
                  H = (Z(G, p) | 0) >> 16;
                  I = Z(_, H) | 0;
                  if ((I | 0) == 1073741824) {
                      c[x >> 2] = 1;
                      G = 2147483647;
                  } else G = I << 1;
                  L = (Z($, H) | 0) >> 15;
                  I = G + (L << 1) | 0;
                  if ((G ^ L | 0) > 0 & (I ^ G | 0) < 0) {
                      c[x >> 2] = 1;
                      I = (G >>> 31) + 2147483647 | 0;
                  }
                  H = b[C + 4 >> 1] | 0;
                  G = b[C + 6 >> 1] | 0;
                  C = C + 8 | 0;
                  if ((M - aa & 65535) << 16 >> 16 < 1 ? (ba = H << 16 >> 16, H << 16 >> 16 <= s << 16 >> 16) : 0) {
                      E = (Z(G << 16 >> 16, q) | 0) >>> 15 << 16;
                      M = E >> 16;
                      D = ba << 1;
                      G = (Z(D, ba) | 0) >> 16;
                      H = Z(j, G) | 0;
                      if ((H | 0) == 1073741824) {
                          c[x >> 2] = 1;
                          F = 2147483647;
                      } else F = H << 1;
                      L = (Z(A, G) | 0) >> 15;
                      H = F + (L << 1) | 0;
                      if ((F ^ L | 0) > 0 & (H ^ F | 0) < 0) {
                          c[x >> 2] = 1;
                          H = (F >>> 31) + 2147483647 | 0;
                      }
                      G = Z(z, ba) | 0;
                      if ((G | 0) == 1073741824) {
                          c[x >> 2] = 1;
                          F = 2147483647;
                      } else F = G << 1;
                      L = (Z(h, ba) | 0) >> 15;
                      G = F + (L << 1) | 0;
                      if ((F ^ L | 0) > 0 & (G ^ F | 0) < 0) {
                          c[x >> 2] = 1;
                          L = (F >>> 31) + 2147483647 | 0;
                      } else L = G;
                      F = (Z(E >> 15, M) | 0) >> 16;
                      G = Z(f, F) | 0;
                      if ((G | 0) == 1073741824) {
                          c[x >> 2] = 1;
                          E = 2147483647;
                      } else E = G << 1;
                      p = (Z(n, F) | 0) >> 15;
                      G = E + (p << 1) | 0;
                      if ((E ^ p | 0) > 0 & (G ^ E | 0) < 0) {
                          c[x >> 2] = 1;
                          p = (E >>> 31) + 2147483647 | 0;
                      } else p = G;
                      G = Z(g, M) | 0;
                      if ((G | 0) == 1073741824) {
                          c[x >> 2] = 1;
                          F = 2147483647;
                      } else F = G << 1;
                      E = (Z(y, M) | 0) >> 15;
                      G = F + (E << 1) | 0;
                      if ((F ^ E | 0) > 0 & (G ^ F | 0) < 0) {
                          c[x >> 2] = 1;
                          k = (F >>> 31) + 2147483647 | 0;
                      } else k = G;
                      F = (Z(D, M) | 0) >> 16;
                      G = Z(B, F) | 0;
                      if ((G | 0) == 1073741824) {
                          c[x >> 2] = 1;
                          E = 2147483647;
                      } else E = G << 1;
                      M = (Z(P, F) | 0) >> 15;
                      G = E + (M << 1) | 0;
                      if ((E ^ M | 0) > 0 & (G ^ E | 0) < 0) {
                          c[x >> 2] = 1;
                          G = (E >>> 31) + 2147483647 | 0;
                      }
                      M = K + r + J + N + I + H + L + p + k + G | 0;
                      N = (M | 0) < (m | 0);
                      m = N ? M : m;
                      o = N ? O : o;
                  }
                  O = O + 1 << 16 >> 16;
              } while (O << 16 >> 16 < 256);
              s = (o & 65535) << 18 >> 16;
              kd(a, 782 + (s << 1) | 0, ca, d, t, u, x);
              Vd(a, 0, l, ea, fa, da, ga, x);
              l = (re(14, b[fa >> 1] | 0, x) | 0) & 65535;
              kd(a, 782 + ((s | 2) << 1) | 0, l, b[ea >> 1] | 0, v, w, x);
              i = ha;
              return o | 0
          }

          function kd(a, d, f, g, h, j, k) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0;
              o = i;
              i = i + 16 | 0;
              m = o + 2 | 0;
              n = o;
              b[h >> 1] = b[d >> 1] | 0;
              l = b[d + 2 >> 1] | 0;
              f = Z(f << 16 >> 16 << 1, l) | 0;
              h = 10 - (g & 65535) | 0;
              d = h & 65535;
              h = h << 16 >> 16;
              if (d << 16 >> 16 > 0) d = d << 16 >> 16 < 31 ? f >> h : 0; else {
                  h = 0 - h << 16 >> 16;
                  d = f << h;
                  d = (d >> h | 0) == (f | 0) ? d : f >> 31 ^ 2147483647;
              }
              b[j >> 1] = d >>> 16;
              de(l, m, n, k);
              b[m >> 1] = (e[m >> 1] | 0) + 65524;
              h = Ee(b[n >> 1] | 0, 5, k) | 0;
              g = b[m >> 1] | 0;
              h = ((g & 65535) << 10) + (h & 65535) & 65535;
              f = b[n >> 1] | 0;
              g = g << 16 >> 16;
              if ((g * 24660 | 0) == 1073741824) {
                  c[k >> 2] = 1;
                  d = 2147483647;
              } else d = g * 49320 | 0;
              n = (f << 16 >> 16) * 24660 >> 15;
              g = d + (n << 1) | 0;
              if (!((d ^ n | 0) > 0 & (g ^ d | 0) < 0)) {
                  k = g;
                  k = k << 13;
                  k = k + 32768 | 0;
                  k = k >>> 16;
                  k = k & 65535;
                  Wd(a, h, k);
                  i = o;
                  return
              }
              c[k >> 2] = 1;
              k = (d >>> 31) + 2147483647 | 0;
              k = k << 13;
              k = k + 32768 | 0;
              k = k >>> 16;
              k = k & 65535;
              Wd(a, h, k);
              i = o;
              return
          }

          function ld(a, d, f, g, h, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              q = q | 0;
              r = r | 0;
              s = s | 0;
              t = t | 0;
              u = u | 0;
              v = v | 0;
              w = w | 0;
              x = x | 0;
              y = y | 0;
              var z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0,
                  O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, _ = 0, $ = 0, aa = 0,
                  ba = 0, ca = 0, da = 0, ea = 0, fa = 0, ga = 0, ha = 0, ia = 0, ja = 0, ka = 0, la = 0;
              la = i;
              i = i + 80 | 0;
              ia = la + 72 | 0;
              ja = la + 70 | 0;
              ka = la + 68 | 0;
              ga = la + 66 | 0;
              ha = la + 56 | 0;
              _ = la + 24 | 0;
              Y = la + 12 | 0;
              W = la + 48 | 0;
              X = la + 40 | 0;
              R = la + 34 | 0;
              T = la + 22 | 0;
              P = la + 6 | 0;
              Q = la;
              nd(5, r, s, P, Q, c[x + 72 >> 2] | 0, y) | 0;
              B = re(14, n, y) | 0;
              S = x + 68 | 0;
              O = c[S >> 2] | 0;
              V = m << 16 >> 16;
              U = V + 65526 | 0;
              r = (e[j >> 1] | 0) + 65523 & 65535;
              b[ha >> 1] = r;
              x = (e[j + 2 >> 1] | 0) + 65522 & 65535;
              b[ha + 2 >> 1] = x;
              da = U << 16 >> 16;
              ea = ((U << 17 >> 17 | 0) == (da | 0) ? U << 1 : da >>> 15 ^ 32767) + 15 + (e[j + 4 >> 1] | 0) & 65535;
              b[ha + 4 >> 1] = ea;
              fa = (e[j + 6 >> 1] | 0) + da & 65535;
              b[ha + 6 >> 1] = fa;
              j = da + 1 + (e[j + 8 >> 1] | 0) & 65535;
              b[ha + 8 >> 1] = j;
              x = x << 16 >> 16 > r << 16 >> 16 ? x : r;
              x = ea << 16 >> 16 > x << 16 >> 16 ? ea : x;
              x = fa << 16 >> 16 > x << 16 >> 16 ? fa : x;
              x = (Rd(j << 16 >> 16 > x << 16 >> 16 ? j : x, 1, y) | 0) & 65535;
              j = r;
              r = 0;
              while (1) {
                  n = x - (j & 65535) | 0;
                  j = n & 65535;
                  A = e[h + (r << 1) >> 1] << 16;
                  n = n << 16 >> 16;
                  if (j << 16 >> 16 > 0) n = j << 16 >> 16 < 31 ? A >> n : 0; else {
                      fa = 0 - n << 16 >> 16;
                      n = A << fa;
                      n = (n >> fa | 0) == (A | 0) ? n : A >> 31 ^ 2147483647;
                  }
                  Nc(n, _ + (r << 1) | 0, Y + (r << 1) | 0, y);
                  n = r + 1 | 0;
                  if ((n | 0) == 5) break;
                  j = b[ha + (n << 1) >> 1] | 0;
                  r = n;
              }
              M = _ + 2 | 0;
              N = Y + 2 | 0;
              fa = B << 16 >> 16;
              $ = _ + 4 | 0;
              aa = Y + 4 | 0;
              ba = _ + 6 | 0;
              ca = Y + 6 | 0;
              da = _ + 8 | 0;
              ea = Y + 8 | 0;
              E = 0;
              j = 2147483647;
              h = 0;
              n = 0;
              while (1) {
                  L = b[P + (h << 1) >> 1] | 0;
                  B = Z(L, L) | 0;
                  if (B >>> 0 > 1073741823) {
                      c[y >> 2] = 1;
                      B = 32767;
                  } else B = B >>> 15;
                  x = b[Y >> 1] | 0;
                  A = B << 16 >> 16;
                  B = Z(A, b[_ >> 1] | 0) | 0;
                  if ((B | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      r = 2147483647;
                  } else r = B << 1;
                  K = (Z(x << 16 >> 16, A) | 0) >> 15;
                  B = r + (K << 1) | 0;
                  if ((r ^ K | 0) > 0 & (B ^ r | 0) < 0) {
                      c[y >> 2] = 1;
                      B = (r >>> 31) + 2147483647 | 0;
                  }
                  x = b[N >> 1] | 0;
                  A = Z(b[M >> 1] | 0, L) | 0;
                  if ((A | 0) != 1073741824) {
                      r = (A << 1) + B | 0;
                      if ((A ^ B | 0) > 0 & (r ^ B | 0) < 0) {
                          c[y >> 2] = 1;
                          r = (B >>> 31) + 2147483647 | 0;
                      }
                  } else {
                      c[y >> 2] = 1;
                      r = 2147483647;
                  }
                  B = (Z(x << 16 >> 16, L) | 0) >> 15;
                  if ((B | 0) > 32767) {
                      c[y >> 2] = 1;
                      B = 32767;
                  }
                  K = B << 16;
                  B = (K >> 15) + r | 0;
                  if ((K >> 16 ^ r | 0) > 0 & (B ^ r | 0) < 0) {
                      c[y >> 2] = 1;
                      K = (r >>> 31) + 2147483647 | 0;
                  } else K = B;
                  I = (K >>> 31) + 2147483647 | 0;
                  J = h & 65535;
                  B = E;
                  G = 0;
                  H = O;
                  do {
                      A = (Z(b[H >> 1] | 0, fa) | 0) >> 15;
                      H = H + 6 | 0;
                      if ((A | 0) > 32767) {
                          c[y >> 2] = 1;
                          A = 32767;
                      }
                      F = A << 16 >> 16;
                      A = Z(F, F) | 0;
                      if ((A | 0) == 1073741824) {
                          c[y >> 2] = 1;
                          D = 2147483647;
                      } else D = A << 1;
                      Nc(D, ia, ja, y);
                      A = Z(F, L) | 0;
                      if ((A | 0) == 1073741824) {
                          c[y >> 2] = 1;
                          D = 2147483647;
                      } else D = A << 1;
                      Nc(D, ka, ga, y);
                      r = b[aa >> 1] | 0;
                      C = b[ja >> 1] | 0;
                      A = b[$ >> 1] | 0;
                      x = b[ia >> 1] | 0;
                      E = Z(x, A) | 0;
                      if ((E | 0) != 1073741824) {
                          D = (E << 1) + K | 0;
                          if ((E ^ K | 0) > 0 & (D ^ K | 0) < 0) {
                              c[y >> 2] = 1;
                              D = I;
                          }
                      } else {
                          c[y >> 2] = 1;
                          D = 2147483647;
                      }
                      E = (Z(C << 16 >> 16, A) | 0) >> 15;
                      if ((E | 0) > 32767) {
                          c[y >> 2] = 1;
                          E = 32767;
                      }
                      C = E << 16;
                      E = (C >> 15) + D | 0;
                      if ((C >> 16 ^ D | 0) > 0 & (E ^ D | 0) < 0) {
                          c[y >> 2] = 1;
                          E = (D >>> 31) + 2147483647 | 0;
                      }
                      D = (Z(x, r << 16 >> 16) | 0) >> 15;
                      if ((D | 0) > 32767) {
                          c[y >> 2] = 1;
                          D = 32767;
                      }
                      C = D << 16;
                      D = (C >> 15) + E | 0;
                      if ((C >> 16 ^ E | 0) > 0 & (D ^ E | 0) < 0) {
                          c[y >> 2] = 1;
                          D = (E >>> 31) + 2147483647 | 0;
                      }
                      A = b[ca >> 1] | 0;
                      E = Z(b[ba >> 1] | 0, F) | 0;
                      if ((E | 0) != 1073741824) {
                          C = (E << 1) + D | 0;
                          if ((E ^ D | 0) > 0 & (C ^ D | 0) < 0) {
                              c[y >> 2] = 1;
                              C = (D >>> 31) + 2147483647 | 0;
                          }
                      } else {
                          c[y >> 2] = 1;
                          C = 2147483647;
                      }
                      A = (Z(A << 16 >> 16, F) | 0) >> 15;
                      if ((A | 0) > 32767) {
                          c[y >> 2] = 1;
                          A = 32767;
                      }
                      F = A << 16;
                      A = (F >> 15) + C | 0;
                      if ((F >> 16 ^ C | 0) > 0 & (A ^ C | 0) < 0) {
                          c[y >> 2] = 1;
                          A = (C >>> 31) + 2147483647 | 0;
                      }
                      x = b[ea >> 1] | 0;
                      C = b[ga >> 1] | 0;
                      r = b[da >> 1] | 0;
                      z = b[ka >> 1] | 0;
                      E = Z(z, r) | 0;
                      do if ((E | 0) == 1073741824) {
                          c[y >> 2] = 1;
                          E = 2147483647;
                      } else {
                          D = (E << 1) + A | 0;
                          if (!((E ^ A | 0) > 0 & (D ^ A | 0) < 0)) {
                              E = D;
                              break
                          }
                          c[y >> 2] = 1;
                          E = (A >>> 31) + 2147483647 | 0;
                      } while (0);
                      D = (Z(C << 16 >> 16, r) | 0) >> 15;
                      if ((D | 0) > 32767) {
                          c[y >> 2] = 1;
                          D = 32767;
                      }
                      F = D << 16;
                      D = (F >> 15) + E | 0;
                      if ((F >> 16 ^ E | 0) > 0 & (D ^ E | 0) < 0) {
                          c[y >> 2] = 1;
                          D = (E >>> 31) + 2147483647 | 0;
                      }
                      A = (Z(z, x << 16 >> 16) | 0) >> 15;
                      if ((A | 0) > 32767) {
                          c[y >> 2] = 1;
                          A = 32767;
                      }
                      F = A << 16;
                      A = (F >> 15) + D | 0;
                      if ((F >> 16 ^ D | 0) > 0 & (A ^ D | 0) < 0) {
                          c[y >> 2] = 1;
                          A = (D >>> 31) + 2147483647 | 0;
                      }
                      F = (A | 0) < (j | 0);
                      B = F ? G : B;
                      n = F ? J : n;
                      j = F ? A : j;
                      G = G + 1 << 16 >> 16;
                  } while (G << 16 >> 16 < 32);
                  h = h + 1 | 0;
                  if ((h | 0) == 3) {
                      A = B;
                      h = n;
                      break
                  } else E = B;
              }
              N = (A << 16 >> 16) * 3 | 0;
              j = b[O + (N << 1) >> 1] | 0;
              b[u >> 1] = b[O + (N + 1 << 1) >> 1] | 0;
              b[v >> 1] = b[O + (N + 2 << 1) >> 1] | 0;
              j = Z(j << 16 >> 16, fa) | 0;
              if ((j | 0) == 1073741824) {
                  c[y >> 2] = 1;
                  B = 2147483647;
              } else B = j << 1;
              N = 9 - V | 0;
              O = N & 65535;
              N = N << 16 >> 16;
              M = O << 16 >> 16 > 0;
              if (M) B = O << 16 >> 16 < 31 ? B >> N : 0; else {
                  K = 0 - N << 16 >> 16;
                  L = B << K;
                  B = (L >> K | 0) == (B | 0) ? L : B >> 31 ^ 2147483647;
              }
              b[t >> 1] = B >>> 16;
              L = h << 16 >> 16;
              P = b[P + (L << 1) >> 1] | 0;
              b[s >> 1] = P;
              Q = b[Q + (L << 1) >> 1] | 0;
              Ub(d, f, g, P, o, W, X, R, y);
              xc(a, b[R >> 1] | 0, b[t >> 1] | 0, T, y);
              if (!((b[W >> 1] | 0) != 0 & (b[T >> 1] | 0) > 0)) {
                  y = A;
                  u = c[w >> 2] | 0;
                  t = u + 2 | 0;
                  b[u >> 1] = Q;
                  u = u + 4 | 0;
                  c[w >> 2] = u;
                  b[t >> 1] = y;
                  i = la;
                  return
              }
              F = W + 6 | 0;
              b[F >> 1] = l;
              D = X + 6 | 0;
              b[D >> 1] = k;
              m = ((Ge(q, m, y) | 0) & 65535) + 10 | 0;
              x = m << 16 >> 16;
              if ((m & 65535) << 16 >> 16 < 0) {
                  n = 0 - x << 16;
                  if ((n | 0) < 983040) p = p << 16 >> 16 >> (n >> 16) & 65535; else p = 0;
              } else {
                  n = p << 16 >> 16;
                  r = n << x;
                  if ((r << 16 >> 16 >> x | 0) == (n | 0)) p = r & 65535; else p = (n >>> 15 ^ 32767) & 65535;
              }
              j = b[s >> 1] | 0;
              B = b[T >> 1] | 0;
              S = c[S >> 2] | 0;
              r = b[t >> 1] | 0;
              T = 10 - V | 0;
              x = T << 16 >> 16;
              if ((T & 65535) << 16 >> 16 < 0) {
                  n = 0 - x << 16;
                  if ((n | 0) < 983040) l = r << 16 >> 16 >> (n >> 16) & 65535; else l = 0;
              } else {
                  n = r << 16 >> 16;
                  r = n << x;
                  if ((r << 16 >> 16 >> x | 0) == (n | 0)) l = r & 65535; else l = (n >>> 15 ^ 32767) & 65535;
              }
              h = j << 16 >> 16;
              n = Z(h, h) | 0;
              if (n >>> 0 > 1073741823) {
                  c[y >> 2] = 1;
                  j = 32767;
              } else j = n >>> 15;
              A = Rd(32767 - (B & 65535) & 65535, 1, y) | 0;
              B = B << 16 >> 16;
              n = Z(b[W + 2 >> 1] | 0, B) | 0;
              if ((n | 0) == 1073741824) {
                  c[y >> 2] = 1;
                  n = 2147483647;
              } else n = n << 1;
              T = n << 1;
              n = Z(((T >> 1 | 0) == (n | 0) ? T : n >> 31 ^ 2147418112) >> 16, j << 16 >> 16) | 0;
              if ((n | 0) == 1073741824) {
                  c[y >> 2] = 1;
                  E = 2147483647;
              } else E = n << 1;
              C = (e[X + 2 >> 1] | 0) + 65521 | 0;
              x = C & 65535;
              n = Z(b[W + 4 >> 1] | 0, B) | 0;
              if ((n | 0) == 1073741824) {
                  c[y >> 2] = 1;
                  j = 2147483647;
              } else j = n << 1;
              n = j << 1;
              n = (Z(((n >> 1 | 0) == (j | 0) ? n : j >> 31 ^ 2147418112) >> 16, h) | 0) >> 15;
              if ((n | 0) > 32767) {
                  c[y >> 2] = 1;
                  n = 32767;
              }
              b[$ >> 1] = n;
              j = U & 65535;
              b[ia >> 1] = j;
              j = Rd(b[X + 4 >> 1] | 0, j, y) | 0;
              n = Z(b[F >> 1] | 0, B) | 0;
              if ((n | 0) == 1073741824) {
                  c[y >> 2] = 1;
                  n = 2147483647;
              } else n = n << 1;
              z = n << 1;
              b[ba >> 1] = ((z >> 1 | 0) == (n | 0) ? z : n >> 31 ^ 2147418112) >>> 16;
              z = ((V << 17 >> 17 | 0) == (V | 0) ? V << 1 : V >>> 15 ^ 32767) + 65529 & 65535;
              b[ia >> 1] = z;
              z = Rd(b[D >> 1] | 0, z, y) | 0;
              n = (Z(b[F >> 1] | 0, A << 16 >> 16) | 0) >> 15;
              if ((n | 0) > 32767) {
                  c[y >> 2] = 1;
                  n = 32767;
              }
              b[da >> 1] = n;
              A = Rd(z, 1, y) | 0;
              r = Z(b[W >> 1] | 0, B) | 0;
              if ((r | 0) == 1073741824) {
                  c[y >> 2] = 1;
                  n = 2147483647;
              } else n = r << 1;
              D = Fe(n, ia, y) | 0;
              h = (e[ia >> 1] | 0) + 47 | 0;
              b[ia >> 1] = h;
              h = (e[X >> 1] | 0) - (h & 65535) | 0;
              B = h + 31 & 65535;
              B = x << 16 >> 16 > B << 16 >> 16 ? x : B;
              B = j << 16 >> 16 > B << 16 >> 16 ? j : B;
              B = z << 16 >> 16 > B << 16 >> 16 ? z : B;
              B = (A << 16 >> 16 > B << 16 >> 16 ? A : B) << 16 >> 16;
              r = B - (C & 65535) | 0;
              n = r & 65535;
              r = r << 16 >> 16;
              if (n << 16 >> 16 > 0) K = n << 16 >> 16 < 31 ? E >> r : 0; else {
                  X = 0 - r << 16 >> 16;
                  K = E << X;
                  K = (K >> X | 0) == (E | 0) ? K : E >> 31 ^ 2147483647;
              }
              x = B - (j & 65535) | 0;
              n = x & 65535;
              r = e[$ >> 1] << 16;
              x = x << 16 >> 16;
              if (n << 16 >> 16 > 0) r = n << 16 >> 16 < 31 ? r >> x : 0; else {
                  W = 0 - x << 16 >> 16;
                  X = r << W;
                  r = (X >> W | 0) == (r | 0) ? X : r >> 31 ^ 2147483647;
              }
              Nc(r, $, aa, y);
              z = B - (z & 65535) | 0;
              r = z & 65535;
              x = e[ba >> 1] << 16;
              z = z << 16 >> 16;
              if (r << 16 >> 16 > 0) r = r << 16 >> 16 < 31 ? x >> z : 0; else {
                  X = 0 - z << 16 >> 16;
                  r = x << X;
                  r = (r >> X | 0) == (x | 0) ? r : x >> 31 ^ 2147483647;
              }
              Nc(r, ba, ca, y);
              z = B - (A & 65535) | 0;
              r = z & 65535;
              x = e[da >> 1] << 16;
              z = z << 16 >> 16;
              if (r << 16 >> 16 > 0) r = r << 16 >> 16 < 31 ? x >> z : 0; else {
                  X = 0 - z << 16 >> 16;
                  r = x << X;
                  r = (r >> X | 0) == (x | 0) ? r : x >> 31 ^ 2147483647;
              }
              Nc(r, da, ea, y);
              z = B + 65505 | 0;
              b[ia >> 1] = z;
              z = z - (h & 65535) | 0;
              r = De(z & 65535, 1, y) | 0;
              x = r << 16 >> 16;
              if (r << 16 >> 16 > 0) x = r << 16 >> 16 < 31 ? D >> x : 0; else {
                  X = 0 - x << 16 >> 16;
                  x = D << X;
                  x = (x >> X | 0) == (D | 0) ? x : D >> 31 ^ 2147483647;
              }
              do if (!(z & 1)) E = x; else {
                  Nc(x, _, Y, y);
                  r = b[Y >> 1] | 0;
                  x = b[_ >> 1] | 0;
                  if ((x * 23170 | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      z = 2147483647;
                  } else z = x * 46340 | 0;
                  _ = (r << 16 >> 16) * 23170 >> 15;
                  x = z + (_ << 1) | 0;
                  if (!((z ^ _ | 0) > 0 & (x ^ z | 0) < 0)) {
                      E = x;
                      break
                  }
                  c[y >> 2] = 1;
                  E = (z >>> 31) + 2147483647 | 0;
              } while (0);
              F = (K >>> 31) + 2147483647 | 0;
              D = 2147483647;
              C = 0;
              x = 0;
              G = S;
              while (1) {
                  r = (Z(b[G >> 1] | 0, fa) | 0) >> 15;
                  G = G + 6 | 0;
                  if ((r | 0) > 32767) {
                      c[y >> 2] = 1;
                      r = 32767;
                  }
                  z = r & 65535;
                  if (z << 16 >> 16 >= l << 16 >> 16) break;
                  j = r << 16 >> 16;
                  r = Z(j, j) | 0;
                  if ((r | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      n = 2147483647;
                  } else n = r << 1;
                  Nc(n, ja, ka, y);
                  r = (Ge(z, p, y) | 0) << 16 >> 16;
                  r = Z(r, r) | 0;
                  if ((r | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      r = 2147483647;
                  } else r = r << 1;
                  Nc(r, ga, ha, y);
                  z = b[aa >> 1] | 0;
                  n = Z(b[$ >> 1] | 0, j) | 0;
                  do if ((n | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      n = 2147483647;
                  } else {
                      r = (n << 1) + K | 0;
                      if (!((n ^ K | 0) > 0 & (r ^ K | 0) < 0)) {
                          n = r;
                          break
                      }
                      c[y >> 2] = 1;
                      n = F;
                  } while (0);
                  r = (Z(z << 16 >> 16, j) | 0) >> 15;
                  if ((r | 0) > 32767) {
                      c[y >> 2] = 1;
                      r = 32767;
                  }
                  _ = r << 16;
                  r = (_ >> 15) + n | 0;
                  if ((_ >> 16 ^ n | 0) > 0 & (r ^ n | 0) < 0) {
                      c[y >> 2] = 1;
                      r = (n >>> 31) + 2147483647 | 0;
                  }
                  h = b[ca >> 1] | 0;
                  A = b[ka >> 1] | 0;
                  j = b[ba >> 1] | 0;
                  B = b[ja >> 1] | 0;
                  n = Z(B, j) | 0;
                  do if ((n | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      z = 2147483647;
                  } else {
                      z = (n << 1) + r | 0;
                      if (!((n ^ r | 0) > 0 & (z ^ r | 0) < 0)) break;
                      c[y >> 2] = 1;
                      z = (r >>> 31) + 2147483647 | 0;
                  } while (0);
                  n = (Z(A << 16 >> 16, j) | 0) >> 15;
                  if ((n | 0) > 32767) {
                      c[y >> 2] = 1;
                      n = 32767;
                  }
                  _ = n << 16;
                  n = (_ >> 15) + z | 0;
                  if ((_ >> 16 ^ z | 0) > 0 & (n ^ z | 0) < 0) {
                      c[y >> 2] = 1;
                      n = (z >>> 31) + 2147483647 | 0;
                  }
                  r = (Z(B, h << 16 >> 16) | 0) >> 15;
                  if ((r | 0) > 32767) {
                      c[y >> 2] = 1;
                      r = 32767;
                  }
                  _ = r << 16;
                  r = (_ >> 15) + n | 0;
                  if ((_ >> 16 ^ n | 0) > 0 & (r ^ n | 0) < 0) {
                      c[y >> 2] = 1;
                      r = (n >>> 31) + 2147483647 | 0;
                  }
                  r = Fe(r, ia, y) | 0;
                  z = De(b[ia >> 1] | 0, 1, y) | 0;
                  n = z << 16 >> 16;
                  if (z << 16 >> 16 > 0) z = z << 16 >> 16 < 31 ? r >> n : 0; else {
                      _ = 0 - n << 16 >> 16;
                      z = r << _;
                      z = (z >> _ | 0) == (r | 0) ? z : r >> 31 ^ 2147483647;
                  }
                  r = z - E | 0;
                  if (((r ^ z) & (z ^ E) | 0) < 0) {
                      c[y >> 2] = 1;
                      r = (z >>> 31) + 2147483647 | 0;
                  }
                  r = (Ce(r, y) | 0) << 16 >> 16;
                  r = Z(r, r) | 0;
                  if ((r | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      z = 2147483647;
                  } else z = r << 1;
                  B = b[ea >> 1] | 0;
                  j = b[ha >> 1] | 0;
                  A = b[da >> 1] | 0;
                  h = b[ga >> 1] | 0;
                  n = Z(h, A) | 0;
                  do if ((n | 0) == 1073741824) {
                      c[y >> 2] = 1;
                      r = 2147483647;
                  } else {
                      r = (n << 1) + z | 0;
                      if (!((n ^ z | 0) > 0 & (r ^ z | 0) < 0)) break;
                      c[y >> 2] = 1;
                      r = (z >>> 31) + 2147483647 | 0;
                  } while (0);
                  n = (Z(j << 16 >> 16, A) | 0) >> 15;
                  if ((n | 0) > 32767) {
                      c[y >> 2] = 1;
                      n = 32767;
                  }
                  _ = n << 16;
                  n = (_ >> 15) + r | 0;
                  if ((_ >> 16 ^ r | 0) > 0 & (n ^ r | 0) < 0) {
                      c[y >> 2] = 1;
                      n = (r >>> 31) + 2147483647 | 0;
                  }
                  r = (Z(h, B << 16 >> 16) | 0) >> 15;
                  if ((r | 0) > 32767) {
                      c[y >> 2] = 1;
                      r = 32767;
                  }
                  _ = r << 16;
                  r = (_ >> 15) + n | 0;
                  if ((_ >> 16 ^ n | 0) > 0 & (r ^ n | 0) < 0) {
                      c[y >> 2] = 1;
                      r = (n >>> 31) + 2147483647 | 0;
                  }
                  n = (r | 0) < (D | 0);
                  x = n ? C : x;
                  C = C + 1 << 16 >> 16;
                  if (C << 16 >> 16 >= 32) break; else D = n ? r : D;
              }
              ka = (x << 16 >> 16) * 3 | 0;
              z = b[S + (ka << 1) >> 1] | 0;
              b[u >> 1] = b[S + (ka + 1 << 1) >> 1] | 0;
              b[v >> 1] = b[S + (ka + 2 << 1) >> 1] | 0;
              z = Z(z << 16 >> 16, fa) | 0;
              if ((z | 0) == 1073741824) {
                  c[y >> 2] = 1;
                  z = 2147483647;
              } else z = z << 1;
              if (M) z = O << 16 >> 16 < 31 ? z >> N : 0; else {
                  u = 0 - N << 16 >> 16;
                  y = z << u;
                  z = (y >> u | 0) == (z | 0) ? y : z >> 31 ^ 2147483647;
              }
              b[t >> 1] = z >>> 16;
              y = x;
              u = c[w >> 2] | 0;
              t = u + 2 | 0;
              b[u >> 1] = Q;
              u = u + 4 | 0;
              c[w >> 2] = u;
              b[t >> 1] = y;
              i = la;
              return
          }

          function md(a, c, d, e, f, g, h, i) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0;
              n = (a | 0) == 7;
              j = b[e >> 1] | 0;
              if (n) {
                  j = j << 16 >> 16 >>> 1 & 65535;
                  m = re(c, d, i) | 0;
                  c = m << 16;
                  a = c >> 16;
                  if ((m << 20 >> 20 | 0) == (a | 0)) a = c >> 12; else a = a >>> 15 ^ 32767;
              } else {
                  m = re(c, d, i) | 0;
                  c = m << 16;
                  a = c >> 16;
                  if ((m << 21 >> 21 | 0) == (a | 0)) a = c >> 11; else a = a >>> 15 ^ 32767;
              }
              m = a << 16 >> 16;
              i = j << 16 >> 16;
              c = i - ((Z(m, b[h >> 1] | 0) | 0) >>> 15 & 65535) | 0;
              c = ((c & 32768 | 0) != 0 ? 0 - c | 0 : c) & 65535;
              k = 1;
              a = 0;
              l = h;
              while (1) {
                  l = l + 6 | 0;
                  j = i - ((Z(b[l >> 1] | 0, m) | 0) >>> 15 & 65535) | 0;
                  d = j << 16;
                  j = (d | 0) < 0 ? 0 - (d >> 16) | 0 : j;
                  d = (j << 16 >> 16 | 0) < (c << 16 >> 16 | 0);
                  a = d ? k : a;
                  k = k + 1 << 16 >> 16;
                  if (k << 16 >> 16 >= 32) break; else c = d ? j & 65535 : c;
              }
              l = (a << 16 >> 16) * 196608 >> 16;
              b[e >> 1] = (Z(b[h + (l << 1) >> 1] | 0, m) | 0) >>> 15 << (n & 1);
              b[f >> 1] = b[h + (l + 1 << 1) >> 1] | 0;
              b[g >> 1] = b[h + (l + 2 << 1) >> 1] | 0;
              return a | 0
          }

          function nd(a, c, d, e, f, g, h) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
              i = Ge(b[d >> 1] | 0, b[g >> 1] | 0, h) | 0;
              i = (i & 65535) - ((i & 65535) >>> 15 & 65535) | 0;
              i = (i << 16 >> 31 ^ i) & 65535;
              k = 0;
              l = 1;
              while (1) {
                  j = b[g + (l << 1) >> 1] | 0;
                  if (j << 16 >> 16 > c << 16 >> 16) j = i; else {
                      j = Ge(b[d >> 1] | 0, j, h) | 0;
                      j = (j & 65535) - ((j & 65535) >>> 15 & 65535) | 0;
                      j = (j << 16 >> 31 ^ j) & 65535;
                      n = j << 16 >> 16 < i << 16 >> 16;
                      j = n ? j : i;
                      k = n ? l & 65535 : k;
                  }
                  l = l + 1 | 0;
                  if ((l | 0) == 16) break; else i = j;
              }
              if ((a | 0) != 5) {
                  i = b[g + (k << 16 >> 16 << 1) >> 1] | 0;
                  if ((a | 0) == 7) {
                      b[d >> 1] = i & 65532;
                      return k | 0
                  } else {
                      b[d >> 1] = i;
                      return k | 0
                  }
              }
              j = k << 16 >> 16;
              switch (k << 16 >> 16) {
                  case 0: {
                      i = 0;
                      break
                  }
                  case 15: {
                      m = 8;
                      break
                  }
                  default:
                      if ((b[g + (j + 1 << 1) >> 1] | 0) > c << 16 >> 16) m = 8; else i = j + 65535 & 65535;
              }
              if ((m | 0) == 8) i = j + 65534 & 65535;
              b[f >> 1] = i;
              n = i << 16 >> 16;
              b[e >> 1] = b[g + (n << 1) >> 1] | 0;
              n = n + 1 | 0;
              b[f + 2 >> 1] = n;
              n = n << 16 >> 16;
              b[e + 2 >> 1] = b[g + (n << 1) >> 1] | 0;
              n = n + 1 | 0;
              b[f + 4 >> 1] = n;
              b[e + 4 >> 1] = b[g + (n << 16 >> 16 << 1) >> 1] | 0;
              b[d >> 1] = b[g + (j << 1) >> 1] | 0;
              return k | 0
          }

          function od(a, d, f, g, h, j, k, l, m, n, o, p) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              var q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0,
                  F = 0, G = 0, H = 0, I = 0, J = 0, K = 0;
              K = i;
              i = i + 32 | 0;
              s = K + 20 | 0;
              t = K + 10 | 0;
              r = K;
              switch (a | 0) {
                  case 3:
                  case 4:
                  case 6: {
                      o = o + 84 | 0;
                      J = 128;
                      break
                  }
                  default: {
                      o = o + 80 | 0;
                      J = 64;
                  }
              }
              I = c[o >> 2] | 0;
              q = re(14, f, p) | 0;
              H = d << 16 >> 16;
              G = H + 65525 | 0;
              a = (e[h >> 1] | 0) + 65523 & 65535;
              b[r >> 1] = a;
              d = (e[h + 2 >> 1] | 0) + 65522 & 65535;
              b[r + 2 >> 1] = d;
              F = G << 16 >> 16;
              F = Rd(b[h + 4 >> 1] | 0, ((G << 17 >> 17 | 0) == (F | 0) ? G << 1 : F >>> 15 ^ 32767) + 15 & 65535, p) | 0;
              b[r + 4 >> 1] = F;
              G = Rd(b[h + 6 >> 1] | 0, G & 65535, p) | 0;
              b[r + 6 >> 1] = G;
              h = Rd(b[h + 8 >> 1] | 0, H + 65526 & 65535, p) | 0;
              b[r + 8 >> 1] = h;
              d = d << 16 >> 16 > a << 16 >> 16 ? d : a;
              d = F << 16 >> 16 > d << 16 >> 16 ? F : d;
              d = G << 16 >> 16 > d << 16 >> 16 ? G : d;
              d = (h << 16 >> 16 > d << 16 >> 16 ? h : d) + 1 & 65535;
              h = 0;
              while (1) {
                  f = d - (a & 65535) | 0;
                  o = f & 65535;
                  a = e[g + (h << 1) >> 1] << 16;
                  f = f << 16 >> 16;
                  if (o << 16 >> 16 > 0) o = o << 16 >> 16 < 31 ? a >> f : 0; else {
                      G = 0 - f << 16 >> 16;
                      o = a << G;
                      o = (o >> G | 0) == (a | 0) ? o : a >> 31 ^ 2147483647;
                  }
                  Nc(o, s + (h << 1) | 0, t + (h << 1) | 0, p);
                  o = h + 1 | 0;
                  if ((o | 0) == 5) break;
                  a = b[r + (o << 1) >> 1] | 0;
                  h = o;
              }
              G = q << 16 >> 16;
              y = b[s >> 1] | 0;
              z = b[t >> 1] | 0;
              A = b[s + 2 >> 1] | 0;
              B = b[t + 2 >> 1] | 0;
              C = b[s + 4 >> 1] | 0;
              D = b[t + 4 >> 1] | 0;
              E = b[s + 6 >> 1] | 0;
              F = b[t + 6 >> 1] | 0;
              x = b[s + 8 >> 1] | 0;
              u = b[t + 8 >> 1] | 0;
              d = 2147483647;
              v = 0;
              o = 0;
              w = I;
              while (1) {
                  h = b[w >> 1] | 0;
                  if (h << 16 >> 16 > j << 16 >> 16) q = d; else {
                      q = (Z(b[w + 2 >> 1] | 0, G) | 0) >> 15;
                      if ((q | 0) > 32767) {
                          c[p >> 2] = 1;
                          q = 32767;
                      }
                      t = h << 16 >> 16;
                      h = Z(t, t) | 0;
                      if (h >>> 0 > 1073741823) {
                          c[p >> 2] = 1;
                          r = 32767;
                      } else r = h >>> 15;
                      f = q << 16 >> 16;
                      q = Z(f, f) | 0;
                      if (q >>> 0 > 1073741823) {
                          c[p >> 2] = 1;
                          s = 32767;
                      } else s = q >>> 15;
                      g = (Z(f, t) | 0) >> 15;
                      if ((g | 0) > 32767) {
                          c[p >> 2] = 1;
                          g = 32767;
                      }
                      q = r << 16 >> 16;
                      r = Z(y, q) | 0;
                      if ((r | 0) == 1073741824) {
                          c[p >> 2] = 1;
                          h = 2147483647;
                      } else h = r << 1;
                      q = (Z(z, q) | 0) >> 15;
                      r = h + (q << 1) | 0;
                      if ((h ^ q | 0) > 0 & (r ^ h | 0) < 0) {
                          c[p >> 2] = 1;
                          r = (h >>> 31) + 2147483647 | 0;
                      }
                      q = Z(A, t) | 0;
                      if ((q | 0) == 1073741824) {
                          c[p >> 2] = 1;
                          h = 2147483647;
                      } else h = q << 1;
                      t = (Z(B, t) | 0) >> 15;
                      q = h + (t << 1) | 0;
                      if ((h ^ t | 0) > 0 & (q ^ h | 0) < 0) {
                          c[p >> 2] = 1;
                          q = (h >>> 31) + 2147483647 | 0;
                      }
                      h = q + r | 0;
                      if ((q ^ r | 0) > -1 & (h ^ r | 0) < 0) {
                          c[p >> 2] = 1;
                          h = (r >>> 31) + 2147483647 | 0;
                      }
                      q = s << 16 >> 16;
                      r = Z(C, q) | 0;
                      if ((r | 0) == 1073741824) {
                          c[p >> 2] = 1;
                          a = 2147483647;
                      } else a = r << 1;
                      t = (Z(D, q) | 0) >> 15;
                      r = a + (t << 1) | 0;
                      if ((a ^ t | 0) > 0 & (r ^ a | 0) < 0) {
                          c[p >> 2] = 1;
                          r = (a >>> 31) + 2147483647 | 0;
                      }
                      q = r + h | 0;
                      if ((r ^ h | 0) > -1 & (q ^ h | 0) < 0) {
                          c[p >> 2] = 1;
                          a = (h >>> 31) + 2147483647 | 0;
                      } else a = q;
                      q = Z(E, f) | 0;
                      if ((q | 0) == 1073741824) {
                          c[p >> 2] = 1;
                          r = 2147483647;
                      } else r = q << 1;
                      t = (Z(F, f) | 0) >> 15;
                      q = r + (t << 1) | 0;
                      if ((r ^ t | 0) > 0 & (q ^ r | 0) < 0) {
                          c[p >> 2] = 1;
                          q = (r >>> 31) + 2147483647 | 0;
                      }
                      h = q + a | 0;
                      if ((q ^ a | 0) > -1 & (h ^ a | 0) < 0) {
                          c[p >> 2] = 1;
                          r = (a >>> 31) + 2147483647 | 0;
                      } else r = h;
                      h = g << 16 >> 16;
                      q = Z(x, h) | 0;
                      if ((q | 0) == 1073741824) {
                          c[p >> 2] = 1;
                          a = 2147483647;
                      } else a = q << 1;
                      t = (Z(u, h) | 0) >> 15;
                      q = a + (t << 1) | 0;
                      if ((a ^ t | 0) > 0 & (q ^ a | 0) < 0) {
                          c[p >> 2] = 1;
                          h = (a >>> 31) + 2147483647 | 0;
                      } else h = q;
                      q = h + r | 0;
                      if ((h ^ r | 0) > -1 & (q ^ r | 0) < 0) {
                          c[p >> 2] = 1;
                          q = (r >>> 31) + 2147483647 | 0;
                      }
                      t = (q | 0) < (d | 0);
                      q = t ? q : d;
                      o = t ? v : o;
                  }
                  w = w + 8 | 0;
                  v = v + 1 << 16 >> 16;
                  if ((v << 16 >> 16 | 0) >= (J | 0)) break; else d = q;
              }
              j = o << 16 >> 16;
              j = ((j << 18 >> 18 | 0) == (j | 0) ? j << 2 : j >>> 15 ^ 32767) << 16 >> 16;
              b[k >> 1] = b[I + (j << 1) >> 1] | 0;
              d = b[I + (j + 1 << 1) >> 1] | 0;
              b[m >> 1] = b[I + (j + 2 << 1) >> 1] | 0;
              b[n >> 1] = b[I + (j + 3 << 1) >> 1] | 0;
              d = Z(d << 16 >> 16, G) | 0;
              if ((d | 0) == 1073741824) {
                  c[p >> 2] = 1;
                  a = 2147483647;
              } else a = d << 1;
              f = 10 - H | 0;
              d = f & 65535;
              f = f << 16 >> 16;
              if (d << 16 >> 16 > 0) {
                  p = d << 16 >> 16 < 31 ? a >> f : 0;
                  p = p >>> 16;
                  p = p & 65535;
                  b[l >> 1] = p;
                  i = K;
                  return o | 0
              } else {
                  m = 0 - f << 16 >> 16;
                  p = a << m;
                  p = (p >> m | 0) == (a | 0) ? p : a >> 31 ^ 2147483647;
                  p = p >>> 16;
                  p = p & 65535;
                  b[l >> 1] = p;
                  i = K;
                  return o | 0
              }
              return 0
          }

          function pd(a, c, d, f, g, h, j, k, l) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              var m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0,
                  B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0,
                  Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, _ = 0, $ = 0, aa = 0, ba = 0, ca = 0,
                  da = 0, ea = 0, fa = 0, ga = 0, ha = 0, ia = 0, ja = 0, ka = 0, la = 0, ma = 0, na = 0, oa = 0, pa = 0,
                  qa = 0, ra = 0, sa = 0, ta = 0, ua = 0, va = 0, wa = 0;
              wa = i;
              i = i + 160 | 0;
              va = wa;
              n = a << 16 >> 16;
              ta = a << 16 >> 16 == 10;
              ua = b[j + (b[h >> 1] << 1) >> 1] | 0;
              if (a << 16 >> 16 > 0) {
                  l = 0;
                  m = k;
                  while (1) {
                      b[m >> 1] = l;
                      l = l + 1 << 16 >> 16;
                      if (l << 16 >> 16 >= a << 16 >> 16) break; else m = m + 2 | 0;
                  }
              }
              if (d << 16 >> 16 <= 1) {
                  i = wa;
                  return
              }
              ra = h + 2 | 0;
              sa = ua << 16 >> 16;
              oa = f + (sa << 1) | 0;
              pa = g + (sa * 80 | 0) + (sa << 1) | 0;
              qa = h + 6 | 0;
              X = c & 65535;
              Y = h + 4 | 0;
              _ = h + 10 | 0;
              $ = h + 8 | 0;
              aa = h + 14 | 0;
              ba = h + 12 | 0;
              ca = h + 18 | 0;
              da = h + 16 | 0;
              ea = k + 2 | 0;
              fa = k + 4 | 0;
              ga = k + 6 | 0;
              ha = k + 8 | 0;
              ia = k + 10 | 0;
              ja = k + 12 | 0;
              ka = k + 14 | 0;
              la = k + 16 | 0;
              ma = k + 18 | 0;
              na = a << 16 >> 16 > 2;
              V = h + (n + -1 << 1) | 0;
              T = 1;
              W = 1;
              N = 0;
              O = 0;
              U = -1;
              while (1) {
                  S = b[j + (b[ra >> 1] << 1) >> 1] | 0;
                  R = S << 16 >> 16;
                  c = (e[f + (R << 1) >> 1] | 0) + (e[oa >> 1] | 0) | 0;
                  m = (b[g + (sa * 80 | 0) + (R << 1) >> 1] << 13) + 32768 + ((b[g + (R * 80 | 0) + (R << 1) >> 1] | 0) + (b[pa >> 1] | 0) << 12) | 0;
                  n = b[qa >> 1] | 0;
                  if (n << 16 >> 16 < 40) {
                      n = n << 16 >> 16;
                      o = va;
                      while (1) {
                          P = (b[g + (n * 80 | 0) + (n << 1) >> 1] | 0) >>> 1;
                          M = b[g + (n * 80 | 0) + (sa << 1) >> 1] | 0;
                          Q = b[g + (n * 80 | 0) + (R << 1) >> 1] | 0;
                          b[o >> 1] = c + (e[f + (n << 1) >> 1] | 0);
                          b[o + 2 >> 1] = (M + 2 + P + Q | 0) >>> 2;
                          n = n + X | 0;
                          if ((n & 65535) << 16 >> 16 < 40) {
                              n = n << 16 >> 16;
                              o = o + 4 | 0;
                          } else break
                      }
                      B = b[qa >> 1] | 0;
                  } else B = n;
                  c = b[Y >> 1] | 0;
                  A = m >> 12;
                  n = c << 16 >> 16;
                  a:do if (c << 16 >> 16 < 40) {
                      z = B << 16 >> 16;
                      if (B << 16 >> 16 < 40) {
                          o = 1;
                          q = c;
                          s = B;
                          r = 0;
                          p = -1;
                      } else while (1) {
                          n = n + X | 0;
                          if ((n & 65535) << 16 >> 16 < 40) n = n << 16 >> 16; else {
                              o = 1;
                              Q = c;
                              P = B;
                              n = 0;
                              break a
                          }
                      }
                      while (1) {
                          y = ((b[g + (n * 80 | 0) + (n << 1) >> 1] | 0) + A >> 1) + (b[g + (n * 80 | 0) + (sa << 1) >> 1] | 0) + (b[g + (n * 80 | 0) + (R << 1) >> 1] | 0) | 0;
                          x = e[f + (n << 1) >> 1] | 0;
                          v = z;
                          w = B;
                          u = va;
                          t = r;
                          while (1) {
                              m = (e[u >> 1] | 0) + x | 0;
                              l = m << 16 >> 16;
                              l = (Z(l, l) | 0) >>> 15;
                              r = (y + (b[g + (n * 80 | 0) + (v << 1) >> 1] | 0) >> 2) + (b[u + 2 >> 1] | 0) >> 1;
                              if ((Z(l << 16 >> 16, o << 16 >> 16) | 0) > (Z(r, p << 16 >> 16) | 0)) {
                                  o = r & 65535;
                                  q = c;
                                  s = w;
                                  r = m & 65535;
                                  p = l & 65535;
                              } else r = t;
                              m = v + X | 0;
                              w = m & 65535;
                              if (w << 16 >> 16 >= 40) break; else {
                                  v = m << 16 >> 16;
                                  u = u + 4 | 0;
                                  t = r;
                              }
                          }
                          n = n + X | 0;
                          c = n & 65535;
                          if (c << 16 >> 16 < 40) n = n << 16 >> 16; else {
                              Q = q;
                              P = s;
                              n = r;
                              break
                          }
                      }
                  } else {
                      o = 1;
                      Q = c;
                      P = B;
                      n = 0;
                  } while (0);
                  q = o << 16 >> 16 << 15;
                  o = b[_ >> 1] | 0;
                  if (o << 16 >> 16 < 40) {
                      m = Q << 16 >> 16;
                      l = P << 16 >> 16;
                      c = n & 65535;
                      o = o << 16 >> 16;
                      n = va;
                      while (1) {
                          J = b[g + (o * 80 | 0) + (o << 1) >> 1] >> 1;
                          I = b[g + (o * 80 | 0) + (sa << 1) >> 1] | 0;
                          K = b[g + (o * 80 | 0) + (R << 1) >> 1] | 0;
                          L = b[g + (o * 80 | 0) + (m << 1) >> 1] | 0;
                          M = b[g + (o * 80 | 0) + (l << 1) >> 1] | 0;
                          b[n >> 1] = (e[f + (o << 1) >> 1] | 0) + c;
                          b[n + 2 >> 1] = (I + 2 + J + K + L + M | 0) >>> 2;
                          o = o + X | 0;
                          if ((o & 65535) << 16 >> 16 < 40) {
                              o = o << 16 >> 16;
                              n = n + 4 | 0;
                          } else break
                      }
                      J = b[_ >> 1] | 0;
                  } else J = o;
                  p = b[$ >> 1] | 0;
                  o = p << 16 >> 16;
                  b:do if (p << 16 >> 16 < 40) {
                      C = Q << 16 >> 16;
                      D = P << 16 >> 16;
                      E = J << 16 >> 16;
                      B = q + 32768 | 0;
                      if (J << 16 >> 16 < 40) {
                          r = 1;
                          q = p;
                          c = J;
                          s = p;
                          n = 0;
                          p = -1;
                      } else while (1) {
                          o = o + X | 0;
                          if ((o & 65535) << 16 >> 16 < 40) o = o << 16 >> 16; else {
                              o = 1;
                              M = p;
                              L = J;
                              n = 0;
                              break b
                          }
                      }
                      while (1) {
                          l = e[f + (o << 1) >> 1] | 0;
                          A = (b[g + (o * 80 | 0) + (R << 1) >> 1] | 0) + (b[g + (o * 80 | 0) + (sa << 1) >> 1] | 0) + (b[g + (o * 80 | 0) + (C << 1) >> 1] | 0) + (b[g + (o * 80 | 0) + (D << 1) >> 1] | 0) | 0;
                          z = B + (b[g + (o * 80 | 0) + (o << 1) >> 1] << 11) | 0;
                          x = E;
                          v = J;
                          y = va;
                          while (1) {
                              t = (e[y >> 1] | 0) + l | 0;
                              m = z + (b[y + 2 >> 1] << 14) + (A + (b[g + (o * 80 | 0) + (x << 1) >> 1] | 0) << 12) | 0;
                              u = t << 16 >> 16;
                              u = (Z(u, u) | 0) >>> 15;
                              if ((Z(u << 16 >> 16, r << 16 >> 16) | 0) > (Z(m >> 16, p << 16 >> 16) | 0)) {
                                  r = m >>> 16 & 65535;
                                  w = s;
                                  c = v;
                                  n = t & 65535;
                                  p = u & 65535;
                              } else w = q;
                              q = x + X | 0;
                              v = q & 65535;
                              if (v << 16 >> 16 >= 40) {
                                  q = w;
                                  break
                              } else {
                                  x = q << 16 >> 16;
                                  q = w;
                                  y = y + 4 | 0;
                              }
                          }
                          o = o + X | 0;
                          s = o & 65535;
                          if (s << 16 >> 16 < 40) o = o << 16 >> 16; else {
                              o = r;
                              M = q;
                              L = c;
                              break
                          }
                      }
                  } else {
                      o = 1;
                      M = p;
                      L = J;
                      n = 0;
                  } while (0);
                  r = o << 16 >> 16 << 15;
                  o = b[aa >> 1] | 0;
                  if (o << 16 >> 16 < 40) {
                      m = Q << 16 >> 16;
                      l = P << 16 >> 16;
                      p = M << 16 >> 16;
                      q = L << 16 >> 16;
                      c = n & 65535;
                      o = o << 16 >> 16;
                      n = va;
                      while (1) {
                          F = b[g + (o * 80 | 0) + (o << 1) >> 1] >> 1;
                          E = b[g + (sa * 80 | 0) + (o << 1) >> 1] | 0;
                          G = b[g + (R * 80 | 0) + (o << 1) >> 1] | 0;
                          H = b[g + (m * 80 | 0) + (o << 1) >> 1] | 0;
                          I = b[g + (l * 80 | 0) + (o << 1) >> 1] | 0;
                          J = b[g + (p * 80 | 0) + (o << 1) >> 1] | 0;
                          K = b[g + (q * 80 | 0) + (o << 1) >> 1] | 0;
                          b[n >> 1] = (e[f + (o << 1) >> 1] | 0) + c;
                          b[n + 2 >> 1] = (E + 4 + F + G + H + I + J + K | 0) >>> 3;
                          o = o + X | 0;
                          if ((o & 65535) << 16 >> 16 < 40) {
                              o = o << 16 >> 16;
                              n = n + 4 | 0;
                          } else break
                      }
                      c = b[aa >> 1] | 0;
                  } else c = o;
                  s = b[ba >> 1] | 0;
                  if (s << 16 >> 16 < 40) {
                      J = Q << 16 >> 16;
                      F = P << 16 >> 16;
                      E = M << 16 >> 16;
                      D = L << 16 >> 16;
                      C = c << 16 >> 16;
                      B = c << 16 >> 16 < 40;
                      G = r + 32768 | 0;
                      I = s << 16 >> 16;
                      l = 1;
                      w = s;
                      v = c;
                      H = s;
                      q = 0;
                      o = -1;
                      while (1) {
                          if (B) {
                              r = e[f + (I << 1) >> 1] | 0;
                              n = (b[g + (I * 80 | 0) + (R << 1) >> 1] | 0) + (b[g + (I * 80 | 0) + (sa << 1) >> 1] | 0) + (b[g + (I * 80 | 0) + (J << 1) >> 1] | 0) + (b[g + (I * 80 | 0) + (F << 1) >> 1] | 0) + (b[g + (I * 80 | 0) + (E << 1) >> 1] | 0) + (b[g + (I * 80 | 0) + (D << 1) >> 1] | 0) | 0;
                              p = G + (b[g + (I * 80 | 0) + (I << 1) >> 1] << 10) | 0;
                              u = C;
                              s = c;
                              z = v;
                              A = va;
                              while (1) {
                                  y = (e[A >> 1] | 0) + r | 0;
                                  v = p + (b[A + 2 >> 1] << 14) + (n + (b[g + (I * 80 | 0) + (u << 1) >> 1] | 0) << 11) | 0;
                                  x = y << 16 >> 16;
                                  x = (Z(x, x) | 0) >>> 15;
                                  if ((Z(x << 16 >> 16, l << 16 >> 16) | 0) > (Z(v >> 16, o << 16 >> 16) | 0)) {
                                      l = v >>> 16 & 65535;
                                      w = H;
                                      v = s;
                                      q = y & 65535;
                                      o = x & 65535;
                                  } else v = z;
                                  t = u + X | 0;
                                  s = t & 65535;
                                  if (s << 16 >> 16 >= 40) break; else {
                                      u = t << 16 >> 16;
                                      z = v;
                                      A = A + 4 | 0;
                                  }
                              }
                          }
                          s = I + X | 0;
                          H = s & 65535;
                          if (H << 16 >> 16 >= 40) {
                              K = v;
                              break
                          } else I = s << 16 >> 16;
                      }
                  } else {
                      l = 1;
                      w = s;
                      K = c;
                      q = 0;
                      o = -1;
                  }
                  if (ta) {
                      u = l << 16 >> 16 << 15;
                      o = b[ca >> 1] | 0;
                      if (o << 16 >> 16 < 40) {
                          n = Q << 16 >> 16;
                          c = P << 16 >> 16;
                          m = M << 16 >> 16;
                          l = L << 16 >> 16;
                          r = w << 16 >> 16;
                          s = K << 16 >> 16;
                          p = q & 65535;
                          o = o << 16 >> 16;
                          q = va;
                          while (1) {
                              E = b[g + (o * 80 | 0) + (o << 1) >> 1] >> 1;
                              D = b[g + (sa * 80 | 0) + (o << 1) >> 1] | 0;
                              F = b[g + (R * 80 | 0) + (o << 1) >> 1] | 0;
                              G = b[g + (n * 80 | 0) + (o << 1) >> 1] | 0;
                              H = b[g + (c * 80 | 0) + (o << 1) >> 1] | 0;
                              I = b[g + (m * 80 | 0) + (o << 1) >> 1] | 0;
                              J = b[g + (l * 80 | 0) + (o << 1) >> 1] | 0;
                              N = b[g + (r * 80 | 0) + (o << 1) >> 1] | 0;
                              O = b[g + (s * 80 | 0) + (o << 1) >> 1] | 0;
                              b[q >> 1] = (e[f + (o << 1) >> 1] | 0) + p;
                              b[q + 2 >> 1] = (D + 4 + E + F + G + H + I + J + N + O | 0) >>> 3;
                              o = o + X | 0;
                              if ((o & 65535) << 16 >> 16 < 40) {
                                  o = o << 16 >> 16;
                                  q = q + 4 | 0;
                              } else break
                          }
                          J = b[ca >> 1] | 0;
                      } else J = o;
                      r = b[da >> 1] | 0;
                      if (r << 16 >> 16 < 40) {
                          E = Q << 16 >> 16;
                          D = P << 16 >> 16;
                          C = M << 16 >> 16;
                          m = L << 16 >> 16;
                          F = w << 16 >> 16;
                          G = K << 16 >> 16;
                          H = J << 16 >> 16;
                          I = J << 16 >> 16 < 40;
                          B = u + 32768 | 0;
                          n = r << 16 >> 16;
                          l = 1;
                          s = r;
                          q = J;
                          c = r;
                          o = -1;
                          while (1) {
                              if (I) {
                                  u = e[f + (n << 1) >> 1] | 0;
                                  p = (b[g + (R * 80 | 0) + (n << 1) >> 1] | 0) + (b[g + (sa * 80 | 0) + (n << 1) >> 1] | 0) + (b[g + (E * 80 | 0) + (n << 1) >> 1] | 0) + (b[g + (D * 80 | 0) + (n << 1) >> 1] | 0) + (b[g + (C * 80 | 0) + (n << 1) >> 1] | 0) + (b[g + (m * 80 | 0) + (n << 1) >> 1] | 0) + (b[g + (F * 80 | 0) + (n << 1) >> 1] | 0) + (b[g + (G * 80 | 0) + (n << 1) >> 1] | 0) | 0;
                                  r = B + (b[g + (n * 80 | 0) + (n << 1) >> 1] << 9) | 0;
                                  A = H;
                                  x = J;
                                  z = va;
                                  while (1) {
                                      y = (e[z >> 1] | 0) + u << 16 >> 16;
                                      y = (Z(y, y) | 0) >>> 15;
                                      v = r + (b[z + 2 >> 1] << 13) + (p + (b[g + (n * 80 | 0) + (A << 1) >> 1] | 0) << 10) | 0;
                                      if ((Z(y << 16 >> 16, l << 16 >> 16) | 0) > (Z(v >> 16, o << 16 >> 16) | 0)) {
                                          l = v >>> 16 & 65535;
                                          s = c;
                                          q = x;
                                          o = y & 65535;
                                      }
                                      t = A + X | 0;
                                      x = t & 65535;
                                      if (x << 16 >> 16 >= 40) break; else {
                                          A = t << 16 >> 16;
                                          z = z + 4 | 0;
                                      }
                                  }
                              }
                              r = n + X | 0;
                              c = r & 65535;
                              if (c << 16 >> 16 >= 40) break; else n = r << 16 >> 16;
                          }
                      } else {
                          l = 1;
                          s = r;
                          q = J;
                          o = -1;
                      }
                  } else {
                      s = N;
                      q = O;
                  }
                  if ((Z(o << 16 >> 16, T << 16 >> 16) | 0) > (Z(l << 16 >> 16, U << 16 >> 16) | 0)) {
                      b[k >> 1] = ua;
                      b[ea >> 1] = S;
                      b[fa >> 1] = Q;
                      b[ga >> 1] = P;
                      b[ha >> 1] = M;
                      b[ia >> 1] = L;
                      b[ja >> 1] = w;
                      b[ka >> 1] = K;
                      if (ta) {
                          b[la >> 1] = s;
                          b[ma >> 1] = q;
                      }
                  } else {
                      l = T;
                      o = U;
                  }
                  n = b[ra >> 1] | 0;
                  if (na) {
                      c = 1;
                      m = 2;
                      while (1) {
                          b[h + (c << 1) >> 1] = b[h + (m << 1) >> 1] | 0;
                          m = m + 1 | 0;
                          if ((m & 65535) << 16 >> 16 == a << 16 >> 16) break; else c = c + 1 | 0;
                      }
                  }
                  b[V >> 1] = n;
                  W = W + 1 << 16 >> 16;
                  if (W << 16 >> 16 >= d << 16 >> 16) break; else {
                      T = l;
                      N = s;
                      O = q;
                      U = o;
                  }
              }
              i = wa;
              return
          }

          function qd(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0;
              i = 39;
              while (1) {
                  h = a + (i << 1) | 0;
                  g = b[h >> 1] | 0;
                  f = c + (i << 1) | 0;
                  if (g << 16 >> 16 > -1) b[f >> 1] = 32767; else {
                      b[f >> 1] = -32767;
                      if (g << 16 >> 16 == -32768) g = 32767; else g = 0 - (g & 65535) & 65535;
                      b[h >> 1] = g;
                  }
                  b[d + (i << 1) >> 1] = g;
                  if ((i | 0) > 0) i = i + -1 | 0; else break
              }
              k = 8 - (e << 16 >> 16) | 0;
              if ((k | 0) > 0) {
                  j = 0;
                  f = 0;
              } else return;
              do {
                  e = 0;
                  a = 0;
                  h = 32767;
                  while (1) {
                      c = b[d + (e << 1) >> 1] | 0;
                      i = c << 16 >> 16 > -1 ? c << 16 >> 16 < h << 16 >> 16 : 0;
                      f = i ? a : f;
                      g = e + 5 | 0;
                      a = g & 65535;
                      if (a << 16 >> 16 >= 40) break; else {
                          e = g << 16 >> 16;
                          h = i ? c : h;
                      }
                  }
                  b[d + (f << 16 >> 16 << 1) >> 1] = -1;
                  j = j + 1 << 16 >> 16;
              } while ((j << 16 >> 16 | 0) < (k | 0));
              j = 0;
              do {
                  c = 1;
                  a = 1;
                  g = 32767;
                  while (1) {
                      e = b[d + (c << 1) >> 1] | 0;
                      i = e << 16 >> 16 > -1 ? e << 16 >> 16 < g << 16 >> 16 : 0;
                      f = i ? a : f;
                      h = c + 5 | 0;
                      a = h & 65535;
                      if (a << 16 >> 16 >= 40) break; else {
                          c = h << 16 >> 16;
                          g = i ? e : g;
                      }
                  }
                  b[d + (f << 16 >> 16 << 1) >> 1] = -1;
                  j = j + 1 << 16 >> 16;
              } while ((j << 16 >> 16 | 0) < (k | 0));
              j = 0;
              do {
                  c = 2;
                  a = 2;
                  g = 32767;
                  while (1) {
                      e = b[d + (c << 1) >> 1] | 0;
                      i = e << 16 >> 16 > -1 ? e << 16 >> 16 < g << 16 >> 16 : 0;
                      f = i ? a : f;
                      h = c + 5 | 0;
                      a = h & 65535;
                      if (a << 16 >> 16 >= 40) break; else {
                          c = h << 16 >> 16;
                          g = i ? e : g;
                      }
                  }
                  b[d + (f << 16 >> 16 << 1) >> 1] = -1;
                  j = j + 1 << 16 >> 16;
              } while ((j << 16 >> 16 | 0) < (k | 0));
              j = 0;
              while (1) {
                  c = 3;
                  a = 3;
                  g = 32767;
                  while (1) {
                      e = b[d + (c << 1) >> 1] | 0;
                      i = e << 16 >> 16 > -1 ? e << 16 >> 16 < g << 16 >> 16 : 0;
                      f = i ? a : f;
                      h = c + 5 | 0;
                      a = h & 65535;
                      if (a << 16 >> 16 >= 40) {
                          g = f;
                          break
                      } else {
                          c = h << 16 >> 16;
                          g = i ? e : g;
                      }
                  }
                  b[d + (g << 16 >> 16 << 1) >> 1] = -1;
                  j = j + 1 << 16 >> 16;
                  if ((j << 16 >> 16 | 0) >= (k | 0)) {
                      f = 0;
                      break
                  } else f = g;
              }
              do {
                  c = 4;
                  a = 4;
                  j = 32767;
                  while (1) {
                      e = b[d + (c << 1) >> 1] | 0;
                      i = e << 16 >> 16 > -1 ? e << 16 >> 16 < j << 16 >> 16 : 0;
                      g = i ? a : g;
                      h = c + 5 | 0;
                      a = h & 65535;
                      if (a << 16 >> 16 >= 40) break; else {
                          c = h << 16 >> 16;
                          j = i ? e : j;
                      }
                  }
                  b[d + (g << 16 >> 16 << 1) >> 1] = -1;
                  f = f + 1 << 16 >> 16;
              } while ((f << 16 >> 16 | 0) < (k | 0));
              return
          }

          function rd(a, d, e, f, g, h, j, k) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0;
              y = i;
              i = i + 80 | 0;
              x = y;
              p = 40;
              q = d;
              r = a;
              m = 256;
              n = 256;
              while (1) {
                  l = b[q >> 1] | 0;
                  q = q + 2 | 0;
                  l = Z(l, l) | 0;
                  if ((l | 0) != 1073741824) {
                      o = (l << 1) + m | 0;
                      if ((l ^ m | 0) > 0 & (o ^ m | 0) < 0) {
                          c[k >> 2] = 1;
                          m = (m >>> 31) + 2147483647 | 0;
                      } else m = o;
                  } else {
                      c[k >> 2] = 1;
                      m = 2147483647;
                  }
                  w = b[r >> 1] | 0;
                  n = (Z(w << 1, w) | 0) + n | 0;
                  p = p + -1 << 16 >> 16;
                  if (!(p << 16 >> 16)) break; else r = r + 2 | 0;
              }
              w = ce(m, k) | 0;
              u = w << 5;
              w = ((u >> 5 | 0) == (w | 0) ? u : w >> 31 ^ 2147418112) >> 16;
              u = (ce(n, k) | 0) << 5 >> 16;
              v = 39;
              s = d + 78 | 0;
              t = x + 78 | 0;
              l = e + 78 | 0;
              while (1) {
                  r = Z(b[s >> 1] | 0, w) | 0;
                  s = s + -2 | 0;
                  q = r << 1;
                  d = a + (v << 1) | 0;
                  m = b[d >> 1] | 0;
                  p = Z(m << 16 >> 16, u) | 0;
                  if ((p | 0) != 1073741824) {
                      o = (p << 1) + q | 0;
                      if ((p ^ q | 0) > 0 & (o ^ q | 0) < 0) {
                          c[k >> 2] = 1;
                          o = (r >>> 30 & 1) + 2147483647 | 0;
                      }
                  } else {
                      c[k >> 2] = 1;
                      o = 2147483647;
                  }
                  n = o << 10;
                  n = Ce((n >> 10 | 0) == (o | 0) ? n : o >> 31 ^ 2147483647, k) | 0;
                  if (n << 16 >> 16 > -1) b[l >> 1] = 32767; else {
                      b[l >> 1] = -32767;
                      if (n << 16 >> 16 == -32768) n = 32767; else n = 0 - (n & 65535) & 65535;
                      if (m << 16 >> 16 == -32768) o = 32767; else o = 0 - (m & 65535) & 65535;
                      b[d >> 1] = o;
                  }
                  l = l + -2 | 0;
                  b[t >> 1] = n;
                  if ((v | 0) <= 0) break; else {
                      v = v + -1 | 0;
                      t = t + -2 | 0;
                  }
              }
              d = g << 16 >> 16;
              if (g << 16 >> 16 <= 0) {
                  b[h + (d << 1) >> 1] = b[h >> 1] | 0;
                  i = y;
                  return
              }
              r = j & 65535;
              q = 0;
              p = -1;
              l = 0;
              while (1) {
                  if ((q | 0) < 40) {
                      n = q;
                      o = q & 65535;
                      m = -1;
                      while (1) {
                          k = b[x + (n << 1) >> 1] | 0;
                          j = k << 16 >> 16 > m << 16 >> 16;
                          m = j ? k : m;
                          l = j ? o : l;
                          n = n + r | 0;
                          o = n & 65535;
                          if (o << 16 >> 16 >= 40) break; else n = n << 16 >> 16;
                      }
                  } else m = -1;
                  b[f + (q << 1) >> 1] = l;
                  if (m << 16 >> 16 > p << 16 >> 16) b[h >> 1] = q; else m = p;
                  q = q + 1 | 0;
                  if ((q & 65535) << 16 >> 16 == g << 16 >> 16) break; else p = m;
              }
              l = b[h >> 1] | 0;
              b[h + (d << 1) >> 1] = l;
              if (g << 16 >> 16 > 1) m = 1; else {
                  i = y;
                  return
              }
              do {
                  f = l + 1 << 16 >> 16;
                  l = f << 16 >> 16 >= g << 16 >> 16 ? 0 : f;
                  b[h + (m << 1) >> 1] = l;
                  b[h + (m + d << 1) >> 1] = l;
                  m = m + 1 | 0;
              } while ((m & 65535) << 16 >> 16 != g << 16 >> 16);
              i = y;
              return
          }

          function sd(a) {
              a = a | 0;
              var d = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(12) | 0;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              b[d >> 1] = 8;
              c[a >> 2] = d;
              b[d + 2 >> 1] = 3;
              b[d + 4 >> 1] = 0;
              c[d + 8 >> 2] = 0;
              a = 0;
              return a | 0
          }

          function td(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function ud(a, d, e) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0;
              do if ((d | 0) == 8) {
                  f = a + 2 | 0;
                  g = (b[f >> 1] | 0) + -1 << 16 >> 16;
                  b[f >> 1] = g;
                  d = a + 8 | 0;
                  if (!(c[d >> 2] | 0)) {
                      c[e >> 2] = 1;
                      b[f >> 1] = 3;
                      break
                  }
                  h = a + 4 | 0;
                  if (g << 16 >> 16 > 2 & (b[h >> 1] | 0) > 0) {
                      c[e >> 2] = 2;
                      b[h >> 1] = (b[h >> 1] | 0) + -1 << 16 >> 16;
                      break
                  }
                  if (!(g << 16 >> 16)) {
                      c[e >> 2] = 2;
                      b[f >> 1] = b[a >> 1] | 0;
                      break
                  } else {
                      c[e >> 2] = 3;
                      break
                  }
              } else {
                  b[a + 2 >> 1] = b[a >> 1] | 0;
                  c[e >> 2] = 0;
                  d = a + 8 | 0;
              } while (0);
              c[d >> 2] = c[e >> 2];
              return
          }

          function vd(a, b, d) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              var e = 0, f = 0, g = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(12) | 0;
              e = d;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              c[d >> 2] = 0;
              f = d + 4 | 0;
              c[f >> 2] = 0;
              g = d + 8 | 0;
              c[g >> 2] = b;
              if ((dd(d) | 0) << 16 >> 16 == 0 ? (ac(f, c[g >> 2] | 0) | 0) << 16 >> 16 == 0 : 0) {
                  ed(c[d >> 2] | 0) | 0;
                  cc(c[f >> 2] | 0) | 0;
                  c[a >> 2] = e;
                  a = 0;
                  return a | 0
              }
              fd(d);
              bc(f);
              Ke(d);
              a = -1;
              return a | 0
          }

          function wd(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              fd(b);
              bc((c[a >> 2] | 0) + 4 | 0);
              Ke(c[a >> 2] | 0);
              c[a >> 2] = 0;
              return
          }

          function xd(a, d, f, g, h) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0;
              m = i;
              i = i + 448 | 0;
              k = m + 320 | 0;
              l = m;
              Qe(g | 0, 0, 488) | 0;
              j = 0;
              do {
                  n = f + (j << 1) | 0;
                  b[n >> 1] = (e[n >> 1] | 0) & 65528;
                  j = j + 1 | 0;
              } while ((j | 0) != 160);
              gd(c[a >> 2] | 0, f, 160);
              n = a + 4 | 0;
              dc(c[n >> 2] | 0, d, f, k, h, l) | 0;
              hd(c[h >> 2] | 0, k, g, (c[n >> 2] | 0) + 2392 | 0);
              i = m;
              return
          }

          function yd(a, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              q = q | 0;
              r = r | 0;
              var s = 0, t = 0, u = 0;
              u = i;
              i = i + 48 | 0;
              s = u + 22 | 0;
              t = u;
              Ie(f, (a & -2 | 0) == 6 ? d : c, s);
              Ie(f, e, t);
              d = m;
              c = s;
              f = d + 22 | 0;
              do {
                  b[d >> 1] = b[c >> 1] | 0;
                  d = d + 2 | 0;
                  c = c + 2 | 0;
              } while ((d | 0) < (f | 0));
              He(g, m, o, 40, l, 0);
              He(t, o, o, 40, l, 0);
              Be(g, h, q, 40);
              d = n;
              c = q;
              f = d + 80 | 0;
              do {
                  b[d >> 1] = b[c >> 1] | 0;
                  d = d + 2 | 0;
                  c = c + 2 | 0;
              } while ((d | 0) < (f | 0));
              He(g, n, r, 40, j, 0);
              Be(s, r, p, 40);
              He(t, p, p, 40, k, 0);
              i = u;
              return
          }

          function zd(a, c, d, f, g, h, i, j, k, l, m, n, o, p, q, r, s) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              m = m | 0;
              n = n | 0;
              o = o | 0;
              p = p | 0;
              q = q | 0;
              r = r | 0;
              s = s | 0;
              var t = 0, u = 0, v = 0, w = 0, x = 0;
              if ((c | 0) == 7) {
                  v = 11;
                  c = f << 16 >> 16 >>> 1 & 65535;
                  t = 2;
              } else {
                  v = 13;
                  c = f;
                  t = 1;
              }
              b[r >> 1] = f << 16 >> 16 < 13017 ? f : 13017;
              u = d << 16 >> 16;
              q = q + (u << 1) | 0;
              r = c << 16 >> 16;
              g = g << 16 >> 16;
              d = 20;
              c = k;
              s = q;
              while (1) {
                  k = s + 2 | 0;
                  x = Z(b[s >> 1] | 0, r) | 0;
                  w = Z(b[k >> 1] | 0, r) | 0;
                  x = (Z(b[c >> 1] | 0, g) | 0) + x << 1;
                  w = (Z(b[c + 2 >> 1] | 0, g) | 0) + w << 1 << t;
                  b[s >> 1] = ((x << t) + 32768 | 0) >>> 16;
                  b[k >> 1] = (w + 32768 | 0) >>> 16;
                  d = d + -1 << 16 >> 16;
                  if (!(d << 16 >> 16)) break; else {
                      c = c + 4 | 0;
                      s = s + 4 | 0;
                  }
              }
              c = f << 16 >> 16;
              He(h, q, i + (u << 1) | 0, 40, n, 1);
              d = 30;
              s = 0;
              while (1) {
                  w = d + u | 0;
                  b[o + (s << 1) >> 1] = (e[a + (w << 1) >> 1] | 0) - (e[i + (w << 1) >> 1] | 0);
                  w = Z(b[l + (d << 1) >> 1] | 0, c) | 0;
                  x = (Z(b[m + (d << 1) >> 1] | 0, g) | 0) >> v;
                  b[p + (s << 1) >> 1] = (e[j + (d << 1) >> 1] | 0) - (w >>> 14) - x;
                  s = s + 1 | 0;
                  if ((s | 0) == 10) break; else d = d + 1 | 0;
              }
              return
          }

          function Ad(a) {
              a = a | 0;
              var d = 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              c[a >> 2] = 0;
              d = Je(16) | 0;
              if (!d) {
                  a = -1;
                  return a | 0
              }
              ;b[d >> 1] = 0;
              b[d + 2 >> 1] = 0;
              b[d + 4 >> 1] = 0;
              b[d + 6 >> 1] = 0;
              b[d + 8 >> 1] = 0;
              b[d + 10 >> 1] = 0;
              b[d + 12 >> 1] = 0;
              b[d + 14 >> 1] = 0;
              c[a >> 2] = d;
              a = 0;
              return a | 0
          }

          function Bd(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              ;b[a >> 1] = 0;
              b[a + 2 >> 1] = 0;
              b[a + 4 >> 1] = 0;
              b[a + 6 >> 1] = 0;
              b[a + 8 >> 1] = 0;
              b[a + 10 >> 1] = 0;
              b[a + 12 >> 1] = 0;
              b[a + 14 >> 1] = 0;
              a = 0;
              return a | 0
          }

          function Cd(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function Dd(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var f = 0, g = 0, h = 0, i = 0;
              f = e[c + 6 >> 1] | 0;
              d = e[c + 8 >> 1] | 0;
              g = f - d | 0;
              g = (g & 65535 | 0) != 32767 ? g & 65535 : 32767;
              h = e[c + 10 >> 1] | 0;
              d = d - h | 0;
              g = (d << 16 >> 16 | 0) < (g << 16 >> 16 | 0) ? d & 65535 : g;
              d = e[c + 12 >> 1] | 0;
              h = h - d | 0;
              g = (h << 16 >> 16 | 0) < (g << 16 >> 16 | 0) ? h & 65535 : g;
              h = e[c + 14 >> 1] | 0;
              d = d - h | 0;
              g = (d << 16 >> 16 | 0) < (g << 16 >> 16 | 0) ? d & 65535 : g;
              h = h - (e[c + 16 >> 1] | 0) | 0;
              d = b[c + 2 >> 1] | 0;
              i = e[c + 4 >> 1] | 0;
              c = (d & 65535) - i | 0;
              c = (c & 65535 | 0) != 32767 ? c & 65535 : 32767;
              f = i - f | 0;
              if (((h << 16 >> 16 | 0) < (g << 16 >> 16 | 0) ? h & 65535 : g) << 16 >> 16 < 1500 ? 1 : (((f << 16 >> 16 | 0) < (c << 16 >> 16 | 0) ? f & 65535 : c) << 16 >> 16 | 0) < ((d << 16 >> 16 > 32e3 ? 600 : d << 16 >> 16 > 30500 ? 800 : 1100) | 0)) {
                  h = (b[a >> 1] | 0) + 1 << 16 >> 16;
                  i = h << 16 >> 16 > 11;
                  b[a >> 1] = i ? 12 : h;
                  return i & 1 | 0
              } else {
                  b[a >> 1] = 0;
                  return 0
              }
              return 0
          }

          function Ed(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              c = De(c, 3, d) | 0;
              c = Rd(c, b[a + 2 >> 1] | 0, d) | 0;
              c = Rd(c, b[a + 4 >> 1] | 0, d) | 0;
              c = Rd(c, b[a + 6 >> 1] | 0, d) | 0;
              c = Rd(c, b[a + 8 >> 1] | 0, d) | 0;
              c = Rd(c, b[a + 10 >> 1] | 0, d) | 0;
              c = Rd(c, b[a + 12 >> 1] | 0, d) | 0;
              return (Rd(c, b[a + 14 >> 1] | 0, d) | 0) << 16 >> 16 > 15565 | 0
          }

          function Fd(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var e = 0;
              d = a + 4 | 0;
              b[a + 2 >> 1] = b[d >> 1] | 0;
              e = a + 6 | 0;
              b[d >> 1] = b[e >> 1] | 0;
              d = a + 8 | 0;
              b[e >> 1] = b[d >> 1] | 0;
              e = a + 10 | 0;
              b[d >> 1] = b[e >> 1] | 0;
              d = a + 12 | 0;
              b[e >> 1] = b[d >> 1] | 0;
              a = a + 14 | 0;
              b[d >> 1] = b[a >> 1] | 0;
              b[a >> 1] = c << 16 >> 16 >>> 3;
              return
          }

          function Gd(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0;
              if (!a) {
                  f = -1;
                  return f | 0
              }
              c[a >> 2] = 0;
              d = Je(128) | 0;
              if (!d) {
                  f = -1;
                  return f | 0
              }
              e = d + 72 | 0;
              f = e + 46 | 0;
              do {
                  b[e >> 1] = 0;
                  e = e + 2 | 0;
              } while ((e | 0) < (f | 0));
              b[d >> 1] = 150;
              b[d + 36 >> 1] = 150;
              b[d + 18 >> 1] = 150;
              b[d + 54 >> 1] = 0;
              b[d + 2 >> 1] = 150;
              b[d + 38 >> 1] = 150;
              b[d + 20 >> 1] = 150;
              b[d + 56 >> 1] = 0;
              b[d + 4 >> 1] = 150;
              b[d + 40 >> 1] = 150;
              b[d + 22 >> 1] = 150;
              b[d + 58 >> 1] = 0;
              b[d + 6 >> 1] = 150;
              b[d + 42 >> 1] = 150;
              b[d + 24 >> 1] = 150;
              b[d + 60 >> 1] = 0;
              b[d + 8 >> 1] = 150;
              b[d + 44 >> 1] = 150;
              b[d + 26 >> 1] = 150;
              b[d + 62 >> 1] = 0;
              b[d + 10 >> 1] = 150;
              b[d + 46 >> 1] = 150;
              b[d + 28 >> 1] = 150;
              b[d + 64 >> 1] = 0;
              b[d + 12 >> 1] = 150;
              b[d + 48 >> 1] = 150;
              b[d + 30 >> 1] = 150;
              b[d + 66 >> 1] = 0;
              b[d + 14 >> 1] = 150;
              b[d + 50 >> 1] = 150;
              b[d + 32 >> 1] = 150;
              b[d + 68 >> 1] = 0;
              b[d + 16 >> 1] = 150;
              b[d + 52 >> 1] = 150;
              b[d + 34 >> 1] = 150;
              b[d + 70 >> 1] = 0;
              b[d + 118 >> 1] = 13106;
              b[d + 120 >> 1] = 0;
              b[d + 122 >> 1] = 0;
              b[d + 124 >> 1] = 0;
              b[d + 126 >> 1] = 13106;
              c[a >> 2] = d;
              f = 0;
              return f | 0
          }

          function Hd(a) {
              a = a | 0;
              var c = 0, d = 0;
              if (!a) {
                  d = -1;
                  return d | 0
              }
              c = a + 72 | 0;
              d = c + 46 | 0;
              do {
                  b[c >> 1] = 0;
                  c = c + 2 | 0;
              } while ((c | 0) < (d | 0));
              b[a >> 1] = 150;
              b[a + 36 >> 1] = 150;
              b[a + 18 >> 1] = 150;
              b[a + 54 >> 1] = 0;
              b[a + 2 >> 1] = 150;
              b[a + 38 >> 1] = 150;
              b[a + 20 >> 1] = 150;
              b[a + 56 >> 1] = 0;
              b[a + 4 >> 1] = 150;
              b[a + 40 >> 1] = 150;
              b[a + 22 >> 1] = 150;
              b[a + 58 >> 1] = 0;
              b[a + 6 >> 1] = 150;
              b[a + 42 >> 1] = 150;
              b[a + 24 >> 1] = 150;
              b[a + 60 >> 1] = 0;
              b[a + 8 >> 1] = 150;
              b[a + 44 >> 1] = 150;
              b[a + 26 >> 1] = 150;
              b[a + 62 >> 1] = 0;
              b[a + 10 >> 1] = 150;
              b[a + 46 >> 1] = 150;
              b[a + 28 >> 1] = 150;
              b[a + 64 >> 1] = 0;
              b[a + 12 >> 1] = 150;
              b[a + 48 >> 1] = 150;
              b[a + 30 >> 1] = 150;
              b[a + 66 >> 1] = 0;
              b[a + 14 >> 1] = 150;
              b[a + 50 >> 1] = 150;
              b[a + 32 >> 1] = 150;
              b[a + 68 >> 1] = 0;
              b[a + 16 >> 1] = 150;
              b[a + 52 >> 1] = 150;
              b[a + 34 >> 1] = 150;
              b[a + 70 >> 1] = 0;
              b[a + 118 >> 1] = 13106;
              b[a + 120 >> 1] = 0;
              b[a + 122 >> 1] = 0;
              b[a + 124 >> 1] = 0;
              b[a + 126 >> 1] = 13106;
              d = 0;
              return d | 0
          }

          function Id(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function Jd(a, c) {
              a = a | 0;
              c = c | 0;
              b[a + 118 >> 1] = c;
              return
          }

          function Kd(a, d, f, g) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              var h = 0;
              f = Ce(f, g) | 0;
              if (f << 16 >> 16 <= 0) return;
              f = f << 16 >> 16;
              if ((f * 21298 | 0) == 1073741824) {
                  c[g >> 2] = 1;
                  h = 2147483647;
              } else h = f * 42596 | 0;
              f = d - h | 0;
              if (((f ^ d) & (h ^ d) | 0) < 0) {
                  c[g >> 2] = 1;
                  f = (d >>> 31) + 2147483647 | 0;
              }
              if ((f | 0) <= 0) return;
              a = a + 104 | 0;
              b[a >> 1] = e[a >> 1] | 0 | 16384;
              return
          }

          function Ld(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var e = 0;
              a = a + 104 | 0;
              e = De(b[a >> 1] | 0, 1, d) | 0;
              b[a >> 1] = e;
              if (!(c << 16 >> 16)) return;
              b[a >> 1] = (De(e, 1, d) | 0) & 65535 | 8192;
              return
          }

          function Md(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var f = 0, g = 0, h = 0;
              g = a + 112 | 0;
              f = Ge(b[g >> 1] | 0, b[c >> 1] | 0, d) | 0;
              f = (f & 65535) - ((f & 65535) >>> 15 & 65535) | 0;
              f = ((f << 16 >> 31 ^ f) & 65535) << 16 >> 16 < 4;
              h = b[c >> 1] | 0;
              b[g >> 1] = h;
              c = c + 2 | 0;
              h = Ge(h, b[c >> 1] | 0, d) | 0;
              h = (h & 65535) - ((h & 65535) >>> 15 & 65535) | 0;
              f = ((h << 16 >> 31 ^ h) & 65535) << 16 >> 16 < 4 ? (f ? 2 : 1) : f & 1;
              b[g >> 1] = b[c >> 1] | 0;
              g = a + 102 | 0;
              b[g >> 1] = De(b[g >> 1] | 0, 1, d) | 0;
              c = a + 110 | 0;
              if ((Rd(b[c >> 1] | 0, f, d) | 0) << 16 >> 16 <= 3) {
                  b[c >> 1] = f;
                  return
              }
              b[g >> 1] = e[g >> 1] | 0 | 16384;
              b[c >> 1] = f;
              return
          }

          function Nd(a, d, f) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0,
                  w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0;
              D = i;
              i = i + 352 | 0;
              n = D + 24 | 0;
              B = D;
              k = 0;
              h = 0;
              do {
                  g = b[d + (k + -40 << 1) >> 1] | 0;
                  g = Z(g, g) | 0;
                  if ((g | 0) != 1073741824) {
                      j = (g << 1) + h | 0;
                      if ((g ^ h | 0) > 0 & (j ^ h | 0) < 0) {
                          c[f >> 2] = 1;
                          h = (h >>> 31) + 2147483647 | 0;
                      } else h = j;
                  } else {
                      c[f >> 2] = 1;
                      h = 2147483647;
                  }
                  k = k + 1 | 0;
              } while ((k | 0) != 160);
              o = h;
              if ((343039 - o & o | 0) < 0) {
                  c[f >> 2] = 1;
                  h = (o >>> 31) + 2147483647 | 0;
              } else h = o + -343040 | 0;
              if ((h | 0) < 0) {
                  A = a + 102 | 0;
                  b[A >> 1] = e[A >> 1] & 16383;
              }
              m = o + -15e3 | 0;
              p = (14999 - o & o | 0) < 0;
              if (p) {
                  c[f >> 2] = 1;
                  j = (o >>> 31) + 2147483647 | 0;
              } else j = m;
              if ((j | 0) < 0) {
                  A = a + 108 | 0;
                  b[A >> 1] = e[A >> 1] & 16383;
              }
              g = a + 72 | 0;
              l = a + 74 | 0;
              j = b[g >> 1] | 0;
              k = b[l >> 1] | 0;
              h = 0;
              do {
                  A = h << 2;
                  y = Ge((b[d + (A << 1) >> 1] | 0) >>> 2 & 65535, ((j << 16 >> 16) * 21955 | 0) >>> 15 & 65535, f) | 0;
                  v = ((y << 16 >> 16) * 21955 | 0) >>> 15 & 65535;
                  u = Rd(j, v, f) | 0;
                  x = A | 1;
                  z = Ge((b[d + (x << 1) >> 1] | 0) >>> 2 & 65535, ((k << 16 >> 16) * 6390 | 0) >>> 15 & 65535, f) | 0;
                  w = ((z << 16 >> 16) * 6390 | 0) >>> 15 & 65535;
                  j = Rd(k, w, f) | 0;
                  b[n + (A << 1) >> 1] = Rd(u, j, f) | 0;
                  b[n + (x << 1) >> 1] = Ge(u, j, f) | 0;
                  x = A | 2;
                  j = Ge((b[d + (x << 1) >> 1] | 0) >>> 2 & 65535, v, f) | 0;
                  y = Rd(y, ((j << 16 >> 16) * 21955 | 0) >>> 15 & 65535, f) | 0;
                  A = A | 3;
                  k = Ge((b[d + (A << 1) >> 1] | 0) >>> 2 & 65535, w, f) | 0;
                  z = Rd(z, ((k << 16 >> 16) * 6390 | 0) >>> 15 & 65535, f) | 0;
                  b[n + (x << 1) >> 1] = Rd(y, z, f) | 0;
                  b[n + (A << 1) >> 1] = Ge(y, z, f) | 0;
                  h = h + 1 | 0;
              } while ((h | 0) != 40);
              b[g >> 1] = j;
              b[l >> 1] = k;
              k = a + 76 | 0;
              j = a + 80 | 0;
              h = 0;
              do {
                  A = h << 2;
                  Od(n + (A << 1) | 0, n + ((A | 2) << 1) | 0, k, f);
                  Od(n + ((A | 1) << 1) | 0, n + ((A | 3) << 1) | 0, j, f);
                  h = h + 1 | 0;
              } while ((h | 0) != 40);
              k = a + 84 | 0;
              j = a + 86 | 0;
              h = a + 92 | 0;
              g = 0;
              do {
                  A = g << 3;
                  Pd(n + (A << 1) | 0, n + ((A | 4) << 1) | 0, k, f);
                  Pd(n + ((A | 2) << 1) | 0, n + ((A | 6) << 1) | 0, j, f);
                  Pd(n + ((A | 3) << 1) | 0, n + ((A | 7) << 1) | 0, h, f);
                  g = g + 1 | 0;
              } while ((g | 0) != 20);
              k = a + 88 | 0;
              j = a + 90 | 0;
              h = 0;
              do {
                  A = h << 4;
                  Pd(n + (A << 1) | 0, n + ((A | 8) << 1) | 0, k, f);
                  Pd(n + ((A | 4) << 1) | 0, n + ((A | 12) << 1) | 0, j, f);
                  h = h + 1 | 0;
              } while ((h | 0) != 10);
              t = Qd(n, a + 70 | 0, 32, 40, 4, 1, 15, f) | 0;
              b[B + 16 >> 1] = t;
              u = Qd(n, a + 68 | 0, 16, 20, 8, 7, 16, f) | 0;
              b[B + 14 >> 1] = u;
              v = Qd(n, a + 66 | 0, 16, 20, 8, 3, 16, f) | 0;
              b[B + 12 >> 1] = v;
              w = Qd(n, a + 64 | 0, 16, 20, 8, 2, 16, f) | 0;
              b[B + 10 >> 1] = w;
              x = Qd(n, a + 62 | 0, 16, 20, 8, 6, 16, f) | 0;
              b[B + 8 >> 1] = x;
              y = Qd(n, a + 60 | 0, 8, 10, 16, 4, 16, f) | 0;
              b[B + 6 >> 1] = y;
              z = Qd(n, a + 58 | 0, 8, 10, 16, 12, 16, f) | 0;
              b[B + 4 >> 1] = z;
              A = Qd(n, a + 56 | 0, 8, 10, 16, 8, 16, f) | 0;
              b[B + 2 >> 1] = A;
              s = Qd(n, a + 54 | 0, 8, 10, 16, 0, 16, f) | 0;
              b[B >> 1] = s;
              k = 0;
              g = 0;
              do {
                  j = a + (g << 1) | 0;
                  d = qe(b[j >> 1] | 0) | 0;
                  j = b[j >> 1] | 0;
                  h = d << 16 >> 16;
                  if (d << 16 >> 16 < 0) {
                      l = 0 - h << 16;
                      if ((l | 0) < 983040) l = j << 16 >> 16 >> (l >> 16) & 65535; else l = 0;
                  } else {
                      l = j << 16 >> 16;
                      j = l << h;
                      if ((j << 16 >> 16 >> h | 0) == (l | 0)) l = j & 65535; else l = (l >>> 15 ^ 32767) & 65535;
                  }
                  j = Td(De(b[B + (g << 1) >> 1] | 0, 1, f) | 0, l) | 0;
                  r = Ge(d, 5, f) | 0;
                  h = r << 16 >> 16;
                  if (r << 16 >> 16 < 0) {
                      l = 0 - h << 16;
                      if ((l | 0) < 983040) l = j << 16 >> 16 >> (l >> 16); else l = 0;
                  } else {
                      j = j << 16 >> 16;
                      l = j << h;
                      if ((l << 16 >> 16 >> h | 0) != (j | 0)) l = j >>> 15 ^ 32767;
                  }
                  l = l << 16 >> 16;
                  l = Z(l, l) | 0;
                  if ((l | 0) != 1073741824) {
                      j = (l << 1) + k | 0;
                      if ((l ^ k | 0) > 0 & (j ^ k | 0) < 0) {
                          c[f >> 2] = 1;
                          k = (k >>> 31) + 2147483647 | 0;
                      } else k = j;
                  } else {
                      c[f >> 2] = 1;
                      k = 2147483647;
                  }
                  g = g + 1 | 0;
              } while ((g | 0) != 9);
              r = k << 6;
              k = (((r >> 6 | 0) == (k | 0) ? r : k >> 31 ^ 2147418112) >> 16) * 3641 >> 15;
              if ((k | 0) > 32767) {
                  c[f >> 2] = 1;
                  k = 32767;
              }
              r = b[a >> 1] | 0;
              l = r << 16 >> 16;
              q = b[a + 2 >> 1] | 0;
              j = (q << 16 >> 16) + l | 0;
              if ((q ^ r) << 16 >> 16 > -1 & (j ^ l | 0) < 0) {
                  c[f >> 2] = 1;
                  j = (l >>> 31) + 2147483647 | 0;
              }
              r = b[a + 4 >> 1] | 0;
              l = r + j | 0;
              if ((r ^ j | 0) > -1 & (l ^ j | 0) < 0) {
                  c[f >> 2] = 1;
                  l = (j >>> 31) + 2147483647 | 0;
              }
              r = b[a + 6 >> 1] | 0;
              j = r + l | 0;
              if ((r ^ l | 0) > -1 & (j ^ l | 0) < 0) {
                  c[f >> 2] = 1;
                  j = (l >>> 31) + 2147483647 | 0;
              }
              r = b[a + 8 >> 1] | 0;
              l = r + j | 0;
              if ((r ^ j | 0) > -1 & (l ^ j | 0) < 0) {
                  c[f >> 2] = 1;
                  l = (j >>> 31) + 2147483647 | 0;
              }
              r = b[a + 10 >> 1] | 0;
              j = r + l | 0;
              if ((r ^ l | 0) > -1 & (j ^ l | 0) < 0) {
                  c[f >> 2] = 1;
                  j = (l >>> 31) + 2147483647 | 0;
              }
              r = b[a + 12 >> 1] | 0;
              l = r + j | 0;
              if ((r ^ j | 0) > -1 & (l ^ j | 0) < 0) {
                  c[f >> 2] = 1;
                  l = (j >>> 31) + 2147483647 | 0;
              }
              r = b[a + 14 >> 1] | 0;
              j = r + l | 0;
              if ((r ^ l | 0) > -1 & (j ^ l | 0) < 0) {
                  c[f >> 2] = 1;
                  j = (l >>> 31) + 2147483647 | 0;
              }
              r = b[a + 16 >> 1] | 0;
              l = r + j | 0;
              if ((r ^ j | 0) > -1 & (l ^ j | 0) < 0) {
                  c[f >> 2] = 1;
                  l = (j >>> 31) + 2147483647 | 0;
              }
              q = l << 13;
              q = ((q >> 13 | 0) == (l | 0) ? q : l >> 31 ^ 2147418112) >>> 16 & 65535;
              l = (Z((Ge(q, 0, f) | 0) << 16 >> 16, -2808) | 0) >> 15;
              if ((l | 0) > 32767) {
                  c[f >> 2] = 1;
                  l = 32767;
              }
              n = Rd(l & 65535, 1260, f) | 0;
              r = a + 100 | 0;
              l = De(b[r >> 1] | 0, 1, f) | 0;
              if ((k << 16 >> 16 | 0) > ((n << 16 >> 16 < 720 ? 720 : n << 16 >> 16) | 0)) l = (l & 65535 | 16384) & 65535;
              b[r >> 1] = l;
              if (p) {
                  c[f >> 2] = 1;
                  m = (o >>> 31) + 2147483647 | 0;
              }
              h = b[a + 118 >> 1] | 0;
              p = a + 126 | 0;
              l = b[p >> 1] | 0;
              g = l << 16 >> 16 < 19660;
              g = h << 16 >> 16 < l << 16 >> 16 ? (g ? 2621 : 6553) : g ? 2621 : 655;
              d = l & 65535;
              k = d << 16;
              l = Z(g, l << 16 >> 16) | 0;
              if ((l | 0) == 1073741824) {
                  c[f >> 2] = 1;
                  l = 2147483647;
              } else l = l << 1;
              j = k - l | 0;
              if (((j ^ k) & (l ^ k) | 0) < 0) {
                  c[f >> 2] = 1;
                  j = (d >>> 15) + 2147483647 | 0;
              }
              k = Z(g, h << 16 >> 16) | 0;
              do if ((k | 0) == 1073741824) {
                  c[f >> 2] = 1;
                  l = 2147483647;
              } else {
                  l = j + (k << 1) | 0;
                  if (!((j ^ k | 0) > 0 & (l ^ j | 0) < 0)) break;
                  c[f >> 2] = 1;
                  l = (j >>> 31) + 2147483647 | 0;
              } while (0);
              d = Ce(l, f) | 0;
              o = (m | 0) > -1;
              b[p >> 1] = o ? (d << 16 >> 16 < 13106 ? 13106 : d) : 13106;
              d = a + 106 | 0;
              b[d >> 1] = De(b[d >> 1] | 0, 1, f) | 0;
              j = a + 108 | 0;
              l = De(b[j >> 1] | 0, 1, f) | 0;
              b[j >> 1] = l;
              k = b[p >> 1] | 0;
              a:do if (o) {
                  do if (k << 16 >> 16 > 19660) b[d >> 1] = e[d >> 1] | 16384; else {
                      if (k << 16 >> 16 > 16383) break;
                      k = a + 116 | 0;
                      l = 0;
                      break a
                  } while (0);
                  b[j >> 1] = l & 65535 | 16384;
                  C = 62;
              } else C = 62; while (0);
              do if ((C | 0) == 62) {
                  l = a + 116 | 0;
                  if (k << 16 >> 16 <= 22936) {
                      k = l;
                      l = 0;
                      break
                  }
                  k = l;
                  l = Rd(b[l >> 1] | 0, 1, f) | 0;
              } while (0);
              b[k >> 1] = l;
              if ((b[d >> 1] & 32640) != 32640) {
                  n = (b[j >> 1] & 32767) == 32767;
                  b[a + 122 >> 1] = n & 1;
                  if (n) C = 67;
              } else {
                  b[a + 122 >> 1] = 1;
                  C = 67;
              }
              do if ((C | 0) == 67) {
                  k = a + 98 | 0;
                  if ((b[k >> 1] | 0) >= 5) break;
                  b[k >> 1] = 5;
              } while (0);
              n = a + 102 | 0;
              do if ((b[n >> 1] & 24576) == 24576) C = 71; else {
                  if ((b[a + 104 >> 1] & 31744) == 31744) {
                      C = 71;
                      break
                  }
                  if (!(b[r >> 1] & 32640)) {
                      b[a + 98 >> 1] = 20;
                      j = 32767;
                      break
                  } else {
                      j = s;
                      k = 0;
                      l = 0;
                  }
                  while (1) {
                      g = b[a + 18 + (k << 1) >> 1] | 0;
                      h = j << 16 >> 16 > g << 16 >> 16;
                      m = h ? j : g;
                      j = h ? g : j;
                      m = m << 16 >> 16 < 184 ? 184 : m;
                      j = j << 16 >> 16 < 184 ? 184 : j;
                      g = qe(j) | 0;
                      h = g << 16 >> 16;
                      do if (g << 16 >> 16 < 0) {
                          d = 0 - h << 16;
                          if ((d | 0) >= 983040) {
                              d = 0;
                              break
                          }
                          d = j << 16 >> 16 >> (d >> 16) & 65535;
                      } else {
                          d = j << 16 >> 16;
                          j = d << h;
                          if ((j << 16 >> 16 >> h | 0) == (d | 0)) {
                              d = j & 65535;
                              break
                          }
                          d = (d >>> 15 ^ 32767) & 65535;
                      } while (0);
                      m = Td(De(m, 1, f) | 0, d) | 0;
                      l = Rd(l, De(m, Ge(8, g, f) | 0, f) | 0, f) | 0;
                      k = k + 1 | 0;
                      if ((k | 0) == 9) break;
                      j = b[B + (k << 1) >> 1] | 0;
                  }
                  if (l << 16 >> 16 > 1e3) {
                      b[a + 98 >> 1] = 20;
                      j = 32767;
                      break
                  }
                  j = b[r >> 1] | 0;
                  k = a + 98 | 0;
                  l = b[k >> 1] | 0;
                  do if (!(j & 16384)) C = 86; else {
                      if (!(l << 16 >> 16)) {
                          l = j;
                          break
                      }
                      l = Ge(l, 1, f) | 0;
                      b[k >> 1] = l;
                      C = 86;
                  } while (0);
                  if ((C | 0) == 86) {
                      if (l << 16 >> 16 == 20) {
                          j = 32767;
                          break
                      }
                      l = b[r >> 1] | 0;
                  }
                  j = (l & 16384) == 0 ? 16383 : 3276;
              } while (0);
              if ((C | 0) == 71) {
                  b[a + 98 >> 1] = 20;
                  j = 32767;
              }
              k = s;
              l = 0;
              while (1) {
                  m = a + 18 + (l << 1) | 0;
                  d = oe(j, Ge(k, b[m >> 1] | 0, f) | 0, f) | 0;
                  b[m >> 1] = Rd(b[m >> 1] | 0, d, f) | 0;
                  l = l + 1 | 0;
                  if ((l | 0) == 9) break;
                  k = b[B + (l << 1) >> 1] | 0;
              }
              do if (!(b[r >> 1] & 30720)) {
                  if (b[n >> 1] & 30720) {
                      C = 95;
                      break
                  }
                  if (!(b[a + 114 >> 1] | 0)) {
                      h = 2097;
                      g = 1638;
                      d = 2;
                  } else C = 95;
              } else C = 95; while (0);
              do if ((C | 0) == 95) {
                  if ((b[a + 98 >> 1] | 0) == 0 ? (b[a + 114 >> 1] | 0) == 0 : 0) {
                      h = 1867;
                      g = 491;
                      d = 2;
                      break
                  }
                  h = 1638;
                  g = 0;
                  d = 0;
              } while (0);
              j = 0;
              do {
                  k = a + (j << 1) | 0;
                  l = Ge(b[a + 36 + (j << 1) >> 1] | 0, b[k >> 1] | 0, f) | 0;
                  if (l << 16 >> 16 < 0) {
                      l = oe(h, l, f) | 0;
                      l = Rd(-2, Rd(b[k >> 1] | 0, l, f) | 0, f) | 0;
                      l = l << 16 >> 16 < 40 ? 40 : l;
                  } else {
                      l = oe(g, l, f) | 0;
                      l = Rd(d, Rd(b[k >> 1] | 0, l, f) | 0, f) | 0;
                      l = l << 16 >> 16 > 16e3 ? 16e3 : l;
                  }
                  b[k >> 1] = l;
                  j = j + 1 | 0;
              } while ((j | 0) != 9);
              b[a + 36 >> 1] = s;
              b[a + 38 >> 1] = A;
              b[a + 40 >> 1] = z;
              b[a + 42 >> 1] = y;
              b[a + 44 >> 1] = x;
              b[a + 46 >> 1] = w;
              b[a + 48 >> 1] = v;
              b[a + 50 >> 1] = u;
              b[a + 52 >> 1] = t;
              k = q << 16 >> 16 > 100;
              j = k ? 7 : 4;
              k = k ? 4 : 5;
              if (!o) {
                  b[a + 94 >> 1] = 0;
                  b[a + 96 >> 1] = 0;
                  b[a + 114 >> 1] = 0;
                  b[a + 116 >> 1] = 0;
                  f = 0;
                  a = a + 120 | 0;
                  b[a >> 1] = f;
                  i = D;
                  return f | 0
              }
              h = a + 114 | 0;
              g = b[h >> 1] | 0;
              do if ((b[a + 116 >> 1] | 0) <= 100) {
                  if (g << 16 >> 16) break;
                  g = b[r >> 1] | 0;
                  do if (!(g & 16368)) {
                      if ((b[p >> 1] | 0) > 21298) g = 1; else break;
                      a = a + 120 | 0;
                      b[a >> 1] = g;
                      i = D;
                      return g | 0
                  } while (0);
                  h = a + 94 | 0;
                  if (!(g & 16384)) {
                      b[h >> 1] = 0;
                      g = a + 96 | 0;
                      h = b[g >> 1] | 0;
                      if (h << 16 >> 16 <= 0) {
                          f = 0;
                          a = a + 120 | 0;
                          b[a >> 1] = f;
                          i = D;
                          return f | 0
                      }
                      b[g >> 1] = Ge(h, 1, f) | 0;
                      f = 1;
                      a = a + 120 | 0;
                      b[a >> 1] = f;
                      i = D;
                      return f | 0
                  } else {
                      f = Rd(b[h >> 1] | 0, 1, f) | 0;
                      b[h >> 1] = f;
                      if ((f << 16 >> 16 | 0) < (k | 0)) {
                          f = 1;
                          a = a + 120 | 0;
                          b[a >> 1] = f;
                          i = D;
                          return f | 0
                      }
                      b[a + 96 >> 1] = j;
                      f = 1;
                      a = a + 120 | 0;
                      b[a >> 1] = f;
                      i = D;
                      return f | 0
                  }
              } else {
                  if (g << 16 >> 16 >= 250) break;
                  b[h >> 1] = 250;
                  g = 250;
              } while (0);
              b[a + 94 >> 1] = 4;
              b[h >> 1] = Ge(g, 1, f) | 0;
              f = 1;
              a = a + 120 | 0;
              b[a >> 1] = f;
              i = D;
              return f | 0
          }

          function Od(a, d, e, f) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0;
              g = (b[e >> 1] | 0) * 21955 >> 15;
              if ((g | 0) > 32767) {
                  c[f >> 2] = 1;
                  g = 32767;
              }
              h = Ge(b[a >> 1] | 0, g & 65535, f) | 0;
              g = (h << 16 >> 16) * 21955 >> 15;
              if ((g | 0) > 32767) {
                  c[f >> 2] = 1;
                  g = 32767;
              }
              i = Rd(b[e >> 1] | 0, g & 65535, f) | 0;
              b[e >> 1] = h;
              e = e + 2 | 0;
              g = (b[e >> 1] | 0) * 6390 >> 15;
              if ((g | 0) > 32767) {
                  c[f >> 2] = 1;
                  g = 32767;
              }
              h = Ge(b[d >> 1] | 0, g & 65535, f) | 0;
              g = (h << 16 >> 16) * 6390 >> 15;
              if ((g | 0) > 32767) {
                  c[f >> 2] = 1;
                  g = 32767;
              }
              g = Rd(b[e >> 1] | 0, g & 65535, f) | 0;
              b[e >> 1] = h;
              b[a >> 1] = De(Rd(i, g, f) | 0, 1, f) | 0;
              b[d >> 1] = De(Ge(i, g, f) | 0, 1, f) | 0;
              return
          }

          function Pd(a, d, e, f) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0;
              g = (b[e >> 1] | 0) * 13363 >> 15;
              if ((g | 0) > 32767) {
                  c[f >> 2] = 1;
                  g = 32767;
              }
              h = Ge(b[d >> 1] | 0, g & 65535, f) | 0;
              g = (h << 16 >> 16) * 13363 >> 15;
              if ((g | 0) > 32767) {
                  c[f >> 2] = 1;
                  g = 32767;
              }
              g = Rd(b[e >> 1] | 0, g & 65535, f) | 0;
              b[e >> 1] = h;
              b[d >> 1] = De(Ge(b[a >> 1] | 0, g, f) | 0, 1, f) | 0;
              b[a >> 1] = De(Rd(b[a >> 1] | 0, g, f) | 0, 1, f) | 0;
              return
          }

          function Qd(a, d, e, f, g, h, i, j) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              j = j | 0;
              var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0;
              if (e << 16 >> 16 < f << 16 >> 16) {
                  n = g << 16 >> 16;
                  k = h << 16 >> 16;
                  o = e << 16 >> 16;
                  l = 0;
                  do {
                      p = b[a + ((Z(o, n) | 0) + k << 1) >> 1] | 0;
                      p = (p & 65535) - ((p & 65535) >>> 15 & 65535) | 0;
                      p = (p << 16 >> 31 ^ p) << 16;
                      m = (p >> 15) + l | 0;
                      if ((p >> 16 ^ l | 0) > 0 & (m ^ l | 0) < 0) {
                          c[j >> 2] = 1;
                          l = (l >>> 31) + 2147483647 | 0;
                      } else l = m;
                      o = o + 1 | 0;
                  } while ((o & 65535) << 16 >> 16 != f << 16 >> 16);
                  o = l;
              } else o = 0;
              l = b[d >> 1] | 0;
              p = Ge(16, i, j) | 0;
              k = p << 16 >> 16;
              if (p << 16 >> 16 > 0) {
                  f = l << k;
                  if ((f >> k | 0) != (l | 0)) f = l >> 31 ^ 2147483647;
              } else {
                  k = 0 - k << 16;
                  if ((k | 0) < 2031616) f = l >> (k >> 16); else f = 0;
              }
              k = f + o | 0;
              if ((f ^ o | 0) > -1 & (k ^ o | 0) < 0) {
                  c[j >> 2] = 1;
                  k = (o >>> 31) + 2147483647 | 0;
              }
              p = i << 16 >> 16;
              i = i << 16 >> 16 > 0;
              if (i) {
                  f = o << p;
                  if ((f >> p | 0) != (o | 0)) f = o >> 31 ^ 2147483647;
              } else {
                  f = 0 - p << 16;
                  if ((f | 0) < 2031616) f = o >> (f >> 16); else f = 0;
              }
              b[d >> 1] = f >>> 16;
              if (e << 16 >> 16 > 0) {
                  n = g << 16 >> 16;
                  l = h << 16 >> 16;
                  m = 0;
                  do {
                      h = b[a + ((Z(m, n) | 0) + l << 1) >> 1] | 0;
                      h = (h & 65535) - ((h & 65535) >>> 15 & 65535) | 0;
                      h = (h << 16 >> 31 ^ h) << 16;
                      f = (h >> 15) + k | 0;
                      if ((h >> 16 ^ k | 0) > 0 & (f ^ k | 0) < 0) {
                          c[j >> 2] = 1;
                          k = (k >>> 31) + 2147483647 | 0;
                      } else k = f;
                      m = m + 1 | 0;
                  } while ((m & 65535) << 16 >> 16 != e << 16 >> 16)
              }
              if (i) {
                  f = k << p;
                  if ((f >> p | 0) == (k | 0)) {
                      j = f;
                      j = j >>> 16;
                      j = j & 65535;
                      return j | 0
                  }
                  j = k >> 31 ^ 2147483647;
                  j = j >>> 16;
                  j = j & 65535;
                  return j | 0
              } else {
                  f = 0 - p << 16;
                  if ((f | 0) >= 2031616) {
                      j = 0;
                      j = j >>> 16;
                      j = j & 65535;
                      return j | 0
                  }
                  j = k >> (f >> 16);
                  j = j >>> 16;
                  j = j & 65535;
                  return j | 0
              }
              return 0
          }

          function Rd(a, b, d) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              a = (b << 16 >> 16) + (a << 16 >> 16) | 0;
              if ((a | 0) <= 32767) {
                  if ((a | 0) < -32768) {
                      c[d >> 2] = 1;
                      a = -32768;
                  }
              } else {
                  c[d >> 2] = 1;
                  a = 32767;
              }
              return a & 65535 | 0
          }

          function Sd(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0,
                  v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0;
              y = i;
              i = i + 32 | 0;
              w = y + 12 | 0;
              x = y;
              b[w >> 1] = 1024;
              b[x >> 1] = 1024;
              k = b[a + 2 >> 1] | 0;
              h = b[a + 20 >> 1] | 0;
              e = ((h + k | 0) >>> 2) + 64512 | 0;
              b[w + 2 >> 1] = e;
              h = ((k - h | 0) >>> 2) + 1024 | 0;
              b[x + 2 >> 1] = h;
              k = b[a + 4 >> 1] | 0;
              f = b[a + 18 >> 1] | 0;
              e = ((f + k | 0) >>> 2) - e | 0;
              b[w + 4 >> 1] = e;
              h = ((k - f | 0) >>> 2) + h | 0;
              b[x + 4 >> 1] = h;
              f = b[a + 6 >> 1] | 0;
              k = b[a + 16 >> 1] | 0;
              e = ((k + f | 0) >>> 2) - e | 0;
              b[w + 6 >> 1] = e;
              h = ((f - k | 0) >>> 2) + h | 0;
              b[x + 6 >> 1] = h;
              k = b[a + 8 >> 1] | 0;
              f = b[a + 14 >> 1] | 0;
              e = ((f + k | 0) >>> 2) - e | 0;
              b[w + 8 >> 1] = e;
              h = ((k - f | 0) >>> 2) + h | 0;
              b[x + 8 >> 1] = h;
              f = b[a + 10 >> 1] | 0;
              k = b[a + 12 >> 1] | 0;
              e = ((k + f | 0) >>> 2) - e | 0;
              b[w + 10 >> 1] = e;
              b[x + 10 >> 1] = ((f - k | 0) >>> 2) + h;
              h = b[3454] | 0;
              k = h << 16 >> 16;
              a = b[w + 2 >> 1] | 0;
              f = (a << 16 >> 16 << 14) + (k << 10) | 0;
              s = f & -65536;
              f = (f >>> 1) - (f >> 16 << 15) << 16;
              v = (((Z(f >> 16, k) | 0) >> 15) + (Z(s >> 16, k) | 0) << 2) + -16777216 | 0;
              v = (b[w + 4 >> 1] << 14) + v | 0;
              j = v >> 16;
              v = (v >>> 1) - (j << 15) << 16;
              s = (((Z(v >> 16, k) | 0) >> 15) + (Z(j, k) | 0) << 2) - ((f >> 15) + s) | 0;
              s = (b[w + 6 >> 1] << 14) + s | 0;
              f = s >> 16;
              s = (s >>> 1) - (f << 15) << 16;
              j = (((Z(s >> 16, k) | 0) >> 15) + (Z(f, k) | 0) << 2) - ((v >> 15) + (j << 16)) | 0;
              j = (b[w + 8 >> 1] << 14) + j | 0;
              v = j >> 16;
              f = (e << 16 >> 3) + ((((Z((j >>> 1) - (v << 15) << 16 >> 16, k) | 0) >> 15) + (Z(v, k) | 0) << 1) - ((s >> 15) + (f << 16))) | 0;
              s = w + 4 | 0;
              k = w;
              v = 0;
              j = 0;
              e = 0;
              r = w + 10 | 0;
              f = (f + 33554432 | 0) >>> 0 < 67108863 ? f >>> 10 & 65535 : (f | 0) > 33554431 ? 32767 : -32768;
              a:while (1) {
                  t = a << 16 >> 16 << 14;
                  q = k + 6 | 0;
                  p = k + 8 | 0;
                  o = j << 16 >> 16;
                  while (1) {
                      if ((o | 0) >= 60) break a;
                      k = (o & 65535) + 1 << 16 >> 16;
                      l = b[6908 + (k << 16 >> 16 << 1) >> 1] | 0;
                      u = l << 16 >> 16;
                      j = t + (u << 10) | 0;
                      g = j & -65536;
                      j = (j >>> 1) - (j >> 16 << 15) << 16;
                      m = (((Z(j >> 16, u) | 0) >> 15) + (Z(g >> 16, u) | 0) << 2) + -16777216 | 0;
                      n = b[s >> 1] | 0;
                      m = (n << 16 >> 16 << 14) + m | 0;
                      B = m >> 16;
                      m = (m >>> 1) - (B << 15) << 16;
                      g = (((Z(m >> 16, u) | 0) >> 15) + (Z(B, u) | 0) << 2) - ((j >> 15) + g) | 0;
                      j = b[q >> 1] | 0;
                      g = (j << 16 >> 16 << 14) + g | 0;
                      a = g >> 16;
                      g = (g >>> 1) - (a << 15) << 16;
                      B = (((Z(g >> 16, u) | 0) >> 15) + (Z(a, u) | 0) << 2) - ((m >> 15) + (B << 16)) | 0;
                      m = b[p >> 1] | 0;
                      B = (m << 16 >> 16 << 14) + B | 0;
                      A = B >> 16;
                      a = (((Z((B >>> 1) - (A << 15) << 16 >> 16, u) | 0) >> 15) + (Z(A, u) | 0) << 1) - ((g >> 15) + (a << 16)) | 0;
                      g = b[r >> 1] | 0;
                      a = (g << 16 >> 16 << 13) + a | 0;
                      a = (a + 33554432 | 0) >>> 0 < 67108863 ? a >>> 10 & 65535 : (a | 0) > 33554431 ? 32767 : -32768;
                      if ((Z(a << 16 >> 16, f << 16 >> 16) | 0) < 1) {
                          u = k;
                          k = n;
                          break
                      } else {
                          o = o + 1 | 0;
                          h = l;
                          f = a;
                      }
                  }
                  s = g << 16 >> 16 << 13;
                  r = k << 16 >> 16 << 14;
                  n = j << 16 >> 16 << 14;
                  p = m << 16 >> 16 << 14;
                  g = l << 16 >> 16;
                  o = 4;
                  while (1) {
                      A = (h << 16 >> 16 >>> 1) + (g >>> 1) | 0;
                      g = A << 16;
                      q = g >> 16;
                      g = t + (g >> 6) | 0;
                      B = g & -65536;
                      g = (g >>> 1) - (g >> 16 << 15) << 16;
                      m = r + ((((Z(g >> 16, q) | 0) >> 15) + (Z(B >> 16, q) | 0) << 2) + -16777216) | 0;
                      k = m >> 16;
                      m = (m >>> 1) - (k << 15) << 16;
                      B = n + ((((Z(m >> 16, q) | 0) >> 15) + (Z(k, q) | 0) << 2) - ((g >> 15) + B)) | 0;
                      g = B >> 16;
                      B = (B >>> 1) - (g << 15) << 16;
                      k = p + ((((Z(B >> 16, q) | 0) >> 15) + (Z(g, q) | 0) << 2) - ((m >> 15) + (k << 16))) | 0;
                      m = k >> 16;
                      A = A & 65535;
                      g = s + ((((Z((k >>> 1) - (m << 15) << 16 >> 16, q) | 0) >> 15) + (Z(m, q) | 0) << 1) - ((B >> 15) + (g << 16))) | 0;
                      g = (g + 33554432 | 0) >>> 0 < 67108863 ? g >>> 10 & 65535 : (g | 0) > 33554431 ? 32767 : -32768;
                      B = (Z(g << 16 >> 16, a << 16 >> 16) | 0) < 1;
                      q = B ? l : A;
                      a = B ? a : g;
                      h = B ? A : h;
                      f = B ? g : f;
                      o = o + -1 << 16 >> 16;
                      g = q << 16 >> 16;
                      if (!(o << 16 >> 16)) {
                          l = g;
                          j = h;
                          h = q;
                          break
                      } else l = q;
                  }
                  k = e << 16 >> 16;
                  g = a << 16 >> 16;
                  a = (f & 65535) - g | 0;
                  f = a << 16;
                  if (f) {
                      B = (a & 65535) - (a >>> 15 & 1) | 0;
                      B = B << 16 >> 31 ^ B;
                      a = (qe(B & 65535) | 0) << 16 >> 16;
                      a = (Z((Td(16383, B << 16 >> 16 << a & 65535) | 0) << 16 >> 16, (j & 65535) - l << 16 >> 16) | 0) >> 19 - a;
                      if ((f | 0) < 0) a = 0 - (a << 16 >> 16) | 0;
                      h = l - ((Z(a << 16 >> 16, g) | 0) >>> 10) & 65535;
                  }
                  b[c + (k << 1) >> 1] = h;
                  f = v << 16 >> 16 == 0 ? x : w;
                  A = h << 16 >> 16;
                  a = b[f + 2 >> 1] | 0;
                  g = (a << 16 >> 16 << 14) + (A << 10) | 0;
                  B = g & -65536;
                  g = (g >>> 1) - (g >> 16 << 15) << 16;
                  t = (((Z(g >> 16, A) | 0) >> 15) + (Z(B >> 16, A) | 0) << 2) + -16777216 | 0;
                  t = (b[f + 4 >> 1] << 14) + t | 0;
                  s = t >> 16;
                  t = (t >>> 1) - (s << 15) << 16;
                  B = (((Z(t >> 16, A) | 0) >> 15) + (Z(s, A) | 0) << 2) - ((g >> 15) + B) | 0;
                  B = (b[f + 6 >> 1] << 14) + B | 0;
                  g = B >> 16;
                  B = (B >>> 1) - (g << 15) << 16;
                  s = (((Z(B >> 16, A) | 0) >> 15) + (Z(g, A) | 0) << 2) - ((t >> 15) + (s << 16)) | 0;
                  s = (b[f + 8 >> 1] << 14) + s | 0;
                  t = s >> 16;
                  e = e + 1 << 16 >> 16;
                  g = (((Z((s >>> 1) - (t << 15) << 16 >> 16, A) | 0) >> 15) + (Z(t, A) | 0) << 1) - ((B >> 15) + (g << 16)) | 0;
                  g = (b[f + 10 >> 1] << 13) + g | 0;
                  if (e << 16 >> 16 < 10) {
                      s = f + 4 | 0;
                      k = f;
                      v = v ^ 1;
                      j = u;
                      r = f + 10 | 0;
                      f = (g + 33554432 | 0) >>> 0 < 67108863 ? g >>> 10 & 65535 : (g | 0) > 33554431 ? 32767 : -32768;
                  } else {
                      z = 13;
                      break
                  }
              }
              if ((z | 0) == 13) {
                  i = y;
                  return
              }
              b[c >> 1] = b[d >> 1] | 0;
              b[c + 2 >> 1] = b[d + 2 >> 1] | 0;
              b[c + 4 >> 1] = b[d + 4 >> 1] | 0;
              b[c + 6 >> 1] = b[d + 6 >> 1] | 0;
              b[c + 8 >> 1] = b[d + 8 >> 1] | 0;
              b[c + 10 >> 1] = b[d + 10 >> 1] | 0;
              b[c + 12 >> 1] = b[d + 12 >> 1] | 0;
              b[c + 14 >> 1] = b[d + 14 >> 1] | 0;
              b[c + 16 >> 1] = b[d + 16 >> 1] | 0;
              b[c + 18 >> 1] = b[d + 18 >> 1] | 0;
              i = y;
              return
          }

          function Td(a, b) {
              a = a | 0;
              b = b | 0;
              var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0;
              e = b << 16 >> 16;
              if (a << 16 >> 16 < 1 ? 1 : a << 16 >> 16 > b << 16 >> 16) {
                  e = 0;
                  return e | 0
              }
              if (a << 16 >> 16 == b << 16 >> 16) {
                  e = 32767;
                  return e | 0
              }
              d = e << 1;
              c = e << 2;
              f = a << 16 >> 16 << 3;
              a = (f | 0) < (c | 0);
              f = f - (a ? 0 : c) | 0;
              a = a ? 0 : 4;
              g = (f | 0) < (d | 0);
              f = f - (g ? 0 : d) | 0;
              b = (f | 0) < (e | 0);
              a = (b & 1 | (g ? a : a | 2)) << 3 ^ 8;
              b = f - (b ? 0 : e) << 3;
              if ((b | 0) >= (c | 0)) {
                  b = b - c | 0;
                  a = a & 65528 | 4;
              }
              f = (b | 0) < (d | 0);
              g = b - (f ? 0 : d) | 0;
              b = (g | 0) < (e | 0);
              a = (b & 1 ^ 1 | (f ? a : a | 2)) << 16 >> 13;
              b = g - (b ? 0 : e) << 3;
              if ((b | 0) >= (c | 0)) {
                  b = b - c | 0;
                  a = a & 65528 | 4;
              }
              f = (b | 0) < (d | 0);
              g = b - (f ? 0 : d) | 0;
              b = (g | 0) < (e | 0);
              a = (b & 1 ^ 1 | (f ? a : a | 2)) << 16 >> 13;
              b = g - (b ? 0 : e) << 3;
              if ((b | 0) >= (c | 0)) {
                  b = b - c | 0;
                  a = a & 65528 | 4;
              }
              h = (b | 0) < (d | 0);
              f = b - (h ? 0 : d) | 0;
              g = (f | 0) < (e | 0);
              b = (g & 1 ^ 1 | (h ? a : a | 2)) << 16 >> 13;
              a = f - (g ? 0 : e) << 3;
              if ((a | 0) >= (c | 0)) {
                  a = a - c | 0;
                  b = b & 65528 | 4;
              }
              h = (a | 0) < (d | 0);
              h = ((a - (h ? 0 : d) | 0) >= (e | 0) | (h ? b : b | 2)) & 65535;
              return h | 0
          }

          function Ud(a) {
              a = a | 0;
              if (!a) {
                  a = -1;
                  return a | 0
              }
              b[a >> 1] = -14336;
              b[a + 8 >> 1] = -2381;
              b[a + 2 >> 1] = -14336;
              b[a + 10 >> 1] = -2381;
              b[a + 4 >> 1] = -14336;
              b[a + 12 >> 1] = -2381;
              b[a + 6 >> 1] = -14336;
              b[a + 14 >> 1] = -2381;
              a = 0;
              return a | 0
          }

          function Vd(a, d, f, g, h, j, k, l) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              l = l | 0;
              var m = 0, n = 0, o = 0, p = 0, q = 0, r = 0;
              r = i;
              i = i + 16 | 0;
              p = r + 2 | 0;
              q = r;
              m = 0;
              n = 10;
              while (1) {
                  o = b[f >> 1] | 0;
                  o = ((Z(o, o) | 0) >>> 3) + m | 0;
                  m = b[f + 2 >> 1] | 0;
                  m = o + ((Z(m, m) | 0) >>> 3) | 0;
                  o = b[f + 4 >> 1] | 0;
                  o = m + ((Z(o, o) | 0) >>> 3) | 0;
                  m = b[f + 6 >> 1] | 0;
                  m = o + ((Z(m, m) | 0) >>> 3) | 0;
                  n = n + -1 << 16 >> 16;
                  if (!(n << 16 >> 16)) break; else f = f + 8 | 0;
              }
              n = m << 4;
              n = (n | 0) < 0 ? 2147483647 : n;
              if ((d | 0) == 7) {
                  de(((Ce(n, l) | 0) << 16 >> 16) * 52428 | 0, p, q, l);
                  o = e[p >> 1] << 16;
                  n = b[q >> 1] << 1;
                  d = b[a + 8 >> 1] | 0;
                  m = (d << 16 >> 16) * 88 | 0;
                  if (d << 16 >> 16 > -1 & (m | 0) < -783741) {
                      c[l >> 2] = 1;
                      f = 2147483647;
                  } else f = m + 783741 | 0;
                  d = (b[a + 10 >> 1] | 0) * 74 | 0;
                  m = d + f | 0;
                  if ((d ^ f | 0) > -1 & (m ^ f | 0) < 0) {
                      c[l >> 2] = 1;
                      f = (f >>> 31) + 2147483647 | 0;
                  } else f = m;
                  d = (b[a + 12 >> 1] | 0) * 44 | 0;
                  m = d + f | 0;
                  if ((d ^ f | 0) > -1 & (m ^ f | 0) < 0) {
                      c[l >> 2] = 1;
                      f = (f >>> 31) + 2147483647 | 0;
                  } else f = m;
                  a = (b[a + 14 >> 1] | 0) * 24 | 0;
                  m = a + f | 0;
                  if ((a ^ f | 0) > -1 & (m ^ f | 0) < 0) {
                      c[l >> 2] = 1;
                      m = (f >>> 31) + 2147483647 | 0;
                  }
                  a = o + -1966080 + n | 0;
                  f = m - a | 0;
                  if (((f ^ m) & (m ^ a) | 0) < 0) {
                      c[l >> 2] = 1;
                      f = (m >>> 31) + 2147483647 | 0;
                  }
                  l = f >> 17;
                  b[g >> 1] = l;
                  l = (f >> 2) - (l << 15) | 0;
                  l = l & 65535;
                  b[h >> 1] = l;
                  i = r;
                  return
              }
              o = pe(n) | 0;
              m = o << 16 >> 16;
              if (o << 16 >> 16 > 0) {
                  f = n << m;
                  if ((f >> m | 0) == (n | 0)) n = f; else n = n >> 31 ^ 2147483647;
              } else {
                  m = 0 - m << 16;
                  if ((m | 0) < 2031616) n = n >> (m >> 16); else n = 0;
              }
              ee(n, o, p, q);
              p = Z(b[p >> 1] | 0, -49320) | 0;
              m = (Z(b[q >> 1] | 0, -24660) | 0) >> 15;
              m = (m & 65536 | 0) == 0 ? m : m | -65536;
              q = m << 1;
              f = q + p | 0;
              if ((q ^ p | 0) > -1 & (f ^ q | 0) < 0) {
                  c[l >> 2] = 1;
                  f = (m >>> 30 & 1) + 2147483647 | 0;
              }
              switch (d | 0) {
                  case 6: {
                      m = f + 2134784 | 0;
                      if ((f | 0) > -1 & (m ^ f | 0) < 0) {
                          c[l >> 2] = 1;
                          m = (f >>> 31) + 2147483647 | 0;
                      }
                      break
                  }
                  case 5: {
                      b[k >> 1] = n >>> 16;
                      b[j >> 1] = -11 - (o & 65535);
                      m = f + 2183936 | 0;
                      if ((f | 0) > -1 & (m ^ f | 0) < 0) {
                          c[l >> 2] = 1;
                          m = (f >>> 31) + 2147483647 | 0;
                      }
                      break
                  }
                  case 4: {
                      m = f + 2085632 | 0;
                      if ((f | 0) > -1 & (m ^ f | 0) < 0) {
                          c[l >> 2] = 1;
                          m = (f >>> 31) + 2147483647 | 0;
                      }
                      break
                  }
                  case 3: {
                      m = f + 2065152 | 0;
                      if ((f | 0) > -1 & (m ^ f | 0) < 0) {
                          c[l >> 2] = 1;
                          m = (f >>> 31) + 2147483647 | 0;
                      }
                      break
                  }
                  default: {
                      m = f + 2134784 | 0;
                      if ((f | 0) > -1 & (m ^ f | 0) < 0) {
                          c[l >> 2] = 1;
                          m = (f >>> 31) + 2147483647 | 0;
                      }
                  }
              }
              do if ((m | 0) <= 2097151) if ((m | 0) < -2097152) {
                  c[l >> 2] = 1;
                  f = -2147483648;
                  break
              } else {
                  f = m << 10;
                  break
              } else {
                  c[l >> 2] = 1;
                  f = 2147483647;
              } while (0);
              k = (b[a >> 1] | 0) * 11142 | 0;
              m = k + f | 0;
              if ((k ^ f | 0) > -1 & (m ^ f | 0) < 0) {
                  c[l >> 2] = 1;
                  m = (f >>> 31) + 2147483647 | 0;
              }
              k = (b[a + 2 >> 1] | 0) * 9502 | 0;
              f = k + m | 0;
              if ((k ^ m | 0) > -1 & (f ^ m | 0) < 0) {
                  c[l >> 2] = 1;
                  f = (m >>> 31) + 2147483647 | 0;
              }
              k = (b[a + 4 >> 1] | 0) * 5570 | 0;
              m = k + f | 0;
              if ((k ^ f | 0) > -1 & (m ^ f | 0) < 0) {
                  c[l >> 2] = 1;
                  m = (f >>> 31) + 2147483647 | 0;
              }
              a = (b[a + 6 >> 1] | 0) * 3112 | 0;
              f = a + m | 0;
              if ((a ^ m | 0) > -1 & (f ^ m | 0) < 0) {
                  c[l >> 2] = 1;
                  f = (m >>> 31) + 2147483647 | 0;
              }
              f = Z(f >> 16, (d | 0) == 4 ? 10878 : 10886) | 0;
              if ((f | 0) < 0) f = ~((f ^ -256) >> 8); else f = f >> 8;
              b[g >> 1] = f >>> 16;
              if ((f | 0) < 0) m = ~((f ^ -2) >> 1); else m = f >> 1;
              g = f >> 16 << 15;
              f = m - g | 0;
              if (((f ^ m) & (g ^ m) | 0) >= 0) {
                  l = f;
                  l = l & 65535;
                  b[h >> 1] = l;
                  i = r;
                  return
              }
              c[l >> 2] = 1;
              l = (m >>> 31) + 2147483647 | 0;
              l = l & 65535;
              b[h >> 1] = l;
              i = r;
              return
          }

          function Wd(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var e = 0, f = 0, g = 0;
              f = a + 4 | 0;
              b[a + 6 >> 1] = b[f >> 1] | 0;
              g = a + 12 | 0;
              b[a + 14 >> 1] = b[g >> 1] | 0;
              e = a + 2 | 0;
              b[f >> 1] = b[e >> 1] | 0;
              f = a + 10 | 0;
              b[g >> 1] = b[f >> 1] | 0;
              b[e >> 1] = b[a >> 1] | 0;
              e = a + 8 | 0;
              b[f >> 1] = b[e >> 1] | 0;
              b[e >> 1] = c;
              b[a >> 1] = d;
              return
          }

          function Xd(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0;
              g = Rd(0, b[a + 8 >> 1] | 0, e) | 0;
              g = Rd(g, b[a + 10 >> 1] | 0, e) | 0;
              g = Rd(g, b[a + 12 >> 1] | 0, e) | 0;
              g = Rd(g, b[a + 14 >> 1] | 0, e) | 0;
              f = g << 16 >> 16 >> 2;
              f = (g << 16 >> 16 < 0 ? f | 49152 : f) & 65535;
              b[c >> 1] = f << 16 >> 16 < -2381 ? -2381 : f;
              c = Rd(0, b[a >> 1] | 0, e) | 0;
              c = Rd(c, b[a + 2 >> 1] | 0, e) | 0;
              c = Rd(c, b[a + 4 >> 1] | 0, e) | 0;
              e = Rd(c, b[a + 6 >> 1] | 0, e) | 0;
              a = e << 16 >> 16 >> 2;
              a = (e << 16 >> 16 < 0 ? a | 49152 : a) & 65535;
              b[d >> 1] = a << 16 >> 16 < -14336 ? -14336 : a;
              return
          }

          function Yd(a) {
              a = a | 0;
              c[a >> 2] = 6892;
              c[a + 4 >> 2] = 8180;
              c[a + 8 >> 2] = 21e3;
              c[a + 12 >> 2] = 9716;
              c[a + 16 >> 2] = 22024;
              c[a + 20 >> 2] = 12788;
              c[a + 24 >> 2] = 24072;
              c[a + 28 >> 2] = 26120;
              c[a + 32 >> 2] = 28168;
              c[a + 36 >> 2] = 6876;
              c[a + 40 >> 2] = 7452;
              c[a + 44 >> 2] = 8140;
              c[a + 48 >> 2] = 20980;
              c[a + 52 >> 2] = 16884;
              c[a + 56 >> 2] = 17908;
              c[a + 60 >> 2] = 7980;
              c[a + 64 >> 2] = 8160;
              c[a + 68 >> 2] = 6678;
              c[a + 72 >> 2] = 6646;
              c[a + 76 >> 2] = 6614;
              c[a + 80 >> 2] = 29704;
              c[a + 84 >> 2] = 28680;
              c[a + 88 >> 2] = 3720;
              c[a + 92 >> 2] = 8;
              c[a + 96 >> 2] = 4172;
              c[a + 100 >> 2] = 44;
              c[a + 104 >> 2] = 3436;
              c[a + 108 >> 2] = 30316;
              c[a + 112 >> 2] = 30796;
              c[a + 116 >> 2] = 31276;
              c[a + 120 >> 2] = 7472;
              c[a + 124 >> 2] = 7552;
              c[a + 128 >> 2] = 7632;
              c[a + 132 >> 2] = 7712;
              return
          }

          function Zd(a, c) {
              a = a | 0;
              c = c | 0;
              var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0;
              n = i;
              i = i + 48 | 0;
              l = n + 18 | 0;
              m = n;
              k = c << 16 >> 16;
              Oe(m | 0, a | 0, k << 1 | 0) | 0;
              if (c << 16 >> 16 > 0) {
                  d = 0;
                  e = 0;
              } else {
                  m = k >> 1;
                  m = l + (m << 1) | 0;
                  m = b[m >> 1] | 0;
                  m = m << 16 >> 16;
                  m = a + (m << 1) | 0;
                  m = b[m >> 1] | 0;
                  i = n;
                  return m | 0
              }
              do {
                  j = 0;
                  h = -32767;
                  while (1) {
                      f = b[m + (j << 1) >> 1] | 0;
                      g = f << 16 >> 16 < h << 16 >> 16;
                      e = g ? e : j & 65535;
                      j = j + 1 | 0;
                      if ((j & 65535) << 16 >> 16 == c << 16 >> 16) break; else h = g ? h : f;
                  }
                  b[m + (e << 16 >> 16 << 1) >> 1] = -32768;
                  b[l + (d << 1) >> 1] = e;
                  d = d + 1 | 0;
              } while ((d & 65535) << 16 >> 16 != c << 16 >> 16);
              m = k >> 1;
              m = l + (m << 1) | 0;
              m = b[m >> 1] | 0;
              m = m << 16 >> 16;
              m = a + (m << 1) | 0;
              m = b[m >> 1] | 0;
              i = n;
              return m | 0
          }

          function _d(a, c, d, e, f) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0,
                  w = 0, x = 0, y = 0, z = 0, A = 0;
              g = i;
              i = i + 32 | 0;
              h = g;
              A = c + 2 | 0;
              z = h + 2 | 0;
              b[h >> 1] = ((b[c >> 1] | 0) >>> 1) + ((b[a >> 1] | 0) >>> 1);
              y = c + 4 | 0;
              x = h + 4 | 0;
              b[z >> 1] = ((b[A >> 1] | 0) >>> 1) + ((b[a + 2 >> 1] | 0) >>> 1);
              w = c + 6 | 0;
              v = h + 6 | 0;
              b[x >> 1] = ((b[y >> 1] | 0) >>> 1) + ((b[a + 4 >> 1] | 0) >>> 1);
              u = c + 8 | 0;
              t = h + 8 | 0;
              b[v >> 1] = ((b[w >> 1] | 0) >>> 1) + ((b[a + 6 >> 1] | 0) >>> 1);
              s = c + 10 | 0;
              r = h + 10 | 0;
              b[t >> 1] = ((b[u >> 1] | 0) >>> 1) + ((b[a + 8 >> 1] | 0) >>> 1);
              q = c + 12 | 0;
              p = h + 12 | 0;
              b[r >> 1] = ((b[s >> 1] | 0) >>> 1) + ((b[a + 10 >> 1] | 0) >>> 1);
              o = c + 14 | 0;
              n = h + 14 | 0;
              b[p >> 1] = ((b[q >> 1] | 0) >>> 1) + ((b[a + 12 >> 1] | 0) >>> 1);
              m = c + 16 | 0;
              l = h + 16 | 0;
              b[n >> 1] = ((b[o >> 1] | 0) >>> 1) + ((b[a + 14 >> 1] | 0) >>> 1);
              k = c + 18 | 0;
              j = h + 18 | 0;
              b[l >> 1] = ((b[m >> 1] | 0) >>> 1) + ((b[a + 16 >> 1] | 0) >>> 1);
              b[j >> 1] = ((b[k >> 1] | 0) >>> 1) + ((b[a + 18 >> 1] | 0) >>> 1);
              he(h, e, f);
              he(c, e + 22 | 0, f);
              b[h >> 1] = ((b[d >> 1] | 0) >>> 1) + ((b[c >> 1] | 0) >>> 1);
              b[z >> 1] = ((b[d + 2 >> 1] | 0) >>> 1) + ((b[A >> 1] | 0) >>> 1);
              b[x >> 1] = ((b[d + 4 >> 1] | 0) >>> 1) + ((b[y >> 1] | 0) >>> 1);
              b[v >> 1] = ((b[d + 6 >> 1] | 0) >>> 1) + ((b[w >> 1] | 0) >>> 1);
              b[t >> 1] = ((b[d + 8 >> 1] | 0) >>> 1) + ((b[u >> 1] | 0) >>> 1);
              b[r >> 1] = ((b[d + 10 >> 1] | 0) >>> 1) + ((b[s >> 1] | 0) >>> 1);
              b[p >> 1] = ((b[d + 12 >> 1] | 0) >>> 1) + ((b[q >> 1] | 0) >>> 1);
              b[n >> 1] = ((b[d + 14 >> 1] | 0) >>> 1) + ((b[o >> 1] | 0) >>> 1);
              b[l >> 1] = ((b[d + 16 >> 1] | 0) >>> 1) + ((b[m >> 1] | 0) >>> 1);
              b[j >> 1] = ((b[d + 18 >> 1] | 0) >>> 1) + ((b[k >> 1] | 0) >>> 1);
              he(h, e + 44 | 0, f);
              he(d, e + 66 | 0, f);
              i = g;
              return
          }

          function $d(a, c, d, e, f) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              var g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0,
                  w = 0, x = 0, y = 0, z = 0, A = 0;
              g = i;
              i = i + 32 | 0;
              h = g;
              A = c + 2 | 0;
              z = h + 2 | 0;
              b[h >> 1] = ((b[c >> 1] | 0) >>> 1) + ((b[a >> 1] | 0) >>> 1);
              y = c + 4 | 0;
              x = h + 4 | 0;
              b[z >> 1] = ((b[A >> 1] | 0) >>> 1) + ((b[a + 2 >> 1] | 0) >>> 1);
              w = c + 6 | 0;
              v = h + 6 | 0;
              b[x >> 1] = ((b[y >> 1] | 0) >>> 1) + ((b[a + 4 >> 1] | 0) >>> 1);
              u = c + 8 | 0;
              t = h + 8 | 0;
              b[v >> 1] = ((b[w >> 1] | 0) >>> 1) + ((b[a + 6 >> 1] | 0) >>> 1);
              s = c + 10 | 0;
              r = h + 10 | 0;
              b[t >> 1] = ((b[u >> 1] | 0) >>> 1) + ((b[a + 8 >> 1] | 0) >>> 1);
              q = c + 12 | 0;
              p = h + 12 | 0;
              b[r >> 1] = ((b[s >> 1] | 0) >>> 1) + ((b[a + 10 >> 1] | 0) >>> 1);
              o = c + 14 | 0;
              n = h + 14 | 0;
              b[p >> 1] = ((b[q >> 1] | 0) >>> 1) + ((b[a + 12 >> 1] | 0) >>> 1);
              m = c + 16 | 0;
              l = h + 16 | 0;
              b[n >> 1] = ((b[o >> 1] | 0) >>> 1) + ((b[a + 14 >> 1] | 0) >>> 1);
              k = c + 18 | 0;
              j = h + 18 | 0;
              b[l >> 1] = ((b[m >> 1] | 0) >>> 1) + ((b[a + 16 >> 1] | 0) >>> 1);
              b[j >> 1] = ((b[k >> 1] | 0) >>> 1) + ((b[a + 18 >> 1] | 0) >>> 1);
              he(h, e, f);
              b[h >> 1] = ((b[d >> 1] | 0) >>> 1) + ((b[c >> 1] | 0) >>> 1);
              b[z >> 1] = ((b[d + 2 >> 1] | 0) >>> 1) + ((b[A >> 1] | 0) >>> 1);
              b[x >> 1] = ((b[d + 4 >> 1] | 0) >>> 1) + ((b[y >> 1] | 0) >>> 1);
              b[v >> 1] = ((b[d + 6 >> 1] | 0) >>> 1) + ((b[w >> 1] | 0) >>> 1);
              b[t >> 1] = ((b[d + 8 >> 1] | 0) >>> 1) + ((b[u >> 1] | 0) >>> 1);
              b[r >> 1] = ((b[d + 10 >> 1] | 0) >>> 1) + ((b[s >> 1] | 0) >>> 1);
              b[p >> 1] = ((b[d + 12 >> 1] | 0) >>> 1) + ((b[q >> 1] | 0) >>> 1);
              b[n >> 1] = ((b[d + 14 >> 1] | 0) >>> 1) + ((b[o >> 1] | 0) >>> 1);
              b[l >> 1] = ((b[d + 16 >> 1] | 0) >>> 1) + ((b[m >> 1] | 0) >>> 1);
              b[j >> 1] = ((b[d + 18 >> 1] | 0) >>> 1) + ((b[k >> 1] | 0) >>> 1);
              he(h, e + 44 | 0, f);
              i = g;
              return
          }

          function ae(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0,
                  v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0;
              f = i;
              i = i + 32 | 0;
              g = f;
              H = b[a >> 1] | 0;
              b[g >> 1] = H - (H >>> 2) + ((b[c >> 1] | 0) >>> 2);
              H = a + 2 | 0;
              E = b[H >> 1] | 0;
              I = c + 2 | 0;
              G = g + 2 | 0;
              b[G >> 1] = E - (E >>> 2) + ((b[I >> 1] | 0) >>> 2);
              E = a + 4 | 0;
              B = b[E >> 1] | 0;
              F = c + 4 | 0;
              D = g + 4 | 0;
              b[D >> 1] = B - (B >>> 2) + ((b[F >> 1] | 0) >>> 2);
              B = a + 6 | 0;
              y = b[B >> 1] | 0;
              C = c + 6 | 0;
              A = g + 6 | 0;
              b[A >> 1] = y - (y >>> 2) + ((b[C >> 1] | 0) >>> 2);
              y = a + 8 | 0;
              v = b[y >> 1] | 0;
              z = c + 8 | 0;
              x = g + 8 | 0;
              b[x >> 1] = v - (v >>> 2) + ((b[z >> 1] | 0) >>> 2);
              v = a + 10 | 0;
              s = b[v >> 1] | 0;
              w = c + 10 | 0;
              u = g + 10 | 0;
              b[u >> 1] = s - (s >>> 2) + ((b[w >> 1] | 0) >>> 2);
              s = a + 12 | 0;
              p = b[s >> 1] | 0;
              t = c + 12 | 0;
              r = g + 12 | 0;
              b[r >> 1] = p - (p >>> 2) + ((b[t >> 1] | 0) >>> 2);
              p = a + 14 | 0;
              m = b[p >> 1] | 0;
              q = c + 14 | 0;
              o = g + 14 | 0;
              b[o >> 1] = m - (m >>> 2) + ((b[q >> 1] | 0) >>> 2);
              m = a + 16 | 0;
              j = b[m >> 1] | 0;
              n = c + 16 | 0;
              l = g + 16 | 0;
              b[l >> 1] = j - (j >>> 2) + ((b[n >> 1] | 0) >>> 2);
              j = a + 18 | 0;
              J = b[j >> 1] | 0;
              k = c + 18 | 0;
              h = g + 18 | 0;
              b[h >> 1] = J - (J >>> 2) + ((b[k >> 1] | 0) >>> 2);
              he(g, d, e);
              b[g >> 1] = ((b[a >> 1] | 0) >>> 1) + ((b[c >> 1] | 0) >>> 1);
              b[G >> 1] = ((b[H >> 1] | 0) >>> 1) + ((b[I >> 1] | 0) >>> 1);
              b[D >> 1] = ((b[E >> 1] | 0) >>> 1) + ((b[F >> 1] | 0) >>> 1);
              b[A >> 1] = ((b[B >> 1] | 0) >>> 1) + ((b[C >> 1] | 0) >>> 1);
              b[x >> 1] = ((b[y >> 1] | 0) >>> 1) + ((b[z >> 1] | 0) >>> 1);
              b[u >> 1] = ((b[v >> 1] | 0) >>> 1) + ((b[w >> 1] | 0) >>> 1);
              b[r >> 1] = ((b[s >> 1] | 0) >>> 1) + ((b[t >> 1] | 0) >>> 1);
              b[o >> 1] = ((b[p >> 1] | 0) >>> 1) + ((b[q >> 1] | 0) >>> 1);
              b[l >> 1] = ((b[m >> 1] | 0) >>> 1) + ((b[n >> 1] | 0) >>> 1);
              b[h >> 1] = ((b[j >> 1] | 0) >>> 1) + ((b[k >> 1] | 0) >>> 1);
              he(g, d + 22 | 0, e);
              J = b[c >> 1] | 0;
              b[g >> 1] = J - (J >>> 2) + ((b[a >> 1] | 0) >>> 2);
              a = b[I >> 1] | 0;
              b[G >> 1] = a - (a >>> 2) + ((b[H >> 1] | 0) >>> 2);
              a = b[F >> 1] | 0;
              b[D >> 1] = a - (a >>> 2) + ((b[E >> 1] | 0) >>> 2);
              a = b[C >> 1] | 0;
              b[A >> 1] = a - (a >>> 2) + ((b[B >> 1] | 0) >>> 2);
              a = b[z >> 1] | 0;
              b[x >> 1] = a - (a >>> 2) + ((b[y >> 1] | 0) >>> 2);
              a = b[w >> 1] | 0;
              b[u >> 1] = a - (a >>> 2) + ((b[v >> 1] | 0) >>> 2);
              a = b[t >> 1] | 0;
              b[r >> 1] = a - (a >>> 2) + ((b[s >> 1] | 0) >>> 2);
              a = b[q >> 1] | 0;
              b[o >> 1] = a - (a >>> 2) + ((b[p >> 1] | 0) >>> 2);
              a = b[n >> 1] | 0;
              b[l >> 1] = a - (a >>> 2) + ((b[m >> 1] | 0) >>> 2);
              a = b[k >> 1] | 0;
              b[h >> 1] = a - (a >>> 2) + ((b[j >> 1] | 0) >>> 2);
              he(g, d + 44 | 0, e);
              he(c, d + 66 | 0, e);
              i = f;
              return
          }

          function be(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0,
                  v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0;
              f = i;
              i = i + 32 | 0;
              g = f;
              H = b[a >> 1] | 0;
              b[g >> 1] = H - (H >>> 2) + ((b[c >> 1] | 0) >>> 2);
              H = a + 2 | 0;
              E = b[H >> 1] | 0;
              I = c + 2 | 0;
              G = g + 2 | 0;
              b[G >> 1] = E - (E >>> 2) + ((b[I >> 1] | 0) >>> 2);
              E = a + 4 | 0;
              B = b[E >> 1] | 0;
              F = c + 4 | 0;
              D = g + 4 | 0;
              b[D >> 1] = B - (B >>> 2) + ((b[F >> 1] | 0) >>> 2);
              B = a + 6 | 0;
              y = b[B >> 1] | 0;
              C = c + 6 | 0;
              A = g + 6 | 0;
              b[A >> 1] = y - (y >>> 2) + ((b[C >> 1] | 0) >>> 2);
              y = a + 8 | 0;
              v = b[y >> 1] | 0;
              z = c + 8 | 0;
              x = g + 8 | 0;
              b[x >> 1] = v - (v >>> 2) + ((b[z >> 1] | 0) >>> 2);
              v = a + 10 | 0;
              s = b[v >> 1] | 0;
              w = c + 10 | 0;
              u = g + 10 | 0;
              b[u >> 1] = s - (s >>> 2) + ((b[w >> 1] | 0) >>> 2);
              s = a + 12 | 0;
              p = b[s >> 1] | 0;
              t = c + 12 | 0;
              r = g + 12 | 0;
              b[r >> 1] = p - (p >>> 2) + ((b[t >> 1] | 0) >>> 2);
              p = a + 14 | 0;
              m = b[p >> 1] | 0;
              q = c + 14 | 0;
              o = g + 14 | 0;
              b[o >> 1] = m - (m >>> 2) + ((b[q >> 1] | 0) >>> 2);
              m = a + 16 | 0;
              j = b[m >> 1] | 0;
              n = c + 16 | 0;
              l = g + 16 | 0;
              b[l >> 1] = j - (j >>> 2) + ((b[n >> 1] | 0) >>> 2);
              j = a + 18 | 0;
              J = b[j >> 1] | 0;
              k = c + 18 | 0;
              h = g + 18 | 0;
              b[h >> 1] = J - (J >>> 2) + ((b[k >> 1] | 0) >>> 2);
              he(g, d, e);
              b[g >> 1] = ((b[a >> 1] | 0) >>> 1) + ((b[c >> 1] | 0) >>> 1);
              b[G >> 1] = ((b[H >> 1] | 0) >>> 1) + ((b[I >> 1] | 0) >>> 1);
              b[D >> 1] = ((b[E >> 1] | 0) >>> 1) + ((b[F >> 1] | 0) >>> 1);
              b[A >> 1] = ((b[B >> 1] | 0) >>> 1) + ((b[C >> 1] | 0) >>> 1);
              b[x >> 1] = ((b[y >> 1] | 0) >>> 1) + ((b[z >> 1] | 0) >>> 1);
              b[u >> 1] = ((b[v >> 1] | 0) >>> 1) + ((b[w >> 1] | 0) >>> 1);
              b[r >> 1] = ((b[s >> 1] | 0) >>> 1) + ((b[t >> 1] | 0) >>> 1);
              b[o >> 1] = ((b[p >> 1] | 0) >>> 1) + ((b[q >> 1] | 0) >>> 1);
              b[l >> 1] = ((b[m >> 1] | 0) >>> 1) + ((b[n >> 1] | 0) >>> 1);
              b[h >> 1] = ((b[j >> 1] | 0) >>> 1) + ((b[k >> 1] | 0) >>> 1);
              he(g, d + 22 | 0, e);
              c = b[c >> 1] | 0;
              b[g >> 1] = c - (c >>> 2) + ((b[a >> 1] | 0) >>> 2);
              a = b[I >> 1] | 0;
              b[G >> 1] = a - (a >>> 2) + ((b[H >> 1] | 0) >>> 2);
              a = b[F >> 1] | 0;
              b[D >> 1] = a - (a >>> 2) + ((b[E >> 1] | 0) >>> 2);
              a = b[C >> 1] | 0;
              b[A >> 1] = a - (a >>> 2) + ((b[B >> 1] | 0) >>> 2);
              a = b[z >> 1] | 0;
              b[x >> 1] = a - (a >>> 2) + ((b[y >> 1] | 0) >>> 2);
              a = b[w >> 1] | 0;
              b[u >> 1] = a - (a >>> 2) + ((b[v >> 1] | 0) >>> 2);
              a = b[t >> 1] | 0;
              b[r >> 1] = a - (a >>> 2) + ((b[s >> 1] | 0) >>> 2);
              a = b[q >> 1] | 0;
              b[o >> 1] = a - (a >>> 2) + ((b[p >> 1] | 0) >>> 2);
              a = b[n >> 1] | 0;
              b[l >> 1] = a - (a >>> 2) + ((b[m >> 1] | 0) >>> 2);
              a = b[k >> 1] | 0;
              b[h >> 1] = a - (a >>> 2) + ((b[j >> 1] | 0) >>> 2);
              he(g, d + 44 | 0, e);
              i = f;
              return
          }

          function ce(a, c) {
              a = a | 0;
              c = c | 0;
              var d = 0, f = 0;
              if ((a | 0) < 1) {
                  c = 1073741823;
                  return c | 0
              }
              d = (pe(a) | 0) << 16 >> 16;
              c = 30 - d | 0;
              a = a << d >> (c & 1 ^ 1);
              d = (a >> 25 << 16) + -1048576 >> 16;
              f = b[7030 + (d << 1) >> 1] | 0;
              c = (f << 16) - (Z(f - (e[7030 + (d + 1 << 1) >> 1] | 0) << 16 >> 15, a >>> 10 & 32767) | 0) >> (c << 16 >> 17) + 1;
              return c | 0
          }

          function de(a, b, c, d) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              d = d | 0;
              d = pe(a) | 0;
              ee(a << (d << 16 >> 16), d, b, c);
              return
          }

          function ee(a, c, d, f) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              if ((a | 0) < 1) {
                  b[d >> 1] = 0;
                  d = 0;
                  b[f >> 1] = d;
                  return
              } else {
                  b[d >> 1] = 30 - (c & 65535);
                  d = (a >> 25 << 16) + -2097152 >> 16;
                  c = b[7128 + (d << 1) >> 1] | 0;
                  d = ((c << 16) - (Z(a >>> 9 & 65534, c - (e[7128 + (d + 1 << 1) >> 1] | 0) << 16 >> 16) | 0) | 0) >>> 16 & 65535;
                  b[f >> 1] = d;
                  return
              }
          }

          function fe(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              var f = 0, g = 0;
              f = a + 2 | 0;
              d = b[f >> 1] | 0;
              b[c >> 1] = d;
              g = a + 4 | 0;
              b[c + 2 >> 1] = (e[g >> 1] | 0) - (e[a >> 1] | 0);
              b[c + 4 >> 1] = (e[a + 6 >> 1] | 0) - (e[f >> 1] | 0);
              f = a + 8 | 0;
              b[c + 6 >> 1] = (e[f >> 1] | 0) - (e[g >> 1] | 0);
              b[c + 8 >> 1] = (e[a + 10 >> 1] | 0) - (e[a + 6 >> 1] | 0);
              g = a + 12 | 0;
              b[c + 10 >> 1] = (e[g >> 1] | 0) - (e[f >> 1] | 0);
              b[c + 12 >> 1] = (e[a + 14 >> 1] | 0) - (e[a + 10 >> 1] | 0);
              b[c + 14 >> 1] = (e[a + 16 >> 1] | 0) - (e[g >> 1] | 0);
              b[c + 16 >> 1] = (e[a + 18 >> 1] | 0) - (e[a + 14 >> 1] | 0);
              b[c + 18 >> 1] = 16384 - (e[a + 16 >> 1] | 0);
              a = 10;
              g = c;
              while (1) {
                  d = d << 16 >> 16;
                  c = (d << 16) + -120782848 | 0;
                  if ((c | 0) > 0) c = 1843 - ((c >> 16) * 12484 >> 16) | 0; else c = 3427 - ((d * 56320 | 0) >>> 16) | 0;
                  f = g + 2 | 0;
                  b[g >> 1] = c << 3;
                  a = a + -1 << 16 >> 16;
                  if (!(a << 16 >> 16)) break;
                  d = b[f >> 1] | 0;
                  g = f;
              }
              return
          }

          function ge(a, b, c) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              c = b << 16 >> 16;
              if (b << 16 >> 16 > 31) {
                  b = 0;
                  return b | 0
              }
              if (b << 16 >> 16 > 0) return ((1 << c + -1 & a | 0) != 0 & 1) + (b << 16 >> 16 < 31 ? a >> c : 0) | 0;
              c = 0 - c << 16 >> 16;
              b = a << c;
              b = (b >> c | 0) == (a | 0) ? b : a >> 31 ^ 2147483647;
              return b | 0
          }

          function he(a, d, e) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0;
              s = i;
              i = i + 48 | 0;
              q = s + 24 | 0;
              r = s;
              o = q + 4 | 0;
              c[q >> 2] = 16777216;
              f = 0 - (b[a >> 1] | 0) | 0;
              p = q + 8 | 0;
              c[o >> 2] = f << 10;
              g = b[a + 4 >> 1] | 0;
              l = f >> 6;
              c[p >> 2] = 33554432 - (((Z((f << 9) - (l << 15) << 16 >> 16, g) | 0) >> 15) + (Z(l, g) | 0) << 2);
              l = q + 4 | 0;
              g = (c[l >> 2] | 0) - (g << 10) | 0;
              c[l >> 2] = g;
              l = q + 12 | 0;
              f = q + 4 | 0;
              c[l >> 2] = g;
              e = b[a + 8 >> 1] | 0;
              h = g;
              m = 1;
              while (1) {
                  k = l + -4 | 0;
                  j = c[k >> 2] | 0;
                  n = j >> 16;
                  c[l >> 2] = h + g - (((Z((j >>> 1) - (n << 15) << 16 >> 16, e) | 0) >> 15) + (Z(n, e) | 0) << 2);
                  if ((m | 0) == 2) break;
                  h = c[l + -12 >> 2] | 0;
                  l = k;
                  g = j;
                  m = m + 1 | 0;
              }
              c[f >> 2] = (c[f >> 2] | 0) - (e << 10);
              e = q + 16 | 0;
              f = c[q + 8 >> 2] | 0;
              c[e >> 2] = f;
              k = b[a + 12 >> 1] | 0;
              g = f;
              l = 1;
              while (1) {
                  j = e + -4 | 0;
                  h = c[j >> 2] | 0;
                  n = h >> 16;
                  c[e >> 2] = g + f - (((Z((h >>> 1) - (n << 15) << 16 >> 16, k) | 0) >> 15) + (Z(n, k) | 0) << 2);
                  if ((l | 0) == 3) break;
                  g = c[e + -12 >> 2] | 0;
                  e = j;
                  f = h;
                  l = l + 1 | 0;
              }
              e = q + 4 | 0;
              c[e >> 2] = (c[e >> 2] | 0) - (k << 10);
              e = q + 20 | 0;
              g = c[q + 12 >> 2] | 0;
              c[e >> 2] = g;
              f = b[a + 16 >> 1] | 0;
              h = g;
              l = 1;
              while (1) {
                  k = e + -4 | 0;
                  j = c[k >> 2] | 0;
                  n = j >> 16;
                  c[e >> 2] = h + g - (((Z((j >>> 1) - (n << 15) << 16 >> 16, f) | 0) >> 15) + (Z(n, f) | 0) << 2);
                  if ((l | 0) == 4) break;
                  h = c[e + -12 >> 2] | 0;
                  e = k;
                  g = j;
                  l = l + 1 | 0;
              }
              l = q + 4 | 0;
              c[l >> 2] = (c[l >> 2] | 0) - (f << 10);
              c[r >> 2] = 16777216;
              l = 0 - (b[a + 2 >> 1] | 0) | 0;
              n = r + 8 | 0;
              c[r + 4 >> 2] = l << 10;
              f = b[a + 6 >> 1] | 0;
              m = l >> 6;
              c[n >> 2] = 33554432 - (((Z((l << 9) - (m << 15) << 16 >> 16, f) | 0) >> 15) + (Z(m, f) | 0) << 2);
              m = r + 4 | 0;
              f = (c[m >> 2] | 0) - (f << 10) | 0;
              c[m >> 2] = f;
              m = r + 12 | 0;
              l = r + 4 | 0;
              c[m >> 2] = f;
              k = b[a + 10 >> 1] | 0;
              g = f;
              e = 1;
              while (1) {
                  j = m + -4 | 0;
                  h = c[j >> 2] | 0;
                  t = h >> 16;
                  c[m >> 2] = g + f - (((Z((h >>> 1) - (t << 15) << 16 >> 16, k) | 0) >> 15) + (Z(t, k) | 0) << 2);
                  if ((e | 0) == 2) break;
                  g = c[m + -12 >> 2] | 0;
                  m = j;
                  f = h;
                  e = e + 1 | 0;
              }
              c[l >> 2] = (c[l >> 2] | 0) - (k << 10);
              l = r + 16 | 0;
              f = c[r + 8 >> 2] | 0;
              c[l >> 2] = f;
              k = b[a + 14 >> 1] | 0;
              g = f;
              e = 1;
              while (1) {
                  j = l + -4 | 0;
                  h = c[j >> 2] | 0;
                  t = h >> 16;
                  c[l >> 2] = g + f - (((Z((h >>> 1) - (t << 15) << 16 >> 16, k) | 0) >> 15) + (Z(t, k) | 0) << 2);
                  if ((e | 0) == 3) break;
                  g = c[l + -12 >> 2] | 0;
                  l = j;
                  f = h;
                  e = e + 1 | 0;
              }
              e = r + 4 | 0;
              c[e >> 2] = (c[e >> 2] | 0) - (k << 10);
              e = r + 20 | 0;
              k = c[r + 12 >> 2] | 0;
              c[e >> 2] = k;
              f = b[a + 18 >> 1] | 0;
              j = k;
              l = 1;
              while (1) {
                  g = e + -4 | 0;
                  h = c[g >> 2] | 0;
                  t = h >> 16;
                  c[e >> 2] = j + k - (((Z((h >>> 1) - (t << 15) << 16 >> 16, f) | 0) >> 15) + (Z(t, f) | 0) << 2);
                  if ((l | 0) == 4) break;
                  j = c[e + -12 >> 2] | 0;
                  e = g;
                  k = h;
                  l = l + 1 | 0;
              }
              j = (c[r + 4 >> 2] | 0) - (f << 10) | 0;
              m = q + 20 | 0;
              k = r + 20 | 0;
              l = c[q + 16 >> 2] | 0;
              a = (c[m >> 2] | 0) + l | 0;
              c[m >> 2] = a;
              m = c[r + 16 >> 2] | 0;
              t = (c[k >> 2] | 0) - m | 0;
              c[k >> 2] = t;
              k = c[q + 12 >> 2] | 0;
              l = l + k | 0;
              c[q + 16 >> 2] = l;
              h = c[r + 12 >> 2] | 0;
              m = m - h | 0;
              c[r + 16 >> 2] = m;
              f = c[p >> 2] | 0;
              k = k + f | 0;
              c[q + 12 >> 2] = k;
              g = c[n >> 2] | 0;
              p = h - g | 0;
              c[r + 12 >> 2] = p;
              h = c[o >> 2] | 0;
              n = f + h | 0;
              c[q + 8 >> 2] = n;
              o = g - j | 0;
              c[r + 8 >> 2] = o;
              q = h + (c[q >> 2] | 0) | 0;
              r = j - (c[r >> 2] | 0) | 0;
              b[d >> 1] = 4096;
              q = q + 4096 | 0;
              b[d + 2 >> 1] = (q + r | 0) >>> 13;
              b[d + 20 >> 1] = (q - r | 0) >>> 13;
              r = n + 4096 | 0;
              b[d + 4 >> 1] = (r + o | 0) >>> 13;
              b[d + 18 >> 1] = (r - o | 0) >>> 13;
              r = k + 4096 | 0;
              b[d + 6 >> 1] = (r + p | 0) >>> 13;
              b[d + 16 >> 1] = (r - p | 0) >>> 13;
              r = l + 4096 | 0;
              b[d + 8 >> 1] = (r + m | 0) >>> 13;
              b[d + 14 >> 1] = (r - m | 0) >>> 13;
              r = a + 4096 | 0;
              b[d + 10 >> 1] = (r + t | 0) >>> 13;
              b[d + 12 >> 1] = (r - t | 0) >>> 13;
              i = s;
              return
          }

          function ie(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0, g = 0, h = 0;
              if (!a) {
                  h = -1;
                  return h | 0
              }
              c[a >> 2] = 0;
              d = Je(44) | 0;
              if (!d) {
                  h = -1;
                  return h | 0
              }
              e = d + 40 | 0;
              if ((xe(e) | 0) << 16 >> 16) {
                  h = -1;
                  return h | 0
              }
              f = d;
              g = 7452;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              f = d + 20 | 0;
              g = 7452;
              h = f + 20 | 0;
              do {
                  b[f >> 1] = b[g >> 1] | 0;
                  f = f + 2 | 0;
                  g = g + 2 | 0;
              } while ((f | 0) < (h | 0));
              ye(c[e >> 2] | 0) | 0;
              c[a >> 2] = d;
              h = 0;
              return h | 0
          }

          function je(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0;
              if (!a) {
                  f = -1;
                  return f | 0
              }
              d = a;
              e = 7452;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              d = a + 20 | 0;
              e = 7452;
              f = d + 20 | 0;
              do {
                  b[d >> 1] = b[e >> 1] | 0;
                  d = d + 2 | 0;
                  e = e + 2 | 0;
              } while ((d | 0) < (f | 0));
              ye(c[a + 40 >> 2] | 0) | 0;
              f = 0;
              return f | 0
          }

          function ke(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              ze(b + 40 | 0);
              Ke(c[a >> 2] | 0);
              c[a >> 2] = 0;
              return
          }

          function le(a, d, e, f, g, h, j, k) {
              a = a | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              k = k | 0;
              var l = 0, m = 0, n = 0, o = 0, p = 0;
              p = i;
              i = i + 64 | 0;
              o = p + 44 | 0;
              l = p + 24 | 0;
              m = p + 4 | 0;
              n = p;
              if ((d | 0) == 7) {
                  Sd(f + 22 | 0, l, a, k);
                  Sd(f + 66 | 0, h, l, k);
                  $d(a, l, h, f, k);
                  if ((e | 0) == 8) f = 6; else {
                      ve(c[a + 40 >> 2] | 0, l, h, m, o, c[j >> 2] | 0, k);
                      _d(a + 20 | 0, m, o, g, k);
                      g = (c[j >> 2] | 0) + 10 | 0;
                      f = 7;
                  }
              } else {
                  Sd(f + 66 | 0, h, a, k);
                  be(a, h, f, k);
                  if ((e | 0) == 8) f = 6; else {
                      te(c[a + 40 >> 2] | 0, d, h, o, c[j >> 2] | 0, n, k);
                      ae(a + 20 | 0, o, g, k);
                      g = (c[j >> 2] | 0) + 6 | 0;
                      f = 7;
                  }
              }
              if ((f | 0) == 6) {
                  f = a;
                  g = f + 20 | 0;
                  do {
                      b[f >> 1] = b[h >> 1] | 0;
                      f = f + 2 | 0;
                      h = h + 2 | 0;
                  } while ((f | 0) < (g | 0));
                  i = p;
                  return
              } else if ((f | 0) == 7) {
                  c[j >> 2] = g;
                  f = a;
                  g = f + 20 | 0;
                  do {
                      b[f >> 1] = b[h >> 1] | 0;
                      f = f + 2 | 0;
                      h = h + 2 | 0;
                  } while ((f | 0) < (g | 0));
                  f = a + 20 | 0;
                  h = o;
                  g = f + 20 | 0;
                  do {
                      b[f >> 1] = b[h >> 1] | 0;
                      f = f + 2 | 0;
                      h = h + 2 | 0;
                  } while ((f | 0) < (g | 0));
                  i = p;
                  return
              }
          }

          function me(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0;
              if (d << 16 >> 16 > 0) e = 0; else return;
              do {
                  g = b[a + (e << 1) >> 1] | 0;
                  h = g >> 8;
                  f = b[7194 + (h << 1) >> 1] | 0;
                  b[c + (e << 1) >> 1] = ((Z((b[7194 + (h + 1 << 1) >> 1] | 0) - f | 0, g & 255) | 0) >>> 8) + f;
                  e = e + 1 | 0;
              } while ((e & 65535) << 16 >> 16 != d << 16 >> 16);
              return
          }

          function ne(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0;
              e = (d << 16 >> 16) + -1 | 0;
              d = e & 65535;
              if (d << 16 >> 16 <= -1) return;
              f = 63;
              h = c + (e << 1) | 0;
              g = a + (e << 1) | 0;
              while (1) {
                  a = b[g >> 1] | 0;
                  c = f;
                  while (1) {
                      e = c << 16 >> 16;
                      f = b[7194 + (e << 1) >> 1] | 0;
                      if (a << 16 >> 16 > f << 16 >> 16) c = c + -1 << 16 >> 16; else break
                  }
                  b[h >> 1] = (((Z(b[7324 + (e << 1) >> 1] | 0, (a << 16 >> 16) - (f << 16 >> 16) | 0) | 0) + 2048 | 0) >>> 12) + (e << 8);
                  d = d + -1 << 16 >> 16;
                  if (d << 16 >> 16 > -1) {
                      f = c;
                      h = h + -2 | 0;
                      g = g + -2 | 0;
                  } else break
              }
              return
          }

          function oe(a, b, d) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              a = (Z(b << 16 >> 16, a << 16 >> 16) | 0) + 16384 >> 15;
              a = a | 0 - (a & 65536);
              if ((a | 0) <= 32767) {
                  if ((a | 0) < -32768) {
                      c[d >> 2] = 1;
                      a = -32768;
                  }
              } else {
                  c[d >> 2] = 1;
                  a = 32767;
              }
              return a & 65535 | 0
          }

          function pe(a) {
              a = a | 0;
              var b = 0;
              a:do if ((a | 0) != 0 ? (b = a - (a >>> 31) | 0, b = b >> 31 ^ b, (b & 1073741824 | 0) == 0) : 0) {
                  a = b;
                  b = 0;
                  while (1) {
                      if (a & 536870912) {
                          a = 7;
                          break
                      }
                      if (a & 268435456) {
                          a = 8;
                          break
                      }
                      if (a & 134217728) {
                          a = 9;
                          break
                      }
                      b = b + 4 << 16 >> 16;
                      a = a << 4;
                      if (a & 1073741824) break a
                  }
                  if ((a | 0) == 7) {
                      b = b | 1;
                      break
                  } else if ((a | 0) == 8) {
                      b = b | 2;
                      break
                  } else if ((a | 0) == 9) {
                      b = b | 3;
                      break
                  }
              } else b = 0; while (0);
              return b | 0
          }

          function qe(a) {
              a = a | 0;
              var b = 0, c = 0;
              if (!(a << 16 >> 16)) {
                  c = 0;
                  return c | 0
              }
              b = (a & 65535) - ((a & 65535) >>> 15 & 65535) | 0;
              b = (b << 16 >> 31 ^ b) << 16;
              a = b >> 16;
              if (!(a & 16384)) {
                  c = b;
                  b = 0;
              } else {
                  c = 0;
                  return c | 0
              }
              while (1) {
                  if (a & 8192) {
                      a = b;
                      c = 7;
                      break
                  }
                  if (a & 4096) {
                      a = b;
                      c = 8;
                      break
                  }
                  if (a & 2048) {
                      a = b;
                      c = 9;
                      break
                  }
                  b = b + 4 << 16 >> 16;
                  c = c << 4;
                  a = c >> 16;
                  if (a & 16384) {
                      a = b;
                      c = 10;
                      break
                  }
              }
              if ((c | 0) == 7) {
                  c = a | 1;
                  return c | 0
              } else if ((c | 0) == 8) {
                  c = a | 2;
                  return c | 0
              } else if ((c | 0) == 9) {
                  c = a | 3;
                  return c | 0
              } else if ((c | 0) == 10) return a | 0;
              return 0
          }

          function re(a, d, f) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0;
              d = d << 16 >> 16;
              if ((d & 134217727 | 0) == 33554432) {
                  c[f >> 2] = 1;
                  d = 2147483647;
              } else d = d << 6;
              g = d >>> 16 & 31;
              i = b[7792 + (g << 1) >> 1] | 0;
              h = i << 16;
              d = Z(i - (e[7792 + (g + 1 << 1) >> 1] | 0) << 16 >> 16, d >>> 1 & 32767) | 0;
              if ((d | 0) == 1073741824) {
                  c[f >> 2] = 1;
                  g = 2147483647;
              } else g = d << 1;
              d = h - g | 0;
              if (((d ^ h) & (g ^ h) | 0) >= 0) {
                  i = d;
                  a = a & 65535;
                  a = 30 - a | 0;
                  a = a & 65535;
                  f = ge(i, a, f) | 0;
                  return f | 0
              }
              c[f >> 2] = 1;
              i = (i >>> 15 & 1) + 2147483647 | 0;
              a = a & 65535;
              a = 30 - a | 0;
              a = a & 65535;
              f = ge(i, a, f) | 0;
              return f | 0
          }

          function se(a, c, d, e, f, g) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0;
              o = i;
              i = i + 48 | 0;
              n = o;
              m = 0 - (d & 65535) | 0;
              m = f << 16 >> 16 == 0 ? m : m << 1 & 131070;
              d = m & 65535;
              m = (d << 16 >> 16 < 0 ? m + 6 | 0 : m) << 16 >> 16;
              g = 6 - m | 0;
              b[n >> 1] = b[7858 + (m << 1) >> 1] | 0;
              b[n + 2 >> 1] = b[7858 + (g << 1) >> 1] | 0;
              b[n + 4 >> 1] = b[7858 + (m + 6 << 1) >> 1] | 0;
              b[n + 6 >> 1] = b[7858 + (g + 6 << 1) >> 1] | 0;
              b[n + 8 >> 1] = b[7858 + (m + 12 << 1) >> 1] | 0;
              b[n + 10 >> 1] = b[7858 + (g + 12 << 1) >> 1] | 0;
              b[n + 12 >> 1] = b[7858 + (m + 18 << 1) >> 1] | 0;
              b[n + 14 >> 1] = b[7858 + (g + 18 << 1) >> 1] | 0;
              b[n + 16 >> 1] = b[7858 + (m + 24 << 1) >> 1] | 0;
              b[n + 18 >> 1] = b[7858 + (g + 24 << 1) >> 1] | 0;
              b[n + 20 >> 1] = b[7858 + (m + 30 << 1) >> 1] | 0;
              b[n + 22 >> 1] = b[7858 + (g + 30 << 1) >> 1] | 0;
              b[n + 24 >> 1] = b[7858 + (m + 36 << 1) >> 1] | 0;
              b[n + 26 >> 1] = b[7858 + (g + 36 << 1) >> 1] | 0;
              b[n + 28 >> 1] = b[7858 + (m + 42 << 1) >> 1] | 0;
              b[n + 30 >> 1] = b[7858 + (g + 42 << 1) >> 1] | 0;
              b[n + 32 >> 1] = b[7858 + (m + 48 << 1) >> 1] | 0;
              b[n + 34 >> 1] = b[7858 + (g + 48 << 1) >> 1] | 0;
              b[n + 36 >> 1] = b[7858 + (m + 54 << 1) >> 1] | 0;
              b[n + 38 >> 1] = b[7858 + (g + 54 << 1) >> 1] | 0;
              g = e << 16 >> 16 >>> 1 & 65535;
              if (!(g << 16 >> 16)) {
                  i = o;
                  return
              }
              m = a + ((d << 16 >> 16 >> 15 << 16 >> 16) - (c << 16 >> 16) << 1) | 0;
              while (1) {
                  l = m + 2 | 0;
                  h = b[l >> 1] | 0;
                  c = h;
                  e = m;
                  j = 5;
                  k = n;
                  f = 16384;
                  d = 16384;
                  while (1) {
                      q = b[k >> 1] | 0;
                      r = (Z(q, c << 16 >> 16) | 0) + d | 0;
                      p = b[l + -2 >> 1] | 0;
                      d = (Z(p, q) | 0) + f | 0;
                      q = e;
                      e = e + 4 | 0;
                      s = b[k + 2 >> 1] | 0;
                      d = d + (Z(s, h << 16 >> 16) | 0) | 0;
                      f = b[e >> 1] | 0;
                      s = r + (Z(f, s) | 0) | 0;
                      l = l + -4 | 0;
                      r = b[k + 4 >> 1] | 0;
                      p = s + (Z(r, p) | 0) | 0;
                      c = b[l >> 1] | 0;
                      r = d + (Z(c << 16 >> 16, r) | 0) | 0;
                      d = b[k + 6 >> 1] | 0;
                      f = r + (Z(d, f) | 0) | 0;
                      h = b[q + 6 >> 1] | 0;
                      d = p + (Z(h << 16 >> 16, d) | 0) | 0;
                      if (j << 16 >> 16 <= 1) break; else {
                          j = j + -1 << 16 >> 16;
                          k = k + 8 | 0;
                      }
                  }
                  b[a >> 1] = f >>> 15;
                  b[a + 2 >> 1] = d >>> 15;
                  g = g + -1 << 16 >> 16;
                  if (!(g << 16 >> 16)) break; else {
                      m = m + 4 | 0;
                      a = a + 4 | 0;
                  }
              }
              i = o;
              return
          }

          function te(a, c, d, f, g, h, j) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0,
                  z = 0, A = 0, B = 0, C = 0;
              C = i;
              i = i + 144 | 0;
              t = C + 120 | 0;
              y = C + 100 | 0;
              A = C + 80 | 0;
              B = C + 60 | 0;
              z = C + 40 | 0;
              q = C + 20 | 0;
              r = C;
              ne(d, t, 10, j);
              fe(t, y, j);
              if ((c | 0) == 8) {
                  b[h >> 1] = 0;
                  l = 2147483647;
                  s = 0;
                  while (1) {
                      n = s * 10 | 0;
                      d = 0;
                      m = 0;
                      do {
                          x = (e[7980 + (m + n << 1) >> 1] | 0) + (e[8140 + (m << 1) >> 1] | 0) | 0;
                          b[r + (m << 1) >> 1] = x;
                          x = (e[t + (m << 1) >> 1] | 0) - (x & 65535) | 0;
                          b[q + (m << 1) >> 1] = x;
                          x = x << 16;
                          d = (Z(x >> 15, x >> 16) | 0) + d | 0;
                          m = m + 1 | 0;
                      } while ((m | 0) != 10);
                      if ((d | 0) < (l | 0)) {
                          u = B;
                          p = q;
                          o = u + 20 | 0;
                          do {
                              b[u >> 1] = b[p >> 1] | 0;
                              u = u + 2 | 0;
                              p = p + 2 | 0;
                          } while ((u | 0) < (o | 0));
                          u = A;
                          p = r;
                          o = u + 20 | 0;
                          do {
                              b[u >> 1] = b[p >> 1] | 0;
                              u = u + 2 | 0;
                              p = p + 2 | 0;
                          } while ((u | 0) < (o | 0));
                          u = a;
                          p = 7980 + (n << 1) | 0;
                          o = u + 20 | 0;
                          do {
                              b[u >> 1] = b[p >> 1] | 0;
                              u = u + 2 | 0;
                              p = p + 2 | 0;
                          } while ((u | 0) < (o | 0));
                          b[h >> 1] = s;
                      } else d = l;
                      s = s + 1 | 0;
                      if ((s | 0) == 8) break; else l = d;
                  }
              } else {
                  d = 0;
                  do {
                      x = Z(b[8160 + (d << 1) >> 1] | 0, b[a + (d << 1) >> 1] | 0) | 0;
                      x = (x >>> 15) + (e[8140 + (d << 1) >> 1] | 0) | 0;
                      b[A + (d << 1) >> 1] = x;
                      b[B + (d << 1) >> 1] = (e[t + (d << 1) >> 1] | 0) - x;
                      d = d + 1 | 0;
                  } while ((d | 0) != 10)
              }
              do if (c >>> 0 >= 2) {
                  x = B + 2 | 0;
                  w = B + 4 | 0;
                  v = e[B >> 1] | 0;
                  u = b[y >> 1] << 1;
                  t = e[x >> 1] | 0;
                  q = b[y + 2 >> 1] << 1;
                  p = e[w >> 1] | 0;
                  o = b[y + 4 >> 1] << 1;
                  if ((c | 0) == 5) {
                      r = 2147483647;
                      h = 0;
                      d = 0;
                      s = 17908;
                      while (1) {
                          m = (Z(v - (e[s >> 1] | 0) << 16 >> 16, u) | 0) >> 16;
                          m = Z(m, m) | 0;
                          n = (Z(t - (e[s + 2 >> 1] | 0) << 16 >> 16, q) | 0) >> 16;
                          m = (Z(n, n) | 0) + m | 0;
                          n = (Z(p - (e[s + 4 >> 1] | 0) << 16 >> 16, o) | 0) >> 16;
                          n = m + (Z(n, n) | 0) | 0;
                          m = (n | 0) < (r | 0);
                          d = m ? h : d;
                          h = h + 1 << 16 >> 16;
                          if (h << 16 >> 16 >= 512) break; else {
                              r = m ? n : r;
                              s = s + 6 | 0;
                          }
                      }
                      n = (d << 16 >> 16) * 3 | 0;
                      b[B >> 1] = b[17908 + (n << 1) >> 1] | 0;
                      b[x >> 1] = b[17908 + (n + 1 << 1) >> 1] | 0;
                      b[w >> 1] = b[17908 + (n + 2 << 1) >> 1] | 0;
                      b[g >> 1] = d;
                      n = B + 6 | 0;
                      m = B + 8 | 0;
                      v = B + 10 | 0;
                      s = e[n >> 1] | 0;
                      h = b[y + 6 >> 1] << 1;
                      r = e[m >> 1] | 0;
                      q = b[y + 8 >> 1] << 1;
                      p = e[v >> 1] | 0;
                      o = b[y + 10 >> 1] << 1;
                      k = 2147483647;
                      t = 0;
                      d = 0;
                      u = 9716;
                      while (1) {
                          l = (Z(h, s - (e[u >> 1] | 0) << 16 >> 16) | 0) >> 16;
                          l = Z(l, l) | 0;
                          c = (Z(q, r - (e[u + 2 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                          l = (Z(c, c) | 0) + l | 0;
                          c = (Z(o, p - (e[u + 4 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                          c = l + (Z(c, c) | 0) | 0;
                          l = (c | 0) < (k | 0);
                          d = l ? t : d;
                          t = t + 1 << 16 >> 16;
                          if (t << 16 >> 16 >= 512) break; else {
                              k = l ? c : k;
                              u = u + 6 | 0;
                          }
                      }
                      k = (d << 16 >> 16) * 3 | 0;
                      b[n >> 1] = b[9716 + (k << 1) >> 1] | 0;
                      b[m >> 1] = b[9716 + (k + 1 << 1) >> 1] | 0;
                      b[v >> 1] = b[9716 + (k + 2 << 1) >> 1] | 0;
                      b[g + 2 >> 1] = d;
                      k = B + 12 | 0;
                      b[g + 4 >> 1] = ue(k, 12788, y + 12 | 0, 512) | 0;
                      t = x;
                      s = w;
                      d = v;
                      l = B;
                      break
                  } else {
                      r = 2147483647;
                      h = 0;
                      d = 0;
                      s = 8180;
                      while (1) {
                          m = (Z(v - (e[s >> 1] | 0) << 16 >> 16, u) | 0) >> 16;
                          m = Z(m, m) | 0;
                          n = (Z(t - (e[s + 2 >> 1] | 0) << 16 >> 16, q) | 0) >> 16;
                          m = (Z(n, n) | 0) + m | 0;
                          n = (Z(p - (e[s + 4 >> 1] | 0) << 16 >> 16, o) | 0) >> 16;
                          n = m + (Z(n, n) | 0) | 0;
                          m = (n | 0) < (r | 0);
                          d = m ? h : d;
                          h = h + 1 << 16 >> 16;
                          if (h << 16 >> 16 >= 256) break; else {
                              r = m ? n : r;
                              s = s + 6 | 0;
                          }
                      }
                      n = (d << 16 >> 16) * 3 | 0;
                      b[B >> 1] = b[8180 + (n << 1) >> 1] | 0;
                      b[x >> 1] = b[8180 + (n + 1 << 1) >> 1] | 0;
                      b[w >> 1] = b[8180 + (n + 2 << 1) >> 1] | 0;
                      b[g >> 1] = d;
                      n = B + 6 | 0;
                      m = B + 8 | 0;
                      v = B + 10 | 0;
                      s = e[n >> 1] | 0;
                      h = b[y + 6 >> 1] << 1;
                      r = e[m >> 1] | 0;
                      q = b[y + 8 >> 1] << 1;
                      p = e[v >> 1] | 0;
                      o = b[y + 10 >> 1] << 1;
                      k = 2147483647;
                      t = 0;
                      d = 0;
                      u = 9716;
                      while (1) {
                          l = (Z(h, s - (e[u >> 1] | 0) << 16 >> 16) | 0) >> 16;
                          l = Z(l, l) | 0;
                          c = (Z(q, r - (e[u + 2 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                          l = (Z(c, c) | 0) + l | 0;
                          c = (Z(o, p - (e[u + 4 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                          c = l + (Z(c, c) | 0) | 0;
                          l = (c | 0) < (k | 0);
                          d = l ? t : d;
                          t = t + 1 << 16 >> 16;
                          if (t << 16 >> 16 >= 512) break; else {
                              k = l ? c : k;
                              u = u + 6 | 0;
                          }
                      }
                      k = (d << 16 >> 16) * 3 | 0;
                      b[n >> 1] = b[9716 + (k << 1) >> 1] | 0;
                      b[m >> 1] = b[9716 + (k + 1 << 1) >> 1] | 0;
                      b[v >> 1] = b[9716 + (k + 2 << 1) >> 1] | 0;
                      b[g + 2 >> 1] = d;
                      k = B + 12 | 0;
                      b[g + 4 >> 1] = ue(k, 12788, y + 12 | 0, 512) | 0;
                      t = x;
                      s = w;
                      d = v;
                      l = B;
                      break
                  }
              } else {
                  w = B + 2 | 0;
                  x = B + 4 | 0;
                  n = e[B >> 1] | 0;
                  m = b[y >> 1] << 1;
                  l = e[w >> 1] | 0;
                  k = b[y + 2 >> 1] << 1;
                  c = e[x >> 1] | 0;
                  o = b[y + 4 >> 1] << 1;
                  r = 2147483647;
                  h = 0;
                  d = 0;
                  s = 8180;
                  while (1) {
                      q = (Z(m, n - (e[s >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      q = Z(q, q) | 0;
                      p = (Z(k, l - (e[s + 2 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      q = (Z(p, p) | 0) + q | 0;
                      p = (Z(o, c - (e[s + 4 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      p = q + (Z(p, p) | 0) | 0;
                      q = (p | 0) < (r | 0);
                      d = q ? h : d;
                      h = h + 1 << 16 >> 16;
                      if (h << 16 >> 16 >= 256) break; else {
                          r = q ? p : r;
                          s = s + 6 | 0;
                      }
                  }
                  n = (d << 16 >> 16) * 3 | 0;
                  b[B >> 1] = b[8180 + (n << 1) >> 1] | 0;
                  b[w >> 1] = b[8180 + (n + 1 << 1) >> 1] | 0;
                  b[x >> 1] = b[8180 + (n + 2 << 1) >> 1] | 0;
                  b[g >> 1] = d;
                  n = B + 6 | 0;
                  m = B + 8 | 0;
                  v = B + 10 | 0;
                  s = e[n >> 1] | 0;
                  h = b[y + 6 >> 1] << 1;
                  r = e[m >> 1] | 0;
                  q = b[y + 8 >> 1] << 1;
                  p = e[v >> 1] | 0;
                  o = b[y + 10 >> 1] << 1;
                  k = 2147483647;
                  t = 0;
                  d = 0;
                  u = 9716;
                  while (1) {
                      l = (Z(h, s - (e[u >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      l = Z(l, l) | 0;
                      c = (Z(q, r - (e[u + 2 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      l = (Z(c, c) | 0) + l | 0;
                      c = (Z(o, p - (e[u + 4 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      c = l + (Z(c, c) | 0) | 0;
                      l = (c | 0) < (k | 0);
                      d = l ? t : d;
                      t = t + 1 << 16 >> 16;
                      if (t << 16 >> 16 >= 256) break; else {
                          k = l ? c : k;
                          u = u + 12 | 0;
                      }
                  }
                  k = (d << 16 >> 16) * 6 | 0;
                  b[n >> 1] = b[9716 + (k << 1) >> 1] | 0;
                  b[m >> 1] = b[9716 + ((k | 1) << 1) >> 1] | 0;
                  b[v >> 1] = b[9716 + (k + 2 << 1) >> 1] | 0;
                  b[g + 2 >> 1] = d;
                  k = B + 12 | 0;
                  b[g + 4 >> 1] = ue(k, 16884, y + 12 | 0, 128) | 0;
                  t = w;
                  s = x;
                  d = v;
                  l = B;
              } while (0);
              u = a;
              p = B;
              o = u + 20 | 0;
              do {
                  b[u >> 1] = b[p >> 1] | 0;
                  u = u + 2 | 0;
                  p = p + 2 | 0;
              } while ((u | 0) < (o | 0));
              b[z >> 1] = (e[A >> 1] | 0) + (e[l >> 1] | 0);
              b[z + 2 >> 1] = (e[A + 2 >> 1] | 0) + (e[t >> 1] | 0);
              b[z + 4 >> 1] = (e[A + 4 >> 1] | 0) + (e[s >> 1] | 0);
              b[z + 6 >> 1] = (e[A + 6 >> 1] | 0) + (e[n >> 1] | 0);
              b[z + 8 >> 1] = (e[A + 8 >> 1] | 0) + (e[m >> 1] | 0);
              b[z + 10 >> 1] = (e[A + 10 >> 1] | 0) + (e[d >> 1] | 0);
              b[z + 12 >> 1] = (e[A + 12 >> 1] | 0) + (e[k >> 1] | 0);
              b[z + 14 >> 1] = (e[A + 14 >> 1] | 0) + (e[B + 14 >> 1] | 0);
              b[z + 16 >> 1] = (e[A + 16 >> 1] | 0) + (e[B + 16 >> 1] | 0);
              b[z + 18 >> 1] = (e[A + 18 >> 1] | 0) + (e[B + 18 >> 1] | 0);
              Ae(z, 205, 10, j);
              me(z, f, 10, j);
              i = C;
              return
          }

          function ue(a, c, d, f) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0,
                  v = 0;
              t = a + 2 | 0;
              u = a + 4 | 0;
              v = a + 6 | 0;
              if (f << 16 >> 16 > 0) {
                  m = e[a >> 1] | 0;
                  n = b[d >> 1] << 1;
                  o = e[t >> 1] | 0;
                  p = b[d + 2 >> 1] << 1;
                  q = e[u >> 1] | 0;
                  r = b[d + 4 >> 1] << 1;
                  s = e[v >> 1] | 0;
                  g = b[d + 6 >> 1] << 1;
                  j = 2147483647;
                  k = 0;
                  d = 0;
                  l = c;
                  while (1) {
                      h = (Z(n, m - (e[l >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      h = Z(h, h) | 0;
                      i = (Z(p, o - (e[l + 2 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      h = (Z(i, i) | 0) + h | 0;
                      i = (Z(r, q - (e[l + 4 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      i = h + (Z(i, i) | 0) | 0;
                      h = (Z(g, s - (e[l + 6 >> 1] | 0) << 16 >> 16) | 0) >> 16;
                      h = i + (Z(h, h) | 0) | 0;
                      i = (h | 0) < (j | 0);
                      d = i ? k : d;
                      k = k + 1 << 16 >> 16;
                      if (k << 16 >> 16 >= f << 16 >> 16) break; else {
                          j = i ? h : j;
                          l = l + 8 | 0;
                      }
                  }
              } else d = 0;
              f = d << 16 >> 16 << 2;
              s = f | 1;
              b[a >> 1] = b[c + (f << 1) >> 1] | 0;
              b[t >> 1] = b[c + (s << 1) >> 1] | 0;
              b[u >> 1] = b[c + (s + 1 << 1) >> 1] | 0;
              b[v >> 1] = b[c + ((f | 3) << 1) >> 1] | 0;
              return d | 0
          }

          function ve(a, c, d, f, g, h, j) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              j = j | 0;
              var k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0,
                  z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0;
              I = i;
              i = i + 192 | 0;
              m = I + 160 | 0;
              l = I + 140 | 0;
              C = I + 120 | 0;
              D = I + 100 | 0;
              E = I + 80 | 0;
              F = I + 60 | 0;
              k = I + 40 | 0;
              G = I + 20 | 0;
              H = I;
              ne(c, m, 10, j);
              ne(d, l, 10, j);
              fe(m, C, j);
              fe(l, D, j);
              n = 0;
              d = E;
              c = F;
              o = k;
              while (1) {
                  B = (((b[a + (n << 1) >> 1] | 0) * 21299 | 0) >>> 15) + (e[20980 + (n << 1) >> 1] | 0) | 0;
                  b[d >> 1] = B;
                  b[c >> 1] = (e[m >> 1] | 0) - B;
                  b[o >> 1] = (e[l >> 1] | 0) - B;
                  n = n + 1 | 0;
                  if ((n | 0) == 10) break; else {
                      m = m + 2 | 0;
                      l = l + 2 | 0;
                      d = d + 2 | 0;
                      c = c + 2 | 0;
                      o = o + 2 | 0;
                  }
              }
              b[h >> 1] = we(F, k, 21e3, b[C >> 1] | 0, b[C + 2 >> 1] | 0, b[D >> 1] | 0, b[D + 2 >> 1] | 0, 128) | 0;
              b[h + 2 >> 1] = we(F + 4 | 0, k + 4 | 0, 22024, b[C + 4 >> 1] | 0, b[C + 6 >> 1] | 0, b[D + 4 >> 1] | 0, b[D + 6 >> 1] | 0, 256) | 0;
              y = F + 8 | 0;
              z = k + 8 | 0;
              A = F + 10 | 0;
              B = k + 10 | 0;
              d = b[y >> 1] | 0;
              p = b[C + 8 >> 1] << 1;
              q = b[A >> 1] | 0;
              r = b[C + 10 >> 1] << 1;
              s = b[z >> 1] | 0;
              t = b[D + 8 >> 1] << 1;
              u = b[B >> 1] | 0;
              v = b[D + 10 >> 1] << 1;
              l = 2147483647;
              w = 0;
              o = 0;
              x = 24072;
              c = 0;
              while (1) {
                  m = b[x >> 1] | 0;
                  n = (Z(d - m << 16 >> 16, p) | 0) >> 16;
                  n = Z(n, n) | 0;
                  m = (Z(m + d << 16 >> 16, p) | 0) >> 16;
                  m = Z(m, m) | 0;
                  J = b[x + 2 >> 1] | 0;
                  K = (Z(q - J << 16 >> 16, r) | 0) >> 16;
                  n = (Z(K, K) | 0) + n | 0;
                  J = (Z(J + q << 16 >> 16, r) | 0) >> 16;
                  m = (Z(J, J) | 0) + m | 0;
                  if ((n | 0) < (l | 0) | (m | 0) < (l | 0)) {
                      K = b[x + 4 >> 1] | 0;
                      J = (Z(s - K << 16 >> 16, t) | 0) >> 16;
                      J = (Z(J, J) | 0) + n | 0;
                      K = (Z(K + s << 16 >> 16, t) | 0) >> 16;
                      K = (Z(K, K) | 0) + m | 0;
                      m = b[x + 6 >> 1] | 0;
                      n = (Z(u - m << 16 >> 16, v) | 0) >> 16;
                      n = J + (Z(n, n) | 0) | 0;
                      m = (Z(m + u << 16 >> 16, v) | 0) >> 16;
                      m = K + (Z(m, m) | 0) | 0;
                      K = (n | 0) < (l | 0);
                      n = K ? n : l;
                      J = (m | 0) < (n | 0);
                      n = J ? m : n;
                      o = K | J ? w : o;
                      c = J ? 1 : K ? 0 : c;
                  } else n = l;
                  w = w + 1 << 16 >> 16;
                  if (w << 16 >> 16 >= 256) break; else {
                      l = n;
                      x = x + 8 | 0;
                  }
              }
              n = o << 16 >> 16;
              m = n << 2;
              o = m | 1;
              l = 24072 + (o << 1) | 0;
              d = b[24072 + (m << 1) >> 1] | 0;
              if (!(c << 16 >> 16)) {
                  b[y >> 1] = d;
                  b[A >> 1] = b[l >> 1] | 0;
                  b[z >> 1] = b[24072 + (o + 1 << 1) >> 1] | 0;
                  b[B >> 1] = b[24072 + ((m | 3) << 1) >> 1] | 0;
                  c = n << 1;
              } else {
                  b[y >> 1] = 0 - (d & 65535);
                  b[A >> 1] = 0 - (e[l >> 1] | 0);
                  b[z >> 1] = 0 - (e[24072 + (o + 1 << 1) >> 1] | 0);
                  b[B >> 1] = 0 - (e[24072 + ((m | 3) << 1) >> 1] | 0);
                  c = n << 1 & 65534 | 1;
              }
              b[h + 4 >> 1] = c;
              b[h + 6 >> 1] = we(F + 12 | 0, k + 12 | 0, 26120, b[C + 12 >> 1] | 0, b[C + 14 >> 1] | 0, b[D + 12 >> 1] | 0, b[D + 14 >> 1] | 0, 256) | 0;
              b[h + 8 >> 1] = we(F + 16 | 0, k + 16 | 0, 28168, b[C + 16 >> 1] | 0, b[C + 18 >> 1] | 0, b[D + 16 >> 1] | 0, b[D + 18 >> 1] | 0, 64) | 0;
              l = 0;
              m = G;
              n = H;
              d = E;
              c = F;
              while (1) {
                  J = e[d >> 1] | 0;
                  b[m >> 1] = J + (e[c >> 1] | 0);
                  K = b[k >> 1] | 0;
                  b[n >> 1] = J + (K & 65535);
                  b[a + (l << 1) >> 1] = K;
                  l = l + 1 | 0;
                  if ((l | 0) == 10) break; else {
                      m = m + 2 | 0;
                      n = n + 2 | 0;
                      d = d + 2 | 0;
                      c = c + 2 | 0;
                      k = k + 2 | 0;
                  }
              }
              Ae(G, 205, 10, j);
              Ae(H, 205, 10, j);
              me(G, f, 10, j);
              me(H, g, 10, j);
              i = I;
              return
          }

          function we(a, c, d, e, f, g, h, i) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              h = h | 0;
              i = i | 0;
              var j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0;
              o = b[a >> 1] | 0;
              u = a + 2 | 0;
              q = b[u >> 1] | 0;
              s = b[c >> 1] | 0;
              v = c + 2 | 0;
              t = b[v >> 1] | 0;
              if (i << 16 >> 16 > 0) {
                  n = e << 16 >> 16 << 1;
                  m = f << 16 >> 16 << 1;
                  l = g << 16 >> 16 << 1;
                  f = h << 16 >> 16 << 1;
                  g = 2147483647;
                  j = 0;
                  e = 0;
                  k = d;
                  while (1) {
                      h = (Z(n, o - (b[k >> 1] | 0) | 0) | 0) >> 16;
                      h = Z(h, h) | 0;
                      if (((h | 0) < (g | 0) ? (p = (Z(m, q - (b[k + 2 >> 1] | 0) | 0) | 0) >> 16, p = (Z(p, p) | 0) + h | 0, (p | 0) < (g | 0)) : 0) ? (r = (Z(l, s - (b[k + 4 >> 1] | 0) | 0) | 0) >> 16, r = (Z(r, r) | 0) + p | 0, (r | 0) < (g | 0)) : 0) {
                          h = (Z(f, t - (b[k + 6 >> 1] | 0) | 0) | 0) >> 16;
                          h = (Z(h, h) | 0) + r | 0;
                          w = (h | 0) < (g | 0);
                          h = w ? h : g;
                          e = w ? j : e;
                      } else h = g;
                      j = j + 1 << 16 >> 16;
                      if (j << 16 >> 16 >= i << 16 >> 16) break; else {
                          g = h;
                          k = k + 8 | 0;
                      }
                  }
              } else e = 0;
              w = e << 16 >> 16 << 2;
              i = w | 1;
              b[a >> 1] = b[d + (w << 1) >> 1] | 0;
              b[u >> 1] = b[d + (i << 1) >> 1] | 0;
              b[c >> 1] = b[d + (i + 1 << 1) >> 1] | 0;
              b[v >> 1] = b[d + ((w | 3) << 1) >> 1] | 0;
              return e | 0
          }

          function xe(a) {
              a = a | 0;
              var d = 0, e = 0, f = 0;
              if (!a) {
                  f = -1;
                  return f | 0
              }
              c[a >> 2] = 0;
              d = Je(20) | 0;
              if (!d) {
                  f = -1;
                  return f | 0
              }
              e = d;
              f = e + 20 | 0;
              do {
                  b[e >> 1] = 0;
                  e = e + 2 | 0;
              } while ((e | 0) < (f | 0));
              c[a >> 2] = d;
              f = 0;
              return f | 0
          }

          function ye(a) {
              a = a | 0;
              var c = 0;
              if (!a) {
                  c = -1;
                  return c | 0
              }
              c = a + 20 | 0;
              do {
                  b[a >> 1] = 0;
                  a = a + 2 | 0;
              } while ((a | 0) < (c | 0));
              c = 0;
              return c | 0
          }

          function ze(a) {
              a = a | 0;
              var b = 0;
              if (!a) return;
              b = c[a >> 2] | 0;
              if (!b) return;
              Ke(b);
              c[a >> 2] = 0;
              return
          }

          function Ae(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0;
              if (d << 16 >> 16 <= 0) return;
              f = c << 16 >> 16;
              g = c & 65535;
              h = 0;
              while (1) {
                  e = b[a >> 1] | 0;
                  if (e << 16 >> 16 < c << 16 >> 16) {
                      b[a >> 1] = c;
                      e = (c << 16 >> 16) + f | 0;
                  } else e = (e & 65535) + g | 0;
                  h = h + 1 << 16 >> 16;
                  if (h << 16 >> 16 >= d << 16 >> 16) break; else {
                      c = e & 65535;
                      a = a + 2 | 0;
                  }
              }
              return
          }

          function Be(a, c, d, e) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0;
              f = e << 16 >> 16;
              e = f >>> 2 & 65535;
              if (!(e << 16 >> 16)) return;
              n = f + -1 | 0;
              t = a + 20 | 0;
              p = c + (f + -4 << 1) | 0;
              q = c + (f + -3 << 1) | 0;
              r = c + (f + -2 << 1) | 0;
              s = c + (n << 1) | 0;
              o = c + (f + -11 << 1) | 0;
              n = d + (n << 1) | 0;
              while (1) {
                  c = b[t >> 1] | 0;
                  h = 5;
                  i = t;
                  j = o;
                  k = o + -2 | 0;
                  l = o + -4 | 0;
                  m = o + -6 | 0;
                  g = 2048;
                  a = 2048;
                  f = 2048;
                  d = 2048;
                  while (1) {
                      g = (Z(b[j >> 1] | 0, c) | 0) + g | 0;
                      a = (Z(b[k >> 1] | 0, c) | 0) + a | 0;
                      f = (Z(b[l >> 1] | 0, c) | 0) + f | 0;
                      c = (Z(b[m >> 1] | 0, c) | 0) + d | 0;
                      d = b[i + -2 >> 1] | 0;
                      g = g + (Z(b[j + 2 >> 1] | 0, d) | 0) | 0;
                      a = a + (Z(b[k + 2 >> 1] | 0, d) | 0) | 0;
                      f = f + (Z(b[l + 2 >> 1] | 0, d) | 0) | 0;
                      i = i + -4 | 0;
                      d = c + (Z(b[m + 2 >> 1] | 0, d) | 0) | 0;
                      h = h + -1 << 16 >> 16;
                      c = b[i >> 1] | 0;
                      if (!(h << 16 >> 16)) break; else {
                          j = j + 4 | 0;
                          k = k + 4 | 0;
                          l = l + 4 | 0;
                          m = m + 4 | 0;
                      }
                  }
                  j = (Z(b[s >> 1] | 0, c) | 0) + g | 0;
                  k = (Z(b[r >> 1] | 0, c) | 0) + a | 0;
                  l = (Z(b[q >> 1] | 0, c) | 0) + f | 0;
                  m = (Z(b[p >> 1] | 0, c) | 0) + d | 0;
                  b[n >> 1] = j >>> 12;
                  b[n + -2 >> 1] = k >>> 12;
                  b[n + -4 >> 1] = l >>> 12;
                  b[n + -6 >> 1] = m >>> 12;
                  e = e + -1 << 16 >> 16;
                  if (!(e << 16 >> 16)) break; else {
                      p = p + -8 | 0;
                      q = q + -8 | 0;
                      r = r + -8 | 0;
                      s = s + -8 | 0;
                      o = o + -8 | 0;
                      n = n + -8 | 0;
                  }
              }
              return
          }

          function Ce(a, b) {
              a = a | 0;
              b = b | 0;
              var d = 0;
              d = a + 32768 | 0;
              if ((a | 0) > -1 & (d ^ a | 0) < 0) {
                  c[b >> 2] = 1;
                  d = (a >>> 31) + 2147483647 | 0;
              }
              return d >>> 16 & 65535 | 0
          }

          function De(a, b, d) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              var e = 0, f = 0;
              e = b << 16 >> 16;
              if (!(b << 16 >> 16)) return a | 0;
              if (b << 16 >> 16 > 0) {
                  a = a << 16 >> 16 >> (b << 16 >> 16 > 15 ? 15 : e) & 65535;
                  return a | 0
              }
              f = 0 - e | 0;
              b = a << 16 >> 16;
              f = (f & 65535) << 16 >> 16 > 15 ? 15 : f << 16 >> 16;
              e = b << f;
              if ((e << 16 >> 16 >> f | 0) == (b | 0)) {
                  f = e & 65535;
                  return f | 0
              }
              c[d >> 2] = 1;
              f = a << 16 >> 16 > 0 ? 32767 : -32768;
              return f | 0
          }

          function Ee(a, b, c) {
              a = a | 0;
              b = b | 0;
              c = c | 0;
              if (b << 16 >> 16 > 15) {
                  b = 0;
                  return b | 0
              }
              c = De(a, b, c) | 0;
              if (b << 16 >> 16 > 0) return c + ((1 << (b << 16 >> 16) + -1 & a << 16 >> 16 | 0) != 0 & 1) << 16 >> 16 | 0; else {
                  b = c;
                  return b | 0
              }
              return 0
          }

          function Fe(a, d, f) {
              a = a | 0;
              d = d | 0;
              f = f | 0;
              var g = 0, h = 0, i = 0;
              if ((a | 0) < 1) {
                  b[d >> 1] = 0;
                  f = 0;
                  return f | 0
              }
              h = (pe(a) | 0) & 65534;
              i = h & 65535;
              h = h << 16 >> 16;
              if (i << 16 >> 16 > 0) {
                  g = a << h;
                  if ((g >> h | 0) != (a | 0)) g = a >> 31 ^ 2147483647;
              } else {
                  h = 0 - h << 16;
                  if ((h | 0) < 2031616) g = a >> (h >> 16); else g = 0;
              }
              b[d >> 1] = i;
              d = g >>> 25 & 63;
              d = d >>> 0 > 15 ? d + -16 | 0 : d;
              i = b[30216 + (d << 1) >> 1] | 0;
              a = i << 16;
              g = Z(i - (e[30216 + (d + 1 << 1) >> 1] | 0) << 16 >> 16, g >>> 10 & 32767) | 0;
              if ((g | 0) == 1073741824) {
                  c[f >> 2] = 1;
                  h = 2147483647;
              } else h = g << 1;
              g = a - h | 0;
              if (((g ^ a) & (h ^ a) | 0) >= 0) {
                  f = g;
                  return f | 0
              }
              c[f >> 2] = 1;
              f = (i >>> 15 & 1) + 2147483647 | 0;
              return f | 0
          }

          function Ge(a, b, d) {
              a = a | 0;
              b = b | 0;
              d = d | 0;
              a = (a << 16 >> 16) - (b << 16 >> 16) | 0;
              if ((a + 32768 | 0) >>> 0 <= 65535) {
                  d = a;
                  d = d & 65535;
                  return d | 0
              }
              c[d >> 2] = 1;
              d = (a | 0) > 32767 ? 32767 : -32768;
              d = d & 65535;
              return d | 0
          }

          function He(a, c, d, e, f, g) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              e = e | 0;
              f = f | 0;
              g = g | 0;
              var h = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0,
                  x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0;
              A = i;
              i = i + 48 | 0;
              o = A;
              k = o;
              h = f;
              j = k + 20 | 0;
              do {
                  b[k >> 1] = b[h >> 1] | 0;
                  k = k + 2 | 0;
                  h = h + 2 | 0;
              } while ((k | 0) < (j | 0));
              n = o + 18 | 0;
              s = a + 2 | 0;
              t = a + 4 | 0;
              p = c + 20 | 0;
              u = a + 6 | 0;
              v = a + 8 | 0;
              w = a + 10 | 0;
              x = a + 12 | 0;
              y = a + 14 | 0;
              z = a + 16 | 0;
              q = a + 18 | 0;
              r = a + 20 | 0;
              j = b[n >> 1] | 0;
              h = 5;
              l = c;
              m = d;
              k = o + 20 | 0;
              while (1) {
                  D = b[a >> 1] | 0;
                  C = (Z(D, b[l >> 1] | 0) | 0) + 2048 | 0;
                  D = (Z(b[l + 2 >> 1] | 0, D) | 0) + 2048 | 0;
                  o = j << 16 >> 16;
                  C = C - (Z(o, b[s >> 1] | 0) | 0) | 0;
                  B = b[t >> 1] | 0;
                  o = D - (Z(o, B) | 0) | 0;
                  D = b[n + -2 >> 1] | 0;
                  B = C - (Z(D, B) | 0) | 0;
                  C = b[u >> 1] | 0;
                  D = o - (Z(C, D) | 0) | 0;
                  o = b[n + -4 >> 1] | 0;
                  C = B - (Z(o, C) | 0) | 0;
                  B = b[v >> 1] | 0;
                  o = D - (Z(B, o) | 0) | 0;
                  D = b[n + -6 >> 1] | 0;
                  B = C - (Z(D, B) | 0) | 0;
                  C = b[w >> 1] | 0;
                  D = o - (Z(D, C) | 0) | 0;
                  o = b[n + -8 >> 1] | 0;
                  C = B - (Z(o, C) | 0) | 0;
                  B = b[x >> 1] | 0;
                  o = D - (Z(B, o) | 0) | 0;
                  D = b[n + -10 >> 1] | 0;
                  B = C - (Z(D, B) | 0) | 0;
                  C = b[y >> 1] | 0;
                  D = o - (Z(C, D) | 0) | 0;
                  o = b[n + -12 >> 1] | 0;
                  C = B - (Z(o, C) | 0) | 0;
                  B = b[z >> 1] | 0;
                  o = D - (Z(o, B) | 0) | 0;
                  D = b[n + -14 >> 1] | 0;
                  B = C - (Z(D, B) | 0) | 0;
                  C = b[q >> 1] | 0;
                  D = o - (Z(C, D) | 0) | 0;
                  o = b[n + -16 >> 1] | 0;
                  C = B - (Z(o, C) | 0) | 0;
                  B = b[r >> 1] | 0;
                  o = D - (Z(B, o) | 0) | 0;
                  B = C - (Z(b[n + -18 >> 1] | 0, B) | 0) | 0;
                  B = (B + 134217728 | 0) >>> 0 < 268435455 ? B >>> 12 & 65535 : (B | 0) > 134217727 ? 32767 : -32768;
                  o = o - (Z(b[s >> 1] | 0, B << 16 >> 16) | 0) | 0;
                  n = k + 2 | 0;
                  b[k >> 1] = B;
                  b[m >> 1] = B;
                  j = (o + 134217728 | 0) >>> 0 < 268435455 ? o >>> 12 & 65535 : (o | 0) > 134217727 ? 32767 : -32768;
                  b[n >> 1] = j;
                  b[m + 2 >> 1] = j;
                  h = h + -1 << 16 >> 16;
                  if (!(h << 16 >> 16)) break; else {
                      l = l + 4 | 0;
                      m = m + 4 | 0;
                      k = k + 4 | 0;
                  }
              }
              e = (e << 16 >> 16) + -10 | 0;
              k = e >>> 1 & 65535;
              if (k << 16 >> 16) {
                  o = d + 18 | 0;
                  j = c + 16 | 0;
                  n = b[o >> 1] | 0;
                  l = p;
                  h = d + 20 | 0;
                  while (1) {
                      B = b[a >> 1] | 0;
                      m = (Z(B, b[l >> 1] | 0) | 0) + 2048 | 0;
                      B = (Z(b[j + 6 >> 1] | 0, B) | 0) + 2048 | 0;
                      j = b[s >> 1] | 0;
                      C = n << 16 >> 16;
                      m = m - (Z(C, j) | 0) | 0;
                      D = b[t >> 1] | 0;
                      C = B - (Z(C, D) | 0) | 0;
                      B = b[o + -2 >> 1] | 0;
                      D = m - (Z(B, D) | 0) | 0;
                      m = b[u >> 1] | 0;
                      B = C - (Z(m, B) | 0) | 0;
                      C = b[o + -4 >> 1] | 0;
                      m = D - (Z(C, m) | 0) | 0;
                      D = b[v >> 1] | 0;
                      C = B - (Z(D, C) | 0) | 0;
                      B = b[o + -6 >> 1] | 0;
                      D = m - (Z(B, D) | 0) | 0;
                      m = b[w >> 1] | 0;
                      B = C - (Z(B, m) | 0) | 0;
                      C = b[o + -8 >> 1] | 0;
                      m = D - (Z(C, m) | 0) | 0;
                      D = b[x >> 1] | 0;
                      C = B - (Z(D, C) | 0) | 0;
                      B = b[o + -10 >> 1] | 0;
                      D = m - (Z(B, D) | 0) | 0;
                      m = b[y >> 1] | 0;
                      B = C - (Z(m, B) | 0) | 0;
                      C = b[o + -12 >> 1] | 0;
                      m = D - (Z(C, m) | 0) | 0;
                      D = b[z >> 1] | 0;
                      C = B - (Z(C, D) | 0) | 0;
                      B = b[o + -14 >> 1] | 0;
                      D = m - (Z(B, D) | 0) | 0;
                      m = b[q >> 1] | 0;
                      B = C - (Z(m, B) | 0) | 0;
                      C = b[o + -16 >> 1] | 0;
                      m = D - (Z(C, m) | 0) | 0;
                      D = b[r >> 1] | 0;
                      C = B - (Z(D, C) | 0) | 0;
                      D = m - (Z(b[o + -18 >> 1] | 0, D) | 0) | 0;
                      m = l + 4 | 0;
                      D = (D + 134217728 | 0) >>> 0 < 268435455 ? D >>> 12 & 65535 : (D | 0) > 134217727 ? 32767 : -32768;
                      j = C - (Z(j, D << 16 >> 16) | 0) | 0;
                      o = h + 2 | 0;
                      b[h >> 1] = D;
                      do if ((j + 134217728 | 0) >>> 0 >= 268435455) {
                          h = h + 4 | 0;
                          if ((j | 0) > 134217727) {
                              b[o >> 1] = 32767;
                              j = 32767;
                              break
                          } else {
                              b[o >> 1] = -32768;
                              j = -32768;
                              break
                          }
                      } else {
                          j = j >>> 12 & 65535;
                          b[o >> 1] = j;
                          h = h + 4 | 0;
                      } while (0);
                      k = k + -1 << 16 >> 16;
                      if (!(k << 16 >> 16)) break; else {
                          D = l;
                          n = j;
                          l = m;
                          j = D;
                      }
                  }
              }
              if (!(g << 16 >> 16)) {
                  i = A;
                  return
              }
              k = f;
              h = d + (e << 1) | 0;
              j = k + 20 | 0;
              do {
                  b[k >> 1] = b[h >> 1] | 0;
                  k = k + 2 | 0;
                  h = h + 2 | 0;
              } while ((k | 0) < (j | 0));
              i = A;
              return
          }

          function Ie(a, c, d) {
              a = a | 0;
              c = c | 0;
              d = d | 0;
              b[d >> 1] = b[a >> 1] | 0;
              b[d + 2 >> 1] = ((Z(b[c >> 1] | 0, b[a + 2 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 4 >> 1] = ((Z(b[c + 2 >> 1] | 0, b[a + 4 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 6 >> 1] = ((Z(b[c + 4 >> 1] | 0, b[a + 6 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 8 >> 1] = ((Z(b[c + 6 >> 1] | 0, b[a + 8 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 10 >> 1] = ((Z(b[c + 8 >> 1] | 0, b[a + 10 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 12 >> 1] = ((Z(b[c + 10 >> 1] | 0, b[a + 12 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 14 >> 1] = ((Z(b[c + 12 >> 1] | 0, b[a + 14 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 16 >> 1] = ((Z(b[c + 14 >> 1] | 0, b[a + 16 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 18 >> 1] = ((Z(b[c + 16 >> 1] | 0, b[a + 18 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              b[d + 20 >> 1] = ((Z(b[c + 18 >> 1] | 0, b[a + 20 >> 1] | 0) | 0) + 16384 | 0) >>> 15;
              return
          }

          function Je(a) {
              a = a | 0;
              var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0,
                  r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0,
                  G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0,
                  V = 0;
              do if (a >>> 0 < 245) {
                  s = a >>> 0 < 11 ? 16 : a + 11 & -8;
                  a = s >>> 3;
                  m = c[26] | 0;
                  j = m >>> a;
                  if (j & 3) {
                      e = (j & 1 ^ 1) + a | 0;
                      b = e << 1;
                      d = 144 + (b << 2) | 0;
                      b = 144 + (b + 2 << 2) | 0;
                      f = c[b >> 2] | 0;
                      g = f + 8 | 0;
                      h = c[g >> 2] | 0;
                      do if ((d | 0) == (h | 0)) c[26] = m & ~(1 << e); else {
                          if (h >>> 0 >= (c[30] | 0) >>> 0 ? (l = h + 12 | 0, (c[l >> 2] | 0) == (f | 0)) : 0) {
                              c[l >> 2] = d;
                              c[b >> 2] = h;
                              break
                          }
                          ea();
                      } while (0);
                      U = e << 3;
                      c[f + 4 >> 2] = U | 3;
                      U = f + (U | 4) | 0;
                      c[U >> 2] = c[U >> 2] | 1;
                      break
                  }
                  b = c[28] | 0;
                  if (s >>> 0 > b >>> 0) {
                      if (j) {
                          f = 2 << a;
                          f = j << a & (f | 0 - f);
                          f = (f & 0 - f) + -1 | 0;
                          g = f >>> 12 & 16;
                          f = f >>> g;
                          e = f >>> 5 & 8;
                          f = f >>> e;
                          d = f >>> 2 & 4;
                          f = f >>> d;
                          h = f >>> 1 & 2;
                          f = f >>> h;
                          i = f >>> 1 & 1;
                          i = (e | g | d | h | i) + (f >>> i) | 0;
                          f = i << 1;
                          h = 144 + (f << 2) | 0;
                          f = 144 + (f + 2 << 2) | 0;
                          d = c[f >> 2] | 0;
                          g = d + 8 | 0;
                          e = c[g >> 2] | 0;
                          do if ((h | 0) == (e | 0)) {
                              c[26] = m & ~(1 << i);
                              n = b;
                          } else {
                              if (e >>> 0 >= (c[30] | 0) >>> 0 ? (k = e + 12 | 0, (c[k >> 2] | 0) == (d | 0)) : 0) {
                                  c[k >> 2] = h;
                                  c[f >> 2] = e;
                                  n = c[28] | 0;
                                  break
                              }
                              ea();
                          } while (0);
                          U = i << 3;
                          b = U - s | 0;
                          c[d + 4 >> 2] = s | 3;
                          j = d + s | 0;
                          c[d + (s | 4) >> 2] = b | 1;
                          c[d + U >> 2] = b;
                          if (n) {
                              d = c[31] | 0;
                              e = n >>> 3;
                              h = e << 1;
                              i = 144 + (h << 2) | 0;
                              f = c[26] | 0;
                              e = 1 << e;
                              if (f & e) {
                                  f = 144 + (h + 2 << 2) | 0;
                                  h = c[f >> 2] | 0;
                                  if (h >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                      p = f;
                                      q = h;
                                  }
                              } else {
                                  c[26] = f | e;
                                  p = 144 + (h + 2 << 2) | 0;
                                  q = i;
                              }
                              c[p >> 2] = d;
                              c[q + 12 >> 2] = d;
                              c[d + 8 >> 2] = q;
                              c[d + 12 >> 2] = i;
                          }
                          c[28] = b;
                          c[31] = j;
                          break
                      }
                      a = c[27] | 0;
                      if (a) {
                          f = (a & 0 - a) + -1 | 0;
                          T = f >>> 12 & 16;
                          f = f >>> T;
                          S = f >>> 5 & 8;
                          f = f >>> S;
                          U = f >>> 2 & 4;
                          f = f >>> U;
                          h = f >>> 1 & 2;
                          f = f >>> h;
                          j = f >>> 1 & 1;
                          j = c[408 + ((S | T | U | h | j) + (f >>> j) << 2) >> 2] | 0;
                          f = (c[j + 4 >> 2] & -8) - s | 0;
                          h = j;
                          while (1) {
                              i = c[h + 16 >> 2] | 0;
                              if (!i) {
                                  i = c[h + 20 >> 2] | 0;
                                  if (!i) {
                                      b = f;
                                      break
                                  }
                              }
                              h = (c[i + 4 >> 2] & -8) - s | 0;
                              U = h >>> 0 < f >>> 0;
                              f = U ? h : f;
                              h = i;
                              j = U ? i : j;
                          }
                          a = c[30] | 0;
                          if (j >>> 0 >= a >>> 0 ? (v = j + s | 0, j >>> 0 < v >>> 0) : 0) {
                              e = c[j + 24 >> 2] | 0;
                              i = c[j + 12 >> 2] | 0;
                              do if ((i | 0) == (j | 0)) {
                                  h = j + 20 | 0;
                                  i = c[h >> 2] | 0;
                                  if (!i) {
                                      h = j + 16 | 0;
                                      i = c[h >> 2] | 0;
                                      if (!i) {
                                          t = 0;
                                          break
                                      }
                                  }
                                  while (1) {
                                      g = i + 20 | 0;
                                      f = c[g >> 2] | 0;
                                      if (f) {
                                          i = f;
                                          h = g;
                                          continue
                                      }
                                      g = i + 16 | 0;
                                      f = c[g >> 2] | 0;
                                      if (!f) break; else {
                                          i = f;
                                          h = g;
                                      }
                                  }
                                  if (h >>> 0 < a >>> 0) ea(); else {
                                      c[h >> 2] = 0;
                                      t = i;
                                      break
                                  }
                              } else {
                                  h = c[j + 8 >> 2] | 0;
                                  if ((h >>> 0 >= a >>> 0 ? (d = h + 12 | 0, (c[d >> 2] | 0) == (j | 0)) : 0) ? (o = i + 8 | 0, (c[o >> 2] | 0) == (j | 0)) : 0) {
                                      c[d >> 2] = i;
                                      c[o >> 2] = h;
                                      t = i;
                                      break
                                  }
                                  ea();
                              } while (0);
                              do if (e) {
                                  h = c[j + 28 >> 2] | 0;
                                  g = 408 + (h << 2) | 0;
                                  if ((j | 0) == (c[g >> 2] | 0)) {
                                      c[g >> 2] = t;
                                      if (!t) {
                                          c[27] = c[27] & ~(1 << h);
                                          break
                                      }
                                  } else {
                                      if (e >>> 0 < (c[30] | 0) >>> 0) ea();
                                      h = e + 16 | 0;
                                      if ((c[h >> 2] | 0) == (j | 0)) c[h >> 2] = t; else c[e + 20 >> 2] = t;
                                      if (!t) break
                                  }
                                  g = c[30] | 0;
                                  if (t >>> 0 < g >>> 0) ea();
                                  c[t + 24 >> 2] = e;
                                  h = c[j + 16 >> 2] | 0;
                                  do if (h) if (h >>> 0 < g >>> 0) ea(); else {
                                      c[t + 16 >> 2] = h;
                                      c[h + 24 >> 2] = t;
                                      break
                                  } while (0);
                                  h = c[j + 20 >> 2] | 0;
                                  if (h) if (h >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                      c[t + 20 >> 2] = h;
                                      c[h + 24 >> 2] = t;
                                      break
                                  }
                              } while (0);
                              if (b >>> 0 < 16) {
                                  U = b + s | 0;
                                  c[j + 4 >> 2] = U | 3;
                                  U = j + (U + 4) | 0;
                                  c[U >> 2] = c[U >> 2] | 1;
                              } else {
                                  c[j + 4 >> 2] = s | 3;
                                  c[j + (s | 4) >> 2] = b | 1;
                                  c[j + (b + s) >> 2] = b;
                                  e = c[28] | 0;
                                  if (e) {
                                      d = c[31] | 0;
                                      f = e >>> 3;
                                      h = f << 1;
                                      i = 144 + (h << 2) | 0;
                                      g = c[26] | 0;
                                      f = 1 << f;
                                      if (g & f) {
                                          h = 144 + (h + 2 << 2) | 0;
                                          g = c[h >> 2] | 0;
                                          if (g >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                              u = h;
                                              w = g;
                                          }
                                      } else {
                                          c[26] = g | f;
                                          u = 144 + (h + 2 << 2) | 0;
                                          w = i;
                                      }
                                      c[u >> 2] = d;
                                      c[w + 12 >> 2] = d;
                                      c[d + 8 >> 2] = w;
                                      c[d + 12 >> 2] = i;
                                  }
                                  c[28] = b;
                                  c[31] = v;
                              }
                              g = j + 8 | 0;
                              break
                          }
                          ea();
                      } else V = 154;
                  } else V = 154;
              } else if (a >>> 0 <= 4294967231) {
                  a = a + 11 | 0;
                  w = a & -8;
                  m = c[27] | 0;
                  if (m) {
                      j = 0 - w | 0;
                      a = a >>> 8;
                      if (a) if (w >>> 0 > 16777215) l = 31; else {
                          v = (a + 1048320 | 0) >>> 16 & 8;
                          V = a << v;
                          u = (V + 520192 | 0) >>> 16 & 4;
                          V = V << u;
                          l = (V + 245760 | 0) >>> 16 & 2;
                          l = 14 - (u | v | l) + (V << l >>> 15) | 0;
                          l = w >>> (l + 7 | 0) & 1 | l << 1;
                      } else l = 0;
                      a = c[408 + (l << 2) >> 2] | 0;
                      a:do if (!a) {
                          i = 0;
                          a = 0;
                          V = 86;
                      } else {
                          d = j;
                          i = 0;
                          b = w << ((l | 0) == 31 ? 0 : 25 - (l >>> 1) | 0);
                          k = a;
                          a = 0;
                          while (1) {
                              e = c[k + 4 >> 2] & -8;
                              j = e - w | 0;
                              if (j >>> 0 < d >>> 0) if ((e | 0) == (w | 0)) {
                                  e = k;
                                  a = k;
                                  V = 90;
                                  break a
                              } else a = k; else j = d;
                              V = c[k + 20 >> 2] | 0;
                              k = c[k + 16 + (b >>> 31 << 2) >> 2] | 0;
                              i = (V | 0) == 0 | (V | 0) == (k | 0) ? i : V;
                              if (!k) {
                                  V = 86;
                                  break
                              } else {
                                  d = j;
                                  b = b << 1;
                              }
                          }
                      } while (0);
                      if ((V | 0) == 86) {
                          if ((i | 0) == 0 & (a | 0) == 0) {
                              a = 2 << l;
                              a = m & (a | 0 - a);
                              if (!a) {
                                  s = w;
                                  V = 154;
                                  break
                              }
                              a = (a & 0 - a) + -1 | 0;
                              t = a >>> 12 & 16;
                              a = a >>> t;
                              q = a >>> 5 & 8;
                              a = a >>> q;
                              u = a >>> 2 & 4;
                              a = a >>> u;
                              v = a >>> 1 & 2;
                              a = a >>> v;
                              i = a >>> 1 & 1;
                              i = c[408 + ((q | t | u | v | i) + (a >>> i) << 2) >> 2] | 0;
                              a = 0;
                          }
                          if (!i) {
                              q = j;
                              p = a;
                          } else {
                              e = i;
                              V = 90;
                          }
                      }
                      if ((V | 0) == 90) while (1) {
                          V = 0;
                          v = (c[e + 4 >> 2] & -8) - w | 0;
                          i = v >>> 0 < j >>> 0;
                          j = i ? v : j;
                          a = i ? e : a;
                          i = c[e + 16 >> 2] | 0;
                          if (i) {
                              e = i;
                              V = 90;
                              continue
                          }
                          e = c[e + 20 >> 2] | 0;
                          if (!e) {
                              q = j;
                              p = a;
                              break
                          } else V = 90;
                      }
                      if ((p | 0) != 0 ? q >>> 0 < ((c[28] | 0) - w | 0) >>> 0 : 0) {
                          a = c[30] | 0;
                          if (p >>> 0 >= a >>> 0 ? (H = p + w | 0, p >>> 0 < H >>> 0) : 0) {
                              j = c[p + 24 >> 2] | 0;
                              i = c[p + 12 >> 2] | 0;
                              do if ((i | 0) == (p | 0)) {
                                  h = p + 20 | 0;
                                  i = c[h >> 2] | 0;
                                  if (!i) {
                                      h = p + 16 | 0;
                                      i = c[h >> 2] | 0;
                                      if (!i) {
                                          y = 0;
                                          break
                                      }
                                  }
                                  while (1) {
                                      g = i + 20 | 0;
                                      f = c[g >> 2] | 0;
                                      if (f) {
                                          i = f;
                                          h = g;
                                          continue
                                      }
                                      g = i + 16 | 0;
                                      f = c[g >> 2] | 0;
                                      if (!f) break; else {
                                          i = f;
                                          h = g;
                                      }
                                  }
                                  if (h >>> 0 < a >>> 0) ea(); else {
                                      c[h >> 2] = 0;
                                      y = i;
                                      break
                                  }
                              } else {
                                  h = c[p + 8 >> 2] | 0;
                                  if ((h >>> 0 >= a >>> 0 ? (r = h + 12 | 0, (c[r >> 2] | 0) == (p | 0)) : 0) ? (s = i + 8 | 0, (c[s >> 2] | 0) == (p | 0)) : 0) {
                                      c[r >> 2] = i;
                                      c[s >> 2] = h;
                                      y = i;
                                      break
                                  }
                                  ea();
                              } while (0);
                              do if (j) {
                                  i = c[p + 28 >> 2] | 0;
                                  h = 408 + (i << 2) | 0;
                                  if ((p | 0) == (c[h >> 2] | 0)) {
                                      c[h >> 2] = y;
                                      if (!y) {
                                          c[27] = c[27] & ~(1 << i);
                                          break
                                      }
                                  } else {
                                      if (j >>> 0 < (c[30] | 0) >>> 0) ea();
                                      h = j + 16 | 0;
                                      if ((c[h >> 2] | 0) == (p | 0)) c[h >> 2] = y; else c[j + 20 >> 2] = y;
                                      if (!y) break
                                  }
                                  i = c[30] | 0;
                                  if (y >>> 0 < i >>> 0) ea();
                                  c[y + 24 >> 2] = j;
                                  h = c[p + 16 >> 2] | 0;
                                  do if (h) if (h >>> 0 < i >>> 0) ea(); else {
                                      c[y + 16 >> 2] = h;
                                      c[h + 24 >> 2] = y;
                                      break
                                  } while (0);
                                  h = c[p + 20 >> 2] | 0;
                                  if (h) if (h >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                      c[y + 20 >> 2] = h;
                                      c[h + 24 >> 2] = y;
                                      break
                                  }
                              } while (0);
                              b:do if (q >>> 0 >= 16) {
                                  c[p + 4 >> 2] = w | 3;
                                  c[p + (w | 4) >> 2] = q | 1;
                                  c[p + (q + w) >> 2] = q;
                                  i = q >>> 3;
                                  if (q >>> 0 < 256) {
                                      g = i << 1;
                                      e = 144 + (g << 2) | 0;
                                      f = c[26] | 0;
                                      h = 1 << i;
                                      if (f & h) {
                                          h = 144 + (g + 2 << 2) | 0;
                                          g = c[h >> 2] | 0;
                                          if (g >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                              z = h;
                                              A = g;
                                          }
                                      } else {
                                          c[26] = f | h;
                                          z = 144 + (g + 2 << 2) | 0;
                                          A = e;
                                      }
                                      c[z >> 2] = H;
                                      c[A + 12 >> 2] = H;
                                      c[p + (w + 8) >> 2] = A;
                                      c[p + (w + 12) >> 2] = e;
                                      break
                                  }
                                  d = q >>> 8;
                                  if (d) if (q >>> 0 > 16777215) i = 31; else {
                                      T = (d + 1048320 | 0) >>> 16 & 8;
                                      U = d << T;
                                      S = (U + 520192 | 0) >>> 16 & 4;
                                      U = U << S;
                                      i = (U + 245760 | 0) >>> 16 & 2;
                                      i = 14 - (S | T | i) + (U << i >>> 15) | 0;
                                      i = q >>> (i + 7 | 0) & 1 | i << 1;
                                  } else i = 0;
                                  h = 408 + (i << 2) | 0;
                                  c[p + (w + 28) >> 2] = i;
                                  c[p + (w + 20) >> 2] = 0;
                                  c[p + (w + 16) >> 2] = 0;
                                  g = c[27] | 0;
                                  f = 1 << i;
                                  if (!(g & f)) {
                                      c[27] = g | f;
                                      c[h >> 2] = H;
                                      c[p + (w + 24) >> 2] = h;
                                      c[p + (w + 12) >> 2] = H;
                                      c[p + (w + 8) >> 2] = H;
                                      break
                                  }
                                  d = c[h >> 2] | 0;
                                  c:do if ((c[d + 4 >> 2] & -8 | 0) != (q | 0)) {
                                      i = q << ((i | 0) == 31 ? 0 : 25 - (i >>> 1) | 0);
                                      while (1) {
                                          b = d + 16 + (i >>> 31 << 2) | 0;
                                          h = c[b >> 2] | 0;
                                          if (!h) break;
                                          if ((c[h + 4 >> 2] & -8 | 0) == (q | 0)) {
                                              C = h;
                                              break c
                                          } else {
                                              i = i << 1;
                                              d = h;
                                          }
                                      }
                                      if (b >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                          c[b >> 2] = H;
                                          c[p + (w + 24) >> 2] = d;
                                          c[p + (w + 12) >> 2] = H;
                                          c[p + (w + 8) >> 2] = H;
                                          break b
                                      }
                                  } else C = d; while (0);
                                  d = C + 8 | 0;
                                  b = c[d >> 2] | 0;
                                  U = c[30] | 0;
                                  if (b >>> 0 >= U >>> 0 & C >>> 0 >= U >>> 0) {
                                      c[b + 12 >> 2] = H;
                                      c[d >> 2] = H;
                                      c[p + (w + 8) >> 2] = b;
                                      c[p + (w + 12) >> 2] = C;
                                      c[p + (w + 24) >> 2] = 0;
                                      break
                                  } else ea();
                              } else {
                                  U = q + w | 0;
                                  c[p + 4 >> 2] = U | 3;
                                  U = p + (U + 4) | 0;
                                  c[U >> 2] = c[U >> 2] | 1;
                              } while (0);
                              g = p + 8 | 0;
                              break
                          }
                          ea();
                      } else {
                          s = w;
                          V = 154;
                      }
                  } else {
                      s = w;
                      V = 154;
                  }
              } else {
                  s = -1;
                  V = 154;
              } while (0);
              d:do if ((V | 0) == 154) {
                  a = c[28] | 0;
                  if (a >>> 0 >= s >>> 0) {
                      b = a - s | 0;
                      d = c[31] | 0;
                      if (b >>> 0 > 15) {
                          c[31] = d + s;
                          c[28] = b;
                          c[d + (s + 4) >> 2] = b | 1;
                          c[d + a >> 2] = b;
                          c[d + 4 >> 2] = s | 3;
                      } else {
                          c[28] = 0;
                          c[31] = 0;
                          c[d + 4 >> 2] = a | 3;
                          V = d + (a + 4) | 0;
                          c[V >> 2] = c[V >> 2] | 1;
                      }
                      g = d + 8 | 0;
                      break
                  }
                  a = c[29] | 0;
                  if (a >>> 0 > s >>> 0) {
                      V = a - s | 0;
                      c[29] = V;
                      g = c[32] | 0;
                      c[32] = g + s;
                      c[g + (s + 4) >> 2] = V | 1;
                      c[g + 4 >> 2] = s | 3;
                      g = g + 8 | 0;
                      break
                  }
                  if (!(c[144] | 0)) Me();
                  m = s + 48 | 0;
                  d = c[146] | 0;
                  l = s + 47 | 0;
                  e = d + l | 0;
                  d = 0 - d | 0;
                  k = e & d;
                  if (k >>> 0 > s >>> 0) {
                      a = c[136] | 0;
                      if ((a | 0) != 0 ? (C = c[134] | 0, H = C + k | 0, H >>> 0 <= C >>> 0 | H >>> 0 > a >>> 0) : 0) {
                          g = 0;
                          break
                      }
                      e:do if (!(c[137] & 4)) {
                          a = c[32] | 0;
                          f:do if (a) {
                              i = 552;
                              while (1) {
                                  j = c[i >> 2] | 0;
                                  if (j >>> 0 <= a >>> 0 ? (x = i + 4 | 0, (j + (c[x >> 2] | 0) | 0) >>> 0 > a >>> 0) : 0) {
                                      g = i;
                                      a = x;
                                      break
                                  }
                                  i = c[i + 8 >> 2] | 0;
                                  if (!i) {
                                      V = 172;
                                      break f
                                  }
                              }
                              j = e - (c[29] | 0) & d;
                              if (j >>> 0 < 2147483647) {
                                  i = ga(j | 0) | 0;
                                  H = (i | 0) == ((c[g >> 2] | 0) + (c[a >> 2] | 0) | 0);
                                  a = H ? j : 0;
                                  if (H) {
                                      if ((i | 0) != (-1 | 0)) {
                                          A = i;
                                          t = a;
                                          V = 192;
                                          break e
                                      }
                                  } else V = 182;
                              } else a = 0;
                          } else V = 172; while (0);
                          do if ((V | 0) == 172) {
                              g = ga(0) | 0;
                              if ((g | 0) != (-1 | 0)) {
                                  a = g;
                                  j = c[145] | 0;
                                  i = j + -1 | 0;
                                  if (!(i & a)) j = k; else j = k - a + (i + a & 0 - j) | 0;
                                  a = c[134] | 0;
                                  i = a + j | 0;
                                  if (j >>> 0 > s >>> 0 & j >>> 0 < 2147483647) {
                                      H = c[136] | 0;
                                      if ((H | 0) != 0 ? i >>> 0 <= a >>> 0 | i >>> 0 > H >>> 0 : 0) {
                                          a = 0;
                                          break
                                      }
                                      i = ga(j | 0) | 0;
                                      V = (i | 0) == (g | 0);
                                      a = V ? j : 0;
                                      if (V) {
                                          A = g;
                                          t = a;
                                          V = 192;
                                          break e
                                      } else V = 182;
                                  } else a = 0;
                              } else a = 0;
                          } while (0);
                          g:do if ((V | 0) == 182) {
                              g = 0 - j | 0;
                              do if (m >>> 0 > j >>> 0 & (j >>> 0 < 2147483647 & (i | 0) != (-1 | 0)) ? (B = c[146] | 0, B = l - j + B & 0 - B, B >>> 0 < 2147483647) : 0) if ((ga(B | 0) | 0) == (-1 | 0)) {
                                  ga(g | 0) | 0;
                                  break g
                              } else {
                                  j = B + j | 0;
                                  break
                              } while (0);
                              if ((i | 0) != (-1 | 0)) {
                                  A = i;
                                  t = j;
                                  V = 192;
                                  break e
                              }
                          } while (0);
                          c[137] = c[137] | 4;
                          V = 189;
                      } else {
                          a = 0;
                          V = 189;
                      } while (0);
                      if ((((V | 0) == 189 ? k >>> 0 < 2147483647 : 0) ? (D = ga(k | 0) | 0, E = ga(0) | 0, D >>> 0 < E >>> 0 & ((D | 0) != (-1 | 0) & (E | 0) != (-1 | 0))) : 0) ? (F = E - D | 0, G = F >>> 0 > (s + 40 | 0) >>> 0, G) : 0) {
                          A = D;
                          t = G ? F : a;
                          V = 192;
                      }
                      if ((V | 0) == 192) {
                          j = (c[134] | 0) + t | 0;
                          c[134] = j;
                          if (j >>> 0 > (c[135] | 0) >>> 0) c[135] = j;
                          q = c[32] | 0;
                          h:do if (q) {
                              g = 552;
                              do {
                                  a = c[g >> 2] | 0;
                                  j = g + 4 | 0;
                                  i = c[j >> 2] | 0;
                                  if ((A | 0) == (a + i | 0)) {
                                      I = a;
                                      J = j;
                                      K = i;
                                      L = g;
                                      V = 202;
                                      break
                                  }
                                  g = c[g + 8 >> 2] | 0;
                              } while ((g | 0) != 0);
                              if (((V | 0) == 202 ? (c[L + 12 >> 2] & 8 | 0) == 0 : 0) ? q >>> 0 < A >>> 0 & q >>> 0 >= I >>> 0 : 0) {
                                  c[J >> 2] = K + t;
                                  V = (c[29] | 0) + t | 0;
                                  U = q + 8 | 0;
                                  U = (U & 7 | 0) == 0 ? 0 : 0 - U & 7;
                                  T = V - U | 0;
                                  c[32] = q + U;
                                  c[29] = T;
                                  c[q + (U + 4) >> 2] = T | 1;
                                  c[q + (V + 4) >> 2] = 40;
                                  c[33] = c[148];
                                  break
                              }
                              j = c[30] | 0;
                              if (A >>> 0 < j >>> 0) {
                                  c[30] = A;
                                  j = A;
                              }
                              i = A + t | 0;
                              a = 552;
                              while (1) {
                                  if ((c[a >> 2] | 0) == (i | 0)) {
                                      g = a;
                                      i = a;
                                      V = 210;
                                      break
                                  }
                                  a = c[a + 8 >> 2] | 0;
                                  if (!a) {
                                      i = 552;
                                      break
                                  }
                              }
                              if ((V | 0) == 210) if (!(c[i + 12 >> 2] & 8)) {
                                  c[g >> 2] = A;
                                  o = i + 4 | 0;
                                  c[o >> 2] = (c[o >> 2] | 0) + t;
                                  o = A + 8 | 0;
                                  o = (o & 7 | 0) == 0 ? 0 : 0 - o & 7;
                                  l = A + (t + 8) | 0;
                                  l = (l & 7 | 0) == 0 ? 0 : 0 - l & 7;
                                  i = A + (l + t) | 0;
                                  p = o + s | 0;
                                  n = A + p | 0;
                                  a = i - (A + o) - s | 0;
                                  c[A + (o + 4) >> 2] = s | 3;
                                  i:do if ((i | 0) != (q | 0)) {
                                      if ((i | 0) == (c[31] | 0)) {
                                          V = (c[28] | 0) + a | 0;
                                          c[28] = V;
                                          c[31] = n;
                                          c[A + (p + 4) >> 2] = V | 1;
                                          c[A + (V + p) >> 2] = V;
                                          break
                                      }
                                      b = t + 4 | 0;
                                      h = c[A + (b + l) >> 2] | 0;
                                      if ((h & 3 | 0) == 1) {
                                          k = h & -8;
                                          e = h >>> 3;
                                          j:do if (h >>> 0 >= 256) {
                                              d = c[A + ((l | 24) + t) >> 2] | 0;
                                              g = c[A + (t + 12 + l) >> 2] | 0;
                                              k:do if ((g | 0) == (i | 0)) {
                                                  f = l | 16;
                                                  g = A + (b + f) | 0;
                                                  h = c[g >> 2] | 0;
                                                  if (!h) {
                                                      g = A + (f + t) | 0;
                                                      h = c[g >> 2] | 0;
                                                      if (!h) {
                                                          R = 0;
                                                          break
                                                      }
                                                  }
                                                  while (1) {
                                                      f = h + 20 | 0;
                                                      e = c[f >> 2] | 0;
                                                      if (e) {
                                                          h = e;
                                                          g = f;
                                                          continue
                                                      }
                                                      f = h + 16 | 0;
                                                      e = c[f >> 2] | 0;
                                                      if (!e) break; else {
                                                          h = e;
                                                          g = f;
                                                      }
                                                  }
                                                  if (g >>> 0 < j >>> 0) ea(); else {
                                                      c[g >> 2] = 0;
                                                      R = h;
                                                      break
                                                  }
                                              } else {
                                                  f = c[A + ((l | 8) + t) >> 2] | 0;
                                                  do if (f >>> 0 >= j >>> 0) {
                                                      j = f + 12 | 0;
                                                      if ((c[j >> 2] | 0) != (i | 0)) break;
                                                      h = g + 8 | 0;
                                                      if ((c[h >> 2] | 0) != (i | 0)) break;
                                                      c[j >> 2] = g;
                                                      c[h >> 2] = f;
                                                      R = g;
                                                      break k
                                                  } while (0);
                                                  ea();
                                              } while (0);
                                              if (!d) break;
                                              j = c[A + (t + 28 + l) >> 2] | 0;
                                              h = 408 + (j << 2) | 0;
                                              do if ((i | 0) != (c[h >> 2] | 0)) {
                                                  if (d >>> 0 < (c[30] | 0) >>> 0) ea();
                                                  h = d + 16 | 0;
                                                  if ((c[h >> 2] | 0) == (i | 0)) c[h >> 2] = R; else c[d + 20 >> 2] = R;
                                                  if (!R) break j
                                              } else {
                                                  c[h >> 2] = R;
                                                  if (R) break;
                                                  c[27] = c[27] & ~(1 << j);
                                                  break j
                                              } while (0);
                                              j = c[30] | 0;
                                              if (R >>> 0 < j >>> 0) ea();
                                              c[R + 24 >> 2] = d;
                                              i = l | 16;
                                              h = c[A + (i + t) >> 2] | 0;
                                              do if (h) if (h >>> 0 < j >>> 0) ea(); else {
                                                  c[R + 16 >> 2] = h;
                                                  c[h + 24 >> 2] = R;
                                                  break
                                              } while (0);
                                              i = c[A + (b + i) >> 2] | 0;
                                              if (!i) break;
                                              if (i >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                                  c[R + 20 >> 2] = i;
                                                  c[i + 24 >> 2] = R;
                                                  break
                                              }
                                          } else {
                                              h = c[A + ((l | 8) + t) >> 2] | 0;
                                              g = c[A + (t + 12 + l) >> 2] | 0;
                                              f = 144 + (e << 1 << 2) | 0;
                                              do if ((h | 0) != (f | 0)) {
                                                  if (h >>> 0 >= j >>> 0 ? (c[h + 12 >> 2] | 0) == (i | 0) : 0) break;
                                                  ea();
                                              } while (0);
                                              if ((g | 0) == (h | 0)) {
                                                  c[26] = c[26] & ~(1 << e);
                                                  break
                                              }
                                              do if ((g | 0) == (f | 0)) M = g + 8 | 0; else {
                                                  if (g >>> 0 >= j >>> 0 ? (N = g + 8 | 0, (c[N >> 2] | 0) == (i | 0)) : 0) {
                                                      M = N;
                                                      break
                                                  }
                                                  ea();
                                              } while (0);
                                              c[h + 12 >> 2] = g;
                                              c[M >> 2] = h;
                                          } while (0);
                                          i = A + ((k | l) + t) | 0;
                                          a = k + a | 0;
                                      }
                                      i = i + 4 | 0;
                                      c[i >> 2] = c[i >> 2] & -2;
                                      c[A + (p + 4) >> 2] = a | 1;
                                      c[A + (a + p) >> 2] = a;
                                      i = a >>> 3;
                                      if (a >>> 0 < 256) {
                                          g = i << 1;
                                          e = 144 + (g << 2) | 0;
                                          f = c[26] | 0;
                                          h = 1 << i;
                                          do if (!(f & h)) {
                                              c[26] = f | h;
                                              S = 144 + (g + 2 << 2) | 0;
                                              T = e;
                                          } else {
                                              h = 144 + (g + 2 << 2) | 0;
                                              g = c[h >> 2] | 0;
                                              if (g >>> 0 >= (c[30] | 0) >>> 0) {
                                                  S = h;
                                                  T = g;
                                                  break
                                              }
                                              ea();
                                          } while (0);
                                          c[S >> 2] = n;
                                          c[T + 12 >> 2] = n;
                                          c[A + (p + 8) >> 2] = T;
                                          c[A + (p + 12) >> 2] = e;
                                          break
                                      }
                                      d = a >>> 8;
                                      do if (!d) i = 0; else {
                                          if (a >>> 0 > 16777215) {
                                              i = 31;
                                              break
                                          }
                                          T = (d + 1048320 | 0) >>> 16 & 8;
                                          V = d << T;
                                          S = (V + 520192 | 0) >>> 16 & 4;
                                          V = V << S;
                                          i = (V + 245760 | 0) >>> 16 & 2;
                                          i = 14 - (S | T | i) + (V << i >>> 15) | 0;
                                          i = a >>> (i + 7 | 0) & 1 | i << 1;
                                      } while (0);
                                      h = 408 + (i << 2) | 0;
                                      c[A + (p + 28) >> 2] = i;
                                      c[A + (p + 20) >> 2] = 0;
                                      c[A + (p + 16) >> 2] = 0;
                                      g = c[27] | 0;
                                      f = 1 << i;
                                      if (!(g & f)) {
                                          c[27] = g | f;
                                          c[h >> 2] = n;
                                          c[A + (p + 24) >> 2] = h;
                                          c[A + (p + 12) >> 2] = n;
                                          c[A + (p + 8) >> 2] = n;
                                          break
                                      }
                                      d = c[h >> 2] | 0;
                                      l:do if ((c[d + 4 >> 2] & -8 | 0) != (a | 0)) {
                                          i = a << ((i | 0) == 31 ? 0 : 25 - (i >>> 1) | 0);
                                          while (1) {
                                              b = d + 16 + (i >>> 31 << 2) | 0;
                                              h = c[b >> 2] | 0;
                                              if (!h) break;
                                              if ((c[h + 4 >> 2] & -8 | 0) == (a | 0)) {
                                                  U = h;
                                                  break l
                                              } else {
                                                  i = i << 1;
                                                  d = h;
                                              }
                                          }
                                          if (b >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                              c[b >> 2] = n;
                                              c[A + (p + 24) >> 2] = d;
                                              c[A + (p + 12) >> 2] = n;
                                              c[A + (p + 8) >> 2] = n;
                                              break i
                                          }
                                      } else U = d; while (0);
                                      d = U + 8 | 0;
                                      b = c[d >> 2] | 0;
                                      V = c[30] | 0;
                                      if (b >>> 0 >= V >>> 0 & U >>> 0 >= V >>> 0) {
                                          c[b + 12 >> 2] = n;
                                          c[d >> 2] = n;
                                          c[A + (p + 8) >> 2] = b;
                                          c[A + (p + 12) >> 2] = U;
                                          c[A + (p + 24) >> 2] = 0;
                                          break
                                      } else ea();
                                  } else {
                                      V = (c[29] | 0) + a | 0;
                                      c[29] = V;
                                      c[32] = n;
                                      c[A + (p + 4) >> 2] = V | 1;
                                  } while (0);
                                  g = A + (o | 8) | 0;
                                  break d
                              } else i = 552;
                              while (1) {
                                  g = c[i >> 2] | 0;
                                  if (g >>> 0 <= q >>> 0 ? (h = c[i + 4 >> 2] | 0, f = g + h | 0, f >>> 0 > q >>> 0) : 0) break;
                                  i = c[i + 8 >> 2] | 0;
                              }
                              i = g + (h + -39) | 0;
                              i = g + (h + -47 + ((i & 7 | 0) == 0 ? 0 : 0 - i & 7)) | 0;
                              j = q + 16 | 0;
                              i = i >>> 0 < j >>> 0 ? q : i;
                              h = i + 8 | 0;
                              g = A + 8 | 0;
                              g = (g & 7 | 0) == 0 ? 0 : 0 - g & 7;
                              V = t + -40 - g | 0;
                              c[32] = A + g;
                              c[29] = V;
                              c[A + (g + 4) >> 2] = V | 1;
                              c[A + (t + -36) >> 2] = 40;
                              c[33] = c[148];
                              g = i + 4 | 0;
                              c[g >> 2] = 27;
                              c[h >> 2] = c[138];
                              c[h + 4 >> 2] = c[139];
                              c[h + 8 >> 2] = c[140];
                              c[h + 12 >> 2] = c[141];
                              c[138] = A;
                              c[139] = t;
                              c[141] = 0;
                              c[140] = h;
                              h = i + 28 | 0;
                              c[h >> 2] = 7;
                              if ((i + 32 | 0) >>> 0 < f >>> 0) do {
                                  V = h;
                                  h = h + 4 | 0;
                                  c[h >> 2] = 7;
                              } while ((V + 8 | 0) >>> 0 < f >>> 0);
                              if ((i | 0) != (q | 0)) {
                                  a = i - q | 0;
                                  c[g >> 2] = c[g >> 2] & -2;
                                  c[q + 4 >> 2] = a | 1;
                                  c[i >> 2] = a;
                                  f = a >>> 3;
                                  if (a >>> 0 < 256) {
                                      h = f << 1;
                                      i = 144 + (h << 2) | 0;
                                      g = c[26] | 0;
                                      e = 1 << f;
                                      if (g & e) {
                                          d = 144 + (h + 2 << 2) | 0;
                                          b = c[d >> 2] | 0;
                                          if (b >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                              O = d;
                                              P = b;
                                          }
                                      } else {
                                          c[26] = g | e;
                                          O = 144 + (h + 2 << 2) | 0;
                                          P = i;
                                      }
                                      c[O >> 2] = q;
                                      c[P + 12 >> 2] = q;
                                      c[q + 8 >> 2] = P;
                                      c[q + 12 >> 2] = i;
                                      break
                                  }
                                  d = a >>> 8;
                                  if (d) if (a >>> 0 > 16777215) h = 31; else {
                                      U = (d + 1048320 | 0) >>> 16 & 8;
                                      V = d << U;
                                      T = (V + 520192 | 0) >>> 16 & 4;
                                      V = V << T;
                                      h = (V + 245760 | 0) >>> 16 & 2;
                                      h = 14 - (T | U | h) + (V << h >>> 15) | 0;
                                      h = a >>> (h + 7 | 0) & 1 | h << 1;
                                  } else h = 0;
                                  e = 408 + (h << 2) | 0;
                                  c[q + 28 >> 2] = h;
                                  c[q + 20 >> 2] = 0;
                                  c[j >> 2] = 0;
                                  d = c[27] | 0;
                                  b = 1 << h;
                                  if (!(d & b)) {
                                      c[27] = d | b;
                                      c[e >> 2] = q;
                                      c[q + 24 >> 2] = e;
                                      c[q + 12 >> 2] = q;
                                      c[q + 8 >> 2] = q;
                                      break
                                  }
                                  d = c[e >> 2] | 0;
                                  m:do if ((c[d + 4 >> 2] & -8 | 0) != (a | 0)) {
                                      h = a << ((h | 0) == 31 ? 0 : 25 - (h >>> 1) | 0);
                                      while (1) {
                                          b = d + 16 + (h >>> 31 << 2) | 0;
                                          e = c[b >> 2] | 0;
                                          if (!e) break;
                                          if ((c[e + 4 >> 2] & -8 | 0) == (a | 0)) {
                                              Q = e;
                                              break m
                                          } else {
                                              h = h << 1;
                                              d = e;
                                          }
                                      }
                                      if (b >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                          c[b >> 2] = q;
                                          c[q + 24 >> 2] = d;
                                          c[q + 12 >> 2] = q;
                                          c[q + 8 >> 2] = q;
                                          break h
                                      }
                                  } else Q = d; while (0);
                                  d = Q + 8 | 0;
                                  b = c[d >> 2] | 0;
                                  V = c[30] | 0;
                                  if (b >>> 0 >= V >>> 0 & Q >>> 0 >= V >>> 0) {
                                      c[b + 12 >> 2] = q;
                                      c[d >> 2] = q;
                                      c[q + 8 >> 2] = b;
                                      c[q + 12 >> 2] = Q;
                                      c[q + 24 >> 2] = 0;
                                      break
                                  } else ea();
                              }
                          } else {
                              V = c[30] | 0;
                              if ((V | 0) == 0 | A >>> 0 < V >>> 0) c[30] = A;
                              c[138] = A;
                              c[139] = t;
                              c[141] = 0;
                              c[35] = c[144];
                              c[34] = -1;
                              d = 0;
                              do {
                                  V = d << 1;
                                  U = 144 + (V << 2) | 0;
                                  c[144 + (V + 3 << 2) >> 2] = U;
                                  c[144 + (V + 2 << 2) >> 2] = U;
                                  d = d + 1 | 0;
                              } while ((d | 0) != 32);
                              V = A + 8 | 0;
                              V = (V & 7 | 0) == 0 ? 0 : 0 - V & 7;
                              U = t + -40 - V | 0;
                              c[32] = A + V;
                              c[29] = U;
                              c[A + (V + 4) >> 2] = U | 1;
                              c[A + (t + -36) >> 2] = 40;
                              c[33] = c[148];
                          } while (0);
                          b = c[29] | 0;
                          if (b >>> 0 > s >>> 0) {
                              V = b - s | 0;
                              c[29] = V;
                              g = c[32] | 0;
                              c[32] = g + s;
                              c[g + (s + 4) >> 2] = V | 1;
                              c[g + 4 >> 2] = s | 3;
                              g = g + 8 | 0;
                              break
                          }
                      }
                      c[(Le() | 0) >> 2] = 12;
                      g = 0;
                  } else g = 0;
              } while (0);
              return g | 0
          }

          function Ke(a) {
              a = a | 0;
              var b = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0,
                  r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0;
              a:do if (a) {
                  f = a + -8 | 0;
                  k = c[30] | 0;
                  b:do if (f >>> 0 >= k >>> 0 ? (e = c[a + -4 >> 2] | 0, d = e & 3, (d | 0) != 1) : 0) {
                      v = e & -8;
                      w = a + (v + -8) | 0;
                      do if (!(e & 1)) {
                          f = c[f >> 2] | 0;
                          if (!d) break a;
                          l = -8 - f | 0;
                          n = a + l | 0;
                          o = f + v | 0;
                          if (n >>> 0 < k >>> 0) break b;
                          if ((n | 0) == (c[31] | 0)) {
                              g = a + (v + -4) | 0;
                              f = c[g >> 2] | 0;
                              if ((f & 3 | 0) != 3) {
                                  B = n;
                                  g = o;
                                  break
                              }
                              c[28] = o;
                              c[g >> 2] = f & -2;
                              c[a + (l + 4) >> 2] = o | 1;
                              c[w >> 2] = o;
                              break a
                          }
                          d = f >>> 3;
                          if (f >>> 0 < 256) {
                              e = c[a + (l + 8) >> 2] | 0;
                              g = c[a + (l + 12) >> 2] | 0;
                              f = 144 + (d << 1 << 2) | 0;
                              do if ((e | 0) != (f | 0)) {
                                  if (e >>> 0 >= k >>> 0 ? (c[e + 12 >> 2] | 0) == (n | 0) : 0) break;
                                  ea();
                              } while (0);
                              if ((g | 0) == (e | 0)) {
                                  c[26] = c[26] & ~(1 << d);
                                  B = n;
                                  g = o;
                                  break
                              }
                              do if ((g | 0) == (f | 0)) b = g + 8 | 0; else {
                                  if (g >>> 0 >= k >>> 0 ? (h = g + 8 | 0, (c[h >> 2] | 0) == (n | 0)) : 0) {
                                      b = h;
                                      break
                                  }
                                  ea();
                              } while (0);
                              c[e + 12 >> 2] = g;
                              c[b >> 2] = e;
                              B = n;
                              g = o;
                              break
                          }
                          h = c[a + (l + 24) >> 2] | 0;
                          f = c[a + (l + 12) >> 2] | 0;
                          do if ((f | 0) == (n | 0)) {
                              e = a + (l + 20) | 0;
                              f = c[e >> 2] | 0;
                              if (!f) {
                                  e = a + (l + 16) | 0;
                                  f = c[e >> 2] | 0;
                                  if (!f) {
                                      m = 0;
                                      break
                                  }
                              }
                              while (1) {
                                  d = f + 20 | 0;
                                  b = c[d >> 2] | 0;
                                  if (b) {
                                      f = b;
                                      e = d;
                                      continue
                                  }
                                  d = f + 16 | 0;
                                  b = c[d >> 2] | 0;
                                  if (!b) break; else {
                                      f = b;
                                      e = d;
                                  }
                              }
                              if (e >>> 0 < k >>> 0) ea(); else {
                                  c[e >> 2] = 0;
                                  m = f;
                                  break
                              }
                          } else {
                              e = c[a + (l + 8) >> 2] | 0;
                              if ((e >>> 0 >= k >>> 0 ? (i = e + 12 | 0, (c[i >> 2] | 0) == (n | 0)) : 0) ? (j = f + 8 | 0, (c[j >> 2] | 0) == (n | 0)) : 0) {
                                  c[i >> 2] = f;
                                  c[j >> 2] = e;
                                  m = f;
                                  break
                              }
                              ea();
                          } while (0);
                          if (h) {
                              f = c[a + (l + 28) >> 2] | 0;
                              e = 408 + (f << 2) | 0;
                              if ((n | 0) == (c[e >> 2] | 0)) {
                                  c[e >> 2] = m;
                                  if (!m) {
                                      c[27] = c[27] & ~(1 << f);
                                      B = n;
                                      g = o;
                                      break
                                  }
                              } else {
                                  if (h >>> 0 < (c[30] | 0) >>> 0) ea();
                                  f = h + 16 | 0;
                                  if ((c[f >> 2] | 0) == (n | 0)) c[f >> 2] = m; else c[h + 20 >> 2] = m;
                                  if (!m) {
                                      B = n;
                                      g = o;
                                      break
                                  }
                              }
                              e = c[30] | 0;
                              if (m >>> 0 < e >>> 0) ea();
                              c[m + 24 >> 2] = h;
                              f = c[a + (l + 16) >> 2] | 0;
                              do if (f) if (f >>> 0 < e >>> 0) ea(); else {
                                  c[m + 16 >> 2] = f;
                                  c[f + 24 >> 2] = m;
                                  break
                              } while (0);
                              f = c[a + (l + 20) >> 2] | 0;
                              if (f) if (f >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                  c[m + 20 >> 2] = f;
                                  c[f + 24 >> 2] = m;
                                  B = n;
                                  g = o;
                                  break
                              } else {
                                  B = n;
                                  g = o;
                              }
                          } else {
                              B = n;
                              g = o;
                          }
                      } else {
                          B = f;
                          g = v;
                      } while (0);
                      if (B >>> 0 < w >>> 0 ? (p = a + (v + -4) | 0, q = c[p >> 2] | 0, (q & 1 | 0) != 0) : 0) {
                          if (!(q & 2)) {
                              if ((w | 0) == (c[32] | 0)) {
                                  A = (c[29] | 0) + g | 0;
                                  c[29] = A;
                                  c[32] = B;
                                  c[B + 4 >> 2] = A | 1;
                                  if ((B | 0) != (c[31] | 0)) break a;
                                  c[31] = 0;
                                  c[28] = 0;
                                  break a
                              }
                              if ((w | 0) == (c[31] | 0)) {
                                  A = (c[28] | 0) + g | 0;
                                  c[28] = A;
                                  c[31] = B;
                                  c[B + 4 >> 2] = A | 1;
                                  c[B + A >> 2] = A;
                                  break a
                              }
                              j = (q & -8) + g | 0;
                              d = q >>> 3;
                              do if (q >>> 0 >= 256) {
                                  b = c[a + (v + 16) >> 2] | 0;
                                  g = c[a + (v | 4) >> 2] | 0;
                                  do if ((g | 0) == (w | 0)) {
                                      f = a + (v + 12) | 0;
                                      g = c[f >> 2] | 0;
                                      if (!g) {
                                          f = a + (v + 8) | 0;
                                          g = c[f >> 2] | 0;
                                          if (!g) {
                                              x = 0;
                                              break
                                          }
                                      }
                                      while (1) {
                                          e = g + 20 | 0;
                                          d = c[e >> 2] | 0;
                                          if (d) {
                                              g = d;
                                              f = e;
                                              continue
                                          }
                                          e = g + 16 | 0;
                                          d = c[e >> 2] | 0;
                                          if (!d) break; else {
                                              g = d;
                                              f = e;
                                          }
                                      }
                                      if (f >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                          c[f >> 2] = 0;
                                          x = g;
                                          break
                                      }
                                  } else {
                                      f = c[a + v >> 2] | 0;
                                      if ((f >>> 0 >= (c[30] | 0) >>> 0 ? (t = f + 12 | 0, (c[t >> 2] | 0) == (w | 0)) : 0) ? (u = g + 8 | 0, (c[u >> 2] | 0) == (w | 0)) : 0) {
                                          c[t >> 2] = g;
                                          c[u >> 2] = f;
                                          x = g;
                                          break
                                      }
                                      ea();
                                  } while (0);
                                  if (b) {
                                      g = c[a + (v + 20) >> 2] | 0;
                                      f = 408 + (g << 2) | 0;
                                      if ((w | 0) == (c[f >> 2] | 0)) {
                                          c[f >> 2] = x;
                                          if (!x) {
                                              c[27] = c[27] & ~(1 << g);
                                              break
                                          }
                                      } else {
                                          if (b >>> 0 < (c[30] | 0) >>> 0) ea();
                                          g = b + 16 | 0;
                                          if ((c[g >> 2] | 0) == (w | 0)) c[g >> 2] = x; else c[b + 20 >> 2] = x;
                                          if (!x) break
                                      }
                                      g = c[30] | 0;
                                      if (x >>> 0 < g >>> 0) ea();
                                      c[x + 24 >> 2] = b;
                                      f = c[a + (v + 8) >> 2] | 0;
                                      do if (f) if (f >>> 0 < g >>> 0) ea(); else {
                                          c[x + 16 >> 2] = f;
                                          c[f + 24 >> 2] = x;
                                          break
                                      } while (0);
                                      d = c[a + (v + 12) >> 2] | 0;
                                      if (d) if (d >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                          c[x + 20 >> 2] = d;
                                          c[d + 24 >> 2] = x;
                                          break
                                      }
                                  }
                              } else {
                                  e = c[a + v >> 2] | 0;
                                  g = c[a + (v | 4) >> 2] | 0;
                                  f = 144 + (d << 1 << 2) | 0;
                                  do if ((e | 0) != (f | 0)) {
                                      if (e >>> 0 >= (c[30] | 0) >>> 0 ? (c[e + 12 >> 2] | 0) == (w | 0) : 0) break;
                                      ea();
                                  } while (0);
                                  if ((g | 0) == (e | 0)) {
                                      c[26] = c[26] & ~(1 << d);
                                      break
                                  }
                                  do if ((g | 0) == (f | 0)) r = g + 8 | 0; else {
                                      if (g >>> 0 >= (c[30] | 0) >>> 0 ? (s = g + 8 | 0, (c[s >> 2] | 0) == (w | 0)) : 0) {
                                          r = s;
                                          break
                                      }
                                      ea();
                                  } while (0);
                                  c[e + 12 >> 2] = g;
                                  c[r >> 2] = e;
                              } while (0);
                              c[B + 4 >> 2] = j | 1;
                              c[B + j >> 2] = j;
                              if ((B | 0) == (c[31] | 0)) {
                                  c[28] = j;
                                  break a
                              } else g = j;
                          } else {
                              c[p >> 2] = q & -2;
                              c[B + 4 >> 2] = g | 1;
                              c[B + g >> 2] = g;
                          }
                          f = g >>> 3;
                          if (g >>> 0 < 256) {
                              e = f << 1;
                              g = 144 + (e << 2) | 0;
                              b = c[26] | 0;
                              d = 1 << f;
                              if (b & d) {
                                  d = 144 + (e + 2 << 2) | 0;
                                  b = c[d >> 2] | 0;
                                  if (b >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                      y = d;
                                      z = b;
                                  }
                              } else {
                                  c[26] = b | d;
                                  y = 144 + (e + 2 << 2) | 0;
                                  z = g;
                              }
                              c[y >> 2] = B;
                              c[z + 12 >> 2] = B;
                              c[B + 8 >> 2] = z;
                              c[B + 12 >> 2] = g;
                              break a
                          }
                          b = g >>> 8;
                          if (b) if (g >>> 0 > 16777215) f = 31; else {
                              y = (b + 1048320 | 0) >>> 16 & 8;
                              z = b << y;
                              a = (z + 520192 | 0) >>> 16 & 4;
                              z = z << a;
                              f = (z + 245760 | 0) >>> 16 & 2;
                              f = 14 - (a | y | f) + (z << f >>> 15) | 0;
                              f = g >>> (f + 7 | 0) & 1 | f << 1;
                          } else f = 0;
                          d = 408 + (f << 2) | 0;
                          c[B + 28 >> 2] = f;
                          c[B + 20 >> 2] = 0;
                          c[B + 16 >> 2] = 0;
                          b = c[27] | 0;
                          e = 1 << f;
                          c:do if (b & e) {
                              d = c[d >> 2] | 0;
                              d:do if ((c[d + 4 >> 2] & -8 | 0) != (g | 0)) {
                                  f = g << ((f | 0) == 31 ? 0 : 25 - (f >>> 1) | 0);
                                  while (1) {
                                      b = d + 16 + (f >>> 31 << 2) | 0;
                                      e = c[b >> 2] | 0;
                                      if (!e) break;
                                      if ((c[e + 4 >> 2] & -8 | 0) == (g | 0)) {
                                          A = e;
                                          break d
                                      } else {
                                          f = f << 1;
                                          d = e;
                                      }
                                  }
                                  if (b >>> 0 < (c[30] | 0) >>> 0) ea(); else {
                                      c[b >> 2] = B;
                                      c[B + 24 >> 2] = d;
                                      c[B + 12 >> 2] = B;
                                      c[B + 8 >> 2] = B;
                                      break c
                                  }
                              } else A = d; while (0);
                              b = A + 8 | 0;
                              d = c[b >> 2] | 0;
                              z = c[30] | 0;
                              if (d >>> 0 >= z >>> 0 & A >>> 0 >= z >>> 0) {
                                  c[d + 12 >> 2] = B;
                                  c[b >> 2] = B;
                                  c[B + 8 >> 2] = d;
                                  c[B + 12 >> 2] = A;
                                  c[B + 24 >> 2] = 0;
                                  break
                              } else ea();
                          } else {
                              c[27] = b | e;
                              c[d >> 2] = B;
                              c[B + 24 >> 2] = d;
                              c[B + 12 >> 2] = B;
                              c[B + 8 >> 2] = B;
                          } while (0);
                          B = (c[34] | 0) + -1 | 0;
                          c[34] = B;
                          if (!B) b = 560; else break a;
                          while (1) {
                              b = c[b >> 2] | 0;
                              if (!b) break; else b = b + 8 | 0;
                          }
                          c[34] = -1;
                          break a
                      }
                  } while (0);
                  ea();
              } while (0);
              return
          }

          function Le() {
              var a = 0;
              if (!0) a = 600;
              return a | 0
          }

          function Me() {
              var a = 0;
              do if (!(c[144] | 0)) {
                  a = ca(30) | 0;
                  if (!(a + -1 & a)) {
                      c[146] = a;
                      c[145] = a;
                      c[147] = -1;
                      c[148] = -1;
                      c[149] = 0;
                      c[137] = 0;
                      c[144] = (ha(0) | 0) & -16 ^ 1431655768;
                      break
                  } else ea();
              } while (0);
              return
          }

          function Ne() {
          }

          function Oe(b, d, e) {
              b = b | 0;
              d = d | 0;
              e = e | 0;
              var f = 0;
              if ((e | 0) >= 4096) return ja(b | 0, d | 0, e | 0) | 0;
              f = b | 0;
              if ((b & 3) == (d & 3)) {
                  while (b & 3) {
                      if (!e) return f | 0;
                      a[b >> 0] = a[d >> 0] | 0;
                      b = b + 1 | 0;
                      d = d + 1 | 0;
                      e = e - 1 | 0;
                  }
                  while ((e | 0) >= 4) {
                      c[b >> 2] = c[d >> 2];
                      b = b + 4 | 0;
                      d = d + 4 | 0;
                      e = e - 4 | 0;
                  }
              }
              while ((e | 0) > 0) {
                  a[b >> 0] = a[d >> 0] | 0;
                  b = b + 1 | 0;
                  d = d + 1 | 0;
                  e = e - 1 | 0;
              }
              return f | 0
          }

          function Pe(b, c, d) {
              b = b | 0;
              c = c | 0;
              d = d | 0;
              var e = 0;
              if ((c | 0) < (b | 0) & (b | 0) < (c + d | 0)) {
                  e = b;
                  c = c + d | 0;
                  b = b + d | 0;
                  while ((d | 0) > 0) {
                      b = b - 1 | 0;
                      c = c - 1 | 0;
                      d = d - 1 | 0;
                      a[b >> 0] = a[c >> 0] | 0;
                  }
                  b = e;
              } else Oe(b, c, d) | 0;
              return b | 0
          }

          function Qe(b, d, e) {
              b = b | 0;
              d = d | 0;
              e = e | 0;
              var f = 0, g = 0, h = 0, i = 0;
              f = b + e | 0;
              if ((e | 0) >= 20) {
                  d = d & 255;
                  h = b & 3;
                  i = d | d << 8 | d << 16 | d << 24;
                  g = f & ~3;
                  if (h) {
                      h = b + 4 - h | 0;
                      while ((b | 0) < (h | 0)) {
                          a[b >> 0] = d;
                          b = b + 1 | 0;
                      }
                  }
                  while ((b | 0) < (g | 0)) {
                      c[b >> 2] = i;
                      b = b + 4 | 0;
                  }
              }
              while ((b | 0) < (f | 0)) {
                  a[b >> 0] = d;
                  b = b + 1 | 0;
              }
              return b - e | 0
          }

  // EMSCRIPTEN_END_FUNCS
          return {
              _free: Ke,
              ___errno_location: Le,
              _memmove: Pe,
              _Decoder_Interface_Decode: xa,
              _Decoder_Interface_exit: wa,
              _Encoder_Interface_init: ya,
              _memset: Qe,
              _malloc: Je,
              _memcpy: Oe,
              _Encoder_Interface_exit: za,
              _Decoder_Interface_init: va,
              _Encoder_Interface_Encode: Aa,
              runPostSets: Ne,
              stackAlloc: ma,
              stackSave: na,
              stackRestore: oa,
              establishStackSpace: pa,
              setThrew: qa,
              setTempRet0: ta,
              getTempRet0: ua
          }
      })


      // EMSCRIPTEN_END_ASM
      (Module.asmGlobalArg, Module.asmLibraryArg, buffer);
      Module["_Encoder_Interface_Encode"] = asm["_Encoder_Interface_Encode"];
      var _free = Module["_free"] = asm["_free"];
      Module["runPostSets"] = asm["runPostSets"];
      var _memmove = Module["_memmove"] = asm["_memmove"];
      Module["_Decoder_Interface_exit"] = asm["_Decoder_Interface_exit"];
      Module["_Encoder_Interface_init"] = asm["_Encoder_Interface_init"];
      var _memset = Module["_memset"] = asm["_memset"];
      var _malloc = Module["_malloc"] = asm["_malloc"];
      var _memcpy = Module["_memcpy"] = asm["_memcpy"];
      Module["_Decoder_Interface_Decode"] = asm["_Decoder_Interface_Decode"];
      Module["_Decoder_Interface_init"] = asm["_Decoder_Interface_init"];
      Module["_Encoder_Interface_exit"] = asm["_Encoder_Interface_exit"];
      Module["___errno_location"] = asm["___errno_location"];
      Runtime.stackAlloc = asm["stackAlloc"];
      Runtime.stackSave = asm["stackSave"];
      Runtime.stackRestore = asm["stackRestore"];
      Runtime.establishStackSpace = asm["establishStackSpace"];
      Runtime.setTempRet0 = asm["setTempRet0"];
      Runtime.getTempRet0 = asm["getTempRet0"];

      function ExitStatus(status) {
          this.name = "ExitStatus";
          this.message = "Program terminated with exit(" + status + ")";
          this.status = status;
      }

      ExitStatus.prototype = new Error;
      ExitStatus.prototype.constructor = ExitStatus;
      var initialStackTop;
      dependenciesFulfilled = function runCaller() {
          if (!Module["calledRun"]) run();
          if (!Module["calledRun"]) dependenciesFulfilled = runCaller;
      };
      Module["callMain"] = Module.callMain = function callMain(args) {
          assert(runDependencies == 0, "cannot call main when async dependencies remain! (listen on __ATMAIN__)");
          assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called");
          args = args || [];
          ensureInitRuntime();
          var argc = args.length + 1;

          function pad() {
              for (var i = 0; i < 4 - 1; i++) {
                  argv.push(0);
              }
          }

          var argv = [allocate(intArrayFromString(Module["thisProgram"]), "i8", ALLOC_NORMAL)];
          pad();
          for (var i = 0; i < argc - 1; i = i + 1) {
              argv.push(allocate(intArrayFromString(args[i]), "i8", ALLOC_NORMAL));
              pad();
          }
          argv.push(0);
          argv = allocate(argv, "i32", ALLOC_NORMAL);
          initialStackTop = Runtime.stackSave();
          try {
              var ret = Module["_main"](argc, argv, 0);
              exit(ret, true);
          } catch (e) {
              if (e instanceof ExitStatus) {
                  return
              } else if (e == "SimulateInfiniteLoop") {
                  Module["noExitRuntime"] = true;
                  Runtime.stackRestore(initialStackTop);
                  return
              } else {
                  if (e && typeof e === "object" && e.stack) Module.printErr("exception thrown: " + [e, e.stack]);
                  throw e
              }
          } finally {
          }
      };

      function run(args) {
          args = args || Module["arguments"];
          if (runDependencies > 0) {
              return
          }
          preRun();
          if (runDependencies > 0) return;
          if (Module["calledRun"]) return;

          function doRun() {
              if (Module["calledRun"]) return;
              Module["calledRun"] = true;
              if (ABORT) return;
              ensureInitRuntime();
              preMain();
              if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();
              if (Module["_main"] && shouldRunNow) Module["callMain"](args);
              postRun();
          }

          if (Module["setStatus"]) {
              Module["setStatus"]("Running...");
              setTimeout((function () {
                  setTimeout((function () {
                      Module["setStatus"]("");
                  }), 1);
                  doRun();
              }), 1);
          } else {
              doRun();
          }
      }

      Module["run"] = Module.run = run;

      function exit(status, implicit) {
          if (implicit && Module["noExitRuntime"]) {
              return
          }
          if (Module["noExitRuntime"]) ; else {
              ABORT = true;
              STACKTOP = initialStackTop;
              exitRuntime();
              if (Module["onExit"]) Module["onExit"](status);
          }
          if (ENVIRONMENT_IS_SHELL && typeof quit === "function") {
              quit(status);
          }
          throw new ExitStatus(status)
      }

      Module["exit"] = Module.exit = exit;
      var abortDecorators = [];

      function abort(what) {
          if (what !== undefined) {
              Module.print(what);
              Module.printErr(what);
              what = JSON.stringify(what);
          } else {
              what = "";
          }
          ABORT = true;
          var extra = "\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";
          var output = "abort(" + what + ") at " + stackTrace() + extra;
          if (abortDecorators) {
              abortDecorators.forEach((function (decorator) {
                  output = decorator(output, what);
              }));
          }
          throw output
      }

      Module["abort"] = Module.abort = abort;
      if (Module["preInit"]) {
          if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];
          while (Module["preInit"].length > 0) {
              Module["preInit"].pop()();
          }
      }
      var shouldRunNow = true;
      if (Module["noInitialRun"]) {
          shouldRunNow = false;
      }
      Module["noExitRuntime"] = true;
      run();

      return AMR;
  })();




  self.onmessage = function (e) {
      switch(e.data.command){
          case 'encode':
              encode(e.data.samples, e.data.sampleRate);
              break;
          case 'decode':
              decode(e.data.buffer);
              break;
      }
  };

  function encode(samples, sampleRate) {
      sampleRate = sampleRate || 8000;
      self.postMessage({
          command: 'encode',
          amr: AMR.encode(samples, sampleRate, 7)
      });
  }

  function decode(u8Array) {
      self.postMessage({
          command: 'decode',
          amr: AMR.decode(u8Array)
      });
  }
  };

  var amrWorkerStr = amrnb.toString().replace(/^\s*function.*?\(\)\s*{/, '').replace(/}\s*$/, '');
  var amrWorkerURLObj = (window.URL || window.webkitURL).createObjectURL(new Blob([amrWorkerStr], {
    type: "text/javascript"
  }));

  var BenzAMRRecorder =
  /*#__PURE__*/
  function () {
    /**
     * @type {boolean}
     * @private
     */

    /**
     * @type {boolean}
     * @private
     */

    /**
     * @type {RecorderControl | null}
     * @private
     */

    /**
     * @type {Float32Array | null}
     * @private
     */

    /**
     * @type {Uint8Array | null}
     * @private
     */

    /**
     * @type {Blob | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {Function | null}
     * @private
     */

    /**
     * @type {boolean}
     * @private
     */

    /**
     * @type {boolean}
     * @private
     */

    /**
     * @type {number}
     * @private
     */

    /**
     * @type {number}
     * @private
     */
    function BenzAMRRecorder() {
      var _this = this;

      _classCallCheck(this, BenzAMRRecorder);

      this._isInit = false;
      this._isInitRecorder = false;
      this._recorderControl = new RecorderControl();
      this._samples = new Float32Array(0);
      this._rawData = new Uint8Array(0);
      this._blob = null;
      this._onEnded = null;
      this._onAutoEnded = null;
      this._onPlay = null;
      this._onPause = null;
      this._onResume = null;
      this._onStop = null;
      this._onStartRecord = null;
      this._onCancelRecord = null;
      this._onFinishRecord = null;
      this._isPlaying = false;
      this._isPaused = false;
      this._startCtxTime = 0.0;
      this._pauseTime = 0.0;

      this._playEmpty = function () {
        _this._recorderControl.playPcm(new Float32Array(10), 24000);
      };

      this._onEndCallback = function () {
        if (_this._isPlaying) {
          _this._isPlaying = false;

          if (_this._onStop) {
            _this._onStop();
          }

          if (_this._onAutoEnded) {
            _this._onAutoEnded();
          }
        }

        if (!_this._isPaused) {
          if (_this._onEnded) {
            _this._onEnded();
          }
        }
      };

      this._runAMRWorker = function (msg, resolve) {
        var amrWorker = new Worker(amrWorkerURLObj);
        amrWorker.postMessage(msg);

        amrWorker.onmessage = function (e) {
          resolve(e.data.amr);
          amrWorker.terminate();
        };
      };
    }
    /**
     * 是否已经初始化
     * @return {boolean}
     */


    _createClass(BenzAMRRecorder, [{
      key: "isInit",
      value: function isInit() {
        return this._isInit;
      }
      /**
       * 使用浮点数据初始化
       * @param {Float32Array} array
       * @return {Promise}
       */

    }, {
      key: "initWithArrayBuffer",
      value: function initWithArrayBuffer(array) {
        var _this2 = this;

        if (this._isInit || this._isInitRecorder) {
          BenzAMRRecorder.throwAlreadyInitialized();
        }

        this._playEmpty();

        return new Promise(function (resolve, reject) {
          var u8Array = new Uint8Array(array);

          _this2.decodeAMRAsync(u8Array).then(function (samples) {
            _this2._samples = samples;
            _this2._isInit = true;

            if (!_this2._samples) {
              RecorderControl.decodeAudioArrayBufferByContext(array).then(function (data) {
                _this2._isInit = true;
                return _this2.encodeAMRAsync(data, RecorderControl.getCtxSampleRate());
              }).then(function (rawData) {
                _this2._rawData = rawData;
                _this2._blob = BenzAMRRecorder.rawAMRData2Blob(rawData);
                return _this2.decodeAMRAsync(rawData);
              }).then(function (sample) {
                _this2._samples = sample;
                resolve();
              }).catch(function () {
                reject(new Error('Failed to decode.'));
              });
            } else {
              _this2._rawData = u8Array;
              resolve();
            }
          });
        });
      }
      /**
       * 使用 Blob 对象初始化（ <input type="file">）
       * @param {Blob} blob
       * @return {Promise}
       */

    }, {
      key: "initWithBlob",
      value: function initWithBlob(blob) {
        var _this3 = this;

        if (this._isInit || this._isInitRecorder) {
          BenzAMRRecorder.throwAlreadyInitialized();
        }

        this._playEmpty();

        this._blob = blob;
        var p = new Promise(function (resolve) {
          var reader = new FileReader();

          reader.onload = function (e) {
            resolve(e.target.result);
          };

          reader.readAsArrayBuffer(blob);
        });
        return p.then(function (data) {
          return _this3.initWithArrayBuffer(data);
        });
      }
      /**
       * 使用 url 初始化
       * @param {string} url
       * @return {Promise}
       */

    }, {
      key: "initWithUrl",
      value: function initWithUrl(url) {
        var _this4 = this;

        if (this._isInit || this._isInitRecorder) {
          BenzAMRRecorder.throwAlreadyInitialized();
        }

        this._playEmpty();

        var p = new Promise(function (resolve, reject) {
          var xhr = new XMLHttpRequest();
          xhr.open('GET', url, true);
          xhr.responseType = 'arraybuffer';

          xhr.onload = function () {
            resolve(this.response);
          };

          xhr.onerror = function () {
            reject(new Error('Failed to fetch ' + url));
          };

          xhr.send();
        });
        return p.then(function (array) {
          return _this4.initWithArrayBuffer(array);
        });
      }
      /**
       * 初始化录音
       * @return {Promise}
       */

    }, {
      key: "initWithRecord",
      value: function initWithRecord() {
        var _this5 = this;

        if (this._isInit || this._isInitRecorder) {
          BenzAMRRecorder.throwAlreadyInitialized();
        }

        this._playEmpty();

        return new Promise(function (resolve, reject) {
          _this5._recorderControl.initRecorder().then(function () {
            _this5._isInitRecorder = true;
            resolve();
          }).catch(function (e) {
            reject(e);
          });
        });
      }
      /**
       * init 之前先播放一个空音频。
       * 因为有些环境（如iOS）播放首个音频时禁止自动、异步播放，
       * 播放空音频防止加载后立即播放的功能失效。
       * 但即使如此，initWith* 仍然须放入一个用户事件中
       * @private
       */

    }, {
      key: "on",
      value: function on(action, fn) {
        if (typeof fn === 'function' || fn === null) {
          switch (action) {
            case 'play':
              this._onPlay = fn;
              break;

            case 'stop':
              this._onStop = fn;
              break;

            case 'pause':
              this._onPause = fn;
              break;

            case 'resume':
              this._onResume = fn;
              break;

            case 'ended':
              this._onEnded = fn;
              break;

            case 'autoEnded':
              this._onAutoEnded = fn;
              break;

            case 'startRecord':
              this._onStartRecord = fn;
              break;

            case 'cancelRecord':
              this._onCancelRecord = fn;
              break;

            case 'finishRecord':
              this._onFinishRecord = fn;
              break;

            case '*':
            case 'all':
              this._onEnded = fn;
              this._onAutoEnded = fn;
              this._onPlay = fn;
              this._onPause = fn;
              this._onResume = fn;
              this._onStop = fn;
              this._onStartRecord = fn;
              this._onCancelRecord = fn;
              this._onFinishRecord = fn;
              break;
          }
        }
      }
    }, {
      key: "off",
      value: function off(action) {
        this.on(action, null);
      }
      /**
       * 播放事件
       * @param {Function | null} fn
       */

    }, {
      key: "onPlay",
      value: function onPlay(fn) {
        this.on('play', fn);
      }
      /**
       * 停止事件（包括播放结束）
       * @param {Function | null} fn
       */

    }, {
      key: "onStop",
      value: function onStop(fn) {
        this.on('stop', fn);
      }
      /**
       * 暂停事件
       * @param {Function | null} fn
       */

    }, {
      key: "onPause",
      value: function onPause(fn) {
        this.on('pause', fn);
      }
      /**
       * 继续播放事件
       * @param {Function | null} fn
       */

    }, {
      key: "onResume",
      value: function onResume(fn) {
        this.on('resume', fn);
      }
      /**
       * 播放结束事件
       * @param {Function | null} fn
       */

    }, {
      key: "onEnded",
      value: function onEnded(fn) {
        this.on('ended', fn);
      }
      /**
       * 播放完毕自动结束事件
       * @param {Function | null} fn
       */

    }, {
      key: "onAutoEnded",
      value: function onAutoEnded(fn) {
        this.on('autoEnded', fn);
      }
      /**
       * 开始录音事件
       * @param {Function | null} fn
       */

    }, {
      key: "onStartRecord",
      value: function onStartRecord(fn) {
        this.on('startRecord', fn);
      }
      /**
       * 结束录音事件
       * @param {Function | null} fn
       */

    }, {
      key: "onFinishRecord",
      value: function onFinishRecord(fn) {
        this.on('finishRecord', fn);
      }
      /**
       * 放弃录音事件
       * @param {Function | null} fn
       */

    }, {
      key: "onCancelRecord",
      value: function onCancelRecord(fn) {
        this.on('cancelRecord', fn);
      }
    }, {
      key: "play",

      /**
       * 播放（重新开始，无视暂停状态）
       * @param {number|string?} startTime 可指定开始位置
       */
      value: function play(startTime) {
        var _startTime = startTime && startTime < this.getDuration() ? parseFloat(startTime) : 0;

        if (!this._isInit) {
          throw new Error('Please init AMR first.');
        }

        if (this._onPlay) {
          this._onPlay();
        }

        this._isPlaying = true;
        this._isPaused = false;
        this._startCtxTime = RecorderControl.getCtxTime() - _startTime;

        this._recorderControl.playPcm(this._samples, this._isInitRecorder ? RecorderControl.getCtxSampleRate() : 8000, this._onEndCallback.bind(this), _startTime);
      }
      /**
       * 停止
       */

    }, {
      key: "stop",
      value: function stop() {
        this._recorderControl.stopPcm();

        this._isPlaying = false;
        this._isPaused = false;

        if (this._onStop) {
          this._onStop();
        }
      }
      /**
       * 暂停
       */

    }, {
      key: "pause",
      value: function pause() {
        if (!this._isPlaying) {
          return;
        }

        this._isPlaying = false;
        this._isPaused = true;
        this._pauseTime = RecorderControl.getCtxTime() - this._startCtxTime;

        this._recorderControl.stopPcm();

        if (this._onPause) {
          this._onPause();
        }
      }
      /**
       * 从暂停处继续
       */

    }, {
      key: "resume",
      value: function resume() {
        if (!this._isPaused) {
          return;
        }

        this._isPlaying = true;
        this._isPaused = false;
        this._startCtxTime = RecorderControl.getCtxTime() - this._pauseTime;

        this._recorderControl.playPcm(this._samples, this._isInitRecorder ? RecorderControl.getCtxSampleRate() : 8000, this._onEndCallback.bind(this), this._pauseTime);

        if (this._onResume) {
          this._onResume();
        }
      }
      /**
       * 整合 play() 和 resume()，若在暂停状态则继续，否则从头播放
       */

    }, {
      key: "playOrResume",
      value: function playOrResume() {
        if (this._isPaused) {
          this.resume();
        } else {
          this.play();
        }
      }
      /**
       * 整合 resume() 和 pause()
       */

    }, {
      key: "pauseOrResume",
      value: function pauseOrResume() {
        if (this._isPaused) {
          this.resume();
        } else {
          this.pause();
        }
      }
      /**
       * 整合 play() 和 resume() 和 pause()
       */

    }, {
      key: "playOrPauseOrResume",
      value: function playOrPauseOrResume() {
        if (this._isPaused) {
          this.resume();
        } else if (this._isPlaying) {
          this.pause();
        } else {
          this.play();
        }
      }
      /**
       * 跳转到音频指定位置，不改变播放状态
       * @param {number|string} time 指定位置（秒，浮点数）
       */

    }, {
      key: "setPosition",
      value: function setPosition(time) {
        var _time = parseFloat(time);

        if (_time > this.getDuration()) {
          this.stop();
        } else if (this._isPaused) {
          this._pauseTime = _time;
        } else if (this._isPlaying) {
          this._recorderControl.stopPcmSilently();

          this._startCtxTime = RecorderControl.getCtxTime() - _time;

          this._recorderControl.playPcm(this._samples, this._isInitRecorder ? RecorderControl.getCtxSampleRate() : 8000, this._onEndCallback.bind(this), _time);
        } else {
          this.play(_time);
        }
      }
      /**
       * 获取当前播放位置（秒）
       * @return {Number} 位置，秒，浮点数
       */

    }, {
      key: "getCurrentPosition",
      value: function getCurrentPosition() {
        if (this._isPaused) {
          return this._pauseTime;
        } else if (this._isPlaying) {
          return RecorderControl.getCtxTime() - this._startCtxTime;
        }

        return 0;
      }
      /**
       * 是否正在播放
       * @return {boolean}
       */

    }, {
      key: "isPlaying",
      value: function isPlaying() {
        return this._isPlaying;
      }
      /**
       * 是否暂停中
       * @return {boolean}
       */

    }, {
      key: "isPaused",
      value: function isPaused() {
        return this._isPaused;
      }
      /**
       * 开始录音
       */

    }, {
      key: "startRecord",
      value: function startRecord() {
        this._recorderControl.startRecord();

        if (this._onStartRecord) {
          this._onStartRecord();
        }
      }
      /**
       * 结束录音，并把录制的音频转换成 AMR
       * @return {Promise}
       */

    }, {
      key: "finishRecord",
      value: function finishRecord() {
        var _this6 = this;

        return new Promise(function (resolve) {
          _this6._recorderControl.stopRecord();

          _this6._recorderControl.generateRecordSamples().then(function (samples) {
            _this6._samples = samples;
            return _this6.encodeAMRAsync(samples, RecorderControl.getCtxSampleRate());
          }).then(function (rawData) {
            _this6._rawData = rawData;
            _this6._blob = BenzAMRRecorder.rawAMRData2Blob(_this6._rawData);
            _this6._isInit = true;

            if (_this6._onFinishRecord) {
              _this6._onFinishRecord();
            }

            _this6._recorderControl.releaseRecord();

            resolve();
          });
        });
      }
      /**
       * 放弃录音
       */

    }, {
      key: "cancelRecord",
      value: function cancelRecord() {
        this._recorderControl.stopRecord();

        this._recorderControl.releaseRecord();

        if (this._onCancelRecord) {
          this._onCancelRecord();
        }
      }
      /**
       * 是否正在录音
       * @return {boolean}
       */

    }, {
      key: "isRecording",
      value: function isRecording() {
        return this._recorderControl.isRecording();
      }
      /**
       * 获取音频的时间长度（单位：秒）
       * @return {number}
       */

    }, {
      key: "getDuration",
      value: function getDuration() {
        var rate = this._isInitRecorder ? RecorderControl.getCtxSampleRate() : 8000;
        return this._samples.length / rate;
      }
      /**
       * 获取 AMR 文件的 Blob 对象
       * @returns {Blob|null}
       */

    }, {
      key: "getBlob",
      value: function getBlob() {
        return this._blob;
      }
      /**
       * 注销，清理内部存储
       */

    }, {
      key: "destroy",
      value: function destroy() {
        this._recorderControl.stopPcmSilently();

        this._recorderControl.stopRecord();

        this._recorderControl.releaseRecord();

        this.off('*');
        this._recorderControl = null;
        this._samples = null;
        this._rawData = null;
        this._blob = null;
      }
      /*
      static encodeAMR(samples, sampleRate) {
          sampleRate = sampleRate || 8000;
          return AMR.encode(samples, sampleRate, 7);
      }
      */

    }, {
      key: "encodeAMRAsync",
      value: function encodeAMRAsync(samples, sampleRate) {
        var _this7 = this;

        return new Promise(function (resolve) {
          _this7._runAMRWorker({
            command: 'encode',
            samples: samples,
            sampleRate: sampleRate
          }, resolve);
        });
      }
    }, {
      key: "decodeAMRAsync",
      value: function decodeAMRAsync(u8Array) {
        var _this8 = this;

        return new Promise(function (resolve) {
          _this8._runAMRWorker({
            command: 'decode',
            buffer: u8Array
          }, resolve);
        });
      }
    }], [{
      key: "rawAMRData2Blob",
      value: function rawAMRData2Blob(data) {
        return new Blob([data.buffer], {
          type: 'audio/amr'
        });
      }
    }, {
      key: "throwAlreadyInitialized",
      value: function throwAlreadyInitialized() {
        throw new Error('AMR has been initialized. For a new AMR, please generate a new BenzAMRRecorder().');
      }
      /**
       * 判断浏览器是否支持播放
       * @return {boolean}
       */

    }, {
      key: "isPlaySupported",
      value: function isPlaySupported() {
        return RecorderControl.isPlaySupported();
      }
      /**
       * 判断浏览器是否支持录音
       * @return {boolean}
       */

    }, {
      key: "isRecordSupported",
      value: function isRecordSupported() {
        return RecorderControl.isRecordSupported();
      }
    }]);

    return BenzAMRRecorder;
  }();

  return BenzAMRRecorder;

}));
//# sourceMappingURL=BenzAMRRecorder.js.map

/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))

/***/ }),

/***/ "./node_modules/buffer-from/index.js":
/*!*******************************************!*\
  !*** ./node_modules/buffer-from/index.js ***!
  \*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(Buffer) {/* eslint-disable node/no-deprecated-api */

var toString = Object.prototype.toString

var isModern = (
  typeof Buffer !== 'undefined' &&
  typeof Buffer.alloc === 'function' &&
  typeof Buffer.allocUnsafe === 'function' &&
  typeof Buffer.from === 'function'
)

function isArrayBuffer (input) {
  return toString.call(input).slice(8, -1) === 'ArrayBuffer'
}

function fromArrayBuffer (obj, byteOffset, length) {
  byteOffset >>>= 0

  var maxLength = obj.byteLength - byteOffset

  if (maxLength < 0) {
    throw new RangeError("'offset' is out of bounds")
  }

  if (length === undefined) {
    length = maxLength
  } else {
    length >>>= 0

    if (length > maxLength) {
      throw new RangeError("'length' is out of bounds")
    }
  }

  return isModern
    ? Buffer.from(obj.slice(byteOffset, byteOffset + length))
    : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))
}

function fromString (string, encoding) {
  if (typeof encoding !== 'string' || encoding === '') {
    encoding = 'utf8'
  }

  if (!Buffer.isEncoding(encoding)) {
    throw new TypeError('"encoding" must be a valid string encoding')
  }

  return isModern
    ? Buffer.from(string, encoding)
    : new Buffer(string, encoding)
}

function bufferFrom (value, encodingOrOffset, length) {
  if (typeof value === 'number') {
    throw new TypeError('"value" argument must not be a number')
  }

  if (isArrayBuffer(value)) {
    return fromArrayBuffer(value, encodingOrOffset, length)
  }

  if (typeof value === 'string') {
    return fromString(value, encodingOrOffset)
  }

  return isModern
    ? Buffer.from(value)
    : new Buffer(value)
}

module.exports = bufferFrom

/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"]))

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=script&lang=js":
/*!****************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=script&lang=js ***!
  \****************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = ({
  data() {
    return {
      selectedOption: {
        name: ''
      },
      showMenu: false,
      placeholderText: 'Please select an item'
    };
  },
  props: {
    options: {
      type: [Array, Object]
    },
    selected: {},
    placeholder: [String],
    closeOnOutsideClick: {
      type: [Boolean],
      default: true
    }
  },
  mounted() {
    this.selectedOption = this.selected;
    if (this.placeholder) {
      this.placeholderText = this.placeholder;
    }
    if (this.closeOnOutsideClick) {
      document.addEventListener('click', this.clickHandler);
    }
  },
  beforeDestroy() {
    document.removeEventListener('click', this.clickHandler);
  },
  methods: {
    updateOption(option) {
      this.selectedOption = option;
      this.showMenu = false;
      this.$emit('updateOption', this.selectedOption);
    },
    toggleMenu() {
      this.showMenu = !this.showMenu;
    },
    clickHandler(event) {
      const {
        target
      } = event;
      const {
        $el
      } = this;
      if (!$el.contains(target)) {
        this.showMenu = false;
      }
    }
  }
});

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=script&lang=js":
/*!*********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=script&lang=js ***!
  \*********************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = ({
  name: 'ScaleLoader',
  props: {
    loading: {
      type: Boolean,
      default: true
    },
    color: {
      type: String,
      default: '#5dc596'
    },
    height: {
      type: String,
      default: '35px'
    },
    width: {
      type: String,
      default: '4px'
    },
    margin: {
      type: String,
      default: '2px'
    },
    radius: {
      type: String,
      default: '2px'
    }
  },
  data() {
    return {
      spinnerStyle: {
        backgroundColor: this.color,
        height: this.height,
        width: this.width,
        margin: this.margin,
        borderRadius: this.radius,
        display: 'inline-block',
        animationName: 'v-scaleStretchDelay',
        animationDuration: '1s',
        animationIterationCount: 'infinite',
        animationTimingFunction: 'cubic-bezier(.2,.68,.18,1.08)',
        animationFillMode: 'both'
        // TODO 
        // animation: ['sk-waveStretchDelay', '1s', 'infinite', 'cubic-bezier(.2,.68,.18,1.08)'].join(' '),
        // animationFillMode: "both"
      },
      spinnerDelay1: {
        animationDelay: '0.1s'
      },
      spinnerDelay2: {
        animationDelay: '0.2s'
      },
      spinnerDelay3: {
        animationDelay: '0.3s'
      },
      spinnerDelay4: {
        animationDelay: '0.4s'
      },
      spinnerDelay5: {
        animationDelay: '0.5s'
      }
    };
  }
});

/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"7ab4c6d0-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=template&id=35a4e70c":
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7ab4c6d0-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=template&id=35a4e70c ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function render() {
  var _vm = this,
    _c = _vm._self._c;
  return _c("div", {
    staticClass: "btn-group"
  }, [_vm.selectedOption.name !== undefined ? _c("li", {
    staticClass: "dropdown-toggle",
    on: {
      click: function ($event) {
        return _vm.toggleMenu();
      }
    }
  }, [_vm._v(" " + _vm._s(_vm.selectedOption.name) + " "), _c("span", {
    staticClass: "caret"
  })]) : _vm._e(), _vm.selectedOption.name === undefined ? _c("li", {
    staticClass: "dropdown-toggle dropdown-toggle-placeholder",
    on: {
      click: function ($event) {
        return _vm.toggleMenu();
      }
    }
  }, [_vm._v(" " + _vm._s(_vm.placeholderText) + " "), _c("span", {
    staticClass: "caret"
  })]) : _vm._e(), _vm.showMenu ? _c("ul", {
    staticClass: "dropdown-menu"
  }, _vm._l(_vm.options, function (option, idx) {
    return _c("li", {
      key: idx
    }, [_c("a", {
      attrs: {
        href: "javascript:void(0)"
      },
      on: {
        click: function ($event) {
          return _vm.updateOption(option);
        }
      }
    }, [_vm._v(" " + _vm._s(option.name) + " ")])]);
  }), 0) : _vm._e()]);
};
var staticRenderFns = [];
render._withStripped = true;


/***/ }),

/***/ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"7ab4c6d0-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=template&id=5873723e":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7ab4c6d0-vue-loader-template"}!./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=template&id=5873723e ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
var render = function render() {
  var _vm = this,
    _c = _vm._self._c;
  return _c("div", {
    directives: [{
      name: "show",
      rawName: "v-show",
      value: _vm.loading,
      expression: "loading"
    }],
    staticClass: "v-spinner"
  }, [_c("div", {
    staticClass: "v-scale v-scale1",
    style: [_vm.spinnerStyle, _vm.spinnerDelay1]
  }), _c("div", {
    staticClass: "v-scale v-scale2",
    style: [_vm.spinnerStyle, _vm.spinnerDelay2]
  }), _c("div", {
    staticClass: "v-scale v-scale3",
    style: [_vm.spinnerStyle, _vm.spinnerDelay3]
  }), _c("div", {
    staticClass: "v-scale v-scale4",
    style: [_vm.spinnerStyle, _vm.spinnerDelay4]
  }), _c("div", {
    staticClass: "v-scale v-scale5",
    style: [_vm.spinnerStyle, _vm.spinnerDelay5]
  })]);
};
var staticRenderFns = [];
render._withStripped = true;


/***/ }),

/***/ "./node_modules/core-js/internals/get-substitution.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/internals/get-substitution.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");

var floor = Math.floor;
var charAt = uncurryThis(''.charAt);
var replace = uncurryThis(''.replace);
var stringSlice = uncurryThis(''.slice);
// eslint-disable-next-line redos/no-vulnerable -- safe
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;

// `GetSubstitution` abstract operation
// https://tc39.es/ecma262/#sec-getsubstitution
module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
  var tailPos = position + matched.length;
  var m = captures.length;
  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
  if (namedCaptures !== undefined) {
    namedCaptures = toObject(namedCaptures);
    symbols = SUBSTITUTION_SYMBOLS;
  }
  return replace(replacement, symbols, function (match, ch) {
    var capture;
    switch (charAt(ch, 0)) {
      case '$': return '$';
      case '&': return matched;
      case '`': return stringSlice(str, 0, position);
      case "'": return stringSlice(str, tailPos);
      case '<':
        capture = namedCaptures[stringSlice(ch, 1, -1)];
        break;
      default: // \d\d?
        var n = +ch;
        if (n === 0) return match;
        if (n > m) {
          var f = floor(n / 10);
          if (f === 0) return match;
          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
          return match;
        }
        capture = captures[n - 1];
    }
    return capture === undefined ? '' : capture;
  });
};


/***/ }),

/***/ "./node_modules/core-js/internals/is-regexp.js":
/*!*****************************************************!*\
  !*** ./node_modules/core-js/internals/is-regexp.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");

var MATCH = wellKnownSymbol('match');

// `IsRegExp` abstract operation
// https://tc39.es/ecma262/#sec-isregexp
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');
};


/***/ }),

/***/ "./node_modules/core-js/internals/regexp-get-flags.js":
/*!************************************************************!*\
  !*** ./node_modules/core-js/internals/regexp-get-flags.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js");
var regExpFlagsDetection = __webpack_require__(/*! ../internals/regexp-flags-detection */ "./node_modules/core-js/internals/regexp-flags-detection.js");
var regExpFlagsGetterImplementation = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js");

var RegExpPrototype = RegExp.prototype;

module.exports = regExpFlagsDetection.correct ? function (it) {
  return it.flags;
} : function (it) {
  return (!regExpFlagsDetection.correct && isPrototypeOf(RegExpPrototype, it) && !hasOwn(it, 'flags'))
    ? call(regExpFlagsGetterImplementation, it)
    : it.flags;
};


/***/ }),

/***/ "./node_modules/core-js/modules/es.string.replace-all.js":
/*!***************************************************************!*\
  !*** ./node_modules/core-js/modules/es.string.replace-all.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js");
var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
var getRegExpFlags = __webpack_require__(/*! ../internals/regexp-get-flags */ "./node_modules/core-js/internals/regexp-get-flags.js");
var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");

var REPLACE = wellKnownSymbol('replace');
var $TypeError = TypeError;
var indexOf = uncurryThis(''.indexOf);
var replace = uncurryThis(''.replace);
var stringSlice = uncurryThis(''.slice);
var max = Math.max;

// `String.prototype.replaceAll` method
// https://tc39.es/ecma262/#sec-string.prototype.replaceall
$({ target: 'String', proto: true }, {
  replaceAll: function replaceAll(searchValue, replaceValue) {
    var O = requireObjectCoercible(this);
    var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, position, replacement;
    var endOfLastMatch = 0;
    var result = '';
    if (isObject(searchValue)) {
      IS_REG_EXP = isRegExp(searchValue);
      if (IS_REG_EXP) {
        flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));
        if (!~indexOf(flags, 'g')) throw new $TypeError('`.replaceAll` does not allow non-global regexes');
      }
      replacer = getMethod(searchValue, REPLACE);
      if (replacer) return call(replacer, searchValue, O, replaceValue);
      if (IS_PURE && IS_REG_EXP) return replace(toString(O), searchValue, replaceValue);
    }
    string = toString(O);
    searchString = toString(searchValue);
    functionalReplace = isCallable(replaceValue);
    if (!functionalReplace) replaceValue = toString(replaceValue);
    searchLength = searchString.length;
    advanceBy = max(1, searchLength);
    position = indexOf(string, searchString);
    while (position !== -1) {
      replacement = functionalReplace
        ? toString(replaceValue(searchString, position, string))
        : getSubstitution(searchString, string, position, [], undefined, replaceValue);
      result += stringSlice(string, endOfLastMatch, position) + replacement;
      endOfLastMatch = position + searchLength;
      position = position + advanceBy > string.length ? -1 : indexOf(string, searchString, position + advanceBy);
    }
    if (endOfLastMatch < string.length) {
      result += stringSlice(string, endOfLastMatch);
    }
    return result;
  }
});


/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

// Imports
var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
exports = ___CSS_LOADER_API_IMPORT___(false);
// Module
exports.push([module.i, "\n.btn-group {\n  min-width: 160px;\n  height: 40px;\n  position: relative;\n  margin: 10px 1px;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group a:hover {\n  text-decoration: none;\n}\n.dropdown-toggle {\n  color: #636b6f;\n  min-width: 160px;\n  padding: 10px 20px 10px 10px;\n  text-transform: none;\n  font-weight: 300;\n  margin-bottom: 7px;\n  border: 0;\n  background-image: linear-gradient(#009688, #009688), linear-gradient(#D2D2D2, #D2D2D2);\n  background-size: 0 2px, 100% 1px;\n  background-repeat: no-repeat;\n  background-position: center bottom, center calc(100% - 1px);\n  background-color: transparent;\n  transition: background 0s ease-out;\n  float: none;\n  box-shadow: none;\n  border-radius: 0;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  overflow: hidden;\n}\n.dropdown-toggle:hover {\n  background: #e1e1e1;\n  cursor: pointer;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  list-style: none;\n  font-size: 14px;\n  text-align: left;\n  background-color: #fff;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n  background-clip: padding-box;\n}\n.dropdown-menu > li > a {\n  padding: 10px 30px;\n  display: block;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.6;\n  color: #333333;\n  white-space: nowrap;\n  text-decoration: none;\n}\n.dropdown-menu > li > a:hover {\n  background: #efefef;\n  color: #409FCB;\n}\n.dropdown-menu > li {\n  overflow: hidden;\n  width: 100%;\n  position: relative;\n  margin: 0;\n}\n.caret {\n  width: 0;\n  position: absolute;\n  top: 19px;\n  height: 0;\n  margin-left: -24px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n  right: 10px;\n}\nli {\n    list-style: none;\n}\n", ""]);
// Exports
module.exports = exports;


/***/ }),

/***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css":
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css ***!
  \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

// Imports
var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
exports = ___CSS_LOADER_API_IMPORT___(false);
// Module
exports.push([module.i, "\n.v-spinner\n{\n/*\t  font-size: 10px; \n\n    width: 60px;\n    height: 40px;*/\n    /*margin: 25px auto;*/\n    text-align: center;\n}\n@keyframes v-scaleStretchDelay\n{\n0%\n    {\n       -webkit-animation-name: inherit;\n       -webkit-animation-duration: inherit;\n       -webkit-animation-iteration-count: inherit;\n       -webkit-animation-direction: inherit;\n},\n    100%\n    {\n        transform: scaleY(1);\n}\n50%\n    {\n        transform: scaleY(0.4);\n}\n}\n", ""]);
// Exports
module.exports = exports;


/***/ }),

/***/ "./node_modules/dayjs/plugin/duration.js":
/*!***********************************************!*\
  !*** ./node_modules/dayjs/plugin/duration.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

!function(t,s){ true?module.exports=s():undefined}(this,(function(){"use strict";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,d=2628e6,a=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,h={years:u,months:d,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof g},f=function(t,s,n){return new g(t,n,s.$l)},m=function(t){return s.p(t)+"s"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},v=function(t,s){return t?l(t)?{negative:!0,format:""+y(t)+s}:{negative:!1,format:""+t+s}:{negative:!1,format:""}},g=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*h[m(s)],this);if("number"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if("object"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if("string"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*h[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/d),t%=d,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=v(this.$d.years,"Y"),s=v(this.$d.months,"M"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=v(n,"D"),e=v(this.$d.hours,"H"),r=v(this.$d.minutes,"M"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3,o=Math.round(1e3*o)/1e3);var u=v(o,"S"),d=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?"T":"",h=(d?"-":"")+"P"+t.format+s.format+i.format+a+e.format+r.format+u.format;return"P"===h||"-P"===h?"P0D":h},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||"YYYY-MM-DDTHH:mm:ss",i={Y:this.$d.years,YY:s.s(this.$d.years,2,"0"),YYYY:s.s(this.$d.years,4,"0"),M:this.$d.months,MM:s.s(this.$d.months,2,"0"),D:this.$d.days,DD:s.s(this.$d.days,2,"0"),H:this.$d.hours,HH:s.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,"0"),SSS:s.s(this.$d.milliseconds,3,"0")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/h[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return"milliseconds"===n?s%=1e3:s="weeks"===n?$(s/h[n]):this.$d[n],s||0},y.add=function(t,s,n){var i;return i=s?t*h[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,"ms").locale(this.$l).fromNow(!s)},y.valueOf=function(){return this.asMilliseconds()},y.milliseconds=function(){return this.get("milliseconds")},y.asMilliseconds=function(){return this.as("milliseconds")},y.seconds=function(){return this.get("seconds")},y.asSeconds=function(){return this.as("seconds")},y.minutes=function(){return this.get("minutes")},y.asMinutes=function(){return this.as("minutes")},y.hours=function(){return this.get("hours")},y.asHours=function(){return this.as("hours")},y.days=function(){return this.get("days")},y.asDays=function(){return this.as("days")},y.weeks=function(){return this.get("weeks")},y.asWeeks=function(){return this.as("weeks")},y.months=function(){return this.get("months")},y.asMonths=function(){return this.as("months")},y.years=function(){return this.get("years")},y.asYears=function(){return this.as("years")},l}(),p=function(t,s,n){return t.add(s.years()*n,"y").add(s.months()*n,"M").add(s.days()*n,"d").add(s.hours()*n,"h").add(s.minutes()*n,"m").add(s.seconds()*n,"s").add(s.milliseconds()*n,"ms")};return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)?p(this,t,1):r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)?p(this,t,-1):o.bind(this)(t,s)}}}));

/***/ }),

/***/ "./node_modules/draggable-vue-directive/dist/draggable.js":
/*!****************************************************************!*\
  !*** ./node_modules/draggable-vue-directive/dist/draggable.js ***!
  \****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var ChangePositionType;
(function (ChangePositionType) {
    ChangePositionType[ChangePositionType["Start"] = 1] = "Start";
    ChangePositionType[ChangePositionType["End"] = 2] = "End";
    ChangePositionType[ChangePositionType["Move"] = 3] = "Move";
})(ChangePositionType || (ChangePositionType = {}));
function extractHandle(handle) {
    return handle && handle.$el || handle;
}
function getPosWithBoundaries(elementRect, boundingRect, left, top, boundingRectMargin) {
    if (boundingRectMargin === void 0) { boundingRectMargin = {}; }
    var adjustedPos = { left: left, top: top };
    var height = elementRect.height, width = elementRect.width;
    var topRect = top, bottomRect = top + height, leftRect = left, rightRect = left + width;
    var marginTop = boundingRectMargin.top || 0, marginBottom = boundingRectMargin.bottom || 0, marginLeft = boundingRectMargin.left || 0, marginRight = boundingRectMargin.right || 0;
    var topBoundary = boundingRect.top + marginTop, bottomBoundary = boundingRect.bottom - marginBottom, leftBoundary = boundingRect.left + marginLeft, rightBoundary = boundingRect.right - marginRight;
    if (topRect < topBoundary) {
        adjustedPos.top = topBoundary;
    }
    else if (bottomRect > bottomBoundary) {
        adjustedPos.top = bottomBoundary - height;
    }
    if (leftRect < leftBoundary) {
        adjustedPos.left = leftBoundary;
    }
    else if (rightRect > rightBoundary) {
        adjustedPos.left = rightBoundary - width;
    }
    return adjustedPos;
}
exports.Draggable = {
    bind: function (el, binding, vnode, oldVnode) {
        exports.Draggable.update(el, binding, vnode, oldVnode);
    },
    update: function (el, binding, vnode, oldVnode) {
        if (binding.value && binding.value.stopDragging) {
            return;
        }
        var handler = (binding.value && binding.value.handle && extractHandle(binding.value.handle)) || el;
        if (binding && binding.value && binding.value.resetInitialPos) {
            initializeState();
            handlePositionChanged();
        }
        if (!handler.getAttribute("draggable")) {
            el.removeEventListener("mousedown", el["listener"]);
            handler.addEventListener("mousedown", moveStart);
            el.removeEventListener("touchstart", el["listener"]);
            handler.addEventListener("touchstart", moveStart, { passive: false });
            handler.setAttribute("draggable", "true");
            el["listener"] = moveStart;
            initializeState();
            handlePositionChanged();
        }
        function move(event) {
            event.preventDefault();
            var stopDragging = binding.value && binding.value.stopDragging;
            if (stopDragging) {
                return;
            }
            var state = getState();
            if (!state.startDragPosition || !state.initialMousePos) {
                initializeState(event);
                state = getState();
            }
            var pos = getInitialMousePosition(event);
            var dx = pos.left - state.initialMousePos.left;
            var dy = pos.top - state.initialMousePos.top;
            var currentDragPosition = {
                left: state.startDragPosition.left + dx,
                top: state.startDragPosition.top + dy
            };
            var boundingRect = getBoundingRect();
            var elementRect = el.getBoundingClientRect();
            if (boundingRect && elementRect) {
                currentDragPosition = getPosWithBoundaries(elementRect, boundingRect, currentDragPosition.left, currentDragPosition.top, binding.value.boundingRectMargin);
            }
            setState({ currentDragPosition: currentDragPosition });
            updateElementStyle();
            handlePositionChanged(event);
        }
        function getBoundingRect() {
            if (!binding.value) {
                return;
            }
            return binding.value.boundingRect
                || binding.value.boundingElement
                    && binding.value.boundingElement.getBoundingClientRect();
        }
        function updateElementStyle() {
            var state = getState();
            if (!state.currentDragPosition) {
                return;
            }
            el.style.touchAction = "none";
            el.style.position = "fixed";
            el.style.left = state.currentDragPosition.left + "px";
            el.style.top = state.currentDragPosition.top + "px";
        }
        function moveEnd(event) {
            event.preventDefault();
            document.removeEventListener("mousemove", move);
            document.removeEventListener("mouseup", moveEnd);
            document.removeEventListener("touchmove", move);
            document.removeEventListener("touchend", moveEnd);
            var currentRectPosition = getRectPosition();
            setState({
                initialMousePos: undefined,
                startDragPosition: currentRectPosition,
                currentDragPosition: currentRectPosition
            });
            handlePositionChanged(event, ChangePositionType.End);
        }
        function moveStart(event) {
            setState({ initialMousePos: getInitialMousePosition(event) });
            handlePositionChanged(event, ChangePositionType.Start);
            document.addEventListener("mousemove", move);
            document.addEventListener("mouseup", moveEnd);
            document.addEventListener("touchmove", move);
            document.addEventListener("touchend", moveEnd);
        }
        function getInitialMousePosition(event) {
            if (event instanceof MouseEvent) {
                return {
                    left: event.clientX,
                    top: event.clientY
                };
            }
            if (event instanceof TouchEvent) {
                var touch = event.changedTouches[event.changedTouches.length - 1];
                return {
                    left: touch.clientX,
                    top: touch.clientY
                };
            }
        }
        function getRectPosition() {
            var clientRect = el.getBoundingClientRect();
            if (!clientRect.height || !clientRect.width) {
                return;
            }
            return { left: clientRect.left, top: clientRect.top };
        }
        function initializeState(event) {
            var state = getState();
            var initialRectPositionFromBinding = binding && binding.value && binding.value.initialPosition;
            var initialRectPositionFromState = state.initialPosition;
            var startingDragPosition = getRectPosition();
            var initialPosition = initialRectPositionFromBinding || initialRectPositionFromState || startingDragPosition;
            setState({
                initialPosition: initialPosition,
                startDragPosition: initialPosition,
                currentDragPosition: initialPosition,
                initialMousePos: getInitialMousePosition(event)
            });
            updateElementStyle();
        }
        function setState(partialState) {
            var prevState = getState();
            var state = __assign(__assign({}, prevState), partialState);
            handler.setAttribute("draggable-state", JSON.stringify(state));
        }
        function handlePositionChanged(event, changePositionType) {
            var state = getState();
            var posDiff = { x: 0, y: 0 };
            if (state.currentDragPosition && state.startDragPosition) {
                posDiff.x = state.currentDragPosition.left - state.startDragPosition.left;
                posDiff.y = state.currentDragPosition.top - state.startDragPosition.top;
            }
            var currentPosition = state.currentDragPosition && __assign({}, state.currentDragPosition);
            if (changePositionType === ChangePositionType.End) {
                binding.value && binding.value.onDragEnd && state && binding.value.onDragEnd(posDiff, currentPosition, event);
            }
            else if (changePositionType === ChangePositionType.Start) {
                binding.value && binding.value.onDragStart && state && binding.value.onDragStart(posDiff, currentPosition, event);
            }
            else {
                binding.value && binding.value.onPositionChange && state && binding.value.onPositionChange(posDiff, currentPosition, event);
            }
        }
        function getState() {
            return JSON.parse(handler.getAttribute("draggable-state")) || {};
        }
    }
};
//# sourceMappingURL=draggable.js.map

/***/ }),

/***/ "./node_modules/draggable-vue-directive/dist/index.js":
/*!************************************************************!*\
  !*** ./node_modules/draggable-vue-directive/dist/index.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

Object.defineProperty(exports, "__esModule", { value: true });
var draggable_1 = __webpack_require__(/*! ./draggable */ "./node_modules/draggable-vue-directive/dist/draggable.js");
exports.Draggable = draggable_1.Draggable;
//# sourceMappingURL=index.js.map

/***/ }),

/***/ "./node_modules/emojilib/emojis.json":
/*!*******************************************!*\
  !*** ./node_modules/emojilib/emojis.json ***!
  \*******************************************/
/*! exports provided: 100, 1234, grinning, grimacing, grin, joy, rofl, partying, smiley, smile, sweat_smile, laughing, innocent, wink, blush, slightly_smiling_face, upside_down_face, relaxed, yum, relieved, heart_eyes, smiling_face_with_three_hearts, kissing_heart, kissing, kissing_smiling_eyes, kissing_closed_eyes, stuck_out_tongue_winking_eye, zany, raised_eyebrow, monocle, stuck_out_tongue_closed_eyes, stuck_out_tongue, money_mouth_face, nerd_face, sunglasses, star_struck, clown_face, cowboy_hat_face, hugs, smirk, no_mouth, neutral_face, expressionless, unamused, roll_eyes, thinking, lying_face, hand_over_mouth, shushing, symbols_over_mouth, exploding_head, flushed, disappointed, worried, angry, rage, pensive, confused, slightly_frowning_face, frowning_face, persevere, confounded, tired_face, weary, pleading, triumph, open_mouth, scream, fearful, cold_sweat, hushed, frowning, anguished, cry, disappointed_relieved, drooling_face, sleepy, sweat, hot, cold, sob, dizzy_face, astonished, zipper_mouth_face, nauseated_face, sneezing_face, vomiting, mask, face_with_thermometer, face_with_head_bandage, woozy, sleeping, zzz, poop, smiling_imp, imp, japanese_ogre, japanese_goblin, skull, ghost, alien, robot, smiley_cat, smile_cat, joy_cat, heart_eyes_cat, smirk_cat, kissing_cat, scream_cat, crying_cat_face, pouting_cat, palms_up, raised_hands, clap, wave, call_me_hand, +1, -1, facepunch, fist, fist_left, fist_right, v, ok_hand, raised_hand, raised_back_of_hand, open_hands, muscle, pray, foot, leg, handshake, point_up, point_up_2, point_down, point_left, point_right, fu, raised_hand_with_fingers_splayed, love_you, metal, crossed_fingers, vulcan_salute, writing_hand, selfie, nail_care, lips, tooth, tongue, ear, nose, eye, eyes, brain, bust_in_silhouette, busts_in_silhouette, speaking_head, baby, child, boy, girl, adult, man, woman, blonde_woman, blonde_man, bearded_person, older_adult, older_man, older_woman, man_with_gua_pi_mao, woman_with_headscarf, woman_with_turban, man_with_turban, policewoman, policeman, construction_worker_woman, construction_worker_man, guardswoman, guardsman, female_detective, male_detective, woman_health_worker, man_health_worker, woman_farmer, man_farmer, woman_cook, man_cook, woman_student, man_student, woman_singer, man_singer, woman_teacher, man_teacher, woman_factory_worker, man_factory_worker, woman_technologist, man_technologist, woman_office_worker, man_office_worker, woman_mechanic, man_mechanic, woman_scientist, man_scientist, woman_artist, man_artist, woman_firefighter, man_firefighter, woman_pilot, man_pilot, woman_astronaut, man_astronaut, woman_judge, man_judge, woman_superhero, man_superhero, woman_supervillain, man_supervillain, mrs_claus, santa, sorceress, wizard, woman_elf, man_elf, woman_vampire, man_vampire, woman_zombie, man_zombie, woman_genie, man_genie, mermaid, merman, woman_fairy, man_fairy, angel, pregnant_woman, breastfeeding, princess, prince, bride_with_veil, man_in_tuxedo, running_woman, running_man, walking_woman, walking_man, dancer, man_dancing, dancing_women, dancing_men, couple, two_men_holding_hands, two_women_holding_hands, bowing_woman, bowing_man, man_facepalming, woman_facepalming, woman_shrugging, man_shrugging, tipping_hand_woman, tipping_hand_man, no_good_woman, no_good_man, ok_woman, ok_man, raising_hand_woman, raising_hand_man, pouting_woman, pouting_man, frowning_woman, frowning_man, haircut_woman, haircut_man, massage_woman, massage_man, woman_in_steamy_room, man_in_steamy_room, couple_with_heart_woman_man, couple_with_heart_woman_woman, couple_with_heart_man_man, couplekiss_man_woman, couplekiss_woman_woman, couplekiss_man_man, family_man_woman_boy, family_man_woman_girl, family_man_woman_girl_boy, family_man_woman_boy_boy, family_man_woman_girl_girl, family_woman_woman_boy, family_woman_woman_girl, family_woman_woman_girl_boy, family_woman_woman_boy_boy, family_woman_woman_girl_girl, family_man_man_boy, family_man_man_girl, family_man_man_girl_boy, family_man_man_boy_boy, family_man_man_girl_girl, family_woman_boy, family_woman_girl, family_woman_girl_boy, family_woman_boy_boy, family_woman_girl_girl, family_man_boy, family_man_girl, family_man_girl_boy, family_man_boy_boy, family_man_girl_girl, yarn, thread, coat, labcoat, womans_clothes, tshirt, jeans, necktie, dress, bikini, kimono, lipstick, kiss, footprints, flat_shoe, high_heel, sandal, boot, mans_shoe, athletic_shoe, hiking_boot, socks, gloves, scarf, womans_hat, tophat, billed_hat, rescue_worker_helmet, mortar_board, crown, school_satchel, luggage, pouch, purse, handbag, briefcase, eyeglasses, dark_sunglasses, goggles, ring, closed_umbrella, dog, cat, mouse, hamster, rabbit, fox_face, bear, panda_face, koala, tiger, lion, cow, pig, pig_nose, frog, squid, octopus, shrimp, monkey_face, gorilla, see_no_evil, hear_no_evil, speak_no_evil, monkey, chicken, penguin, bird, baby_chick, hatching_chick, hatched_chick, duck, eagle, owl, bat, wolf, boar, horse, unicorn, honeybee, bug, butterfly, snail, beetle, ant, grasshopper, spider, scorpion, crab, snake, lizard, t-rex, sauropod, turtle, tropical_fish, fish, blowfish, dolphin, shark, whale, whale2, crocodile, leopard, zebra, tiger2, water_buffalo, ox, cow2, deer, dromedary_camel, camel, giraffe, elephant, rhinoceros, goat, ram, sheep, racehorse, pig2, rat, mouse2, rooster, turkey, dove, dog2, poodle, cat2, rabbit2, chipmunk, hedgehog, raccoon, llama, hippopotamus, kangaroo, badger, swan, peacock, parrot, lobster, mosquito, paw_prints, dragon, dragon_face, cactus, christmas_tree, evergreen_tree, deciduous_tree, palm_tree, seedling, herb, shamrock, four_leaf_clover, bamboo, tanabata_tree, leaves, fallen_leaf, maple_leaf, ear_of_rice, hibiscus, sunflower, rose, wilted_flower, tulip, blossom, cherry_blossom, bouquet, mushroom, chestnut, jack_o_lantern, shell, spider_web, earth_americas, earth_africa, earth_asia, full_moon, waning_gibbous_moon, last_quarter_moon, waning_crescent_moon, new_moon, waxing_crescent_moon, first_quarter_moon, waxing_gibbous_moon, new_moon_with_face, full_moon_with_face, first_quarter_moon_with_face, last_quarter_moon_with_face, sun_with_face, crescent_moon, star, star2, dizzy, sparkles, comet, sunny, sun_behind_small_cloud, partly_sunny, sun_behind_large_cloud, sun_behind_rain_cloud, cloud, cloud_with_rain, cloud_with_lightning_and_rain, cloud_with_lightning, zap, fire, boom, snowflake, cloud_with_snow, snowman, snowman_with_snow, wind_face, dash, tornado, fog, open_umbrella, umbrella, droplet, sweat_drops, ocean, green_apple, apple, pear, tangerine, lemon, banana, watermelon, grapes, strawberry, melon, cherries, peach, pineapple, coconut, kiwi_fruit, mango, avocado, broccoli, tomato, eggplant, cucumber, carrot, hot_pepper, potato, corn, leafy_greens, sweet_potato, peanuts, honey_pot, croissant, bread, baguette_bread, bagel, pretzel, cheese, egg, bacon, steak, pancakes, poultry_leg, meat_on_bone, bone, fried_shrimp, fried_egg, hamburger, fries, stuffed_flatbread, hotdog, pizza, sandwich, canned_food, spaghetti, taco, burrito, green_salad, shallow_pan_of_food, ramen, stew, fish_cake, fortune_cookie, sushi, bento, curry, rice_ball, rice, rice_cracker, oden, dango, shaved_ice, ice_cream, icecream, pie, cake, cupcake, moon_cake, birthday, custard, candy, lollipop, chocolate_bar, popcorn, dumpling, doughnut, cookie, milk_glass, beer, beers, clinking_glasses, wine_glass, tumbler_glass, cocktail, tropical_drink, champagne, sake, tea, cup_with_straw, coffee, baby_bottle, salt, spoon, fork_and_knife, plate_with_cutlery, bowl_with_spoon, takeout_box, chopsticks, soccer, basketball, football, baseball, softball, tennis, volleyball, rugby_football, flying_disc, 8ball, golf, golfing_woman, golfing_man, ping_pong, badminton, goal_net, ice_hockey, field_hockey, lacrosse, cricket, ski, skier, snowboarder, person_fencing, women_wrestling, men_wrestling, woman_cartwheeling, man_cartwheeling, woman_playing_handball, man_playing_handball, ice_skate, curling_stone, skateboard, sled, bow_and_arrow, fishing_pole_and_fish, boxing_glove, martial_arts_uniform, rowing_woman, rowing_man, climbing_woman, climbing_man, swimming_woman, swimming_man, woman_playing_water_polo, man_playing_water_polo, woman_in_lotus_position, man_in_lotus_position, surfing_woman, surfing_man, bath, basketball_woman, basketball_man, weight_lifting_woman, weight_lifting_man, biking_woman, biking_man, mountain_biking_woman, mountain_biking_man, horse_racing, business_suit_levitating, trophy, running_shirt_with_sash, medal_sports, medal_military, 1st_place_medal, 2nd_place_medal, 3rd_place_medal, reminder_ribbon, rosette, ticket, tickets, performing_arts, art, circus_tent, woman_juggling, man_juggling, microphone, headphones, musical_score, musical_keyboard, drum, saxophone, trumpet, guitar, violin, clapper, video_game, space_invader, dart, game_die, chess_pawn, slot_machine, jigsaw, bowling, red_car, taxi, blue_car, bus, trolleybus, racing_car, police_car, ambulance, fire_engine, minibus, truck, articulated_lorry, tractor, kick_scooter, motorcycle, bike, motor_scooter, rotating_light, oncoming_police_car, oncoming_bus, oncoming_automobile, oncoming_taxi, aerial_tramway, mountain_cableway, suspension_railway, railway_car, train, monorail, bullettrain_side, bullettrain_front, light_rail, mountain_railway, steam_locomotive, train2, metro, tram, station, flying_saucer, helicopter, small_airplane, airplane, flight_departure, flight_arrival, sailboat, motor_boat, speedboat, ferry, passenger_ship, rocket, artificial_satellite, seat, canoe, anchor, construction, fuelpump, busstop, vertical_traffic_light, traffic_light, checkered_flag, ship, ferris_wheel, roller_coaster, carousel_horse, building_construction, foggy, tokyo_tower, factory, fountain, rice_scene, mountain, mountain_snow, mount_fuji, volcano, japan, camping, tent, national_park, motorway, railway_track, sunrise, sunrise_over_mountains, desert, beach_umbrella, desert_island, city_sunrise, city_sunset, cityscape, night_with_stars, bridge_at_night, milky_way, stars, sparkler, fireworks, rainbow, houses, european_castle, japanese_castle, stadium, statue_of_liberty, house, house_with_garden, derelict_house, office, department_store, post_office, european_post_office, hospital, bank, hotel, convenience_store, school, love_hotel, wedding, classical_building, church, mosque, synagogue, kaaba, shinto_shrine, watch, iphone, calling, computer, keyboard, desktop_computer, printer, computer_mouse, trackball, joystick, clamp, minidisc, floppy_disk, cd, dvd, vhs, camera, camera_flash, video_camera, movie_camera, film_projector, film_strip, telephone_receiver, phone, pager, fax, tv, radio, studio_microphone, level_slider, control_knobs, compass, stopwatch, timer_clock, alarm_clock, mantelpiece_clock, hourglass_flowing_sand, hourglass, satellite, battery, electric_plug, bulb, flashlight, candle, fire_extinguisher, wastebasket, oil_drum, money_with_wings, dollar, yen, euro, pound, moneybag, credit_card, gem, balance_scale, toolbox, wrench, hammer, hammer_and_pick, hammer_and_wrench, pick, nut_and_bolt, gear, brick, chains, magnet, gun, bomb, firecracker, hocho, dagger, crossed_swords, shield, smoking, skull_and_crossbones, coffin, funeral_urn, amphora, crystal_ball, prayer_beads, nazar_amulet, barber, alembic, telescope, microscope, hole, pill, syringe, dna, microbe, petri_dish, test_tube, thermometer, broom, basket, toilet_paper, label, bookmark, toilet, shower, bathtub, soap, sponge, lotion_bottle, key, old_key, couch_and_lamp, sleeping_bed, bed, door, bellhop_bell, teddy_bear, framed_picture, world_map, parasol_on_ground, moyai, shopping, shopping_cart, balloon, flags, ribbon, gift, confetti_ball, tada, dolls, wind_chime, crossed_flags, izakaya_lantern, red_envelope, email, envelope_with_arrow, incoming_envelope, e-mail, love_letter, postbox, mailbox_closed, mailbox, mailbox_with_mail, mailbox_with_no_mail, package, postal_horn, inbox_tray, outbox_tray, scroll, page_with_curl, bookmark_tabs, receipt, bar_chart, chart_with_upwards_trend, chart_with_downwards_trend, page_facing_up, date, calendar, spiral_calendar, card_index, card_file_box, ballot_box, file_cabinet, clipboard, spiral_notepad, file_folder, open_file_folder, card_index_dividers, newspaper_roll, newspaper, notebook, closed_book, green_book, blue_book, orange_book, notebook_with_decorative_cover, ledger, books, open_book, safety_pin, link, paperclip, paperclips, scissors, triangular_ruler, straight_ruler, abacus, pushpin, round_pushpin, triangular_flag_on_post, white_flag, black_flag, rainbow_flag, closed_lock_with_key, lock, unlock, lock_with_ink_pen, pen, fountain_pen, black_nib, memo, pencil2, crayon, paintbrush, mag, mag_right, heart, orange_heart, yellow_heart, green_heart, blue_heart, purple_heart, black_heart, broken_heart, heavy_heart_exclamation, two_hearts, revolving_hearts, heartbeat, heartpulse, sparkling_heart, cupid, gift_heart, heart_decoration, peace_symbol, latin_cross, star_and_crescent, om, wheel_of_dharma, star_of_david, six_pointed_star, menorah, yin_yang, orthodox_cross, place_of_worship, ophiuchus, aries, taurus, gemini, cancer, leo, virgo, libra, scorpius, sagittarius, capricorn, aquarius, pisces, id, atom_symbol, u7a7a, u5272, radioactive, biohazard, mobile_phone_off, vibration_mode, u6709, u7121, u7533, u55b6, u6708, eight_pointed_black_star, vs, accept, white_flower, ideograph_advantage, secret, congratulations, u5408, u6e80, u7981, a, b, ab, cl, o2, sos, no_entry, name_badge, no_entry_sign, x, o, stop_sign, anger, hotsprings, no_pedestrians, do_not_litter, no_bicycles, non-potable_water, underage, no_mobile_phones, exclamation, grey_exclamation, question, grey_question, bangbang, interrobang, low_brightness, high_brightness, trident, fleur_de_lis, part_alternation_mark, warning, children_crossing, beginner, recycle, u6307, chart, sparkle, eight_spoked_asterisk, negative_squared_cross_mark, white_check_mark, diamond_shape_with_a_dot_inside, cyclone, loop, globe_with_meridians, m, atm, sa, passport_control, customs, baggage_claim, left_luggage, wheelchair, no_smoking, wc, parking, potable_water, mens, womens, baby_symbol, restroom, put_litter_in_its_place, cinema, signal_strength, koko, ng, ok, up, cool, new, free, zero, one, two, three, four, five, six, seven, eight, nine, keycap_ten, asterisk, eject_button, arrow_forward, pause_button, next_track_button, stop_button, record_button, play_or_pause_button, previous_track_button, fast_forward, rewind, twisted_rightwards_arrows, repeat, repeat_one, arrow_backward, arrow_up_small, arrow_down_small, arrow_double_up, arrow_double_down, arrow_right, arrow_left, arrow_up, arrow_down, arrow_upper_right, arrow_lower_right, arrow_lower_left, arrow_upper_left, arrow_up_down, left_right_arrow, arrows_counterclockwise, arrow_right_hook, leftwards_arrow_with_hook, arrow_heading_up, arrow_heading_down, hash, information_source, abc, abcd, capital_abcd, symbols, musical_note, notes, wavy_dash, curly_loop, heavy_check_mark, arrows_clockwise, heavy_plus_sign, heavy_minus_sign, heavy_division_sign, heavy_multiplication_x, infinity, heavy_dollar_sign, currency_exchange, copyright, registered, tm, end, back, on, top, soon, ballot_box_with_check, radio_button, white_circle, black_circle, red_circle, large_blue_circle, small_orange_diamond, small_blue_diamond, large_orange_diamond, large_blue_diamond, small_red_triangle, black_small_square, white_small_square, black_large_square, white_large_square, small_red_triangle_down, black_medium_square, white_medium_square, black_medium_small_square, white_medium_small_square, black_square_button, white_square_button, speaker, sound, loud_sound, mute, mega, loudspeaker, bell, no_bell, black_joker, mahjong, spades, clubs, hearts, diamonds, flower_playing_cards, thought_balloon, right_anger_bubble, speech_balloon, left_speech_bubble, clock1, clock2, clock3, clock4, clock5, clock6, clock7, clock8, clock9, clock10, clock11, clock12, clock130, clock230, clock330, clock430, clock530, clock630, clock730, clock830, clock930, clock1030, clock1130, clock1230, afghanistan, aland_islands, albania, algeria, american_samoa, andorra, angola, anguilla, antarctica, antigua_barbuda, argentina, armenia, aruba, australia, austria, azerbaijan, bahamas, bahrain, bangladesh, barbados, belarus, belgium, belize, benin, bermuda, bhutan, bolivia, caribbean_netherlands, bosnia_herzegovina, botswana, brazil, british_indian_ocean_territory, british_virgin_islands, brunei, bulgaria, burkina_faso, burundi, cape_verde, cambodia, cameroon, canada, canary_islands, cayman_islands, central_african_republic, chad, chile, cn, christmas_island, cocos_islands, colombia, comoros, congo_brazzaville, congo_kinshasa, cook_islands, costa_rica, croatia, cuba, curacao, cyprus, czech_republic, denmark, djibouti, dominica, dominican_republic, ecuador, egypt, el_salvador, equatorial_guinea, eritrea, estonia, ethiopia, eu, falkland_islands, faroe_islands, fiji, finland, fr, french_guiana, french_polynesia, french_southern_territories, gabon, gambia, georgia, de, ghana, gibraltar, greece, greenland, grenada, guadeloupe, guam, guatemala, guernsey, guinea, guinea_bissau, guyana, haiti, honduras, hong_kong, hungary, iceland, india, indonesia, iran, iraq, ireland, isle_of_man, israel, it, cote_divoire, jamaica, jp, jersey, jordan, kazakhstan, kenya, kiribati, kosovo, kuwait, kyrgyzstan, laos, latvia, lebanon, lesotho, liberia, libya, liechtenstein, lithuania, luxembourg, macau, macedonia, madagascar, malawi, malaysia, maldives, mali, malta, marshall_islands, martinique, mauritania, mauritius, mayotte, mexico, micronesia, moldova, monaco, mongolia, montenegro, montserrat, morocco, mozambique, myanmar, namibia, nauru, nepal, netherlands, new_caledonia, new_zealand, nicaragua, niger, nigeria, niue, norfolk_island, northern_mariana_islands, north_korea, norway, oman, pakistan, palau, palestinian_territories, panama, papua_new_guinea, paraguay, peru, philippines, pitcairn_islands, poland, portugal, puerto_rico, qatar, reunion, romania, ru, rwanda, st_barthelemy, st_helena, st_kitts_nevis, st_lucia, st_pierre_miquelon, st_vincent_grenadines, samoa, san_marino, sao_tome_principe, saudi_arabia, senegal, serbia, seychelles, sierra_leone, singapore, sint_maarten, slovakia, slovenia, solomon_islands, somalia, south_africa, south_georgia_south_sandwich_islands, kr, south_sudan, es, sri_lanka, sudan, suriname, swaziland, sweden, switzerland, syria, taiwan, tajikistan, tanzania, thailand, timor_leste, togo, tokelau, tonga, trinidad_tobago, tunisia, tr, turkmenistan, turks_caicos_islands, tuvalu, uganda, ukraine, united_arab_emirates, uk, england, scotland, wales, us, us_virgin_islands, uruguay, uzbekistan, vanuatu, vatican_city, venezuela, vietnam, wallis_futuna, western_sahara, yemen, zambia, zimbabwe, united_nations, pirate_flag, default */
/***/ (function(module) {

module.exports = JSON.parse("{\"100\":{\"keywords\":[\"score\",\"perfect\",\"numbers\",\"century\",\"exam\",\"quiz\",\"test\",\"pass\",\"hundred\"],\"char\":\"💯\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"1234\":{\"keywords\":[\"numbers\",\"blue-square\"],\"char\":\"🔢\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"grinning\":{\"keywords\":[\"face\",\"smile\",\"happy\",\"joy\",\":D\",\"grin\"],\"char\":\"😀\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"grimacing\":{\"keywords\":[\"face\",\"grimace\",\"teeth\"],\"char\":\"😬\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"grin\":{\"keywords\":[\"face\",\"happy\",\"smile\",\"joy\",\"kawaii\"],\"char\":\"😁\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"joy\":{\"keywords\":[\"face\",\"cry\",\"tears\",\"weep\",\"happy\",\"happytears\",\"haha\"],\"char\":\"😂\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"rofl\":{\"keywords\":[\"face\",\"rolling\",\"floor\",\"laughing\",\"lol\",\"haha\"],\"char\":\"🤣\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"partying\":{\"keywords\":[\"face\",\"celebration\",\"woohoo\"],\"char\":\"🥳\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smiley\":{\"keywords\":[\"face\",\"happy\",\"joy\",\"haha\",\":D\",\":)\",\"smile\",\"funny\"],\"char\":\"😃\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smile\":{\"keywords\":[\"face\",\"happy\",\"joy\",\"funny\",\"haha\",\"laugh\",\"like\",\":D\",\":)\"],\"char\":\"😄\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sweat_smile\":{\"keywords\":[\"face\",\"hot\",\"happy\",\"laugh\",\"sweat\",\"smile\",\"relief\"],\"char\":\"😅\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"laughing\":{\"keywords\":[\"happy\",\"joy\",\"lol\",\"satisfied\",\"haha\",\"face\",\"glad\",\"XD\",\"laugh\"],\"char\":\"😆\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"innocent\":{\"keywords\":[\"face\",\"angel\",\"heaven\",\"halo\"],\"char\":\"😇\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"wink\":{\"keywords\":[\"face\",\"happy\",\"mischievous\",\"secret\",\";)\",\"smile\",\"eye\"],\"char\":\"😉\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"blush\":{\"keywords\":[\"face\",\"smile\",\"happy\",\"flushed\",\"crush\",\"embarrassed\",\"shy\",\"joy\"],\"char\":\"😊\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"slightly_smiling_face\":{\"keywords\":[\"face\",\"smile\"],\"char\":\"🙂\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"upside_down_face\":{\"keywords\":[\"face\",\"flipped\",\"silly\",\"smile\"],\"char\":\"🙃\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"relaxed\":{\"keywords\":[\"face\",\"blush\",\"massage\",\"happiness\"],\"char\":\"☺️\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"yum\":{\"keywords\":[\"happy\",\"joy\",\"tongue\",\"smile\",\"face\",\"silly\",\"yummy\",\"nom\",\"delicious\",\"savouring\"],\"char\":\"😋\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"relieved\":{\"keywords\":[\"face\",\"relaxed\",\"phew\",\"massage\",\"happiness\"],\"char\":\"😌\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"heart_eyes\":{\"keywords\":[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"crush\",\"heart\"],\"char\":\"😍\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smiling_face_with_three_hearts\":{\"keywords\":[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"crush\",\"hearts\",\"adore\"],\"char\":\"🥰\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"kissing_heart\":{\"keywords\":[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],\"char\":\"😘\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"kissing\":{\"keywords\":[\"love\",\"like\",\"face\",\"3\",\"valentines\",\"infatuation\",\"kiss\"],\"char\":\"😗\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"kissing_smiling_eyes\":{\"keywords\":[\"face\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],\"char\":\"😙\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"kissing_closed_eyes\":{\"keywords\":[\"face\",\"love\",\"like\",\"affection\",\"valentines\",\"infatuation\",\"kiss\"],\"char\":\"😚\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"stuck_out_tongue_winking_eye\":{\"keywords\":[\"face\",\"prank\",\"childish\",\"playful\",\"mischievous\",\"smile\",\"wink\",\"tongue\"],\"char\":\"😜\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"zany\":{\"keywords\":[\"face\",\"goofy\",\"crazy\"],\"char\":\"🤪\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"raised_eyebrow\":{\"keywords\":[\"face\",\"distrust\",\"scepticism\",\"disapproval\",\"disbelief\",\"surprise\"],\"char\":\"🤨\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"monocle\":{\"keywords\":[\"face\",\"stuffy\",\"wealthy\"],\"char\":\"🧐\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"stuck_out_tongue_closed_eyes\":{\"keywords\":[\"face\",\"prank\",\"playful\",\"mischievous\",\"smile\",\"tongue\"],\"char\":\"😝\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"stuck_out_tongue\":{\"keywords\":[\"face\",\"prank\",\"childish\",\"playful\",\"mischievous\",\"smile\",\"tongue\"],\"char\":\"😛\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"money_mouth_face\":{\"keywords\":[\"face\",\"rich\",\"dollar\",\"money\"],\"char\":\"🤑\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"nerd_face\":{\"keywords\":[\"face\",\"nerdy\",\"geek\",\"dork\"],\"char\":\"🤓\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sunglasses\":{\"keywords\":[\"face\",\"cool\",\"smile\",\"summer\",\"beach\",\"sunglass\"],\"char\":\"😎\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"star_struck\":{\"keywords\":[\"face\",\"smile\",\"starry\",\"eyes\",\"grinning\"],\"char\":\"🤩\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"clown_face\":{\"keywords\":[\"face\"],\"char\":\"🤡\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"cowboy_hat_face\":{\"keywords\":[\"face\",\"cowgirl\",\"hat\"],\"char\":\"🤠\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"hugs\":{\"keywords\":[\"face\",\"smile\",\"hug\"],\"char\":\"🤗\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smirk\":{\"keywords\":[\"face\",\"smile\",\"mean\",\"prank\",\"smug\",\"sarcasm\"],\"char\":\"😏\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"no_mouth\":{\"keywords\":[\"face\",\"hellokitty\"],\"char\":\"😶\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"neutral_face\":{\"keywords\":[\"indifference\",\"meh\",\":|\",\"neutral\"],\"char\":\"😐\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"expressionless\":{\"keywords\":[\"face\",\"indifferent\",\"-_-\",\"meh\",\"deadpan\"],\"char\":\"😑\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"unamused\":{\"keywords\":[\"indifference\",\"bored\",\"straight face\",\"serious\",\"sarcasm\",\"unimpressed\",\"skeptical\",\"dubious\",\"side_eye\"],\"char\":\"😒\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"roll_eyes\":{\"keywords\":[\"face\",\"eyeroll\",\"frustrated\"],\"char\":\"🙄\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"thinking\":{\"keywords\":[\"face\",\"hmmm\",\"think\",\"consider\"],\"char\":\"🤔\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"lying_face\":{\"keywords\":[\"face\",\"lie\",\"pinocchio\"],\"char\":\"🤥\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"hand_over_mouth\":{\"keywords\":[\"face\",\"whoops\",\"shock\",\"surprise\"],\"char\":\"🤭\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"shushing\":{\"keywords\":[\"face\",\"quiet\",\"shhh\"],\"char\":\"🤫\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"symbols_over_mouth\":{\"keywords\":[\"face\",\"swearing\",\"cursing\",\"cussing\",\"profanity\",\"expletive\"],\"char\":\"🤬\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"exploding_head\":{\"keywords\":[\"face\",\"shocked\",\"mind\",\"blown\"],\"char\":\"🤯\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"flushed\":{\"keywords\":[\"face\",\"blush\",\"shy\",\"flattered\"],\"char\":\"😳\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"disappointed\":{\"keywords\":[\"face\",\"sad\",\"upset\",\"depressed\",\":(\"],\"char\":\"😞\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"worried\":{\"keywords\":[\"face\",\"concern\",\"nervous\",\":(\"],\"char\":\"😟\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"angry\":{\"keywords\":[\"mad\",\"face\",\"annoyed\",\"frustrated\"],\"char\":\"😠\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"rage\":{\"keywords\":[\"angry\",\"mad\",\"hate\",\"despise\"],\"char\":\"😡\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"pensive\":{\"keywords\":[\"face\",\"sad\",\"depressed\",\"upset\"],\"char\":\"😔\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"confused\":{\"keywords\":[\"face\",\"indifference\",\"huh\",\"weird\",\"hmmm\",\":/\"],\"char\":\"😕\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"slightly_frowning_face\":{\"keywords\":[\"face\",\"frowning\",\"disappointed\",\"sad\",\"upset\"],\"char\":\"🙁\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"frowning_face\":{\"keywords\":[\"face\",\"sad\",\"upset\",\"frown\"],\"char\":\"☹\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"persevere\":{\"keywords\":[\"face\",\"sick\",\"no\",\"upset\",\"oops\"],\"char\":\"😣\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"confounded\":{\"keywords\":[\"face\",\"confused\",\"sick\",\"unwell\",\"oops\",\":S\"],\"char\":\"😖\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"tired_face\":{\"keywords\":[\"sick\",\"whine\",\"upset\",\"frustrated\"],\"char\":\"😫\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"weary\":{\"keywords\":[\"face\",\"tired\",\"sleepy\",\"sad\",\"frustrated\",\"upset\"],\"char\":\"😩\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"pleading\":{\"keywords\":[\"face\",\"begging\",\"mercy\"],\"char\":\"🥺\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"triumph\":{\"keywords\":[\"face\",\"gas\",\"phew\",\"proud\",\"pride\"],\"char\":\"😤\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"open_mouth\":{\"keywords\":[\"face\",\"surprise\",\"impressed\",\"wow\",\"whoa\",\":O\"],\"char\":\"😮\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"scream\":{\"keywords\":[\"face\",\"munch\",\"scared\",\"omg\"],\"char\":\"😱\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"fearful\":{\"keywords\":[\"face\",\"scared\",\"terrified\",\"nervous\",\"oops\",\"huh\"],\"char\":\"😨\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"cold_sweat\":{\"keywords\":[\"face\",\"nervous\",\"sweat\"],\"char\":\"😰\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"hushed\":{\"keywords\":[\"face\",\"woo\",\"shh\"],\"char\":\"😯\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"frowning\":{\"keywords\":[\"face\",\"aw\",\"what\"],\"char\":\"😦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"anguished\":{\"keywords\":[\"face\",\"stunned\",\"nervous\"],\"char\":\"😧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"cry\":{\"keywords\":[\"face\",\"tears\",\"sad\",\"depressed\",\"upset\",\":'(\"],\"char\":\"😢\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"disappointed_relieved\":{\"keywords\":[\"face\",\"phew\",\"sweat\",\"nervous\"],\"char\":\"😥\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"drooling_face\":{\"keywords\":[\"face\"],\"char\":\"🤤\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sleepy\":{\"keywords\":[\"face\",\"tired\",\"rest\",\"nap\"],\"char\":\"😪\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sweat\":{\"keywords\":[\"face\",\"hot\",\"sad\",\"tired\",\"exercise\"],\"char\":\"😓\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"hot\":{\"keywords\":[\"face\",\"feverish\",\"heat\",\"red\",\"sweating\"],\"char\":\"🥵\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"cold\":{\"keywords\":[\"face\",\"blue\",\"freezing\",\"frozen\",\"frostbite\",\"icicles\"],\"char\":\"🥶\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sob\":{\"keywords\":[\"face\",\"cry\",\"tears\",\"sad\",\"upset\",\"depressed\"],\"char\":\"😭\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"dizzy_face\":{\"keywords\":[\"spent\",\"unconscious\",\"xox\",\"dizzy\"],\"char\":\"😵\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"astonished\":{\"keywords\":[\"face\",\"xox\",\"surprised\",\"poisoned\"],\"char\":\"😲\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"zipper_mouth_face\":{\"keywords\":[\"face\",\"sealed\",\"zipper\",\"secret\"],\"char\":\"🤐\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"nauseated_face\":{\"keywords\":[\"face\",\"vomit\",\"gross\",\"green\",\"sick\",\"throw up\",\"ill\"],\"char\":\"🤢\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sneezing_face\":{\"keywords\":[\"face\",\"gesundheit\",\"sneeze\",\"sick\",\"allergy\"],\"char\":\"🤧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"vomiting\":{\"keywords\":[\"face\",\"sick\"],\"char\":\"🤮\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"mask\":{\"keywords\":[\"face\",\"sick\",\"ill\",\"disease\"],\"char\":\"😷\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"face_with_thermometer\":{\"keywords\":[\"sick\",\"temperature\",\"thermometer\",\"cold\",\"fever\"],\"char\":\"🤒\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"face_with_head_bandage\":{\"keywords\":[\"injured\",\"clumsy\",\"bandage\",\"hurt\"],\"char\":\"🤕\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"woozy\":{\"keywords\":[\"face\",\"dizzy\",\"intoxicated\",\"tipsy\",\"wavy\"],\"char\":\"🥴\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sleeping\":{\"keywords\":[\"face\",\"tired\",\"sleepy\",\"night\",\"zzz\"],\"char\":\"😴\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"zzz\":{\"keywords\":[\"sleepy\",\"tired\",\"dream\"],\"char\":\"💤\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"poop\":{\"keywords\":[\"hankey\",\"shitface\",\"fail\",\"turd\",\"shit\"],\"char\":\"💩\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smiling_imp\":{\"keywords\":[\"devil\",\"horns\"],\"char\":\"😈\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"imp\":{\"keywords\":[\"devil\",\"angry\",\"horns\"],\"char\":\"👿\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"japanese_ogre\":{\"keywords\":[\"monster\",\"red\",\"mask\",\"halloween\",\"scary\",\"creepy\",\"devil\",\"demon\",\"japanese\",\"ogre\"],\"char\":\"👹\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"japanese_goblin\":{\"keywords\":[\"red\",\"evil\",\"mask\",\"monster\",\"scary\",\"creepy\",\"japanese\",\"goblin\"],\"char\":\"👺\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"skull\":{\"keywords\":[\"dead\",\"skeleton\",\"creepy\",\"death\"],\"char\":\"💀\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"ghost\":{\"keywords\":[\"halloween\",\"spooky\",\"scary\"],\"char\":\"👻\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"alien\":{\"keywords\":[\"UFO\",\"paul\",\"weird\",\"outer_space\"],\"char\":\"👽\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"robot\":{\"keywords\":[\"computer\",\"machine\",\"bot\"],\"char\":\"🤖\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smiley_cat\":{\"keywords\":[\"animal\",\"cats\",\"happy\",\"smile\"],\"char\":\"😺\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smile_cat\":{\"keywords\":[\"animal\",\"cats\",\"smile\"],\"char\":\"😸\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"joy_cat\":{\"keywords\":[\"animal\",\"cats\",\"haha\",\"happy\",\"tears\"],\"char\":\"😹\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"heart_eyes_cat\":{\"keywords\":[\"animal\",\"love\",\"like\",\"affection\",\"cats\",\"valentines\",\"heart\"],\"char\":\"😻\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"smirk_cat\":{\"keywords\":[\"animal\",\"cats\",\"smirk\"],\"char\":\"😼\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"kissing_cat\":{\"keywords\":[\"animal\",\"cats\",\"kiss\"],\"char\":\"😽\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"scream_cat\":{\"keywords\":[\"animal\",\"cats\",\"munch\",\"scared\",\"scream\"],\"char\":\"🙀\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"crying_cat_face\":{\"keywords\":[\"animal\",\"tears\",\"weep\",\"sad\",\"cats\",\"upset\",\"cry\"],\"char\":\"😿\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"pouting_cat\":{\"keywords\":[\"animal\",\"cats\"],\"char\":\"😾\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"palms_up\":{\"keywords\":[\"hands\",\"gesture\",\"cupped\",\"prayer\"],\"char\":\"🤲\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"raised_hands\":{\"keywords\":[\"gesture\",\"hooray\",\"yea\",\"celebration\",\"hands\"],\"char\":\"🙌\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"clap\":{\"keywords\":[\"hands\",\"praise\",\"applause\",\"congrats\",\"yay\"],\"char\":\"👏\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"wave\":{\"keywords\":[\"hands\",\"gesture\",\"goodbye\",\"solong\",\"farewell\",\"hello\",\"hi\",\"palm\"],\"char\":\"👋\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"call_me_hand\":{\"keywords\":[\"hands\",\"gesture\"],\"char\":\"🤙\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"+1\":{\"keywords\":[\"thumbsup\",\"yes\",\"awesome\",\"good\",\"agree\",\"accept\",\"cool\",\"hand\",\"like\"],\"char\":\"👍\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"-1\":{\"keywords\":[\"thumbsdown\",\"no\",\"dislike\",\"hand\"],\"char\":\"👎\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"facepunch\":{\"keywords\":[\"angry\",\"violence\",\"fist\",\"hit\",\"attack\",\"hand\"],\"char\":\"👊\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"fist\":{\"keywords\":[\"fingers\",\"hand\",\"grasp\"],\"char\":\"✊\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"fist_left\":{\"keywords\":[\"hand\",\"fistbump\"],\"char\":\"🤛\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"fist_right\":{\"keywords\":[\"hand\",\"fistbump\"],\"char\":\"🤜\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"v\":{\"keywords\":[\"fingers\",\"ohyeah\",\"hand\",\"peace\",\"victory\",\"two\"],\"char\":\"✌\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"ok_hand\":{\"keywords\":[\"fingers\",\"limbs\",\"perfect\",\"ok\",\"okay\"],\"char\":\"👌\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"raised_hand\":{\"keywords\":[\"fingers\",\"stop\",\"highfive\",\"palm\",\"ban\"],\"char\":\"✋\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"raised_back_of_hand\":{\"keywords\":[\"fingers\",\"raised\",\"backhand\"],\"char\":\"🤚\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"open_hands\":{\"keywords\":[\"fingers\",\"butterfly\",\"hands\",\"open\"],\"char\":\"👐\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"muscle\":{\"keywords\":[\"arm\",\"flex\",\"hand\",\"summer\",\"strong\",\"biceps\"],\"char\":\"💪\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"pray\":{\"keywords\":[\"please\",\"hope\",\"wish\",\"namaste\",\"highfive\"],\"char\":\"🙏\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"foot\":{\"keywords\":[\"kick\",\"stomp\"],\"char\":\"🦶\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"leg\":{\"keywords\":[\"kick\",\"limb\"],\"char\":\"🦵\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"handshake\":{\"keywords\":[\"agreement\",\"shake\"],\"char\":\"🤝\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"point_up\":{\"keywords\":[\"hand\",\"fingers\",\"direction\",\"up\"],\"char\":\"☝\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"point_up_2\":{\"keywords\":[\"fingers\",\"hand\",\"direction\",\"up\"],\"char\":\"👆\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"point_down\":{\"keywords\":[\"fingers\",\"hand\",\"direction\",\"down\"],\"char\":\"👇\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"point_left\":{\"keywords\":[\"direction\",\"fingers\",\"hand\",\"left\"],\"char\":\"👈\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"point_right\":{\"keywords\":[\"fingers\",\"hand\",\"direction\",\"right\"],\"char\":\"👉\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"fu\":{\"keywords\":[\"hand\",\"fingers\",\"rude\",\"middle\",\"flipping\"],\"char\":\"🖕\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"raised_hand_with_fingers_splayed\":{\"keywords\":[\"hand\",\"fingers\",\"palm\"],\"char\":\"🖐\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"love_you\":{\"keywords\":[\"hand\",\"fingers\",\"gesture\"],\"char\":\"🤟\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"metal\":{\"keywords\":[\"hand\",\"fingers\",\"evil_eye\",\"sign_of_horns\",\"rock_on\"],\"char\":\"🤘\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"crossed_fingers\":{\"keywords\":[\"good\",\"lucky\"],\"char\":\"🤞\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"vulcan_salute\":{\"keywords\":[\"hand\",\"fingers\",\"spock\",\"star trek\"],\"char\":\"🖖\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"writing_hand\":{\"keywords\":[\"lower_left_ballpoint_pen\",\"stationery\",\"write\",\"compose\"],\"char\":\"✍\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"selfie\":{\"keywords\":[\"camera\",\"phone\"],\"char\":\"🤳\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"nail_care\":{\"keywords\":[\"beauty\",\"manicure\",\"finger\",\"fashion\",\"nail\"],\"char\":\"💅\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"lips\":{\"keywords\":[\"mouth\",\"kiss\"],\"char\":\"👄\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"tooth\":{\"keywords\":[\"teeth\",\"dentist\"],\"char\":\"🦷\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"tongue\":{\"keywords\":[\"mouth\",\"playful\"],\"char\":\"👅\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"ear\":{\"keywords\":[\"face\",\"hear\",\"sound\",\"listen\"],\"char\":\"👂\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"nose\":{\"keywords\":[\"smell\",\"sniff\"],\"char\":\"👃\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"eye\":{\"keywords\":[\"face\",\"look\",\"see\",\"watch\",\"stare\"],\"char\":\"👁\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"eyes\":{\"keywords\":[\"look\",\"watch\",\"stalk\",\"peek\",\"see\"],\"char\":\"👀\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"brain\":{\"keywords\":[\"smart\",\"intelligent\"],\"char\":\"🧠\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"bust_in_silhouette\":{\"keywords\":[\"user\",\"person\",\"human\"],\"char\":\"👤\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"busts_in_silhouette\":{\"keywords\":[\"user\",\"person\",\"human\",\"group\",\"team\"],\"char\":\"👥\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"speaking_head\":{\"keywords\":[\"user\",\"person\",\"human\",\"sing\",\"say\",\"talk\"],\"char\":\"🗣\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"baby\":{\"keywords\":[\"child\",\"boy\",\"girl\",\"toddler\"],\"char\":\"👶\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"child\":{\"keywords\":[\"gender-neutral\",\"young\"],\"char\":\"🧒\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"boy\":{\"keywords\":[\"man\",\"male\",\"guy\",\"teenager\"],\"char\":\"👦\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"girl\":{\"keywords\":[\"female\",\"woman\",\"teenager\"],\"char\":\"👧\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"adult\":{\"keywords\":[\"gender-neutral\",\"person\"],\"char\":\"🧑\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man\":{\"keywords\":[\"mustache\",\"father\",\"dad\",\"guy\",\"classy\",\"sir\",\"moustache\"],\"char\":\"👨\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman\":{\"keywords\":[\"female\",\"girls\",\"lady\"],\"char\":\"👩\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"blonde_woman\":{\"keywords\":[\"woman\",\"female\",\"girl\",\"blonde\",\"person\"],\"char\":\"👱‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"blonde_man\":{\"keywords\":[\"man\",\"male\",\"boy\",\"blonde\",\"guy\",\"person\"],\"char\":\"👱\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"bearded_person\":{\"keywords\":[\"person\",\"bewhiskered\"],\"char\":\"🧔\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"older_adult\":{\"keywords\":[\"human\",\"elder\",\"senior\",\"gender-neutral\"],\"char\":\"🧓\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"older_man\":{\"keywords\":[\"human\",\"male\",\"men\",\"old\",\"elder\",\"senior\"],\"char\":\"👴\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"older_woman\":{\"keywords\":[\"human\",\"female\",\"women\",\"lady\",\"old\",\"elder\",\"senior\"],\"char\":\"👵\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_with_gua_pi_mao\":{\"keywords\":[\"male\",\"boy\",\"chinese\"],\"char\":\"👲\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_with_headscarf\":{\"keywords\":[\"female\",\"hijab\",\"mantilla\",\"tichel\"],\"char\":\"🧕\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_with_turban\":{\"keywords\":[\"female\",\"indian\",\"hinduism\",\"arabs\",\"woman\"],\"char\":\"👳‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_with_turban\":{\"keywords\":[\"male\",\"indian\",\"hinduism\",\"arabs\"],\"char\":\"👳\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"policewoman\":{\"keywords\":[\"woman\",\"police\",\"law\",\"legal\",\"enforcement\",\"arrest\",\"911\",\"female\"],\"char\":\"👮‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"policeman\":{\"keywords\":[\"man\",\"police\",\"law\",\"legal\",\"enforcement\",\"arrest\",\"911\"],\"char\":\"👮\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"construction_worker_woman\":{\"keywords\":[\"female\",\"human\",\"wip\",\"build\",\"construction\",\"worker\",\"labor\",\"woman\"],\"char\":\"👷‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"construction_worker_man\":{\"keywords\":[\"male\",\"human\",\"wip\",\"guy\",\"build\",\"construction\",\"worker\",\"labor\"],\"char\":\"👷\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"guardswoman\":{\"keywords\":[\"uk\",\"gb\",\"british\",\"female\",\"royal\",\"woman\"],\"char\":\"💂‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"guardsman\":{\"keywords\":[\"uk\",\"gb\",\"british\",\"male\",\"guy\",\"royal\"],\"char\":\"💂\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"female_detective\":{\"keywords\":[\"human\",\"spy\",\"detective\",\"female\",\"woman\"],\"char\":\"🕵️‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"male_detective\":{\"keywords\":[\"human\",\"spy\",\"detective\"],\"char\":\"🕵\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_health_worker\":{\"keywords\":[\"doctor\",\"nurse\",\"therapist\",\"healthcare\",\"woman\",\"human\"],\"char\":\"👩‍⚕️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_health_worker\":{\"keywords\":[\"doctor\",\"nurse\",\"therapist\",\"healthcare\",\"man\",\"human\"],\"char\":\"👨‍⚕️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_farmer\":{\"keywords\":[\"rancher\",\"gardener\",\"woman\",\"human\"],\"char\":\"👩‍🌾\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_farmer\":{\"keywords\":[\"rancher\",\"gardener\",\"man\",\"human\"],\"char\":\"👨‍🌾\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_cook\":{\"keywords\":[\"chef\",\"woman\",\"human\"],\"char\":\"👩‍🍳\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_cook\":{\"keywords\":[\"chef\",\"man\",\"human\"],\"char\":\"👨‍🍳\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_student\":{\"keywords\":[\"graduate\",\"woman\",\"human\"],\"char\":\"👩‍🎓\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_student\":{\"keywords\":[\"graduate\",\"man\",\"human\"],\"char\":\"👨‍🎓\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_singer\":{\"keywords\":[\"rockstar\",\"entertainer\",\"woman\",\"human\"],\"char\":\"👩‍🎤\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_singer\":{\"keywords\":[\"rockstar\",\"entertainer\",\"man\",\"human\"],\"char\":\"👨‍🎤\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_teacher\":{\"keywords\":[\"instructor\",\"professor\",\"woman\",\"human\"],\"char\":\"👩‍🏫\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_teacher\":{\"keywords\":[\"instructor\",\"professor\",\"man\",\"human\"],\"char\":\"👨‍🏫\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_factory_worker\":{\"keywords\":[\"assembly\",\"industrial\",\"woman\",\"human\"],\"char\":\"👩‍🏭\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_factory_worker\":{\"keywords\":[\"assembly\",\"industrial\",\"man\",\"human\"],\"char\":\"👨‍🏭\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_technologist\":{\"keywords\":[\"coder\",\"developer\",\"engineer\",\"programmer\",\"software\",\"woman\",\"human\",\"laptop\",\"computer\"],\"char\":\"👩‍💻\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_technologist\":{\"keywords\":[\"coder\",\"developer\",\"engineer\",\"programmer\",\"software\",\"man\",\"human\",\"laptop\",\"computer\"],\"char\":\"👨‍💻\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_office_worker\":{\"keywords\":[\"business\",\"manager\",\"woman\",\"human\"],\"char\":\"👩‍💼\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_office_worker\":{\"keywords\":[\"business\",\"manager\",\"man\",\"human\"],\"char\":\"👨‍💼\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_mechanic\":{\"keywords\":[\"plumber\",\"woman\",\"human\",\"wrench\"],\"char\":\"👩‍🔧\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_mechanic\":{\"keywords\":[\"plumber\",\"man\",\"human\",\"wrench\"],\"char\":\"👨‍🔧\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_scientist\":{\"keywords\":[\"biologist\",\"chemist\",\"engineer\",\"physicist\",\"woman\",\"human\"],\"char\":\"👩‍🔬\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_scientist\":{\"keywords\":[\"biologist\",\"chemist\",\"engineer\",\"physicist\",\"man\",\"human\"],\"char\":\"👨‍🔬\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_artist\":{\"keywords\":[\"painter\",\"woman\",\"human\"],\"char\":\"👩‍🎨\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_artist\":{\"keywords\":[\"painter\",\"man\",\"human\"],\"char\":\"👨‍🎨\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_firefighter\":{\"keywords\":[\"fireman\",\"woman\",\"human\"],\"char\":\"👩‍🚒\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_firefighter\":{\"keywords\":[\"fireman\",\"man\",\"human\"],\"char\":\"👨‍🚒\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_pilot\":{\"keywords\":[\"aviator\",\"plane\",\"woman\",\"human\"],\"char\":\"👩‍✈️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_pilot\":{\"keywords\":[\"aviator\",\"plane\",\"man\",\"human\"],\"char\":\"👨‍✈️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_astronaut\":{\"keywords\":[\"space\",\"rocket\",\"woman\",\"human\"],\"char\":\"👩‍🚀\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_astronaut\":{\"keywords\":[\"space\",\"rocket\",\"man\",\"human\"],\"char\":\"👨‍🚀\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_judge\":{\"keywords\":[\"justice\",\"court\",\"woman\",\"human\"],\"char\":\"👩‍⚖️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_judge\":{\"keywords\":[\"justice\",\"court\",\"man\",\"human\"],\"char\":\"👨‍⚖️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_superhero\":{\"keywords\":[\"woman\",\"female\",\"good\",\"heroine\",\"superpowers\"],\"char\":\"🦸‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_superhero\":{\"keywords\":[\"man\",\"male\",\"good\",\"hero\",\"superpowers\"],\"char\":\"🦸‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_supervillain\":{\"keywords\":[\"woman\",\"female\",\"evil\",\"bad\",\"criminal\",\"heroine\",\"superpowers\"],\"char\":\"🦹‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_supervillain\":{\"keywords\":[\"man\",\"male\",\"evil\",\"bad\",\"criminal\",\"hero\",\"superpowers\"],\"char\":\"🦹‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"mrs_claus\":{\"keywords\":[\"woman\",\"female\",\"xmas\",\"mother christmas\"],\"char\":\"🤶\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"santa\":{\"keywords\":[\"festival\",\"man\",\"male\",\"xmas\",\"father christmas\"],\"char\":\"🎅\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"sorceress\":{\"keywords\":[\"woman\",\"female\",\"mage\",\"witch\"],\"char\":\"🧙‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"wizard\":{\"keywords\":[\"man\",\"male\",\"mage\",\"sorcerer\"],\"char\":\"🧙‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_elf\":{\"keywords\":[\"woman\",\"female\"],\"char\":\"🧝‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_elf\":{\"keywords\":[\"man\",\"male\"],\"char\":\"🧝‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_vampire\":{\"keywords\":[\"woman\",\"female\"],\"char\":\"🧛‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_vampire\":{\"keywords\":[\"man\",\"male\",\"dracula\"],\"char\":\"🧛‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_zombie\":{\"keywords\":[\"woman\",\"female\",\"undead\",\"walking dead\"],\"char\":\"🧟‍♀️\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"man_zombie\":{\"keywords\":[\"man\",\"male\",\"dracula\",\"undead\",\"walking dead\"],\"char\":\"🧟‍♂️\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"woman_genie\":{\"keywords\":[\"woman\",\"female\"],\"char\":\"🧞‍♀️\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"man_genie\":{\"keywords\":[\"man\",\"male\"],\"char\":\"🧞‍♂️\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"mermaid\":{\"keywords\":[\"woman\",\"female\",\"merwoman\",\"ariel\"],\"char\":\"🧜‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"merman\":{\"keywords\":[\"man\",\"male\",\"triton\"],\"char\":\"🧜‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_fairy\":{\"keywords\":[\"woman\",\"female\"],\"char\":\"🧚‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_fairy\":{\"keywords\":[\"man\",\"male\"],\"char\":\"🧚‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"angel\":{\"keywords\":[\"heaven\",\"wings\",\"halo\"],\"char\":\"👼\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"pregnant_woman\":{\"keywords\":[\"baby\"],\"char\":\"🤰\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"breastfeeding\":{\"keywords\":[\"nursing\",\"baby\"],\"char\":\"🤱\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"princess\":{\"keywords\":[\"girl\",\"woman\",\"female\",\"blond\",\"crown\",\"royal\",\"queen\"],\"char\":\"👸\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"prince\":{\"keywords\":[\"boy\",\"man\",\"male\",\"crown\",\"royal\",\"king\"],\"char\":\"🤴\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"bride_with_veil\":{\"keywords\":[\"couple\",\"marriage\",\"wedding\",\"woman\",\"bride\"],\"char\":\"👰\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_in_tuxedo\":{\"keywords\":[\"couple\",\"marriage\",\"wedding\",\"groom\"],\"char\":\"🤵\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"running_woman\":{\"keywords\":[\"woman\",\"walking\",\"exercise\",\"race\",\"running\",\"female\"],\"char\":\"🏃‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"running_man\":{\"keywords\":[\"man\",\"walking\",\"exercise\",\"race\",\"running\"],\"char\":\"🏃\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"walking_woman\":{\"keywords\":[\"human\",\"feet\",\"steps\",\"woman\",\"female\"],\"char\":\"🚶‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"walking_man\":{\"keywords\":[\"human\",\"feet\",\"steps\"],\"char\":\"🚶\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"dancer\":{\"keywords\":[\"female\",\"girl\",\"woman\",\"fun\"],\"char\":\"💃\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_dancing\":{\"keywords\":[\"male\",\"boy\",\"fun\",\"dancer\"],\"char\":\"🕺\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"dancing_women\":{\"keywords\":[\"female\",\"bunny\",\"women\",\"girls\"],\"char\":\"👯\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"dancing_men\":{\"keywords\":[\"male\",\"bunny\",\"men\",\"boys\"],\"char\":\"👯‍♂️\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"couple\":{\"keywords\":[\"pair\",\"people\",\"human\",\"love\",\"date\",\"dating\",\"like\",\"affection\",\"valentines\",\"marriage\"],\"char\":\"👫\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"two_men_holding_hands\":{\"keywords\":[\"pair\",\"couple\",\"love\",\"like\",\"bromance\",\"friendship\",\"people\",\"human\"],\"char\":\"👬\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"two_women_holding_hands\":{\"keywords\":[\"pair\",\"friendship\",\"couple\",\"love\",\"like\",\"female\",\"people\",\"human\"],\"char\":\"👭\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"bowing_woman\":{\"keywords\":[\"woman\",\"female\",\"girl\"],\"char\":\"🙇‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"bowing_man\":{\"keywords\":[\"man\",\"male\",\"boy\"],\"char\":\"🙇\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_facepalming\":{\"keywords\":[\"man\",\"male\",\"boy\",\"disbelief\"],\"char\":\"🤦‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_facepalming\":{\"keywords\":[\"woman\",\"female\",\"girl\",\"disbelief\"],\"char\":\"🤦‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_shrugging\":{\"keywords\":[\"woman\",\"female\",\"girl\",\"confused\",\"indifferent\",\"doubt\"],\"char\":\"🤷\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_shrugging\":{\"keywords\":[\"man\",\"male\",\"boy\",\"confused\",\"indifferent\",\"doubt\"],\"char\":\"🤷‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"tipping_hand_woman\":{\"keywords\":[\"female\",\"girl\",\"woman\",\"human\",\"information\"],\"char\":\"💁\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"tipping_hand_man\":{\"keywords\":[\"male\",\"boy\",\"man\",\"human\",\"information\"],\"char\":\"💁‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"no_good_woman\":{\"keywords\":[\"female\",\"girl\",\"woman\",\"nope\"],\"char\":\"🙅\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"no_good_man\":{\"keywords\":[\"male\",\"boy\",\"man\",\"nope\"],\"char\":\"🙅‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"ok_woman\":{\"keywords\":[\"women\",\"girl\",\"female\",\"pink\",\"human\",\"woman\"],\"char\":\"🙆\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"ok_man\":{\"keywords\":[\"men\",\"boy\",\"male\",\"blue\",\"human\",\"man\"],\"char\":\"🙆‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"raising_hand_woman\":{\"keywords\":[\"female\",\"girl\",\"woman\"],\"char\":\"🙋\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"raising_hand_man\":{\"keywords\":[\"male\",\"boy\",\"man\"],\"char\":\"🙋‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"pouting_woman\":{\"keywords\":[\"female\",\"girl\",\"woman\"],\"char\":\"🙎\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"pouting_man\":{\"keywords\":[\"male\",\"boy\",\"man\"],\"char\":\"🙎‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"frowning_woman\":{\"keywords\":[\"female\",\"girl\",\"woman\",\"sad\",\"depressed\",\"discouraged\",\"unhappy\"],\"char\":\"🙍\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"frowning_man\":{\"keywords\":[\"male\",\"boy\",\"man\",\"sad\",\"depressed\",\"discouraged\",\"unhappy\"],\"char\":\"🙍‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"haircut_woman\":{\"keywords\":[\"female\",\"girl\",\"woman\"],\"char\":\"💇\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"haircut_man\":{\"keywords\":[\"male\",\"boy\",\"man\"],\"char\":\"💇‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"massage_woman\":{\"keywords\":[\"female\",\"girl\",\"woman\",\"head\"],\"char\":\"💆\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"massage_man\":{\"keywords\":[\"male\",\"boy\",\"man\",\"head\"],\"char\":\"💆‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"woman_in_steamy_room\":{\"keywords\":[\"female\",\"woman\",\"spa\",\"steamroom\",\"sauna\"],\"char\":\"🧖‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"man_in_steamy_room\":{\"keywords\":[\"male\",\"man\",\"spa\",\"steamroom\",\"sauna\"],\"char\":\"🧖‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"people\"},\"couple_with_heart_woman_man\":{\"keywords\":[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],\"char\":\"💑\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"couple_with_heart_woman_woman\":{\"keywords\":[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],\"char\":\"👩‍❤️‍👩\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"couple_with_heart_man_man\":{\"keywords\":[\"pair\",\"love\",\"like\",\"affection\",\"human\",\"dating\",\"valentines\",\"marriage\"],\"char\":\"👨‍❤️‍👨\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"couplekiss_man_woman\":{\"keywords\":[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],\"char\":\"💏\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"couplekiss_woman_woman\":{\"keywords\":[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],\"char\":\"👩‍❤️‍💋‍👩\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"couplekiss_man_man\":{\"keywords\":[\"pair\",\"valentines\",\"love\",\"like\",\"dating\",\"marriage\"],\"char\":\"👨‍❤️‍💋‍👨\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_woman_boy\":{\"keywords\":[\"home\",\"parents\",\"child\",\"mom\",\"dad\",\"father\",\"mother\",\"people\",\"human\"],\"char\":\"👪\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_woman_girl\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"child\"],\"char\":\"👨‍👩‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_woman_girl_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👩‍👧‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_woman_boy_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👩‍👦‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_woman_girl_girl\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👩‍👧‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_woman_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👩‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_woman_girl\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👩‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_woman_girl_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👩‍👧‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_woman_boy_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👩‍👦‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_woman_girl_girl\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👩‍👧‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_man_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👨‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_man_girl\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👨‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_man_girl_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👨‍👧‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_man_boy_boy\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👨‍👦‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_man_girl_girl\":{\"keywords\":[\"home\",\"parents\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👨‍👧‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_boy\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"child\"],\"char\":\"👩‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_girl\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"child\"],\"char\":\"👩‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_girl_boy\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👧‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_boy_boy\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👦‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_woman_girl_girl\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"children\"],\"char\":\"👩‍👧‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_boy\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"child\"],\"char\":\"👨‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_girl\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"child\"],\"char\":\"👨‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_girl_boy\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👧‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_boy_boy\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👦‍👦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"family_man_girl_girl\":{\"keywords\":[\"home\",\"parent\",\"people\",\"human\",\"children\"],\"char\":\"👨‍👧‍👧\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"yarn\":{\"keywords\":[\"ball\",\"crochet\",\"knit\"],\"char\":\"🧶\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"thread\":{\"keywords\":[\"needle\",\"sewing\",\"spool\",\"string\"],\"char\":\"🧵\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"coat\":{\"keywords\":[\"jacket\"],\"char\":\"🧥\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"labcoat\":{\"keywords\":[\"doctor\",\"experiment\",\"scientist\",\"chemist\"],\"char\":\"🥼\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"womans_clothes\":{\"keywords\":[\"fashion\",\"shopping_bags\",\"female\"],\"char\":\"👚\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"tshirt\":{\"keywords\":[\"fashion\",\"cloth\",\"casual\",\"shirt\",\"tee\"],\"char\":\"👕\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"jeans\":{\"keywords\":[\"fashion\",\"shopping\"],\"char\":\"👖\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"necktie\":{\"keywords\":[\"shirt\",\"suitup\",\"formal\",\"fashion\",\"cloth\",\"business\"],\"char\":\"👔\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"dress\":{\"keywords\":[\"clothes\",\"fashion\",\"shopping\"],\"char\":\"👗\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"bikini\":{\"keywords\":[\"swimming\",\"female\",\"woman\",\"girl\",\"fashion\",\"beach\",\"summer\"],\"char\":\"👙\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"kimono\":{\"keywords\":[\"dress\",\"fashion\",\"women\",\"female\",\"japanese\"],\"char\":\"👘\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"lipstick\":{\"keywords\":[\"female\",\"girl\",\"fashion\",\"woman\"],\"char\":\"💄\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"kiss\":{\"keywords\":[\"face\",\"lips\",\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"💋\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"footprints\":{\"keywords\":[\"feet\",\"tracking\",\"walking\",\"beach\"],\"char\":\"👣\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"flat_shoe\":{\"keywords\":[\"ballet\",\"slip-on\",\"slipper\"],\"char\":\"🥿\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"high_heel\":{\"keywords\":[\"fashion\",\"shoes\",\"female\",\"pumps\",\"stiletto\"],\"char\":\"👠\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"sandal\":{\"keywords\":[\"shoes\",\"fashion\",\"flip flops\"],\"char\":\"👡\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"boot\":{\"keywords\":[\"shoes\",\"fashion\"],\"char\":\"👢\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"mans_shoe\":{\"keywords\":[\"fashion\",\"male\"],\"char\":\"👞\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"athletic_shoe\":{\"keywords\":[\"shoes\",\"sports\",\"sneakers\"],\"char\":\"👟\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"hiking_boot\":{\"keywords\":[\"backpacking\",\"camping\",\"hiking\"],\"char\":\"🥾\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"socks\":{\"keywords\":[\"stockings\",\"clothes\"],\"char\":\"🧦\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"gloves\":{\"keywords\":[\"hands\",\"winter\",\"clothes\"],\"char\":\"🧤\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"scarf\":{\"keywords\":[\"neck\",\"winter\",\"clothes\"],\"char\":\"🧣\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"womans_hat\":{\"keywords\":[\"fashion\",\"accessories\",\"female\",\"lady\",\"spring\"],\"char\":\"👒\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"tophat\":{\"keywords\":[\"magic\",\"gentleman\",\"classy\",\"circus\"],\"char\":\"🎩\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"billed_hat\":{\"keywords\":[\"cap\",\"baseball\"],\"char\":\"🧢\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"rescue_worker_helmet\":{\"keywords\":[\"construction\",\"build\"],\"char\":\"⛑\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"mortar_board\":{\"keywords\":[\"school\",\"college\",\"degree\",\"university\",\"graduation\",\"cap\",\"hat\",\"legal\",\"learn\",\"education\"],\"char\":\"🎓\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"crown\":{\"keywords\":[\"king\",\"kod\",\"leader\",\"royalty\",\"lord\"],\"char\":\"👑\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"school_satchel\":{\"keywords\":[\"student\",\"education\",\"bag\",\"backpack\"],\"char\":\"🎒\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"luggage\":{\"keywords\":[\"packing\",\"travel\"],\"char\":\"🧳\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"pouch\":{\"keywords\":[\"bag\",\"accessories\",\"shopping\"],\"char\":\"👝\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"purse\":{\"keywords\":[\"fashion\",\"accessories\",\"money\",\"sales\",\"shopping\"],\"char\":\"👛\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"handbag\":{\"keywords\":[\"fashion\",\"accessory\",\"accessories\",\"shopping\"],\"char\":\"👜\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"briefcase\":{\"keywords\":[\"business\",\"documents\",\"work\",\"law\",\"legal\",\"job\",\"career\"],\"char\":\"💼\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"eyeglasses\":{\"keywords\":[\"fashion\",\"accessories\",\"eyesight\",\"nerdy\",\"dork\",\"geek\"],\"char\":\"👓\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"dark_sunglasses\":{\"keywords\":[\"face\",\"cool\",\"accessories\"],\"char\":\"🕶\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"goggles\":{\"keywords\":[\"eyes\",\"protection\",\"safety\"],\"char\":\"🥽\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"ring\":{\"keywords\":[\"wedding\",\"propose\",\"marriage\",\"valentines\",\"diamond\",\"fashion\",\"jewelry\",\"gem\",\"engagement\"],\"char\":\"💍\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"closed_umbrella\":{\"keywords\":[\"weather\",\"rain\",\"drizzle\"],\"char\":\"🌂\",\"fitzpatrick_scale\":false,\"category\":\"people\"},\"dog\":{\"keywords\":[\"animal\",\"friend\",\"nature\",\"woof\",\"puppy\",\"pet\",\"faithful\"],\"char\":\"🐶\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cat\":{\"keywords\":[\"animal\",\"meow\",\"nature\",\"pet\",\"kitten\"],\"char\":\"🐱\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"mouse\":{\"keywords\":[\"animal\",\"nature\",\"cheese_wedge\",\"rodent\"],\"char\":\"🐭\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"hamster\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🐹\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"rabbit\":{\"keywords\":[\"animal\",\"nature\",\"pet\",\"spring\",\"magic\",\"bunny\"],\"char\":\"🐰\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"fox_face\":{\"keywords\":[\"animal\",\"nature\",\"face\"],\"char\":\"🦊\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"bear\":{\"keywords\":[\"animal\",\"nature\",\"wild\"],\"char\":\"🐻\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"panda_face\":{\"keywords\":[\"animal\",\"nature\",\"panda\"],\"char\":\"🐼\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"koala\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🐨\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"tiger\":{\"keywords\":[\"animal\",\"cat\",\"danger\",\"wild\",\"nature\",\"roar\"],\"char\":\"🐯\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"lion\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🦁\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cow\":{\"keywords\":[\"beef\",\"ox\",\"animal\",\"nature\",\"moo\",\"milk\"],\"char\":\"🐮\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"pig\":{\"keywords\":[\"animal\",\"oink\",\"nature\"],\"char\":\"🐷\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"pig_nose\":{\"keywords\":[\"animal\",\"oink\"],\"char\":\"🐽\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"frog\":{\"keywords\":[\"animal\",\"nature\",\"croak\",\"toad\"],\"char\":\"🐸\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"squid\":{\"keywords\":[\"animal\",\"nature\",\"ocean\",\"sea\"],\"char\":\"🦑\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"octopus\":{\"keywords\":[\"animal\",\"creature\",\"ocean\",\"sea\",\"nature\",\"beach\"],\"char\":\"🐙\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"shrimp\":{\"keywords\":[\"animal\",\"ocean\",\"nature\",\"seafood\"],\"char\":\"🦐\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"monkey_face\":{\"keywords\":[\"animal\",\"nature\",\"circus\"],\"char\":\"🐵\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"gorilla\":{\"keywords\":[\"animal\",\"nature\",\"circus\"],\"char\":\"🦍\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"see_no_evil\":{\"keywords\":[\"monkey\",\"animal\",\"nature\",\"haha\"],\"char\":\"🙈\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"hear_no_evil\":{\"keywords\":[\"animal\",\"monkey\",\"nature\"],\"char\":\"🙉\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"speak_no_evil\":{\"keywords\":[\"monkey\",\"animal\",\"nature\",\"omg\"],\"char\":\"🙊\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"monkey\":{\"keywords\":[\"animal\",\"nature\",\"banana\",\"circus\"],\"char\":\"🐒\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"chicken\":{\"keywords\":[\"animal\",\"cluck\",\"nature\",\"bird\"],\"char\":\"🐔\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"penguin\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🐧\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"bird\":{\"keywords\":[\"animal\",\"nature\",\"fly\",\"tweet\",\"spring\"],\"char\":\"🐦\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"baby_chick\":{\"keywords\":[\"animal\",\"chicken\",\"bird\"],\"char\":\"🐤\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"hatching_chick\":{\"keywords\":[\"animal\",\"chicken\",\"egg\",\"born\",\"baby\",\"bird\"],\"char\":\"🐣\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"hatched_chick\":{\"keywords\":[\"animal\",\"chicken\",\"baby\",\"bird\"],\"char\":\"🐥\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"duck\":{\"keywords\":[\"animal\",\"nature\",\"bird\",\"mallard\"],\"char\":\"🦆\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"eagle\":{\"keywords\":[\"animal\",\"nature\",\"bird\"],\"char\":\"🦅\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"owl\":{\"keywords\":[\"animal\",\"nature\",\"bird\",\"hoot\"],\"char\":\"🦉\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"bat\":{\"keywords\":[\"animal\",\"nature\",\"blind\",\"vampire\"],\"char\":\"🦇\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"wolf\":{\"keywords\":[\"animal\",\"nature\",\"wild\"],\"char\":\"🐺\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"boar\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🐗\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"horse\":{\"keywords\":[\"animal\",\"brown\",\"nature\"],\"char\":\"🐴\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"unicorn\":{\"keywords\":[\"animal\",\"nature\",\"mystical\"],\"char\":\"🦄\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"honeybee\":{\"keywords\":[\"animal\",\"insect\",\"nature\",\"bug\",\"spring\",\"honey\"],\"char\":\"🐝\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"bug\":{\"keywords\":[\"animal\",\"insect\",\"nature\",\"worm\"],\"char\":\"🐛\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"butterfly\":{\"keywords\":[\"animal\",\"insect\",\"nature\",\"caterpillar\"],\"char\":\"🦋\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"snail\":{\"keywords\":[\"slow\",\"animal\",\"shell\"],\"char\":\"🐌\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"beetle\":{\"keywords\":[\"animal\",\"insect\",\"nature\",\"ladybug\"],\"char\":\"🐞\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"ant\":{\"keywords\":[\"animal\",\"insect\",\"nature\",\"bug\"],\"char\":\"🐜\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"grasshopper\":{\"keywords\":[\"animal\",\"cricket\",\"chirp\"],\"char\":\"🦗\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"spider\":{\"keywords\":[\"animal\",\"arachnid\"],\"char\":\"🕷\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"scorpion\":{\"keywords\":[\"animal\",\"arachnid\"],\"char\":\"🦂\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"crab\":{\"keywords\":[\"animal\",\"crustacean\"],\"char\":\"🦀\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"snake\":{\"keywords\":[\"animal\",\"evil\",\"nature\",\"hiss\",\"python\"],\"char\":\"🐍\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"lizard\":{\"keywords\":[\"animal\",\"nature\",\"reptile\"],\"char\":\"🦎\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"t-rex\":{\"keywords\":[\"animal\",\"nature\",\"dinosaur\",\"tyrannosaurus\",\"extinct\"],\"char\":\"🦖\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sauropod\":{\"keywords\":[\"animal\",\"nature\",\"dinosaur\",\"brachiosaurus\",\"brontosaurus\",\"diplodocus\",\"extinct\"],\"char\":\"🦕\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"turtle\":{\"keywords\":[\"animal\",\"slow\",\"nature\",\"tortoise\"],\"char\":\"🐢\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"tropical_fish\":{\"keywords\":[\"animal\",\"swim\",\"ocean\",\"beach\",\"nemo\"],\"char\":\"🐠\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"fish\":{\"keywords\":[\"animal\",\"food\",\"nature\"],\"char\":\"🐟\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"blowfish\":{\"keywords\":[\"animal\",\"nature\",\"food\",\"sea\",\"ocean\"],\"char\":\"🐡\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dolphin\":{\"keywords\":[\"animal\",\"nature\",\"fish\",\"sea\",\"ocean\",\"flipper\",\"fins\",\"beach\"],\"char\":\"🐬\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"shark\":{\"keywords\":[\"animal\",\"nature\",\"fish\",\"sea\",\"ocean\",\"jaws\",\"fins\",\"beach\"],\"char\":\"🦈\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"whale\":{\"keywords\":[\"animal\",\"nature\",\"sea\",\"ocean\"],\"char\":\"🐳\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"whale2\":{\"keywords\":[\"animal\",\"nature\",\"sea\",\"ocean\"],\"char\":\"🐋\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"crocodile\":{\"keywords\":[\"animal\",\"nature\",\"reptile\",\"lizard\",\"alligator\"],\"char\":\"🐊\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"leopard\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🐆\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"zebra\":{\"keywords\":[\"animal\",\"nature\",\"stripes\",\"safari\"],\"char\":\"🦓\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"tiger2\":{\"keywords\":[\"animal\",\"nature\",\"roar\"],\"char\":\"🐅\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"water_buffalo\":{\"keywords\":[\"animal\",\"nature\",\"ox\",\"cow\"],\"char\":\"🐃\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"ox\":{\"keywords\":[\"animal\",\"cow\",\"beef\"],\"char\":\"🐂\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cow2\":{\"keywords\":[\"beef\",\"ox\",\"animal\",\"nature\",\"moo\",\"milk\"],\"char\":\"🐄\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"deer\":{\"keywords\":[\"animal\",\"nature\",\"horns\",\"venison\"],\"char\":\"🦌\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dromedary_camel\":{\"keywords\":[\"animal\",\"hot\",\"desert\",\"hump\"],\"char\":\"🐪\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"camel\":{\"keywords\":[\"animal\",\"nature\",\"hot\",\"desert\",\"hump\"],\"char\":\"🐫\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"giraffe\":{\"keywords\":[\"animal\",\"nature\",\"spots\",\"safari\"],\"char\":\"🦒\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"elephant\":{\"keywords\":[\"animal\",\"nature\",\"nose\",\"th\",\"circus\"],\"char\":\"🐘\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"rhinoceros\":{\"keywords\":[\"animal\",\"nature\",\"horn\"],\"char\":\"🦏\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"goat\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🐐\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"ram\":{\"keywords\":[\"animal\",\"sheep\",\"nature\"],\"char\":\"🐏\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sheep\":{\"keywords\":[\"animal\",\"nature\",\"wool\",\"shipit\"],\"char\":\"🐑\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"racehorse\":{\"keywords\":[\"animal\",\"gamble\",\"luck\"],\"char\":\"🐎\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"pig2\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🐖\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"rat\":{\"keywords\":[\"animal\",\"mouse\",\"rodent\"],\"char\":\"🐀\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"mouse2\":{\"keywords\":[\"animal\",\"nature\",\"rodent\"],\"char\":\"🐁\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"rooster\":{\"keywords\":[\"animal\",\"nature\",\"chicken\"],\"char\":\"🐓\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"turkey\":{\"keywords\":[\"animal\",\"bird\"],\"char\":\"🦃\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dove\":{\"keywords\":[\"animal\",\"bird\"],\"char\":\"🕊\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dog2\":{\"keywords\":[\"animal\",\"nature\",\"friend\",\"doge\",\"pet\",\"faithful\"],\"char\":\"🐕\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"poodle\":{\"keywords\":[\"dog\",\"animal\",\"101\",\"nature\",\"pet\"],\"char\":\"🐩\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cat2\":{\"keywords\":[\"animal\",\"meow\",\"pet\",\"cats\"],\"char\":\"🐈\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"rabbit2\":{\"keywords\":[\"animal\",\"nature\",\"pet\",\"magic\",\"spring\"],\"char\":\"🐇\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"chipmunk\":{\"keywords\":[\"animal\",\"nature\",\"rodent\",\"squirrel\"],\"char\":\"🐿\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"hedgehog\":{\"keywords\":[\"animal\",\"nature\",\"spiny\"],\"char\":\"🦔\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"raccoon\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🦝\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"llama\":{\"keywords\":[\"animal\",\"nature\",\"alpaca\"],\"char\":\"🦙\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"hippopotamus\":{\"keywords\":[\"animal\",\"nature\"],\"char\":\"🦛\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"kangaroo\":{\"keywords\":[\"animal\",\"nature\",\"australia\",\"joey\",\"hop\",\"marsupial\"],\"char\":\"🦘\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"badger\":{\"keywords\":[\"animal\",\"nature\",\"honey\"],\"char\":\"🦡\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"swan\":{\"keywords\":[\"animal\",\"nature\",\"bird\"],\"char\":\"🦢\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"peacock\":{\"keywords\":[\"animal\",\"nature\",\"peahen\",\"bird\"],\"char\":\"🦚\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"parrot\":{\"keywords\":[\"animal\",\"nature\",\"bird\",\"pirate\",\"talk\"],\"char\":\"🦜\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"lobster\":{\"keywords\":[\"animal\",\"nature\",\"bisque\",\"claws\",\"seafood\"],\"char\":\"🦞\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"mosquito\":{\"keywords\":[\"animal\",\"nature\",\"insect\",\"malaria\"],\"char\":\"🦟\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"paw_prints\":{\"keywords\":[\"animal\",\"tracking\",\"footprints\",\"dog\",\"cat\",\"pet\",\"feet\"],\"char\":\"🐾\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dragon\":{\"keywords\":[\"animal\",\"myth\",\"nature\",\"chinese\",\"green\"],\"char\":\"🐉\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dragon_face\":{\"keywords\":[\"animal\",\"myth\",\"nature\",\"chinese\",\"green\"],\"char\":\"🐲\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cactus\":{\"keywords\":[\"vegetable\",\"plant\",\"nature\"],\"char\":\"🌵\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"christmas_tree\":{\"keywords\":[\"festival\",\"vacation\",\"december\",\"xmas\",\"celebration\"],\"char\":\"🎄\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"evergreen_tree\":{\"keywords\":[\"plant\",\"nature\"],\"char\":\"🌲\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"deciduous_tree\":{\"keywords\":[\"plant\",\"nature\"],\"char\":\"🌳\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"palm_tree\":{\"keywords\":[\"plant\",\"vegetable\",\"nature\",\"summer\",\"beach\",\"mojito\",\"tropical\"],\"char\":\"🌴\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"seedling\":{\"keywords\":[\"plant\",\"nature\",\"grass\",\"lawn\",\"spring\"],\"char\":\"🌱\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"herb\":{\"keywords\":[\"vegetable\",\"plant\",\"medicine\",\"weed\",\"grass\",\"lawn\"],\"char\":\"🌿\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"shamrock\":{\"keywords\":[\"vegetable\",\"plant\",\"nature\",\"irish\",\"clover\"],\"char\":\"☘\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"four_leaf_clover\":{\"keywords\":[\"vegetable\",\"plant\",\"nature\",\"lucky\",\"irish\"],\"char\":\"🍀\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"bamboo\":{\"keywords\":[\"plant\",\"nature\",\"vegetable\",\"panda\",\"pine_decoration\"],\"char\":\"🎍\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"tanabata_tree\":{\"keywords\":[\"plant\",\"nature\",\"branch\",\"summer\"],\"char\":\"🎋\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"leaves\":{\"keywords\":[\"nature\",\"plant\",\"tree\",\"vegetable\",\"grass\",\"lawn\",\"spring\"],\"char\":\"🍃\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"fallen_leaf\":{\"keywords\":[\"nature\",\"plant\",\"vegetable\",\"leaves\"],\"char\":\"🍂\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"maple_leaf\":{\"keywords\":[\"nature\",\"plant\",\"vegetable\",\"ca\",\"fall\"],\"char\":\"🍁\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"ear_of_rice\":{\"keywords\":[\"nature\",\"plant\"],\"char\":\"🌾\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"hibiscus\":{\"keywords\":[\"plant\",\"vegetable\",\"flowers\",\"beach\"],\"char\":\"🌺\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sunflower\":{\"keywords\":[\"nature\",\"plant\",\"fall\"],\"char\":\"🌻\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"rose\":{\"keywords\":[\"flowers\",\"valentines\",\"love\",\"spring\"],\"char\":\"🌹\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"wilted_flower\":{\"keywords\":[\"plant\",\"nature\",\"flower\"],\"char\":\"🥀\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"tulip\":{\"keywords\":[\"flowers\",\"plant\",\"nature\",\"summer\",\"spring\"],\"char\":\"🌷\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"blossom\":{\"keywords\":[\"nature\",\"flowers\",\"yellow\"],\"char\":\"🌼\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cherry_blossom\":{\"keywords\":[\"nature\",\"plant\",\"spring\",\"flower\"],\"char\":\"🌸\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"bouquet\":{\"keywords\":[\"flowers\",\"nature\",\"spring\"],\"char\":\"💐\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"mushroom\":{\"keywords\":[\"plant\",\"vegetable\"],\"char\":\"🍄\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"chestnut\":{\"keywords\":[\"food\",\"squirrel\"],\"char\":\"🌰\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"jack_o_lantern\":{\"keywords\":[\"halloween\",\"light\",\"pumpkin\",\"creepy\",\"fall\"],\"char\":\"🎃\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"shell\":{\"keywords\":[\"nature\",\"sea\",\"beach\"],\"char\":\"🐚\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"spider_web\":{\"keywords\":[\"animal\",\"insect\",\"arachnid\",\"silk\"],\"char\":\"🕸\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"earth_americas\":{\"keywords\":[\"globe\",\"world\",\"USA\",\"international\"],\"char\":\"🌎\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"earth_africa\":{\"keywords\":[\"globe\",\"world\",\"international\"],\"char\":\"🌍\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"earth_asia\":{\"keywords\":[\"globe\",\"world\",\"east\",\"international\"],\"char\":\"🌏\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"full_moon\":{\"keywords\":[\"nature\",\"yellow\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌕\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"waning_gibbous_moon\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\",\"waxing_gibbous_moon\"],\"char\":\"🌖\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"last_quarter_moon\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌗\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"waning_crescent_moon\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌘\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"new_moon\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌑\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"waxing_crescent_moon\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌒\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"first_quarter_moon\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌓\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"waxing_gibbous_moon\":{\"keywords\":[\"nature\",\"night\",\"sky\",\"gray\",\"twilight\",\"planet\",\"space\",\"evening\",\"sleep\"],\"char\":\"🌔\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"new_moon_with_face\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌚\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"full_moon_with_face\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌝\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"first_quarter_moon_with_face\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌛\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"last_quarter_moon_with_face\":{\"keywords\":[\"nature\",\"twilight\",\"planet\",\"space\",\"night\",\"evening\",\"sleep\"],\"char\":\"🌜\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sun_with_face\":{\"keywords\":[\"nature\",\"morning\",\"sky\"],\"char\":\"🌞\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"crescent_moon\":{\"keywords\":[\"night\",\"sleep\",\"sky\",\"evening\",\"magic\"],\"char\":\"🌙\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"star\":{\"keywords\":[\"night\",\"yellow\"],\"char\":\"⭐\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"star2\":{\"keywords\":[\"night\",\"sparkle\",\"awesome\",\"good\",\"magic\"],\"char\":\"🌟\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dizzy\":{\"keywords\":[\"star\",\"sparkle\",\"shoot\",\"magic\"],\"char\":\"💫\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sparkles\":{\"keywords\":[\"stars\",\"shine\",\"shiny\",\"cool\",\"awesome\",\"good\",\"magic\"],\"char\":\"✨\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"comet\":{\"keywords\":[\"space\"],\"char\":\"☄\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sunny\":{\"keywords\":[\"weather\",\"nature\",\"brightness\",\"summer\",\"beach\",\"spring\"],\"char\":\"☀️\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sun_behind_small_cloud\":{\"keywords\":[\"weather\"],\"char\":\"🌤\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"partly_sunny\":{\"keywords\":[\"weather\",\"nature\",\"cloudy\",\"morning\",\"fall\",\"spring\"],\"char\":\"⛅\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sun_behind_large_cloud\":{\"keywords\":[\"weather\"],\"char\":\"🌥\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sun_behind_rain_cloud\":{\"keywords\":[\"weather\"],\"char\":\"🌦\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cloud\":{\"keywords\":[\"weather\",\"sky\"],\"char\":\"☁️\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cloud_with_rain\":{\"keywords\":[\"weather\"],\"char\":\"🌧\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cloud_with_lightning_and_rain\":{\"keywords\":[\"weather\",\"lightning\"],\"char\":\"⛈\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cloud_with_lightning\":{\"keywords\":[\"weather\",\"thunder\"],\"char\":\"🌩\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"zap\":{\"keywords\":[\"thunder\",\"weather\",\"lightning bolt\",\"fast\"],\"char\":\"⚡\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"fire\":{\"keywords\":[\"hot\",\"cook\",\"flame\"],\"char\":\"🔥\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"boom\":{\"keywords\":[\"bomb\",\"explode\",\"explosion\",\"collision\",\"blown\"],\"char\":\"💥\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"snowflake\":{\"keywords\":[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\"],\"char\":\"❄️\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"cloud_with_snow\":{\"keywords\":[\"weather\"],\"char\":\"🌨\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"snowman\":{\"keywords\":[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\",\"frozen\",\"without_snow\"],\"char\":\"⛄\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"snowman_with_snow\":{\"keywords\":[\"winter\",\"season\",\"cold\",\"weather\",\"christmas\",\"xmas\",\"frozen\"],\"char\":\"☃\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"wind_face\":{\"keywords\":[\"gust\",\"air\"],\"char\":\"🌬\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"dash\":{\"keywords\":[\"wind\",\"air\",\"fast\",\"shoo\",\"fart\",\"smoke\",\"puff\"],\"char\":\"💨\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"tornado\":{\"keywords\":[\"weather\",\"cyclone\",\"twister\"],\"char\":\"🌪\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"fog\":{\"keywords\":[\"weather\"],\"char\":\"🌫\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"open_umbrella\":{\"keywords\":[\"weather\",\"spring\"],\"char\":\"☂\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"umbrella\":{\"keywords\":[\"rainy\",\"weather\",\"spring\"],\"char\":\"☔\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"droplet\":{\"keywords\":[\"water\",\"drip\",\"faucet\",\"spring\"],\"char\":\"💧\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"sweat_drops\":{\"keywords\":[\"water\",\"drip\",\"oops\"],\"char\":\"💦\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"ocean\":{\"keywords\":[\"sea\",\"water\",\"wave\",\"nature\",\"tsunami\",\"disaster\"],\"char\":\"🌊\",\"fitzpatrick_scale\":false,\"category\":\"animals_and_nature\"},\"green_apple\":{\"keywords\":[\"fruit\",\"nature\"],\"char\":\"🍏\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"apple\":{\"keywords\":[\"fruit\",\"mac\",\"school\"],\"char\":\"🍎\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"pear\":{\"keywords\":[\"fruit\",\"nature\",\"food\"],\"char\":\"🍐\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"tangerine\":{\"keywords\":[\"food\",\"fruit\",\"nature\",\"orange\"],\"char\":\"🍊\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"lemon\":{\"keywords\":[\"fruit\",\"nature\"],\"char\":\"🍋\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"banana\":{\"keywords\":[\"fruit\",\"food\",\"monkey\"],\"char\":\"🍌\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"watermelon\":{\"keywords\":[\"fruit\",\"food\",\"picnic\",\"summer\"],\"char\":\"🍉\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"grapes\":{\"keywords\":[\"fruit\",\"food\",\"wine\"],\"char\":\"🍇\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"strawberry\":{\"keywords\":[\"fruit\",\"food\",\"nature\"],\"char\":\"🍓\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"melon\":{\"keywords\":[\"fruit\",\"nature\",\"food\"],\"char\":\"🍈\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cherries\":{\"keywords\":[\"food\",\"fruit\"],\"char\":\"🍒\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"peach\":{\"keywords\":[\"fruit\",\"nature\",\"food\"],\"char\":\"🍑\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"pineapple\":{\"keywords\":[\"fruit\",\"nature\",\"food\"],\"char\":\"🍍\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"coconut\":{\"keywords\":[\"fruit\",\"nature\",\"food\",\"palm\"],\"char\":\"🥥\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"kiwi_fruit\":{\"keywords\":[\"fruit\",\"food\"],\"char\":\"🥝\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"mango\":{\"keywords\":[\"fruit\",\"food\",\"tropical\"],\"char\":\"🥭\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"avocado\":{\"keywords\":[\"fruit\",\"food\"],\"char\":\"🥑\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"broccoli\":{\"keywords\":[\"fruit\",\"food\",\"vegetable\"],\"char\":\"🥦\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"tomato\":{\"keywords\":[\"fruit\",\"vegetable\",\"nature\",\"food\"],\"char\":\"🍅\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"eggplant\":{\"keywords\":[\"vegetable\",\"nature\",\"food\",\"aubergine\"],\"char\":\"🍆\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cucumber\":{\"keywords\":[\"fruit\",\"food\",\"pickle\"],\"char\":\"🥒\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"carrot\":{\"keywords\":[\"vegetable\",\"food\",\"orange\"],\"char\":\"🥕\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"hot_pepper\":{\"keywords\":[\"food\",\"spicy\",\"chilli\",\"chili\"],\"char\":\"🌶\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"potato\":{\"keywords\":[\"food\",\"tuber\",\"vegatable\",\"starch\"],\"char\":\"🥔\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"corn\":{\"keywords\":[\"food\",\"vegetable\",\"plant\"],\"char\":\"🌽\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"leafy_greens\":{\"keywords\":[\"food\",\"vegetable\",\"plant\",\"bok choy\",\"cabbage\",\"kale\",\"lettuce\"],\"char\":\"🥬\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"sweet_potato\":{\"keywords\":[\"food\",\"nature\"],\"char\":\"🍠\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"peanuts\":{\"keywords\":[\"food\",\"nut\"],\"char\":\"🥜\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"honey_pot\":{\"keywords\":[\"bees\",\"sweet\",\"kitchen\"],\"char\":\"🍯\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"croissant\":{\"keywords\":[\"food\",\"bread\",\"french\"],\"char\":\"🥐\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"bread\":{\"keywords\":[\"food\",\"wheat\",\"breakfast\",\"toast\"],\"char\":\"🍞\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"baguette_bread\":{\"keywords\":[\"food\",\"bread\",\"french\"],\"char\":\"🥖\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"bagel\":{\"keywords\":[\"food\",\"bread\",\"bakery\",\"schmear\"],\"char\":\"🥯\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"pretzel\":{\"keywords\":[\"food\",\"bread\",\"twisted\"],\"char\":\"🥨\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cheese\":{\"keywords\":[\"food\",\"chadder\"],\"char\":\"🧀\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"egg\":{\"keywords\":[\"food\",\"chicken\",\"breakfast\"],\"char\":\"🥚\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"bacon\":{\"keywords\":[\"food\",\"breakfast\",\"pork\",\"pig\",\"meat\"],\"char\":\"🥓\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"steak\":{\"keywords\":[\"food\",\"cow\",\"meat\",\"cut\",\"chop\",\"lambchop\",\"porkchop\"],\"char\":\"🥩\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"pancakes\":{\"keywords\":[\"food\",\"breakfast\",\"flapjacks\",\"hotcakes\"],\"char\":\"🥞\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"poultry_leg\":{\"keywords\":[\"food\",\"meat\",\"drumstick\",\"bird\",\"chicken\",\"turkey\"],\"char\":\"🍗\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"meat_on_bone\":{\"keywords\":[\"good\",\"food\",\"drumstick\"],\"char\":\"🍖\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"bone\":{\"keywords\":[\"skeleton\"],\"char\":\"🦴\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"fried_shrimp\":{\"keywords\":[\"food\",\"animal\",\"appetizer\",\"summer\"],\"char\":\"🍤\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"fried_egg\":{\"keywords\":[\"food\",\"breakfast\",\"kitchen\",\"egg\"],\"char\":\"🍳\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"hamburger\":{\"keywords\":[\"meat\",\"fast food\",\"beef\",\"cheeseburger\",\"mcdonalds\",\"burger king\"],\"char\":\"🍔\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"fries\":{\"keywords\":[\"chips\",\"snack\",\"fast food\"],\"char\":\"🍟\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"stuffed_flatbread\":{\"keywords\":[\"food\",\"flatbread\",\"stuffed\",\"gyro\"],\"char\":\"🥙\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"hotdog\":{\"keywords\":[\"food\",\"frankfurter\"],\"char\":\"🌭\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"pizza\":{\"keywords\":[\"food\",\"party\"],\"char\":\"🍕\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"sandwich\":{\"keywords\":[\"food\",\"lunch\",\"bread\"],\"char\":\"🥪\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"canned_food\":{\"keywords\":[\"food\",\"soup\"],\"char\":\"🥫\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"spaghetti\":{\"keywords\":[\"food\",\"italian\",\"noodle\"],\"char\":\"🍝\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"taco\":{\"keywords\":[\"food\",\"mexican\"],\"char\":\"🌮\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"burrito\":{\"keywords\":[\"food\",\"mexican\"],\"char\":\"🌯\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"green_salad\":{\"keywords\":[\"food\",\"healthy\",\"lettuce\"],\"char\":\"🥗\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"shallow_pan_of_food\":{\"keywords\":[\"food\",\"cooking\",\"casserole\",\"paella\"],\"char\":\"🥘\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"ramen\":{\"keywords\":[\"food\",\"japanese\",\"noodle\",\"chopsticks\"],\"char\":\"🍜\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"stew\":{\"keywords\":[\"food\",\"meat\",\"soup\"],\"char\":\"🍲\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"fish_cake\":{\"keywords\":[\"food\",\"japan\",\"sea\",\"beach\",\"narutomaki\",\"pink\",\"swirl\",\"kamaboko\",\"surimi\",\"ramen\"],\"char\":\"🍥\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"fortune_cookie\":{\"keywords\":[\"food\",\"prophecy\"],\"char\":\"🥠\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"sushi\":{\"keywords\":[\"food\",\"fish\",\"japanese\",\"rice\"],\"char\":\"🍣\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"bento\":{\"keywords\":[\"food\",\"japanese\",\"box\"],\"char\":\"🍱\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"curry\":{\"keywords\":[\"food\",\"spicy\",\"hot\",\"indian\"],\"char\":\"🍛\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"rice_ball\":{\"keywords\":[\"food\",\"japanese\"],\"char\":\"🍙\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"rice\":{\"keywords\":[\"food\",\"china\",\"asian\"],\"char\":\"🍚\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"rice_cracker\":{\"keywords\":[\"food\",\"japanese\"],\"char\":\"🍘\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"oden\":{\"keywords\":[\"food\",\"japanese\"],\"char\":\"🍢\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"dango\":{\"keywords\":[\"food\",\"dessert\",\"sweet\",\"japanese\",\"barbecue\",\"meat\"],\"char\":\"🍡\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"shaved_ice\":{\"keywords\":[\"hot\",\"dessert\",\"summer\"],\"char\":\"🍧\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"ice_cream\":{\"keywords\":[\"food\",\"hot\",\"dessert\"],\"char\":\"🍨\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"icecream\":{\"keywords\":[\"food\",\"hot\",\"dessert\",\"summer\"],\"char\":\"🍦\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"pie\":{\"keywords\":[\"food\",\"dessert\",\"pastry\"],\"char\":\"🥧\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cake\":{\"keywords\":[\"food\",\"dessert\"],\"char\":\"🍰\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cupcake\":{\"keywords\":[\"food\",\"dessert\",\"bakery\",\"sweet\"],\"char\":\"🧁\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"moon_cake\":{\"keywords\":[\"food\",\"autumn\"],\"char\":\"🥮\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"birthday\":{\"keywords\":[\"food\",\"dessert\",\"cake\"],\"char\":\"🎂\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"custard\":{\"keywords\":[\"dessert\",\"food\"],\"char\":\"🍮\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"candy\":{\"keywords\":[\"snack\",\"dessert\",\"sweet\",\"lolly\"],\"char\":\"🍬\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"lollipop\":{\"keywords\":[\"food\",\"snack\",\"candy\",\"sweet\"],\"char\":\"🍭\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"chocolate_bar\":{\"keywords\":[\"food\",\"snack\",\"dessert\",\"sweet\"],\"char\":\"🍫\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"popcorn\":{\"keywords\":[\"food\",\"movie theater\",\"films\",\"snack\"],\"char\":\"🍿\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"dumpling\":{\"keywords\":[\"food\",\"empanada\",\"pierogi\",\"potsticker\"],\"char\":\"🥟\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"doughnut\":{\"keywords\":[\"food\",\"dessert\",\"snack\",\"sweet\",\"donut\"],\"char\":\"🍩\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cookie\":{\"keywords\":[\"food\",\"snack\",\"oreo\",\"chocolate\",\"sweet\",\"dessert\"],\"char\":\"🍪\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"milk_glass\":{\"keywords\":[\"beverage\",\"drink\",\"cow\"],\"char\":\"🥛\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"beer\":{\"keywords\":[\"relax\",\"beverage\",\"drink\",\"drunk\",\"party\",\"pub\",\"summer\",\"alcohol\",\"booze\"],\"char\":\"🍺\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"beers\":{\"keywords\":[\"relax\",\"beverage\",\"drink\",\"drunk\",\"party\",\"pub\",\"summer\",\"alcohol\",\"booze\"],\"char\":\"🍻\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"clinking_glasses\":{\"keywords\":[\"beverage\",\"drink\",\"party\",\"alcohol\",\"celebrate\",\"cheers\",\"wine\",\"champagne\",\"toast\"],\"char\":\"🥂\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"wine_glass\":{\"keywords\":[\"drink\",\"beverage\",\"drunk\",\"alcohol\",\"booze\"],\"char\":\"🍷\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"tumbler_glass\":{\"keywords\":[\"drink\",\"beverage\",\"drunk\",\"alcohol\",\"liquor\",\"booze\",\"bourbon\",\"scotch\",\"whisky\",\"glass\",\"shot\"],\"char\":\"🥃\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cocktail\":{\"keywords\":[\"drink\",\"drunk\",\"alcohol\",\"beverage\",\"booze\",\"mojito\"],\"char\":\"🍸\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"tropical_drink\":{\"keywords\":[\"beverage\",\"cocktail\",\"summer\",\"beach\",\"alcohol\",\"booze\",\"mojito\"],\"char\":\"🍹\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"champagne\":{\"keywords\":[\"drink\",\"wine\",\"bottle\",\"celebration\"],\"char\":\"🍾\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"sake\":{\"keywords\":[\"wine\",\"drink\",\"drunk\",\"beverage\",\"japanese\",\"alcohol\",\"booze\"],\"char\":\"🍶\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"tea\":{\"keywords\":[\"drink\",\"bowl\",\"breakfast\",\"green\",\"british\"],\"char\":\"🍵\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"cup_with_straw\":{\"keywords\":[\"drink\",\"soda\"],\"char\":\"🥤\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"coffee\":{\"keywords\":[\"beverage\",\"caffeine\",\"latte\",\"espresso\"],\"char\":\"☕\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"baby_bottle\":{\"keywords\":[\"food\",\"container\",\"milk\"],\"char\":\"🍼\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"salt\":{\"keywords\":[\"condiment\",\"shaker\"],\"char\":\"🧂\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"spoon\":{\"keywords\":[\"cutlery\",\"kitchen\",\"tableware\"],\"char\":\"🥄\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"fork_and_knife\":{\"keywords\":[\"cutlery\",\"kitchen\"],\"char\":\"🍴\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"plate_with_cutlery\":{\"keywords\":[\"food\",\"eat\",\"meal\",\"lunch\",\"dinner\",\"restaurant\"],\"char\":\"🍽\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"bowl_with_spoon\":{\"keywords\":[\"food\",\"breakfast\",\"cereal\",\"oatmeal\",\"porridge\"],\"char\":\"🥣\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"takeout_box\":{\"keywords\":[\"food\",\"leftovers\"],\"char\":\"🥡\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"chopsticks\":{\"keywords\":[\"food\"],\"char\":\"🥢\",\"fitzpatrick_scale\":false,\"category\":\"food_and_drink\"},\"soccer\":{\"keywords\":[\"sports\",\"football\"],\"char\":\"⚽\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"basketball\":{\"keywords\":[\"sports\",\"balls\",\"NBA\"],\"char\":\"🏀\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"football\":{\"keywords\":[\"sports\",\"balls\",\"NFL\"],\"char\":\"🏈\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"baseball\":{\"keywords\":[\"sports\",\"balls\"],\"char\":\"⚾\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"softball\":{\"keywords\":[\"sports\",\"balls\"],\"char\":\"🥎\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"tennis\":{\"keywords\":[\"sports\",\"balls\",\"green\"],\"char\":\"🎾\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"volleyball\":{\"keywords\":[\"sports\",\"balls\"],\"char\":\"🏐\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"rugby_football\":{\"keywords\":[\"sports\",\"team\"],\"char\":\"🏉\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"flying_disc\":{\"keywords\":[\"sports\",\"frisbee\",\"ultimate\"],\"char\":\"🥏\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"8ball\":{\"keywords\":[\"pool\",\"hobby\",\"game\",\"luck\",\"magic\"],\"char\":\"🎱\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"golf\":{\"keywords\":[\"sports\",\"business\",\"flag\",\"hole\",\"summer\"],\"char\":\"⛳\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"golfing_woman\":{\"keywords\":[\"sports\",\"business\",\"woman\",\"female\"],\"char\":\"🏌️‍♀️\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"golfing_man\":{\"keywords\":[\"sports\",\"business\"],\"char\":\"🏌\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"ping_pong\":{\"keywords\":[\"sports\",\"pingpong\"],\"char\":\"🏓\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"badminton\":{\"keywords\":[\"sports\"],\"char\":\"🏸\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"goal_net\":{\"keywords\":[\"sports\"],\"char\":\"🥅\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"ice_hockey\":{\"keywords\":[\"sports\"],\"char\":\"🏒\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"field_hockey\":{\"keywords\":[\"sports\"],\"char\":\"🏑\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"lacrosse\":{\"keywords\":[\"sports\",\"ball\",\"stick\"],\"char\":\"🥍\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"cricket\":{\"keywords\":[\"sports\"],\"char\":\"🏏\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"ski\":{\"keywords\":[\"sports\",\"winter\",\"cold\",\"snow\"],\"char\":\"🎿\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"skier\":{\"keywords\":[\"sports\",\"winter\",\"snow\"],\"char\":\"⛷\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"snowboarder\":{\"keywords\":[\"sports\",\"winter\"],\"char\":\"🏂\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"person_fencing\":{\"keywords\":[\"sports\",\"fencing\",\"sword\"],\"char\":\"🤺\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"women_wrestling\":{\"keywords\":[\"sports\",\"wrestlers\"],\"char\":\"🤼‍♀️\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"men_wrestling\":{\"keywords\":[\"sports\",\"wrestlers\"],\"char\":\"🤼‍♂️\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"woman_cartwheeling\":{\"keywords\":[\"gymnastics\"],\"char\":\"🤸‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"man_cartwheeling\":{\"keywords\":[\"gymnastics\"],\"char\":\"🤸‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"woman_playing_handball\":{\"keywords\":[\"sports\"],\"char\":\"🤾‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"man_playing_handball\":{\"keywords\":[\"sports\"],\"char\":\"🤾‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"ice_skate\":{\"keywords\":[\"sports\"],\"char\":\"⛸\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"curling_stone\":{\"keywords\":[\"sports\"],\"char\":\"🥌\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"skateboard\":{\"keywords\":[\"board\"],\"char\":\"🛹\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"sled\":{\"keywords\":[\"sleigh\",\"luge\",\"toboggan\"],\"char\":\"🛷\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"bow_and_arrow\":{\"keywords\":[\"sports\"],\"char\":\"🏹\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"fishing_pole_and_fish\":{\"keywords\":[\"food\",\"hobby\",\"summer\"],\"char\":\"🎣\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"boxing_glove\":{\"keywords\":[\"sports\",\"fighting\"],\"char\":\"🥊\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"martial_arts_uniform\":{\"keywords\":[\"judo\",\"karate\",\"taekwondo\"],\"char\":\"🥋\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"rowing_woman\":{\"keywords\":[\"sports\",\"hobby\",\"water\",\"ship\",\"woman\",\"female\"],\"char\":\"🚣‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"rowing_man\":{\"keywords\":[\"sports\",\"hobby\",\"water\",\"ship\"],\"char\":\"🚣\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"climbing_woman\":{\"keywords\":[\"sports\",\"hobby\",\"woman\",\"female\",\"rock\"],\"char\":\"🧗‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"climbing_man\":{\"keywords\":[\"sports\",\"hobby\",\"man\",\"male\",\"rock\"],\"char\":\"🧗‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"swimming_woman\":{\"keywords\":[\"sports\",\"exercise\",\"human\",\"athlete\",\"water\",\"summer\",\"woman\",\"female\"],\"char\":\"🏊‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"swimming_man\":{\"keywords\":[\"sports\",\"exercise\",\"human\",\"athlete\",\"water\",\"summer\"],\"char\":\"🏊\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"woman_playing_water_polo\":{\"keywords\":[\"sports\",\"pool\"],\"char\":\"🤽‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"man_playing_water_polo\":{\"keywords\":[\"sports\",\"pool\"],\"char\":\"🤽‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"woman_in_lotus_position\":{\"keywords\":[\"woman\",\"female\",\"meditation\",\"yoga\",\"serenity\",\"zen\",\"mindfulness\"],\"char\":\"🧘‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"man_in_lotus_position\":{\"keywords\":[\"man\",\"male\",\"meditation\",\"yoga\",\"serenity\",\"zen\",\"mindfulness\"],\"char\":\"🧘‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"surfing_woman\":{\"keywords\":[\"sports\",\"ocean\",\"sea\",\"summer\",\"beach\",\"woman\",\"female\"],\"char\":\"🏄‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"surfing_man\":{\"keywords\":[\"sports\",\"ocean\",\"sea\",\"summer\",\"beach\"],\"char\":\"🏄\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"bath\":{\"keywords\":[\"clean\",\"shower\",\"bathroom\"],\"char\":\"🛀\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"basketball_woman\":{\"keywords\":[\"sports\",\"human\",\"woman\",\"female\"],\"char\":\"⛹️‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"basketball_man\":{\"keywords\":[\"sports\",\"human\"],\"char\":\"⛹\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"weight_lifting_woman\":{\"keywords\":[\"sports\",\"training\",\"exercise\",\"woman\",\"female\"],\"char\":\"🏋️‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"weight_lifting_man\":{\"keywords\":[\"sports\",\"training\",\"exercise\"],\"char\":\"🏋\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"biking_woman\":{\"keywords\":[\"sports\",\"bike\",\"exercise\",\"hipster\",\"woman\",\"female\"],\"char\":\"🚴‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"biking_man\":{\"keywords\":[\"sports\",\"bike\",\"exercise\",\"hipster\"],\"char\":\"🚴\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"mountain_biking_woman\":{\"keywords\":[\"transportation\",\"sports\",\"human\",\"race\",\"bike\",\"woman\",\"female\"],\"char\":\"🚵‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"mountain_biking_man\":{\"keywords\":[\"transportation\",\"sports\",\"human\",\"race\",\"bike\"],\"char\":\"🚵\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"horse_racing\":{\"keywords\":[\"animal\",\"betting\",\"competition\",\"gambling\",\"luck\"],\"char\":\"🏇\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"business_suit_levitating\":{\"keywords\":[\"suit\",\"business\",\"levitate\",\"hover\",\"jump\"],\"char\":\"🕴\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"trophy\":{\"keywords\":[\"win\",\"award\",\"contest\",\"place\",\"ftw\",\"ceremony\"],\"char\":\"🏆\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"running_shirt_with_sash\":{\"keywords\":[\"play\",\"pageant\"],\"char\":\"🎽\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"medal_sports\":{\"keywords\":[\"award\",\"winning\"],\"char\":\"🏅\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"medal_military\":{\"keywords\":[\"award\",\"winning\",\"army\"],\"char\":\"🎖\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"1st_place_medal\":{\"keywords\":[\"award\",\"winning\",\"first\"],\"char\":\"🥇\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"2nd_place_medal\":{\"keywords\":[\"award\",\"second\"],\"char\":\"🥈\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"3rd_place_medal\":{\"keywords\":[\"award\",\"third\"],\"char\":\"🥉\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"reminder_ribbon\":{\"keywords\":[\"sports\",\"cause\",\"support\",\"awareness\"],\"char\":\"🎗\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"rosette\":{\"keywords\":[\"flower\",\"decoration\",\"military\"],\"char\":\"🏵\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"ticket\":{\"keywords\":[\"event\",\"concert\",\"pass\"],\"char\":\"🎫\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"tickets\":{\"keywords\":[\"sports\",\"concert\",\"entrance\"],\"char\":\"🎟\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"performing_arts\":{\"keywords\":[\"acting\",\"theater\",\"drama\"],\"char\":\"🎭\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"art\":{\"keywords\":[\"design\",\"paint\",\"draw\",\"colors\"],\"char\":\"🎨\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"circus_tent\":{\"keywords\":[\"festival\",\"carnival\",\"party\"],\"char\":\"🎪\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"woman_juggling\":{\"keywords\":[\"juggle\",\"balance\",\"skill\",\"multitask\"],\"char\":\"🤹‍♀️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"man_juggling\":{\"keywords\":[\"juggle\",\"balance\",\"skill\",\"multitask\"],\"char\":\"🤹‍♂️\",\"fitzpatrick_scale\":true,\"category\":\"activity\"},\"microphone\":{\"keywords\":[\"sound\",\"music\",\"PA\",\"sing\",\"talkshow\"],\"char\":\"🎤\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"headphones\":{\"keywords\":[\"music\",\"score\",\"gadgets\"],\"char\":\"🎧\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"musical_score\":{\"keywords\":[\"treble\",\"clef\",\"compose\"],\"char\":\"🎼\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"musical_keyboard\":{\"keywords\":[\"piano\",\"instrument\",\"compose\"],\"char\":\"🎹\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"drum\":{\"keywords\":[\"music\",\"instrument\",\"drumsticks\",\"snare\"],\"char\":\"🥁\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"saxophone\":{\"keywords\":[\"music\",\"instrument\",\"jazz\",\"blues\"],\"char\":\"🎷\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"trumpet\":{\"keywords\":[\"music\",\"brass\"],\"char\":\"🎺\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"guitar\":{\"keywords\":[\"music\",\"instrument\"],\"char\":\"🎸\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"violin\":{\"keywords\":[\"music\",\"instrument\",\"orchestra\",\"symphony\"],\"char\":\"🎻\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"clapper\":{\"keywords\":[\"movie\",\"film\",\"record\"],\"char\":\"🎬\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"video_game\":{\"keywords\":[\"play\",\"console\",\"PS4\",\"controller\"],\"char\":\"🎮\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"space_invader\":{\"keywords\":[\"game\",\"arcade\",\"play\"],\"char\":\"👾\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"dart\":{\"keywords\":[\"game\",\"play\",\"bar\",\"target\",\"bullseye\"],\"char\":\"🎯\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"game_die\":{\"keywords\":[\"dice\",\"random\",\"tabletop\",\"play\",\"luck\"],\"char\":\"🎲\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"chess_pawn\":{\"keywords\":[\"expendable\"],\"char\":\"♟\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"slot_machine\":{\"keywords\":[\"bet\",\"gamble\",\"vegas\",\"fruit machine\",\"luck\",\"casino\"],\"char\":\"🎰\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"jigsaw\":{\"keywords\":[\"interlocking\",\"puzzle\",\"piece\"],\"char\":\"🧩\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"bowling\":{\"keywords\":[\"sports\",\"fun\",\"play\"],\"char\":\"🎳\",\"fitzpatrick_scale\":false,\"category\":\"activity\"},\"red_car\":{\"keywords\":[\"red\",\"transportation\",\"vehicle\"],\"char\":\"🚗\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"taxi\":{\"keywords\":[\"uber\",\"vehicle\",\"cars\",\"transportation\"],\"char\":\"🚕\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"blue_car\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚙\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"bus\":{\"keywords\":[\"car\",\"vehicle\",\"transportation\"],\"char\":\"🚌\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"trolleybus\":{\"keywords\":[\"bart\",\"transportation\",\"vehicle\"],\"char\":\"🚎\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"racing_car\":{\"keywords\":[\"sports\",\"race\",\"fast\",\"formula\",\"f1\"],\"char\":\"🏎\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"police_car\":{\"keywords\":[\"vehicle\",\"cars\",\"transportation\",\"law\",\"legal\",\"enforcement\"],\"char\":\"🚓\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"ambulance\":{\"keywords\":[\"health\",\"911\",\"hospital\"],\"char\":\"🚑\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"fire_engine\":{\"keywords\":[\"transportation\",\"cars\",\"vehicle\"],\"char\":\"🚒\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"minibus\":{\"keywords\":[\"vehicle\",\"car\",\"transportation\"],\"char\":\"🚐\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"truck\":{\"keywords\":[\"cars\",\"transportation\"],\"char\":\"🚚\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"articulated_lorry\":{\"keywords\":[\"vehicle\",\"cars\",\"transportation\",\"express\"],\"char\":\"🚛\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"tractor\":{\"keywords\":[\"vehicle\",\"car\",\"farming\",\"agriculture\"],\"char\":\"🚜\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"kick_scooter\":{\"keywords\":[\"vehicle\",\"kick\",\"razor\"],\"char\":\"🛴\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"motorcycle\":{\"keywords\":[\"race\",\"sports\",\"fast\"],\"char\":\"🏍\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"bike\":{\"keywords\":[\"sports\",\"bicycle\",\"exercise\",\"hipster\"],\"char\":\"🚲\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"motor_scooter\":{\"keywords\":[\"vehicle\",\"vespa\",\"sasha\"],\"char\":\"🛵\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"rotating_light\":{\"keywords\":[\"police\",\"ambulance\",\"911\",\"emergency\",\"alert\",\"error\",\"pinged\",\"law\",\"legal\"],\"char\":\"🚨\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"oncoming_police_car\":{\"keywords\":[\"vehicle\",\"law\",\"legal\",\"enforcement\",\"911\"],\"char\":\"🚔\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"oncoming_bus\":{\"keywords\":[\"vehicle\",\"transportation\"],\"char\":\"🚍\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"oncoming_automobile\":{\"keywords\":[\"car\",\"vehicle\",\"transportation\"],\"char\":\"🚘\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"oncoming_taxi\":{\"keywords\":[\"vehicle\",\"cars\",\"uber\"],\"char\":\"🚖\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"aerial_tramway\":{\"keywords\":[\"transportation\",\"vehicle\",\"ski\"],\"char\":\"🚡\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"mountain_cableway\":{\"keywords\":[\"transportation\",\"vehicle\",\"ski\"],\"char\":\"🚠\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"suspension_railway\":{\"keywords\":[\"vehicle\",\"transportation\"],\"char\":\"🚟\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"railway_car\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚃\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"train\":{\"keywords\":[\"transportation\",\"vehicle\",\"carriage\",\"public\",\"travel\"],\"char\":\"🚋\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"monorail\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚝\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"bullettrain_side\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚄\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"bullettrain_front\":{\"keywords\":[\"transportation\",\"vehicle\",\"speed\",\"fast\",\"public\",\"travel\"],\"char\":\"🚅\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"light_rail\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚈\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"mountain_railway\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚞\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"steam_locomotive\":{\"keywords\":[\"transportation\",\"vehicle\",\"train\"],\"char\":\"🚂\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"train2\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚆\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"metro\":{\"keywords\":[\"transportation\",\"blue-square\",\"mrt\",\"underground\",\"tube\"],\"char\":\"🚇\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"tram\":{\"keywords\":[\"transportation\",\"vehicle\"],\"char\":\"🚊\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"station\":{\"keywords\":[\"transportation\",\"vehicle\",\"public\"],\"char\":\"🚉\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"flying_saucer\":{\"keywords\":[\"transportation\",\"vehicle\",\"ufo\"],\"char\":\"🛸\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"helicopter\":{\"keywords\":[\"transportation\",\"vehicle\",\"fly\"],\"char\":\"🚁\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"small_airplane\":{\"keywords\":[\"flight\",\"transportation\",\"fly\",\"vehicle\"],\"char\":\"🛩\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"airplane\":{\"keywords\":[\"vehicle\",\"transportation\",\"flight\",\"fly\"],\"char\":\"✈️\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"flight_departure\":{\"keywords\":[\"airport\",\"flight\",\"landing\"],\"char\":\"🛫\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"flight_arrival\":{\"keywords\":[\"airport\",\"flight\",\"boarding\"],\"char\":\"🛬\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"sailboat\":{\"keywords\":[\"ship\",\"summer\",\"transportation\",\"water\",\"sailing\"],\"char\":\"⛵\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"motor_boat\":{\"keywords\":[\"ship\"],\"char\":\"🛥\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"speedboat\":{\"keywords\":[\"ship\",\"transportation\",\"vehicle\",\"summer\"],\"char\":\"🚤\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"ferry\":{\"keywords\":[\"boat\",\"ship\",\"yacht\"],\"char\":\"⛴\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"passenger_ship\":{\"keywords\":[\"yacht\",\"cruise\",\"ferry\"],\"char\":\"🛳\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"rocket\":{\"keywords\":[\"launch\",\"ship\",\"staffmode\",\"NASA\",\"outer space\",\"outer_space\",\"fly\"],\"char\":\"🚀\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"artificial_satellite\":{\"keywords\":[\"communication\",\"gps\",\"orbit\",\"spaceflight\",\"NASA\",\"ISS\"],\"char\":\"🛰\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"seat\":{\"keywords\":[\"sit\",\"airplane\",\"transport\",\"bus\",\"flight\",\"fly\"],\"char\":\"💺\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"canoe\":{\"keywords\":[\"boat\",\"paddle\",\"water\",\"ship\"],\"char\":\"🛶\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"anchor\":{\"keywords\":[\"ship\",\"ferry\",\"sea\",\"boat\"],\"char\":\"⚓\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"construction\":{\"keywords\":[\"wip\",\"progress\",\"caution\",\"warning\"],\"char\":\"🚧\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"fuelpump\":{\"keywords\":[\"gas station\",\"petroleum\"],\"char\":\"⛽\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"busstop\":{\"keywords\":[\"transportation\",\"wait\"],\"char\":\"🚏\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"vertical_traffic_light\":{\"keywords\":[\"transportation\",\"driving\"],\"char\":\"🚦\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"traffic_light\":{\"keywords\":[\"transportation\",\"signal\"],\"char\":\"🚥\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"checkered_flag\":{\"keywords\":[\"contest\",\"finishline\",\"race\",\"gokart\"],\"char\":\"🏁\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"ship\":{\"keywords\":[\"transportation\",\"titanic\",\"deploy\"],\"char\":\"🚢\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"ferris_wheel\":{\"keywords\":[\"photo\",\"carnival\",\"londoneye\"],\"char\":\"🎡\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"roller_coaster\":{\"keywords\":[\"carnival\",\"playground\",\"photo\",\"fun\"],\"char\":\"🎢\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"carousel_horse\":{\"keywords\":[\"photo\",\"carnival\"],\"char\":\"🎠\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"building_construction\":{\"keywords\":[\"wip\",\"working\",\"progress\"],\"char\":\"🏗\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"foggy\":{\"keywords\":[\"photo\",\"mountain\"],\"char\":\"🌁\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"tokyo_tower\":{\"keywords\":[\"photo\",\"japanese\"],\"char\":\"🗼\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"factory\":{\"keywords\":[\"building\",\"industry\",\"pollution\",\"smoke\"],\"char\":\"🏭\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"fountain\":{\"keywords\":[\"photo\",\"summer\",\"water\",\"fresh\"],\"char\":\"⛲\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"rice_scene\":{\"keywords\":[\"photo\",\"japan\",\"asia\",\"tsukimi\"],\"char\":\"🎑\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"mountain\":{\"keywords\":[\"photo\",\"nature\",\"environment\"],\"char\":\"⛰\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"mountain_snow\":{\"keywords\":[\"photo\",\"nature\",\"environment\",\"winter\",\"cold\"],\"char\":\"🏔\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"mount_fuji\":{\"keywords\":[\"photo\",\"mountain\",\"nature\",\"japanese\"],\"char\":\"🗻\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"volcano\":{\"keywords\":[\"photo\",\"nature\",\"disaster\"],\"char\":\"🌋\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"japan\":{\"keywords\":[\"nation\",\"country\",\"japanese\",\"asia\"],\"char\":\"🗾\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"camping\":{\"keywords\":[\"photo\",\"outdoors\",\"tent\"],\"char\":\"🏕\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"tent\":{\"keywords\":[\"photo\",\"camping\",\"outdoors\"],\"char\":\"⛺\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"national_park\":{\"keywords\":[\"photo\",\"environment\",\"nature\"],\"char\":\"🏞\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"motorway\":{\"keywords\":[\"road\",\"cupertino\",\"interstate\",\"highway\"],\"char\":\"🛣\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"railway_track\":{\"keywords\":[\"train\",\"transportation\"],\"char\":\"🛤\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"sunrise\":{\"keywords\":[\"morning\",\"view\",\"vacation\",\"photo\"],\"char\":\"🌅\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"sunrise_over_mountains\":{\"keywords\":[\"view\",\"vacation\",\"photo\"],\"char\":\"🌄\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"desert\":{\"keywords\":[\"photo\",\"warm\",\"saharah\"],\"char\":\"🏜\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"beach_umbrella\":{\"keywords\":[\"weather\",\"summer\",\"sunny\",\"sand\",\"mojito\"],\"char\":\"🏖\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"desert_island\":{\"keywords\":[\"photo\",\"tropical\",\"mojito\"],\"char\":\"🏝\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"city_sunrise\":{\"keywords\":[\"photo\",\"good morning\",\"dawn\"],\"char\":\"🌇\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"city_sunset\":{\"keywords\":[\"photo\",\"evening\",\"sky\",\"buildings\"],\"char\":\"🌆\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"cityscape\":{\"keywords\":[\"photo\",\"night life\",\"urban\"],\"char\":\"🏙\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"night_with_stars\":{\"keywords\":[\"evening\",\"city\",\"downtown\"],\"char\":\"🌃\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"bridge_at_night\":{\"keywords\":[\"photo\",\"sanfrancisco\"],\"char\":\"🌉\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"milky_way\":{\"keywords\":[\"photo\",\"space\",\"stars\"],\"char\":\"🌌\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"stars\":{\"keywords\":[\"night\",\"photo\"],\"char\":\"🌠\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"sparkler\":{\"keywords\":[\"stars\",\"night\",\"shine\"],\"char\":\"🎇\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"fireworks\":{\"keywords\":[\"photo\",\"festival\",\"carnival\",\"congratulations\"],\"char\":\"🎆\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"rainbow\":{\"keywords\":[\"nature\",\"happy\",\"unicorn_face\",\"photo\",\"sky\",\"spring\"],\"char\":\"🌈\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"houses\":{\"keywords\":[\"buildings\",\"photo\"],\"char\":\"🏘\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"european_castle\":{\"keywords\":[\"building\",\"royalty\",\"history\"],\"char\":\"🏰\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"japanese_castle\":{\"keywords\":[\"photo\",\"building\"],\"char\":\"🏯\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"stadium\":{\"keywords\":[\"photo\",\"place\",\"sports\",\"concert\",\"venue\"],\"char\":\"🏟\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"statue_of_liberty\":{\"keywords\":[\"american\",\"newyork\"],\"char\":\"🗽\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"house\":{\"keywords\":[\"building\",\"home\"],\"char\":\"🏠\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"house_with_garden\":{\"keywords\":[\"home\",\"plant\",\"nature\"],\"char\":\"🏡\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"derelict_house\":{\"keywords\":[\"abandon\",\"evict\",\"broken\",\"building\"],\"char\":\"🏚\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"office\":{\"keywords\":[\"building\",\"bureau\",\"work\"],\"char\":\"🏢\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"department_store\":{\"keywords\":[\"building\",\"shopping\",\"mall\"],\"char\":\"🏬\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"post_office\":{\"keywords\":[\"building\",\"envelope\",\"communication\"],\"char\":\"🏣\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"european_post_office\":{\"keywords\":[\"building\",\"email\"],\"char\":\"🏤\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"hospital\":{\"keywords\":[\"building\",\"health\",\"surgery\",\"doctor\"],\"char\":\"🏥\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"bank\":{\"keywords\":[\"building\",\"money\",\"sales\",\"cash\",\"business\",\"enterprise\"],\"char\":\"🏦\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"hotel\":{\"keywords\":[\"building\",\"accomodation\",\"checkin\"],\"char\":\"🏨\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"convenience_store\":{\"keywords\":[\"building\",\"shopping\",\"groceries\"],\"char\":\"🏪\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"school\":{\"keywords\":[\"building\",\"student\",\"education\",\"learn\",\"teach\"],\"char\":\"🏫\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"love_hotel\":{\"keywords\":[\"like\",\"affection\",\"dating\"],\"char\":\"🏩\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"wedding\":{\"keywords\":[\"love\",\"like\",\"affection\",\"couple\",\"marriage\",\"bride\",\"groom\"],\"char\":\"💒\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"classical_building\":{\"keywords\":[\"art\",\"culture\",\"history\"],\"char\":\"🏛\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"church\":{\"keywords\":[\"building\",\"religion\",\"christ\"],\"char\":\"⛪\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"mosque\":{\"keywords\":[\"islam\",\"worship\",\"minaret\"],\"char\":\"🕌\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"synagogue\":{\"keywords\":[\"judaism\",\"worship\",\"temple\",\"jewish\"],\"char\":\"🕍\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"kaaba\":{\"keywords\":[\"mecca\",\"mosque\",\"islam\"],\"char\":\"🕋\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"shinto_shrine\":{\"keywords\":[\"temple\",\"japan\",\"kyoto\"],\"char\":\"⛩\",\"fitzpatrick_scale\":false,\"category\":\"travel_and_places\"},\"watch\":{\"keywords\":[\"time\",\"accessories\"],\"char\":\"⌚\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"iphone\":{\"keywords\":[\"technology\",\"apple\",\"gadgets\",\"dial\"],\"char\":\"📱\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"calling\":{\"keywords\":[\"iphone\",\"incoming\"],\"char\":\"📲\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"computer\":{\"keywords\":[\"technology\",\"laptop\",\"screen\",\"display\",\"monitor\"],\"char\":\"💻\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"keyboard\":{\"keywords\":[\"technology\",\"computer\",\"type\",\"input\",\"text\"],\"char\":\"⌨\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"desktop_computer\":{\"keywords\":[\"technology\",\"computing\",\"screen\"],\"char\":\"🖥\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"printer\":{\"keywords\":[\"paper\",\"ink\"],\"char\":\"🖨\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"computer_mouse\":{\"keywords\":[\"click\"],\"char\":\"🖱\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"trackball\":{\"keywords\":[\"technology\",\"trackpad\"],\"char\":\"🖲\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"joystick\":{\"keywords\":[\"game\",\"play\"],\"char\":\"🕹\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"clamp\":{\"keywords\":[\"tool\"],\"char\":\"🗜\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"minidisc\":{\"keywords\":[\"technology\",\"record\",\"data\",\"disk\",\"90s\"],\"char\":\"💽\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"floppy_disk\":{\"keywords\":[\"oldschool\",\"technology\",\"save\",\"90s\",\"80s\"],\"char\":\"💾\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"cd\":{\"keywords\":[\"technology\",\"dvd\",\"disk\",\"disc\",\"90s\"],\"char\":\"💿\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"dvd\":{\"keywords\":[\"cd\",\"disk\",\"disc\"],\"char\":\"📀\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"vhs\":{\"keywords\":[\"record\",\"video\",\"oldschool\",\"90s\",\"80s\"],\"char\":\"📼\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"camera\":{\"keywords\":[\"gadgets\",\"photography\"],\"char\":\"📷\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"camera_flash\":{\"keywords\":[\"photography\",\"gadgets\"],\"char\":\"📸\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"video_camera\":{\"keywords\":[\"film\",\"record\"],\"char\":\"📹\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"movie_camera\":{\"keywords\":[\"film\",\"record\"],\"char\":\"🎥\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"film_projector\":{\"keywords\":[\"video\",\"tape\",\"record\",\"movie\"],\"char\":\"📽\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"film_strip\":{\"keywords\":[\"movie\"],\"char\":\"🎞\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"telephone_receiver\":{\"keywords\":[\"technology\",\"communication\",\"dial\"],\"char\":\"📞\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"phone\":{\"keywords\":[\"technology\",\"communication\",\"dial\",\"telephone\"],\"char\":\"☎️\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"pager\":{\"keywords\":[\"bbcall\",\"oldschool\",\"90s\"],\"char\":\"📟\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"fax\":{\"keywords\":[\"communication\",\"technology\"],\"char\":\"📠\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"tv\":{\"keywords\":[\"technology\",\"program\",\"oldschool\",\"show\",\"television\"],\"char\":\"📺\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"radio\":{\"keywords\":[\"communication\",\"music\",\"podcast\",\"program\"],\"char\":\"📻\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"studio_microphone\":{\"keywords\":[\"sing\",\"recording\",\"artist\",\"talkshow\"],\"char\":\"🎙\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"level_slider\":{\"keywords\":[\"scale\"],\"char\":\"🎚\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"control_knobs\":{\"keywords\":[\"dial\"],\"char\":\"🎛\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"compass\":{\"keywords\":[\"magnetic\",\"navigation\",\"orienteering\"],\"char\":\"🧭\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"stopwatch\":{\"keywords\":[\"time\",\"deadline\"],\"char\":\"⏱\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"timer_clock\":{\"keywords\":[\"alarm\"],\"char\":\"⏲\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"alarm_clock\":{\"keywords\":[\"time\",\"wake\"],\"char\":\"⏰\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"mantelpiece_clock\":{\"keywords\":[\"time\"],\"char\":\"🕰\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"hourglass_flowing_sand\":{\"keywords\":[\"oldschool\",\"time\",\"countdown\"],\"char\":\"⏳\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"hourglass\":{\"keywords\":[\"time\",\"clock\",\"oldschool\",\"limit\",\"exam\",\"quiz\",\"test\"],\"char\":\"⌛\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"satellite\":{\"keywords\":[\"communication\",\"future\",\"radio\",\"space\"],\"char\":\"📡\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"battery\":{\"keywords\":[\"power\",\"energy\",\"sustain\"],\"char\":\"🔋\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"electric_plug\":{\"keywords\":[\"charger\",\"power\"],\"char\":\"🔌\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"bulb\":{\"keywords\":[\"light\",\"electricity\",\"idea\"],\"char\":\"💡\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"flashlight\":{\"keywords\":[\"dark\",\"camping\",\"sight\",\"night\"],\"char\":\"🔦\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"candle\":{\"keywords\":[\"fire\",\"wax\"],\"char\":\"🕯\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"fire_extinguisher\":{\"keywords\":[\"quench\"],\"char\":\"🧯\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"wastebasket\":{\"keywords\":[\"bin\",\"trash\",\"rubbish\",\"garbage\",\"toss\"],\"char\":\"🗑\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"oil_drum\":{\"keywords\":[\"barrell\"],\"char\":\"🛢\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"money_with_wings\":{\"keywords\":[\"dollar\",\"bills\",\"payment\",\"sale\"],\"char\":\"💸\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"dollar\":{\"keywords\":[\"money\",\"sales\",\"bill\",\"currency\"],\"char\":\"💵\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"yen\":{\"keywords\":[\"money\",\"sales\",\"japanese\",\"dollar\",\"currency\"],\"char\":\"💴\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"euro\":{\"keywords\":[\"money\",\"sales\",\"dollar\",\"currency\"],\"char\":\"💶\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"pound\":{\"keywords\":[\"british\",\"sterling\",\"money\",\"sales\",\"bills\",\"uk\",\"england\",\"currency\"],\"char\":\"💷\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"moneybag\":{\"keywords\":[\"dollar\",\"payment\",\"coins\",\"sale\"],\"char\":\"💰\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"credit_card\":{\"keywords\":[\"money\",\"sales\",\"dollar\",\"bill\",\"payment\",\"shopping\"],\"char\":\"💳\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"gem\":{\"keywords\":[\"blue\",\"ruby\",\"diamond\",\"jewelry\"],\"char\":\"💎\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"balance_scale\":{\"keywords\":[\"law\",\"fairness\",\"weight\"],\"char\":\"⚖\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"toolbox\":{\"keywords\":[\"tools\",\"diy\",\"fix\",\"maintainer\",\"mechanic\"],\"char\":\"🧰\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"wrench\":{\"keywords\":[\"tools\",\"diy\",\"ikea\",\"fix\",\"maintainer\"],\"char\":\"🔧\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"hammer\":{\"keywords\":[\"tools\",\"build\",\"create\"],\"char\":\"🔨\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"hammer_and_pick\":{\"keywords\":[\"tools\",\"build\",\"create\"],\"char\":\"⚒\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"hammer_and_wrench\":{\"keywords\":[\"tools\",\"build\",\"create\"],\"char\":\"🛠\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"pick\":{\"keywords\":[\"tools\",\"dig\"],\"char\":\"⛏\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"nut_and_bolt\":{\"keywords\":[\"handy\",\"tools\",\"fix\"],\"char\":\"🔩\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"gear\":{\"keywords\":[\"cog\"],\"char\":\"⚙\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"brick\":{\"keywords\":[\"bricks\"],\"char\":\"🧱\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"chains\":{\"keywords\":[\"lock\",\"arrest\"],\"char\":\"⛓\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"magnet\":{\"keywords\":[\"attraction\",\"magnetic\"],\"char\":\"🧲\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"gun\":{\"keywords\":[\"violence\",\"weapon\",\"pistol\",\"revolver\"],\"char\":\"🔫\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"bomb\":{\"keywords\":[\"boom\",\"explode\",\"explosion\",\"terrorism\"],\"char\":\"💣\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"firecracker\":{\"keywords\":[\"dynamite\",\"boom\",\"explode\",\"explosion\",\"explosive\"],\"char\":\"🧨\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"hocho\":{\"keywords\":[\"knife\",\"blade\",\"cutlery\",\"kitchen\",\"weapon\"],\"char\":\"🔪\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"dagger\":{\"keywords\":[\"weapon\"],\"char\":\"🗡\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"crossed_swords\":{\"keywords\":[\"weapon\"],\"char\":\"⚔\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"shield\":{\"keywords\":[\"protection\",\"security\"],\"char\":\"🛡\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"smoking\":{\"keywords\":[\"kills\",\"tobacco\",\"cigarette\",\"joint\",\"smoke\"],\"char\":\"🚬\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"skull_and_crossbones\":{\"keywords\":[\"poison\",\"danger\",\"deadly\",\"scary\",\"death\",\"pirate\",\"evil\"],\"char\":\"☠\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"coffin\":{\"keywords\":[\"vampire\",\"dead\",\"die\",\"death\",\"rip\",\"graveyard\",\"cemetery\",\"casket\",\"funeral\",\"box\"],\"char\":\"⚰\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"funeral_urn\":{\"keywords\":[\"dead\",\"die\",\"death\",\"rip\",\"ashes\"],\"char\":\"⚱\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"amphora\":{\"keywords\":[\"vase\",\"jar\"],\"char\":\"🏺\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"crystal_ball\":{\"keywords\":[\"disco\",\"party\",\"magic\",\"circus\",\"fortune_teller\"],\"char\":\"🔮\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"prayer_beads\":{\"keywords\":[\"dhikr\",\"religious\"],\"char\":\"📿\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"nazar_amulet\":{\"keywords\":[\"bead\",\"charm\"],\"char\":\"🧿\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"barber\":{\"keywords\":[\"hair\",\"salon\",\"style\"],\"char\":\"💈\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"alembic\":{\"keywords\":[\"distilling\",\"science\",\"experiment\",\"chemistry\"],\"char\":\"⚗\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"telescope\":{\"keywords\":[\"stars\",\"space\",\"zoom\",\"science\",\"astronomy\"],\"char\":\"🔭\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"microscope\":{\"keywords\":[\"laboratory\",\"experiment\",\"zoomin\",\"science\",\"study\"],\"char\":\"🔬\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"hole\":{\"keywords\":[\"embarrassing\"],\"char\":\"🕳\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"pill\":{\"keywords\":[\"health\",\"medicine\",\"doctor\",\"pharmacy\",\"drug\"],\"char\":\"💊\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"syringe\":{\"keywords\":[\"health\",\"hospital\",\"drugs\",\"blood\",\"medicine\",\"needle\",\"doctor\",\"nurse\"],\"char\":\"💉\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"dna\":{\"keywords\":[\"biologist\",\"genetics\",\"life\"],\"char\":\"🧬\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"microbe\":{\"keywords\":[\"amoeba\",\"bacteria\",\"germs\"],\"char\":\"🦠\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"petri_dish\":{\"keywords\":[\"bacteria\",\"biology\",\"culture\",\"lab\"],\"char\":\"🧫\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"test_tube\":{\"keywords\":[\"chemistry\",\"experiment\",\"lab\",\"science\"],\"char\":\"🧪\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"thermometer\":{\"keywords\":[\"weather\",\"temperature\",\"hot\",\"cold\"],\"char\":\"🌡\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"broom\":{\"keywords\":[\"cleaning\",\"sweeping\",\"witch\"],\"char\":\"🧹\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"basket\":{\"keywords\":[\"laundry\"],\"char\":\"🧺\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"toilet_paper\":{\"keywords\":[\"roll\"],\"char\":\"🧻\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"label\":{\"keywords\":[\"sale\",\"tag\"],\"char\":\"🏷\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"bookmark\":{\"keywords\":[\"favorite\",\"label\",\"save\"],\"char\":\"🔖\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"toilet\":{\"keywords\":[\"restroom\",\"wc\",\"washroom\",\"bathroom\",\"potty\"],\"char\":\"🚽\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"shower\":{\"keywords\":[\"clean\",\"water\",\"bathroom\"],\"char\":\"🚿\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"bathtub\":{\"keywords\":[\"clean\",\"shower\",\"bathroom\"],\"char\":\"🛁\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"soap\":{\"keywords\":[\"bar\",\"bathing\",\"cleaning\",\"lather\"],\"char\":\"🧼\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"sponge\":{\"keywords\":[\"absorbing\",\"cleaning\",\"porous\"],\"char\":\"🧽\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"lotion_bottle\":{\"keywords\":[\"moisturizer\",\"sunscreen\"],\"char\":\"🧴\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"key\":{\"keywords\":[\"lock\",\"door\",\"password\"],\"char\":\"🔑\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"old_key\":{\"keywords\":[\"lock\",\"door\",\"password\"],\"char\":\"🗝\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"couch_and_lamp\":{\"keywords\":[\"read\",\"chill\"],\"char\":\"🛋\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"sleeping_bed\":{\"keywords\":[\"bed\",\"rest\"],\"char\":\"🛌\",\"fitzpatrick_scale\":true,\"category\":\"objects\"},\"bed\":{\"keywords\":[\"sleep\",\"rest\"],\"char\":\"🛏\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"door\":{\"keywords\":[\"house\",\"entry\",\"exit\"],\"char\":\"🚪\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"bellhop_bell\":{\"keywords\":[\"service\"],\"char\":\"🛎\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"teddy_bear\":{\"keywords\":[\"plush\",\"stuffed\"],\"char\":\"🧸\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"framed_picture\":{\"keywords\":[\"photography\"],\"char\":\"🖼\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"world_map\":{\"keywords\":[\"location\",\"direction\"],\"char\":\"🗺\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"parasol_on_ground\":{\"keywords\":[\"weather\",\"summer\"],\"char\":\"⛱\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"moyai\":{\"keywords\":[\"rock\",\"easter island\",\"moai\"],\"char\":\"🗿\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"shopping\":{\"keywords\":[\"mall\",\"buy\",\"purchase\"],\"char\":\"🛍\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"shopping_cart\":{\"keywords\":[\"trolley\"],\"char\":\"🛒\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"balloon\":{\"keywords\":[\"party\",\"celebration\",\"birthday\",\"circus\"],\"char\":\"🎈\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"flags\":{\"keywords\":[\"fish\",\"japanese\",\"koinobori\",\"carp\",\"banner\"],\"char\":\"🎏\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"ribbon\":{\"keywords\":[\"decoration\",\"pink\",\"girl\",\"bowtie\"],\"char\":\"🎀\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"gift\":{\"keywords\":[\"present\",\"birthday\",\"christmas\",\"xmas\"],\"char\":\"🎁\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"confetti_ball\":{\"keywords\":[\"festival\",\"party\",\"birthday\",\"circus\"],\"char\":\"🎊\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"tada\":{\"keywords\":[\"party\",\"congratulations\",\"birthday\",\"magic\",\"circus\",\"celebration\"],\"char\":\"🎉\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"dolls\":{\"keywords\":[\"japanese\",\"toy\",\"kimono\"],\"char\":\"🎎\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"wind_chime\":{\"keywords\":[\"nature\",\"ding\",\"spring\",\"bell\"],\"char\":\"🎐\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"crossed_flags\":{\"keywords\":[\"japanese\",\"nation\",\"country\",\"border\"],\"char\":\"🎌\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"izakaya_lantern\":{\"keywords\":[\"light\",\"paper\",\"halloween\",\"spooky\"],\"char\":\"🏮\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"red_envelope\":{\"keywords\":[\"gift\"],\"char\":\"🧧\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"email\":{\"keywords\":[\"letter\",\"postal\",\"inbox\",\"communication\"],\"char\":\"✉️\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"envelope_with_arrow\":{\"keywords\":[\"email\",\"communication\"],\"char\":\"📩\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"incoming_envelope\":{\"keywords\":[\"email\",\"inbox\"],\"char\":\"📨\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"e-mail\":{\"keywords\":[\"communication\",\"inbox\"],\"char\":\"📧\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"love_letter\":{\"keywords\":[\"email\",\"like\",\"affection\",\"envelope\",\"valentines\"],\"char\":\"💌\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"postbox\":{\"keywords\":[\"email\",\"letter\",\"envelope\"],\"char\":\"📮\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"mailbox_closed\":{\"keywords\":[\"email\",\"communication\",\"inbox\"],\"char\":\"📪\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"mailbox\":{\"keywords\":[\"email\",\"inbox\",\"communication\"],\"char\":\"📫\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"mailbox_with_mail\":{\"keywords\":[\"email\",\"inbox\",\"communication\"],\"char\":\"📬\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"mailbox_with_no_mail\":{\"keywords\":[\"email\",\"inbox\"],\"char\":\"📭\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"package\":{\"keywords\":[\"mail\",\"gift\",\"cardboard\",\"box\",\"moving\"],\"char\":\"📦\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"postal_horn\":{\"keywords\":[\"instrument\",\"music\"],\"char\":\"📯\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"inbox_tray\":{\"keywords\":[\"email\",\"documents\"],\"char\":\"📥\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"outbox_tray\":{\"keywords\":[\"inbox\",\"email\"],\"char\":\"📤\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"scroll\":{\"keywords\":[\"documents\",\"ancient\",\"history\",\"paper\"],\"char\":\"📜\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"page_with_curl\":{\"keywords\":[\"documents\",\"office\",\"paper\"],\"char\":\"📃\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"bookmark_tabs\":{\"keywords\":[\"favorite\",\"save\",\"order\",\"tidy\"],\"char\":\"📑\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"receipt\":{\"keywords\":[\"accounting\",\"expenses\"],\"char\":\"🧾\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"bar_chart\":{\"keywords\":[\"graph\",\"presentation\",\"stats\"],\"char\":\"📊\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"chart_with_upwards_trend\":{\"keywords\":[\"graph\",\"presentation\",\"stats\",\"recovery\",\"business\",\"economics\",\"money\",\"sales\",\"good\",\"success\"],\"char\":\"📈\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"chart_with_downwards_trend\":{\"keywords\":[\"graph\",\"presentation\",\"stats\",\"recession\",\"business\",\"economics\",\"money\",\"sales\",\"bad\",\"failure\"],\"char\":\"📉\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"page_facing_up\":{\"keywords\":[\"documents\",\"office\",\"paper\",\"information\"],\"char\":\"📄\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"date\":{\"keywords\":[\"calendar\",\"schedule\"],\"char\":\"📅\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"calendar\":{\"keywords\":[\"schedule\",\"date\",\"planning\"],\"char\":\"📆\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"spiral_calendar\":{\"keywords\":[\"date\",\"schedule\",\"planning\"],\"char\":\"🗓\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"card_index\":{\"keywords\":[\"business\",\"stationery\"],\"char\":\"📇\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"card_file_box\":{\"keywords\":[\"business\",\"stationery\"],\"char\":\"🗃\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"ballot_box\":{\"keywords\":[\"election\",\"vote\"],\"char\":\"🗳\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"file_cabinet\":{\"keywords\":[\"filing\",\"organizing\"],\"char\":\"🗄\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"clipboard\":{\"keywords\":[\"stationery\",\"documents\"],\"char\":\"📋\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"spiral_notepad\":{\"keywords\":[\"memo\",\"stationery\"],\"char\":\"🗒\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"file_folder\":{\"keywords\":[\"documents\",\"business\",\"office\"],\"char\":\"📁\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"open_file_folder\":{\"keywords\":[\"documents\",\"load\"],\"char\":\"📂\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"card_index_dividers\":{\"keywords\":[\"organizing\",\"business\",\"stationery\"],\"char\":\"🗂\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"newspaper_roll\":{\"keywords\":[\"press\",\"headline\"],\"char\":\"🗞\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"newspaper\":{\"keywords\":[\"press\",\"headline\"],\"char\":\"📰\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"notebook\":{\"keywords\":[\"stationery\",\"record\",\"notes\",\"paper\",\"study\"],\"char\":\"📓\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"closed_book\":{\"keywords\":[\"read\",\"library\",\"knowledge\",\"textbook\",\"learn\"],\"char\":\"📕\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"green_book\":{\"keywords\":[\"read\",\"library\",\"knowledge\",\"study\"],\"char\":\"📗\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"blue_book\":{\"keywords\":[\"read\",\"library\",\"knowledge\",\"learn\",\"study\"],\"char\":\"📘\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"orange_book\":{\"keywords\":[\"read\",\"library\",\"knowledge\",\"textbook\",\"study\"],\"char\":\"📙\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"notebook_with_decorative_cover\":{\"keywords\":[\"classroom\",\"notes\",\"record\",\"paper\",\"study\"],\"char\":\"📔\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"ledger\":{\"keywords\":[\"notes\",\"paper\"],\"char\":\"📒\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"books\":{\"keywords\":[\"literature\",\"library\",\"study\"],\"char\":\"📚\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"open_book\":{\"keywords\":[\"book\",\"read\",\"library\",\"knowledge\",\"literature\",\"learn\",\"study\"],\"char\":\"📖\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"safety_pin\":{\"keywords\":[\"diaper\"],\"char\":\"🧷\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"link\":{\"keywords\":[\"rings\",\"url\"],\"char\":\"🔗\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"paperclip\":{\"keywords\":[\"documents\",\"stationery\"],\"char\":\"📎\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"paperclips\":{\"keywords\":[\"documents\",\"stationery\"],\"char\":\"🖇\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"scissors\":{\"keywords\":[\"stationery\",\"cut\"],\"char\":\"✂️\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"triangular_ruler\":{\"keywords\":[\"stationery\",\"math\",\"architect\",\"sketch\"],\"char\":\"📐\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"straight_ruler\":{\"keywords\":[\"stationery\",\"calculate\",\"length\",\"math\",\"school\",\"drawing\",\"architect\",\"sketch\"],\"char\":\"📏\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"abacus\":{\"keywords\":[\"calculation\"],\"char\":\"🧮\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"pushpin\":{\"keywords\":[\"stationery\",\"mark\",\"here\"],\"char\":\"📌\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"round_pushpin\":{\"keywords\":[\"stationery\",\"location\",\"map\",\"here\"],\"char\":\"📍\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"triangular_flag_on_post\":{\"keywords\":[\"mark\",\"milestone\",\"place\"],\"char\":\"🚩\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"white_flag\":{\"keywords\":[\"losing\",\"loser\",\"lost\",\"surrender\",\"give up\",\"fail\"],\"char\":\"🏳\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"black_flag\":{\"keywords\":[\"pirate\"],\"char\":\"🏴\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"rainbow_flag\":{\"keywords\":[\"flag\",\"rainbow\",\"pride\",\"gay\",\"lgbt\",\"glbt\",\"queer\",\"homosexual\",\"lesbian\",\"bisexual\",\"transgender\"],\"char\":\"🏳️‍🌈\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"closed_lock_with_key\":{\"keywords\":[\"security\",\"privacy\"],\"char\":\"🔐\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"lock\":{\"keywords\":[\"security\",\"password\",\"padlock\"],\"char\":\"🔒\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"unlock\":{\"keywords\":[\"privacy\",\"security\"],\"char\":\"🔓\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"lock_with_ink_pen\":{\"keywords\":[\"security\",\"secret\"],\"char\":\"🔏\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"pen\":{\"keywords\":[\"stationery\",\"writing\",\"write\"],\"char\":\"🖊\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"fountain_pen\":{\"keywords\":[\"stationery\",\"writing\",\"write\"],\"char\":\"🖋\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"black_nib\":{\"keywords\":[\"pen\",\"stationery\",\"writing\",\"write\"],\"char\":\"✒️\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"memo\":{\"keywords\":[\"write\",\"documents\",\"stationery\",\"pencil\",\"paper\",\"writing\",\"legal\",\"exam\",\"quiz\",\"test\",\"study\",\"compose\"],\"char\":\"📝\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"pencil2\":{\"keywords\":[\"stationery\",\"write\",\"paper\",\"writing\",\"school\",\"study\"],\"char\":\"✏️\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"crayon\":{\"keywords\":[\"drawing\",\"creativity\"],\"char\":\"🖍\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"paintbrush\":{\"keywords\":[\"drawing\",\"creativity\",\"art\"],\"char\":\"🖌\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"mag\":{\"keywords\":[\"search\",\"zoom\",\"find\",\"detective\"],\"char\":\"🔍\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"mag_right\":{\"keywords\":[\"search\",\"zoom\",\"find\",\"detective\"],\"char\":\"🔎\",\"fitzpatrick_scale\":false,\"category\":\"objects\"},\"heart\":{\"keywords\":[\"love\",\"like\",\"valentines\"],\"char\":\"❤️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"orange_heart\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"🧡\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"yellow_heart\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"💛\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"green_heart\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"💚\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"blue_heart\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"💙\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"purple_heart\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"💜\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_heart\":{\"keywords\":[\"evil\"],\"char\":\"🖤\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"broken_heart\":{\"keywords\":[\"sad\",\"sorry\",\"break\",\"heart\",\"heartbreak\"],\"char\":\"💔\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heavy_heart_exclamation\":{\"keywords\":[\"decoration\",\"love\"],\"char\":\"❣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"two_hearts\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\",\"heart\"],\"char\":\"💕\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"revolving_hearts\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"💞\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heartbeat\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\",\"pink\",\"heart\"],\"char\":\"💓\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heartpulse\":{\"keywords\":[\"like\",\"love\",\"affection\",\"valentines\",\"pink\"],\"char\":\"💗\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"sparkling_heart\":{\"keywords\":[\"love\",\"like\",\"affection\",\"valentines\"],\"char\":\"💖\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"cupid\":{\"keywords\":[\"love\",\"like\",\"heart\",\"affection\",\"valentines\"],\"char\":\"💘\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"gift_heart\":{\"keywords\":[\"love\",\"valentines\"],\"char\":\"💝\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heart_decoration\":{\"keywords\":[\"purple-square\",\"love\",\"like\"],\"char\":\"💟\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"peace_symbol\":{\"keywords\":[\"hippie\"],\"char\":\"☮\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"latin_cross\":{\"keywords\":[\"christianity\"],\"char\":\"✝\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"star_and_crescent\":{\"keywords\":[\"islam\"],\"char\":\"☪\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"om\":{\"keywords\":[\"hinduism\",\"buddhism\",\"sikhism\",\"jainism\"],\"char\":\"🕉\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"wheel_of_dharma\":{\"keywords\":[\"hinduism\",\"buddhism\",\"sikhism\",\"jainism\"],\"char\":\"☸\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"star_of_david\":{\"keywords\":[\"judaism\"],\"char\":\"✡\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"six_pointed_star\":{\"keywords\":[\"purple-square\",\"religion\",\"jewish\",\"hexagram\"],\"char\":\"🔯\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"menorah\":{\"keywords\":[\"hanukkah\",\"candles\",\"jewish\"],\"char\":\"🕎\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"yin_yang\":{\"keywords\":[\"balance\"],\"char\":\"☯\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"orthodox_cross\":{\"keywords\":[\"suppedaneum\",\"religion\"],\"char\":\"☦\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"place_of_worship\":{\"keywords\":[\"religion\",\"church\",\"temple\",\"prayer\"],\"char\":\"🛐\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"ophiuchus\":{\"keywords\":[\"sign\",\"purple-square\",\"constellation\",\"astrology\"],\"char\":\"⛎\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"aries\":{\"keywords\":[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],\"char\":\"♈\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"taurus\":{\"keywords\":[\"purple-square\",\"sign\",\"zodiac\",\"astrology\"],\"char\":\"♉\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"gemini\":{\"keywords\":[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],\"char\":\"♊\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"cancer\":{\"keywords\":[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],\"char\":\"♋\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"leo\":{\"keywords\":[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],\"char\":\"♌\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"virgo\":{\"keywords\":[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],\"char\":\"♍\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"libra\":{\"keywords\":[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],\"char\":\"♎\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"scorpius\":{\"keywords\":[\"sign\",\"zodiac\",\"purple-square\",\"astrology\",\"scorpio\"],\"char\":\"♏\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"sagittarius\":{\"keywords\":[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],\"char\":\"♐\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"capricorn\":{\"keywords\":[\"sign\",\"zodiac\",\"purple-square\",\"astrology\"],\"char\":\"♑\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"aquarius\":{\"keywords\":[\"sign\",\"purple-square\",\"zodiac\",\"astrology\"],\"char\":\"♒\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"pisces\":{\"keywords\":[\"purple-square\",\"sign\",\"zodiac\",\"astrology\"],\"char\":\"♓\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"id\":{\"keywords\":[\"purple-square\",\"words\"],\"char\":\"🆔\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"atom_symbol\":{\"keywords\":[\"science\",\"physics\",\"chemistry\"],\"char\":\"⚛\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u7a7a\":{\"keywords\":[\"kanji\",\"japanese\",\"chinese\",\"empty\",\"sky\",\"blue-square\"],\"char\":\"🈳\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u5272\":{\"keywords\":[\"cut\",\"divide\",\"chinese\",\"kanji\",\"pink-square\"],\"char\":\"🈹\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"radioactive\":{\"keywords\":[\"nuclear\",\"danger\"],\"char\":\"☢\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"biohazard\":{\"keywords\":[\"danger\"],\"char\":\"☣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"mobile_phone_off\":{\"keywords\":[\"mute\",\"orange-square\",\"silence\",\"quiet\"],\"char\":\"📴\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"vibration_mode\":{\"keywords\":[\"orange-square\",\"phone\"],\"char\":\"📳\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u6709\":{\"keywords\":[\"orange-square\",\"chinese\",\"have\",\"kanji\"],\"char\":\"🈶\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u7121\":{\"keywords\":[\"nothing\",\"chinese\",\"kanji\",\"japanese\",\"orange-square\"],\"char\":\"🈚\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u7533\":{\"keywords\":[\"chinese\",\"japanese\",\"kanji\",\"orange-square\"],\"char\":\"🈸\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u55b6\":{\"keywords\":[\"japanese\",\"opening hours\",\"orange-square\"],\"char\":\"🈺\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u6708\":{\"keywords\":[\"chinese\",\"month\",\"moon\",\"japanese\",\"orange-square\",\"kanji\"],\"char\":\"🈷️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"eight_pointed_black_star\":{\"keywords\":[\"orange-square\",\"shape\",\"polygon\"],\"char\":\"✴️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"vs\":{\"keywords\":[\"words\",\"orange-square\"],\"char\":\"🆚\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"accept\":{\"keywords\":[\"ok\",\"good\",\"chinese\",\"kanji\",\"agree\",\"yes\",\"orange-circle\"],\"char\":\"🉑\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_flower\":{\"keywords\":[\"japanese\",\"spring\"],\"char\":\"💮\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"ideograph_advantage\":{\"keywords\":[\"chinese\",\"kanji\",\"obtain\",\"get\",\"circle\"],\"char\":\"🉐\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"secret\":{\"keywords\":[\"privacy\",\"chinese\",\"sshh\",\"kanji\",\"red-circle\"],\"char\":\"㊙️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"congratulations\":{\"keywords\":[\"chinese\",\"kanji\",\"japanese\",\"red-circle\"],\"char\":\"㊗️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u5408\":{\"keywords\":[\"japanese\",\"chinese\",\"join\",\"kanji\",\"red-square\"],\"char\":\"🈴\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u6e80\":{\"keywords\":[\"full\",\"chinese\",\"japanese\",\"red-square\",\"kanji\"],\"char\":\"🈵\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u7981\":{\"keywords\":[\"kanji\",\"japanese\",\"chinese\",\"forbidden\",\"limit\",\"restricted\",\"red-square\"],\"char\":\"🈲\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"a\":{\"keywords\":[\"red-square\",\"alphabet\",\"letter\"],\"char\":\"🅰️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"b\":{\"keywords\":[\"red-square\",\"alphabet\",\"letter\"],\"char\":\"🅱️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"ab\":{\"keywords\":[\"red-square\",\"alphabet\"],\"char\":\"🆎\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"cl\":{\"keywords\":[\"alphabet\",\"words\",\"red-square\"],\"char\":\"🆑\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"o2\":{\"keywords\":[\"alphabet\",\"red-square\",\"letter\"],\"char\":\"🅾️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"sos\":{\"keywords\":[\"help\",\"red-square\",\"words\",\"emergency\",\"911\"],\"char\":\"🆘\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"no_entry\":{\"keywords\":[\"limit\",\"security\",\"privacy\",\"bad\",\"denied\",\"stop\",\"circle\"],\"char\":\"⛔\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"name_badge\":{\"keywords\":[\"fire\",\"forbid\"],\"char\":\"📛\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"no_entry_sign\":{\"keywords\":[\"forbid\",\"stop\",\"limit\",\"denied\",\"disallow\",\"circle\"],\"char\":\"🚫\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"x\":{\"keywords\":[\"no\",\"delete\",\"remove\",\"cancel\",\"red\"],\"char\":\"❌\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"o\":{\"keywords\":[\"circle\",\"round\"],\"char\":\"⭕\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"stop_sign\":{\"keywords\":[\"stop\"],\"char\":\"🛑\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"anger\":{\"keywords\":[\"angry\",\"mad\"],\"char\":\"💢\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"hotsprings\":{\"keywords\":[\"bath\",\"warm\",\"relax\"],\"char\":\"♨️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"no_pedestrians\":{\"keywords\":[\"rules\",\"crossing\",\"walking\",\"circle\"],\"char\":\"🚷\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"do_not_litter\":{\"keywords\":[\"trash\",\"bin\",\"garbage\",\"circle\"],\"char\":\"🚯\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"no_bicycles\":{\"keywords\":[\"cyclist\",\"prohibited\",\"circle\"],\"char\":\"🚳\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"non-potable_water\":{\"keywords\":[\"drink\",\"faucet\",\"tap\",\"circle\"],\"char\":\"🚱\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"underage\":{\"keywords\":[\"18\",\"drink\",\"pub\",\"night\",\"minor\",\"circle\"],\"char\":\"🔞\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"no_mobile_phones\":{\"keywords\":[\"iphone\",\"mute\",\"circle\"],\"char\":\"📵\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"exclamation\":{\"keywords\":[\"heavy_exclamation_mark\",\"danger\",\"surprise\",\"punctuation\",\"wow\",\"warning\"],\"char\":\"❗\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"grey_exclamation\":{\"keywords\":[\"surprise\",\"punctuation\",\"gray\",\"wow\",\"warning\"],\"char\":\"❕\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"question\":{\"keywords\":[\"doubt\",\"confused\"],\"char\":\"❓\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"grey_question\":{\"keywords\":[\"doubts\",\"gray\",\"huh\",\"confused\"],\"char\":\"❔\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"bangbang\":{\"keywords\":[\"exclamation\",\"surprise\"],\"char\":\"‼️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"interrobang\":{\"keywords\":[\"wat\",\"punctuation\",\"surprise\"],\"char\":\"⁉️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"low_brightness\":{\"keywords\":[\"sun\",\"afternoon\",\"warm\",\"summer\"],\"char\":\"🔅\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"high_brightness\":{\"keywords\":[\"sun\",\"light\"],\"char\":\"🔆\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"trident\":{\"keywords\":[\"weapon\",\"spear\"],\"char\":\"🔱\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"fleur_de_lis\":{\"keywords\":[\"decorative\",\"scout\"],\"char\":\"⚜\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"part_alternation_mark\":{\"keywords\":[\"graph\",\"presentation\",\"stats\",\"business\",\"economics\",\"bad\"],\"char\":\"〽️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"warning\":{\"keywords\":[\"exclamation\",\"wip\",\"alert\",\"error\",\"problem\",\"issue\"],\"char\":\"⚠️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"children_crossing\":{\"keywords\":[\"school\",\"warning\",\"danger\",\"sign\",\"driving\",\"yellow-diamond\"],\"char\":\"🚸\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"beginner\":{\"keywords\":[\"badge\",\"shield\"],\"char\":\"🔰\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"recycle\":{\"keywords\":[\"arrow\",\"environment\",\"garbage\",\"trash\"],\"char\":\"♻️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"u6307\":{\"keywords\":[\"chinese\",\"point\",\"green-square\",\"kanji\"],\"char\":\"🈯\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"chart\":{\"keywords\":[\"green-square\",\"graph\",\"presentation\",\"stats\"],\"char\":\"💹\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"sparkle\":{\"keywords\":[\"stars\",\"green-square\",\"awesome\",\"good\",\"fireworks\"],\"char\":\"❇️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"eight_spoked_asterisk\":{\"keywords\":[\"star\",\"sparkle\",\"green-square\"],\"char\":\"✳️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"negative_squared_cross_mark\":{\"keywords\":[\"x\",\"green-square\",\"no\",\"deny\"],\"char\":\"❎\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_check_mark\":{\"keywords\":[\"green-square\",\"ok\",\"agree\",\"vote\",\"election\",\"answer\",\"tick\"],\"char\":\"✅\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"diamond_shape_with_a_dot_inside\":{\"keywords\":[\"jewel\",\"blue\",\"gem\",\"crystal\",\"fancy\"],\"char\":\"💠\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"cyclone\":{\"keywords\":[\"weather\",\"swirl\",\"blue\",\"cloud\",\"vortex\",\"spiral\",\"whirlpool\",\"spin\",\"tornado\",\"hurricane\",\"typhoon\"],\"char\":\"🌀\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"loop\":{\"keywords\":[\"tape\",\"cassette\"],\"char\":\"➿\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"globe_with_meridians\":{\"keywords\":[\"earth\",\"international\",\"world\",\"internet\",\"interweb\",\"i18n\"],\"char\":\"🌐\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"m\":{\"keywords\":[\"alphabet\",\"blue-circle\",\"letter\"],\"char\":\"Ⓜ️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"atm\":{\"keywords\":[\"money\",\"sales\",\"cash\",\"blue-square\",\"payment\",\"bank\"],\"char\":\"🏧\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"sa\":{\"keywords\":[\"japanese\",\"blue-square\",\"katakana\"],\"char\":\"🈂️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"passport_control\":{\"keywords\":[\"custom\",\"blue-square\"],\"char\":\"🛂\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"customs\":{\"keywords\":[\"passport\",\"border\",\"blue-square\"],\"char\":\"🛃\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"baggage_claim\":{\"keywords\":[\"blue-square\",\"airport\",\"transport\"],\"char\":\"🛄\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"left_luggage\":{\"keywords\":[\"blue-square\",\"travel\"],\"char\":\"🛅\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"wheelchair\":{\"keywords\":[\"blue-square\",\"disabled\",\"a11y\",\"accessibility\"],\"char\":\"♿\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"no_smoking\":{\"keywords\":[\"cigarette\",\"blue-square\",\"smell\",\"smoke\"],\"char\":\"🚭\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"wc\":{\"keywords\":[\"toilet\",\"restroom\",\"blue-square\"],\"char\":\"🚾\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"parking\":{\"keywords\":[\"cars\",\"blue-square\",\"alphabet\",\"letter\"],\"char\":\"🅿️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"potable_water\":{\"keywords\":[\"blue-square\",\"liquid\",\"restroom\",\"cleaning\",\"faucet\"],\"char\":\"🚰\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"mens\":{\"keywords\":[\"toilet\",\"restroom\",\"wc\",\"blue-square\",\"gender\",\"male\"],\"char\":\"🚹\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"womens\":{\"keywords\":[\"purple-square\",\"woman\",\"female\",\"toilet\",\"loo\",\"restroom\",\"gender\"],\"char\":\"🚺\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"baby_symbol\":{\"keywords\":[\"orange-square\",\"child\"],\"char\":\"🚼\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"restroom\":{\"keywords\":[\"blue-square\",\"toilet\",\"refresh\",\"wc\",\"gender\"],\"char\":\"🚻\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"put_litter_in_its_place\":{\"keywords\":[\"blue-square\",\"sign\",\"human\",\"info\"],\"char\":\"🚮\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"cinema\":{\"keywords\":[\"blue-square\",\"record\",\"film\",\"movie\",\"curtain\",\"stage\",\"theater\"],\"char\":\"🎦\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"signal_strength\":{\"keywords\":[\"blue-square\",\"reception\",\"phone\",\"internet\",\"connection\",\"wifi\",\"bluetooth\",\"bars\"],\"char\":\"📶\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"koko\":{\"keywords\":[\"blue-square\",\"here\",\"katakana\",\"japanese\",\"destination\"],\"char\":\"🈁\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"ng\":{\"keywords\":[\"blue-square\",\"words\",\"shape\",\"icon\"],\"char\":\"🆖\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"ok\":{\"keywords\":[\"good\",\"agree\",\"yes\",\"blue-square\"],\"char\":\"🆗\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"up\":{\"keywords\":[\"blue-square\",\"above\",\"high\"],\"char\":\"🆙\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"cool\":{\"keywords\":[\"words\",\"blue-square\"],\"char\":\"🆒\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"new\":{\"keywords\":[\"blue-square\",\"words\",\"start\"],\"char\":\"🆕\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"free\":{\"keywords\":[\"blue-square\",\"words\"],\"char\":\"🆓\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"zero\":{\"keywords\":[\"0\",\"numbers\",\"blue-square\",\"null\"],\"char\":\"0️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"one\":{\"keywords\":[\"blue-square\",\"numbers\",\"1\"],\"char\":\"1️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"two\":{\"keywords\":[\"numbers\",\"2\",\"prime\",\"blue-square\"],\"char\":\"2️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"three\":{\"keywords\":[\"3\",\"numbers\",\"prime\",\"blue-square\"],\"char\":\"3️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"four\":{\"keywords\":[\"4\",\"numbers\",\"blue-square\"],\"char\":\"4️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"five\":{\"keywords\":[\"5\",\"numbers\",\"blue-square\",\"prime\"],\"char\":\"5️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"six\":{\"keywords\":[\"6\",\"numbers\",\"blue-square\"],\"char\":\"6️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"seven\":{\"keywords\":[\"7\",\"numbers\",\"blue-square\",\"prime\"],\"char\":\"7️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"eight\":{\"keywords\":[\"8\",\"blue-square\",\"numbers\"],\"char\":\"8️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"nine\":{\"keywords\":[\"blue-square\",\"numbers\",\"9\"],\"char\":\"9️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"keycap_ten\":{\"keywords\":[\"numbers\",\"10\",\"blue-square\"],\"char\":\"🔟\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"asterisk\":{\"keywords\":[\"star\",\"keycap\"],\"char\":\"*⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"eject_button\":{\"keywords\":[\"blue-square\"],\"char\":\"⏏️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_forward\":{\"keywords\":[\"blue-square\",\"right\",\"direction\",\"play\"],\"char\":\"▶️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"pause_button\":{\"keywords\":[\"pause\",\"blue-square\"],\"char\":\"⏸\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"next_track_button\":{\"keywords\":[\"forward\",\"next\",\"blue-square\"],\"char\":\"⏭\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"stop_button\":{\"keywords\":[\"blue-square\"],\"char\":\"⏹\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"record_button\":{\"keywords\":[\"blue-square\"],\"char\":\"⏺\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"play_or_pause_button\":{\"keywords\":[\"blue-square\",\"play\",\"pause\"],\"char\":\"⏯\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"previous_track_button\":{\"keywords\":[\"backward\"],\"char\":\"⏮\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"fast_forward\":{\"keywords\":[\"blue-square\",\"play\",\"speed\",\"continue\"],\"char\":\"⏩\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"rewind\":{\"keywords\":[\"play\",\"blue-square\"],\"char\":\"⏪\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"twisted_rightwards_arrows\":{\"keywords\":[\"blue-square\",\"shuffle\",\"music\",\"random\"],\"char\":\"🔀\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"repeat\":{\"keywords\":[\"loop\",\"record\"],\"char\":\"🔁\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"repeat_one\":{\"keywords\":[\"blue-square\",\"loop\"],\"char\":\"🔂\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_backward\":{\"keywords\":[\"blue-square\",\"left\",\"direction\"],\"char\":\"◀️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_up_small\":{\"keywords\":[\"blue-square\",\"triangle\",\"direction\",\"point\",\"forward\",\"top\"],\"char\":\"🔼\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_down_small\":{\"keywords\":[\"blue-square\",\"direction\",\"bottom\"],\"char\":\"🔽\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_double_up\":{\"keywords\":[\"blue-square\",\"direction\",\"top\"],\"char\":\"⏫\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_double_down\":{\"keywords\":[\"blue-square\",\"direction\",\"bottom\"],\"char\":\"⏬\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_right\":{\"keywords\":[\"blue-square\",\"next\"],\"char\":\"➡️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_left\":{\"keywords\":[\"blue-square\",\"previous\",\"back\"],\"char\":\"⬅️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_up\":{\"keywords\":[\"blue-square\",\"continue\",\"top\",\"direction\"],\"char\":\"⬆️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_down\":{\"keywords\":[\"blue-square\",\"direction\",\"bottom\"],\"char\":\"⬇️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_upper_right\":{\"keywords\":[\"blue-square\",\"point\",\"direction\",\"diagonal\",\"northeast\"],\"char\":\"↗️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_lower_right\":{\"keywords\":[\"blue-square\",\"direction\",\"diagonal\",\"southeast\"],\"char\":\"↘️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_lower_left\":{\"keywords\":[\"blue-square\",\"direction\",\"diagonal\",\"southwest\"],\"char\":\"↙️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_upper_left\":{\"keywords\":[\"blue-square\",\"point\",\"direction\",\"diagonal\",\"northwest\"],\"char\":\"↖️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_up_down\":{\"keywords\":[\"blue-square\",\"direction\",\"way\",\"vertical\"],\"char\":\"↕️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"left_right_arrow\":{\"keywords\":[\"shape\",\"direction\",\"horizontal\",\"sideways\"],\"char\":\"↔️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrows_counterclockwise\":{\"keywords\":[\"blue-square\",\"sync\",\"cycle\"],\"char\":\"🔄\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_right_hook\":{\"keywords\":[\"blue-square\",\"return\",\"rotate\",\"direction\"],\"char\":\"↪️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"leftwards_arrow_with_hook\":{\"keywords\":[\"back\",\"return\",\"blue-square\",\"undo\",\"enter\"],\"char\":\"↩️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_heading_up\":{\"keywords\":[\"blue-square\",\"direction\",\"top\"],\"char\":\"⤴️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrow_heading_down\":{\"keywords\":[\"blue-square\",\"direction\",\"bottom\"],\"char\":\"⤵️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"hash\":{\"keywords\":[\"symbol\",\"blue-square\",\"twitter\"],\"char\":\"#️⃣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"information_source\":{\"keywords\":[\"blue-square\",\"alphabet\",\"letter\"],\"char\":\"ℹ️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"abc\":{\"keywords\":[\"blue-square\",\"alphabet\"],\"char\":\"🔤\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"abcd\":{\"keywords\":[\"blue-square\",\"alphabet\"],\"char\":\"🔡\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"capital_abcd\":{\"keywords\":[\"alphabet\",\"words\",\"blue-square\"],\"char\":\"🔠\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"symbols\":{\"keywords\":[\"blue-square\",\"music\",\"note\",\"ampersand\",\"percent\",\"glyphs\",\"characters\"],\"char\":\"🔣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"musical_note\":{\"keywords\":[\"score\",\"tone\",\"sound\"],\"char\":\"🎵\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"notes\":{\"keywords\":[\"music\",\"score\"],\"char\":\"🎶\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"wavy_dash\":{\"keywords\":[\"draw\",\"line\",\"moustache\",\"mustache\",\"squiggle\",\"scribble\"],\"char\":\"〰️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"curly_loop\":{\"keywords\":[\"scribble\",\"draw\",\"shape\",\"squiggle\"],\"char\":\"➰\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heavy_check_mark\":{\"keywords\":[\"ok\",\"nike\",\"answer\",\"yes\",\"tick\"],\"char\":\"✔️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"arrows_clockwise\":{\"keywords\":[\"sync\",\"cycle\",\"round\",\"repeat\"],\"char\":\"🔃\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heavy_plus_sign\":{\"keywords\":[\"math\",\"calculation\",\"addition\",\"more\",\"increase\"],\"char\":\"➕\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heavy_minus_sign\":{\"keywords\":[\"math\",\"calculation\",\"subtract\",\"less\"],\"char\":\"➖\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heavy_division_sign\":{\"keywords\":[\"divide\",\"math\",\"calculation\"],\"char\":\"➗\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heavy_multiplication_x\":{\"keywords\":[\"math\",\"calculation\"],\"char\":\"✖️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"infinity\":{\"keywords\":[\"forever\"],\"char\":\"♾\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"heavy_dollar_sign\":{\"keywords\":[\"money\",\"sales\",\"payment\",\"currency\",\"buck\"],\"char\":\"💲\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"currency_exchange\":{\"keywords\":[\"money\",\"sales\",\"dollar\",\"travel\"],\"char\":\"💱\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"copyright\":{\"keywords\":[\"ip\",\"license\",\"circle\",\"law\",\"legal\"],\"char\":\"©️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"registered\":{\"keywords\":[\"alphabet\",\"circle\"],\"char\":\"®️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"tm\":{\"keywords\":[\"trademark\",\"brand\",\"law\",\"legal\"],\"char\":\"™️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"end\":{\"keywords\":[\"words\",\"arrow\"],\"char\":\"🔚\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"back\":{\"keywords\":[\"arrow\",\"words\",\"return\"],\"char\":\"🔙\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"on\":{\"keywords\":[\"arrow\",\"words\"],\"char\":\"🔛\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"top\":{\"keywords\":[\"words\",\"blue-square\"],\"char\":\"🔝\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"soon\":{\"keywords\":[\"arrow\",\"words\"],\"char\":\"🔜\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"ballot_box_with_check\":{\"keywords\":[\"ok\",\"agree\",\"confirm\",\"black-square\",\"vote\",\"election\",\"yes\",\"tick\"],\"char\":\"☑️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"radio_button\":{\"keywords\":[\"input\",\"old\",\"music\",\"circle\"],\"char\":\"🔘\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_circle\":{\"keywords\":[\"shape\",\"round\"],\"char\":\"⚪\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_circle\":{\"keywords\":[\"shape\",\"button\",\"round\"],\"char\":\"⚫\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"red_circle\":{\"keywords\":[\"shape\",\"error\",\"danger\"],\"char\":\"🔴\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"large_blue_circle\":{\"keywords\":[\"shape\",\"icon\",\"button\"],\"char\":\"🔵\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"small_orange_diamond\":{\"keywords\":[\"shape\",\"jewel\",\"gem\"],\"char\":\"🔸\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"small_blue_diamond\":{\"keywords\":[\"shape\",\"jewel\",\"gem\"],\"char\":\"🔹\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"large_orange_diamond\":{\"keywords\":[\"shape\",\"jewel\",\"gem\"],\"char\":\"🔶\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"large_blue_diamond\":{\"keywords\":[\"shape\",\"jewel\",\"gem\"],\"char\":\"🔷\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"small_red_triangle\":{\"keywords\":[\"shape\",\"direction\",\"up\",\"top\"],\"char\":\"🔺\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_small_square\":{\"keywords\":[\"shape\",\"icon\"],\"char\":\"▪️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_small_square\":{\"keywords\":[\"shape\",\"icon\"],\"char\":\"▫️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_large_square\":{\"keywords\":[\"shape\",\"icon\",\"button\"],\"char\":\"⬛\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_large_square\":{\"keywords\":[\"shape\",\"icon\",\"stone\",\"button\"],\"char\":\"⬜\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"small_red_triangle_down\":{\"keywords\":[\"shape\",\"direction\",\"bottom\"],\"char\":\"🔻\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_medium_square\":{\"keywords\":[\"shape\",\"button\",\"icon\"],\"char\":\"◼️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_medium_square\":{\"keywords\":[\"shape\",\"stone\",\"icon\"],\"char\":\"◻️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_medium_small_square\":{\"keywords\":[\"icon\",\"shape\",\"button\"],\"char\":\"◾\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_medium_small_square\":{\"keywords\":[\"shape\",\"stone\",\"icon\",\"button\"],\"char\":\"◽\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_square_button\":{\"keywords\":[\"shape\",\"input\",\"frame\"],\"char\":\"🔲\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"white_square_button\":{\"keywords\":[\"shape\",\"input\"],\"char\":\"🔳\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"speaker\":{\"keywords\":[\"sound\",\"volume\",\"silence\",\"broadcast\"],\"char\":\"🔈\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"sound\":{\"keywords\":[\"volume\",\"speaker\",\"broadcast\"],\"char\":\"🔉\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"loud_sound\":{\"keywords\":[\"volume\",\"noise\",\"noisy\",\"speaker\",\"broadcast\"],\"char\":\"🔊\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"mute\":{\"keywords\":[\"sound\",\"volume\",\"silence\",\"quiet\"],\"char\":\"🔇\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"mega\":{\"keywords\":[\"sound\",\"speaker\",\"volume\"],\"char\":\"📣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"loudspeaker\":{\"keywords\":[\"volume\",\"sound\"],\"char\":\"📢\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"bell\":{\"keywords\":[\"sound\",\"notification\",\"christmas\",\"xmas\",\"chime\"],\"char\":\"🔔\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"no_bell\":{\"keywords\":[\"sound\",\"volume\",\"mute\",\"quiet\",\"silent\"],\"char\":\"🔕\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"black_joker\":{\"keywords\":[\"poker\",\"cards\",\"game\",\"play\",\"magic\"],\"char\":\"🃏\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"mahjong\":{\"keywords\":[\"game\",\"play\",\"chinese\",\"kanji\"],\"char\":\"🀄\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"spades\":{\"keywords\":[\"poker\",\"cards\",\"suits\",\"magic\"],\"char\":\"♠️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clubs\":{\"keywords\":[\"poker\",\"cards\",\"magic\",\"suits\"],\"char\":\"♣️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"hearts\":{\"keywords\":[\"poker\",\"cards\",\"magic\",\"suits\"],\"char\":\"♥️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"diamonds\":{\"keywords\":[\"poker\",\"cards\",\"magic\",\"suits\"],\"char\":\"♦️\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"flower_playing_cards\":{\"keywords\":[\"game\",\"sunset\",\"red\"],\"char\":\"🎴\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"thought_balloon\":{\"keywords\":[\"bubble\",\"cloud\",\"speech\",\"thinking\",\"dream\"],\"char\":\"💭\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"right_anger_bubble\":{\"keywords\":[\"caption\",\"speech\",\"thinking\",\"mad\"],\"char\":\"🗯\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"speech_balloon\":{\"keywords\":[\"bubble\",\"words\",\"message\",\"talk\",\"chatting\"],\"char\":\"💬\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"left_speech_bubble\":{\"keywords\":[\"words\",\"message\",\"talk\",\"chatting\"],\"char\":\"🗨\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock1\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕐\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock2\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕑\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock3\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕒\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock4\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕓\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock5\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕔\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock6\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\",\"dawn\",\"dusk\"],\"char\":\"🕕\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock7\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕖\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock8\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕗\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock9\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕘\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock10\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕙\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock11\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕚\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock12\":{\"keywords\":[\"time\",\"noon\",\"midnight\",\"midday\",\"late\",\"early\",\"schedule\"],\"char\":\"🕛\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock130\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕜\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock230\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕝\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock330\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕞\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock430\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕟\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock530\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕠\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock630\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕡\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock730\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕢\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock830\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕣\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock930\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕤\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock1030\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕥\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock1130\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕦\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"clock1230\":{\"keywords\":[\"time\",\"late\",\"early\",\"schedule\"],\"char\":\"🕧\",\"fitzpatrick_scale\":false,\"category\":\"symbols\"},\"afghanistan\":{\"keywords\":[\"af\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"aland_islands\":{\"keywords\":[\"Åland\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇽\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"albania\":{\"keywords\":[\"al\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"algeria\":{\"keywords\":[\"dz\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇩🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"american_samoa\":{\"keywords\":[\"american\",\"ws\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"andorra\":{\"keywords\":[\"ad\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"angola\":{\"keywords\":[\"ao\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"anguilla\":{\"keywords\":[\"ai\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"antarctica\":{\"keywords\":[\"aq\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇶\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"antigua_barbuda\":{\"keywords\":[\"antigua\",\"barbuda\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"argentina\":{\"keywords\":[\"ar\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"armenia\":{\"keywords\":[\"am\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"aruba\":{\"keywords\":[\"aw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"australia\":{\"keywords\":[\"au\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"austria\":{\"keywords\":[\"at\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"azerbaijan\":{\"keywords\":[\"az\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bahamas\":{\"keywords\":[\"bs\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bahrain\":{\"keywords\":[\"bh\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bangladesh\":{\"keywords\":[\"bd\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"barbados\":{\"keywords\":[\"bb\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇧\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"belarus\":{\"keywords\":[\"by\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"belgium\":{\"keywords\":[\"be\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"belize\":{\"keywords\":[\"bz\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"benin\":{\"keywords\":[\"bj\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇯\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bermuda\":{\"keywords\":[\"bm\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bhutan\":{\"keywords\":[\"bt\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bolivia\":{\"keywords\":[\"bo\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"caribbean_netherlands\":{\"keywords\":[\"bonaire\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇶\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bosnia_herzegovina\":{\"keywords\":[\"bosnia\",\"herzegovina\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"botswana\":{\"keywords\":[\"bw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"brazil\":{\"keywords\":[\"br\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"british_indian_ocean_territory\":{\"keywords\":[\"british\",\"indian\",\"ocean\",\"territory\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"british_virgin_islands\":{\"keywords\":[\"british\",\"virgin\",\"islands\",\"bvi\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇻🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"brunei\":{\"keywords\":[\"bn\",\"darussalam\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"bulgaria\":{\"keywords\":[\"bg\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"burkina_faso\":{\"keywords\":[\"burkina\",\"faso\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"burundi\":{\"keywords\":[\"bi\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cape_verde\":{\"keywords\":[\"cabo\",\"verde\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇻\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cambodia\":{\"keywords\":[\"kh\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cameroon\":{\"keywords\":[\"cm\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"canada\":{\"keywords\":[\"ca\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"canary_islands\":{\"keywords\":[\"canary\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cayman_islands\":{\"keywords\":[\"cayman\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"central_african_republic\":{\"keywords\":[\"central\",\"african\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"chad\":{\"keywords\":[\"td\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"chile\":{\"keywords\":[\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cn\":{\"keywords\":[\"china\",\"chinese\",\"prc\",\"flag\",\"country\",\"nation\",\"banner\"],\"char\":\"🇨🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"christmas_island\":{\"keywords\":[\"christmas\",\"island\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇽\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cocos_islands\":{\"keywords\":[\"cocos\",\"keeling\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"colombia\":{\"keywords\":[\"co\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"comoros\":{\"keywords\":[\"km\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"congo_brazzaville\":{\"keywords\":[\"congo\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"congo_kinshasa\":{\"keywords\":[\"congo\",\"democratic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cook_islands\":{\"keywords\":[\"cook\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"costa_rica\":{\"keywords\":[\"costa\",\"rica\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"croatia\":{\"keywords\":[\"hr\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇭🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cuba\":{\"keywords\":[\"cu\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"curacao\":{\"keywords\":[\"curaçao\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cyprus\":{\"keywords\":[\"cy\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"czech_republic\":{\"keywords\":[\"cz\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"denmark\":{\"keywords\":[\"dk\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇩🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"djibouti\":{\"keywords\":[\"dj\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇩🇯\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"dominica\":{\"keywords\":[\"dm\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇩🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"dominican_republic\":{\"keywords\":[\"dominican\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇩🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"ecuador\":{\"keywords\":[\"ec\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇪🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"egypt\":{\"keywords\":[\"eg\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇪🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"el_salvador\":{\"keywords\":[\"el\",\"salvador\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇻\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"equatorial_guinea\":{\"keywords\":[\"equatorial\",\"gn\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇶\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"eritrea\":{\"keywords\":[\"er\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇪🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"estonia\":{\"keywords\":[\"ee\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇪🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"ethiopia\":{\"keywords\":[\"et\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇪🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"eu\":{\"keywords\":[\"european\",\"union\",\"flag\",\"banner\"],\"char\":\"🇪🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"falkland_islands\":{\"keywords\":[\"falkland\",\"islands\",\"malvinas\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇫🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"faroe_islands\":{\"keywords\":[\"faroe\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇫🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"fiji\":{\"keywords\":[\"fj\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇫🇯\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"finland\":{\"keywords\":[\"fi\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇫🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"fr\":{\"keywords\":[\"banner\",\"flag\",\"nation\",\"france\",\"french\",\"country\"],\"char\":\"🇫🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"french_guiana\":{\"keywords\":[\"french\",\"guiana\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"french_polynesia\":{\"keywords\":[\"french\",\"polynesia\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"french_southern_territories\":{\"keywords\":[\"french\",\"southern\",\"territories\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"gabon\":{\"keywords\":[\"ga\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"gambia\":{\"keywords\":[\"gm\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"georgia\":{\"keywords\":[\"ge\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"de\":{\"keywords\":[\"german\",\"nation\",\"flag\",\"country\",\"banner\"],\"char\":\"🇩🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"ghana\":{\"keywords\":[\"gh\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"gibraltar\":{\"keywords\":[\"gi\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"greece\":{\"keywords\":[\"gr\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"greenland\":{\"keywords\":[\"gl\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"grenada\":{\"keywords\":[\"gd\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"guadeloupe\":{\"keywords\":[\"gp\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇵\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"guam\":{\"keywords\":[\"gu\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"guatemala\":{\"keywords\":[\"gt\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"guernsey\":{\"keywords\":[\"gg\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"guinea\":{\"keywords\":[\"gn\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"guinea_bissau\":{\"keywords\":[\"gw\",\"bissau\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"guyana\":{\"keywords\":[\"gy\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"haiti\":{\"keywords\":[\"ht\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇭🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"honduras\":{\"keywords\":[\"hn\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇭🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"hong_kong\":{\"keywords\":[\"hong\",\"kong\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇭🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"hungary\":{\"keywords\":[\"hu\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇭🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"iceland\":{\"keywords\":[\"is\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"india\":{\"keywords\":[\"in\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"indonesia\":{\"keywords\":[\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"iran\":{\"keywords\":[\"iran,\",\"islamic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"iraq\":{\"keywords\":[\"iq\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇶\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"ireland\":{\"keywords\":[\"ie\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"isle_of_man\":{\"keywords\":[\"isle\",\"man\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"israel\":{\"keywords\":[\"il\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"it\":{\"keywords\":[\"italy\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇮🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"cote_divoire\":{\"keywords\":[\"ivory\",\"coast\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"jamaica\":{\"keywords\":[\"jm\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇯🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"jp\":{\"keywords\":[\"japanese\",\"nation\",\"flag\",\"country\",\"banner\"],\"char\":\"🇯🇵\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"jersey\":{\"keywords\":[\"je\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇯🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"jordan\":{\"keywords\":[\"jo\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇯🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"kazakhstan\":{\"keywords\":[\"kz\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"kenya\":{\"keywords\":[\"ke\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"kiribati\":{\"keywords\":[\"ki\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"kosovo\":{\"keywords\":[\"xk\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇽🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"kuwait\":{\"keywords\":[\"kw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"kyrgyzstan\":{\"keywords\":[\"kg\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"laos\":{\"keywords\":[\"lao\",\"democratic\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"latvia\":{\"keywords\":[\"lv\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇻\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"lebanon\":{\"keywords\":[\"lb\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇧\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"lesotho\":{\"keywords\":[\"ls\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"liberia\":{\"keywords\":[\"lr\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"libya\":{\"keywords\":[\"ly\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"liechtenstein\":{\"keywords\":[\"li\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"lithuania\":{\"keywords\":[\"lt\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"luxembourg\":{\"keywords\":[\"lu\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"macau\":{\"keywords\":[\"macao\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"macedonia\":{\"keywords\":[\"macedonia,\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"madagascar\":{\"keywords\":[\"mg\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"malawi\":{\"keywords\":[\"mw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"malaysia\":{\"keywords\":[\"my\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"maldives\":{\"keywords\":[\"mv\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇻\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"mali\":{\"keywords\":[\"ml\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"malta\":{\"keywords\":[\"mt\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"marshall_islands\":{\"keywords\":[\"marshall\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"martinique\":{\"keywords\":[\"mq\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇶\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"mauritania\":{\"keywords\":[\"mr\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"mauritius\":{\"keywords\":[\"mu\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"mayotte\":{\"keywords\":[\"yt\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇾🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"mexico\":{\"keywords\":[\"mx\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇽\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"micronesia\":{\"keywords\":[\"micronesia,\",\"federated\",\"states\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇫🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"moldova\":{\"keywords\":[\"moldova,\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"monaco\":{\"keywords\":[\"mc\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"mongolia\":{\"keywords\":[\"mn\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"montenegro\":{\"keywords\":[\"me\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"montserrat\":{\"keywords\":[\"ms\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"morocco\":{\"keywords\":[\"ma\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"mozambique\":{\"keywords\":[\"mz\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"myanmar\":{\"keywords\":[\"mm\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"namibia\":{\"keywords\":[\"na\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"nauru\":{\"keywords\":[\"nr\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"nepal\":{\"keywords\":[\"np\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇵\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"netherlands\":{\"keywords\":[\"nl\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"new_caledonia\":{\"keywords\":[\"new\",\"caledonia\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"new_zealand\":{\"keywords\":[\"new\",\"zealand\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"nicaragua\":{\"keywords\":[\"ni\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"niger\":{\"keywords\":[\"ne\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"nigeria\":{\"keywords\":[\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"niue\":{\"keywords\":[\"nu\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"norfolk_island\":{\"keywords\":[\"norfolk\",\"island\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"northern_mariana_islands\":{\"keywords\":[\"northern\",\"mariana\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇲🇵\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"north_korea\":{\"keywords\":[\"north\",\"korea\",\"nation\",\"flag\",\"country\",\"banner\"],\"char\":\"🇰🇵\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"norway\":{\"keywords\":[\"no\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇳🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"oman\":{\"keywords\":[\"om_symbol\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇴🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"pakistan\":{\"keywords\":[\"pk\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"palau\":{\"keywords\":[\"pw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"palestinian_territories\":{\"keywords\":[\"palestine\",\"palestinian\",\"territories\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"panama\":{\"keywords\":[\"pa\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"papua_new_guinea\":{\"keywords\":[\"papua\",\"new\",\"guinea\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"paraguay\":{\"keywords\":[\"py\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"peru\":{\"keywords\":[\"pe\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"philippines\":{\"keywords\":[\"ph\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"pitcairn_islands\":{\"keywords\":[\"pitcairn\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"poland\":{\"keywords\":[\"pl\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"portugal\":{\"keywords\":[\"pt\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"puerto_rico\":{\"keywords\":[\"puerto\",\"rico\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"qatar\":{\"keywords\":[\"qa\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇶🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"reunion\":{\"keywords\":[\"réunion\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇷🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"romania\":{\"keywords\":[\"ro\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇷🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"ru\":{\"keywords\":[\"russian\",\"federation\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇷🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"rwanda\":{\"keywords\":[\"rw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇷🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"st_barthelemy\":{\"keywords\":[\"saint\",\"barthélemy\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇧🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"st_helena\":{\"keywords\":[\"saint\",\"helena\",\"ascension\",\"tristan\",\"cunha\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"st_kitts_nevis\":{\"keywords\":[\"saint\",\"kitts\",\"nevis\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇰🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"st_lucia\":{\"keywords\":[\"saint\",\"lucia\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"st_pierre_miquelon\":{\"keywords\":[\"saint\",\"pierre\",\"miquelon\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇵🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"st_vincent_grenadines\":{\"keywords\":[\"saint\",\"vincent\",\"grenadines\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇻🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"samoa\":{\"keywords\":[\"ws\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇼🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"san_marino\":{\"keywords\":[\"san\",\"marino\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"sao_tome_principe\":{\"keywords\":[\"sao\",\"tome\",\"principe\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"saudi_arabia\":{\"keywords\":[\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"senegal\":{\"keywords\":[\"sn\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"serbia\":{\"keywords\":[\"rs\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇷🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"seychelles\":{\"keywords\":[\"sc\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"sierra_leone\":{\"keywords\":[\"sierra\",\"leone\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"singapore\":{\"keywords\":[\"sg\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"sint_maarten\":{\"keywords\":[\"sint\",\"maarten\",\"dutch\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇽\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"slovakia\":{\"keywords\":[\"sk\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"slovenia\":{\"keywords\":[\"si\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"solomon_islands\":{\"keywords\":[\"solomon\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇧\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"somalia\":{\"keywords\":[\"so\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"south_africa\":{\"keywords\":[\"south\",\"africa\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇿🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"south_georgia_south_sandwich_islands\":{\"keywords\":[\"south\",\"georgia\",\"sandwich\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇬🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"kr\":{\"keywords\":[\"south\",\"korea\",\"nation\",\"flag\",\"country\",\"banner\"],\"char\":\"🇰🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"south_sudan\":{\"keywords\":[\"south\",\"sd\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"es\":{\"keywords\":[\"spain\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇪🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"sri_lanka\":{\"keywords\":[\"sri\",\"lanka\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇱🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"sudan\":{\"keywords\":[\"sd\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇩\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"suriname\":{\"keywords\":[\"sr\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"swaziland\":{\"keywords\":[\"sz\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"sweden\":{\"keywords\":[\"se\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"switzerland\":{\"keywords\":[\"ch\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇨🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"syria\":{\"keywords\":[\"syrian\",\"arab\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇸🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"taiwan\":{\"keywords\":[\"tw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"tajikistan\":{\"keywords\":[\"tj\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇯\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"tanzania\":{\"keywords\":[\"tanzania,\",\"united\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"thailand\":{\"keywords\":[\"th\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"timor_leste\":{\"keywords\":[\"timor\",\"leste\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇱\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"togo\":{\"keywords\":[\"tg\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"tokelau\":{\"keywords\":[\"tk\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇰\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"tonga\":{\"keywords\":[\"to\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇴\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"trinidad_tobago\":{\"keywords\":[\"trinidad\",\"tobago\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇹\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"tunisia\":{\"keywords\":[\"tn\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"tr\":{\"keywords\":[\"turkey\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇷\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"turkmenistan\":{\"keywords\":[\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"turks_caicos_islands\":{\"keywords\":[\"turks\",\"caicos\",\"islands\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇨\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"tuvalu\":{\"keywords\":[\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇹🇻\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"uganda\":{\"keywords\":[\"ug\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇺🇬\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"ukraine\":{\"keywords\":[\"ua\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇺🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"united_arab_emirates\":{\"keywords\":[\"united\",\"arab\",\"emirates\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇦🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"uk\":{\"keywords\":[\"united\",\"kingdom\",\"great\",\"britain\",\"northern\",\"ireland\",\"flag\",\"nation\",\"country\",\"banner\",\"british\",\"UK\",\"english\",\"england\",\"union jack\"],\"char\":\"🇬🇧\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"england\":{\"keywords\":[\"flag\",\"english\"],\"char\":\"🏴󠁧󠁢󠁥󠁮󠁧󠁿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"scotland\":{\"keywords\":[\"flag\",\"scottish\"],\"char\":\"🏴󠁧󠁢󠁳󠁣󠁴󠁿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"wales\":{\"keywords\":[\"flag\",\"welsh\"],\"char\":\"🏴󠁧󠁢󠁷󠁬󠁳󠁿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"us\":{\"keywords\":[\"united\",\"states\",\"america\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇺🇸\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"us_virgin_islands\":{\"keywords\":[\"virgin\",\"islands\",\"us\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇻🇮\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"uruguay\":{\"keywords\":[\"uy\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇺🇾\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"uzbekistan\":{\"keywords\":[\"uz\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇺🇿\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"vanuatu\":{\"keywords\":[\"vu\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇻🇺\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"vatican_city\":{\"keywords\":[\"vatican\",\"city\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇻🇦\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"venezuela\":{\"keywords\":[\"ve\",\"bolivarian\",\"republic\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇻🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"vietnam\":{\"keywords\":[\"viet\",\"nam\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇻🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"wallis_futuna\":{\"keywords\":[\"wallis\",\"futuna\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇼🇫\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"western_sahara\":{\"keywords\":[\"western\",\"sahara\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇪🇭\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"yemen\":{\"keywords\":[\"ye\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇾🇪\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"zambia\":{\"keywords\":[\"zm\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇿🇲\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"zimbabwe\":{\"keywords\":[\"zw\",\"flag\",\"nation\",\"country\",\"banner\"],\"char\":\"🇿🇼\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"united_nations\":{\"keywords\":[\"un\",\"flag\",\"banner\"],\"char\":\"🇺🇳\",\"fitzpatrick_scale\":false,\"category\":\"flags\"},\"pirate_flag\":{\"keywords\":[\"skull\",\"crossbones\",\"flag\",\"banner\"],\"char\":\"🏴‍☠️\",\"fitzpatrick_scale\":false,\"category\":\"flags\"}}");

/***/ }),

/***/ "./node_modules/emojilib/index.js":
/*!****************************************!*\
  !*** ./node_modules/emojilib/index.js ***!
  \****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

module.exports = {
  lib: __webpack_require__(/*! ./emojis */ "./node_modules/emojilib/emojis.json"),
  ordered: __webpack_require__(/*! ./ordered */ "./node_modules/emojilib/ordered.json"),
  fitzpatrick_scale_modifiers: ["🏻", "🏼", "🏽", "🏾", "🏿"]
}


/***/ }),

/***/ "./node_modules/emojilib/ordered.json":
/*!********************************************!*\
  !*** ./node_modules/emojilib/ordered.json ***!
  \********************************************/
/*! exports provided: 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, 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, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, default */
/***/ (function(module) {

module.exports = JSON.parse("[\"grinning\",\"smiley\",\"smile\",\"grin\",\"laughing\",\"sweat_smile\",\"joy\",\"rofl\",\"relaxed\",\"blush\",\"innocent\",\"slightly_smiling_face\",\"upside_down_face\",\"wink\",\"relieved\",\"heart_eyes\",\"smiling_face_with_three_hearts\",\"kissing_heart\",\"kissing\",\"kissing_smiling_eyes\",\"kissing_closed_eyes\",\"yum\",\"stuck_out_tongue\",\"stuck_out_tongue_closed_eyes\",\"stuck_out_tongue_winking_eye\",\"zany\",\"raised_eyebrow\",\"monocle\",\"nerd_face\",\"sunglasses\",\"star_struck\",\"partying\",\"smirk\",\"unamused\",\"disappointed\",\"pensive\",\"worried\",\"confused\",\"slightly_frowning_face\",\"frowning_face\",\"persevere\",\"confounded\",\"tired_face\",\"weary\",\"pleading\",\"cry\",\"sob\",\"triumph\",\"angry\",\"rage\",\"symbols_over_mouth\",\"exploding_head\",\"flushed\",\"hot\",\"cold\",\"scream\",\"fearful\",\"cold_sweat\",\"disappointed_relieved\",\"sweat\",\"hugs\",\"thinking\",\"hand_over_mouth\",\"shushing\",\"lying_face\",\"no_mouth\",\"neutral_face\",\"expressionless\",\"grimacing\",\"roll_eyes\",\"hushed\",\"frowning\",\"anguished\",\"open_mouth\",\"astonished\",\"sleeping\",\"drooling_face\",\"sleepy\",\"dizzy_face\",\"zipper_mouth_face\",\"woozy\",\"nauseated_face\",\"vomiting\",\"sneezing_face\",\"mask\",\"face_with_thermometer\",\"face_with_head_bandage\",\"money_mouth_face\",\"cowboy_hat_face\",\"smiling_imp\",\"imp\",\"japanese_ogre\",\"japanese_goblin\",\"clown_face\",\"poop\",\"ghost\",\"skull\",\"skull_and_crossbones\",\"alien\",\"space_invader\",\"robot\",\"jack_o_lantern\",\"smiley_cat\",\"smile_cat\",\"joy_cat\",\"heart_eyes_cat\",\"smirk_cat\",\"kissing_cat\",\"scream_cat\",\"crying_cat_face\",\"pouting_cat\",\"palms_up\",\"open_hands\",\"raised_hands\",\"clap\",\"handshake\",\"+1\",\"-1\",\"facepunch\",\"fist\",\"fist_left\",\"fist_right\",\"crossed_fingers\",\"v\",\"love_you\",\"metal\",\"ok_hand\",\"point_left\",\"point_right\",\"point_up\",\"point_down\",\"point_up_2\",\"raised_hand\",\"raised_back_of_hand\",\"raised_hand_with_fingers_splayed\",\"vulcan_salute\",\"wave\",\"call_me_hand\",\"muscle\",\"fu\",\"writing_hand\",\"pray\",\"foot\",\"leg\",\"ring\",\"lipstick\",\"kiss\",\"lips\",\"tooth\",\"tongue\",\"ear\",\"nose\",\"footprints\",\"eye\",\"eyes\",\"brain\",\"speaking_head\",\"bust_in_silhouette\",\"busts_in_silhouette\",\"baby\",\"girl\",\"child\",\"boy\",\"woman\",\"adult\",\"man\",\"blonde_woman\",\"blonde_man\",\"bearded_person\",\"older_woman\",\"older_adult\",\"older_man\",\"man_with_gua_pi_mao\",\"woman_with_headscarf\",\"woman_with_turban\",\"man_with_turban\",\"policewoman\",\"policeman\",\"construction_worker_woman\",\"construction_worker_man\",\"guardswoman\",\"guardsman\",\"female_detective\",\"male_detective\",\"woman_health_worker\",\"man_health_worker\",\"woman_farmer\",\"man_farmer\",\"woman_cook\",\"man_cook\",\"woman_student\",\"man_student\",\"woman_singer\",\"man_singer\",\"woman_teacher\",\"man_teacher\",\"woman_factory_worker\",\"man_factory_worker\",\"woman_technologist\",\"man_technologist\",\"woman_office_worker\",\"man_office_worker\",\"woman_mechanic\",\"man_mechanic\",\"woman_scientist\",\"man_scientist\",\"woman_artist\",\"man_artist\",\"woman_firefighter\",\"man_firefighter\",\"woman_pilot\",\"man_pilot\",\"woman_astronaut\",\"man_astronaut\",\"woman_judge\",\"man_judge\",\"bride_with_veil\",\"man_in_tuxedo\",\"princess\",\"prince\",\"woman_superhero\",\"man_superhero\",\"woman_supervillain\",\"man_supervillain\",\"mrs_claus\",\"santa\",\"sorceress\",\"wizard\",\"woman_elf\",\"man_elf\",\"woman_vampire\",\"man_vampire\",\"woman_zombie\",\"man_zombie\",\"woman_genie\",\"man_genie\",\"mermaid\",\"merman\",\"woman_fairy\",\"man_fairy\",\"angel\",\"pregnant_woman\",\"breastfeeding\",\"bowing_woman\",\"bowing_man\",\"tipping_hand_woman\",\"tipping_hand_man\",\"no_good_woman\",\"no_good_man\",\"ok_woman\",\"ok_man\",\"raising_hand_woman\",\"raising_hand_man\",\"woman_facepalming\",\"man_facepalming\",\"woman_shrugging\",\"man_shrugging\",\"pouting_woman\",\"pouting_man\",\"frowning_woman\",\"frowning_man\",\"haircut_woman\",\"haircut_man\",\"massage_woman\",\"massage_man\",\"woman_in_steamy_room\",\"man_in_steamy_room\",\"nail_care\",\"selfie\",\"dancer\",\"man_dancing\",\"dancing_women\",\"dancing_men\",\"business_suit_levitating\",\"walking_woman\",\"walking_man\",\"running_woman\",\"running_man\",\"couple\",\"two_women_holding_hands\",\"two_men_holding_hands\",\"couple_with_heart_woman_man\",\"couple_with_heart_woman_woman\",\"couple_with_heart_man_man\",\"couplekiss_man_woman\",\"couplekiss_woman_woman\",\"couplekiss_man_man\",\"family_man_woman_boy\",\"family_man_woman_girl\",\"family_man_woman_girl_boy\",\"family_man_woman_boy_boy\",\"family_man_woman_girl_girl\",\"family_woman_woman_boy\",\"family_woman_woman_girl\",\"family_woman_woman_girl_boy\",\"family_woman_woman_boy_boy\",\"family_woman_woman_girl_girl\",\"family_man_man_boy\",\"family_man_man_girl\",\"family_man_man_girl_boy\",\"family_man_man_boy_boy\",\"family_man_man_girl_girl\",\"family_woman_boy\",\"family_woman_girl\",\"family_woman_girl_boy\",\"family_woman_boy_boy\",\"family_woman_girl_girl\",\"family_man_boy\",\"family_man_girl\",\"family_man_girl_boy\",\"family_man_boy_boy\",\"family_man_girl_girl\",\"yarn\",\"thread\",\"coat\",\"labcoat\",\"womans_clothes\",\"tshirt\",\"jeans\",\"necktie\",\"dress\",\"bikini\",\"kimono\",\"flat_shoe\",\"high_heel\",\"sandal\",\"boot\",\"mans_shoe\",\"athletic_shoe\",\"hiking_boot\",\"socks\",\"gloves\",\"scarf\",\"tophat\",\"billed_hat\",\"womans_hat\",\"mortar_board\",\"rescue_worker_helmet\",\"crown\",\"pouch\",\"purse\",\"handbag\",\"briefcase\",\"school_satchel\",\"luggage\",\"eyeglasses\",\"dark_sunglasses\",\"goggles\",\"closed_umbrella\",\"dog\",\"cat\",\"mouse\",\"hamster\",\"rabbit\",\"fox_face\",\"bear\",\"panda_face\",\"koala\",\"tiger\",\"lion\",\"cow\",\"pig\",\"pig_nose\",\"frog\",\"monkey_face\",\"see_no_evil\",\"hear_no_evil\",\"speak_no_evil\",\"monkey\",\"chicken\",\"penguin\",\"bird\",\"baby_chick\",\"hatching_chick\",\"hatched_chick\",\"duck\",\"eagle\",\"owl\",\"bat\",\"wolf\",\"boar\",\"horse\",\"unicorn\",\"honeybee\",\"bug\",\"butterfly\",\"snail\",\"shell\",\"beetle\",\"ant\",\"mosquito\",\"grasshopper\",\"spider\",\"spider_web\",\"scorpion\",\"turtle\",\"snake\",\"lizard\",\"t-rex\",\"sauropod\",\"octopus\",\"squid\",\"shrimp\",\"lobster\",\"crab\",\"blowfish\",\"tropical_fish\",\"fish\",\"dolphin\",\"whale\",\"whale2\",\"shark\",\"crocodile\",\"tiger2\",\"leopard\",\"zebra\",\"gorilla\",\"elephant\",\"hippopotamus\",\"rhinoceros\",\"dromedary_camel\",\"giraffe\",\"kangaroo\",\"camel\",\"water_buffalo\",\"ox\",\"cow2\",\"racehorse\",\"pig2\",\"ram\",\"sheep\",\"llama\",\"goat\",\"deer\",\"dog2\",\"poodle\",\"cat2\",\"rooster\",\"turkey\",\"peacock\",\"parrot\",\"swan\",\"dove\",\"rabbit2\",\"raccoon\",\"badger\",\"rat\",\"mouse2\",\"chipmunk\",\"hedgehog\",\"paw_prints\",\"dragon\",\"dragon_face\",\"cactus\",\"christmas_tree\",\"evergreen_tree\",\"deciduous_tree\",\"palm_tree\",\"seedling\",\"herb\",\"shamrock\",\"four_leaf_clover\",\"bamboo\",\"tanabata_tree\",\"leaves\",\"fallen_leaf\",\"maple_leaf\",\"ear_of_rice\",\"hibiscus\",\"sunflower\",\"rose\",\"wilted_flower\",\"tulip\",\"blossom\",\"cherry_blossom\",\"bouquet\",\"mushroom\",\"earth_americas\",\"earth_africa\",\"earth_asia\",\"full_moon\",\"waning_gibbous_moon\",\"last_quarter_moon\",\"waning_crescent_moon\",\"new_moon\",\"waxing_crescent_moon\",\"first_quarter_moon\",\"waxing_gibbous_moon\",\"new_moon_with_face\",\"full_moon_with_face\",\"first_quarter_moon_with_face\",\"last_quarter_moon_with_face\",\"sun_with_face\",\"crescent_moon\",\"star\",\"star2\",\"dizzy\",\"sparkles\",\"comet\",\"sunny\",\"sun_behind_small_cloud\",\"partly_sunny\",\"sun_behind_large_cloud\",\"sun_behind_rain_cloud\",\"cloud\",\"cloud_with_rain\",\"cloud_with_lightning_and_rain\",\"cloud_with_lightning\",\"zap\",\"fire\",\"boom\",\"snowflake\",\"cloud_with_snow\",\"snowman\",\"snowman_with_snow\",\"wind_face\",\"dash\",\"tornado\",\"fog\",\"open_umbrella\",\"umbrella\",\"droplet\",\"sweat_drops\",\"ocean\",\"green_apple\",\"apple\",\"pear\",\"tangerine\",\"lemon\",\"banana\",\"watermelon\",\"grapes\",\"strawberry\",\"melon\",\"cherries\",\"peach\",\"mango\",\"pineapple\",\"coconut\",\"kiwi_fruit\",\"tomato\",\"eggplant\",\"avocado\",\"broccoli\",\"leafy_greens\",\"cucumber\",\"hot_pepper\",\"corn\",\"carrot\",\"potato\",\"sweet_potato\",\"croissant\",\"bagel\",\"bread\",\"baguette_bread\",\"pretzel\",\"cheese\",\"egg\",\"fried_egg\",\"pancakes\",\"bacon\",\"steak\",\"poultry_leg\",\"meat_on_bone\",\"bone\",\"hotdog\",\"hamburger\",\"fries\",\"pizza\",\"sandwich\",\"stuffed_flatbread\",\"taco\",\"burrito\",\"green_salad\",\"shallow_pan_of_food\",\"canned_food\",\"spaghetti\",\"ramen\",\"stew\",\"curry\",\"sushi\",\"bento\",\"fried_shrimp\",\"rice_ball\",\"rice\",\"rice_cracker\",\"fish_cake\",\"fortune_cookie\",\"moon_cake\",\"oden\",\"dango\",\"shaved_ice\",\"ice_cream\",\"icecream\",\"pie\",\"cupcake\",\"cake\",\"birthday\",\"custard\",\"lollipop\",\"candy\",\"chocolate_bar\",\"popcorn\",\"doughnut\",\"dumpling\",\"cookie\",\"chestnut\",\"peanuts\",\"honey_pot\",\"milk_glass\",\"baby_bottle\",\"coffee\",\"tea\",\"cup_with_straw\",\"sake\",\"beer\",\"beers\",\"clinking_glasses\",\"wine_glass\",\"tumbler_glass\",\"cocktail\",\"tropical_drink\",\"champagne\",\"spoon\",\"fork_and_knife\",\"plate_with_cutlery\",\"bowl_with_spoon\",\"takeout_box\",\"chopsticks\",\"salt\",\"soccer\",\"basketball\",\"football\",\"baseball\",\"softball\",\"tennis\",\"volleyball\",\"rugby_football\",\"flying_disc\",\"8ball\",\"golf\",\"golfing_woman\",\"golfing_man\",\"ping_pong\",\"badminton\",\"goal_net\",\"ice_hockey\",\"field_hockey\",\"lacrosse\",\"cricket\",\"ski\",\"skier\",\"snowboarder\",\"person_fencing\",\"women_wrestling\",\"men_wrestling\",\"woman_cartwheeling\",\"man_cartwheeling\",\"woman_playing_handball\",\"man_playing_handball\",\"ice_skate\",\"curling_stone\",\"skateboard\",\"sled\",\"bow_and_arrow\",\"fishing_pole_and_fish\",\"boxing_glove\",\"martial_arts_uniform\",\"rowing_woman\",\"rowing_man\",\"climbing_woman\",\"climbing_man\",\"swimming_woman\",\"swimming_man\",\"woman_playing_water_polo\",\"man_playing_water_polo\",\"woman_in_lotus_position\",\"man_in_lotus_position\",\"surfing_woman\",\"surfing_man\",\"basketball_woman\",\"basketball_man\",\"weight_lifting_woman\",\"weight_lifting_man\",\"biking_woman\",\"biking_man\",\"mountain_biking_woman\",\"mountain_biking_man\",\"horse_racing\",\"trophy\",\"running_shirt_with_sash\",\"medal_sports\",\"medal_military\",\"1st_place_medal\",\"2nd_place_medal\",\"3rd_place_medal\",\"reminder_ribbon\",\"rosette\",\"ticket\",\"tickets\",\"performing_arts\",\"art\",\"circus_tent\",\"woman_juggling\",\"man_juggling\",\"microphone\",\"headphones\",\"musical_score\",\"musical_keyboard\",\"drum\",\"saxophone\",\"trumpet\",\"guitar\",\"violin\",\"clapper\",\"video_game\",\"dart\",\"game_die\",\"chess_pawn\",\"slot_machine\",\"jigsaw\",\"bowling\",\"red_car\",\"taxi\",\"blue_car\",\"bus\",\"trolleybus\",\"racing_car\",\"police_car\",\"ambulance\",\"fire_engine\",\"minibus\",\"truck\",\"articulated_lorry\",\"tractor\",\"kick_scooter\",\"motorcycle\",\"bike\",\"motor_scooter\",\"rotating_light\",\"oncoming_police_car\",\"oncoming_bus\",\"oncoming_automobile\",\"oncoming_taxi\",\"aerial_tramway\",\"mountain_cableway\",\"suspension_railway\",\"railway_car\",\"train\",\"monorail\",\"bullettrain_side\",\"bullettrain_front\",\"light_rail\",\"mountain_railway\",\"steam_locomotive\",\"train2\",\"metro\",\"tram\",\"station\",\"flying_saucer\",\"helicopter\",\"small_airplane\",\"airplane\",\"flight_departure\",\"flight_arrival\",\"sailboat\",\"motor_boat\",\"speedboat\",\"ferry\",\"passenger_ship\",\"rocket\",\"artificial_satellite\",\"seat\",\"canoe\",\"anchor\",\"construction\",\"fuelpump\",\"busstop\",\"vertical_traffic_light\",\"traffic_light\",\"ship\",\"ferris_wheel\",\"roller_coaster\",\"carousel_horse\",\"building_construction\",\"foggy\",\"tokyo_tower\",\"factory\",\"fountain\",\"rice_scene\",\"mountain\",\"mountain_snow\",\"mount_fuji\",\"volcano\",\"japan\",\"camping\",\"tent\",\"national_park\",\"motorway\",\"railway_track\",\"sunrise\",\"sunrise_over_mountains\",\"desert\",\"beach_umbrella\",\"desert_island\",\"city_sunrise\",\"city_sunset\",\"cityscape\",\"night_with_stars\",\"bridge_at_night\",\"milky_way\",\"stars\",\"sparkler\",\"fireworks\",\"rainbow\",\"houses\",\"european_castle\",\"japanese_castle\",\"stadium\",\"statue_of_liberty\",\"house\",\"house_with_garden\",\"derelict_house\",\"office\",\"department_store\",\"post_office\",\"european_post_office\",\"hospital\",\"bank\",\"hotel\",\"convenience_store\",\"school\",\"love_hotel\",\"wedding\",\"classical_building\",\"church\",\"mosque\",\"synagogue\",\"kaaba\",\"shinto_shrine\",\"watch\",\"iphone\",\"calling\",\"computer\",\"keyboard\",\"desktop_computer\",\"printer\",\"computer_mouse\",\"trackball\",\"joystick\",\"clamp\",\"minidisc\",\"floppy_disk\",\"cd\",\"dvd\",\"vhs\",\"camera\",\"camera_flash\",\"video_camera\",\"movie_camera\",\"film_projector\",\"film_strip\",\"telephone_receiver\",\"phone\",\"pager\",\"fax\",\"tv\",\"radio\",\"studio_microphone\",\"level_slider\",\"control_knobs\",\"compass\",\"stopwatch\",\"timer_clock\",\"alarm_clock\",\"mantelpiece_clock\",\"hourglass_flowing_sand\",\"hourglass\",\"satellite\",\"battery\",\"electric_plug\",\"bulb\",\"flashlight\",\"candle\",\"fire_extinguisher\",\"wastebasket\",\"oil_drum\",\"money_with_wings\",\"dollar\",\"yen\",\"euro\",\"pound\",\"moneybag\",\"credit_card\",\"gem\",\"balance_scale\",\"toolbox\",\"wrench\",\"hammer\",\"hammer_and_pick\",\"hammer_and_wrench\",\"pick\",\"nut_and_bolt\",\"gear\",\"brick\",\"chains\",\"magnet\",\"gun\",\"bomb\",\"firecracker\",\"hocho\",\"dagger\",\"crossed_swords\",\"shield\",\"smoking\",\"coffin\",\"funeral_urn\",\"amphora\",\"crystal_ball\",\"prayer_beads\",\"nazar_amulet\",\"barber\",\"alembic\",\"telescope\",\"microscope\",\"hole\",\"pill\",\"syringe\",\"dna\",\"microbe\",\"petri_dish\",\"test_tube\",\"thermometer\",\"broom\",\"basket\",\"toilet_paper\",\"label\",\"bookmark\",\"toilet\",\"shower\",\"bathtub\",\"bath\",\"soap\",\"sponge\",\"lotion_bottle\",\"key\",\"old_key\",\"couch_and_lamp\",\"sleeping_bed\",\"bed\",\"door\",\"bellhop_bell\",\"teddy_bear\",\"framed_picture\",\"world_map\",\"parasol_on_ground\",\"moyai\",\"shopping\",\"shopping_cart\",\"balloon\",\"flags\",\"ribbon\",\"gift\",\"confetti_ball\",\"tada\",\"dolls\",\"wind_chime\",\"crossed_flags\",\"izakaya_lantern\",\"red_envelope\",\"email\",\"envelope_with_arrow\",\"incoming_envelope\",\"e-mail\",\"love_letter\",\"postbox\",\"mailbox_closed\",\"mailbox\",\"mailbox_with_mail\",\"mailbox_with_no_mail\",\"package\",\"postal_horn\",\"inbox_tray\",\"outbox_tray\",\"scroll\",\"page_with_curl\",\"bookmark_tabs\",\"receipt\",\"bar_chart\",\"chart_with_upwards_trend\",\"chart_with_downwards_trend\",\"page_facing_up\",\"date\",\"calendar\",\"spiral_calendar\",\"card_index\",\"card_file_box\",\"ballot_box\",\"file_cabinet\",\"clipboard\",\"spiral_notepad\",\"file_folder\",\"open_file_folder\",\"card_index_dividers\",\"newspaper_roll\",\"newspaper\",\"notebook\",\"closed_book\",\"green_book\",\"blue_book\",\"orange_book\",\"notebook_with_decorative_cover\",\"ledger\",\"books\",\"open_book\",\"safety_pin\",\"link\",\"paperclip\",\"paperclips\",\"scissors\",\"triangular_ruler\",\"straight_ruler\",\"abacus\",\"pushpin\",\"round_pushpin\",\"closed_lock_with_key\",\"lock\",\"unlock\",\"lock_with_ink_pen\",\"pen\",\"fountain_pen\",\"black_nib\",\"memo\",\"pencil2\",\"crayon\",\"paintbrush\",\"mag\",\"mag_right\",\"heart\",\"orange_heart\",\"yellow_heart\",\"green_heart\",\"blue_heart\",\"purple_heart\",\"black_heart\",\"broken_heart\",\"heavy_heart_exclamation\",\"two_hearts\",\"revolving_hearts\",\"heartbeat\",\"heartpulse\",\"sparkling_heart\",\"cupid\",\"gift_heart\",\"heart_decoration\",\"peace_symbol\",\"latin_cross\",\"star_and_crescent\",\"om\",\"wheel_of_dharma\",\"star_of_david\",\"six_pointed_star\",\"menorah\",\"yin_yang\",\"orthodox_cross\",\"place_of_worship\",\"ophiuchus\",\"aries\",\"taurus\",\"gemini\",\"cancer\",\"leo\",\"virgo\",\"libra\",\"scorpius\",\"sagittarius\",\"capricorn\",\"aquarius\",\"pisces\",\"id\",\"atom_symbol\",\"u7a7a\",\"u5272\",\"radioactive\",\"biohazard\",\"mobile_phone_off\",\"vibration_mode\",\"u6709\",\"u7121\",\"u7533\",\"u55b6\",\"u6708\",\"eight_pointed_black_star\",\"vs\",\"accept\",\"white_flower\",\"ideograph_advantage\",\"secret\",\"congratulations\",\"u5408\",\"u6e80\",\"u7981\",\"a\",\"b\",\"ab\",\"cl\",\"o2\",\"sos\",\"no_entry\",\"name_badge\",\"no_entry_sign\",\"x\",\"o\",\"stop_sign\",\"anger\",\"hotsprings\",\"no_pedestrians\",\"do_not_litter\",\"no_bicycles\",\"non-potable_water\",\"underage\",\"no_mobile_phones\",\"exclamation\",\"grey_exclamation\",\"question\",\"grey_question\",\"bangbang\",\"interrobang\",\"100\",\"low_brightness\",\"high_brightness\",\"trident\",\"fleur_de_lis\",\"part_alternation_mark\",\"warning\",\"children_crossing\",\"beginner\",\"recycle\",\"u6307\",\"chart\",\"sparkle\",\"eight_spoked_asterisk\",\"negative_squared_cross_mark\",\"white_check_mark\",\"diamond_shape_with_a_dot_inside\",\"cyclone\",\"loop\",\"globe_with_meridians\",\"m\",\"atm\",\"zzz\",\"sa\",\"passport_control\",\"customs\",\"baggage_claim\",\"left_luggage\",\"wheelchair\",\"no_smoking\",\"wc\",\"parking\",\"potable_water\",\"mens\",\"womens\",\"baby_symbol\",\"restroom\",\"put_litter_in_its_place\",\"cinema\",\"signal_strength\",\"koko\",\"ng\",\"ok\",\"up\",\"cool\",\"new\",\"free\",\"zero\",\"one\",\"two\",\"three\",\"four\",\"five\",\"six\",\"seven\",\"eight\",\"nine\",\"keycap_ten\",\"asterisk\",\"1234\",\"eject_button\",\"arrow_forward\",\"pause_button\",\"next_track_button\",\"stop_button\",\"record_button\",\"play_or_pause_button\",\"previous_track_button\",\"fast_forward\",\"rewind\",\"twisted_rightwards_arrows\",\"repeat\",\"repeat_one\",\"arrow_backward\",\"arrow_up_small\",\"arrow_down_small\",\"arrow_double_up\",\"arrow_double_down\",\"arrow_right\",\"arrow_left\",\"arrow_up\",\"arrow_down\",\"arrow_upper_right\",\"arrow_lower_right\",\"arrow_lower_left\",\"arrow_upper_left\",\"arrow_up_down\",\"left_right_arrow\",\"arrows_counterclockwise\",\"arrow_right_hook\",\"leftwards_arrow_with_hook\",\"arrow_heading_up\",\"arrow_heading_down\",\"hash\",\"information_source\",\"abc\",\"abcd\",\"capital_abcd\",\"symbols\",\"musical_note\",\"notes\",\"wavy_dash\",\"curly_loop\",\"heavy_check_mark\",\"arrows_clockwise\",\"heavy_plus_sign\",\"heavy_minus_sign\",\"heavy_division_sign\",\"heavy_multiplication_x\",\"infinity\",\"heavy_dollar_sign\",\"currency_exchange\",\"copyright\",\"registered\",\"tm\",\"end\",\"back\",\"on\",\"top\",\"soon\",\"ballot_box_with_check\",\"radio_button\",\"white_circle\",\"black_circle\",\"red_circle\",\"large_blue_circle\",\"small_orange_diamond\",\"small_blue_diamond\",\"large_orange_diamond\",\"large_blue_diamond\",\"small_red_triangle\",\"black_small_square\",\"white_small_square\",\"black_large_square\",\"white_large_square\",\"small_red_triangle_down\",\"black_medium_square\",\"white_medium_square\",\"black_medium_small_square\",\"white_medium_small_square\",\"black_square_button\",\"white_square_button\",\"speaker\",\"sound\",\"loud_sound\",\"mute\",\"mega\",\"loudspeaker\",\"bell\",\"no_bell\",\"black_joker\",\"mahjong\",\"spades\",\"clubs\",\"hearts\",\"diamonds\",\"flower_playing_cards\",\"thought_balloon\",\"right_anger_bubble\",\"speech_balloon\",\"left_speech_bubble\",\"clock1\",\"clock2\",\"clock3\",\"clock4\",\"clock5\",\"clock6\",\"clock7\",\"clock8\",\"clock9\",\"clock10\",\"clock11\",\"clock12\",\"clock130\",\"clock230\",\"clock330\",\"clock430\",\"clock530\",\"clock630\",\"clock730\",\"clock830\",\"clock930\",\"clock1030\",\"clock1130\",\"clock1230\",\"white_flag\",\"black_flag\",\"pirate_flag\",\"checkered_flag\",\"triangular_flag_on_post\",\"rainbow_flag\",\"united_nations\",\"afghanistan\",\"aland_islands\",\"albania\",\"algeria\",\"american_samoa\",\"andorra\",\"angola\",\"anguilla\",\"antarctica\",\"antigua_barbuda\",\"argentina\",\"armenia\",\"aruba\",\"australia\",\"austria\",\"azerbaijan\",\"bahamas\",\"bahrain\",\"bangladesh\",\"barbados\",\"belarus\",\"belgium\",\"belize\",\"benin\",\"bermuda\",\"bhutan\",\"bolivia\",\"caribbean_netherlands\",\"bosnia_herzegovina\",\"botswana\",\"brazil\",\"british_indian_ocean_territory\",\"british_virgin_islands\",\"brunei\",\"bulgaria\",\"burkina_faso\",\"burundi\",\"cape_verde\",\"cambodia\",\"cameroon\",\"canada\",\"canary_islands\",\"cayman_islands\",\"central_african_republic\",\"chad\",\"chile\",\"cn\",\"christmas_island\",\"cocos_islands\",\"colombia\",\"comoros\",\"congo_brazzaville\",\"congo_kinshasa\",\"cook_islands\",\"costa_rica\",\"croatia\",\"cuba\",\"curacao\",\"cyprus\",\"czech_republic\",\"denmark\",\"djibouti\",\"dominica\",\"dominican_republic\",\"ecuador\",\"egypt\",\"el_salvador\",\"equatorial_guinea\",\"eritrea\",\"estonia\",\"ethiopia\",\"eu\",\"falkland_islands\",\"faroe_islands\",\"fiji\",\"finland\",\"fr\",\"french_guiana\",\"french_polynesia\",\"french_southern_territories\",\"gabon\",\"gambia\",\"georgia\",\"de\",\"ghana\",\"gibraltar\",\"greece\",\"greenland\",\"grenada\",\"guadeloupe\",\"guam\",\"guatemala\",\"guernsey\",\"guinea\",\"guinea_bissau\",\"guyana\",\"haiti\",\"honduras\",\"hong_kong\",\"hungary\",\"iceland\",\"india\",\"indonesia\",\"iran\",\"iraq\",\"ireland\",\"isle_of_man\",\"israel\",\"it\",\"cote_divoire\",\"jamaica\",\"jp\",\"jersey\",\"jordan\",\"kazakhstan\",\"kenya\",\"kiribati\",\"kosovo\",\"kuwait\",\"kyrgyzstan\",\"laos\",\"latvia\",\"lebanon\",\"lesotho\",\"liberia\",\"libya\",\"liechtenstein\",\"lithuania\",\"luxembourg\",\"macau\",\"macedonia\",\"madagascar\",\"malawi\",\"malaysia\",\"maldives\",\"mali\",\"malta\",\"marshall_islands\",\"martinique\",\"mauritania\",\"mauritius\",\"mayotte\",\"mexico\",\"micronesia\",\"moldova\",\"monaco\",\"mongolia\",\"montenegro\",\"montserrat\",\"morocco\",\"mozambique\",\"myanmar\",\"namibia\",\"nauru\",\"nepal\",\"netherlands\",\"new_caledonia\",\"new_zealand\",\"nicaragua\",\"niger\",\"nigeria\",\"niue\",\"norfolk_island\",\"northern_mariana_islands\",\"north_korea\",\"norway\",\"oman\",\"pakistan\",\"palau\",\"palestinian_territories\",\"panama\",\"papua_new_guinea\",\"paraguay\",\"peru\",\"philippines\",\"pitcairn_islands\",\"poland\",\"portugal\",\"puerto_rico\",\"qatar\",\"reunion\",\"romania\",\"ru\",\"rwanda\",\"st_barthelemy\",\"st_helena\",\"st_kitts_nevis\",\"st_lucia\",\"st_pierre_miquelon\",\"st_vincent_grenadines\",\"samoa\",\"san_marino\",\"sao_tome_principe\",\"saudi_arabia\",\"senegal\",\"serbia\",\"seychelles\",\"sierra_leone\",\"singapore\",\"sint_maarten\",\"slovakia\",\"slovenia\",\"solomon_islands\",\"somalia\",\"south_africa\",\"south_georgia_south_sandwich_islands\",\"kr\",\"south_sudan\",\"es\",\"sri_lanka\",\"sudan\",\"suriname\",\"swaziland\",\"sweden\",\"switzerland\",\"syria\",\"taiwan\",\"tajikistan\",\"tanzania\",\"thailand\",\"timor_leste\",\"togo\",\"tokelau\",\"tonga\",\"trinidad_tobago\",\"tunisia\",\"tr\",\"turkmenistan\",\"turks_caicos_islands\",\"tuvalu\",\"uganda\",\"ukraine\",\"united_arab_emirates\",\"uk\",\"england\",\"scotland\",\"wales\",\"us\",\"us_virgin_islands\",\"uruguay\",\"uzbekistan\",\"vanuatu\",\"vatican_city\",\"venezuela\",\"vietnam\",\"wallis_futuna\",\"western_sahara\",\"yemen\",\"zambia\",\"zimbabwe\"]");

/***/ }),

/***/ "./node_modules/flv.js/dist/flv.js":
/*!*****************************************!*\
  !*** ./node_modules/flv.js/dist/flv.js ***!
  \*****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(process) {(function webpackUniversalModuleDefinition(root, factory) {
	if(true)
		module.exports = factory();
	else {}
})(self, function() {
return /******/ (function() { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./node_modules/es6-promise/dist/es6-promise.js":
/*!******************************************************!*\
  !*** ./node_modules/es6-promise/dist/es6-promise.js ***!
  \******************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

/*!
 * @overview es6-promise - a tiny implementation of Promises/A+.
 * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
 * @license   Licensed under MIT license
 *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
 * @version   v4.2.8+1e68dce6
 */
(function (global, factory) {
     true ? module.exports = factory() :
        undefined;
}(this, (function () {
    'use strict';
    function objectOrFunction(x) {
        var type = typeof x;
        return x !== null && (type === 'object' || type === 'function');
    }
    function isFunction(x) {
        return typeof x === 'function';
    }
    var _isArray = void 0;
    if (Array.isArray) {
        _isArray = Array.isArray;
    }
    else {
        _isArray = function (x) {
            return Object.prototype.toString.call(x) === '[object Array]';
        };
    }
    var isArray = _isArray;
    var len = 0;
    var vertxNext = void 0;
    var customSchedulerFn = void 0;
    var asap = function asap(callback, arg) {
        queue[len] = callback;
        queue[len + 1] = arg;
        len += 2;
        if (len === 2) {
            // If len is 2, that means that we need to schedule an async flush.
            // If additional callbacks are queued before the queue is flushed, they
            // will be processed by this flush that we are scheduling.
            if (customSchedulerFn) {
                customSchedulerFn(flush);
            }
            else {
                scheduleFlush();
            }
        }
    };
    function setScheduler(scheduleFn) {
        customSchedulerFn = scheduleFn;
    }
    function setAsap(asapFn) {
        asap = asapFn;
    }
    var browserWindow = typeof window !== 'undefined' ? window : undefined;
    var browserGlobal = browserWindow || {};
    var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
    var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
    // test for web worker but not in IE10
    var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
    // node
    function useNextTick() {
        // node version 0.10.x displays a deprecation warning when nextTick is used recursively
        // see https://github.com/cujojs/when/issues/410 for details
        return function () {
            return process.nextTick(flush);
        };
    }
    // vertx
    function useVertxTimer() {
        if (typeof vertxNext !== 'undefined') {
            return function () {
                vertxNext(flush);
            };
        }
        return useSetTimeout();
    }
    function useMutationObserver() {
        var iterations = 0;
        var observer = new BrowserMutationObserver(flush);
        var node = document.createTextNode('');
        observer.observe(node, { characterData: true });
        return function () {
            node.data = iterations = ++iterations % 2;
        };
    }
    // web worker
    function useMessageChannel() {
        var channel = new MessageChannel();
        channel.port1.onmessage = flush;
        return function () {
            return channel.port2.postMessage(0);
        };
    }
    function useSetTimeout() {
        // Store setTimeout reference so es6-promise will be unaffected by
        // other code modifying setTimeout (like sinon.useFakeTimers())
        var globalSetTimeout = setTimeout;
        return function () {
            return globalSetTimeout(flush, 1);
        };
    }
    var queue = new Array(1000);
    function flush() {
        for (var i = 0; i < len; i += 2) {
            var callback = queue[i];
            var arg = queue[i + 1];
            callback(arg);
            queue[i] = undefined;
            queue[i + 1] = undefined;
        }
        len = 0;
    }
    function attemptVertx() {
        try {
            var vertx = Function('return this')().require('vertx');
            vertxNext = vertx.runOnLoop || vertx.runOnContext;
            return useVertxTimer();
        }
        catch (e) {
            return useSetTimeout();
        }
    }
    var scheduleFlush = void 0;
    // Decide what async method to use to triggering processing of queued callbacks:
    if (isNode) {
        scheduleFlush = useNextTick();
    }
    else if (BrowserMutationObserver) {
        scheduleFlush = useMutationObserver();
    }
    else if (isWorker) {
        scheduleFlush = useMessageChannel();
    }
    else if (browserWindow === undefined && "function" === 'function') {
        scheduleFlush = attemptVertx();
    }
    else {
        scheduleFlush = useSetTimeout();
    }
    function then(onFulfillment, onRejection) {
        var parent = this;
        var child = new this.constructor(noop);
        if (child[PROMISE_ID] === undefined) {
            makePromise(child);
        }
        var _state = parent._state;
        if (_state) {
            var callback = arguments[_state - 1];
            asap(function () {
                return invokeCallback(_state, child, callback, parent._result);
            });
        }
        else {
            subscribe(parent, child, onFulfillment, onRejection);
        }
        return child;
    }
    /**
      `Promise.resolve` returns a promise that will become resolved with the
      passed `value`. It is shorthand for the following:
    
      ```javascript
      let promise = new Promise(function(resolve, reject){
        resolve(1);
      });
    
      promise.then(function(value){
        // value === 1
      });
      ```
    
      Instead of writing the above, your code now simply becomes the following:
    
      ```javascript
      let promise = Promise.resolve(1);
    
      promise.then(function(value){
        // value === 1
      });
      ```
    
      @method resolve
      @static
      @param {Any} value value that the returned promise will be resolved with
      Useful for tooling.
      @return {Promise} a promise that will become fulfilled with the given
      `value`
    */
    function resolve$1(object) {
        /*jshint validthis:true */
        var Constructor = this;
        if (object && typeof object === 'object' && object.constructor === Constructor) {
            return object;
        }
        var promise = new Constructor(noop);
        resolve(promise, object);
        return promise;
    }
    var PROMISE_ID = Math.random().toString(36).substring(2);
    function noop() { }
    var PENDING = void 0;
    var FULFILLED = 1;
    var REJECTED = 2;
    function selfFulfillment() {
        return new TypeError("You cannot resolve a promise with itself");
    }
    function cannotReturnOwn() {
        return new TypeError('A promises callback cannot return that same promise.');
    }
    function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
        try {
            then$$1.call(value, fulfillmentHandler, rejectionHandler);
        }
        catch (e) {
            return e;
        }
    }
    function handleForeignThenable(promise, thenable, then$$1) {
        asap(function (promise) {
            var sealed = false;
            var error = tryThen(then$$1, thenable, function (value) {
                if (sealed) {
                    return;
                }
                sealed = true;
                if (thenable !== value) {
                    resolve(promise, value);
                }
                else {
                    fulfill(promise, value);
                }
            }, function (reason) {
                if (sealed) {
                    return;
                }
                sealed = true;
                reject(promise, reason);
            }, 'Settle: ' + (promise._label || ' unknown promise'));
            if (!sealed && error) {
                sealed = true;
                reject(promise, error);
            }
        }, promise);
    }
    function handleOwnThenable(promise, thenable) {
        if (thenable._state === FULFILLED) {
            fulfill(promise, thenable._result);
        }
        else if (thenable._state === REJECTED) {
            reject(promise, thenable._result);
        }
        else {
            subscribe(thenable, undefined, function (value) {
                return resolve(promise, value);
            }, function (reason) {
                return reject(promise, reason);
            });
        }
    }
    function handleMaybeThenable(promise, maybeThenable, then$$1) {
        if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
            handleOwnThenable(promise, maybeThenable);
        }
        else {
            if (then$$1 === undefined) {
                fulfill(promise, maybeThenable);
            }
            else if (isFunction(then$$1)) {
                handleForeignThenable(promise, maybeThenable, then$$1);
            }
            else {
                fulfill(promise, maybeThenable);
            }
        }
    }
    function resolve(promise, value) {
        if (promise === value) {
            reject(promise, selfFulfillment());
        }
        else if (objectOrFunction(value)) {
            var then$$1 = void 0;
            try {
                then$$1 = value.then;
            }
            catch (error) {
                reject(promise, error);
                return;
            }
            handleMaybeThenable(promise, value, then$$1);
        }
        else {
            fulfill(promise, value);
        }
    }
    function publishRejection(promise) {
        if (promise._onerror) {
            promise._onerror(promise._result);
        }
        publish(promise);
    }
    function fulfill(promise, value) {
        if (promise._state !== PENDING) {
            return;
        }
        promise._result = value;
        promise._state = FULFILLED;
        if (promise._subscribers.length !== 0) {
            asap(publish, promise);
        }
    }
    function reject(promise, reason) {
        if (promise._state !== PENDING) {
            return;
        }
        promise._state = REJECTED;
        promise._result = reason;
        asap(publishRejection, promise);
    }
    function subscribe(parent, child, onFulfillment, onRejection) {
        var _subscribers = parent._subscribers;
        var length = _subscribers.length;
        parent._onerror = null;
        _subscribers[length] = child;
        _subscribers[length + FULFILLED] = onFulfillment;
        _subscribers[length + REJECTED] = onRejection;
        if (length === 0 && parent._state) {
            asap(publish, parent);
        }
    }
    function publish(promise) {
        var subscribers = promise._subscribers;
        var settled = promise._state;
        if (subscribers.length === 0) {
            return;
        }
        var child = void 0, callback = void 0, detail = promise._result;
        for (var i = 0; i < subscribers.length; i += 3) {
            child = subscribers[i];
            callback = subscribers[i + settled];
            if (child) {
                invokeCallback(settled, child, callback, detail);
            }
            else {
                callback(detail);
            }
        }
        promise._subscribers.length = 0;
    }
    function invokeCallback(settled, promise, callback, detail) {
        var hasCallback = isFunction(callback), value = void 0, error = void 0, succeeded = true;
        if (hasCallback) {
            try {
                value = callback(detail);
            }
            catch (e) {
                succeeded = false;
                error = e;
            }
            if (promise === value) {
                reject(promise, cannotReturnOwn());
                return;
            }
        }
        else {
            value = detail;
        }
        if (promise._state !== PENDING) {
            // noop
        }
        else if (hasCallback && succeeded) {
            resolve(promise, value);
        }
        else if (succeeded === false) {
            reject(promise, error);
        }
        else if (settled === FULFILLED) {
            fulfill(promise, value);
        }
        else if (settled === REJECTED) {
            reject(promise, value);
        }
    }
    function initializePromise(promise, resolver) {
        try {
            resolver(function resolvePromise(value) {
                resolve(promise, value);
            }, function rejectPromise(reason) {
                reject(promise, reason);
            });
        }
        catch (e) {
            reject(promise, e);
        }
    }
    var id = 0;
    function nextId() {
        return id++;
    }
    function makePromise(promise) {
        promise[PROMISE_ID] = id++;
        promise._state = undefined;
        promise._result = undefined;
        promise._subscribers = [];
    }
    function validationError() {
        return new Error('Array Methods must be provided an Array');
    }
    var Enumerator = function () {
        function Enumerator(Constructor, input) {
            this._instanceConstructor = Constructor;
            this.promise = new Constructor(noop);
            if (!this.promise[PROMISE_ID]) {
                makePromise(this.promise);
            }
            if (isArray(input)) {
                this.length = input.length;
                this._remaining = input.length;
                this._result = new Array(this.length);
                if (this.length === 0) {
                    fulfill(this.promise, this._result);
                }
                else {
                    this.length = this.length || 0;
                    this._enumerate(input);
                    if (this._remaining === 0) {
                        fulfill(this.promise, this._result);
                    }
                }
            }
            else {
                reject(this.promise, validationError());
            }
        }
        Enumerator.prototype._enumerate = function _enumerate(input) {
            for (var i = 0; this._state === PENDING && i < input.length; i++) {
                this._eachEntry(input[i], i);
            }
        };
        Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
            var c = this._instanceConstructor;
            var resolve$$1 = c.resolve;
            if (resolve$$1 === resolve$1) {
                var _then = void 0;
                var error = void 0;
                var didError = false;
                try {
                    _then = entry.then;
                }
                catch (e) {
                    didError = true;
                    error = e;
                }
                if (_then === then && entry._state !== PENDING) {
                    this._settledAt(entry._state, i, entry._result);
                }
                else if (typeof _then !== 'function') {
                    this._remaining--;
                    this._result[i] = entry;
                }
                else if (c === Promise$1) {
                    var promise = new c(noop);
                    if (didError) {
                        reject(promise, error);
                    }
                    else {
                        handleMaybeThenable(promise, entry, _then);
                    }
                    this._willSettleAt(promise, i);
                }
                else {
                    this._willSettleAt(new c(function (resolve$$1) {
                        return resolve$$1(entry);
                    }), i);
                }
            }
            else {
                this._willSettleAt(resolve$$1(entry), i);
            }
        };
        Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
            var promise = this.promise;
            if (promise._state === PENDING) {
                this._remaining--;
                if (state === REJECTED) {
                    reject(promise, value);
                }
                else {
                    this._result[i] = value;
                }
            }
            if (this._remaining === 0) {
                fulfill(promise, this._result);
            }
        };
        Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
            var enumerator = this;
            subscribe(promise, undefined, function (value) {
                return enumerator._settledAt(FULFILLED, i, value);
            }, function (reason) {
                return enumerator._settledAt(REJECTED, i, reason);
            });
        };
        return Enumerator;
    }();
    /**
      `Promise.all` accepts an array of promises, and returns a new promise which
      is fulfilled with an array of fulfillment values for the passed promises, or
      rejected with the reason of the first passed promise to be rejected. It casts all
      elements of the passed iterable to promises as it runs this algorithm.
    
      Example:
    
      ```javascript
      let promise1 = resolve(1);
      let promise2 = resolve(2);
      let promise3 = resolve(3);
      let promises = [ promise1, promise2, promise3 ];
    
      Promise.all(promises).then(function(array){
        // The array here would be [ 1, 2, 3 ];
      });
      ```
    
      If any of the `promises` given to `all` are rejected, the first promise
      that is rejected will be given as an argument to the returned promises's
      rejection handler. For example:
    
      Example:
    
      ```javascript
      let promise1 = resolve(1);
      let promise2 = reject(new Error("2"));
      let promise3 = reject(new Error("3"));
      let promises = [ promise1, promise2, promise3 ];
    
      Promise.all(promises).then(function(array){
        // Code here never runs because there are rejected promises!
      }, function(error) {
        // error.message === "2"
      });
      ```
    
      @method all
      @static
      @param {Array} entries array of promises
      @param {String} label optional string for labeling the promise.
      Useful for tooling.
      @return {Promise} promise that is fulfilled when all `promises` have been
      fulfilled, or rejected if any of them become rejected.
      @static
    */
    function all(entries) {
        return new Enumerator(this, entries).promise;
    }
    /**
      `Promise.race` returns a new promise which is settled in the same way as the
      first passed promise to settle.
    
      Example:
    
      ```javascript
      let promise1 = new Promise(function(resolve, reject){
        setTimeout(function(){
          resolve('promise 1');
        }, 200);
      });
    
      let promise2 = new Promise(function(resolve, reject){
        setTimeout(function(){
          resolve('promise 2');
        }, 100);
      });
    
      Promise.race([promise1, promise2]).then(function(result){
        // result === 'promise 2' because it was resolved before promise1
        // was resolved.
      });
      ```
    
      `Promise.race` is deterministic in that only the state of the first
      settled promise matters. For example, even if other promises given to the
      `promises` array argument are resolved, but the first settled promise has
      become rejected before the other promises became fulfilled, the returned
      promise will become rejected:
    
      ```javascript
      let promise1 = new Promise(function(resolve, reject){
        setTimeout(function(){
          resolve('promise 1');
        }, 200);
      });
    
      let promise2 = new Promise(function(resolve, reject){
        setTimeout(function(){
          reject(new Error('promise 2'));
        }, 100);
      });
    
      Promise.race([promise1, promise2]).then(function(result){
        // Code here never runs
      }, function(reason){
        // reason.message === 'promise 2' because promise 2 became rejected before
        // promise 1 became fulfilled
      });
      ```
    
      An example real-world use case is implementing timeouts:
    
      ```javascript
      Promise.race([ajax('foo.json'), timeout(5000)])
      ```
    
      @method race
      @static
      @param {Array} promises array of promises to observe
      Useful for tooling.
      @return {Promise} a promise which settles in the same way as the first passed
      promise to settle.
    */
    function race(entries) {
        /*jshint validthis:true */
        var Constructor = this;
        if (!isArray(entries)) {
            return new Constructor(function (_, reject) {
                return reject(new TypeError('You must pass an array to race.'));
            });
        }
        else {
            return new Constructor(function (resolve, reject) {
                var length = entries.length;
                for (var i = 0; i < length; i++) {
                    Constructor.resolve(entries[i]).then(resolve, reject);
                }
            });
        }
    }
    /**
      `Promise.reject` returns a promise rejected with the passed `reason`.
      It is shorthand for the following:
    
      ```javascript
      let promise = new Promise(function(resolve, reject){
        reject(new Error('WHOOPS'));
      });
    
      promise.then(function(value){
        // Code here doesn't run because the promise is rejected!
      }, function(reason){
        // reason.message === 'WHOOPS'
      });
      ```
    
      Instead of writing the above, your code now simply becomes the following:
    
      ```javascript
      let promise = Promise.reject(new Error('WHOOPS'));
    
      promise.then(function(value){
        // Code here doesn't run because the promise is rejected!
      }, function(reason){
        // reason.message === 'WHOOPS'
      });
      ```
    
      @method reject
      @static
      @param {Any} reason value that the returned promise will be rejected with.
      Useful for tooling.
      @return {Promise} a promise rejected with the given `reason`.
    */
    function reject$1(reason) {
        /*jshint validthis:true */
        var Constructor = this;
        var promise = new Constructor(noop);
        reject(promise, reason);
        return promise;
    }
    function needsResolver() {
        throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
    }
    function needsNew() {
        throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
    }
    /**
      Promise objects represent the eventual result of an asynchronous operation. The
      primary way of interacting with a promise is through its `then` method, which
      registers callbacks to receive either a promise's eventual value or the reason
      why the promise cannot be fulfilled.
    
      Terminology
      -----------
    
      - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
      - `thenable` is an object or function that defines a `then` method.
      - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
      - `exception` is a value that is thrown using the throw statement.
      - `reason` is a value that indicates why a promise was rejected.
      - `settled` the final resting state of a promise, fulfilled or rejected.
    
      A promise can be in one of three states: pending, fulfilled, or rejected.
    
      Promises that are fulfilled have a fulfillment value and are in the fulfilled
      state.  Promises that are rejected have a rejection reason and are in the
      rejected state.  A fulfillment value is never a thenable.
    
      Promises can also be said to *resolve* a value.  If this value is also a
      promise, then the original promise's settled state will match the value's
      settled state.  So a promise that *resolves* a promise that rejects will
      itself reject, and a promise that *resolves* a promise that fulfills will
      itself fulfill.
    
    
      Basic Usage:
      ------------
    
      ```js
      let promise = new Promise(function(resolve, reject) {
        // on success
        resolve(value);
    
        // on failure
        reject(reason);
      });
    
      promise.then(function(value) {
        // on fulfillment
      }, function(reason) {
        // on rejection
      });
      ```
    
      Advanced Usage:
      ---------------
    
      Promises shine when abstracting away asynchronous interactions such as
      `XMLHttpRequest`s.
    
      ```js
      function getJSON(url) {
        return new Promise(function(resolve, reject){
          let xhr = new XMLHttpRequest();
    
          xhr.open('GET', url);
          xhr.onreadystatechange = handler;
          xhr.responseType = 'json';
          xhr.setRequestHeader('Accept', 'application/json');
          xhr.send();
    
          function handler() {
            if (this.readyState === this.DONE) {
              if (this.status === 200) {
                resolve(this.response);
              } else {
                reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
              }
            }
          };
        });
      }
    
      getJSON('/posts.json').then(function(json) {
        // on fulfillment
      }, function(reason) {
        // on rejection
      });
      ```
    
      Unlike callbacks, promises are great composable primitives.
    
      ```js
      Promise.all([
        getJSON('/posts'),
        getJSON('/comments')
      ]).then(function(values){
        values[0] // => postsJSON
        values[1] // => commentsJSON
    
        return values;
      });
      ```
    
      @class Promise
      @param {Function} resolver
      Useful for tooling.
      @constructor
    */
    var Promise$1 = function () {
        function Promise(resolver) {
            this[PROMISE_ID] = nextId();
            this._result = this._state = undefined;
            this._subscribers = [];
            if (noop !== resolver) {
                typeof resolver !== 'function' && needsResolver();
                this instanceof Promise ? initializePromise(this, resolver) : needsNew();
            }
        }
        /**
        The primary way of interacting with a promise is through its `then` method,
        which registers callbacks to receive either a promise's eventual value or the
        reason why the promise cannot be fulfilled.
         ```js
        findUser().then(function(user){
          // user is available
        }, function(reason){
          // user is unavailable, and you are given the reason why
        });
        ```
         Chaining
        --------
         The return value of `then` is itself a promise.  This second, 'downstream'
        promise is resolved with the return value of the first promise's fulfillment
        or rejection handler, or rejected if the handler throws an exception.
         ```js
        findUser().then(function (user) {
          return user.name;
        }, function (reason) {
          return 'default name';
        }).then(function (userName) {
          // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
          // will be `'default name'`
        });
         findUser().then(function (user) {
          throw new Error('Found user, but still unhappy');
        }, function (reason) {
          throw new Error('`findUser` rejected and we're unhappy');
        }).then(function (value) {
          // never reached
        }, function (reason) {
          // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
          // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
        });
        ```
        If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
         ```js
        findUser().then(function (user) {
          throw new PedagogicalException('Upstream error');
        }).then(function (value) {
          // never reached
        }).then(function (value) {
          // never reached
        }, function (reason) {
          // The `PedgagocialException` is propagated all the way down to here
        });
        ```
         Assimilation
        ------------
         Sometimes the value you want to propagate to a downstream promise can only be
        retrieved asynchronously. This can be achieved by returning a promise in the
        fulfillment or rejection handler. The downstream promise will then be pending
        until the returned promise is settled. This is called *assimilation*.
         ```js
        findUser().then(function (user) {
          return findCommentsByAuthor(user);
        }).then(function (comments) {
          // The user's comments are now available
        });
        ```
         If the assimliated promise rejects, then the downstream promise will also reject.
         ```js
        findUser().then(function (user) {
          return findCommentsByAuthor(user);
        }).then(function (comments) {
          // If `findCommentsByAuthor` fulfills, we'll have the value here
        }, function (reason) {
          // If `findCommentsByAuthor` rejects, we'll have the reason here
        });
        ```
         Simple Example
        --------------
         Synchronous Example
         ```javascript
        let result;
         try {
          result = findResult();
          // success
        } catch(reason) {
          // failure
        }
        ```
         Errback Example
         ```js
        findResult(function(result, err){
          if (err) {
            // failure
          } else {
            // success
          }
        });
        ```
         Promise Example;
         ```javascript
        findResult().then(function(result){
          // success
        }, function(reason){
          // failure
        });
        ```
         Advanced Example
        --------------
         Synchronous Example
         ```javascript
        let author, books;
         try {
          author = findAuthor();
          books  = findBooksByAuthor(author);
          // success
        } catch(reason) {
          // failure
        }
        ```
         Errback Example
         ```js
         function foundBooks(books) {
         }
         function failure(reason) {
         }
         findAuthor(function(author, err){
          if (err) {
            failure(err);
            // failure
          } else {
            try {
              findBoooksByAuthor(author, function(books, err) {
                if (err) {
                  failure(err);
                } else {
                  try {
                    foundBooks(books);
                  } catch(reason) {
                    failure(reason);
                  }
                }
              });
            } catch(error) {
              failure(err);
            }
            // success
          }
        });
        ```
         Promise Example;
         ```javascript
        findAuthor().
          then(findBooksByAuthor).
          then(function(books){
            // found books
        }).catch(function(reason){
          // something went wrong
        });
        ```
         @method then
        @param {Function} onFulfilled
        @param {Function} onRejected
        Useful for tooling.
        @return {Promise}
        */
        /**
        `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
        as the catch block of a try/catch statement.
        ```js
        function findAuthor(){
        throw new Error('couldn't find that author');
        }
        // synchronous
        try {
        findAuthor();
        } catch(reason) {
        // something went wrong
        }
        // async with promises
        findAuthor().catch(function(reason){
        // something went wrong
        });
        ```
        @method catch
        @param {Function} onRejection
        Useful for tooling.
        @return {Promise}
        */
        Promise.prototype.catch = function _catch(onRejection) {
            return this.then(null, onRejection);
        };
        /**
          `finally` will be invoked regardless of the promise's fate just as native
          try/catch/finally behaves
        
          Synchronous example:
        
          ```js
          findAuthor() {
            if (Math.random() > 0.5) {
              throw new Error();
            }
            return new Author();
          }
        
          try {
            return findAuthor(); // succeed or fail
          } catch(error) {
            return findOtherAuther();
          } finally {
            // always runs
            // doesn't affect the return value
          }
          ```
        
          Asynchronous example:
        
          ```js
          findAuthor().catch(function(reason){
            return findOtherAuther();
          }).finally(function(){
            // author was either found, or not
          });
          ```
        
          @method finally
          @param {Function} callback
          @return {Promise}
        */
        Promise.prototype.finally = function _finally(callback) {
            var promise = this;
            var constructor = promise.constructor;
            if (isFunction(callback)) {
                return promise.then(function (value) {
                    return constructor.resolve(callback()).then(function () {
                        return value;
                    });
                }, function (reason) {
                    return constructor.resolve(callback()).then(function () {
                        throw reason;
                    });
                });
            }
            return promise.then(callback, callback);
        };
        return Promise;
    }();
    Promise$1.prototype.then = then;
    Promise$1.all = all;
    Promise$1.race = race;
    Promise$1.resolve = resolve$1;
    Promise$1.reject = reject$1;
    Promise$1._setScheduler = setScheduler;
    Promise$1._setAsap = setAsap;
    Promise$1._asap = asap;
    /*global self*/
    function polyfill() {
        var local = void 0;
        if (typeof __webpack_require__.g !== 'undefined') {
            local = __webpack_require__.g;
        }
        else if (typeof self !== 'undefined') {
            local = self;
        }
        else {
            try {
                local = Function('return this')();
            }
            catch (e) {
                throw new Error('polyfill failed because global object is unavailable in this environment');
            }
        }
        var P = local.Promise;
        if (P) {
            var promiseToString = null;
            try {
                promiseToString = Object.prototype.toString.call(P.resolve());
            }
            catch (e) {
                // silently ignored
            }
            if (promiseToString === '[object Promise]' && !P.cast) {
                return;
            }
        }
        local.Promise = Promise$1;
    }
    // Strange compat..
    Promise$1.polyfill = polyfill;
    Promise$1.Promise = Promise$1;
    return Promise$1;
})));


/***/ }),

/***/ "./node_modules/events/events.js":
/*!***************************************!*\
  !*** ./node_modules/events/events.js ***!
  \***************************************/
/***/ (function(module) {

"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

var R = typeof Reflect === 'object' ? Reflect : null;
var ReflectApply = R && typeof R.apply === 'function'
    ? R.apply
    : function ReflectApply(target, receiver, args) {
        return Function.prototype.apply.call(target, receiver, args);
    };
var ReflectOwnKeys;
if (R && typeof R.ownKeys === 'function') {
    ReflectOwnKeys = R.ownKeys;
}
else if (Object.getOwnPropertySymbols) {
    ReflectOwnKeys = function ReflectOwnKeys(target) {
        return Object.getOwnPropertyNames(target)
            .concat(Object.getOwnPropertySymbols(target));
    };
}
else {
    ReflectOwnKeys = function ReflectOwnKeys(target) {
        return Object.getOwnPropertyNames(target);
    };
}
function ProcessEmitWarning(warning) {
    if (console && console.warn)
        console.warn(warning);
}
var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {
    return value !== value;
};
function EventEmitter() {
    EventEmitter.init.call(this);
}
module.exports = EventEmitter;
module.exports.once = once;
// Backwards-compat with node 0.10.x
EventEmitter.EventEmitter = EventEmitter;
EventEmitter.prototype._events = undefined;
EventEmitter.prototype._eventsCount = 0;
EventEmitter.prototype._maxListeners = undefined;
// By default EventEmitters will print a warning if more than 10 listeners are
// added to it. This is a useful default which helps finding memory leaks.
var defaultMaxListeners = 10;
function checkListener(listener) {
    if (typeof listener !== 'function') {
        throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener);
    }
}
Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
    enumerable: true,
    get: function () {
        return defaultMaxListeners;
    },
    set: function (arg) {
        if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {
            throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.');
        }
        defaultMaxListeners = arg;
    }
});
EventEmitter.init = function () {
    if (this._events === undefined ||
        this._events === Object.getPrototypeOf(this)._events) {
        this._events = Object.create(null);
        this._eventsCount = 0;
    }
    this._maxListeners = this._maxListeners || undefined;
};
// Obviously not all Emitters should be limited to 10. This function allows
// that to be increased. Set to zero for unlimited.
EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
    if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
        throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.');
    }
    this._maxListeners = n;
    return this;
};
function _getMaxListeners(that) {
    if (that._maxListeners === undefined)
        return EventEmitter.defaultMaxListeners;
    return that._maxListeners;
}
EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
    return _getMaxListeners(this);
};
EventEmitter.prototype.emit = function emit(type) {
    var args = [];
    for (var i = 1; i < arguments.length; i++)
        args.push(arguments[i]);
    var doError = (type === 'error');
    var events = this._events;
    if (events !== undefined)
        doError = (doError && events.error === undefined);
    else if (!doError)
        return false;
    // If there is no 'error' event listener then throw.
    if (doError) {
        var er;
        if (args.length > 0)
            er = args[0];
        if (er instanceof Error) {
            // Note: The comments on the `throw` lines are intentional, they show
            // up in Node's output if this results in an unhandled exception.
            throw er; // Unhandled 'error' event
        }
        // At least give some kind of context to the user
        var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));
        err.context = er;
        throw err; // Unhandled 'error' event
    }
    var handler = events[type];
    if (handler === undefined)
        return false;
    if (typeof handler === 'function') {
        ReflectApply(handler, this, args);
    }
    else {
        var len = handler.length;
        var listeners = arrayClone(handler, len);
        for (var i = 0; i < len; ++i)
            ReflectApply(listeners[i], this, args);
    }
    return true;
};
function _addListener(target, type, listener, prepend) {
    var m;
    var events;
    var existing;
    checkListener(listener);
    events = target._events;
    if (events === undefined) {
        events = target._events = Object.create(null);
        target._eventsCount = 0;
    }
    else {
        // To avoid recursion in the case that type === "newListener"! Before
        // adding it to the listeners, first emit "newListener".
        if (events.newListener !== undefined) {
            target.emit('newListener', type, listener.listener ? listener.listener : listener);
            // Re-assign `events` because a newListener handler could have caused the
            // this._events to be assigned to a new object
            events = target._events;
        }
        existing = events[type];
    }
    if (existing === undefined) {
        // Optimize the case of one listener. Don't need the extra array object.
        existing = events[type] = listener;
        ++target._eventsCount;
    }
    else {
        if (typeof existing === 'function') {
            // Adding the second element, need to change to array.
            existing = events[type] =
                prepend ? [listener, existing] : [existing, listener];
            // If we've already got an array, just append.
        }
        else if (prepend) {
            existing.unshift(listener);
        }
        else {
            existing.push(listener);
        }
        // Check for listener leak
        m = _getMaxListeners(target);
        if (m > 0 && existing.length > m && !existing.warned) {
            existing.warned = true;
            // No error code for this since it is a Warning
            // eslint-disable-next-line no-restricted-syntax
            var w = new Error('Possible EventEmitter memory leak detected. ' +
                existing.length + ' ' + String(type) + ' listeners ' +
                'added. Use emitter.setMaxListeners() to ' +
                'increase limit');
            w.name = 'MaxListenersExceededWarning';
            w.emitter = target;
            w.type = type;
            w.count = existing.length;
            ProcessEmitWarning(w);
        }
    }
    return target;
}
EventEmitter.prototype.addListener = function addListener(type, listener) {
    return _addListener(this, type, listener, false);
};
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.prependListener =
    function prependListener(type, listener) {
        return _addListener(this, type, listener, true);
    };
function onceWrapper() {
    if (!this.fired) {
        this.target.removeListener(this.type, this.wrapFn);
        this.fired = true;
        if (arguments.length === 0)
            return this.listener.call(this.target);
        return this.listener.apply(this.target, arguments);
    }
}
function _onceWrap(target, type, listener) {
    var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };
    var wrapped = onceWrapper.bind(state);
    wrapped.listener = listener;
    state.wrapFn = wrapped;
    return wrapped;
}
EventEmitter.prototype.once = function once(type, listener) {
    checkListener(listener);
    this.on(type, _onceWrap(this, type, listener));
    return this;
};
EventEmitter.prototype.prependOnceListener =
    function prependOnceListener(type, listener) {
        checkListener(listener);
        this.prependListener(type, _onceWrap(this, type, listener));
        return this;
    };
// Emits a 'removeListener' event if and only if the listener was removed.
EventEmitter.prototype.removeListener =
    function removeListener(type, listener) {
        var list, events, position, i, originalListener;
        checkListener(listener);
        events = this._events;
        if (events === undefined)
            return this;
        list = events[type];
        if (list === undefined)
            return this;
        if (list === listener || list.listener === listener) {
            if (--this._eventsCount === 0)
                this._events = Object.create(null);
            else {
                delete events[type];
                if (events.removeListener)
                    this.emit('removeListener', type, list.listener || listener);
            }
        }
        else if (typeof list !== 'function') {
            position = -1;
            for (i = list.length - 1; i >= 0; i--) {
                if (list[i] === listener || list[i].listener === listener) {
                    originalListener = list[i].listener;
                    position = i;
                    break;
                }
            }
            if (position < 0)
                return this;
            if (position === 0)
                list.shift();
            else {
                spliceOne(list, position);
            }
            if (list.length === 1)
                events[type] = list[0];
            if (events.removeListener !== undefined)
                this.emit('removeListener', type, originalListener || listener);
        }
        return this;
    };
EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
EventEmitter.prototype.removeAllListeners =
    function removeAllListeners(type) {
        var listeners, events, i;
        events = this._events;
        if (events === undefined)
            return this;
        // not listening for removeListener, no need to emit
        if (events.removeListener === undefined) {
            if (arguments.length === 0) {
                this._events = Object.create(null);
                this._eventsCount = 0;
            }
            else if (events[type] !== undefined) {
                if (--this._eventsCount === 0)
                    this._events = Object.create(null);
                else
                    delete events[type];
            }
            return this;
        }
        // emit removeListener for all listeners on all events
        if (arguments.length === 0) {
            var keys = Object.keys(events);
            var key;
            for (i = 0; i < keys.length; ++i) {
                key = keys[i];
                if (key === 'removeListener')
                    continue;
                this.removeAllListeners(key);
            }
            this.removeAllListeners('removeListener');
            this._events = Object.create(null);
            this._eventsCount = 0;
            return this;
        }
        listeners = events[type];
        if (typeof listeners === 'function') {
            this.removeListener(type, listeners);
        }
        else if (listeners !== undefined) {
            // LIFO order
            for (i = listeners.length - 1; i >= 0; i--) {
                this.removeListener(type, listeners[i]);
            }
        }
        return this;
    };
function _listeners(target, type, unwrap) {
    var events = target._events;
    if (events === undefined)
        return [];
    var evlistener = events[type];
    if (evlistener === undefined)
        return [];
    if (typeof evlistener === 'function')
        return unwrap ? [evlistener.listener || evlistener] : [evlistener];
    return unwrap ?
        unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);
}
EventEmitter.prototype.listeners = function listeners(type) {
    return _listeners(this, type, true);
};
EventEmitter.prototype.rawListeners = function rawListeners(type) {
    return _listeners(this, type, false);
};
EventEmitter.listenerCount = function (emitter, type) {
    if (typeof emitter.listenerCount === 'function') {
        return emitter.listenerCount(type);
    }
    else {
        return listenerCount.call(emitter, type);
    }
};
EventEmitter.prototype.listenerCount = listenerCount;
function listenerCount(type) {
    var events = this._events;
    if (events !== undefined) {
        var evlistener = events[type];
        if (typeof evlistener === 'function') {
            return 1;
        }
        else if (evlistener !== undefined) {
            return evlistener.length;
        }
    }
    return 0;
}
EventEmitter.prototype.eventNames = function eventNames() {
    return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
};
function arrayClone(arr, n) {
    var copy = new Array(n);
    for (var i = 0; i < n; ++i)
        copy[i] = arr[i];
    return copy;
}
function spliceOne(list, index) {
    for (; index + 1 < list.length; index++)
        list[index] = list[index + 1];
    list.pop();
}
function unwrapListeners(arr) {
    var ret = new Array(arr.length);
    for (var i = 0; i < ret.length; ++i) {
        ret[i] = arr[i].listener || arr[i];
    }
    return ret;
}
function once(emitter, name) {
    return new Promise(function (resolve, reject) {
        function errorListener(err) {
            emitter.removeListener(name, resolver);
            reject(err);
        }
        function resolver() {
            if (typeof emitter.removeListener === 'function') {
                emitter.removeListener('error', errorListener);
            }
            resolve([].slice.call(arguments));
        }
        ;
        eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });
        if (name !== 'error') {
            addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });
        }
    });
}
function addErrorHandlerIfEventEmitter(emitter, handler, flags) {
    if (typeof emitter.on === 'function') {
        eventTargetAgnosticAddListener(emitter, 'error', handler, flags);
    }
}
function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
    if (typeof emitter.on === 'function') {
        if (flags.once) {
            emitter.once(name, listener);
        }
        else {
            emitter.on(name, listener);
        }
    }
    else if (typeof emitter.addEventListener === 'function') {
        // EventTarget does not have `error` event semantics like Node
        // EventEmitters, we do not listen for `error` events here.
        emitter.addEventListener(name, function wrapListener(arg) {
            // IE does not have builtin `{ once: true }` support so we
            // have to do it manually.
            if (flags.once) {
                emitter.removeEventListener(name, wrapListener);
            }
            listener(arg);
        });
    }
    else {
        throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter);
    }
}


/***/ }),

/***/ "./node_modules/webworkify-webpack/index.js":
/*!**************************************************!*\
  !*** ./node_modules/webworkify-webpack/index.js ***!
  \**************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

function webpackBootstrapFunc(modules) {
    /******/ // The module cache
    /******/ var installedModules = {};
    /******/ // The require function
    /******/ function __nested_webpack_require_164__(moduleId) {
        /******/ // Check if module is in cache
        /******/ if (installedModules[moduleId])
            /******/ return installedModules[moduleId].exports;
        /******/ // Create a new module (and put it into the cache)
        /******/ var module = installedModules[moduleId] = {
            /******/ i: moduleId,
            /******/ l: false,
            /******/ exports: {}
            /******/ 
        };
        /******/ // Execute the module function
        /******/ modules[moduleId].call(module.exports, module, module.exports, __nested_webpack_require_164__);
        /******/ // Flag the module as loaded
        /******/ module.l = true;
        /******/ // Return the exports of the module
        /******/ return module.exports;
        /******/ 
    }
    /******/ // expose the modules object (__webpack_modules__)
    /******/ __nested_webpack_require_164__.m = modules;
    /******/ // expose the module cache
    /******/ __nested_webpack_require_164__.c = installedModules;
    /******/ // identity function for calling harmony imports with the correct context
    /******/ __nested_webpack_require_164__.i = function (value) { return value; };
    /******/ // define getter function for harmony exports
    /******/ __nested_webpack_require_164__.d = function (exports, name, getter) {
        /******/ if (!__nested_webpack_require_164__.o(exports, name)) {
            /******/ Object.defineProperty(exports, name, {
                /******/ configurable: false,
                /******/ enumerable: true,
                /******/ get: getter
                /******/ 
            });
            /******/ }
        /******/ 
    };
    /******/ // define __esModule on exports
    /******/ __nested_webpack_require_164__.r = function (exports) {
        /******/ Object.defineProperty(exports, '__esModule', { value: true });
        /******/ 
    };
    /******/ // getDefaultExport function for compatibility with non-harmony modules
    /******/ __nested_webpack_require_164__.n = function (module) {
        /******/ var getter = module && module.__esModule ?
            /******/ function getDefault() { return module['default']; } :
            /******/ function getModuleExports() { return module; };
        /******/ __nested_webpack_require_164__.d(getter, 'a', getter);
        /******/ return getter;
        /******/ 
    };
    /******/ // Object.prototype.hasOwnProperty.call
    /******/ __nested_webpack_require_164__.o = function (object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
    /******/ // __webpack_public_path__
    /******/ __nested_webpack_require_164__.p = "/";
    /******/ // on error function for async loading
    /******/ __nested_webpack_require_164__.oe = function (err) { console.error(err); throw err; };
    var f = __nested_webpack_require_164__(__nested_webpack_require_164__.s = ENTRY_MODULE);
    return f.default || f; // try to call default if defined to also support babel esmodule exports
}
var moduleNameReqExp = '[\\.|\\-|\\+|\\w|\/|@]+';
var dependencyRegExp = '\\(\\s*(\/\\*.*?\\*\/)?\\s*.*?(' + moduleNameReqExp + ').*?\\)'; // additional chars when output.pathinfo is true
// http://stackoverflow.com/a/2593661/130442
function quoteRegExp(str) {
    return (str + '').replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&');
}
function isNumeric(n) {
    return !isNaN(1 * n); // 1 * n converts integers, integers as string ("123"), 1e3 and "1e3" to integers and strings to NaN
}
function getModuleDependencies(sources, module, queueName) {
    var retval = {};
    retval[queueName] = [];
    var fnString = module.toString();
    var wrapperSignature = fnString.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);
    if (!wrapperSignature)
        return retval;
    var webpackRequireName = wrapperSignature[1];
    // main bundle deps
    var re = new RegExp('(\\\\n|\\W)' + quoteRegExp(webpackRequireName) + dependencyRegExp, 'g');
    var match;
    while ((match = re.exec(fnString))) {
        if (match[3] === 'dll-reference')
            continue;
        retval[queueName].push(match[3]);
    }
    // dll deps
    re = new RegExp('\\(' + quoteRegExp(webpackRequireName) + '\\("(dll-reference\\s(' + moduleNameReqExp + '))"\\)\\)' + dependencyRegExp, 'g');
    while ((match = re.exec(fnString))) {
        if (!sources[match[2]]) {
            retval[queueName].push(match[1]);
            sources[match[2]] = __webpack_require__(match[1]).m;
        }
        retval[match[2]] = retval[match[2]] || [];
        retval[match[2]].push(match[4]);
    }
    // convert 1e3 back to 1000 - this can be important after uglify-js converted 1000 to 1e3
    var keys = Object.keys(retval);
    for (var i = 0; i < keys.length; i++) {
        for (var j = 0; j < retval[keys[i]].length; j++) {
            if (isNumeric(retval[keys[i]][j])) {
                retval[keys[i]][j] = 1 * retval[keys[i]][j];
            }
        }
    }
    return retval;
}
function hasValuesInQueues(queues) {
    var keys = Object.keys(queues);
    return keys.reduce(function (hasValues, key) {
        return hasValues || queues[key].length > 0;
    }, false);
}
function getRequiredModules(sources, moduleId) {
    var modulesQueue = {
        main: [moduleId]
    };
    var requiredModules = {
        main: []
    };
    var seenModules = {
        main: {}
    };
    while (hasValuesInQueues(modulesQueue)) {
        var queues = Object.keys(modulesQueue);
        for (var i = 0; i < queues.length; i++) {
            var queueName = queues[i];
            var queue = modulesQueue[queueName];
            var moduleToCheck = queue.pop();
            seenModules[queueName] = seenModules[queueName] || {};
            if (seenModules[queueName][moduleToCheck] || !sources[queueName][moduleToCheck])
                continue;
            seenModules[queueName][moduleToCheck] = true;
            requiredModules[queueName] = requiredModules[queueName] || [];
            requiredModules[queueName].push(moduleToCheck);
            var newModules = getModuleDependencies(sources, sources[queueName][moduleToCheck], queueName);
            var newModulesKeys = Object.keys(newModules);
            for (var j = 0; j < newModulesKeys.length; j++) {
                modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]] || [];
                modulesQueue[newModulesKeys[j]] = modulesQueue[newModulesKeys[j]].concat(newModules[newModulesKeys[j]]);
            }
        }
    }
    return requiredModules;
}
module.exports = function (moduleId, options) {
    options = options || {};
    var sources = {
        main: __webpack_require__.m
    };
    var requiredModules = options.all ? { main: Object.keys(sources.main) } : getRequiredModules(sources, moduleId);
    var src = '';
    Object.keys(requiredModules).filter(function (m) { return m !== 'main'; }).forEach(function (module) {
        var entryModule = 0;
        while (requiredModules[module][entryModule]) {
            entryModule++;
        }
        requiredModules[module].push(entryModule);
        sources[module][entryModule] = '(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })';
        src = src + 'var ' + module + ' = (' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(entryModule)) + ')({' + requiredModules[module].map(function (id) { return '' + JSON.stringify(id) + ': ' + sources[module][id].toString(); }).join(',') + '});\n';
    });
    src = src + 'new ((' + webpackBootstrapFunc.toString().replace('ENTRY_MODULE', JSON.stringify(moduleId)) + ')({' + requiredModules.main.map(function (id) { return '' + JSON.stringify(id) + ': ' + sources.main[id].toString(); }).join(',') + '}))(self);';
    var blob = new window.Blob([src], { type: 'text/javascript' });
    if (options.bare) {
        return blob;
    }
    var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
    var workerUrl = URL.createObjectURL(blob);
    var worker = new window.Worker(workerUrl);
    worker.objectURL = workerUrl;
    return worker;
};


/***/ }),

/***/ "./src/config.js":
/*!***********************!*\
  !*** ./src/config.js ***!
  \***********************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "defaultConfig": function() { return /* binding */ defaultConfig; },
/* harmony export */   "createDefaultConfig": function() { return /* binding */ createDefaultConfig; }
/* harmony export */ });
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var defaultConfig = {
    enableWorker: false,
    enableStashBuffer: true,
    stashInitialSize: undefined,
    isLive: false,
    lazyLoad: true,
    lazyLoadMaxDuration: 3 * 60,
    lazyLoadRecoverDuration: 30,
    deferLoadAfterSourceOpen: true,
    // autoCleanupSourceBuffer: default as false, leave unspecified
    autoCleanupMaxBackwardDuration: 3 * 60,
    autoCleanupMinBackwardDuration: 2 * 60,
    statisticsInfoReportInterval: 600,
    fixAudioTimestampGap: true,
    accurateSeek: false,
    seekType: 'range',
    seekParamStart: 'bstart',
    seekParamEnd: 'bend',
    rangeLoadZeroStart: false,
    customSeekHandler: undefined,
    reuseRedirectedURL: false,
    // referrerPolicy: leave as unspecified
    headers: undefined,
    customLoader: undefined
};
function createDefaultConfig() {
    return Object.assign({}, defaultConfig);
}


/***/ }),

/***/ "./src/core/features.js":
/*!******************************!*\
  !*** ./src/core/features.js ***!
  \******************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../io/io-controller.js */ "./src/io/io-controller.js");
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config.js */ "./src/config.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


var Features = /** @class */ (function () {
    function Features() {
    }
    Features.supportMSEH264Playback = function () {
        return window.MediaSource &&
            window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');
    };
    Features.supportNetworkStreamIO = function () {
        var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__.default({}, (0,_config_js__WEBPACK_IMPORTED_MODULE_1__.createDefaultConfig)());
        var loaderType = ioctl.loaderType;
        ioctl.destroy();
        return loaderType == 'fetch-stream-loader' || loaderType == 'xhr-moz-chunked-loader';
    };
    Features.getNetworkLoaderTypeName = function () {
        var ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_0__.default({}, (0,_config_js__WEBPACK_IMPORTED_MODULE_1__.createDefaultConfig)());
        var loaderType = ioctl.loaderType;
        ioctl.destroy();
        return loaderType;
    };
    Features.supportNativeMediaPlayback = function (mimeType) {
        if (Features.videoElement == undefined) {
            Features.videoElement = window.document.createElement('video');
        }
        var canPlay = Features.videoElement.canPlayType(mimeType);
        return canPlay === 'probably' || canPlay == 'maybe';
    };
    Features.getFeatureList = function () {
        var features = {
            mseFlvPlayback: false,
            mseLiveFlvPlayback: false,
            networkStreamIO: false,
            networkLoaderName: '',
            nativeMP4H264Playback: false,
            nativeWebmVP8Playback: false,
            nativeWebmVP9Playback: false
        };
        features.mseFlvPlayback = Features.supportMSEH264Playback();
        features.networkStreamIO = Features.supportNetworkStreamIO();
        features.networkLoaderName = Features.getNetworkLoaderTypeName();
        features.mseLiveFlvPlayback = features.mseFlvPlayback && features.networkStreamIO;
        features.nativeMP4H264Playback = Features.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"');
        features.nativeWebmVP8Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"');
        features.nativeWebmVP9Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp9"');
        return features;
    };
    return Features;
}());
/* harmony default export */ __webpack_exports__["default"] = (Features);


/***/ }),

/***/ "./src/core/media-info.js":
/*!********************************!*\
  !*** ./src/core/media-info.js ***!
  \********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var MediaInfo = /** @class */ (function () {
    function MediaInfo() {
        this.mimeType = null;
        this.duration = null;
        this.hasAudio = null;
        this.hasVideo = null;
        this.audioCodec = null;
        this.videoCodec = null;
        this.audioDataRate = null;
        this.videoDataRate = null;
        this.audioSampleRate = null;
        this.audioChannelCount = null;
        this.width = null;
        this.height = null;
        this.fps = null;
        this.profile = null;
        this.level = null;
        this.refFrames = null;
        this.chromaFormat = null;
        this.sarNum = null;
        this.sarDen = null;
        this.metadata = null;
        this.segments = null; // MediaInfo[]
        this.segmentCount = null;
        this.hasKeyframesIndex = null;
        this.keyframesIndex = null;
    }
    MediaInfo.prototype.isComplete = function () {
        var audioInfoComplete = (this.hasAudio === false) ||
            (this.hasAudio === true &&
                this.audioCodec != null &&
                this.audioSampleRate != null &&
                this.audioChannelCount != null);
        var videoInfoComplete = (this.hasVideo === false) ||
            (this.hasVideo === true &&
                this.videoCodec != null &&
                this.width != null &&
                this.height != null &&
                this.fps != null &&
                this.profile != null &&
                this.level != null &&
                this.refFrames != null &&
                this.chromaFormat != null &&
                this.sarNum != null &&
                this.sarDen != null);
        // keyframesIndex may not be present
        return this.mimeType != null &&
            this.duration != null &&
            this.metadata != null &&
            this.hasKeyframesIndex != null &&
            audioInfoComplete &&
            videoInfoComplete;
    };
    MediaInfo.prototype.isSeekable = function () {
        return this.hasKeyframesIndex === true;
    };
    MediaInfo.prototype.getNearestKeyframe = function (milliseconds) {
        if (this.keyframesIndex == null) {
            return null;
        }
        var table = this.keyframesIndex;
        var keyframeIdx = this._search(table.times, milliseconds);
        return {
            index: keyframeIdx,
            milliseconds: table.times[keyframeIdx],
            fileposition: table.filepositions[keyframeIdx]
        };
    };
    MediaInfo.prototype._search = function (list, value) {
        var idx = 0;
        var last = list.length - 1;
        var mid = 0;
        var lbound = 0;
        var ubound = last;
        if (value < list[0]) {
            idx = 0;
            lbound = ubound + 1; // skip search
        }
        while (lbound <= ubound) {
            mid = lbound + Math.floor((ubound - lbound) / 2);
            if (mid === last || (value >= list[mid] && value < list[mid + 1])) {
                idx = mid;
                break;
            }
            else if (list[mid] < value) {
                lbound = mid + 1;
            }
            else {
                ubound = mid - 1;
            }
        }
        return idx;
    };
    return MediaInfo;
}());
/* harmony default export */ __webpack_exports__["default"] = (MediaInfo);


/***/ }),

/***/ "./src/core/media-segment-info.js":
/*!****************************************!*\
  !*** ./src/core/media-segment-info.js ***!
  \****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "SampleInfo": function() { return /* binding */ SampleInfo; },
/* harmony export */   "MediaSegmentInfo": function() { return /* binding */ MediaSegmentInfo; },
/* harmony export */   "IDRSampleList": function() { return /* binding */ IDRSampleList; },
/* harmony export */   "MediaSegmentInfoList": function() { return /* binding */ MediaSegmentInfoList; }
/* harmony export */ });
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Represents an media sample (audio / video)
var SampleInfo = /** @class */ (function () {
    function SampleInfo(dts, pts, duration, originalDts, isSync) {
        this.dts = dts;
        this.pts = pts;
        this.duration = duration;
        this.originalDts = originalDts;
        this.isSyncPoint = isSync;
        this.fileposition = null;
    }
    return SampleInfo;
}());

// Media Segment concept is defined in Media Source Extensions spec.
// Particularly in ISO BMFF format, an Media Segment contains a moof box followed by a mdat box.
var MediaSegmentInfo = /** @class */ (function () {
    function MediaSegmentInfo() {
        this.beginDts = 0;
        this.endDts = 0;
        this.beginPts = 0;
        this.endPts = 0;
        this.originalBeginDts = 0;
        this.originalEndDts = 0;
        this.syncPoints = []; // SampleInfo[n], for video IDR frames only
        this.firstSample = null; // SampleInfo
        this.lastSample = null; // SampleInfo
    }
    MediaSegmentInfo.prototype.appendSyncPoint = function (sampleInfo) {
        sampleInfo.isSyncPoint = true;
        this.syncPoints.push(sampleInfo);
    };
    return MediaSegmentInfo;
}());

// Ordered list for recording video IDR frames, sorted by originalDts
var IDRSampleList = /** @class */ (function () {
    function IDRSampleList() {
        this._list = [];
    }
    IDRSampleList.prototype.clear = function () {
        this._list = [];
    };
    IDRSampleList.prototype.appendArray = function (syncPoints) {
        var list = this._list;
        if (syncPoints.length === 0) {
            return;
        }
        if (list.length > 0 && syncPoints[0].originalDts < list[list.length - 1].originalDts) {
            this.clear();
        }
        Array.prototype.push.apply(list, syncPoints);
    };
    IDRSampleList.prototype.getLastSyncPointBeforeDts = function (dts) {
        if (this._list.length == 0) {
            return null;
        }
        var list = this._list;
        var idx = 0;
        var last = list.length - 1;
        var mid = 0;
        var lbound = 0;
        var ubound = last;
        if (dts < list[0].dts) {
            idx = 0;
            lbound = ubound + 1;
        }
        while (lbound <= ubound) {
            mid = lbound + Math.floor((ubound - lbound) / 2);
            if (mid === last || (dts >= list[mid].dts && dts < list[mid + 1].dts)) {
                idx = mid;
                break;
            }
            else if (list[mid].dts < dts) {
                lbound = mid + 1;
            }
            else {
                ubound = mid - 1;
            }
        }
        return this._list[idx];
    };
    return IDRSampleList;
}());

// Data structure for recording information of media segments in single track.
var MediaSegmentInfoList = /** @class */ (function () {
    function MediaSegmentInfoList(type) {
        this._type = type;
        this._list = [];
        this._lastAppendLocation = -1; // cached last insert location
    }
    Object.defineProperty(MediaSegmentInfoList.prototype, "type", {
        get: function () {
            return this._type;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MediaSegmentInfoList.prototype, "length", {
        get: function () {
            return this._list.length;
        },
        enumerable: false,
        configurable: true
    });
    MediaSegmentInfoList.prototype.isEmpty = function () {
        return this._list.length === 0;
    };
    MediaSegmentInfoList.prototype.clear = function () {
        this._list = [];
        this._lastAppendLocation = -1;
    };
    MediaSegmentInfoList.prototype._searchNearestSegmentBefore = function (originalBeginDts) {
        var list = this._list;
        if (list.length === 0) {
            return -2;
        }
        var last = list.length - 1;
        var mid = 0;
        var lbound = 0;
        var ubound = last;
        var idx = 0;
        if (originalBeginDts < list[0].originalBeginDts) {
            idx = -1;
            return idx;
        }
        while (lbound <= ubound) {
            mid = lbound + Math.floor((ubound - lbound) / 2);
            if (mid === last || (originalBeginDts > list[mid].lastSample.originalDts &&
                (originalBeginDts < list[mid + 1].originalBeginDts))) {
                idx = mid;
                break;
            }
            else if (list[mid].originalBeginDts < originalBeginDts) {
                lbound = mid + 1;
            }
            else {
                ubound = mid - 1;
            }
        }
        return idx;
    };
    MediaSegmentInfoList.prototype._searchNearestSegmentAfter = function (originalBeginDts) {
        return this._searchNearestSegmentBefore(originalBeginDts) + 1;
    };
    MediaSegmentInfoList.prototype.append = function (mediaSegmentInfo) {
        var list = this._list;
        var msi = mediaSegmentInfo;
        var lastAppendIdx = this._lastAppendLocation;
        var insertIdx = 0;
        if (lastAppendIdx !== -1 && lastAppendIdx < list.length &&
            msi.originalBeginDts >= list[lastAppendIdx].lastSample.originalDts &&
            ((lastAppendIdx === list.length - 1) ||
                (lastAppendIdx < list.length - 1 &&
                    msi.originalBeginDts < list[lastAppendIdx + 1].originalBeginDts))) {
            insertIdx = lastAppendIdx + 1; // use cached location idx
        }
        else {
            if (list.length > 0) {
                insertIdx = this._searchNearestSegmentBefore(msi.originalBeginDts) + 1;
            }
        }
        this._lastAppendLocation = insertIdx;
        this._list.splice(insertIdx, 0, msi);
    };
    MediaSegmentInfoList.prototype.getLastSegmentBefore = function (originalBeginDts) {
        var idx = this._searchNearestSegmentBefore(originalBeginDts);
        if (idx >= 0) {
            return this._list[idx];
        }
        else { // -1
            return null;
        }
    };
    MediaSegmentInfoList.prototype.getLastSampleBefore = function (originalBeginDts) {
        var segment = this.getLastSegmentBefore(originalBeginDts);
        if (segment != null) {
            return segment.lastSample;
        }
        else {
            return null;
        }
    };
    MediaSegmentInfoList.prototype.getLastSyncPointBefore = function (originalBeginDts) {
        var segmentIdx = this._searchNearestSegmentBefore(originalBeginDts);
        var syncPoints = this._list[segmentIdx].syncPoints;
        while (syncPoints.length === 0 && segmentIdx > 0) {
            segmentIdx--;
            syncPoints = this._list[segmentIdx].syncPoints;
        }
        if (syncPoints.length > 0) {
            return syncPoints[syncPoints.length - 1];
        }
        else {
            return null;
        }
    };
    return MediaSegmentInfoList;
}());



/***/ }),

/***/ "./src/core/mse-controller.js":
/*!************************************!*\
  !*** ./src/core/mse-controller.js ***!
  \************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ "./src/utils/browser.js");
/* harmony import */ var _mse_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mse-events.js */ "./src/core/mse-events.js");
/* harmony import */ var _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./media-segment-info.js */ "./src/core/media-segment-info.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */






// Media Source Extensions controller
var MSEController = /** @class */ (function () {
    function MSEController(config) {
        this.TAG = 'MSEController';
        this._config = config;
        this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();
        if (this._config.isLive && this._config.autoCleanupSourceBuffer == undefined) {
            // For live stream, do auto cleanup by default
            this._config.autoCleanupSourceBuffer = true;
        }
        this.e = {
            onSourceOpen: this._onSourceOpen.bind(this),
            onSourceEnded: this._onSourceEnded.bind(this),
            onSourceClose: this._onSourceClose.bind(this),
            onSourceBufferError: this._onSourceBufferError.bind(this),
            onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this)
        };
        this._mediaSource = null;
        this._mediaSourceObjectURL = null;
        this._mediaElement = null;
        this._isBufferFull = false;
        this._hasPendingEos = false;
        this._requireSetMediaDuration = false;
        this._pendingMediaDuration = 0;
        this._pendingSourceBufferInit = [];
        this._mimeTypes = {
            video: null,
            audio: null
        };
        this._sourceBuffers = {
            video: null,
            audio: null
        };
        this._lastInitSegments = {
            video: null,
            audio: null
        };
        this._pendingSegments = {
            video: [],
            audio: []
        };
        this._pendingRemoveRanges = {
            video: [],
            audio: []
        };
        this._idrList = new _media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.IDRSampleList();
    }
    MSEController.prototype.destroy = function () {
        if (this._mediaElement || this._mediaSource) {
            this.detachMediaElement();
        }
        this.e = null;
        this._emitter.removeAllListeners();
        this._emitter = null;
    };
    MSEController.prototype.on = function (event, listener) {
        this._emitter.addListener(event, listener);
    };
    MSEController.prototype.off = function (event, listener) {
        this._emitter.removeListener(event, listener);
    };
    MSEController.prototype.attachMediaElement = function (mediaElement) {
        if (this._mediaSource) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('MediaSource has been attached to an HTMLMediaElement!');
        }
        var ms = this._mediaSource = new window.MediaSource();
        ms.addEventListener('sourceopen', this.e.onSourceOpen);
        ms.addEventListener('sourceended', this.e.onSourceEnded);
        ms.addEventListener('sourceclose', this.e.onSourceClose);
        this._mediaElement = mediaElement;
        this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource);
        mediaElement.src = this._mediaSourceObjectURL;
    };
    MSEController.prototype.detachMediaElement = function () {
        if (this._mediaSource) {
            var ms = this._mediaSource;
            for (var type in this._sourceBuffers) {
                // pending segments should be discard
                var ps = this._pendingSegments[type];
                ps.splice(0, ps.length);
                this._pendingSegments[type] = null;
                this._pendingRemoveRanges[type] = null;
                this._lastInitSegments[type] = null;
                // remove all sourcebuffers
                var sb = this._sourceBuffers[type];
                if (sb) {
                    if (ms.readyState !== 'closed') {
                        // ms edge can throw an error: Unexpected call to method or property access
                        try {
                            ms.removeSourceBuffer(sb);
                        }
                        catch (error) {
                            _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);
                        }
                        sb.removeEventListener('error', this.e.onSourceBufferError);
                        sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd);
                    }
                    this._mimeTypes[type] = null;
                    this._sourceBuffers[type] = null;
                }
            }
            if (ms.readyState === 'open') {
                try {
                    ms.endOfStream();
                }
                catch (error) {
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);
                }
            }
            ms.removeEventListener('sourceopen', this.e.onSourceOpen);
            ms.removeEventListener('sourceended', this.e.onSourceEnded);
            ms.removeEventListener('sourceclose', this.e.onSourceClose);
            this._pendingSourceBufferInit = [];
            this._isBufferFull = false;
            this._idrList.clear();
            this._mediaSource = null;
        }
        if (this._mediaElement) {
            this._mediaElement.src = '';
            this._mediaElement.removeAttribute('src');
            this._mediaElement = null;
        }
        if (this._mediaSourceObjectURL) {
            window.URL.revokeObjectURL(this._mediaSourceObjectURL);
            this._mediaSourceObjectURL = null;
        }
    };
    MSEController.prototype.appendInitSegment = function (initSegment, deferred) {
        if (!this._mediaSource || this._mediaSource.readyState !== 'open') {
            // sourcebuffer creation requires mediaSource.readyState === 'open'
            // so we defer the sourcebuffer creation, until sourceopen event triggered
            this._pendingSourceBufferInit.push(initSegment);
            // make sure that this InitSegment is in the front of pending segments queue
            this._pendingSegments[initSegment.type].push(initSegment);
            return;
        }
        var is = initSegment;
        var mimeType = "" + is.container;
        if (is.codec && is.codec.length > 0) {
            mimeType += ";codecs=" + is.codec;
        }
        var firstInitSegment = false;
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'Received Initialization Segment, mimeType: ' + mimeType);
        this._lastInitSegments[is.type] = is;
        if (mimeType !== this._mimeTypes[is.type]) {
            if (!this._mimeTypes[is.type]) { // empty, first chance create sourcebuffer
                firstInitSegment = true;
                try {
                    var sb = this._sourceBuffers[is.type] = this._mediaSource.addSourceBuffer(mimeType);
                    sb.addEventListener('error', this.e.onSourceBufferError);
                    sb.addEventListener('updateend', this.e.onSourceBufferUpdateEnd);
                }
                catch (error) {
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);
                    this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, { code: error.code, msg: error.message });
                    return;
                }
            }
            else {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, "Notice: " + is.type + " mimeType changed, origin: " + this._mimeTypes[is.type] + ", target: " + mimeType);
            }
            this._mimeTypes[is.type] = mimeType;
        }
        if (!deferred) {
            // deferred means this InitSegment has been pushed to pendingSegments queue
            this._pendingSegments[is.type].push(is);
        }
        if (!firstInitSegment) { // append immediately only if init segment in subsequence
            if (this._sourceBuffers[is.type] && !this._sourceBuffers[is.type].updating) {
                this._doAppendSegments();
            }
        }
        if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari && is.container === 'audio/mpeg' && is.mediaDuration > 0) {
            // 'audio/mpeg' track under Safari may cause MediaElement's duration to be NaN
            // Manually correct MediaSource.duration to make progress bar seekable, and report right duration
            this._requireSetMediaDuration = true;
            this._pendingMediaDuration = is.mediaDuration / 1000; // in seconds
            this._updateMediaSourceDuration();
        }
    };
    MSEController.prototype.appendMediaSegment = function (mediaSegment) {
        var ms = mediaSegment;
        this._pendingSegments[ms.type].push(ms);
        if (this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer()) {
            this._doCleanupSourceBuffer();
        }
        var sb = this._sourceBuffers[ms.type];
        if (sb && !sb.updating && !this._hasPendingRemoveRanges()) {
            this._doAppendSegments();
        }
    };
    MSEController.prototype.seek = function (seconds) {
        // remove all appended buffers
        for (var type in this._sourceBuffers) {
            if (!this._sourceBuffers[type]) {
                continue;
            }
            // abort current buffer append algorithm
            var sb = this._sourceBuffers[type];
            if (this._mediaSource.readyState === 'open') {
                try {
                    // If range removal algorithm is running, InvalidStateError will be throwed
                    // Ignore it.
                    sb.abort();
                }
                catch (error) {
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);
                }
            }
            // IDRList should be clear
            this._idrList.clear();
            // pending segments should be discard
            var ps = this._pendingSegments[type];
            ps.splice(0, ps.length);
            if (this._mediaSource.readyState === 'closed') {
                // Parent MediaSource object has been detached from HTMLMediaElement
                continue;
            }
            // record ranges to be remove from SourceBuffer
            for (var i = 0; i < sb.buffered.length; i++) {
                var start = sb.buffered.start(i);
                var end = sb.buffered.end(i);
                this._pendingRemoveRanges[type].push({ start: start, end: end });
            }
            // if sb is not updating, let's remove ranges now!
            if (!sb.updating) {
                this._doRemoveRanges();
            }
            // Safari 10 may get InvalidStateError in the later appendBuffer() after SourceBuffer.remove() call
            // Internal parser's state may be invalid at this time. Re-append last InitSegment to workaround.
            // Related issue: https://bugs.webkit.org/show_bug.cgi?id=159230
            if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari) {
                var lastInitSegment = this._lastInitSegments[type];
                if (lastInitSegment) {
                    this._pendingSegments[type].push(lastInitSegment);
                    if (!sb.updating) {
                        this._doAppendSegments();
                    }
                }
            }
        }
    };
    MSEController.prototype.endOfStream = function () {
        var ms = this._mediaSource;
        var sb = this._sourceBuffers;
        if (!ms || ms.readyState !== 'open') {
            if (ms && ms.readyState === 'closed' && this._hasPendingSegments()) {
                // If MediaSource hasn't turned into open state, and there're pending segments
                // Mark pending endOfStream, defer call until all pending segments appended complete
                this._hasPendingEos = true;
            }
            return;
        }
        if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {
            // If any sourcebuffer is updating, defer endOfStream operation
            // See _onSourceBufferUpdateEnd()
            this._hasPendingEos = true;
        }
        else {
            this._hasPendingEos = false;
            // Notify media data loading complete
            // This is helpful for correcting total duration to match last media segment
            // Otherwise MediaElement's ended event may not be triggered
            ms.endOfStream();
        }
    };
    MSEController.prototype.getNearestKeyframe = function (dts) {
        return this._idrList.getLastSyncPointBeforeDts(dts);
    };
    MSEController.prototype._needCleanupSourceBuffer = function () {
        if (!this._config.autoCleanupSourceBuffer) {
            return false;
        }
        var currentTime = this._mediaElement.currentTime;
        for (var type in this._sourceBuffers) {
            var sb = this._sourceBuffers[type];
            if (sb) {
                var buffered = sb.buffered;
                if (buffered.length >= 1) {
                    if (currentTime - buffered.start(0) >= this._config.autoCleanupMaxBackwardDuration) {
                        return true;
                    }
                }
            }
        }
        return false;
    };
    MSEController.prototype._doCleanupSourceBuffer = function () {
        var currentTime = this._mediaElement.currentTime;
        for (var type in this._sourceBuffers) {
            var sb = this._sourceBuffers[type];
            if (sb) {
                var buffered = sb.buffered;
                var doRemove = false;
                for (var i = 0; i < buffered.length; i++) {
                    var start = buffered.start(i);
                    var end = buffered.end(i);
                    if (start <= currentTime && currentTime < end + 3) { // padding 3 seconds
                        if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {
                            doRemove = true;
                            var removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;
                            this._pendingRemoveRanges[type].push({ start: start, end: removeEnd });
                        }
                    }
                    else if (end < currentTime) {
                        doRemove = true;
                        this._pendingRemoveRanges[type].push({ start: start, end: end });
                    }
                }
                if (doRemove && !sb.updating) {
                    this._doRemoveRanges();
                }
            }
        }
    };
    MSEController.prototype._updateMediaSourceDuration = function () {
        var sb = this._sourceBuffers;
        if (this._mediaElement.readyState === 0 || this._mediaSource.readyState !== 'open') {
            return;
        }
        if ((sb.video && sb.video.updating) || (sb.audio && sb.audio.updating)) {
            return;
        }
        var current = this._mediaSource.duration;
        var target = this._pendingMediaDuration;
        if (target > 0 && (isNaN(current) || target > current)) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, "Update MediaSource duration from " + current + " to " + target);
            this._mediaSource.duration = target;
        }
        this._requireSetMediaDuration = false;
        this._pendingMediaDuration = 0;
    };
    MSEController.prototype._doRemoveRanges = function () {
        for (var type in this._pendingRemoveRanges) {
            if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {
                continue;
            }
            var sb = this._sourceBuffers[type];
            var ranges = this._pendingRemoveRanges[type];
            while (ranges.length && !sb.updating) {
                var range = ranges.shift();
                sb.remove(range.start, range.end);
            }
        }
    };
    MSEController.prototype._doAppendSegments = function () {
        var pendingSegments = this._pendingSegments;
        for (var type in pendingSegments) {
            if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {
                continue;
            }
            if (pendingSegments[type].length > 0) {
                var segment = pendingSegments[type].shift();
                if (segment.timestampOffset) {
                    // For MPEG audio stream in MSE, if unbuffered-seeking occurred
                    // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.
                    var currentOffset = this._sourceBuffers[type].timestampOffset;
                    var targetOffset = segment.timestampOffset / 1000; // in seconds
                    var delta = Math.abs(currentOffset - targetOffset);
                    if (delta > 0.1) { // If time delta > 100ms
                        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, "Update MPEG audio timestampOffset from " + currentOffset + " to " + targetOffset);
                        this._sourceBuffers[type].timestampOffset = targetOffset;
                    }
                    delete segment.timestampOffset;
                }
                if (!segment.data || segment.data.byteLength === 0) {
                    // Ignore empty buffer
                    continue;
                }
                try {
                    this._sourceBuffers[type].appendBuffer(segment.data);
                    this._isBufferFull = false;
                    if (type === 'video' && segment.hasOwnProperty('info')) {
                        this._idrList.appendArray(segment.info.syncPoints);
                    }
                }
                catch (error) {
                    this._pendingSegments[type].unshift(segment);
                    if (error.code === 22) { // QuotaExceededError
                        /* Notice that FireFox may not throw QuotaExceededError if SourceBuffer is full
                         * Currently we can only do lazy-load to avoid SourceBuffer become scattered.
                         * SourceBuffer eviction policy may be changed in future version of FireFox.
                         *
                         * Related issues:
                         * https://bugzilla.mozilla.org/show_bug.cgi?id=1279885
                         * https://bugzilla.mozilla.org/show_bug.cgi?id=1280023
                         */
                        // report buffer full, abort network IO
                        if (!this._isBufferFull) {
                            this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.BUFFER_FULL);
                        }
                        this._isBufferFull = true;
                    }
                    else {
                        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, error.message);
                        this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, { code: error.code, msg: error.message });
                    }
                }
            }
        }
    };
    MSEController.prototype._onSourceOpen = function () {
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MediaSource onSourceOpen');
        this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);
        // deferred sourcebuffer creation / initialization
        if (this._pendingSourceBufferInit.length > 0) {
            var pendings = this._pendingSourceBufferInit;
            while (pendings.length) {
                var segment = pendings.shift();
                this.appendInitSegment(segment, true);
            }
        }
        // there may be some pending media segments, append them
        if (this._hasPendingSegments()) {
            this._doAppendSegments();
        }
        this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SOURCE_OPEN);
    };
    MSEController.prototype._onSourceEnded = function () {
        // fired on endOfStream
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MediaSource onSourceEnded');
    };
    MSEController.prototype._onSourceClose = function () {
        // fired on detaching from media element
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MediaSource onSourceClose');
        if (this._mediaSource && this.e != null) {
            this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);
            this._mediaSource.removeEventListener('sourceended', this.e.onSourceEnded);
            this._mediaSource.removeEventListener('sourceclose', this.e.onSourceClose);
        }
    };
    MSEController.prototype._hasPendingSegments = function () {
        var ps = this._pendingSegments;
        return ps.video.length > 0 || ps.audio.length > 0;
    };
    MSEController.prototype._hasPendingRemoveRanges = function () {
        var prr = this._pendingRemoveRanges;
        return prr.video.length > 0 || prr.audio.length > 0;
    };
    MSEController.prototype._onSourceBufferUpdateEnd = function () {
        if (this._requireSetMediaDuration) {
            this._updateMediaSourceDuration();
        }
        else if (this._hasPendingRemoveRanges()) {
            this._doRemoveRanges();
        }
        else if (this._hasPendingSegments()) {
            this._doAppendSegments();
        }
        else if (this._hasPendingEos) {
            this.endOfStream();
        }
        this._emitter.emit(_mse_events_js__WEBPACK_IMPORTED_MODULE_3__.default.UPDATE_END);
    };
    MSEController.prototype._onSourceBufferError = function (e) {
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, "SourceBuffer Error: " + e);
        // this error might not always be fatal, just ignore it
    };
    return MSEController;
}());
/* harmony default export */ __webpack_exports__["default"] = (MSEController);


/***/ }),

/***/ "./src/core/mse-events.js":
/*!********************************!*\
  !*** ./src/core/mse-events.js ***!
  \********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var MSEEvents = {
    ERROR: 'error',
    SOURCE_OPEN: 'source_open',
    UPDATE_END: 'update_end',
    BUFFER_FULL: 'buffer_full'
};
/* harmony default export */ __webpack_exports__["default"] = (MSEEvents);


/***/ }),

/***/ "./src/core/transmuxer.js":
/*!********************************!*\
  !*** ./src/core/transmuxer.js ***!
  \********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! webworkify-webpack */ "./node_modules/webworkify-webpack/index.js");
/* harmony import */ var webworkify_webpack__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(webworkify_webpack__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/logging-control.js */ "./src/utils/logging-control.js");
/* harmony import */ var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./transmuxing-controller.js */ "./src/core/transmuxing-controller.js");
/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./transmuxing-events.js */ "./src/core/transmuxing-events.js");
/* harmony import */ var _media_info_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./media-info.js */ "./src/core/media-info.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */







var Transmuxer = /** @class */ (function () {
    function Transmuxer(mediaDataSource, config) {
        this.TAG = 'Transmuxer';
        this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();
        if (config.enableWorker && typeof (Worker) !== 'undefined') {
            try {
                this._worker = webworkify_webpack__WEBPACK_IMPORTED_MODULE_1___default()(/*require.resolve*/(/*! ./transmuxing-worker */ "./src/core/transmuxing-worker.js"));
                this._workerDestroying = false;
                this._worker.addEventListener('message', this._onWorkerMessage.bind(this));
                this._worker.postMessage({ cmd: 'init', param: [mediaDataSource, config] });
                this.e = {
                    onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this)
                };
                _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__.default.registerListener(this.e.onLoggingConfigChanged);
                this._worker.postMessage({ cmd: 'logging_config', param: _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__.default.getConfig() });
            }
            catch (error) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__.default.e(this.TAG, 'Error while initialize transmuxing worker, fallback to inline transmuxing');
                this._worker = null;
                this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_4__.default(mediaDataSource, config);
            }
        }
        else {
            this._controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_4__.default(mediaDataSource, config);
        }
        if (this._controller) {
            var ctl = this._controller;
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR, this._onIOError.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR, this._onDemuxError.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT, this._onInitSegment.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT, this._onMediaSegment.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE, this._onLoadingComplete.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO, this._onMediaInfo.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED, this._onMetaDataArrived.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO, this._onStatisticsInfo.bind(this));
            ctl.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this));
        }
    }
    Transmuxer.prototype.destroy = function () {
        if (this._worker) {
            if (!this._workerDestroying) {
                this._workerDestroying = true;
                this._worker.postMessage({ cmd: 'destroy' });
                _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_3__.default.removeListener(this.e.onLoggingConfigChanged);
                this.e = null;
            }
        }
        else {
            this._controller.destroy();
            this._controller = null;
        }
        this._emitter.removeAllListeners();
        this._emitter = null;
    };
    Transmuxer.prototype.on = function (event, listener) {
        this._emitter.addListener(event, listener);
    };
    Transmuxer.prototype.off = function (event, listener) {
        this._emitter.removeListener(event, listener);
    };
    Transmuxer.prototype.hasWorker = function () {
        return this._worker != null;
    };
    Transmuxer.prototype.open = function () {
        if (this._worker) {
            this._worker.postMessage({ cmd: 'start' });
        }
        else {
            this._controller.start();
        }
    };
    Transmuxer.prototype.close = function () {
        if (this._worker) {
            this._worker.postMessage({ cmd: 'stop' });
        }
        else {
            this._controller.stop();
        }
    };
    Transmuxer.prototype.seek = function (milliseconds) {
        if (this._worker) {
            this._worker.postMessage({ cmd: 'seek', param: milliseconds });
        }
        else {
            this._controller.seek(milliseconds);
        }
    };
    Transmuxer.prototype.pause = function () {
        if (this._worker) {
            this._worker.postMessage({ cmd: 'pause' });
        }
        else {
            this._controller.pause();
        }
    };
    Transmuxer.prototype.resume = function () {
        if (this._worker) {
            this._worker.postMessage({ cmd: 'resume' });
        }
        else {
            this._controller.resume();
        }
    };
    Transmuxer.prototype._onInitSegment = function (type, initSegment) {
        var _this = this;
        // do async invoke
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT, type, initSegment);
        });
    };
    Transmuxer.prototype._onMediaSegment = function (type, mediaSegment) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT, type, mediaSegment);
        });
    };
    Transmuxer.prototype._onLoadingComplete = function () {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE);
        });
    };
    Transmuxer.prototype._onRecoveredEarlyEof = function () {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF);
        });
    };
    Transmuxer.prototype._onMediaInfo = function (mediaInfo) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO, mediaInfo);
        });
    };
    Transmuxer.prototype._onMetaDataArrived = function (metadata) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED, metadata);
        });
    };
    Transmuxer.prototype._onScriptDataArrived = function (data) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED, data);
        });
    };
    Transmuxer.prototype._onStatisticsInfo = function (statisticsInfo) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO, statisticsInfo);
        });
    };
    Transmuxer.prototype._onIOError = function (type, info) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR, type, info);
        });
    };
    Transmuxer.prototype._onDemuxError = function (type, info) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR, type, info);
        });
    };
    Transmuxer.prototype._onRecommendSeekpoint = function (milliseconds) {
        var _this = this;
        Promise.resolve().then(function () {
            _this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT, milliseconds);
        });
    };
    Transmuxer.prototype._onLoggingConfigChanged = function (config) {
        if (this._worker) {
            this._worker.postMessage({ cmd: 'logging_config', param: config });
        }
    };
    Transmuxer.prototype._onWorkerMessage = function (e) {
        var message = e.data;
        var data = message.data;
        if (message.msg === 'destroyed' || this._workerDestroying) {
            this._workerDestroying = false;
            this._worker.terminate();
            this._worker = null;
            return;
        }
        switch (message.msg) {
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT:
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT:
                this._emitter.emit(message.msg, data.type, data.data);
                break;
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE:
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF:
                this._emitter.emit(message.msg);
                break;
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO:
                Object.setPrototypeOf(data, _media_info_js__WEBPACK_IMPORTED_MODULE_6__.default.prototype);
                this._emitter.emit(message.msg, data);
                break;
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED:
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED:
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO:
                this._emitter.emit(message.msg, data);
                break;
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR:
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR:
                this._emitter.emit(message.msg, data.type, data.info);
                break;
            case _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT:
                this._emitter.emit(message.msg, data);
                break;
            case 'logcat_callback':
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_2__.default.emitter.emit('log', data.type, data.logcat);
                break;
            default:
                break;
        }
    };
    return Transmuxer;
}());
/* harmony default export */ __webpack_exports__["default"] = (Transmuxer);


/***/ }),

/***/ "./src/core/transmuxing-controller.js":
/*!********************************************!*\
  !*** ./src/core/transmuxing-controller.js ***!
  \********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ "./src/utils/browser.js");
/* harmony import */ var _media_info_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./media-info.js */ "./src/core/media-info.js");
/* harmony import */ var _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../demux/flv-demuxer.js */ "./src/demux/flv-demuxer.js");
/* harmony import */ var _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../remux/mp4-remuxer.js */ "./src/remux/mp4-remuxer.js");
/* harmony import */ var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../demux/demux-errors.js */ "./src/demux/demux-errors.js");
/* harmony import */ var _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../io/io-controller.js */ "./src/io/io-controller.js");
/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./transmuxing-events.js */ "./src/core/transmuxing-events.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */









// Transmuxing (IO, Demuxing, Remuxing) controller, with multipart support
var TransmuxingController = /** @class */ (function () {
    function TransmuxingController(mediaDataSource, config) {
        this.TAG = 'TransmuxingController';
        this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();
        this._config = config;
        // treat single part media as multipart media, which has only one segment
        if (!mediaDataSource.segments) {
            mediaDataSource.segments = [{
                    duration: mediaDataSource.duration,
                    filesize: mediaDataSource.filesize,
                    url: mediaDataSource.url
                }];
        }
        // fill in default IO params if not exists
        if (typeof mediaDataSource.cors !== 'boolean') {
            mediaDataSource.cors = true;
        }
        if (typeof mediaDataSource.withCredentials !== 'boolean') {
            mediaDataSource.withCredentials = false;
        }
        this._mediaDataSource = mediaDataSource;
        this._currentSegmentIndex = 0;
        var totalDuration = 0;
        this._mediaDataSource.segments.forEach(function (segment) {
            // timestampBase for each segment, and calculate total duration
            segment.timestampBase = totalDuration;
            totalDuration += segment.duration;
            // params needed by IOController
            segment.cors = mediaDataSource.cors;
            segment.withCredentials = mediaDataSource.withCredentials;
            // referrer policy control, if exist
            if (config.referrerPolicy) {
                segment.referrerPolicy = config.referrerPolicy;
            }
        });
        if (!isNaN(totalDuration) && this._mediaDataSource.duration !== totalDuration) {
            this._mediaDataSource.duration = totalDuration;
        }
        this._mediaInfo = null;
        this._demuxer = null;
        this._remuxer = null;
        this._ioctl = null;
        this._pendingSeekTime = null;
        this._pendingResolveSeekPoint = null;
        this._statisticsReporter = null;
    }
    TransmuxingController.prototype.destroy = function () {
        this._mediaInfo = null;
        this._mediaDataSource = null;
        if (this._statisticsReporter) {
            this._disableStatisticsReporter();
        }
        if (this._ioctl) {
            this._ioctl.destroy();
            this._ioctl = null;
        }
        if (this._demuxer) {
            this._demuxer.destroy();
            this._demuxer = null;
        }
        if (this._remuxer) {
            this._remuxer.destroy();
            this._remuxer = null;
        }
        this._emitter.removeAllListeners();
        this._emitter = null;
    };
    TransmuxingController.prototype.on = function (event, listener) {
        this._emitter.addListener(event, listener);
    };
    TransmuxingController.prototype.off = function (event, listener) {
        this._emitter.removeListener(event, listener);
    };
    TransmuxingController.prototype.start = function () {
        this._loadSegment(0);
        this._enableStatisticsReporter();
    };
    TransmuxingController.prototype._loadSegment = function (segmentIndex, optionalFrom) {
        this._currentSegmentIndex = segmentIndex;
        var dataSource = this._mediaDataSource.segments[segmentIndex];
        var ioctl = this._ioctl = new _io_io_controller_js__WEBPACK_IMPORTED_MODULE_7__.default(dataSource, this._config, segmentIndex);
        ioctl.onError = this._onIOException.bind(this);
        ioctl.onSeeked = this._onIOSeeked.bind(this);
        ioctl.onComplete = this._onIOComplete.bind(this);
        ioctl.onRedirect = this._onIORedirect.bind(this);
        ioctl.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this);
        if (optionalFrom) {
            this._demuxer.bindDataSource(this._ioctl);
        }
        else {
            ioctl.onDataArrival = this._onInitChunkArrival.bind(this);
        }
        ioctl.open(optionalFrom);
    };
    TransmuxingController.prototype.stop = function () {
        this._internalAbort();
        this._disableStatisticsReporter();
    };
    TransmuxingController.prototype._internalAbort = function () {
        if (this._ioctl) {
            this._ioctl.destroy();
            this._ioctl = null;
        }
    };
    TransmuxingController.prototype.pause = function () {
        if (this._ioctl && this._ioctl.isWorking()) {
            this._ioctl.pause();
            this._disableStatisticsReporter();
        }
    };
    TransmuxingController.prototype.resume = function () {
        if (this._ioctl && this._ioctl.isPaused()) {
            this._ioctl.resume();
            this._enableStatisticsReporter();
        }
    };
    TransmuxingController.prototype.seek = function (milliseconds) {
        if (this._mediaInfo == null || !this._mediaInfo.isSeekable()) {
            return;
        }
        var targetSegmentIndex = this._searchSegmentIndexContains(milliseconds);
        if (targetSegmentIndex === this._currentSegmentIndex) {
            // intra-segment seeking
            var segmentInfo = this._mediaInfo.segments[targetSegmentIndex];
            if (segmentInfo == undefined) {
                // current segment loading started, but mediainfo hasn't received yet
                // wait for the metadata loaded, then seek to expected position
                this._pendingSeekTime = milliseconds;
            }
            else {
                var keyframe = segmentInfo.getNearestKeyframe(milliseconds);
                this._remuxer.seek(keyframe.milliseconds);
                this._ioctl.seek(keyframe.fileposition);
                // Will be resolved in _onRemuxerMediaSegmentArrival()
                this._pendingResolveSeekPoint = keyframe.milliseconds;
            }
        }
        else {
            // cross-segment seeking
            var targetSegmentInfo = this._mediaInfo.segments[targetSegmentIndex];
            if (targetSegmentInfo == undefined) {
                // target segment hasn't been loaded. We need metadata then seek to expected time
                this._pendingSeekTime = milliseconds;
                this._internalAbort();
                this._remuxer.seek();
                this._remuxer.insertDiscontinuity();
                this._loadSegment(targetSegmentIndex);
                // Here we wait for the metadata loaded, then seek to expected position
            }
            else {
                // We have target segment's metadata, direct seek to target position
                var keyframe = targetSegmentInfo.getNearestKeyframe(milliseconds);
                this._internalAbort();
                this._remuxer.seek(milliseconds);
                this._remuxer.insertDiscontinuity();
                this._demuxer.resetMediaInfo();
                this._demuxer.timestampBase = this._mediaDataSource.segments[targetSegmentIndex].timestampBase;
                this._loadSegment(targetSegmentIndex, keyframe.fileposition);
                this._pendingResolveSeekPoint = keyframe.milliseconds;
                this._reportSegmentMediaInfo(targetSegmentIndex);
            }
        }
        this._enableStatisticsReporter();
    };
    TransmuxingController.prototype._searchSegmentIndexContains = function (milliseconds) {
        var segments = this._mediaDataSource.segments;
        var idx = segments.length - 1;
        for (var i = 0; i < segments.length; i++) {
            if (milliseconds < segments[i].timestampBase) {
                idx = i - 1;
                break;
            }
        }
        return idx;
    };
    TransmuxingController.prototype._onInitChunkArrival = function (data, byteStart) {
        var _this = this;
        var probeData = null;
        var consumed = 0;
        if (byteStart > 0) {
            // IOController seeked immediately after opened, byteStart > 0 callback may received
            this._demuxer.bindDataSource(this._ioctl);
            this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;
            consumed = this._demuxer.parseChunks(data, byteStart);
        }
        else if ((probeData = _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__.default.probe(data)).match) {
            // Always create new FLVDemuxer
            this._demuxer = new _demux_flv_demuxer_js__WEBPACK_IMPORTED_MODULE_4__.default(probeData, this._config);
            if (!this._remuxer) {
                this._remuxer = new _remux_mp4_remuxer_js__WEBPACK_IMPORTED_MODULE_5__.default(this._config);
            }
            var mds = this._mediaDataSource;
            if (mds.duration != undefined && !isNaN(mds.duration)) {
                this._demuxer.overridedDuration = mds.duration;
            }
            if (typeof mds.hasAudio === 'boolean') {
                this._demuxer.overridedHasAudio = mds.hasAudio;
            }
            if (typeof mds.hasVideo === 'boolean') {
                this._demuxer.overridedHasVideo = mds.hasVideo;
            }
            this._demuxer.timestampBase = mds.segments[this._currentSegmentIndex].timestampBase;
            this._demuxer.onError = this._onDemuxException.bind(this);
            this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);
            this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);
            this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);
            this._remuxer.bindDataSource(this._demuxer
                .bindDataSource(this._ioctl));
            this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);
            this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);
            consumed = this._demuxer.parseChunks(data, byteStart);
        }
        else {
            probeData = null;
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, 'Non-FLV, Unsupported media type!');
            Promise.resolve().then(function () {
                _this._internalAbort();
            });
            this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.DEMUX_ERROR, _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_6__.default.FORMAT_UNSUPPORTED, 'Non-FLV, Unsupported media type');
            consumed = 0;
        }
        return consumed;
    };
    TransmuxingController.prototype._onMediaInfo = function (mediaInfo) {
        var _this = this;
        if (this._mediaInfo == null) {
            // Store first segment's mediainfo as global mediaInfo
            this._mediaInfo = Object.assign({}, mediaInfo);
            this._mediaInfo.keyframesIndex = null;
            this._mediaInfo.segments = [];
            this._mediaInfo.segmentCount = this._mediaDataSource.segments.length;
            Object.setPrototypeOf(this._mediaInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__.default.prototype);
        }
        var segmentInfo = Object.assign({}, mediaInfo);
        Object.setPrototypeOf(segmentInfo, _media_info_js__WEBPACK_IMPORTED_MODULE_3__.default.prototype);
        this._mediaInfo.segments[this._currentSegmentIndex] = segmentInfo;
        // notify mediaInfo update
        this._reportSegmentMediaInfo(this._currentSegmentIndex);
        if (this._pendingSeekTime != null) {
            Promise.resolve().then(function () {
                var target = _this._pendingSeekTime;
                _this._pendingSeekTime = null;
                _this.seek(target);
            });
        }
    };
    TransmuxingController.prototype._onMetaDataArrived = function (metadata) {
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.METADATA_ARRIVED, metadata);
    };
    TransmuxingController.prototype._onScriptDataArrived = function (data) {
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.SCRIPTDATA_ARRIVED, data);
    };
    TransmuxingController.prototype._onIOSeeked = function () {
        this._remuxer.insertDiscontinuity();
    };
    TransmuxingController.prototype._onIOComplete = function (extraData) {
        var segmentIndex = extraData;
        var nextSegmentIndex = segmentIndex + 1;
        if (nextSegmentIndex < this._mediaDataSource.segments.length) {
            this._internalAbort();
            this._remuxer.flushStashedSamples();
            this._loadSegment(nextSegmentIndex);
        }
        else {
            this._remuxer.flushStashedSamples();
            this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.LOADING_COMPLETE);
            this._disableStatisticsReporter();
        }
    };
    TransmuxingController.prototype._onIORedirect = function (redirectedURL) {
        var segmentIndex = this._ioctl.extraData;
        this._mediaDataSource.segments[segmentIndex].redirectedURL = redirectedURL;
    };
    TransmuxingController.prototype._onIORecoveredEarlyEof = function () {
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.RECOVERED_EARLY_EOF);
    };
    TransmuxingController.prototype._onIOException = function (type, info) {
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, "IOException: type = " + type + ", code = " + info.code + ", msg = " + info.msg);
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.IO_ERROR, type, info);
        this._disableStatisticsReporter();
    };
    TransmuxingController.prototype._onDemuxException = function (type, info) {
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.e(this.TAG, "DemuxException: type = " + type + ", info = " + info);
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.DEMUX_ERROR, type, info);
    };
    TransmuxingController.prototype._onRemuxerInitSegmentArrival = function (type, initSegment) {
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.INIT_SEGMENT, type, initSegment);
    };
    TransmuxingController.prototype._onRemuxerMediaSegmentArrival = function (type, mediaSegment) {
        if (this._pendingSeekTime != null) {
            // Media segments after new-segment cross-seeking should be dropped.
            return;
        }
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.MEDIA_SEGMENT, type, mediaSegment);
        // Resolve pending seekPoint
        if (this._pendingResolveSeekPoint != null && type === 'video') {
            var syncPoints = mediaSegment.info.syncPoints;
            var seekpoint = this._pendingResolveSeekPoint;
            this._pendingResolveSeekPoint = null;
            // Safari: Pass PTS for recommend_seekpoint
            if (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari && syncPoints.length > 0 && syncPoints[0].originalDts === seekpoint) {
                seekpoint = syncPoints[0].pts;
            }
            // else: use original DTS (keyframe.milliseconds)
            this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.RECOMMEND_SEEKPOINT, seekpoint);
        }
    };
    TransmuxingController.prototype._enableStatisticsReporter = function () {
        if (this._statisticsReporter == null) {
            this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);
        }
    };
    TransmuxingController.prototype._disableStatisticsReporter = function () {
        if (this._statisticsReporter) {
            self.clearInterval(this._statisticsReporter);
            this._statisticsReporter = null;
        }
    };
    TransmuxingController.prototype._reportSegmentMediaInfo = function (segmentIndex) {
        var segmentInfo = this._mediaInfo.segments[segmentIndex];
        var exportInfo = Object.assign({}, segmentInfo);
        exportInfo.duration = this._mediaInfo.duration;
        exportInfo.segmentCount = this._mediaInfo.segmentCount;
        delete exportInfo.segments;
        delete exportInfo.keyframesIndex;
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.MEDIA_INFO, exportInfo);
    };
    TransmuxingController.prototype._reportStatisticsInfo = function () {
        var info = {};
        info.url = this._ioctl.currentURL;
        info.hasRedirect = this._ioctl.hasRedirect;
        if (info.hasRedirect) {
            info.redirectedURL = this._ioctl.currentRedirectedURL;
        }
        info.speed = this._ioctl.currentSpeed;
        info.loaderType = this._ioctl.loaderType;
        info.currentSegmentIndex = this._currentSegmentIndex;
        info.totalSegmentCount = this._mediaDataSource.segments.length;
        this._emitter.emit(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_8__.default.STATISTICS_INFO, info);
    };
    return TransmuxingController;
}());
/* harmony default export */ __webpack_exports__["default"] = (TransmuxingController);


/***/ }),

/***/ "./src/core/transmuxing-events.js":
/*!****************************************!*\
  !*** ./src/core/transmuxing-events.js ***!
  \****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var TransmuxingEvents = {
    IO_ERROR: 'io_error',
    DEMUX_ERROR: 'demux_error',
    INIT_SEGMENT: 'init_segment',
    MEDIA_SEGMENT: 'media_segment',
    LOADING_COMPLETE: 'loading_complete',
    RECOVERED_EARLY_EOF: 'recovered_early_eof',
    MEDIA_INFO: 'media_info',
    METADATA_ARRIVED: 'metadata_arrived',
    SCRIPTDATA_ARRIVED: 'scriptdata_arrived',
    STATISTICS_INFO: 'statistics_info',
    RECOMMEND_SEEKPOINT: 'recommend_seekpoint'
};
/* harmony default export */ __webpack_exports__["default"] = (TransmuxingEvents);


/***/ }),

/***/ "./src/core/transmuxing-worker.js":
/*!****************************************!*\
  !*** ./src/core/transmuxing-worker.js ***!
  \****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logging-control.js */ "./src/utils/logging-control.js");
/* harmony import */ var _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/polyfill.js */ "./src/utils/polyfill.js");
/* harmony import */ var _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transmuxing-controller.js */ "./src/core/transmuxing-controller.js");
/* harmony import */ var _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./transmuxing-events.js */ "./src/core/transmuxing-events.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */




/* post message to worker:
   data: {
       cmd: string
       param: any
   }

   receive message from worker:
   data: {
       msg: string,
       data: any
   }
 */
var TransmuxingWorker = function (self) {
    var TAG = 'TransmuxingWorker';
    var controller = null;
    var logcatListener = onLogcatCallback.bind(this);
    _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_1__.default.install();
    self.addEventListener('message', function (e) {
        switch (e.data.cmd) {
            case 'init':
                controller = new _transmuxing_controller_js__WEBPACK_IMPORTED_MODULE_2__.default(e.data.param[0], e.data.param[1]);
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.IO_ERROR, onIOError.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.DEMUX_ERROR, onDemuxError.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.INIT_SEGMENT, onInitSegment.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_SEGMENT, onMediaSegment.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.LOADING_COMPLETE, onLoadingComplete.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOVERED_EARLY_EOF, onRecoveredEarlyEof.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO, onMediaInfo.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.METADATA_ARRIVED, onMetaDataArrived.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SCRIPTDATA_ARRIVED, onScriptDataArrived.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO, onStatisticsInfo.bind(this));
                controller.on(_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOMMEND_SEEKPOINT, onRecommendSeekpoint.bind(this));
                break;
            case 'destroy':
                if (controller) {
                    controller.destroy();
                    controller = null;
                }
                self.postMessage({ msg: 'destroyed' });
                break;
            case 'start':
                controller.start();
                break;
            case 'stop':
                controller.stop();
                break;
            case 'seek':
                controller.seek(e.data.param);
                break;
            case 'pause':
                controller.pause();
                break;
            case 'resume':
                controller.resume();
                break;
            case 'logging_config': {
                var config = e.data.param;
                _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__.default.applyConfig(config);
                if (config.enableCallback === true) {
                    _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__.default.addLogListener(logcatListener);
                }
                else {
                    _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_0__.default.removeLogListener(logcatListener);
                }
                break;
            }
        }
    });
    function onInitSegment(type, initSegment) {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.INIT_SEGMENT,
            data: {
                type: type,
                data: initSegment
            }
        };
        self.postMessage(obj, [initSegment.data]); // data: ArrayBuffer
    }
    function onMediaSegment(type, mediaSegment) {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_SEGMENT,
            data: {
                type: type,
                data: mediaSegment
            }
        };
        self.postMessage(obj, [mediaSegment.data]); // data: ArrayBuffer
    }
    function onLoadingComplete() {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.LOADING_COMPLETE
        };
        self.postMessage(obj);
    }
    function onRecoveredEarlyEof() {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOVERED_EARLY_EOF
        };
        self.postMessage(obj);
    }
    function onMediaInfo(mediaInfo) {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO,
            data: mediaInfo
        };
        self.postMessage(obj);
    }
    function onMetaDataArrived(metadata) {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.METADATA_ARRIVED,
            data: metadata
        };
        self.postMessage(obj);
    }
    function onScriptDataArrived(data) {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SCRIPTDATA_ARRIVED,
            data: data
        };
        self.postMessage(obj);
    }
    function onStatisticsInfo(statInfo) {
        var obj = {
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO,
            data: statInfo
        };
        self.postMessage(obj);
    }
    function onIOError(type, info) {
        self.postMessage({
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.IO_ERROR,
            data: {
                type: type,
                info: info
            }
        });
    }
    function onDemuxError(type, info) {
        self.postMessage({
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.DEMUX_ERROR,
            data: {
                type: type,
                info: info
            }
        });
    }
    function onRecommendSeekpoint(milliseconds) {
        self.postMessage({
            msg: _transmuxing_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOMMEND_SEEKPOINT,
            data: milliseconds
        });
    }
    function onLogcatCallback(type, str) {
        self.postMessage({
            msg: 'logcat_callback',
            data: {
                type: type,
                logcat: str
            }
        });
    }
};
/* harmony default export */ __webpack_exports__["default"] = (TransmuxingWorker);


/***/ }),

/***/ "./src/demux/amf-parser.js":
/*!*********************************!*\
  !*** ./src/demux/amf-parser.js ***!
  \*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/utf8-conv.js */ "./src/utils/utf8-conv.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */



var le = (function () {
    var buf = new ArrayBuffer(2);
    (new DataView(buf)).setInt16(0, 256, true); // little-endian write
    return (new Int16Array(buf))[0] === 256; // platform-spec read, if equal then LE
})();
var AMF = /** @class */ (function () {
    function AMF() {
    }
    AMF.parseScriptData = function (arrayBuffer, dataOffset, dataSize) {
        var data = {};
        try {
            var name_1 = AMF.parseValue(arrayBuffer, dataOffset, dataSize);
            var value = AMF.parseValue(arrayBuffer, dataOffset + name_1.size, dataSize - name_1.size);
            data[name_1.data] = value.data;
        }
        catch (e) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e('AMF', e.toString());
        }
        return data;
    };
    AMF.parseObject = function (arrayBuffer, dataOffset, dataSize) {
        if (dataSize < 3) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse ScriptDataObject');
        }
        var name = AMF.parseString(arrayBuffer, dataOffset, dataSize);
        var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);
        var isObjectEnd = value.objectEnd;
        return {
            data: {
                name: name.data,
                value: value.data
            },
            size: name.size + value.size,
            objectEnd: isObjectEnd
        };
    };
    AMF.parseVariable = function (arrayBuffer, dataOffset, dataSize) {
        return AMF.parseObject(arrayBuffer, dataOffset, dataSize);
    };
    AMF.parseString = function (arrayBuffer, dataOffset, dataSize) {
        if (dataSize < 2) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse String');
        }
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        var length = v.getUint16(0, !le);
        var str;
        if (length > 0) {
            str = (0,_utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__.default)(new Uint8Array(arrayBuffer, dataOffset + 2, length));
        }
        else {
            str = '';
        }
        return {
            data: str,
            size: 2 + length
        };
    };
    AMF.parseLongString = function (arrayBuffer, dataOffset, dataSize) {
        if (dataSize < 4) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse LongString');
        }
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        var length = v.getUint32(0, !le);
        var str;
        if (length > 0) {
            str = (0,_utils_utf8_conv_js__WEBPACK_IMPORTED_MODULE_1__.default)(new Uint8Array(arrayBuffer, dataOffset + 4, length));
        }
        else {
            str = '';
        }
        return {
            data: str,
            size: 4 + length
        };
    };
    AMF.parseDate = function (arrayBuffer, dataOffset, dataSize) {
        if (dataSize < 10) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data size invalid when parse Date');
        }
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        var timestamp = v.getFloat64(0, !le);
        var localTimeOffset = v.getInt16(8, !le);
        timestamp += localTimeOffset * 60 * 1000; // get UTC time
        return {
            data: new Date(timestamp),
            size: 8 + 2
        };
    };
    AMF.parseValue = function (arrayBuffer, dataOffset, dataSize) {
        if (dataSize < 1) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.IllegalStateException('Data not enough when parse Value');
        }
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        var offset = 1;
        var type = v.getUint8(0);
        var value;
        var objectEnd = false;
        try {
            switch (type) {
                case 0: // Number(Double) type
                    value = v.getFloat64(1, !le);
                    offset += 8;
                    break;
                case 1: { // Boolean type
                    var b = v.getUint8(1);
                    value = b ? true : false;
                    offset += 1;
                    break;
                }
                case 2: { // String type
                    var amfstr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);
                    value = amfstr.data;
                    offset += amfstr.size;
                    break;
                }
                case 3: { // Object(s) type
                    value = {};
                    var terminal = 0; // workaround for malformed Objects which has missing ScriptDataObjectEnd
                    if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {
                        terminal = 3;
                    }
                    while (offset < dataSize - 4) { // 4 === type(UI8) + ScriptDataObjectEnd(UI24)
                        var amfobj = AMF.parseObject(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);
                        if (amfobj.objectEnd)
                            break;
                        value[amfobj.data.name] = amfobj.data.value;
                        offset += amfobj.size;
                    }
                    if (offset <= dataSize - 3) {
                        var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;
                        if (marker === 9) {
                            offset += 3;
                        }
                    }
                    break;
                }
                case 8: { // ECMA array type (Mixed array)
                    value = {};
                    offset += 4; // ECMAArrayLength(UI32)
                    var terminal = 0; // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd
                    if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {
                        terminal = 3;
                    }
                    while (offset < dataSize - 8) { // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24)
                        var amfvar = AMF.parseVariable(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);
                        if (amfvar.objectEnd)
                            break;
                        value[amfvar.data.name] = amfvar.data.value;
                        offset += amfvar.size;
                    }
                    if (offset <= dataSize - 3) {
                        var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;
                        if (marker === 9) {
                            offset += 3;
                        }
                    }
                    break;
                }
                case 9: // ScriptDataObjectEnd
                    value = undefined;
                    offset = 1;
                    objectEnd = true;
                    break;
                case 10: { // Strict array type
                    // ScriptDataValue[n]. NOTE: according to video_file_format_spec_v10_1.pdf
                    value = [];
                    var strictArrayLength = v.getUint32(1, !le);
                    offset += 4;
                    for (var i = 0; i < strictArrayLength; i++) {
                        var val = AMF.parseValue(arrayBuffer, dataOffset + offset, dataSize - offset);
                        value.push(val.data);
                        offset += val.size;
                    }
                    break;
                }
                case 11: { // Date type
                    var date = AMF.parseDate(arrayBuffer, dataOffset + 1, dataSize - 1);
                    value = date.data;
                    offset += date.size;
                    break;
                }
                case 12: { // Long string type
                    var amfLongStr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);
                    value = amfLongStr.data;
                    offset += amfLongStr.size;
                    break;
                }
                default:
                    // ignore and skip
                    offset = dataSize;
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w('AMF', 'Unsupported AMF value type ' + type);
            }
        }
        catch (e) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e('AMF', e.toString());
        }
        return {
            data: value,
            size: offset,
            objectEnd: objectEnd
        };
    };
    return AMF;
}());
/* harmony default export */ __webpack_exports__["default"] = (AMF);


/***/ }),

/***/ "./src/demux/demux-errors.js":
/*!***********************************!*\
  !*** ./src/demux/demux-errors.js ***!
  \***********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var DemuxErrors = {
    OK: 'OK',
    FORMAT_ERROR: 'FormatError',
    FORMAT_UNSUPPORTED: 'FormatUnsupported',
    CODEC_UNSUPPORTED: 'CodecUnsupported'
};
/* harmony default export */ __webpack_exports__["default"] = (DemuxErrors);


/***/ }),

/***/ "./src/demux/exp-golomb.js":
/*!*********************************!*\
  !*** ./src/demux/exp-golomb.js ***!
  \*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// Exponential-Golomb buffer decoder
var ExpGolomb = /** @class */ (function () {
    function ExpGolomb(uint8array) {
        this.TAG = 'ExpGolomb';
        this._buffer = uint8array;
        this._buffer_index = 0;
        this._total_bytes = uint8array.byteLength;
        this._total_bits = uint8array.byteLength * 8;
        this._current_word = 0;
        this._current_word_bits_left = 0;
    }
    ExpGolomb.prototype.destroy = function () {
        this._buffer = null;
    };
    ExpGolomb.prototype._fillCurrentWord = function () {
        var buffer_bytes_left = this._total_bytes - this._buffer_index;
        if (buffer_bytes_left <= 0)
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');
        var bytes_read = Math.min(4, buffer_bytes_left);
        var word = new Uint8Array(4);
        word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));
        this._current_word = new DataView(word.buffer).getUint32(0, false);
        this._buffer_index += bytes_read;
        this._current_word_bits_left = bytes_read * 8;
    };
    ExpGolomb.prototype.readBits = function (bits) {
        if (bits > 32)
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');
        if (bits <= this._current_word_bits_left) {
            var result_1 = this._current_word >>> (32 - bits);
            this._current_word <<= bits;
            this._current_word_bits_left -= bits;
            return result_1;
        }
        var result = this._current_word_bits_left ? this._current_word : 0;
        result = result >>> (32 - this._current_word_bits_left);
        var bits_need_left = bits - this._current_word_bits_left;
        this._fillCurrentWord();
        var bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);
        var result2 = this._current_word >>> (32 - bits_read_next);
        this._current_word <<= bits_read_next;
        this._current_word_bits_left -= bits_read_next;
        result = (result << bits_read_next) | result2;
        return result;
    };
    ExpGolomb.prototype.readBool = function () {
        return this.readBits(1) === 1;
    };
    ExpGolomb.prototype.readByte = function () {
        return this.readBits(8);
    };
    ExpGolomb.prototype._skipLeadingZero = function () {
        var zero_count;
        for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {
            if (0 !== (this._current_word & (0x80000000 >>> zero_count))) {
                this._current_word <<= zero_count;
                this._current_word_bits_left -= zero_count;
                return zero_count;
            }
        }
        this._fillCurrentWord();
        return zero_count + this._skipLeadingZero();
    };
    ExpGolomb.prototype.readUEG = function () {
        var leading_zeros = this._skipLeadingZero();
        return this.readBits(leading_zeros + 1) - 1;
    };
    ExpGolomb.prototype.readSEG = function () {
        var value = this.readUEG();
        if (value & 0x01) {
            return (value + 1) >>> 1;
        }
        else {
            return -1 * (value >>> 1);
        }
    };
    return ExpGolomb;
}());
/* harmony default export */ __webpack_exports__["default"] = (ExpGolomb);


/***/ }),

/***/ "./src/demux/flv-demuxer.js":
/*!**********************************!*\
  !*** ./src/demux/flv-demuxer.js ***!
  \**********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./amf-parser.js */ "./src/demux/amf-parser.js");
/* harmony import */ var _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sps-parser.js */ "./src/demux/sps-parser.js");
/* harmony import */ var _demux_errors_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./demux-errors.js */ "./src/demux/demux-errors.js");
/* harmony import */ var _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/media-info.js */ "./src/core/media-info.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */






function Swap16(src) {
    return (((src >>> 8) & 0xFF) |
        ((src & 0xFF) << 8));
}
function Swap32(src) {
    return (((src & 0xFF000000) >>> 24) |
        ((src & 0x00FF0000) >>> 8) |
        ((src & 0x0000FF00) << 8) |
        ((src & 0x000000FF) << 24));
}
function ReadBig32(array, index) {
    return ((array[index] << 24) |
        (array[index + 1] << 16) |
        (array[index + 2] << 8) |
        (array[index + 3]));
}
var FLVDemuxer = /** @class */ (function () {
    function FLVDemuxer(probeData, config) {
        this.TAG = 'FLVDemuxer';
        this._config = config;
        this._onError = null;
        this._onMediaInfo = null;
        this._onMetaDataArrived = null;
        this._onScriptDataArrived = null;
        this._onTrackMetadata = null;
        this._onDataAvailable = null;
        this._dataOffset = probeData.dataOffset;
        this._firstParse = true;
        this._dispatch = false;
        this._hasAudio = probeData.hasAudioTrack;
        this._hasVideo = probeData.hasVideoTrack;
        this._hasAudioFlagOverrided = false;
        this._hasVideoFlagOverrided = false;
        this._audioInitialMetadataDispatched = false;
        this._videoInitialMetadataDispatched = false;
        this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__.default();
        this._mediaInfo.hasAudio = this._hasAudio;
        this._mediaInfo.hasVideo = this._hasVideo;
        this._metadata = null;
        this._audioMetadata = null;
        this._videoMetadata = null;
        this._naluLengthSize = 4;
        this._timestampBase = 0; // int32, in milliseconds
        this._timescale = 1000;
        this._duration = 0; // int32, in milliseconds
        this._durationOverrided = false;
        this._referenceFrameRate = {
            fixed: true,
            fps: 23.976,
            fps_num: 23976,
            fps_den: 1000
        };
        this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000];
        this._mpegSamplingRates = [
            96000, 88200, 64000, 48000, 44100, 32000,
            24000, 22050, 16000, 12000, 11025, 8000, 7350
        ];
        this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0];
        this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0];
        this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0];
        this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1];
        this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1];
        this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1];
        this._videoTrack = { type: 'video', id: 1, sequenceNumber: 0, samples: [], length: 0 };
        this._audioTrack = { type: 'audio', id: 2, sequenceNumber: 0, samples: [], length: 0 };
        this._littleEndian = (function () {
            var buf = new ArrayBuffer(2);
            (new DataView(buf)).setInt16(0, 256, true); // little-endian write
            return (new Int16Array(buf))[0] === 256; // platform-spec read, if equal then LE
        })();
    }
    FLVDemuxer.prototype.destroy = function () {
        this._mediaInfo = null;
        this._metadata = null;
        this._audioMetadata = null;
        this._videoMetadata = null;
        this._videoTrack = null;
        this._audioTrack = null;
        this._onError = null;
        this._onMediaInfo = null;
        this._onMetaDataArrived = null;
        this._onScriptDataArrived = null;
        this._onTrackMetadata = null;
        this._onDataAvailable = null;
    };
    FLVDemuxer.probe = function (buffer) {
        var data = new Uint8Array(buffer);
        var mismatch = { match: false };
        if (data[0] !== 0x46 || data[1] !== 0x4C || data[2] !== 0x56 || data[3] !== 0x01) {
            return mismatch;
        }
        var hasAudio = ((data[4] & 4) >>> 2) !== 0;
        var hasVideo = (data[4] & 1) !== 0;
        var offset = ReadBig32(data, 5);
        if (offset < 9) {
            return mismatch;
        }
        return {
            match: true,
            consumed: offset,
            dataOffset: offset,
            hasAudioTrack: hasAudio,
            hasVideoTrack: hasVideo
        };
    };
    FLVDemuxer.prototype.bindDataSource = function (loader) {
        loader.onDataArrival = this.parseChunks.bind(this);
        return this;
    };
    Object.defineProperty(FLVDemuxer.prototype, "onTrackMetadata", {
        // prototype: function(type: string, metadata: any): void
        get: function () {
            return this._onTrackMetadata;
        },
        set: function (callback) {
            this._onTrackMetadata = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "onMediaInfo", {
        // prototype: function(mediaInfo: MediaInfo): void
        get: function () {
            return this._onMediaInfo;
        },
        set: function (callback) {
            this._onMediaInfo = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "onMetaDataArrived", {
        get: function () {
            return this._onMetaDataArrived;
        },
        set: function (callback) {
            this._onMetaDataArrived = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "onScriptDataArrived", {
        get: function () {
            return this._onScriptDataArrived;
        },
        set: function (callback) {
            this._onScriptDataArrived = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "onError", {
        // prototype: function(type: number, info: string): void
        get: function () {
            return this._onError;
        },
        set: function (callback) {
            this._onError = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "onDataAvailable", {
        // prototype: function(videoTrack: any, audioTrack: any): void
        get: function () {
            return this._onDataAvailable;
        },
        set: function (callback) {
            this._onDataAvailable = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "timestampBase", {
        // timestamp base for output samples, must be in milliseconds
        get: function () {
            return this._timestampBase;
        },
        set: function (base) {
            this._timestampBase = base;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "overridedDuration", {
        get: function () {
            return this._duration;
        },
        // Force-override media duration. Must be in milliseconds, int32
        set: function (duration) {
            this._durationOverrided = true;
            this._duration = duration;
            this._mediaInfo.duration = duration;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "overridedHasAudio", {
        // Force-override audio track present flag, boolean
        set: function (hasAudio) {
            this._hasAudioFlagOverrided = true;
            this._hasAudio = hasAudio;
            this._mediaInfo.hasAudio = hasAudio;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FLVDemuxer.prototype, "overridedHasVideo", {
        // Force-override video track present flag, boolean
        set: function (hasVideo) {
            this._hasVideoFlagOverrided = true;
            this._hasVideo = hasVideo;
            this._mediaInfo.hasVideo = hasVideo;
        },
        enumerable: false,
        configurable: true
    });
    FLVDemuxer.prototype.resetMediaInfo = function () {
        this._mediaInfo = new _core_media_info_js__WEBPACK_IMPORTED_MODULE_4__.default();
    };
    FLVDemuxer.prototype._isInitialMetadataDispatched = function () {
        if (this._hasAudio && this._hasVideo) { // both audio & video
            return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched;
        }
        if (this._hasAudio && !this._hasVideo) { // audio only
            return this._audioInitialMetadataDispatched;
        }
        if (!this._hasAudio && this._hasVideo) { // video only
            return this._videoInitialMetadataDispatched;
        }
        return false;
    };
    // function parseChunks(chunk: ArrayBuffer, byteStart: number): number;
    FLVDemuxer.prototype.parseChunks = function (chunk, byteStart) {
        if (!this._onError || !this._onMediaInfo || !this._onTrackMetadata || !this._onDataAvailable) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified');
        }
        var offset = 0;
        var le = this._littleEndian;
        if (byteStart === 0) { // buffer with FLV header
            if (chunk.byteLength > 13) {
                var probeData = FLVDemuxer.probe(chunk);
                offset = probeData.dataOffset;
            }
            else {
                return 0;
            }
        }
        if (this._firstParse) { // handle PreviousTagSize0 before Tag1
            this._firstParse = false;
            if (byteStart + offset !== this._dataOffset) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'First time parsing but chunk byteStart invalid!');
            }
            var v = new DataView(chunk, offset);
            var prevTagSize0 = v.getUint32(0, !le);
            if (prevTagSize0 !== 0) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'PrevTagSize0 !== 0 !!!');
            }
            offset += 4;
        }
        while (offset < chunk.byteLength) {
            this._dispatch = true;
            var v = new DataView(chunk, offset);
            if (offset + 11 + 4 > chunk.byteLength) {
                // data not enough for parsing an flv tag
                break;
            }
            var tagType = v.getUint8(0);
            var dataSize = v.getUint32(0, !le) & 0x00FFFFFF;
            if (offset + 11 + dataSize + 4 > chunk.byteLength) {
                // data not enough for parsing actual data body
                break;
            }
            if (tagType !== 8 && tagType !== 9 && tagType !== 18) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, "Unsupported tag type " + tagType + ", skipped");
                // consume the whole tag (skip it)
                offset += 11 + dataSize + 4;
                continue;
            }
            var ts2 = v.getUint8(4);
            var ts1 = v.getUint8(5);
            var ts0 = v.getUint8(6);
            var ts3 = v.getUint8(7);
            var timestamp = ts0 | (ts1 << 8) | (ts2 << 16) | (ts3 << 24);
            var streamId = v.getUint32(7, !le) & 0x00FFFFFF;
            if (streamId !== 0) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Meet tag which has StreamID != 0!');
            }
            var dataOffset = offset + 11;
            switch (tagType) {
                case 8: // Audio
                    this._parseAudioData(chunk, dataOffset, dataSize, timestamp);
                    break;
                case 9: // Video
                    this._parseVideoData(chunk, dataOffset, dataSize, timestamp, byteStart + offset);
                    break;
                case 18: // ScriptDataObject
                    this._parseScriptData(chunk, dataOffset, dataSize);
                    break;
            }
            var prevTagSize = v.getUint32(11 + dataSize, !le);
            if (prevTagSize !== 11 + dataSize) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, "Invalid PrevTagSize " + prevTagSize);
            }
            offset += 11 + dataSize + 4; // tagBody + dataSize + prevTagSize
        }
        // dispatch parsed frames to consumer (typically, the remuxer)
        if (this._isInitialMetadataDispatched()) {
            if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
                this._onDataAvailable(this._audioTrack, this._videoTrack);
            }
        }
        return offset; // consumed bytes, just equals latest offset index
    };
    FLVDemuxer.prototype._parseScriptData = function (arrayBuffer, dataOffset, dataSize) {
        var scriptData = _amf_parser_js__WEBPACK_IMPORTED_MODULE_1__.default.parseScriptData(arrayBuffer, dataOffset, dataSize);
        if (scriptData.hasOwnProperty('onMetaData')) {
            if (scriptData.onMetaData == null || typeof scriptData.onMetaData !== 'object') {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Invalid onMetaData structure!');
                return;
            }
            if (this._metadata) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Found another onMetaData tag!');
            }
            this._metadata = scriptData;
            var onMetaData = this._metadata.onMetaData;
            if (this._onMetaDataArrived) {
                this._onMetaDataArrived(Object.assign({}, onMetaData));
            }
            if (typeof onMetaData.hasAudio === 'boolean') { // hasAudio
                if (this._hasAudioFlagOverrided === false) {
                    this._hasAudio = onMetaData.hasAudio;
                    this._mediaInfo.hasAudio = this._hasAudio;
                }
            }
            if (typeof onMetaData.hasVideo === 'boolean') { // hasVideo
                if (this._hasVideoFlagOverrided === false) {
                    this._hasVideo = onMetaData.hasVideo;
                    this._mediaInfo.hasVideo = this._hasVideo;
                }
            }
            if (typeof onMetaData.audiodatarate === 'number') { // audiodatarate
                this._mediaInfo.audioDataRate = onMetaData.audiodatarate;
            }
            if (typeof onMetaData.videodatarate === 'number') { // videodatarate
                this._mediaInfo.videoDataRate = onMetaData.videodatarate;
            }
            if (typeof onMetaData.width === 'number') { // width
                this._mediaInfo.width = onMetaData.width;
            }
            if (typeof onMetaData.height === 'number') { // height
                this._mediaInfo.height = onMetaData.height;
            }
            if (typeof onMetaData.duration === 'number') { // duration
                if (!this._durationOverrided) {
                    var duration = Math.floor(onMetaData.duration * this._timescale);
                    this._duration = duration;
                    this._mediaInfo.duration = duration;
                }
            }
            else {
                this._mediaInfo.duration = 0;
            }
            if (typeof onMetaData.framerate === 'number') { // framerate
                var fps_num = Math.floor(onMetaData.framerate * 1000);
                if (fps_num > 0) {
                    var fps = fps_num / 1000;
                    this._referenceFrameRate.fixed = true;
                    this._referenceFrameRate.fps = fps;
                    this._referenceFrameRate.fps_num = fps_num;
                    this._referenceFrameRate.fps_den = 1000;
                    this._mediaInfo.fps = fps;
                }
            }
            if (typeof onMetaData.keyframes === 'object') { // keyframes
                this._mediaInfo.hasKeyframesIndex = true;
                var keyframes = onMetaData.keyframes;
                this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(keyframes);
                onMetaData.keyframes = null; // keyframes has been extracted, remove it
            }
            else {
                this._mediaInfo.hasKeyframesIndex = false;
            }
            this._dispatch = false;
            this._mediaInfo.metadata = onMetaData;
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed onMetaData');
            if (this._mediaInfo.isComplete()) {
                this._onMediaInfo(this._mediaInfo);
            }
        }
        if (Object.keys(scriptData).length > 0) {
            if (this._onScriptDataArrived) {
                this._onScriptDataArrived(Object.assign({}, scriptData));
            }
        }
    };
    FLVDemuxer.prototype._parseKeyframesIndex = function (keyframes) {
        var times = [];
        var filepositions = [];
        // ignore first keyframe which is actually AVC Sequence Header (AVCDecoderConfigurationRecord)
        for (var i = 1; i < keyframes.times.length; i++) {
            var time = this._timestampBase + Math.floor(keyframes.times[i] * 1000);
            times.push(time);
            filepositions.push(keyframes.filepositions[i]);
        }
        return {
            times: times,
            filepositions: filepositions
        };
    };
    FLVDemuxer.prototype._parseAudioData = function (arrayBuffer, dataOffset, dataSize, tagTimestamp) {
        if (dataSize <= 1) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid audio packet, missing SoundData payload!');
            return;
        }
        if (this._hasAudioFlagOverrided === true && this._hasAudio === false) {
            // If hasAudio: false indicated explicitly in MediaDataSource,
            // Ignore all the audio packets
            return;
        }
        var le = this._littleEndian;
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        var soundSpec = v.getUint8(0);
        var soundFormat = soundSpec >>> 4;
        if (soundFormat !== 2 && soundFormat !== 10) { // MP3 or AAC
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.CODEC_UNSUPPORTED, 'Flv: Unsupported audio codec idx: ' + soundFormat);
            return;
        }
        var soundRate = 0;
        var soundRateIndex = (soundSpec & 12) >>> 2;
        if (soundRateIndex >= 0 && soundRateIndex <= 4) {
            soundRate = this._flvSoundRateTable[soundRateIndex];
        }
        else {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid audio sample rate idx: ' + soundRateIndex);
            return;
        }
        var soundSize = (soundSpec & 2) >>> 1; // unused
        var soundType = (soundSpec & 1);
        var meta = this._audioMetadata;
        var track = this._audioTrack;
        if (!meta) {
            if (this._hasAudio === false && this._hasAudioFlagOverrided === false) {
                this._hasAudio = true;
                this._mediaInfo.hasAudio = true;
            }
            // initial metadata
            meta = this._audioMetadata = {};
            meta.type = 'audio';
            meta.id = track.id;
            meta.timescale = this._timescale;
            meta.duration = this._duration;
            meta.audioSampleRate = soundRate;
            meta.channelCount = (soundType === 0 ? 1 : 2);
        }
        if (soundFormat === 10) { // AAC
            var aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);
            if (aacData == undefined) {
                return;
            }
            if (aacData.packetType === 0) { // AAC sequence header (AudioSpecificConfig)
                if (meta.config) {
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Found another AudioSpecificConfig!');
                }
                var misc = aacData.data;
                meta.audioSampleRate = misc.samplingRate;
                meta.channelCount = misc.channelCount;
                meta.codec = misc.codec;
                meta.originalCodec = misc.originalCodec;
                meta.config = misc.config;
                // The decode result of an aac sample is 1024 PCM samples
                meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale;
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed AudioSpecificConfig');
                if (this._isInitialMetadataDispatched()) {
                    // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer
                    if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
                        this._onDataAvailable(this._audioTrack, this._videoTrack);
                    }
                }
                else {
                    this._audioInitialMetadataDispatched = true;
                }
                // then notify new metadata
                this._dispatch = false;
                this._onTrackMetadata('audio', meta);
                var mi = this._mediaInfo;
                mi.audioCodec = meta.originalCodec;
                mi.audioSampleRate = meta.audioSampleRate;
                mi.audioChannelCount = meta.channelCount;
                if (mi.hasVideo) {
                    if (mi.videoCodec != null) {
                        mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
                    }
                }
                else {
                    mi.mimeType = 'video/x-flv; codecs="' + mi.audioCodec + '"';
                }
                if (mi.isComplete()) {
                    this._onMediaInfo(mi);
                }
            }
            else if (aacData.packetType === 1) { // AAC raw frame data
                var dts = this._timestampBase + tagTimestamp;
                var aacSample = { unit: aacData.data, length: aacData.data.byteLength, dts: dts, pts: dts };
                track.samples.push(aacSample);
                track.length += aacData.data.length;
            }
            else {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e(this.TAG, "Flv: Unsupported AAC data type " + aacData.packetType);
            }
        }
        else if (soundFormat === 2) { // MP3
            if (!meta.codec) {
                // We need metadata for mp3 audio track, extract info from frame header
                var misc = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, true);
                if (misc == undefined) {
                    return;
                }
                meta.audioSampleRate = misc.samplingRate;
                meta.channelCount = misc.channelCount;
                meta.codec = misc.codec;
                meta.originalCodec = misc.originalCodec;
                // The decode result of an mp3 sample is 1152 PCM samples
                meta.refSampleDuration = 1152 / meta.audioSampleRate * meta.timescale;
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed MPEG Audio Frame Header');
                this._audioInitialMetadataDispatched = true;
                this._onTrackMetadata('audio', meta);
                var mi = this._mediaInfo;
                mi.audioCodec = meta.codec;
                mi.audioSampleRate = meta.audioSampleRate;
                mi.audioChannelCount = meta.channelCount;
                mi.audioDataRate = misc.bitRate;
                if (mi.hasVideo) {
                    if (mi.videoCodec != null) {
                        mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
                    }
                }
                else {
                    mi.mimeType = 'video/x-flv; codecs="' + mi.audioCodec + '"';
                }
                if (mi.isComplete()) {
                    this._onMediaInfo(mi);
                }
            }
            // This packet is always a valid audio packet, extract it
            var data = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, false);
            if (data == undefined) {
                return;
            }
            var dts = this._timestampBase + tagTimestamp;
            var mp3Sample = { unit: data, length: data.byteLength, dts: dts, pts: dts };
            track.samples.push(mp3Sample);
            track.length += data.length;
        }
    };
    FLVDemuxer.prototype._parseAACAudioData = function (arrayBuffer, dataOffset, dataSize) {
        if (dataSize <= 1) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid AAC packet, missing AACPacketType or/and Data!');
            return;
        }
        var result = {};
        var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
        result.packetType = array[0];
        if (array[0] === 0) {
            result.data = this._parseAACAudioSpecificConfig(arrayBuffer, dataOffset + 1, dataSize - 1);
        }
        else {
            result.data = array.subarray(1);
        }
        return result;
    };
    FLVDemuxer.prototype._parseAACAudioSpecificConfig = function (arrayBuffer, dataOffset, dataSize) {
        var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
        var config = null;
        /* Audio Object Type:
           0: Null
           1: AAC Main
           2: AAC LC
           3: AAC SSR (Scalable Sample Rate)
           4: AAC LTP (Long Term Prediction)
           5: HE-AAC / SBR (Spectral Band Replication)
           6: AAC Scalable
        */
        var audioObjectType = 0;
        var originalAudioObjectType = 0;
        var audioExtensionObjectType = null;
        var samplingIndex = 0;
        var extensionSamplingIndex = null;
        // 5 bits
        audioObjectType = originalAudioObjectType = array[0] >>> 3;
        // 4 bits
        samplingIndex = ((array[0] & 0x07) << 1) | (array[1] >>> 7);
        if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!');
            return;
        }
        var samplingFrequence = this._mpegSamplingRates[samplingIndex];
        // 4 bits
        var channelConfig = (array[1] & 0x78) >>> 3;
        if (channelConfig < 0 || channelConfig >= 8) {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: AAC invalid channel configuration');
            return;
        }
        if (audioObjectType === 5) { // HE-AAC?
            // 4 bits
            extensionSamplingIndex = ((array[1] & 0x07) << 1) | (array[2] >>> 7);
            // 5 bits
            audioExtensionObjectType = (array[2] & 0x7C) >>> 2;
        }
        // workarounds for various browsers
        var userAgent = self.navigator.userAgent.toLowerCase();
        if (userAgent.indexOf('firefox') !== -1) {
            // firefox: use SBR (HE-AAC) if freq less than 24kHz
            if (samplingIndex >= 6) {
                audioObjectType = 5;
                config = new Array(4);
                extensionSamplingIndex = samplingIndex - 3;
            }
            else { // use LC-AAC
                audioObjectType = 2;
                config = new Array(2);
                extensionSamplingIndex = samplingIndex;
            }
        }
        else if (userAgent.indexOf('android') !== -1) {
            // android: always use LC-AAC
            audioObjectType = 2;
            config = new Array(2);
            extensionSamplingIndex = samplingIndex;
        }
        else {
            // for other browsers, e.g. chrome...
            // Always use HE-AAC to make it easier to switch aac codec profile
            audioObjectType = 5;
            extensionSamplingIndex = samplingIndex;
            config = new Array(4);
            if (samplingIndex >= 6) {
                extensionSamplingIndex = samplingIndex - 3;
            }
            else if (channelConfig === 1) { // Mono channel
                audioObjectType = 2;
                config = new Array(2);
                extensionSamplingIndex = samplingIndex;
            }
        }
        config[0] = audioObjectType << 3;
        config[0] |= (samplingIndex & 0x0F) >>> 1;
        config[1] = (samplingIndex & 0x0F) << 7;
        config[1] |= (channelConfig & 0x0F) << 3;
        if (audioObjectType === 5) {
            config[1] |= ((extensionSamplingIndex & 0x0F) >>> 1);
            config[2] = (extensionSamplingIndex & 0x01) << 7;
            // extended audio object type: force to 2 (LC-AAC)
            config[2] |= (2 << 2);
            config[3] = 0;
        }
        return {
            config: config,
            samplingRate: samplingFrequence,
            channelCount: channelConfig,
            codec: 'mp4a.40.' + audioObjectType,
            originalCodec: 'mp4a.40.' + originalAudioObjectType
        };
    };
    FLVDemuxer.prototype._parseMP3AudioData = function (arrayBuffer, dataOffset, dataSize, requestHeader) {
        if (dataSize < 4) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid MP3 packet, header missing!');
            return;
        }
        var le = this._littleEndian;
        var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
        var result = null;
        if (requestHeader) {
            if (array[0] !== 0xFF) {
                return;
            }
            var ver = (array[1] >>> 3) & 0x03;
            var layer = (array[1] & 0x06) >> 1;
            var bitrate_index = (array[2] & 0xF0) >>> 4;
            var sampling_freq_index = (array[2] & 0x0C) >>> 2;
            var channel_mode = (array[3] >>> 6) & 0x03;
            var channel_count = channel_mode !== 3 ? 2 : 1;
            var sample_rate = 0;
            var bit_rate = 0;
            var object_type = 34; // Layer-3, listed in MPEG-4 Audio Object Types
            var codec = 'mp3';
            switch (ver) {
                case 0: // MPEG 2.5
                    sample_rate = this._mpegAudioV25SampleRateTable[sampling_freq_index];
                    break;
                case 2: // MPEG 2
                    sample_rate = this._mpegAudioV20SampleRateTable[sampling_freq_index];
                    break;
                case 3: // MPEG 1
                    sample_rate = this._mpegAudioV10SampleRateTable[sampling_freq_index];
                    break;
            }
            switch (layer) {
                case 1: // Layer 3
                    object_type = 34;
                    if (bitrate_index < this._mpegAudioL3BitRateTable.length) {
                        bit_rate = this._mpegAudioL3BitRateTable[bitrate_index];
                    }
                    break;
                case 2: // Layer 2
                    object_type = 33;
                    if (bitrate_index < this._mpegAudioL2BitRateTable.length) {
                        bit_rate = this._mpegAudioL2BitRateTable[bitrate_index];
                    }
                    break;
                case 3: // Layer 1
                    object_type = 32;
                    if (bitrate_index < this._mpegAudioL1BitRateTable.length) {
                        bit_rate = this._mpegAudioL1BitRateTable[bitrate_index];
                    }
                    break;
            }
            result = {
                bitRate: bit_rate,
                samplingRate: sample_rate,
                channelCount: channel_count,
                codec: codec,
                originalCodec: codec
            };
        }
        else {
            result = array;
        }
        return result;
    };
    FLVDemuxer.prototype._parseVideoData = function (arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition) {
        if (dataSize <= 1) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid video packet, missing VideoData payload!');
            return;
        }
        if (this._hasVideoFlagOverrided === true && this._hasVideo === false) {
            // If hasVideo: false indicated explicitly in MediaDataSource,
            // Ignore all the video packets
            return;
        }
        var spec = (new Uint8Array(arrayBuffer, dataOffset, dataSize))[0];
        var frameType = (spec & 240) >>> 4;
        var codecId = spec & 15;
        if (codecId !== 7) {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.CODEC_UNSUPPORTED, "Flv: Unsupported codec in video frame: " + codecId);
            return;
        }
        this._parseAVCVideoPacket(arrayBuffer, dataOffset + 1, dataSize - 1, tagTimestamp, tagPosition, frameType);
    };
    FLVDemuxer.prototype._parseAVCVideoPacket = function (arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType) {
        if (dataSize < 4) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime');
            return;
        }
        var le = this._littleEndian;
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        var packetType = v.getUint8(0);
        var cts_unsigned = v.getUint32(0, !le) & 0x00FFFFFF;
        var cts = (cts_unsigned << 8) >> 8; // convert to 24-bit signed int
        if (packetType === 0) { // AVCDecoderConfigurationRecord
            this._parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);
        }
        else if (packetType === 1) { // One or more Nalus
            this._parseAVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts);
        }
        else if (packetType === 2) {
            // empty, AVC end of sequence
        }
        else {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, "Flv: Invalid video packet type " + packetType);
            return;
        }
    };
    FLVDemuxer.prototype._parseAVCDecoderConfigurationRecord = function (arrayBuffer, dataOffset, dataSize) {
        if (dataSize < 7) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');
            return;
        }
        var meta = this._videoMetadata;
        var track = this._videoTrack;
        var le = this._littleEndian;
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        if (!meta) {
            if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {
                this._hasVideo = true;
                this._mediaInfo.hasVideo = true;
            }
            meta = this._videoMetadata = {};
            meta.type = 'video';
            meta.id = track.id;
            meta.timescale = this._timescale;
            meta.duration = this._duration;
        }
        else {
            if (typeof meta.avcc !== 'undefined') {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');
            }
        }
        var version = v.getUint8(0); // configurationVersion
        var avcProfile = v.getUint8(1); // avcProfileIndication
        var profileCompatibility = v.getUint8(2); // profile_compatibility
        var avcLevel = v.getUint8(3); // AVCLevelIndication
        if (version !== 1 || avcProfile === 0) {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');
            return;
        }
        this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne
        if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) { // holy shit!!!
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, "Flv: Strange NaluLengthSizeMinusOne: " + (this._naluLengthSize - 1));
            return;
        }
        var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets
        if (spsCount === 0) {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');
            return;
        }
        else if (spsCount > 1) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: SPS Count = " + spsCount);
        }
        var offset = 6;
        for (var i = 0; i < spsCount; i++) {
            var len = v.getUint16(offset, !le); // sequenceParameterSetLength
            offset += 2;
            if (len === 0) {
                continue;
            }
            // Notice: Nalu without startcode header (00 00 00 01)
            var sps = new Uint8Array(arrayBuffer, dataOffset + offset, len);
            offset += len;
            var config = _sps_parser_js__WEBPACK_IMPORTED_MODULE_2__.default.parseSPS(sps);
            if (i !== 0) {
                // ignore other sps's config
                continue;
            }
            meta.codecWidth = config.codec_size.width;
            meta.codecHeight = config.codec_size.height;
            meta.presentWidth = config.present_size.width;
            meta.presentHeight = config.present_size.height;
            meta.profile = config.profile_string;
            meta.level = config.level_string;
            meta.bitDepth = config.bit_depth;
            meta.chromaFormat = config.chroma_format;
            meta.sarRatio = config.sar_ratio;
            meta.frameRate = config.frame_rate;
            if (config.frame_rate.fixed === false ||
                config.frame_rate.fps_num === 0 ||
                config.frame_rate.fps_den === 0) {
                meta.frameRate = this._referenceFrameRate;
            }
            var fps_den = meta.frameRate.fps_den;
            var fps_num = meta.frameRate.fps_num;
            meta.refSampleDuration = meta.timescale * (fps_den / fps_num);
            var codecArray = sps.subarray(1, 4);
            var codecString = 'avc1.';
            for (var j = 0; j < 3; j++) {
                var h = codecArray[j].toString(16);
                if (h.length < 2) {
                    h = '0' + h;
                }
                codecString += h;
            }
            meta.codec = codecString;
            var mi = this._mediaInfo;
            mi.width = meta.codecWidth;
            mi.height = meta.codecHeight;
            mi.fps = meta.frameRate.fps;
            mi.profile = meta.profile;
            mi.level = meta.level;
            mi.refFrames = config.ref_frames;
            mi.chromaFormat = config.chroma_format_string;
            mi.sarNum = meta.sarRatio.width;
            mi.sarDen = meta.sarRatio.height;
            mi.videoCodec = codecString;
            if (mi.hasAudio) {
                if (mi.audioCodec != null) {
                    mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
                }
            }
            else {
                mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + '"';
            }
            if (mi.isComplete()) {
                this._onMediaInfo(mi);
            }
        }
        var ppsCount = v.getUint8(offset); // numOfPictureParameterSets
        if (ppsCount === 0) {
            this._onError(_demux_errors_js__WEBPACK_IMPORTED_MODULE_3__.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');
            return;
        }
        else if (ppsCount > 1) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: PPS Count = " + ppsCount);
        }
        offset++;
        for (var i = 0; i < ppsCount; i++) {
            var len = v.getUint16(offset, !le); // pictureParameterSetLength
            offset += 2;
            if (len === 0) {
                continue;
            }
            // pps is useless for extracting video information
            offset += len;
        }
        meta.avcc = new Uint8Array(dataSize);
        meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');
        if (this._isInitialMetadataDispatched()) {
            // flush parsed frames
            if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
                this._onDataAvailable(this._audioTrack, this._videoTrack);
            }
        }
        else {
            this._videoInitialMetadataDispatched = true;
        }
        // notify new metadata
        this._dispatch = false;
        this._onTrackMetadata('video', meta);
    };
    FLVDemuxer.prototype._parseAVCVideoData = function (arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {
        var le = this._littleEndian;
        var v = new DataView(arrayBuffer, dataOffset, dataSize);
        var units = [], length = 0;
        var offset = 0;
        var lengthSize = this._naluLengthSize;
        var dts = this._timestampBase + tagTimestamp;
        var keyframe = (frameType === 1); // from FLV Frame Type constants
        while (offset < dataSize) {
            if (offset + 4 >= dataSize) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, "Malformed Nalu near timestamp " + dts + ", offset = " + offset + ", dataSize = " + dataSize);
                break; // data not enough for next Nalu
            }
            // Nalu with length-header (AVC1)
            var naluSize = v.getUint32(offset, !le); // Big-Endian read
            if (lengthSize === 3) {
                naluSize >>>= 8;
            }
            if (naluSize > dataSize - lengthSize) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, "Malformed Nalus near timestamp " + dts + ", NaluSize > DataSize!");
                return;
            }
            var unitType = v.getUint8(offset + lengthSize) & 0x1F;
            if (unitType === 5) { // IDR
                keyframe = true;
            }
            var data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);
            var unit = { type: unitType, data: data };
            units.push(unit);
            length += data.byteLength;
            offset += lengthSize + naluSize;
        }
        if (units.length) {
            var track = this._videoTrack;
            var avcSample = {
                units: units,
                length: length,
                isKeyframe: keyframe,
                dts: dts,
                cts: cts,
                pts: (dts + cts)
            };
            if (keyframe) {
                avcSample.fileposition = tagPosition;
            }
            track.samples.push(avcSample);
            track.length += length;
        }
    };
    return FLVDemuxer;
}());
/* harmony default export */ __webpack_exports__["default"] = (FLVDemuxer);


/***/ }),

/***/ "./src/demux/sps-parser.js":
/*!*********************************!*\
  !*** ./src/demux/sps-parser.js ***!
  \*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./exp-golomb.js */ "./src/demux/exp-golomb.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

var SPSParser = /** @class */ (function () {
    function SPSParser() {
    }
    SPSParser._ebsp2rbsp = function (uint8array) {
        var src = uint8array;
        var src_length = src.byteLength;
        var dst = new Uint8Array(src_length);
        var dst_idx = 0;
        for (var i = 0; i < src_length; i++) {
            if (i >= 2) {
                // Unescape: Skip 0x03 after 00 00
                if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {
                    continue;
                }
            }
            dst[dst_idx] = src[i];
            dst_idx++;
        }
        return new Uint8Array(dst.buffer, 0, dst_idx);
    };
    SPSParser.parseSPS = function (uint8array) {
        var rbsp = SPSParser._ebsp2rbsp(uint8array);
        var gb = new _exp_golomb_js__WEBPACK_IMPORTED_MODULE_0__.default(rbsp);
        gb.readByte();
        var profile_idc = gb.readByte(); // profile_idc
        gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]
        var level_idc = gb.readByte(); // level_idc
        gb.readUEG(); // seq_parameter_set_id
        var profile_string = SPSParser.getProfileString(profile_idc);
        var level_string = SPSParser.getLevelString(level_idc);
        var chroma_format_idc = 1;
        var chroma_format = 420;
        var chroma_format_table = [0, 420, 422, 444];
        var bit_depth = 8;
        if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 ||
            profile_idc === 244 || profile_idc === 44 || profile_idc === 83 ||
            profile_idc === 86 || profile_idc === 118 || profile_idc === 128 ||
            profile_idc === 138 || profile_idc === 144) {
            chroma_format_idc = gb.readUEG();
            if (chroma_format_idc === 3) {
                gb.readBits(1); // separate_colour_plane_flag
            }
            if (chroma_format_idc <= 3) {
                chroma_format = chroma_format_table[chroma_format_idc];
            }
            bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8
            gb.readUEG(); // bit_depth_chroma_minus8
            gb.readBits(1); // qpprime_y_zero_transform_bypass_flag
            if (gb.readBool()) { // seq_scaling_matrix_present_flag
                var scaling_list_count = (chroma_format_idc !== 3) ? 8 : 12;
                for (var i = 0; i < scaling_list_count; i++) {
                    if (gb.readBool()) { // seq_scaling_list_present_flag
                        if (i < 6) {
                            SPSParser._skipScalingList(gb, 16);
                        }
                        else {
                            SPSParser._skipScalingList(gb, 64);
                        }
                    }
                }
            }
        }
        gb.readUEG(); // log2_max_frame_num_minus4
        var pic_order_cnt_type = gb.readUEG();
        if (pic_order_cnt_type === 0) {
            gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4
        }
        else if (pic_order_cnt_type === 1) {
            gb.readBits(1); // delta_pic_order_always_zero_flag
            gb.readSEG(); // offset_for_non_ref_pic
            gb.readSEG(); // offset_for_top_to_bottom_field
            var num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();
            for (var i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++) {
                gb.readSEG(); // offset_for_ref_frame
            }
        }
        var ref_frames = gb.readUEG(); // max_num_ref_frames
        gb.readBits(1); // gaps_in_frame_num_value_allowed_flag
        var pic_width_in_mbs_minus1 = gb.readUEG();
        var pic_height_in_map_units_minus1 = gb.readUEG();
        var frame_mbs_only_flag = gb.readBits(1);
        if (frame_mbs_only_flag === 0) {
            gb.readBits(1); // mb_adaptive_frame_field_flag
        }
        gb.readBits(1); // direct_8x8_inference_flag
        var frame_crop_left_offset = 0;
        var frame_crop_right_offset = 0;
        var frame_crop_top_offset = 0;
        var frame_crop_bottom_offset = 0;
        var frame_cropping_flag = gb.readBool();
        if (frame_cropping_flag) {
            frame_crop_left_offset = gb.readUEG();
            frame_crop_right_offset = gb.readUEG();
            frame_crop_top_offset = gb.readUEG();
            frame_crop_bottom_offset = gb.readUEG();
        }
        var sar_width = 1, sar_height = 1;
        var fps = 0, fps_fixed = true, fps_num = 0, fps_den = 0;
        var vui_parameters_present_flag = gb.readBool();
        if (vui_parameters_present_flag) {
            if (gb.readBool()) { // aspect_ratio_info_present_flag
                var aspect_ratio_idc = gb.readByte();
                var sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];
                var sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];
                if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {
                    sar_width = sar_w_table[aspect_ratio_idc - 1];
                    sar_height = sar_h_table[aspect_ratio_idc - 1];
                }
                else if (aspect_ratio_idc === 255) {
                    sar_width = gb.readByte() << 8 | gb.readByte();
                    sar_height = gb.readByte() << 8 | gb.readByte();
                }
            }
            if (gb.readBool()) { // overscan_info_present_flag
                gb.readBool(); // overscan_appropriate_flag
            }
            if (gb.readBool()) { // video_signal_type_present_flag
                gb.readBits(4); // video_format & video_full_range_flag
                if (gb.readBool()) { // colour_description_present_flag
                    gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients
                }
            }
            if (gb.readBool()) { // chroma_loc_info_present_flag
                gb.readUEG(); // chroma_sample_loc_type_top_field
                gb.readUEG(); // chroma_sample_loc_type_bottom_field
            }
            if (gb.readBool()) { // timing_info_present_flag
                var num_units_in_tick = gb.readBits(32);
                var time_scale = gb.readBits(32);
                fps_fixed = gb.readBool(); // fixed_frame_rate_flag
                fps_num = time_scale;
                fps_den = num_units_in_tick * 2;
                fps = fps_num / fps_den;
            }
        }
        var sarScale = 1;
        if (sar_width !== 1 || sar_height !== 1) {
            sarScale = sar_width / sar_height;
        }
        var crop_unit_x = 0, crop_unit_y = 0;
        if (chroma_format_idc === 0) {
            crop_unit_x = 1;
            crop_unit_y = 2 - frame_mbs_only_flag;
        }
        else {
            var sub_wc = (chroma_format_idc === 3) ? 1 : 2;
            var sub_hc = (chroma_format_idc === 1) ? 2 : 1;
            crop_unit_x = sub_wc;
            crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);
        }
        var codec_width = (pic_width_in_mbs_minus1 + 1) * 16;
        var codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);
        codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;
        codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;
        var present_width = Math.ceil(codec_width * sarScale);
        gb.destroy();
        gb = null;
        return {
            profile_string: profile_string,
            level_string: level_string,
            bit_depth: bit_depth,
            ref_frames: ref_frames,
            chroma_format: chroma_format,
            chroma_format_string: SPSParser.getChromaFormatString(chroma_format),
            frame_rate: {
                fixed: fps_fixed,
                fps: fps,
                fps_den: fps_den,
                fps_num: fps_num
            },
            sar_ratio: {
                width: sar_width,
                height: sar_height
            },
            codec_size: {
                width: codec_width,
                height: codec_height
            },
            present_size: {
                width: present_width,
                height: codec_height
            }
        };
    };
    SPSParser._skipScalingList = function (gb, count) {
        var last_scale = 8, next_scale = 8;
        var delta_scale = 0;
        for (var i = 0; i < count; i++) {
            if (next_scale !== 0) {
                delta_scale = gb.readSEG();
                next_scale = (last_scale + delta_scale + 256) % 256;
            }
            last_scale = (next_scale === 0) ? last_scale : next_scale;
        }
    };
    SPSParser.getProfileString = function (profile_idc) {
        switch (profile_idc) {
            case 66:
                return 'Baseline';
            case 77:
                return 'Main';
            case 88:
                return 'Extended';
            case 100:
                return 'High';
            case 110:
                return 'High10';
            case 122:
                return 'High422';
            case 244:
                return 'High444';
            default:
                return 'Unknown';
        }
    };
    SPSParser.getLevelString = function (level_idc) {
        return (level_idc / 10).toFixed(1);
    };
    SPSParser.getChromaFormatString = function (chroma) {
        switch (chroma) {
            case 420:
                return '4:2:0';
            case 422:
                return '4:2:2';
            case 444:
                return '4:4:4';
            default:
                return 'Unknown';
        }
    };
    return SPSParser;
}());
/* harmony default export */ __webpack_exports__["default"] = (SPSParser);


/***/ }),

/***/ "./src/flv.js":
/*!********************!*\
  !*** ./src/flv.js ***!
  \********************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_polyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/polyfill.js */ "./src/utils/polyfill.js");
/* harmony import */ var _core_features_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core/features.js */ "./src/core/features.js");
/* harmony import */ var _io_loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./io/loader.js */ "./src/io/loader.js");
/* harmony import */ var _player_flv_player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./player/flv-player.js */ "./src/player/flv-player.js");
/* harmony import */ var _player_native_player_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./player/native-player.js */ "./src/player/native-player.js");
/* harmony import */ var _player_player_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./player/player-events.js */ "./src/player/player-events.js");
/* harmony import */ var _player_player_errors_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./player/player-errors.js */ "./src/player/player-errors.js");
/* harmony import */ var _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/logging-control.js */ "./src/utils/logging-control.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */









// here are all the interfaces
// install polyfills
_utils_polyfill_js__WEBPACK_IMPORTED_MODULE_0__.default.install();
// factory method
function createPlayer(mediaDataSource, optionalConfig) {
    var mds = mediaDataSource;
    if (mds == null || typeof mds !== 'object') {
        throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_8__.InvalidArgumentException('MediaDataSource must be an javascript object!');
    }
    if (!mds.hasOwnProperty('type')) {
        throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_8__.InvalidArgumentException('MediaDataSource must has type field to indicate video file type!');
    }
    switch (mds.type) {
        case 'flv':
            return new _player_flv_player_js__WEBPACK_IMPORTED_MODULE_3__.default(mds, optionalConfig);
        default:
            return new _player_native_player_js__WEBPACK_IMPORTED_MODULE_4__.default(mds, optionalConfig);
    }
}
// feature detection
function isSupported() {
    return _core_features_js__WEBPACK_IMPORTED_MODULE_1__.default.supportMSEH264Playback();
}
function getFeatureList() {
    return _core_features_js__WEBPACK_IMPORTED_MODULE_1__.default.getFeatureList();
}
// interfaces
var flvjs = {};
flvjs.createPlayer = createPlayer;
flvjs.isSupported = isSupported;
flvjs.getFeatureList = getFeatureList;
flvjs.BaseLoader = _io_loader_js__WEBPACK_IMPORTED_MODULE_2__.BaseLoader;
flvjs.LoaderStatus = _io_loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus;
flvjs.LoaderErrors = _io_loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors;
flvjs.Events = _player_player_events_js__WEBPACK_IMPORTED_MODULE_5__.default;
flvjs.ErrorTypes = _player_player_errors_js__WEBPACK_IMPORTED_MODULE_6__.ErrorTypes;
flvjs.ErrorDetails = _player_player_errors_js__WEBPACK_IMPORTED_MODULE_6__.ErrorDetails;
flvjs.FlvPlayer = _player_flv_player_js__WEBPACK_IMPORTED_MODULE_3__.default;
flvjs.NativePlayer = _player_native_player_js__WEBPACK_IMPORTED_MODULE_4__.default;
flvjs.LoggingControl = _utils_logging_control_js__WEBPACK_IMPORTED_MODULE_7__.default;
Object.defineProperty(flvjs, 'version', {
    enumerable: true,
    get: function () {
        // replace by webpack.DefinePlugin
        return "1.6.2";
    }
});
/* harmony default export */ __webpack_exports__["default"] = (flvjs);


/***/ }),

/***/ "./src/index.js":
/*!**********************!*\
  !*** ./src/index.js ***!
  \**********************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

// entry/index file
// make it compatible with browserify's umd wrapper
module.exports = __webpack_require__(/*! ./flv.js */ "./src/flv.js").default;


/***/ }),

/***/ "./src/io/fetch-stream-loader.js":
/*!***************************************!*\
  !*** ./src/io/fetch-stream-loader.js ***!
  \***************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/browser.js */ "./src/utils/browser.js");
/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ "./src/io/loader.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var __extends = (undefined && undefined.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();



/* fetch + stream IO loader. Currently working on chrome 43+.
 * fetch provides a better alternative http API to XMLHttpRequest
 *
 * fetch spec   https://fetch.spec.whatwg.org/
 * stream spec  https://streams.spec.whatwg.org/
 */
var FetchStreamLoader = /** @class */ (function (_super) {
    __extends(FetchStreamLoader, _super);
    function FetchStreamLoader(seekHandler, config) {
        var _this = _super.call(this, 'fetch-stream-loader') || this;
        _this.TAG = 'FetchStreamLoader';
        _this._seekHandler = seekHandler;
        _this._config = config;
        _this._needStash = true;
        _this._requestAbort = false;
        _this._contentLength = null;
        _this._receivedLength = 0;
        return _this;
    }
    FetchStreamLoader.isSupported = function () {
        try {
            // fetch + stream is broken on Microsoft Edge. Disable before build 15048.
            // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/
            // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist.
            var isWorkWellEdge = _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.msedge && _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.version.minor >= 15048;
            var browserNotBlacklisted = _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.msedge ? isWorkWellEdge : true;
            return (self.fetch && self.ReadableStream && browserNotBlacklisted);
        }
        catch (e) {
            return false;
        }
    };
    FetchStreamLoader.prototype.destroy = function () {
        if (this.isWorking()) {
            this.abort();
        }
        _super.prototype.destroy.call(this);
    };
    FetchStreamLoader.prototype.open = function (dataSource, range) {
        var _this = this;
        this._dataSource = dataSource;
        this._range = range;
        var sourceURL = dataSource.url;
        if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {
            sourceURL = dataSource.redirectedURL;
        }
        var seekConfig = this._seekHandler.getConfig(sourceURL, range);
        var headers = new self.Headers();
        if (typeof seekConfig.headers === 'object') {
            var configHeaders = seekConfig.headers;
            for (var key in configHeaders) {
                if (configHeaders.hasOwnProperty(key)) {
                    headers.append(key, configHeaders[key]);
                }
            }
        }
        var params = {
            method: 'GET',
            headers: headers,
            mode: 'cors',
            cache: 'default',
            // The default policy of Fetch API in the whatwg standard
            // Safari incorrectly indicates 'no-referrer' as default policy, fuck it
            referrerPolicy: 'no-referrer-when-downgrade'
        };
        // add additional headers
        if (typeof this._config.headers === 'object') {
            for (var key in this._config.headers) {
                headers.append(key, this._config.headers[key]);
            }
        }
        // cors is enabled by default
        if (dataSource.cors === false) {
            // no-cors means 'disregard cors policy', which can only be used in ServiceWorker
            params.mode = 'same-origin';
        }
        // withCredentials is disabled by default
        if (dataSource.withCredentials) {
            params.credentials = 'include';
        }
        // referrerPolicy from config
        if (dataSource.referrerPolicy) {
            params.referrerPolicy = dataSource.referrerPolicy;
        }
        // add abort controller, by wmlgl 2019-5-10 12:21:27
        if (self.AbortController) {
            this._abortController = new self.AbortController();
            params.signal = this._abortController.signal;
        }
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kConnecting;
        self.fetch(seekConfig.url, params).then(function (res) {
            if (_this._requestAbort) {
                _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kIdle;
                res.body.cancel();
                return;
            }
            if (res.ok && (res.status >= 200 && res.status <= 299)) {
                if (res.url !== seekConfig.url) {
                    if (_this._onURLRedirect) {
                        var redirectedURL = _this._seekHandler.removeURLParameters(res.url);
                        _this._onURLRedirect(redirectedURL);
                    }
                }
                var lengthHeader = res.headers.get('Content-Length');
                if (lengthHeader != null) {
                    _this._contentLength = parseInt(lengthHeader);
                    if (_this._contentLength !== 0) {
                        if (_this._onContentLengthKnown) {
                            _this._onContentLengthKnown(_this._contentLength);
                        }
                    }
                }
                return _this._pump.call(_this, res.body.getReader());
            }
            else {
                _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;
                if (_this._onError) {
                    _this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: res.status, msg: res.statusText });
                }
                else {
                    throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText);
                }
            }
        }).catch(function (e) {
            if (_this._abortController && _this._abortController.signal.aborted) {
                return;
            }
            _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;
            if (_this._onError) {
                _this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EXCEPTION, { code: -1, msg: e.message });
            }
            else {
                throw e;
            }
        });
    };
    FetchStreamLoader.prototype.abort = function () {
        this._requestAbort = true;
        if (this._status !== _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kBuffering || !_utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.chrome) {
            // Chrome may throw Exception-like things here, avoid using if is buffering
            if (this._abortController) {
                try {
                    this._abortController.abort();
                }
                catch (e) { }
            }
        }
    };
    FetchStreamLoader.prototype._pump = function (reader) {
        var _this = this;
        return reader.read().then(function (result) {
            if (result.done) {
                // First check received length
                if (_this._contentLength !== null && _this._receivedLength < _this._contentLength) {
                    // Report Early-EOF
                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;
                    var type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EARLY_EOF;
                    var info = { code: -1, msg: 'Fetch stream meet Early-EOF' };
                    if (_this._onError) {
                        _this._onError(type, info);
                    }
                    else {
                        throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException(info.msg);
                    }
                }
                else {
                    // OK. Download complete
                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;
                    if (_this._onComplete) {
                        _this._onComplete(_this._range.from, _this._range.from + _this._receivedLength - 1);
                    }
                }
            }
            else {
                if (_this._abortController && _this._abortController.signal.aborted) {
                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;
                    return;
                }
                else if (_this._requestAbort === true) {
                    _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;
                    return reader.cancel();
                }
                _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kBuffering;
                var chunk = result.value.buffer;
                var byteStart = _this._range.from + _this._receivedLength;
                _this._receivedLength += chunk.byteLength;
                if (_this._onDataArrival) {
                    _this._onDataArrival(chunk, byteStart, _this._receivedLength);
                }
                _this._pump(reader);
            }
        }).catch(function (e) {
            if (_this._abortController && _this._abortController.signal.aborted) {
                _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;
                return;
            }
            if (e.code === 11 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_0__.default.msedge) { // InvalidStateError on Microsoft Edge
                // Workaround: Edge may throw InvalidStateError after ReadableStreamReader.cancel() call
                // Ignore the unknown exception.
                // Related issue: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11265202/
                return;
            }
            _this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;
            var type = 0;
            var info = null;
            if ((e.code === 19 || e.message === 'network error') && // NETWORK_ERR
                (_this._contentLength === null ||
                    (_this._contentLength !== null && _this._receivedLength < _this._contentLength))) {
                type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EARLY_EOF;
                info = { code: e.code, msg: 'Fetch stream meet Early-EOF' };
            }
            else {
                type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EXCEPTION;
                info = { code: e.code, msg: e.message };
            }
            if (_this._onError) {
                _this._onError(type, info);
            }
            else {
                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException(info.msg);
            }
        });
    };
    return FetchStreamLoader;
}(_loader_js__WEBPACK_IMPORTED_MODULE_1__.BaseLoader));
/* harmony default export */ __webpack_exports__["default"] = (FetchStreamLoader);


/***/ }),

/***/ "./src/io/io-controller.js":
/*!*********************************!*\
  !*** ./src/io/io-controller.js ***!
  \*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./speed-sampler.js */ "./src/io/speed-sampler.js");
/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ "./src/io/loader.js");
/* harmony import */ var _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fetch-stream-loader.js */ "./src/io/fetch-stream-loader.js");
/* harmony import */ var _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./xhr-moz-chunked-loader.js */ "./src/io/xhr-moz-chunked-loader.js");
/* harmony import */ var _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./xhr-range-loader.js */ "./src/io/xhr-range-loader.js");
/* harmony import */ var _websocket_loader_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./websocket-loader.js */ "./src/io/websocket-loader.js");
/* harmony import */ var _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./range-seek-handler.js */ "./src/io/range-seek-handler.js");
/* harmony import */ var _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./param-seek-handler.js */ "./src/io/param-seek-handler.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */










/**
 * DataSource: {
 *     url: string,
 *     filesize: number,
 *     cors: boolean,
 *     withCredentials: boolean
 * }
 *
 */
// Manage IO Loaders
var IOController = /** @class */ (function () {
    function IOController(dataSource, config, extraData) {
        this.TAG = 'IOController';
        this._config = config;
        this._extraData = extraData;
        this._stashInitialSize = 1024 * 384; // default initial size: 384KB
        if (config.stashInitialSize != undefined && config.stashInitialSize > 0) {
            // apply from config
            this._stashInitialSize = config.stashInitialSize;
        }
        this._stashUsed = 0;
        this._stashSize = this._stashInitialSize;
        this._bufferSize = 1024 * 1024 * 3; // initial size: 3MB
        this._stashBuffer = new ArrayBuffer(this._bufferSize);
        this._stashByteStart = 0;
        this._enableStash = true;
        if (config.enableStashBuffer === false) {
            this._enableStash = false;
        }
        this._loader = null;
        this._loaderClass = null;
        this._seekHandler = null;
        this._dataSource = dataSource;
        this._isWebSocketURL = /wss?:\/\/(.+?)/.test(dataSource.url);
        this._refTotalLength = dataSource.filesize ? dataSource.filesize : null;
        this._totalLength = this._refTotalLength;
        this._fullRequestFlag = false;
        this._currentRange = null;
        this._redirectedURL = null;
        this._speedNormalized = 0;
        this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__.default();
        this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096];
        this._isEarlyEofReconnecting = false;
        this._paused = false;
        this._resumeFrom = 0;
        this._onDataArrival = null;
        this._onSeeked = null;
        this._onError = null;
        this._onComplete = null;
        this._onRedirect = null;
        this._onRecoveredEarlyEof = null;
        this._selectSeekHandler();
        this._selectLoader();
        this._createLoader();
    }
    IOController.prototype.destroy = function () {
        if (this._loader.isWorking()) {
            this._loader.abort();
        }
        this._loader.destroy();
        this._loader = null;
        this._loaderClass = null;
        this._dataSource = null;
        this._stashBuffer = null;
        this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0;
        this._currentRange = null;
        this._speedSampler = null;
        this._isEarlyEofReconnecting = false;
        this._onDataArrival = null;
        this._onSeeked = null;
        this._onError = null;
        this._onComplete = null;
        this._onRedirect = null;
        this._onRecoveredEarlyEof = null;
        this._extraData = null;
    };
    IOController.prototype.isWorking = function () {
        return this._loader && this._loader.isWorking() && !this._paused;
    };
    IOController.prototype.isPaused = function () {
        return this._paused;
    };
    Object.defineProperty(IOController.prototype, "status", {
        get: function () {
            return this._loader.status;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "extraData", {
        get: function () {
            return this._extraData;
        },
        set: function (data) {
            this._extraData = data;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "onDataArrival", {
        // prototype: function onDataArrival(chunks: ArrayBuffer, byteStart: number): number
        get: function () {
            return this._onDataArrival;
        },
        set: function (callback) {
            this._onDataArrival = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "onSeeked", {
        get: function () {
            return this._onSeeked;
        },
        set: function (callback) {
            this._onSeeked = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "onError", {
        // prototype: function onError(type: number, info: {code: number, msg: string}): void
        get: function () {
            return this._onError;
        },
        set: function (callback) {
            this._onError = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "onComplete", {
        get: function () {
            return this._onComplete;
        },
        set: function (callback) {
            this._onComplete = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "onRedirect", {
        get: function () {
            return this._onRedirect;
        },
        set: function (callback) {
            this._onRedirect = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "onRecoveredEarlyEof", {
        get: function () {
            return this._onRecoveredEarlyEof;
        },
        set: function (callback) {
            this._onRecoveredEarlyEof = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "currentURL", {
        get: function () {
            return this._dataSource.url;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "hasRedirect", {
        get: function () {
            return (this._redirectedURL != null || this._dataSource.redirectedURL != undefined);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "currentRedirectedURL", {
        get: function () {
            return this._redirectedURL || this._dataSource.redirectedURL;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "currentSpeed", {
        // in KB/s
        get: function () {
            if (this._loaderClass === _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__.default) {
                // SpeedSampler is inaccuracy if loader is RangeLoader
                return this._loader.currentSpeed;
            }
            return this._speedSampler.lastSecondKBps;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(IOController.prototype, "loaderType", {
        get: function () {
            return this._loader.type;
        },
        enumerable: false,
        configurable: true
    });
    IOController.prototype._selectSeekHandler = function () {
        var config = this._config;
        if (config.seekType === 'range') {
            this._seekHandler = new _range_seek_handler_js__WEBPACK_IMPORTED_MODULE_7__.default(this._config.rangeLoadZeroStart);
        }
        else if (config.seekType === 'param') {
            var paramStart = config.seekParamStart || 'bstart';
            var paramEnd = config.seekParamEnd || 'bend';
            this._seekHandler = new _param_seek_handler_js__WEBPACK_IMPORTED_MODULE_8__.default(paramStart, paramEnd);
        }
        else if (config.seekType === 'custom') {
            if (typeof config.customSeekHandler !== 'function') {
                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.InvalidArgumentException('Custom seekType specified in config but invalid customSeekHandler!');
            }
            this._seekHandler = new config.customSeekHandler();
        }
        else {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.InvalidArgumentException("Invalid seekType in config: " + config.seekType);
        }
    };
    IOController.prototype._selectLoader = function () {
        if (this._config.customLoader != null) {
            this._loaderClass = this._config.customLoader;
        }
        else if (this._isWebSocketURL) {
            this._loaderClass = _websocket_loader_js__WEBPACK_IMPORTED_MODULE_6__.default;
        }
        else if (_fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__.default.isSupported()) {
            this._loaderClass = _fetch_stream_loader_js__WEBPACK_IMPORTED_MODULE_3__.default;
        }
        else if (_xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__.default.isSupported()) {
            this._loaderClass = _xhr_moz_chunked_loader_js__WEBPACK_IMPORTED_MODULE_4__.default;
        }
        else if (_xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__.default.isSupported()) {
            this._loaderClass = _xhr_range_loader_js__WEBPACK_IMPORTED_MODULE_5__.default;
        }
        else {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.RuntimeException('Your browser doesn\'t support xhr with arraybuffer responseType!');
        }
    };
    IOController.prototype._createLoader = function () {
        this._loader = new this._loaderClass(this._seekHandler, this._config);
        if (this._loader.needStashBuffer === false) {
            this._enableStash = false;
        }
        this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this);
        this._loader.onURLRedirect = this._onURLRedirect.bind(this);
        this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this);
        this._loader.onComplete = this._onLoaderComplete.bind(this);
        this._loader.onError = this._onLoaderError.bind(this);
    };
    IOController.prototype.open = function (optionalFrom) {
        this._currentRange = { from: 0, to: -1 };
        if (optionalFrom) {
            this._currentRange.from = optionalFrom;
        }
        this._speedSampler.reset();
        if (!optionalFrom) {
            this._fullRequestFlag = true;
        }
        this._loader.open(this._dataSource, Object.assign({}, this._currentRange));
    };
    IOController.prototype.abort = function () {
        this._loader.abort();
        if (this._paused) {
            this._paused = false;
            this._resumeFrom = 0;
        }
    };
    IOController.prototype.pause = function () {
        if (this.isWorking()) {
            this._loader.abort();
            if (this._stashUsed !== 0) {
                this._resumeFrom = this._stashByteStart;
                this._currentRange.to = this._stashByteStart - 1;
            }
            else {
                this._resumeFrom = this._currentRange.to + 1;
            }
            this._stashUsed = 0;
            this._stashByteStart = 0;
            this._paused = true;
        }
    };
    IOController.prototype.resume = function () {
        if (this._paused) {
            this._paused = false;
            var bytes = this._resumeFrom;
            this._resumeFrom = 0;
            this._internalSeek(bytes, true);
        }
    };
    IOController.prototype.seek = function (bytes) {
        this._paused = false;
        this._stashUsed = 0;
        this._stashByteStart = 0;
        this._internalSeek(bytes, true);
    };
    /**
     * When seeking request is from media seeking, unconsumed stash data should be dropped
     * However, stash data shouldn't be dropped if seeking requested from http reconnection
     *
     * @dropUnconsumed: Ignore and discard all unconsumed data in stash buffer
     */
    IOController.prototype._internalSeek = function (bytes, dropUnconsumed) {
        if (this._loader.isWorking()) {
            this._loader.abort();
        }
        // dispatch & flush stash buffer before seek
        this._flushStashBuffer(dropUnconsumed);
        this._loader.destroy();
        this._loader = null;
        var requestRange = { from: bytes, to: -1 };
        this._currentRange = { from: requestRange.from, to: -1 };
        this._speedSampler.reset();
        this._stashSize = this._stashInitialSize;
        this._createLoader();
        this._loader.open(this._dataSource, requestRange);
        if (this._onSeeked) {
            this._onSeeked();
        }
    };
    IOController.prototype.updateUrl = function (url) {
        if (!url || typeof url !== 'string' || url.length === 0) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.InvalidArgumentException('Url must be a non-empty string!');
        }
        this._dataSource.url = url;
        // TODO: replace with new url
    };
    IOController.prototype._expandBuffer = function (expectedBytes) {
        var bufferNewSize = this._stashSize;
        while (bufferNewSize + 1024 * 1024 * 1 < expectedBytes) {
            bufferNewSize *= 2;
        }
        bufferNewSize += 1024 * 1024 * 1; // bufferSize = stashSize + 1MB
        if (bufferNewSize === this._bufferSize) {
            return;
        }
        var newBuffer = new ArrayBuffer(bufferNewSize);
        if (this._stashUsed > 0) { // copy existing data into new buffer
            var stashOldArray = new Uint8Array(this._stashBuffer, 0, this._stashUsed);
            var stashNewArray = new Uint8Array(newBuffer, 0, bufferNewSize);
            stashNewArray.set(stashOldArray, 0);
        }
        this._stashBuffer = newBuffer;
        this._bufferSize = bufferNewSize;
    };
    IOController.prototype._normalizeSpeed = function (input) {
        var list = this._speedNormalizeList;
        var last = list.length - 1;
        var mid = 0;
        var lbound = 0;
        var ubound = last;
        if (input < list[0]) {
            return list[0];
        }
        // binary search
        while (lbound <= ubound) {
            mid = lbound + Math.floor((ubound - lbound) / 2);
            if (mid === last || (input >= list[mid] && input < list[mid + 1])) {
                return list[mid];
            }
            else if (list[mid] < input) {
                lbound = mid + 1;
            }
            else {
                ubound = mid - 1;
            }
        }
    };
    IOController.prototype._adjustStashSize = function (normalized) {
        var stashSizeKB = 0;
        if (this._config.isLive) {
            // live stream: always use single normalized speed for size of stashSizeKB
            stashSizeKB = normalized;
        }
        else {
            if (normalized < 512) {
                stashSizeKB = normalized;
            }
            else if (normalized >= 512 && normalized <= 1024) {
                stashSizeKB = Math.floor(normalized * 1.5);
            }
            else {
                stashSizeKB = normalized * 2;
            }
        }
        if (stashSizeKB > 8192) {
            stashSizeKB = 8192;
        }
        var bufferSize = stashSizeKB * 1024 + 1024 * 1024 * 1; // stashSize + 1MB
        if (this._bufferSize < bufferSize) {
            this._expandBuffer(bufferSize);
        }
        this._stashSize = stashSizeKB * 1024;
    };
    IOController.prototype._dispatchChunks = function (chunks, byteStart) {
        this._currentRange.to = byteStart + chunks.byteLength - 1;
        return this._onDataArrival(chunks, byteStart);
    };
    IOController.prototype._onURLRedirect = function (redirectedURL) {
        this._redirectedURL = redirectedURL;
        if (this._onRedirect) {
            this._onRedirect(redirectedURL);
        }
    };
    IOController.prototype._onContentLengthKnown = function (contentLength) {
        if (contentLength && this._fullRequestFlag) {
            this._totalLength = contentLength;
            this._fullRequestFlag = false;
        }
    };
    IOController.prototype._onLoaderChunkArrival = function (chunk, byteStart, receivedLength) {
        if (!this._onDataArrival) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.IllegalStateException('IOController: No existing consumer (onDataArrival) callback!');
        }
        if (this._paused) {
            return;
        }
        if (this._isEarlyEofReconnecting) {
            // Auto-reconnect for EarlyEof succeed, notify to upper-layer by callback
            this._isEarlyEofReconnecting = false;
            if (this._onRecoveredEarlyEof) {
                this._onRecoveredEarlyEof();
            }
        }
        this._speedSampler.addBytes(chunk.byteLength);
        // adjust stash buffer size according to network speed dynamically
        var KBps = this._speedSampler.lastSecondKBps;
        if (KBps !== 0) {
            var normalized = this._normalizeSpeed(KBps);
            if (this._speedNormalized !== normalized) {
                this._speedNormalized = normalized;
                this._adjustStashSize(normalized);
            }
        }
        if (!this._enableStash) { // disable stash
            if (this._stashUsed === 0) {
                // dispatch chunk directly to consumer;
                // check ret value (consumed bytes) and stash unconsumed to stashBuffer
                var consumed = this._dispatchChunks(chunk, byteStart);
                if (consumed < chunk.byteLength) { // unconsumed data remain.
                    var remain = chunk.byteLength - consumed;
                    if (remain > this._bufferSize) {
                        this._expandBuffer(remain);
                    }
                    var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
                    stashArray.set(new Uint8Array(chunk, consumed), 0);
                    this._stashUsed += remain;
                    this._stashByteStart = byteStart + consumed;
                }
            }
            else {
                // else: Merge chunk into stashBuffer, and dispatch stashBuffer to consumer.
                if (this._stashUsed + chunk.byteLength > this._bufferSize) {
                    this._expandBuffer(this._stashUsed + chunk.byteLength);
                }
                var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
                stashArray.set(new Uint8Array(chunk), this._stashUsed);
                this._stashUsed += chunk.byteLength;
                var consumed = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart);
                if (consumed < this._stashUsed && consumed > 0) { // unconsumed data remain
                    var remainArray = new Uint8Array(this._stashBuffer, consumed);
                    stashArray.set(remainArray, 0);
                }
                this._stashUsed -= consumed;
                this._stashByteStart += consumed;
            }
        }
        else { // enable stash
            if (this._stashUsed === 0 && this._stashByteStart === 0) { // seeked? or init chunk?
                // This is the first chunk after seek action
                this._stashByteStart = byteStart;
            }
            if (this._stashUsed + chunk.byteLength <= this._stashSize) {
                // just stash
                var stashArray = new Uint8Array(this._stashBuffer, 0, this._stashSize);
                stashArray.set(new Uint8Array(chunk), this._stashUsed);
                this._stashUsed += chunk.byteLength;
            }
            else { // stashUsed + chunkSize > stashSize, size limit exceeded
                var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
                if (this._stashUsed > 0) { // There're stash datas in buffer
                    // dispatch the whole stashBuffer, and stash remain data
                    // then append chunk to stashBuffer (stash)
                    var buffer = this._stashBuffer.slice(0, this._stashUsed);
                    var consumed = this._dispatchChunks(buffer, this._stashByteStart);
                    if (consumed < buffer.byteLength) {
                        if (consumed > 0) {
                            var remainArray = new Uint8Array(buffer, consumed);
                            stashArray.set(remainArray, 0);
                            this._stashUsed = remainArray.byteLength;
                            this._stashByteStart += consumed;
                        }
                    }
                    else {
                        this._stashUsed = 0;
                        this._stashByteStart += consumed;
                    }
                    if (this._stashUsed + chunk.byteLength > this._bufferSize) {
                        this._expandBuffer(this._stashUsed + chunk.byteLength);
                        stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
                    }
                    stashArray.set(new Uint8Array(chunk), this._stashUsed);
                    this._stashUsed += chunk.byteLength;
                }
                else { // stash buffer empty, but chunkSize > stashSize (oh, holy shit)
                    // dispatch chunk directly and stash remain data
                    var consumed = this._dispatchChunks(chunk, byteStart);
                    if (consumed < chunk.byteLength) {
                        var remain = chunk.byteLength - consumed;
                        if (remain > this._bufferSize) {
                            this._expandBuffer(remain);
                            stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
                        }
                        stashArray.set(new Uint8Array(chunk, consumed), 0);
                        this._stashUsed += remain;
                        this._stashByteStart = byteStart + consumed;
                    }
                }
            }
        }
    };
    IOController.prototype._flushStashBuffer = function (dropUnconsumed) {
        if (this._stashUsed > 0) {
            var buffer = this._stashBuffer.slice(0, this._stashUsed);
            var consumed = this._dispatchChunks(buffer, this._stashByteStart);
            var remain = buffer.byteLength - consumed;
            if (consumed < buffer.byteLength) {
                if (dropUnconsumed) {
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, remain + " bytes unconsumed data remain when flush buffer, dropped");
                }
                else {
                    if (consumed > 0) {
                        var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
                        var remainArray = new Uint8Array(buffer, consumed);
                        stashArray.set(remainArray, 0);
                        this._stashUsed = remainArray.byteLength;
                        this._stashByteStart += consumed;
                    }
                    return 0;
                }
            }
            this._stashUsed = 0;
            this._stashByteStart = 0;
            return remain;
        }
        return 0;
    };
    IOController.prototype._onLoaderComplete = function (from, to) {
        // Force-flush stash buffer, and drop unconsumed data
        this._flushStashBuffer(true);
        if (this._onComplete) {
            this._onComplete(this._extraData);
        }
    };
    IOController.prototype._onLoaderError = function (type, data) {
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.e(this.TAG, "Loader error, code = " + data.code + ", msg = " + data.msg);
        this._flushStashBuffer(false);
        if (this._isEarlyEofReconnecting) {
            // Auto-reconnect for EarlyEof failed, throw UnrecoverableEarlyEof error to upper-layer
            this._isEarlyEofReconnecting = false;
            type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.UNRECOVERABLE_EARLY_EOF;
        }
        switch (type) {
            case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EARLY_EOF: {
                if (!this._config.isLive) {
                    // Do internal http reconnect if not live stream
                    if (this._totalLength) {
                        var nextFrom = this._currentRange.to + 1;
                        if (nextFrom < this._totalLength) {
                            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Connection lost, trying reconnect...');
                            this._isEarlyEofReconnecting = true;
                            this._internalSeek(nextFrom, false);
                        }
                        return;
                    }
                    // else: We don't know totalLength, throw UnrecoverableEarlyEof
                }
                // live stream: throw UnrecoverableEarlyEof error to upper-layer
                type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.UNRECOVERABLE_EARLY_EOF;
                break;
            }
            case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.UNRECOVERABLE_EARLY_EOF:
            case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.CONNECTING_TIMEOUT:
            case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.HTTP_STATUS_CODE_INVALID:
            case _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EXCEPTION:
                break;
        }
        if (this._onError) {
            this._onError(type, data);
        }
        else {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_9__.RuntimeException('IOException: ' + data.msg);
        }
    };
    return IOController;
}());
/* harmony default export */ __webpack_exports__["default"] = (IOController);


/***/ }),

/***/ "./src/io/loader.js":
/*!**************************!*\
  !*** ./src/io/loader.js ***!
  \**************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "LoaderStatus": function() { return /* binding */ LoaderStatus; },
/* harmony export */   "LoaderErrors": function() { return /* binding */ LoaderErrors; },
/* harmony export */   "BaseLoader": function() { return /* binding */ BaseLoader; }
/* harmony export */ });
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

var LoaderStatus = {
    kIdle: 0,
    kConnecting: 1,
    kBuffering: 2,
    kError: 3,
    kComplete: 4
};
var LoaderErrors = {
    OK: 'OK',
    EXCEPTION: 'Exception',
    HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid',
    CONNECTING_TIMEOUT: 'ConnectingTimeout',
    EARLY_EOF: 'EarlyEof',
    UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof'
};
/* Loader has callbacks which have following prototypes:
 *     function onContentLengthKnown(contentLength: number): void
 *     function onURLRedirect(url: string): void
 *     function onDataArrival(chunk: ArrayBuffer, byteStart: number, receivedLength: number): void
 *     function onError(errorType: number, errorInfo: {code: number, msg: string}): void
 *     function onComplete(rangeFrom: number, rangeTo: number): void
 */
var BaseLoader = /** @class */ (function () {
    function BaseLoader(typeName) {
        this._type = typeName || 'undefined';
        this._status = LoaderStatus.kIdle;
        this._needStash = false;
        // callbacks
        this._onContentLengthKnown = null;
        this._onURLRedirect = null;
        this._onDataArrival = null;
        this._onError = null;
        this._onComplete = null;
    }
    BaseLoader.prototype.destroy = function () {
        this._status = LoaderStatus.kIdle;
        this._onContentLengthKnown = null;
        this._onURLRedirect = null;
        this._onDataArrival = null;
        this._onError = null;
        this._onComplete = null;
    };
    BaseLoader.prototype.isWorking = function () {
        return this._status === LoaderStatus.kConnecting || this._status === LoaderStatus.kBuffering;
    };
    Object.defineProperty(BaseLoader.prototype, "type", {
        get: function () {
            return this._type;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(BaseLoader.prototype, "status", {
        get: function () {
            return this._status;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(BaseLoader.prototype, "needStashBuffer", {
        get: function () {
            return this._needStash;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(BaseLoader.prototype, "onContentLengthKnown", {
        get: function () {
            return this._onContentLengthKnown;
        },
        set: function (callback) {
            this._onContentLengthKnown = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(BaseLoader.prototype, "onURLRedirect", {
        get: function () {
            return this._onURLRedirect;
        },
        set: function (callback) {
            this._onURLRedirect = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(BaseLoader.prototype, "onDataArrival", {
        get: function () {
            return this._onDataArrival;
        },
        set: function (callback) {
            this._onDataArrival = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(BaseLoader.prototype, "onError", {
        get: function () {
            return this._onError;
        },
        set: function (callback) {
            this._onError = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(BaseLoader.prototype, "onComplete", {
        get: function () {
            return this._onComplete;
        },
        set: function (callback) {
            this._onComplete = callback;
        },
        enumerable: false,
        configurable: true
    });
    // pure virtual
    BaseLoader.prototype.open = function (dataSource, range) {
        throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.NotImplementedException('Unimplemented abstract function!');
    };
    BaseLoader.prototype.abort = function () {
        throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_0__.NotImplementedException('Unimplemented abstract function!');
    };
    return BaseLoader;
}());



/***/ }),

/***/ "./src/io/param-seek-handler.js":
/*!**************************************!*\
  !*** ./src/io/param-seek-handler.js ***!
  \**************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var ParamSeekHandler = /** @class */ (function () {
    function ParamSeekHandler(paramStart, paramEnd) {
        this._startName = paramStart;
        this._endName = paramEnd;
    }
    ParamSeekHandler.prototype.getConfig = function (baseUrl, range) {
        var url = baseUrl;
        if (range.from !== 0 || range.to !== -1) {
            var needAnd = true;
            if (url.indexOf('?') === -1) {
                url += '?';
                needAnd = false;
            }
            if (needAnd) {
                url += '&';
            }
            url += this._startName + "=" + range.from.toString();
            if (range.to !== -1) {
                url += "&" + this._endName + "=" + range.to.toString();
            }
        }
        return {
            url: url,
            headers: {}
        };
    };
    ParamSeekHandler.prototype.removeURLParameters = function (seekedURL) {
        var baseURL = seekedURL.split('?')[0];
        var params = undefined;
        var queryIndex = seekedURL.indexOf('?');
        if (queryIndex !== -1) {
            params = seekedURL.substring(queryIndex + 1);
        }
        var resultParams = '';
        if (params != undefined && params.length > 0) {
            var pairs = params.split('&');
            for (var i = 0; i < pairs.length; i++) {
                var pair = pairs[i].split('=');
                var requireAnd = (i > 0);
                if (pair[0] !== this._startName && pair[0] !== this._endName) {
                    if (requireAnd) {
                        resultParams += '&';
                    }
                    resultParams += pairs[i];
                }
            }
        }
        return (resultParams.length === 0) ? baseURL : baseURL + '?' + resultParams;
    };
    return ParamSeekHandler;
}());
/* harmony default export */ __webpack_exports__["default"] = (ParamSeekHandler);


/***/ }),

/***/ "./src/io/range-seek-handler.js":
/*!**************************************!*\
  !*** ./src/io/range-seek-handler.js ***!
  \**************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var RangeSeekHandler = /** @class */ (function () {
    function RangeSeekHandler(zeroStart) {
        this._zeroStart = zeroStart || false;
    }
    RangeSeekHandler.prototype.getConfig = function (url, range) {
        var headers = {};
        if (range.from !== 0 || range.to !== -1) {
            var param = void 0;
            if (range.to !== -1) {
                param = "bytes=" + range.from.toString() + "-" + range.to.toString();
            }
            else {
                param = "bytes=" + range.from.toString() + "-";
            }
            headers['Range'] = param;
        }
        else if (this._zeroStart) {
            headers['Range'] = 'bytes=0-';
        }
        return {
            url: url,
            headers: headers
        };
    };
    RangeSeekHandler.prototype.removeURLParameters = function (seekedURL) {
        return seekedURL;
    };
    return RangeSeekHandler;
}());
/* harmony default export */ __webpack_exports__["default"] = (RangeSeekHandler);


/***/ }),

/***/ "./src/io/speed-sampler.js":
/*!*********************************!*\
  !*** ./src/io/speed-sampler.js ***!
  \*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Utility class to calculate realtime network I/O speed
var SpeedSampler = /** @class */ (function () {
    function SpeedSampler() {
        // milliseconds
        this._firstCheckpoint = 0;
        this._lastCheckpoint = 0;
        this._intervalBytes = 0;
        this._totalBytes = 0;
        this._lastSecondBytes = 0;
        // compatibility detection
        if (self.performance && self.performance.now) {
            this._now = self.performance.now.bind(self.performance);
        }
        else {
            this._now = Date.now;
        }
    }
    SpeedSampler.prototype.reset = function () {
        this._firstCheckpoint = this._lastCheckpoint = 0;
        this._totalBytes = this._intervalBytes = 0;
        this._lastSecondBytes = 0;
    };
    SpeedSampler.prototype.addBytes = function (bytes) {
        if (this._firstCheckpoint === 0) {
            this._firstCheckpoint = this._now();
            this._lastCheckpoint = this._firstCheckpoint;
            this._intervalBytes += bytes;
            this._totalBytes += bytes;
        }
        else if (this._now() - this._lastCheckpoint < 1000) {
            this._intervalBytes += bytes;
            this._totalBytes += bytes;
        }
        else { // duration >= 1000
            this._lastSecondBytes = this._intervalBytes;
            this._intervalBytes = bytes;
            this._totalBytes += bytes;
            this._lastCheckpoint = this._now();
        }
    };
    Object.defineProperty(SpeedSampler.prototype, "currentKBps", {
        get: function () {
            this.addBytes(0);
            var durationSeconds = (this._now() - this._lastCheckpoint) / 1000;
            if (durationSeconds == 0)
                durationSeconds = 1;
            return (this._intervalBytes / durationSeconds) / 1024;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(SpeedSampler.prototype, "lastSecondKBps", {
        get: function () {
            this.addBytes(0);
            if (this._lastSecondBytes !== 0) {
                return this._lastSecondBytes / 1024;
            }
            else { // lastSecondBytes === 0
                if (this._now() - this._lastCheckpoint >= 500) {
                    // if time interval since last checkpoint has exceeded 500ms
                    // the speed is nearly accurate
                    return this.currentKBps;
                }
                else {
                    // We don't know
                    return 0;
                }
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(SpeedSampler.prototype, "averageKBps", {
        get: function () {
            var durationSeconds = (this._now() - this._firstCheckpoint) / 1000;
            return (this._totalBytes / durationSeconds) / 1024;
        },
        enumerable: false,
        configurable: true
    });
    return SpeedSampler;
}());
/* harmony default export */ __webpack_exports__["default"] = (SpeedSampler);


/***/ }),

/***/ "./src/io/websocket-loader.js":
/*!************************************!*\
  !*** ./src/io/websocket-loader.js ***!
  \************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loader.js */ "./src/io/loader.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var __extends = (undefined && undefined.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();


// For FLV over WebSocket live stream
var WebSocketLoader = /** @class */ (function (_super) {
    __extends(WebSocketLoader, _super);
    function WebSocketLoader() {
        var _this = _super.call(this, 'websocket-loader') || this;
        _this.TAG = 'WebSocketLoader';
        _this._needStash = true;
        _this._ws = null;
        _this._requestAbort = false;
        _this._receivedLength = 0;
        return _this;
    }
    WebSocketLoader.isSupported = function () {
        try {
            return (typeof self.WebSocket !== 'undefined');
        }
        catch (e) {
            return false;
        }
    };
    WebSocketLoader.prototype.destroy = function () {
        if (this._ws) {
            this.abort();
        }
        _super.prototype.destroy.call(this);
    };
    WebSocketLoader.prototype.open = function (dataSource) {
        try {
            var ws = this._ws = new self.WebSocket(dataSource.url);
            ws.binaryType = 'arraybuffer';
            ws.onopen = this._onWebSocketOpen.bind(this);
            ws.onclose = this._onWebSocketClose.bind(this);
            ws.onmessage = this._onWebSocketMessage.bind(this);
            ws.onerror = this._onWebSocketError.bind(this);
            this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kConnecting;
        }
        catch (e) {
            this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kError;
            var info = { code: e.code, msg: e.message };
            if (this._onError) {
                this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION, info);
            }
            else {
                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__.RuntimeException(info.msg);
            }
        }
    };
    WebSocketLoader.prototype.abort = function () {
        var ws = this._ws;
        if (ws && (ws.readyState === 0 || ws.readyState === 1)) { // CONNECTING || OPEN
            this._requestAbort = true;
            ws.close();
        }
        this._ws = null;
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kComplete;
    };
    WebSocketLoader.prototype._onWebSocketOpen = function (e) {
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kBuffering;
    };
    WebSocketLoader.prototype._onWebSocketClose = function (e) {
        if (this._requestAbort === true) {
            this._requestAbort = false;
            return;
        }
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kComplete;
        if (this._onComplete) {
            this._onComplete(0, this._receivedLength - 1);
        }
    };
    WebSocketLoader.prototype._onWebSocketMessage = function (e) {
        var _this = this;
        if (e.data instanceof ArrayBuffer) {
            this._dispatchArrayBuffer(e.data);
        }
        else if (e.data instanceof Blob) {
            var reader_1 = new FileReader();
            reader_1.onload = function () {
                _this._dispatchArrayBuffer(reader_1.result);
            };
            reader_1.readAsArrayBuffer(e.data);
        }
        else {
            this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kError;
            var info = { code: -1, msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name };
            if (this._onError) {
                this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION, info);
            }
            else {
                throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__.RuntimeException(info.msg);
            }
        }
    };
    WebSocketLoader.prototype._dispatchArrayBuffer = function (arraybuffer) {
        var chunk = arraybuffer;
        var byteStart = this._receivedLength;
        this._receivedLength += chunk.byteLength;
        if (this._onDataArrival) {
            this._onDataArrival(chunk, byteStart, this._receivedLength);
        }
    };
    WebSocketLoader.prototype._onWebSocketError = function (e) {
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderStatus.kError;
        var info = {
            code: e.code,
            msg: e.message
        };
        if (this._onError) {
            this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION, info);
        }
        else {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_1__.RuntimeException(info.msg);
        }
    };
    return WebSocketLoader;
}(_loader_js__WEBPACK_IMPORTED_MODULE_0__.BaseLoader));
/* harmony default export */ __webpack_exports__["default"] = (WebSocketLoader);


/***/ }),

/***/ "./src/io/xhr-moz-chunked-loader.js":
/*!******************************************!*\
  !*** ./src/io/xhr-moz-chunked-loader.js ***!
  \******************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loader.js */ "./src/io/loader.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var __extends = (undefined && undefined.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();



// For FireFox browser which supports `xhr.responseType = 'moz-chunked-arraybuffer'`
var MozChunkedLoader = /** @class */ (function (_super) {
    __extends(MozChunkedLoader, _super);
    function MozChunkedLoader(seekHandler, config) {
        var _this = _super.call(this, 'xhr-moz-chunked-loader') || this;
        _this.TAG = 'MozChunkedLoader';
        _this._seekHandler = seekHandler;
        _this._config = config;
        _this._needStash = true;
        _this._xhr = null;
        _this._requestAbort = false;
        _this._contentLength = null;
        _this._receivedLength = 0;
        return _this;
    }
    MozChunkedLoader.isSupported = function () {
        try {
            var xhr = new XMLHttpRequest();
            // Firefox 37- requires .open() to be called before setting responseType
            xhr.open('GET', 'https://example.com', true);
            xhr.responseType = 'moz-chunked-arraybuffer';
            return (xhr.responseType === 'moz-chunked-arraybuffer');
        }
        catch (e) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w('MozChunkedLoader', e.message);
            return false;
        }
    };
    MozChunkedLoader.prototype.destroy = function () {
        if (this.isWorking()) {
            this.abort();
        }
        if (this._xhr) {
            this._xhr.onreadystatechange = null;
            this._xhr.onprogress = null;
            this._xhr.onloadend = null;
            this._xhr.onerror = null;
            this._xhr = null;
        }
        _super.prototype.destroy.call(this);
    };
    MozChunkedLoader.prototype.open = function (dataSource, range) {
        this._dataSource = dataSource;
        this._range = range;
        var sourceURL = dataSource.url;
        if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {
            sourceURL = dataSource.redirectedURL;
        }
        var seekConfig = this._seekHandler.getConfig(sourceURL, range);
        this._requestURL = seekConfig.url;
        var xhr = this._xhr = new XMLHttpRequest();
        xhr.open('GET', seekConfig.url, true);
        xhr.responseType = 'moz-chunked-arraybuffer';
        xhr.onreadystatechange = this._onReadyStateChange.bind(this);
        xhr.onprogress = this._onProgress.bind(this);
        xhr.onloadend = this._onLoadEnd.bind(this);
        xhr.onerror = this._onXhrError.bind(this);
        // cors is auto detected and enabled by xhr
        // withCredentials is disabled by default
        if (dataSource.withCredentials) {
            xhr.withCredentials = true;
        }
        if (typeof seekConfig.headers === 'object') {
            var headers = seekConfig.headers;
            for (var key in headers) {
                if (headers.hasOwnProperty(key)) {
                    xhr.setRequestHeader(key, headers[key]);
                }
            }
        }
        // add additional headers
        if (typeof this._config.headers === 'object') {
            var headers = this._config.headers;
            for (var key in headers) {
                if (headers.hasOwnProperty(key)) {
                    xhr.setRequestHeader(key, headers[key]);
                }
            }
        }
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kConnecting;
        xhr.send();
    };
    MozChunkedLoader.prototype.abort = function () {
        this._requestAbort = true;
        if (this._xhr) {
            this._xhr.abort();
        }
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;
    };
    MozChunkedLoader.prototype._onReadyStateChange = function (e) {
        var xhr = e.target;
        if (xhr.readyState === 2) { // HEADERS_RECEIVED
            if (xhr.responseURL != undefined && xhr.responseURL !== this._requestURL) {
                if (this._onURLRedirect) {
                    var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);
                    this._onURLRedirect(redirectedURL);
                }
            }
            if (xhr.status !== 0 && (xhr.status < 200 || xhr.status > 299)) {
                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;
                if (this._onError) {
                    this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: xhr.status, msg: xhr.statusText });
                }
                else {
                    throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException('MozChunkedLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);
                }
            }
            else {
                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kBuffering;
            }
        }
    };
    MozChunkedLoader.prototype._onProgress = function (e) {
        if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError) {
            // Ignore error response
            return;
        }
        if (this._contentLength === null) {
            if (e.total !== null && e.total !== 0) {
                this._contentLength = e.total;
                if (this._onContentLengthKnown) {
                    this._onContentLengthKnown(this._contentLength);
                }
            }
        }
        var chunk = e.target.response;
        var byteStart = this._range.from + this._receivedLength;
        this._receivedLength += chunk.byteLength;
        if (this._onDataArrival) {
            this._onDataArrival(chunk, byteStart, this._receivedLength);
        }
    };
    MozChunkedLoader.prototype._onLoadEnd = function (e) {
        if (this._requestAbort === true) {
            this._requestAbort = false;
            return;
        }
        else if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError) {
            return;
        }
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kComplete;
        if (this._onComplete) {
            this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
        }
    };
    MozChunkedLoader.prototype._onXhrError = function (e) {
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderStatus.kError;
        var type = 0;
        var info = null;
        if (this._contentLength && e.loaded < this._contentLength) {
            type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EARLY_EOF;
            info = { code: -1, msg: 'Moz-Chunked stream meet Early-Eof' };
        }
        else {
            type = _loader_js__WEBPACK_IMPORTED_MODULE_1__.LoaderErrors.EXCEPTION;
            info = { code: -1, msg: e.constructor.name + ' ' + e.type };
        }
        if (this._onError) {
            this._onError(type, info);
        }
        else {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_2__.RuntimeException(info.msg);
        }
    };
    return MozChunkedLoader;
}(_loader_js__WEBPACK_IMPORTED_MODULE_1__.BaseLoader));
/* harmony default export */ __webpack_exports__["default"] = (MozChunkedLoader);


/***/ }),

/***/ "./src/io/xhr-range-loader.js":
/*!************************************!*\
  !*** ./src/io/xhr-range-loader.js ***!
  \************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./speed-sampler.js */ "./src/io/speed-sampler.js");
/* harmony import */ var _loader_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loader.js */ "./src/io/loader.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var __extends = (undefined && undefined.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();




// Universal IO Loader, implemented by adding Range header in xhr's request header
var RangeLoader = /** @class */ (function (_super) {
    __extends(RangeLoader, _super);
    function RangeLoader(seekHandler, config) {
        var _this = _super.call(this, 'xhr-range-loader') || this;
        _this.TAG = 'RangeLoader';
        _this._seekHandler = seekHandler;
        _this._config = config;
        _this._needStash = false;
        _this._chunkSizeKBList = [
            128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192
        ];
        _this._currentChunkSizeKB = 384;
        _this._currentSpeedNormalized = 0;
        _this._zeroSpeedChunkCount = 0;
        _this._xhr = null;
        _this._speedSampler = new _speed_sampler_js__WEBPACK_IMPORTED_MODULE_1__.default();
        _this._requestAbort = false;
        _this._waitForTotalLength = false;
        _this._totalLengthReceived = false;
        _this._currentRequestURL = null;
        _this._currentRedirectedURL = null;
        _this._currentRequestRange = null;
        _this._totalLength = null; // size of the entire file
        _this._contentLength = null; // Content-Length of entire request range
        _this._receivedLength = 0; // total received bytes
        _this._lastTimeLoaded = 0; // received bytes of current request sub-range
        return _this;
    }
    RangeLoader.isSupported = function () {
        try {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', 'https://example.com', true);
            xhr.responseType = 'arraybuffer';
            return (xhr.responseType === 'arraybuffer');
        }
        catch (e) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w('RangeLoader', e.message);
            return false;
        }
    };
    RangeLoader.prototype.destroy = function () {
        if (this.isWorking()) {
            this.abort();
        }
        if (this._xhr) {
            this._xhr.onreadystatechange = null;
            this._xhr.onprogress = null;
            this._xhr.onload = null;
            this._xhr.onerror = null;
            this._xhr = null;
        }
        _super.prototype.destroy.call(this);
    };
    Object.defineProperty(RangeLoader.prototype, "currentSpeed", {
        get: function () {
            return this._speedSampler.lastSecondKBps;
        },
        enumerable: false,
        configurable: true
    });
    RangeLoader.prototype.open = function (dataSource, range) {
        this._dataSource = dataSource;
        this._range = range;
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kConnecting;
        var useRefTotalLength = false;
        if (this._dataSource.filesize != undefined && this._dataSource.filesize !== 0) {
            useRefTotalLength = true;
            this._totalLength = this._dataSource.filesize;
        }
        if (!this._totalLengthReceived && !useRefTotalLength) {
            // We need total filesize
            this._waitForTotalLength = true;
            this._internalOpen(this._dataSource, { from: 0, to: -1 });
        }
        else {
            // We have filesize, start loading
            this._openSubRange();
        }
    };
    RangeLoader.prototype._openSubRange = function () {
        var chunkSize = this._currentChunkSizeKB * 1024;
        var from = this._range.from + this._receivedLength;
        var to = from + chunkSize;
        if (this._contentLength != null) {
            if (to - this._range.from >= this._contentLength) {
                to = this._range.from + this._contentLength - 1;
            }
        }
        this._currentRequestRange = { from: from, to: to };
        this._internalOpen(this._dataSource, this._currentRequestRange);
    };
    RangeLoader.prototype._internalOpen = function (dataSource, range) {
        this._lastTimeLoaded = 0;
        var sourceURL = dataSource.url;
        if (this._config.reuseRedirectedURL) {
            if (this._currentRedirectedURL != undefined) {
                sourceURL = this._currentRedirectedURL;
            }
            else if (dataSource.redirectedURL != undefined) {
                sourceURL = dataSource.redirectedURL;
            }
        }
        var seekConfig = this._seekHandler.getConfig(sourceURL, range);
        this._currentRequestURL = seekConfig.url;
        var xhr = this._xhr = new XMLHttpRequest();
        xhr.open('GET', seekConfig.url, true);
        xhr.responseType = 'arraybuffer';
        xhr.onreadystatechange = this._onReadyStateChange.bind(this);
        xhr.onprogress = this._onProgress.bind(this);
        xhr.onload = this._onLoad.bind(this);
        xhr.onerror = this._onXhrError.bind(this);
        if (dataSource.withCredentials) {
            xhr.withCredentials = true;
        }
        if (typeof seekConfig.headers === 'object') {
            var headers = seekConfig.headers;
            for (var key in headers) {
                if (headers.hasOwnProperty(key)) {
                    xhr.setRequestHeader(key, headers[key]);
                }
            }
        }
        // add additional headers
        if (typeof this._config.headers === 'object') {
            var headers = this._config.headers;
            for (var key in headers) {
                if (headers.hasOwnProperty(key)) {
                    xhr.setRequestHeader(key, headers[key]);
                }
            }
        }
        xhr.send();
    };
    RangeLoader.prototype.abort = function () {
        this._requestAbort = true;
        this._internalAbort();
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kComplete;
    };
    RangeLoader.prototype._internalAbort = function () {
        if (this._xhr) {
            this._xhr.onreadystatechange = null;
            this._xhr.onprogress = null;
            this._xhr.onload = null;
            this._xhr.onerror = null;
            this._xhr.abort();
            this._xhr = null;
        }
    };
    RangeLoader.prototype._onReadyStateChange = function (e) {
        var xhr = e.target;
        if (xhr.readyState === 2) { // HEADERS_RECEIVED
            if (xhr.responseURL != undefined) { // if the browser support this property
                var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);
                if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {
                    this._currentRedirectedURL = redirectedURL;
                    if (this._onURLRedirect) {
                        this._onURLRedirect(redirectedURL);
                    }
                }
            }
            if ((xhr.status >= 200 && xhr.status <= 299)) {
                if (this._waitForTotalLength) {
                    return;
                }
                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kBuffering;
            }
            else {
                this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError;
                if (this._onError) {
                    this._onError(_loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.HTTP_STATUS_CODE_INVALID, { code: xhr.status, msg: xhr.statusText });
                }
                else {
                    throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.RuntimeException('RangeLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);
                }
            }
        }
    };
    RangeLoader.prototype._onProgress = function (e) {
        if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError) {
            // Ignore error response
            return;
        }
        if (this._contentLength === null) {
            var openNextRange = false;
            if (this._waitForTotalLength) {
                this._waitForTotalLength = false;
                this._totalLengthReceived = true;
                openNextRange = true;
                var total = e.total;
                this._internalAbort();
                if (total != null & total !== 0) {
                    this._totalLength = total;
                }
            }
            // calculate currrent request range's contentLength
            if (this._range.to === -1) {
                this._contentLength = this._totalLength - this._range.from;
            }
            else { // to !== -1
                this._contentLength = this._range.to - this._range.from + 1;
            }
            if (openNextRange) {
                this._openSubRange();
                return;
            }
            if (this._onContentLengthKnown) {
                this._onContentLengthKnown(this._contentLength);
            }
        }
        var delta = e.loaded - this._lastTimeLoaded;
        this._lastTimeLoaded = e.loaded;
        this._speedSampler.addBytes(delta);
    };
    RangeLoader.prototype._normalizeSpeed = function (input) {
        var list = this._chunkSizeKBList;
        var last = list.length - 1;
        var mid = 0;
        var lbound = 0;
        var ubound = last;
        if (input < list[0]) {
            return list[0];
        }
        while (lbound <= ubound) {
            mid = lbound + Math.floor((ubound - lbound) / 2);
            if (mid === last || (input >= list[mid] && input < list[mid + 1])) {
                return list[mid];
            }
            else if (list[mid] < input) {
                lbound = mid + 1;
            }
            else {
                ubound = mid - 1;
            }
        }
    };
    RangeLoader.prototype._onLoad = function (e) {
        if (this._status === _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError) {
            // Ignore error response
            return;
        }
        if (this._waitForTotalLength) {
            this._waitForTotalLength = false;
            return;
        }
        this._lastTimeLoaded = 0;
        var KBps = this._speedSampler.lastSecondKBps;
        if (KBps === 0) {
            this._zeroSpeedChunkCount++;
            if (this._zeroSpeedChunkCount >= 3) {
                // Try get currentKBps after 3 chunks
                KBps = this._speedSampler.currentKBps;
            }
        }
        if (KBps !== 0) {
            var normalized = this._normalizeSpeed(KBps);
            if (this._currentSpeedNormalized !== normalized) {
                this._currentSpeedNormalized = normalized;
                this._currentChunkSizeKB = normalized;
            }
        }
        var chunk = e.target.response;
        var byteStart = this._range.from + this._receivedLength;
        this._receivedLength += chunk.byteLength;
        var reportComplete = false;
        if (this._contentLength != null && this._receivedLength < this._contentLength) {
            // continue load next chunk
            this._openSubRange();
        }
        else {
            reportComplete = true;
        }
        // dispatch received chunk
        if (this._onDataArrival) {
            this._onDataArrival(chunk, byteStart, this._receivedLength);
        }
        if (reportComplete) {
            this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kComplete;
            if (this._onComplete) {
                this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
            }
        }
    };
    RangeLoader.prototype._onXhrError = function (e) {
        this._status = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderStatus.kError;
        var type = 0;
        var info = null;
        if (this._contentLength && this._receivedLength > 0
            && this._receivedLength < this._contentLength) {
            type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EARLY_EOF;
            info = { code: -1, msg: 'RangeLoader meet Early-Eof' };
        }
        else {
            type = _loader_js__WEBPACK_IMPORTED_MODULE_2__.LoaderErrors.EXCEPTION;
            info = { code: -1, msg: e.constructor.name + ' ' + e.type };
        }
        if (this._onError) {
            this._onError(type, info);
        }
        else {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.RuntimeException(info.msg);
        }
    };
    return RangeLoader;
}(_loader_js__WEBPACK_IMPORTED_MODULE_2__.BaseLoader));
/* harmony default export */ __webpack_exports__["default"] = (RangeLoader);


/***/ }),

/***/ "./src/player/flv-player.js":
/*!**********************************!*\
  !*** ./src/player/flv-player.js ***!
  \**********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/browser.js */ "./src/utils/browser.js");
/* harmony import */ var _player_events_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./player-events.js */ "./src/player/player-events.js");
/* harmony import */ var _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/transmuxer.js */ "./src/core/transmuxer.js");
/* harmony import */ var _core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/transmuxing-events.js */ "./src/core/transmuxing-events.js");
/* harmony import */ var _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../core/mse-controller.js */ "./src/core/mse-controller.js");
/* harmony import */ var _core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/mse-events.js */ "./src/core/mse-events.js");
/* harmony import */ var _player_errors_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./player-errors.js */ "./src/player/player-errors.js");
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../config.js */ "./src/config.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */











var FlvPlayer = /** @class */ (function () {
    function FlvPlayer(mediaDataSource, config) {
        this.TAG = 'FlvPlayer';
        this._type = 'FlvPlayer';
        this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();
        this._config = (0,_config_js__WEBPACK_IMPORTED_MODULE_9__.createDefaultConfig)();
        if (typeof config === 'object') {
            Object.assign(this._config, config);
        }
        if (mediaDataSource.type.toLowerCase() !== 'flv') {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__.InvalidArgumentException('FlvPlayer requires an flv MediaDataSource input!');
        }
        if (mediaDataSource.isLive === true) {
            this._config.isLive = true;
        }
        this.e = {
            onvLoadedMetadata: this._onvLoadedMetadata.bind(this),
            onvSeeking: this._onvSeeking.bind(this),
            onvCanPlay: this._onvCanPlay.bind(this),
            onvStalled: this._onvStalled.bind(this),
            onvProgress: this._onvProgress.bind(this)
        };
        if (self.performance && self.performance.now) {
            this._now = self.performance.now.bind(self.performance);
        }
        else {
            this._now = Date.now;
        }
        this._pendingSeekTime = null; // in seconds
        this._requestSetTime = false;
        this._seekpointRecord = null;
        this._progressChecker = null;
        this._mediaDataSource = mediaDataSource;
        this._mediaElement = null;
        this._msectl = null;
        this._transmuxer = null;
        this._mseSourceOpened = false;
        this._hasPendingLoad = false;
        this._receivedCanPlay = false;
        this._mediaInfo = null;
        this._statisticsInfo = null;
        var chromeNeedIDRFix = (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.chrome &&
            (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.version.major < 50 ||
                (_utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.version.build < 2661)));
        this._alwaysSeekKeyframe = (chromeNeedIDRFix || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.msie) ? true : false;
        if (this._alwaysSeekKeyframe) {
            this._config.accurateSeek = false;
        }
    }
    FlvPlayer.prototype.destroy = function () {
        if (this._progressChecker != null) {
            window.clearInterval(this._progressChecker);
            this._progressChecker = null;
        }
        if (this._transmuxer) {
            this.unload();
        }
        if (this._mediaElement) {
            this.detachMediaElement();
        }
        this.e = null;
        this._mediaDataSource = null;
        this._emitter.removeAllListeners();
        this._emitter = null;
    };
    FlvPlayer.prototype.on = function (event, listener) {
        var _this = this;
        if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO) {
            if (this._mediaInfo != null) {
                Promise.resolve().then(function () {
                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO, _this.mediaInfo);
                });
            }
        }
        else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO) {
            if (this._statisticsInfo != null) {
                Promise.resolve().then(function () {
                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO, _this.statisticsInfo);
                });
            }
        }
        this._emitter.addListener(event, listener);
    };
    FlvPlayer.prototype.off = function (event, listener) {
        this._emitter.removeListener(event, listener);
    };
    FlvPlayer.prototype.attachMediaElement = function (mediaElement) {
        var _this = this;
        this._mediaElement = mediaElement;
        mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);
        mediaElement.addEventListener('seeking', this.e.onvSeeking);
        mediaElement.addEventListener('canplay', this.e.onvCanPlay);
        mediaElement.addEventListener('stalled', this.e.onvStalled);
        mediaElement.addEventListener('progress', this.e.onvProgress);
        this._msectl = new _core_mse_controller_js__WEBPACK_IMPORTED_MODULE_6__.default(this._config);
        this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.UPDATE_END, this._onmseUpdateEnd.bind(this));
        this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.BUFFER_FULL, this._onmseBufferFull.bind(this));
        this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.SOURCE_OPEN, function () {
            _this._mseSourceOpened = true;
            if (_this._hasPendingLoad) {
                _this._hasPendingLoad = false;
                _this.load();
            }
        });
        this._msectl.on(_core_mse_events_js__WEBPACK_IMPORTED_MODULE_7__.default.ERROR, function (info) {
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorTypes.MEDIA_ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorDetails.MEDIA_MSE_ERROR, info);
        });
        this._msectl.attachMediaElement(mediaElement);
        if (this._pendingSeekTime != null) {
            try {
                mediaElement.currentTime = this._pendingSeekTime;
                this._pendingSeekTime = null;
            }
            catch (e) {
                // IE11 may throw InvalidStateError if readyState === 0
                // We can defer set currentTime operation after loadedmetadata
            }
        }
    };
    FlvPlayer.prototype.detachMediaElement = function () {
        if (this._mediaElement) {
            this._msectl.detachMediaElement();
            this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);
            this._mediaElement.removeEventListener('seeking', this.e.onvSeeking);
            this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);
            this._mediaElement.removeEventListener('stalled', this.e.onvStalled);
            this._mediaElement.removeEventListener('progress', this.e.onvProgress);
            this._mediaElement = null;
        }
        if (this._msectl) {
            this._msectl.destroy();
            this._msectl = null;
        }
    };
    FlvPlayer.prototype.load = function () {
        var _this = this;
        if (!this._mediaElement) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__.IllegalStateException('HTMLMediaElement must be attached before load()!');
        }
        if (this._transmuxer) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_10__.IllegalStateException('FlvPlayer.load() has been called, please call unload() first!');
        }
        if (this._hasPendingLoad) {
            return;
        }
        if (this._config.deferLoadAfterSourceOpen && this._mseSourceOpened === false) {
            this._hasPendingLoad = true;
            return;
        }
        if (this._mediaElement.readyState > 0) {
            this._requestSetTime = true;
            // IE11 may throw InvalidStateError if readyState === 0
            this._mediaElement.currentTime = 0;
        }
        this._transmuxer = new _core_transmuxer_js__WEBPACK_IMPORTED_MODULE_4__.default(this._mediaDataSource, this._config);
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.INIT_SEGMENT, function (type, is) {
            _this._msectl.appendInitSegment(is);
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_SEGMENT, function (type, ms) {
            _this._msectl.appendMediaSegment(ms);
            // lazyLoad check
            if (_this._config.lazyLoad && !_this._config.isLive) {
                var currentTime = _this._mediaElement.currentTime;
                if (ms.info.endDts >= (currentTime + _this._config.lazyLoadMaxDuration) * 1000) {
                    if (_this._progressChecker == null) {
                        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(_this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');
                        _this._suspendTransmuxer();
                    }
                }
            }
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.LOADING_COMPLETE, function () {
            _this._msectl.endOfStream();
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.LOADING_COMPLETE);
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOVERED_EARLY_EOF, function () {
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.RECOVERED_EARLY_EOF);
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.IO_ERROR, function (detail, info) {
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorTypes.NETWORK_ERROR, detail, info);
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.DEMUX_ERROR, function (detail, info) {
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.ERROR, _player_errors_js__WEBPACK_IMPORTED_MODULE_8__.ErrorTypes.MEDIA_ERROR, detail, { code: -1, msg: info });
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.MEDIA_INFO, function (mediaInfo) {
            _this._mediaInfo = mediaInfo;
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.MEDIA_INFO, Object.assign({}, mediaInfo));
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.METADATA_ARRIVED, function (metadata) {
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.METADATA_ARRIVED, metadata);
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.SCRIPTDATA_ARRIVED, function (data) {
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.SCRIPTDATA_ARRIVED, data);
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.STATISTICS_INFO, function (statInfo) {
            _this._statisticsInfo = _this._fillStatisticsInfo(statInfo);
            _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_3__.default.STATISTICS_INFO, Object.assign({}, _this._statisticsInfo));
        });
        this._transmuxer.on(_core_transmuxing_events_js__WEBPACK_IMPORTED_MODULE_5__.default.RECOMMEND_SEEKPOINT, function (milliseconds) {
            if (_this._mediaElement && !_this._config.accurateSeek) {
                _this._requestSetTime = true;
                _this._mediaElement.currentTime = milliseconds / 1000;
            }
        });
        this._transmuxer.open();
    };
    FlvPlayer.prototype.unload = function () {
        if (this._mediaElement) {
            this._mediaElement.pause();
        }
        if (this._msectl) {
            this._msectl.seek(0);
        }
        if (this._transmuxer) {
            this._transmuxer.close();
            this._transmuxer.destroy();
            this._transmuxer = null;
        }
    };
    FlvPlayer.prototype.play = function () {
        return this._mediaElement.play();
    };
    FlvPlayer.prototype.pause = function () {
        this._mediaElement.pause();
    };
    Object.defineProperty(FlvPlayer.prototype, "type", {
        get: function () {
            return this._type;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FlvPlayer.prototype, "buffered", {
        get: function () {
            return this._mediaElement.buffered;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FlvPlayer.prototype, "duration", {
        get: function () {
            return this._mediaElement.duration;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FlvPlayer.prototype, "volume", {
        get: function () {
            return this._mediaElement.volume;
        },
        set: function (value) {
            this._mediaElement.volume = value;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FlvPlayer.prototype, "muted", {
        get: function () {
            return this._mediaElement.muted;
        },
        set: function (muted) {
            this._mediaElement.muted = muted;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FlvPlayer.prototype, "currentTime", {
        get: function () {
            if (this._mediaElement) {
                return this._mediaElement.currentTime;
            }
            return 0;
        },
        set: function (seconds) {
            if (this._mediaElement) {
                this._internalSeek(seconds);
            }
            else {
                this._pendingSeekTime = seconds;
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FlvPlayer.prototype, "mediaInfo", {
        get: function () {
            return Object.assign({}, this._mediaInfo);
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(FlvPlayer.prototype, "statisticsInfo", {
        get: function () {
            if (this._statisticsInfo == null) {
                this._statisticsInfo = {};
            }
            this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo);
            return Object.assign({}, this._statisticsInfo);
        },
        enumerable: false,
        configurable: true
    });
    FlvPlayer.prototype._fillStatisticsInfo = function (statInfo) {
        statInfo.playerType = this._type;
        if (!(this._mediaElement instanceof HTMLVideoElement)) {
            return statInfo;
        }
        var hasQualityInfo = true;
        var decoded = 0;
        var dropped = 0;
        if (this._mediaElement.getVideoPlaybackQuality) {
            var quality = this._mediaElement.getVideoPlaybackQuality();
            decoded = quality.totalVideoFrames;
            dropped = quality.droppedVideoFrames;
        }
        else if (this._mediaElement.webkitDecodedFrameCount != undefined) {
            decoded = this._mediaElement.webkitDecodedFrameCount;
            dropped = this._mediaElement.webkitDroppedFrameCount;
        }
        else {
            hasQualityInfo = false;
        }
        if (hasQualityInfo) {
            statInfo.decodedFrames = decoded;
            statInfo.droppedFrames = dropped;
        }
        return statInfo;
    };
    FlvPlayer.prototype._onmseUpdateEnd = function () {
        if (!this._config.lazyLoad || this._config.isLive) {
            return;
        }
        var buffered = this._mediaElement.buffered;
        var currentTime = this._mediaElement.currentTime;
        var currentRangeStart = 0;
        var currentRangeEnd = 0;
        for (var i = 0; i < buffered.length; i++) {
            var start = buffered.start(i);
            var end = buffered.end(i);
            if (start <= currentTime && currentTime < end) {
                currentRangeStart = start;
                currentRangeEnd = end;
                break;
            }
        }
        if (currentRangeEnd >= currentTime + this._config.lazyLoadMaxDuration && this._progressChecker == null) {
            _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');
            this._suspendTransmuxer();
        }
    };
    FlvPlayer.prototype._onmseBufferFull = function () {
        _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'MSE SourceBuffer is full, suspend transmuxing task');
        if (this._progressChecker == null) {
            this._suspendTransmuxer();
        }
    };
    FlvPlayer.prototype._suspendTransmuxer = function () {
        if (this._transmuxer) {
            this._transmuxer.pause();
            if (this._progressChecker == null) {
                this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1000);
            }
        }
    };
    FlvPlayer.prototype._checkProgressAndResume = function () {
        var currentTime = this._mediaElement.currentTime;
        var buffered = this._mediaElement.buffered;
        var needResume = false;
        for (var i = 0; i < buffered.length; i++) {
            var from = buffered.start(i);
            var to = buffered.end(i);
            if (currentTime >= from && currentTime < to) {
                if (currentTime >= to - this._config.lazyLoadRecoverDuration) {
                    needResume = true;
                }
                break;
            }
        }
        if (needResume) {
            window.clearInterval(this._progressChecker);
            this._progressChecker = null;
            if (needResume) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.v(this.TAG, 'Continue loading from paused position');
                this._transmuxer.resume();
            }
        }
    };
    FlvPlayer.prototype._isTimepointBuffered = function (seconds) {
        var buffered = this._mediaElement.buffered;
        for (var i = 0; i < buffered.length; i++) {
            var from = buffered.start(i);
            var to = buffered.end(i);
            if (seconds >= from && seconds < to) {
                return true;
            }
        }
        return false;
    };
    FlvPlayer.prototype._internalSeek = function (seconds) {
        var directSeek = this._isTimepointBuffered(seconds);
        var directSeekBegin = false;
        var directSeekBeginTime = 0;
        if (seconds < 1.0 && this._mediaElement.buffered.length > 0) {
            var videoBeginTime = this._mediaElement.buffered.start(0);
            if ((videoBeginTime < 1.0 && seconds < videoBeginTime) || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari) {
                directSeekBegin = true;
                // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid
                directSeekBeginTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari ? 0.1 : videoBeginTime;
            }
        }
        if (directSeekBegin) { // seek to video begin, set currentTime directly if beginPTS buffered
            this._requestSetTime = true;
            this._mediaElement.currentTime = directSeekBeginTime;
        }
        else if (directSeek) { // buffered position
            if (!this._alwaysSeekKeyframe) {
                this._requestSetTime = true;
                this._mediaElement.currentTime = seconds;
            }
            else {
                var idr = this._msectl.getNearestKeyframe(Math.floor(seconds * 1000));
                this._requestSetTime = true;
                if (idr != null) {
                    this._mediaElement.currentTime = idr.dts / 1000;
                }
                else {
                    this._mediaElement.currentTime = seconds;
                }
            }
            if (this._progressChecker != null) {
                this._checkProgressAndResume();
            }
        }
        else {
            if (this._progressChecker != null) {
                window.clearInterval(this._progressChecker);
                this._progressChecker = null;
            }
            this._msectl.seek(seconds);
            this._transmuxer.seek(Math.floor(seconds * 1000)); // in milliseconds
            // no need to set mediaElement.currentTime if non-accurateSeek,
            // just wait for the recommend_seekpoint callback
            if (this._config.accurateSeek) {
                this._requestSetTime = true;
                this._mediaElement.currentTime = seconds;
            }
        }
    };
    FlvPlayer.prototype._checkAndApplyUnbufferedSeekpoint = function () {
        if (this._seekpointRecord) {
            if (this._seekpointRecord.recordTime <= this._now() - 100) {
                var target = this._mediaElement.currentTime;
                this._seekpointRecord = null;
                if (!this._isTimepointBuffered(target)) {
                    if (this._progressChecker != null) {
                        window.clearTimeout(this._progressChecker);
                        this._progressChecker = null;
                    }
                    // .currentTime is consists with .buffered timestamp
                    // Chrome/Edge use DTS, while FireFox/Safari use PTS
                    this._msectl.seek(target);
                    this._transmuxer.seek(Math.floor(target * 1000));
                    // set currentTime if accurateSeek, or wait for recommend_seekpoint callback
                    if (this._config.accurateSeek) {
                        this._requestSetTime = true;
                        this._mediaElement.currentTime = target;
                    }
                }
            }
            else {
                window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
            }
        }
    };
    FlvPlayer.prototype._checkAndResumeStuckPlayback = function (stalled) {
        var media = this._mediaElement;
        if (stalled || !this._receivedCanPlay || media.readyState < 2) { // HAVE_CURRENT_DATA
            var buffered = media.buffered;
            if (buffered.length > 0 && media.currentTime < buffered.start(0)) {
                _utils_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.w(this.TAG, "Playback seems stuck at " + media.currentTime + ", seek to " + buffered.start(0));
                this._requestSetTime = true;
                this._mediaElement.currentTime = buffered.start(0);
                this._mediaElement.removeEventListener('progress', this.e.onvProgress);
            }
        }
        else {
            // Playback didn't stuck, remove progress event listener
            this._mediaElement.removeEventListener('progress', this.e.onvProgress);
        }
    };
    FlvPlayer.prototype._onvLoadedMetadata = function (e) {
        if (this._pendingSeekTime != null) {
            this._mediaElement.currentTime = this._pendingSeekTime;
            this._pendingSeekTime = null;
        }
    };
    FlvPlayer.prototype._onvSeeking = function (e) {
        var target = this._mediaElement.currentTime;
        var buffered = this._mediaElement.buffered;
        if (this._requestSetTime) {
            this._requestSetTime = false;
            return;
        }
        if (target < 1.0 && buffered.length > 0) {
            // seek to video begin, set currentTime directly if beginPTS buffered
            var videoBeginTime = buffered.start(0);
            if ((videoBeginTime < 1.0 && target < videoBeginTime) || _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari) {
                this._requestSetTime = true;
                // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid
                this._mediaElement.currentTime = _utils_browser_js__WEBPACK_IMPORTED_MODULE_2__.default.safari ? 0.1 : videoBeginTime;
                return;
            }
        }
        if (this._isTimepointBuffered(target)) {
            if (this._alwaysSeekKeyframe) {
                var idr = this._msectl.getNearestKeyframe(Math.floor(target * 1000));
                if (idr != null) {
                    this._requestSetTime = true;
                    this._mediaElement.currentTime = idr.dts / 1000;
                }
            }
            if (this._progressChecker != null) {
                this._checkProgressAndResume();
            }
            return;
        }
        this._seekpointRecord = {
            seekPoint: target,
            recordTime: this._now()
        };
        window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
    };
    FlvPlayer.prototype._onvCanPlay = function (e) {
        this._receivedCanPlay = true;
        this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);
    };
    FlvPlayer.prototype._onvStalled = function (e) {
        this._checkAndResumeStuckPlayback(true);
    };
    FlvPlayer.prototype._onvProgress = function (e) {
        this._checkAndResumeStuckPlayback();
    };
    return FlvPlayer;
}());
/* harmony default export */ __webpack_exports__["default"] = (FlvPlayer);


/***/ }),

/***/ "./src/player/native-player.js":
/*!*************************************!*\
  !*** ./src/player/native-player.js ***!
  \*************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _player_events_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./player-events.js */ "./src/player/player-events.js");
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config.js */ "./src/config.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */




// Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src. 
var NativePlayer = /** @class */ (function () {
    function NativePlayer(mediaDataSource, config) {
        this.TAG = 'NativePlayer';
        this._type = 'NativePlayer';
        this._emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();
        this._config = (0,_config_js__WEBPACK_IMPORTED_MODULE_2__.createDefaultConfig)();
        if (typeof config === 'object') {
            Object.assign(this._config, config);
        }
        if (mediaDataSource.type.toLowerCase() === 'flv') {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.InvalidArgumentException('NativePlayer does\'t support flv MediaDataSource input!');
        }
        if (mediaDataSource.hasOwnProperty('segments')) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.InvalidArgumentException("NativePlayer(" + mediaDataSource.type + ") doesn't support multipart playback!");
        }
        this.e = {
            onvLoadedMetadata: this._onvLoadedMetadata.bind(this)
        };
        this._pendingSeekTime = null;
        this._statisticsReporter = null;
        this._mediaDataSource = mediaDataSource;
        this._mediaElement = null;
    }
    NativePlayer.prototype.destroy = function () {
        if (this._mediaElement) {
            this.unload();
            this.detachMediaElement();
        }
        this.e = null;
        this._mediaDataSource = null;
        this._emitter.removeAllListeners();
        this._emitter = null;
    };
    NativePlayer.prototype.on = function (event, listener) {
        var _this = this;
        if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.MEDIA_INFO) {
            if (this._mediaElement != null && this._mediaElement.readyState !== 0) { // HAVE_NOTHING
                Promise.resolve().then(function () {
                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.MEDIA_INFO, _this.mediaInfo);
                });
            }
        }
        else if (event === _player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.STATISTICS_INFO) {
            if (this._mediaElement != null && this._mediaElement.readyState !== 0) {
                Promise.resolve().then(function () {
                    _this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.STATISTICS_INFO, _this.statisticsInfo);
                });
            }
        }
        this._emitter.addListener(event, listener);
    };
    NativePlayer.prototype.off = function (event, listener) {
        this._emitter.removeListener(event, listener);
    };
    NativePlayer.prototype.attachMediaElement = function (mediaElement) {
        this._mediaElement = mediaElement;
        mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);
        if (this._pendingSeekTime != null) {
            try {
                mediaElement.currentTime = this._pendingSeekTime;
                this._pendingSeekTime = null;
            }
            catch (e) {
                // IE11 may throw InvalidStateError if readyState === 0
                // Defer set currentTime operation after loadedmetadata
            }
        }
    };
    NativePlayer.prototype.detachMediaElement = function () {
        if (this._mediaElement) {
            this._mediaElement.src = '';
            this._mediaElement.removeAttribute('src');
            this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);
            this._mediaElement = null;
        }
        if (this._statisticsReporter != null) {
            window.clearInterval(this._statisticsReporter);
            this._statisticsReporter = null;
        }
    };
    NativePlayer.prototype.load = function () {
        if (!this._mediaElement) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_3__.IllegalStateException('HTMLMediaElement must be attached before load()!');
        }
        this._mediaElement.src = this._mediaDataSource.url;
        if (this._mediaElement.readyState > 0) {
            this._mediaElement.currentTime = 0;
        }
        this._mediaElement.preload = 'auto';
        this._mediaElement.load();
        this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);
    };
    NativePlayer.prototype.unload = function () {
        if (this._mediaElement) {
            this._mediaElement.src = '';
            this._mediaElement.removeAttribute('src');
        }
        if (this._statisticsReporter != null) {
            window.clearInterval(this._statisticsReporter);
            this._statisticsReporter = null;
        }
    };
    NativePlayer.prototype.play = function () {
        return this._mediaElement.play();
    };
    NativePlayer.prototype.pause = function () {
        this._mediaElement.pause();
    };
    Object.defineProperty(NativePlayer.prototype, "type", {
        get: function () {
            return this._type;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(NativePlayer.prototype, "buffered", {
        get: function () {
            return this._mediaElement.buffered;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(NativePlayer.prototype, "duration", {
        get: function () {
            return this._mediaElement.duration;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(NativePlayer.prototype, "volume", {
        get: function () {
            return this._mediaElement.volume;
        },
        set: function (value) {
            this._mediaElement.volume = value;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(NativePlayer.prototype, "muted", {
        get: function () {
            return this._mediaElement.muted;
        },
        set: function (muted) {
            this._mediaElement.muted = muted;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(NativePlayer.prototype, "currentTime", {
        get: function () {
            if (this._mediaElement) {
                return this._mediaElement.currentTime;
            }
            return 0;
        },
        set: function (seconds) {
            if (this._mediaElement) {
                this._mediaElement.currentTime = seconds;
            }
            else {
                this._pendingSeekTime = seconds;
            }
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(NativePlayer.prototype, "mediaInfo", {
        get: function () {
            var mediaPrefix = (this._mediaElement instanceof HTMLAudioElement) ? 'audio/' : 'video/';
            var info = {
                mimeType: mediaPrefix + this._mediaDataSource.type
            };
            if (this._mediaElement) {
                info.duration = Math.floor(this._mediaElement.duration * 1000);
                if (this._mediaElement instanceof HTMLVideoElement) {
                    info.width = this._mediaElement.videoWidth;
                    info.height = this._mediaElement.videoHeight;
                }
            }
            return info;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(NativePlayer.prototype, "statisticsInfo", {
        get: function () {
            var info = {
                playerType: this._type,
                url: this._mediaDataSource.url
            };
            if (!(this._mediaElement instanceof HTMLVideoElement)) {
                return info;
            }
            var hasQualityInfo = true;
            var decoded = 0;
            var dropped = 0;
            if (this._mediaElement.getVideoPlaybackQuality) {
                var quality = this._mediaElement.getVideoPlaybackQuality();
                decoded = quality.totalVideoFrames;
                dropped = quality.droppedVideoFrames;
            }
            else if (this._mediaElement.webkitDecodedFrameCount != undefined) {
                decoded = this._mediaElement.webkitDecodedFrameCount;
                dropped = this._mediaElement.webkitDroppedFrameCount;
            }
            else {
                hasQualityInfo = false;
            }
            if (hasQualityInfo) {
                info.decodedFrames = decoded;
                info.droppedFrames = dropped;
            }
            return info;
        },
        enumerable: false,
        configurable: true
    });
    NativePlayer.prototype._onvLoadedMetadata = function (e) {
        if (this._pendingSeekTime != null) {
            this._mediaElement.currentTime = this._pendingSeekTime;
            this._pendingSeekTime = null;
        }
        this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.MEDIA_INFO, this.mediaInfo);
    };
    NativePlayer.prototype._reportStatisticsInfo = function () {
        this._emitter.emit(_player_events_js__WEBPACK_IMPORTED_MODULE_1__.default.STATISTICS_INFO, this.statisticsInfo);
    };
    return NativePlayer;
}());
/* harmony default export */ __webpack_exports__["default"] = (NativePlayer);


/***/ }),

/***/ "./src/player/player-errors.js":
/*!*************************************!*\
  !*** ./src/player/player-errors.js ***!
  \*************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "ErrorTypes": function() { return /* binding */ ErrorTypes; },
/* harmony export */   "ErrorDetails": function() { return /* binding */ ErrorDetails; }
/* harmony export */ });
/* harmony import */ var _io_loader_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../io/loader.js */ "./src/io/loader.js");
/* harmony import */ var _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../demux/demux-errors.js */ "./src/demux/demux-errors.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


var ErrorTypes = {
    NETWORK_ERROR: 'NetworkError',
    MEDIA_ERROR: 'MediaError',
    OTHER_ERROR: 'OtherError'
};
var ErrorDetails = {
    NETWORK_EXCEPTION: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.EXCEPTION,
    NETWORK_STATUS_CODE_INVALID: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.HTTP_STATUS_CODE_INVALID,
    NETWORK_TIMEOUT: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.CONNECTING_TIMEOUT,
    NETWORK_UNRECOVERABLE_EARLY_EOF: _io_loader_js__WEBPACK_IMPORTED_MODULE_0__.LoaderErrors.UNRECOVERABLE_EARLY_EOF,
    MEDIA_MSE_ERROR: 'MediaMSEError',
    MEDIA_FORMAT_ERROR: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__.default.FORMAT_ERROR,
    MEDIA_FORMAT_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__.default.FORMAT_UNSUPPORTED,
    MEDIA_CODEC_UNSUPPORTED: _demux_demux_errors_js__WEBPACK_IMPORTED_MODULE_1__.default.CODEC_UNSUPPORTED
};


/***/ }),

/***/ "./src/player/player-events.js":
/*!*************************************!*\
  !*** ./src/player/player-events.js ***!
  \*************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var PlayerEvents = {
    ERROR: 'error',
    LOADING_COMPLETE: 'loading_complete',
    RECOVERED_EARLY_EOF: 'recovered_early_eof',
    MEDIA_INFO: 'media_info',
    METADATA_ARRIVED: 'metadata_arrived',
    SCRIPTDATA_ARRIVED: 'scriptdata_arrived',
    STATISTICS_INFO: 'statistics_info'
};
/* harmony default export */ __webpack_exports__["default"] = (PlayerEvents);


/***/ }),

/***/ "./src/remux/aac-silent.js":
/*!*********************************!*\
  !*** ./src/remux/aac-silent.js ***!
  \*********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * This file is modified from dailymotion's hls.js library (hls.js/src/helper/aac.js)
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var AAC = /** @class */ (function () {
    function AAC() {
    }
    AAC.getSilentFrame = function (codec, channelCount) {
        if (codec === 'mp4a.40.2') {
            // handle LC-AAC
            if (channelCount === 1) {
                return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);
            }
            else if (channelCount === 2) {
                return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);
            }
            else if (channelCount === 3) {
                return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);
            }
            else if (channelCount === 4) {
                return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);
            }
            else if (channelCount === 5) {
                return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);
            }
            else if (channelCount === 6) {
                return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);
            }
        }
        else {
            // handle HE-AAC (mp4a.40.5 / mp4a.40.29)
            if (channelCount === 1) {
                // ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
                return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
            }
            else if (channelCount === 2) {
                // ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
                return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
            }
            else if (channelCount === 3) {
                // ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
                return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
            }
        }
        return null;
    };
    return AAC;
}());
/* harmony default export */ __webpack_exports__["default"] = (AAC);


/***/ }),

/***/ "./src/remux/mp4-generator.js":
/*!************************************!*\
  !*** ./src/remux/mp4-generator.js ***!
  \************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * This file is derived from dailymotion's hls.js library (hls.js/src/remux/mp4-generator.js)
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
//  MP4 boxes generator for ISO BMFF (ISO Base Media File Format, defined in ISO/IEC 14496-12)
var MP4 = /** @class */ (function () {
    function MP4() {
    }
    MP4.init = function () {
        MP4.types = {
            avc1: [], avcC: [], btrt: [], dinf: [],
            dref: [], esds: [], ftyp: [], hdlr: [],
            mdat: [], mdhd: [], mdia: [], mfhd: [],
            minf: [], moof: [], moov: [], mp4a: [],
            mvex: [], mvhd: [], sdtp: [], stbl: [],
            stco: [], stsc: [], stsd: [], stsz: [],
            stts: [], tfdt: [], tfhd: [], traf: [],
            trak: [], trun: [], trex: [], tkhd: [],
            vmhd: [], smhd: [], '.mp3': []
        };
        for (var name_1 in MP4.types) {
            if (MP4.types.hasOwnProperty(name_1)) {
                MP4.types[name_1] = [
                    name_1.charCodeAt(0),
                    name_1.charCodeAt(1),
                    name_1.charCodeAt(2),
                    name_1.charCodeAt(3)
                ];
            }
        }
        var constants = MP4.constants = {};
        constants.FTYP = new Uint8Array([
            0x69, 0x73, 0x6F, 0x6D,
            0x0, 0x0, 0x0, 0x1,
            0x69, 0x73, 0x6F, 0x6D,
            0x61, 0x76, 0x63, 0x31 // avc1
        ]);
        constants.STSD_PREFIX = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x01 // entry_count
        ]);
        constants.STTS = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00 // entry_count
        ]);
        constants.STSC = constants.STCO = constants.STTS;
        constants.STSZ = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00 // sample_count
        ]);
        constants.HDLR_VIDEO = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x76, 0x69, 0x64, 0x65,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x56, 0x69, 0x64, 0x65,
            0x6F, 0x48, 0x61, 0x6E,
            0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler
        ]);
        constants.HDLR_AUDIO = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x73, 0x6F, 0x75, 0x6E,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x53, 0x6F, 0x75, 0x6E,
            0x64, 0x48, 0x61, 0x6E,
            0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler
        ]);
        constants.DREF = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x01,
            0x00, 0x00, 0x00, 0x0C,
            0x75, 0x72, 0x6C, 0x20,
            0x00, 0x00, 0x00, 0x01 // version(0) + flags
        ]);
        // Sound media header
        constants.SMHD = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)
        ]);
        // video media header
        constants.VMHD = new Uint8Array([
            0x00, 0x00, 0x00, 0x01,
            0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00
        ]);
    };
    // Generate a box
    MP4.box = function (type) {
        var size = 8;
        var result = null;
        var datas = Array.prototype.slice.call(arguments, 1);
        var arrayCount = datas.length;
        for (var i = 0; i < arrayCount; i++) {
            size += datas[i].byteLength;
        }
        result = new Uint8Array(size);
        result[0] = (size >>> 24) & 0xFF; // size
        result[1] = (size >>> 16) & 0xFF;
        result[2] = (size >>> 8) & 0xFF;
        result[3] = (size) & 0xFF;
        result.set(type, 4); // type
        var offset = 8;
        for (var i = 0; i < arrayCount; i++) { // data body
            result.set(datas[i], offset);
            offset += datas[i].byteLength;
        }
        return result;
    };
    // emit ftyp & moov
    MP4.generateInitSegment = function (meta) {
        var ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);
        var moov = MP4.moov(meta);
        var result = new Uint8Array(ftyp.byteLength + moov.byteLength);
        result.set(ftyp, 0);
        result.set(moov, ftyp.byteLength);
        return result;
    };
    // Movie metadata box
    MP4.moov = function (meta) {
        var mvhd = MP4.mvhd(meta.timescale, meta.duration);
        var trak = MP4.trak(meta);
        var mvex = MP4.mvex(meta);
        return MP4.box(MP4.types.moov, mvhd, trak, mvex);
    };
    // Movie header box
    MP4.mvhd = function (timescale, duration) {
        return MP4.box(MP4.types.mvhd, new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            (timescale >>> 24) & 0xFF,
            (timescale >>> 16) & 0xFF,
            (timescale >>> 8) & 0xFF,
            (timescale) & 0xFF,
            (duration >>> 24) & 0xFF,
            (duration >>> 16) & 0xFF,
            (duration >>> 8) & 0xFF,
            (duration) & 0xFF,
            0x00, 0x01, 0x00, 0x00,
            0x01, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x01, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x01, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x40, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0xFF, 0xFF, 0xFF, 0xFF // next_track_ID
        ]));
    };
    // Track box
    MP4.trak = function (meta) {
        return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));
    };
    // Track header box
    MP4.tkhd = function (meta) {
        var trackId = meta.id, duration = meta.duration;
        var width = meta.presentWidth, height = meta.presentHeight;
        return MP4.box(MP4.types.tkhd, new Uint8Array([
            0x00, 0x00, 0x00, 0x07,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            (trackId >>> 24) & 0xFF,
            (trackId >>> 16) & 0xFF,
            (trackId >>> 8) & 0xFF,
            (trackId) & 0xFF,
            0x00, 0x00, 0x00, 0x00,
            (duration >>> 24) & 0xFF,
            (duration >>> 16) & 0xFF,
            (duration >>> 8) & 0xFF,
            (duration) & 0xFF,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x01, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x01, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x40, 0x00, 0x00, 0x00,
            (width >>> 8) & 0xFF,
            (width) & 0xFF,
            0x00, 0x00,
            (height >>> 8) & 0xFF,
            (height) & 0xFF,
            0x00, 0x00
        ]));
    };
    // Media Box
    MP4.mdia = function (meta) {
        return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta));
    };
    // Media header box
    MP4.mdhd = function (meta) {
        var timescale = meta.timescale;
        var duration = meta.duration;
        return MP4.box(MP4.types.mdhd, new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            (timescale >>> 24) & 0xFF,
            (timescale >>> 16) & 0xFF,
            (timescale >>> 8) & 0xFF,
            (timescale) & 0xFF,
            (duration >>> 24) & 0xFF,
            (duration >>> 16) & 0xFF,
            (duration >>> 8) & 0xFF,
            (duration) & 0xFF,
            0x55, 0xC4,
            0x00, 0x00 // pre_defined = 0
        ]));
    };
    // Media handler reference box
    MP4.hdlr = function (meta) {
        var data = null;
        if (meta.type === 'audio') {
            data = MP4.constants.HDLR_AUDIO;
        }
        else {
            data = MP4.constants.HDLR_VIDEO;
        }
        return MP4.box(MP4.types.hdlr, data);
    };
    // Media infomation box
    MP4.minf = function (meta) {
        var xmhd = null;
        if (meta.type === 'audio') {
            xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);
        }
        else {
            xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);
        }
        return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));
    };
    // Data infomation box
    MP4.dinf = function () {
        var result = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.constants.DREF));
        return result;
    };
    // Sample table box
    MP4.stbl = function (meta) {
        var result = MP4.box(MP4.types.stbl, // type: stbl
        MP4.stsd(meta), // Sample Description Table
        MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample
        MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk
        MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size
        MP4.box(MP4.types.stco, MP4.constants.STCO) // Chunk offset
        );
        return result;
    };
    // Sample description box
    MP4.stsd = function (meta) {
        if (meta.type === 'audio') {
            if (meta.codec === 'mp3') {
                return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp3(meta));
            }
            // else: aac -> mp4a
            return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));
        }
        else {
            return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));
        }
    };
    MP4.mp3 = function (meta) {
        var channelCount = meta.channelCount;
        var sampleRate = meta.audioSampleRate;
        var data = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x01,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, channelCount,
            0x00, 0x10,
            0x00, 0x00, 0x00, 0x00,
            (sampleRate >>> 8) & 0xFF,
            (sampleRate) & 0xFF,
            0x00, 0x00
        ]);
        return MP4.box(MP4.types['.mp3'], data);
    };
    MP4.mp4a = function (meta) {
        var channelCount = meta.channelCount;
        var sampleRate = meta.audioSampleRate;
        var data = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x01,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, channelCount,
            0x00, 0x10,
            0x00, 0x00, 0x00, 0x00,
            (sampleRate >>> 8) & 0xFF,
            (sampleRate) & 0xFF,
            0x00, 0x00
        ]);
        return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));
    };
    MP4.esds = function (meta) {
        var config = meta.config || [];
        var configSize = config.length;
        var data = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x03,
            0x17 + configSize,
            0x00, 0x01,
            0x00,
            0x04,
            0x0F + configSize,
            0x40,
            0x15,
            0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x05 // descriptor_type
        ].concat([
            configSize
        ]).concat(config).concat([
            0x06, 0x01, 0x02 // GASpecificConfig
        ]));
        return MP4.box(MP4.types.esds, data);
    };
    MP4.avc1 = function (meta) {
        var avcc = meta.avcc;
        var width = meta.codecWidth, height = meta.codecHeight;
        var data = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x01,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            (width >>> 8) & 0xFF,
            (width) & 0xFF,
            (height >>> 8) & 0xFF,
            (height) & 0xFF,
            0x00, 0x48, 0x00, 0x00,
            0x00, 0x48, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x01,
            0x0A,
            0x78, 0x71, 0x71, 0x2F,
            0x66, 0x6C, 0x76, 0x2E,
            0x6A, 0x73, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00,
            0x00, 0x18,
            0xFF, 0xFF // pre_defined = -1
        ]);
        return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc));
    };
    // Movie Extends box
    MP4.mvex = function (meta) {
        return MP4.box(MP4.types.mvex, MP4.trex(meta));
    };
    // Track Extends box
    MP4.trex = function (meta) {
        var trackId = meta.id;
        var data = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            (trackId >>> 24) & 0xFF,
            (trackId >>> 16) & 0xFF,
            (trackId >>> 8) & 0xFF,
            (trackId) & 0xFF,
            0x00, 0x00, 0x00, 0x01,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00,
            0x00, 0x01, 0x00, 0x01 // default_sample_flags
        ]);
        return MP4.box(MP4.types.trex, data);
    };
    // Movie fragment box
    MP4.moof = function (track, baseMediaDecodeTime) {
        return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime));
    };
    MP4.mfhd = function (sequenceNumber) {
        var data = new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            (sequenceNumber >>> 24) & 0xFF,
            (sequenceNumber >>> 16) & 0xFF,
            (sequenceNumber >>> 8) & 0xFF,
            (sequenceNumber) & 0xFF
        ]);
        return MP4.box(MP4.types.mfhd, data);
    };
    // Track fragment box
    MP4.traf = function (track, baseMediaDecodeTime) {
        var trackId = track.id;
        // Track fragment header box
        var tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            (trackId >>> 24) & 0xFF,
            (trackId >>> 16) & 0xFF,
            (trackId >>> 8) & 0xFF,
            (trackId) & 0xFF
        ]));
        // Track Fragment Decode Time
        var tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([
            0x00, 0x00, 0x00, 0x00,
            (baseMediaDecodeTime >>> 24) & 0xFF,
            (baseMediaDecodeTime >>> 16) & 0xFF,
            (baseMediaDecodeTime >>> 8) & 0xFF,
            (baseMediaDecodeTime) & 0xFF
        ]));
        var sdtp = MP4.sdtp(track);
        var trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);
        return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);
    };
    // Sample Dependency Type box
    MP4.sdtp = function (track) {
        var samples = track.samples || [];
        var sampleCount = samples.length;
        var data = new Uint8Array(4 + sampleCount);
        // 0~4 bytes: version(0) & flags
        for (var i = 0; i < sampleCount; i++) {
            var flags = samples[i].flags;
            data[i + 4] = (flags.isLeading << 6) // is_leading: 2 (bit)
                | (flags.dependsOn << 4) // sample_depends_on
                | (flags.isDependedOn << 2) // sample_is_depended_on
                | (flags.hasRedundancy); // sample_has_redundancy
        }
        return MP4.box(MP4.types.sdtp, data);
    };
    // Track fragment run box
    MP4.trun = function (track, offset) {
        var samples = track.samples || [];
        var sampleCount = samples.length;
        var dataSize = 12 + 16 * sampleCount;
        var data = new Uint8Array(dataSize);
        offset += 8 + dataSize;
        data.set([
            0x00, 0x00, 0x0F, 0x01,
            (sampleCount >>> 24) & 0xFF,
            (sampleCount >>> 16) & 0xFF,
            (sampleCount >>> 8) & 0xFF,
            (sampleCount) & 0xFF,
            (offset >>> 24) & 0xFF,
            (offset >>> 16) & 0xFF,
            (offset >>> 8) & 0xFF,
            (offset) & 0xFF
        ], 0);
        for (var i = 0; i < sampleCount; i++) {
            var duration = samples[i].duration;
            var size = samples[i].size;
            var flags = samples[i].flags;
            var cts = samples[i].cts;
            data.set([
                (duration >>> 24) & 0xFF,
                (duration >>> 16) & 0xFF,
                (duration >>> 8) & 0xFF,
                (duration) & 0xFF,
                (size >>> 24) & 0xFF,
                (size >>> 16) & 0xFF,
                (size >>> 8) & 0xFF,
                (size) & 0xFF,
                (flags.isLeading << 2) | flags.dependsOn,
                (flags.isDependedOn << 6) | (flags.hasRedundancy << 4) | flags.isNonSync,
                0x00, 0x00,
                (cts >>> 24) & 0xFF,
                (cts >>> 16) & 0xFF,
                (cts >>> 8) & 0xFF,
                (cts) & 0xFF
            ], 12 + 16 * i);
        }
        return MP4.box(MP4.types.trun, data);
    };
    MP4.mdat = function (data) {
        return MP4.box(MP4.types.mdat, data);
    };
    return MP4;
}());
MP4.init();
/* harmony default export */ __webpack_exports__["default"] = (MP4);


/***/ }),

/***/ "./src/remux/mp4-remuxer.js":
/*!**********************************!*\
  !*** ./src/remux/mp4-remuxer.js ***!
  \**********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/logger.js */ "./src/utils/logger.js");
/* harmony import */ var _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mp4-generator.js */ "./src/remux/mp4-generator.js");
/* harmony import */ var _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./aac-silent.js */ "./src/remux/aac-silent.js");
/* harmony import */ var _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/browser.js */ "./src/utils/browser.js");
/* harmony import */ var _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/media-segment-info.js */ "./src/core/media-segment-info.js");
/* harmony import */ var _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/exception.js */ "./src/utils/exception.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */






// Fragmented mp4 remuxer
var MP4Remuxer = /** @class */ (function () {
    function MP4Remuxer(config) {
        this.TAG = 'MP4Remuxer';
        this._config = config;
        this._isLive = (config.isLive === true) ? true : false;
        this._dtsBase = -1;
        this._dtsBaseInited = false;
        this._audioDtsBase = Infinity;
        this._videoDtsBase = Infinity;
        this._audioNextDts = undefined;
        this._videoNextDts = undefined;
        this._audioStashedLastSample = null;
        this._videoStashedLastSample = null;
        this._audioMeta = null;
        this._videoMeta = null;
        this._audioSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfoList('audio');
        this._videoSegmentInfoList = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfoList('video');
        this._onInitSegment = null;
        this._onMediaSegment = null;
        // Workaround for chrome < 50: Always force first sample as a Random Access Point in media segment
        // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412
        this._forceFirstIDR = (_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.chrome &&
            (_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.version.major < 50 ||
                (_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.version.major === 50 && _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.version.build < 2661))) ? true : false;
        // Workaround for IE11/Edge: Fill silent aac frame after keyframe-seeking
        // Make audio beginDts equals with video beginDts, in order to fix seek freeze
        this._fillSilentAfterSeek = (_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.msedge || _utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.msie);
        // While only FireFox supports 'audio/mp4, codecs="mp3"', use 'audio/mpeg' for chrome, safari, ...
        this._mp3UseMpegAudio = !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.firefox;
        this._fillAudioTimestampGap = this._config.fixAudioTimestampGap;
    }
    MP4Remuxer.prototype.destroy = function () {
        this._dtsBase = -1;
        this._dtsBaseInited = false;
        this._audioMeta = null;
        this._videoMeta = null;
        this._audioSegmentInfoList.clear();
        this._audioSegmentInfoList = null;
        this._videoSegmentInfoList.clear();
        this._videoSegmentInfoList = null;
        this._onInitSegment = null;
        this._onMediaSegment = null;
    };
    MP4Remuxer.prototype.bindDataSource = function (producer) {
        producer.onDataAvailable = this.remux.bind(this);
        producer.onTrackMetadata = this._onTrackMetadataReceived.bind(this);
        return this;
    };
    Object.defineProperty(MP4Remuxer.prototype, "onInitSegment", {
        /* prototype: function onInitSegment(type: string, initSegment: ArrayBuffer): void
           InitSegment: {
               type: string,
               data: ArrayBuffer,
               codec: string,
               container: string
           }
        */
        get: function () {
            return this._onInitSegment;
        },
        set: function (callback) {
            this._onInitSegment = callback;
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(MP4Remuxer.prototype, "onMediaSegment", {
        /* prototype: function onMediaSegment(type: string, mediaSegment: MediaSegment): void
           MediaSegment: {
               type: string,
               data: ArrayBuffer,
               sampleCount: int32
               info: MediaSegmentInfo
           }
        */
        get: function () {
            return this._onMediaSegment;
        },
        set: function (callback) {
            this._onMediaSegment = callback;
        },
        enumerable: false,
        configurable: true
    });
    MP4Remuxer.prototype.insertDiscontinuity = function () {
        this._audioNextDts = this._videoNextDts = undefined;
    };
    MP4Remuxer.prototype.seek = function (originalDts) {
        this._audioStashedLastSample = null;
        this._videoStashedLastSample = null;
        this._videoSegmentInfoList.clear();
        this._audioSegmentInfoList.clear();
    };
    MP4Remuxer.prototype.remux = function (audioTrack, videoTrack) {
        if (!this._onMediaSegment) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('MP4Remuxer: onMediaSegment callback must be specificed!');
        }
        if (!this._dtsBaseInited) {
            this._calculateDtsBase(audioTrack, videoTrack);
        }
        this._remuxVideo(videoTrack);
        this._remuxAudio(audioTrack);
    };
    MP4Remuxer.prototype._onTrackMetadataReceived = function (type, metadata) {
        var metabox = null;
        var container = 'mp4';
        var codec = metadata.codec;
        if (type === 'audio') {
            this._audioMeta = metadata;
            if (metadata.codec === 'mp3' && this._mp3UseMpegAudio) {
                // 'audio/mpeg' for MP3 audio track
                container = 'mpeg';
                codec = '';
                metabox = new Uint8Array();
            }
            else {
                // 'audio/mp4, codecs="codec"'
                metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.generateInitSegment(metadata);
            }
        }
        else if (type === 'video') {
            this._videoMeta = metadata;
            metabox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.generateInitSegment(metadata);
        }
        else {
            return;
        }
        // dispatch metabox (Initialization Segment)
        if (!this._onInitSegment) {
            throw new _utils_exception_js__WEBPACK_IMPORTED_MODULE_5__.IllegalStateException('MP4Remuxer: onInitSegment callback must be specified!');
        }
        this._onInitSegment(type, {
            type: type,
            data: metabox.buffer,
            codec: codec,
            container: type + "/" + container,
            mediaDuration: metadata.duration // in timescale 1000 (milliseconds)
        });
    };
    MP4Remuxer.prototype._calculateDtsBase = function (audioTrack, videoTrack) {
        if (this._dtsBaseInited) {
            return;
        }
        if (audioTrack.samples && audioTrack.samples.length) {
            this._audioDtsBase = audioTrack.samples[0].dts;
        }
        if (videoTrack.samples && videoTrack.samples.length) {
            this._videoDtsBase = videoTrack.samples[0].dts;
        }
        this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase);
        this._dtsBaseInited = true;
    };
    MP4Remuxer.prototype.flushStashedSamples = function () {
        var videoSample = this._videoStashedLastSample;
        var audioSample = this._audioStashedLastSample;
        var videoTrack = {
            type: 'video',
            id: 1,
            sequenceNumber: 0,
            samples: [],
            length: 0
        };
        if (videoSample != null) {
            videoTrack.samples.push(videoSample);
            videoTrack.length = videoSample.length;
        }
        var audioTrack = {
            type: 'audio',
            id: 2,
            sequenceNumber: 0,
            samples: [],
            length: 0
        };
        if (audioSample != null) {
            audioTrack.samples.push(audioSample);
            audioTrack.length = audioSample.length;
        }
        this._videoStashedLastSample = null;
        this._audioStashedLastSample = null;
        this._remuxVideo(videoTrack, true);
        this._remuxAudio(audioTrack, true);
    };
    MP4Remuxer.prototype._remuxAudio = function (audioTrack, force) {
        if (this._audioMeta == null) {
            return;
        }
        var track = audioTrack;
        var samples = track.samples;
        var dtsCorrection = undefined;
        var firstDts = -1, lastDts = -1, lastPts = -1;
        var refSampleDuration = this._audioMeta.refSampleDuration;
        var mpegRawTrack = this._audioMeta.codec === 'mp3' && this._mp3UseMpegAudio;
        var firstSegmentAfterSeek = this._dtsBaseInited && this._audioNextDts === undefined;
        var insertPrefixSilentFrame = false;
        if (!samples || samples.length === 0) {
            return;
        }
        if (samples.length === 1 && !force) {
            // If [sample count in current batch] === 1 && (force != true)
            // Ignore and keep in demuxer's queue
            return;
        } // else if (force === true) do remux
        var offset = 0;
        var mdatbox = null;
        var mdatBytes = 0;
        // calculate initial mdat size
        if (mpegRawTrack) {
            // for raw mpeg buffer
            offset = 0;
            mdatBytes = track.length;
        }
        else {
            // for fmp4 mdat box
            offset = 8; // size + type
            mdatBytes = 8 + track.length;
        }
        var lastSample = null;
        // Pop the lastSample and waiting for stash
        if (samples.length > 1) {
            lastSample = samples.pop();
            mdatBytes -= lastSample.length;
        }
        // Insert [stashed lastSample in the previous batch] to the front
        if (this._audioStashedLastSample != null) {
            var sample = this._audioStashedLastSample;
            this._audioStashedLastSample = null;
            samples.unshift(sample);
            mdatBytes += sample.length;
        }
        // Stash the lastSample of current batch, waiting for next batch
        if (lastSample != null) {
            this._audioStashedLastSample = lastSample;
        }
        var firstSampleOriginalDts = samples[0].dts - this._dtsBase;
        // calculate dtsCorrection
        if (this._audioNextDts) {
            dtsCorrection = firstSampleOriginalDts - this._audioNextDts;
        }
        else { // this._audioNextDts == undefined
            if (this._audioSegmentInfoList.isEmpty()) {
                dtsCorrection = 0;
                if (this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty()) {
                    if (this._audioMeta.originalCodec !== 'mp3') {
                        insertPrefixSilentFrame = true;
                    }
                }
            }
            else {
                var lastSample_1 = this._audioSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);
                if (lastSample_1 != null) {
                    var distance = (firstSampleOriginalDts - (lastSample_1.originalDts + lastSample_1.duration));
                    if (distance <= 3) {
                        distance = 0;
                    }
                    var expectedDts = lastSample_1.dts + lastSample_1.duration + distance;
                    dtsCorrection = firstSampleOriginalDts - expectedDts;
                }
                else { // lastSample == null, cannot found
                    dtsCorrection = 0;
                }
            }
        }
        if (insertPrefixSilentFrame) {
            // align audio segment beginDts to match with current video segment's beginDts
            var firstSampleDts = firstSampleOriginalDts - dtsCorrection;
            var videoSegment = this._videoSegmentInfoList.getLastSegmentBefore(firstSampleOriginalDts);
            if (videoSegment != null && videoSegment.beginDts < firstSampleDts) {
                var silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);
                if (silentUnit) {
                    var dts = videoSegment.beginDts;
                    var silentFrameDuration = firstSampleDts - videoSegment.beginDts;
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.v(this.TAG, "InsertPrefixSilentAudio: dts: " + dts + ", duration: " + silentFrameDuration);
                    samples.unshift({ unit: silentUnit, dts: dts, pts: dts });
                    mdatBytes += silentUnit.byteLength;
                } // silentUnit == null: Cannot generate, skip
            }
            else {
                insertPrefixSilentFrame = false;
            }
        }
        var mp4Samples = [];
        // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples
        for (var i = 0; i < samples.length; i++) {
            var sample = samples[i];
            var unit = sample.unit;
            var originalDts = sample.dts - this._dtsBase;
            var dts = originalDts;
            var needFillSilentFrames = false;
            var silentFrames = null;
            var sampleDuration = 0;
            if (originalDts < -0.001) {
                continue; //pass the first sample with the invalid dts
            }
            if (this._audioMeta.codec !== 'mp3') {
                // for AAC codec, we need to keep dts increase based on refSampleDuration
                var curRefDts = originalDts;
                var maxAudioFramesDrift = 3;
                if (this._audioNextDts) {
                    curRefDts = this._audioNextDts;
                }
                dtsCorrection = originalDts - curRefDts;
                if (dtsCorrection <= -maxAudioFramesDrift * refSampleDuration) {
                    // If we're overlapping by more than maxAudioFramesDrift number of frame, drop this sample
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, "Dropping 1 audio frame (originalDts: " + originalDts + " ms ,curRefDts: " + curRefDts + " ms)  due to dtsCorrection: " + dtsCorrection + " ms overlap.");
                    continue;
                }
                else if (dtsCorrection >= maxAudioFramesDrift * refSampleDuration && this._fillAudioTimestampGap && !_utils_browser_js__WEBPACK_IMPORTED_MODULE_3__.default.safari) {
                    // Silent frame generation, if large timestamp gap detected && config.fixAudioTimestampGap
                    needFillSilentFrames = true;
                    // We need to insert silent frames to fill timestamp gap
                    var frameCount = Math.floor(dtsCorrection / refSampleDuration);
                    _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Large audio timestamp gap detected, may cause AV sync to drift. ' +
                        'Silent frames will be generated to avoid unsync.\n' +
                        ("originalDts: " + originalDts + " ms, curRefDts: " + curRefDts + " ms, ") +
                        ("dtsCorrection: " + Math.round(dtsCorrection) + " ms, generate: " + frameCount + " frames"));
                    dts = Math.floor(curRefDts);
                    sampleDuration = Math.floor(curRefDts + refSampleDuration) - dts;
                    var silentUnit = _aac_silent_js__WEBPACK_IMPORTED_MODULE_2__.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);
                    if (silentUnit == null) {
                        _utils_logger_js__WEBPACK_IMPORTED_MODULE_0__.default.w(this.TAG, 'Unable to generate silent frame for ' +
                            (this._audioMeta.originalCodec + " with " + this._audioMeta.channelCount + " channels, repeat last frame"));
                        // Repeat last frame
                        silentUnit = unit;
                    }
                    silentFrames = [];
                    for (var j = 0; j < frameCount; j++) {
                        curRefDts = curRefDts + refSampleDuration;
                        var intDts = Math.floor(curRefDts); // change to integer
                        var intDuration = Math.floor(curRefDts + refSampleDuration) - intDts;
                        var frame = {
                            dts: intDts,
                            pts: intDts,
                            cts: 0,
                            unit: silentUnit,
                            size: silentUnit.byteLength,
                            duration: intDuration,
                            originalDts: originalDts,
                            flags: {
                                isLeading: 0,
                                dependsOn: 1,
                                isDependedOn: 0,
                                hasRedundancy: 0
                            }
                        };
                        silentFrames.push(frame);
                        mdatBytes += frame.size;
                        ;
                    }
                    this._audioNextDts = curRefDts + refSampleDuration;
                }
                else {
                    dts = Math.floor(curRefDts);
                    sampleDuration = Math.floor(curRefDts + refSampleDuration) - dts;
                    this._audioNextDts = curRefDts + refSampleDuration;
                }
            }
            else {
                // keep the original dts calculate algorithm for mp3
                dts = originalDts - dtsCorrection;
                if (i !== samples.length - 1) {
                    var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;
                    sampleDuration = nextDts - dts;
                }
                else { // the last sample
                    if (lastSample != null) { // use stashed sample's dts to calculate sample duration
                        var nextDts = lastSample.dts - this._dtsBase - dtsCorrection;
                        sampleDuration = nextDts - dts;
                    }
                    else if (mp4Samples.length >= 1) { // use second last sample duration
                        sampleDuration = mp4Samples[mp4Samples.length - 1].duration;
                    }
                    else { // the only one sample, use reference sample duration
                        sampleDuration = Math.floor(refSampleDuration);
                    }
                }
                this._audioNextDts = dts + sampleDuration;
            }
            if (firstDts === -1) {
                firstDts = dts;
            }
            mp4Samples.push({
                dts: dts,
                pts: dts,
                cts: 0,
                unit: sample.unit,
                size: sample.unit.byteLength,
                duration: sampleDuration,
                originalDts: originalDts,
                flags: {
                    isLeading: 0,
                    dependsOn: 1,
                    isDependedOn: 0,
                    hasRedundancy: 0
                }
            });
            if (needFillSilentFrames) {
                // Silent frames should be inserted after wrong-duration frame
                mp4Samples.push.apply(mp4Samples, silentFrames);
            }
        }
        if (mp4Samples.length === 0) {
            //no samples need to remux
            track.samples = [];
            track.length = 0;
            return;
        }
        // allocate mdatbox
        if (mpegRawTrack) {
            // allocate for raw mpeg buffer
            mdatbox = new Uint8Array(mdatBytes);
        }
        else {
            // allocate for fmp4 mdat box
            mdatbox = new Uint8Array(mdatBytes);
            // size field
            mdatbox[0] = (mdatBytes >>> 24) & 0xFF;
            mdatbox[1] = (mdatBytes >>> 16) & 0xFF;
            mdatbox[2] = (mdatBytes >>> 8) & 0xFF;
            mdatbox[3] = (mdatBytes) & 0xFF;
            // type field (fourCC)
            mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.types.mdat, 4);
        }
        // Write samples into mdatbox
        for (var i = 0; i < mp4Samples.length; i++) {
            var unit = mp4Samples[i].unit;
            mdatbox.set(unit, offset);
            offset += unit.byteLength;
        }
        var latest = mp4Samples[mp4Samples.length - 1];
        lastDts = latest.dts + latest.duration;
        //this._audioNextDts = lastDts;
        // fill media segment info & add to info list
        var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfo();
        info.beginDts = firstDts;
        info.endDts = lastDts;
        info.beginPts = firstDts;
        info.endPts = lastDts;
        info.originalBeginDts = mp4Samples[0].originalDts;
        info.originalEndDts = latest.originalDts + latest.duration;
        info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, false);
        info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, false);
        if (!this._isLive) {
            this._audioSegmentInfoList.append(info);
        }
        track.samples = mp4Samples;
        track.sequenceNumber++;
        var moofbox = null;
        if (mpegRawTrack) {
            // Generate empty buffer, because useless for raw mpeg
            moofbox = new Uint8Array();
        }
        else {
            // Generate moof for fmp4 segment
            moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.moof(track, firstDts);
        }
        track.samples = [];
        track.length = 0;
        var segment = {
            type: 'audio',
            data: this._mergeBoxes(moofbox, mdatbox).buffer,
            sampleCount: mp4Samples.length,
            info: info
        };
        if (mpegRawTrack && firstSegmentAfterSeek) {
            // For MPEG audio stream in MSE, if seeking occurred, before appending new buffer
            // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.
            segment.timestampOffset = firstDts;
        }
        this._onMediaSegment('audio', segment);
    };
    MP4Remuxer.prototype._remuxVideo = function (videoTrack, force) {
        if (this._videoMeta == null) {
            return;
        }
        var track = videoTrack;
        var samples = track.samples;
        var dtsCorrection = undefined;
        var firstDts = -1, lastDts = -1;
        var firstPts = -1, lastPts = -1;
        if (!samples || samples.length === 0) {
            return;
        }
        if (samples.length === 1 && !force) {
            // If [sample count in current batch] === 1 && (force != true)
            // Ignore and keep in demuxer's queue
            return;
        } // else if (force === true) do remux
        var offset = 8;
        var mdatbox = null;
        var mdatBytes = 8 + videoTrack.length;
        var lastSample = null;
        // Pop the lastSample and waiting for stash
        if (samples.length > 1) {
            lastSample = samples.pop();
            mdatBytes -= lastSample.length;
        }
        // Insert [stashed lastSample in the previous batch] to the front
        if (this._videoStashedLastSample != null) {
            var sample = this._videoStashedLastSample;
            this._videoStashedLastSample = null;
            samples.unshift(sample);
            mdatBytes += sample.length;
        }
        // Stash the lastSample of current batch, waiting for next batch
        if (lastSample != null) {
            this._videoStashedLastSample = lastSample;
        }
        var firstSampleOriginalDts = samples[0].dts - this._dtsBase;
        // calculate dtsCorrection
        if (this._videoNextDts) {
            dtsCorrection = firstSampleOriginalDts - this._videoNextDts;
        }
        else { // this._videoNextDts == undefined
            if (this._videoSegmentInfoList.isEmpty()) {
                dtsCorrection = 0;
            }
            else {
                var lastSample_2 = this._videoSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);
                if (lastSample_2 != null) {
                    var distance = (firstSampleOriginalDts - (lastSample_2.originalDts + lastSample_2.duration));
                    if (distance <= 3) {
                        distance = 0;
                    }
                    var expectedDts = lastSample_2.dts + lastSample_2.duration + distance;
                    dtsCorrection = firstSampleOriginalDts - expectedDts;
                }
                else { // lastSample == null, cannot found
                    dtsCorrection = 0;
                }
            }
        }
        var info = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.MediaSegmentInfo();
        var mp4Samples = [];
        // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples
        for (var i = 0; i < samples.length; i++) {
            var sample = samples[i];
            var originalDts = sample.dts - this._dtsBase;
            var isKeyframe = sample.isKeyframe;
            var dts = originalDts - dtsCorrection;
            var cts = sample.cts;
            var pts = dts + cts;
            if (firstDts === -1) {
                firstDts = dts;
                firstPts = pts;
            }
            var sampleDuration = 0;
            if (i !== samples.length - 1) {
                var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;
                sampleDuration = nextDts - dts;
            }
            else { // the last sample
                if (lastSample != null) { // use stashed sample's dts to calculate sample duration
                    var nextDts = lastSample.dts - this._dtsBase - dtsCorrection;
                    sampleDuration = nextDts - dts;
                }
                else if (mp4Samples.length >= 1) { // use second last sample duration
                    sampleDuration = mp4Samples[mp4Samples.length - 1].duration;
                }
                else { // the only one sample, use reference sample duration
                    sampleDuration = Math.floor(this._videoMeta.refSampleDuration);
                }
            }
            if (isKeyframe) {
                var syncPoint = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(dts, pts, sampleDuration, sample.dts, true);
                syncPoint.fileposition = sample.fileposition;
                info.appendSyncPoint(syncPoint);
            }
            mp4Samples.push({
                dts: dts,
                pts: pts,
                cts: cts,
                units: sample.units,
                size: sample.length,
                isKeyframe: isKeyframe,
                duration: sampleDuration,
                originalDts: originalDts,
                flags: {
                    isLeading: 0,
                    dependsOn: isKeyframe ? 2 : 1,
                    isDependedOn: isKeyframe ? 1 : 0,
                    hasRedundancy: 0,
                    isNonSync: isKeyframe ? 0 : 1
                }
            });
        }
        // allocate mdatbox
        mdatbox = new Uint8Array(mdatBytes);
        mdatbox[0] = (mdatBytes >>> 24) & 0xFF;
        mdatbox[1] = (mdatBytes >>> 16) & 0xFF;
        mdatbox[2] = (mdatBytes >>> 8) & 0xFF;
        mdatbox[3] = (mdatBytes) & 0xFF;
        mdatbox.set(_mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.types.mdat, 4);
        // Write samples into mdatbox
        for (var i = 0; i < mp4Samples.length; i++) {
            var units = mp4Samples[i].units;
            while (units.length) {
                var unit = units.shift();
                var data = unit.data;
                mdatbox.set(data, offset);
                offset += data.byteLength;
            }
        }
        var latest = mp4Samples[mp4Samples.length - 1];
        lastDts = latest.dts + latest.duration;
        lastPts = latest.pts + latest.duration;
        this._videoNextDts = lastDts;
        // fill media segment info & add to info list
        info.beginDts = firstDts;
        info.endDts = lastDts;
        info.beginPts = firstPts;
        info.endPts = lastPts;
        info.originalBeginDts = mp4Samples[0].originalDts;
        info.originalEndDts = latest.originalDts + latest.duration;
        info.firstSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, mp4Samples[0].isKeyframe);
        info.lastSample = new _core_media_segment_info_js__WEBPACK_IMPORTED_MODULE_4__.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, latest.isKeyframe);
        if (!this._isLive) {
            this._videoSegmentInfoList.append(info);
        }
        track.samples = mp4Samples;
        track.sequenceNumber++;
        // workaround for chrome < 50: force first sample as a random access point
        // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412
        if (this._forceFirstIDR) {
            var flags = mp4Samples[0].flags;
            flags.dependsOn = 2;
            flags.isNonSync = 0;
        }
        var moofbox = _mp4_generator_js__WEBPACK_IMPORTED_MODULE_1__.default.moof(track, firstDts);
        track.samples = [];
        track.length = 0;
        this._onMediaSegment('video', {
            type: 'video',
            data: this._mergeBoxes(moofbox, mdatbox).buffer,
            sampleCount: mp4Samples.length,
            info: info
        });
    };
    MP4Remuxer.prototype._mergeBoxes = function (moof, mdat) {
        var result = new Uint8Array(moof.byteLength + mdat.byteLength);
        result.set(moof, 0);
        result.set(mdat, moof.byteLength);
        return result;
    };
    return MP4Remuxer;
}());
/* harmony default export */ __webpack_exports__["default"] = (MP4Remuxer);


/***/ }),

/***/ "./src/utils/browser.js":
/*!******************************!*\
  !*** ./src/utils/browser.js ***!
  \******************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var Browser = {};
function detect() {
    // modified from jquery-browser-plugin
    var ua = self.navigator.userAgent.toLowerCase();
    var match = /(edge)\/([\w.]+)/.exec(ua) ||
        /(opr)[\/]([\w.]+)/.exec(ua) ||
        /(chrome)[ \/]([\w.]+)/.exec(ua) ||
        /(iemobile)[\/]([\w.]+)/.exec(ua) ||
        /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) ||
        /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) ||
        /(webkit)[ \/]([\w.]+)/.exec(ua) ||
        /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
        /(msie) ([\w.]+)/.exec(ua) ||
        ua.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(ua) ||
        ua.indexOf('compatible') < 0 && /(firefox)[ \/]([\w.]+)/.exec(ua) ||
        [];
    var platform_match = /(ipad)/.exec(ua) ||
        /(ipod)/.exec(ua) ||
        /(windows phone)/.exec(ua) ||
        /(iphone)/.exec(ua) ||
        /(kindle)/.exec(ua) ||
        /(android)/.exec(ua) ||
        /(windows)/.exec(ua) ||
        /(mac)/.exec(ua) ||
        /(linux)/.exec(ua) ||
        /(cros)/.exec(ua) ||
        [];
    var matched = {
        browser: match[5] || match[3] || match[1] || '',
        version: match[2] || match[4] || '0',
        majorVersion: match[4] || match[2] || '0',
        platform: platform_match[0] || ''
    };
    var browser = {};
    if (matched.browser) {
        browser[matched.browser] = true;
        var versionArray = matched.majorVersion.split('.');
        browser.version = {
            major: parseInt(matched.majorVersion, 10),
            string: matched.version
        };
        if (versionArray.length > 1) {
            browser.version.minor = parseInt(versionArray[1], 10);
        }
        if (versionArray.length > 2) {
            browser.version.build = parseInt(versionArray[2], 10);
        }
    }
    if (matched.platform) {
        browser[matched.platform] = true;
    }
    if (browser.chrome || browser.opr || browser.safari) {
        browser.webkit = true;
    }
    // MSIE. IE11 has 'rv' identifer
    if (browser.rv || browser.iemobile) {
        if (browser.rv) {
            delete browser.rv;
        }
        var msie = 'msie';
        matched.browser = msie;
        browser[msie] = true;
    }
    // Microsoft Edge
    if (browser.edge) {
        delete browser.edge;
        var msedge = 'msedge';
        matched.browser = msedge;
        browser[msedge] = true;
    }
    // Opera 15+
    if (browser.opr) {
        var opera = 'opera';
        matched.browser = opera;
        browser[opera] = true;
    }
    // Stock android browsers are marked as Safari
    if (browser.safari && browser.android) {
        var android = 'android';
        matched.browser = android;
        browser[android] = true;
    }
    browser.name = matched.browser;
    browser.platform = matched.platform;
    for (var key in Browser) {
        if (Browser.hasOwnProperty(key)) {
            delete Browser[key];
        }
    }
    Object.assign(Browser, browser);
}
detect();
/* harmony default export */ __webpack_exports__["default"] = (Browser);


/***/ }),

/***/ "./src/utils/exception.js":
/*!********************************!*\
  !*** ./src/utils/exception.js ***!
  \********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "RuntimeException": function() { return /* binding */ RuntimeException; },
/* harmony export */   "IllegalStateException": function() { return /* binding */ IllegalStateException; },
/* harmony export */   "InvalidArgumentException": function() { return /* binding */ InvalidArgumentException; },
/* harmony export */   "NotImplementedException": function() { return /* binding */ NotImplementedException; }
/* harmony export */ });
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var __extends = (undefined && undefined.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var RuntimeException = /** @class */ (function () {
    function RuntimeException(message) {
        this._message = message;
    }
    Object.defineProperty(RuntimeException.prototype, "name", {
        get: function () {
            return 'RuntimeException';
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(RuntimeException.prototype, "message", {
        get: function () {
            return this._message;
        },
        enumerable: false,
        configurable: true
    });
    RuntimeException.prototype.toString = function () {
        return this.name + ': ' + this.message;
    };
    return RuntimeException;
}());

var IllegalStateException = /** @class */ (function (_super) {
    __extends(IllegalStateException, _super);
    function IllegalStateException(message) {
        return _super.call(this, message) || this;
    }
    Object.defineProperty(IllegalStateException.prototype, "name", {
        get: function () {
            return 'IllegalStateException';
        },
        enumerable: false,
        configurable: true
    });
    return IllegalStateException;
}(RuntimeException));

var InvalidArgumentException = /** @class */ (function (_super) {
    __extends(InvalidArgumentException, _super);
    function InvalidArgumentException(message) {
        return _super.call(this, message) || this;
    }
    Object.defineProperty(InvalidArgumentException.prototype, "name", {
        get: function () {
            return 'InvalidArgumentException';
        },
        enumerable: false,
        configurable: true
    });
    return InvalidArgumentException;
}(RuntimeException));

var NotImplementedException = /** @class */ (function (_super) {
    __extends(NotImplementedException, _super);
    function NotImplementedException(message) {
        return _super.call(this, message) || this;
    }
    Object.defineProperty(NotImplementedException.prototype, "name", {
        get: function () {
            return 'NotImplementedException';
        },
        enumerable: false,
        configurable: true
    });
    return NotImplementedException;
}(RuntimeException));



/***/ }),

/***/ "./src/utils/logger.js":
/*!*****************************!*\
  !*** ./src/utils/logger.js ***!
  \*****************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

var Log = /** @class */ (function () {
    function Log() {
    }
    Log.e = function (tag, msg) {
        if (!tag || Log.FORCE_GLOBAL_TAG)
            tag = Log.GLOBAL_TAG;
        var str = "[" + tag + "] > " + msg;
        if (Log.ENABLE_CALLBACK) {
            Log.emitter.emit('log', 'error', str);
        }
        if (!Log.ENABLE_ERROR) {
            return;
        }
        if (console.error) {
            console.error(str);
        }
        else if (console.warn) {
            console.warn(str);
        }
        else {
            console.log(str);
        }
    };
    Log.i = function (tag, msg) {
        if (!tag || Log.FORCE_GLOBAL_TAG)
            tag = Log.GLOBAL_TAG;
        var str = "[" + tag + "] > " + msg;
        if (Log.ENABLE_CALLBACK) {
            Log.emitter.emit('log', 'info', str);
        }
        if (!Log.ENABLE_INFO) {
            return;
        }
        if (console.info) {
            console.info(str);
        }
        else {
            console.log(str);
        }
    };
    Log.w = function (tag, msg) {
        if (!tag || Log.FORCE_GLOBAL_TAG)
            tag = Log.GLOBAL_TAG;
        var str = "[" + tag + "] > " + msg;
        if (Log.ENABLE_CALLBACK) {
            Log.emitter.emit('log', 'warn', str);
        }
        if (!Log.ENABLE_WARN) {
            return;
        }
        if (console.warn) {
            console.warn(str);
        }
        else {
            console.log(str);
        }
    };
    Log.d = function (tag, msg) {
        if (!tag || Log.FORCE_GLOBAL_TAG)
            tag = Log.GLOBAL_TAG;
        var str = "[" + tag + "] > " + msg;
        if (Log.ENABLE_CALLBACK) {
            Log.emitter.emit('log', 'debug', str);
        }
        if (!Log.ENABLE_DEBUG) {
            return;
        }
        if (console.debug) {
            console.debug(str);
        }
        else {
            console.log(str);
        }
    };
    Log.v = function (tag, msg) {
        if (!tag || Log.FORCE_GLOBAL_TAG)
            tag = Log.GLOBAL_TAG;
        var str = "[" + tag + "] > " + msg;
        if (Log.ENABLE_CALLBACK) {
            Log.emitter.emit('log', 'verbose', str);
        }
        if (!Log.ENABLE_VERBOSE) {
            return;
        }
        console.log(str);
    };
    return Log;
}());
Log.GLOBAL_TAG = 'flv.js';
Log.FORCE_GLOBAL_TAG = false;
Log.ENABLE_ERROR = true;
Log.ENABLE_INFO = true;
Log.ENABLE_WARN = true;
Log.ENABLE_DEBUG = true;
Log.ENABLE_VERBOSE = true;
Log.ENABLE_CALLBACK = false;
Log.emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();
/* harmony default export */ __webpack_exports__["default"] = (Log);


/***/ }),

/***/ "./src/utils/logging-control.js":
/*!**************************************!*\
  !*** ./src/utils/logging-control.js ***!
  \**************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");
/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger.js */ "./src/utils/logger.js");
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


var LoggingControl = /** @class */ (function () {
    function LoggingControl() {
    }
    Object.defineProperty(LoggingControl, "forceGlobalTag", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG;
        },
        set: function (enable) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG = enable;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(LoggingControl, "globalTag", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG;
        },
        set: function (tag) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG = tag;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(LoggingControl, "enableAll", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE
                && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG
                && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO
                && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN
                && _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR;
        },
        set: function (enable) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE = enable;
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG = enable;
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO = enable;
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN = enable;
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR = enable;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(LoggingControl, "enableDebug", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG;
        },
        set: function (enable) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG = enable;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(LoggingControl, "enableVerbose", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE;
        },
        set: function (enable) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE = enable;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(LoggingControl, "enableInfo", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO;
        },
        set: function (enable) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO = enable;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(LoggingControl, "enableWarn", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN;
        },
        set: function (enable) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN = enable;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    Object.defineProperty(LoggingControl, "enableError", {
        get: function () {
            return _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR;
        },
        set: function (enable) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR = enable;
            LoggingControl._notifyChange();
        },
        enumerable: false,
        configurable: true
    });
    LoggingControl.getConfig = function () {
        return {
            globalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG,
            forceGlobalTag: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG,
            enableVerbose: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE,
            enableDebug: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG,
            enableInfo: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO,
            enableWarn: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN,
            enableError: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR,
            enableCallback: _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK
        };
    };
    LoggingControl.applyConfig = function (config) {
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.GLOBAL_TAG = config.globalTag;
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.FORCE_GLOBAL_TAG = config.forceGlobalTag;
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_VERBOSE = config.enableVerbose;
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_DEBUG = config.enableDebug;
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_INFO = config.enableInfo;
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_WARN = config.enableWarn;
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_ERROR = config.enableError;
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK = config.enableCallback;
    };
    LoggingControl._notifyChange = function () {
        var emitter = LoggingControl.emitter;
        if (emitter.listenerCount('change') > 0) {
            var config = LoggingControl.getConfig();
            emitter.emit('change', config);
        }
    };
    LoggingControl.registerListener = function (listener) {
        LoggingControl.emitter.addListener('change', listener);
    };
    LoggingControl.removeListener = function (listener) {
        LoggingControl.emitter.removeListener('change', listener);
    };
    LoggingControl.addLogListener = function (listener) {
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.addListener('log', listener);
        if (_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.listenerCount('log') > 0) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK = true;
            LoggingControl._notifyChange();
        }
    };
    LoggingControl.removeLogListener = function (listener) {
        _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.removeListener('log', listener);
        if (_logger_js__WEBPACK_IMPORTED_MODULE_1__.default.emitter.listenerCount('log') === 0) {
            _logger_js__WEBPACK_IMPORTED_MODULE_1__.default.ENABLE_CALLBACK = false;
            LoggingControl._notifyChange();
        }
    };
    return LoggingControl;
}());
LoggingControl.emitter = new (events__WEBPACK_IMPORTED_MODULE_0___default())();
/* harmony default export */ __webpack_exports__["default"] = (LoggingControl);


/***/ }),

/***/ "./src/utils/polyfill.js":
/*!*******************************!*\
  !*** ./src/utils/polyfill.js ***!
  \*******************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
var Polyfill = /** @class */ (function () {
    function Polyfill() {
    }
    Polyfill.install = function () {
        // ES6 Object.setPrototypeOf
        Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {
            obj.__proto__ = proto;
            return obj;
        };
        // ES6 Object.assign
        Object.assign = Object.assign || function (target) {
            if (target === undefined || target === null) {
                throw new TypeError('Cannot convert undefined or null to object');
            }
            var output = Object(target);
            for (var i = 1; i < arguments.length; i++) {
                var source = arguments[i];
                if (source !== undefined && source !== null) {
                    for (var key in source) {
                        if (source.hasOwnProperty(key)) {
                            output[key] = source[key];
                        }
                    }
                }
            }
            return output;
        };
        // ES6 Promise (missing support in IE11)
        if (typeof self.Promise !== 'function') {
            __webpack_require__(/*! es6-promise */ "./node_modules/es6-promise/dist/es6-promise.js").polyfill();
        }
    };
    return Polyfill;
}());
Polyfill.install();
/* harmony default export */ __webpack_exports__["default"] = (Polyfill);


/***/ }),

/***/ "./src/utils/utf8-conv.js":
/*!********************************!*\
  !*** ./src/utils/utf8-conv.js ***!
  \********************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*
 * Copyright (C) 2016 Bilibili. All Rights Reserved.
 *
 * This file is derived from C++ project libWinTF8 (https://github.com/m13253/libWinTF8)
 * @author zheng qian <xqq@xqq.im>
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
function checkContinuation(uint8array, start, checkLength) {
    var array = uint8array;
    if (start + checkLength < array.length) {
        while (checkLength--) {
            if ((array[++start] & 0xC0) !== 0x80)
                return false;
        }
        return true;
    }
    else {
        return false;
    }
}
function decodeUTF8(uint8array) {
    var out = [];
    var input = uint8array;
    var i = 0;
    var length = uint8array.length;
    while (i < length) {
        if (input[i] < 0x80) {
            out.push(String.fromCharCode(input[i]));
            ++i;
            continue;
        }
        else if (input[i] < 0xC0) {
            // fallthrough
        }
        else if (input[i] < 0xE0) {
            if (checkContinuation(input, i, 1)) {
                var ucs4 = (input[i] & 0x1F) << 6 | (input[i + 1] & 0x3F);
                if (ucs4 >= 0x80) {
                    out.push(String.fromCharCode(ucs4 & 0xFFFF));
                    i += 2;
                    continue;
                }
            }
        }
        else if (input[i] < 0xF0) {
            if (checkContinuation(input, i, 2)) {
                var ucs4 = (input[i] & 0xF) << 12 | (input[i + 1] & 0x3F) << 6 | input[i + 2] & 0x3F;
                if (ucs4 >= 0x800 && (ucs4 & 0xF800) !== 0xD800) {
                    out.push(String.fromCharCode(ucs4 & 0xFFFF));
                    i += 3;
                    continue;
                }
            }
        }
        else if (input[i] < 0xF8) {
            if (checkContinuation(input, i, 3)) {
                var ucs4 = (input[i] & 0x7) << 18 | (input[i + 1] & 0x3F) << 12
                    | (input[i + 2] & 0x3F) << 6 | (input[i + 3] & 0x3F);
                if (ucs4 > 0x10000 && ucs4 < 0x110000) {
                    ucs4 -= 0x10000;
                    out.push(String.fromCharCode((ucs4 >>> 10) | 0xD800));
                    out.push(String.fromCharCode((ucs4 & 0x3FF) | 0xDC00));
                    i += 4;
                    continue;
                }
            }
        }
        out.push(String.fromCharCode(0xFFFD));
        ++i;
    }
    return out.join('');
}
/* harmony default export */ __webpack_exports__["default"] = (decodeUTF8);


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = __webpack_modules__;
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	!function() {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = function(module) {
/******/ 			var getter = module && module.__esModule ?
/******/ 				function() { return module['default']; } :
/******/ 				function() { return module; };
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	!function() {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = function(exports, definition) {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	!function() {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	!function() {
/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	!function() {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = function(exports) {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	}();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// module factories are used so entry inlining is disabled
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	var __webpack_exports__ = __webpack_require__("./src/index.js");
/******/ 	
/******/ 	return __webpack_exports__;
/******/ })()
;
});
//# sourceMappingURL=flv.js.map
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! process/browser */ "./node_modules/process/browser.js")))

/***/ }),

/***/ "./node_modules/gcoord/dist/gcoord.esm-bundler.js":
/*!********************************************************!*\
  !*** ./node_modules/gcoord/dist/gcoord.esm-bundler.js ***!
  \********************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return exported; });
/**
 * @preserve
 * gcoord 1.0.7, geographic coordinate library
 * Copyright (c) 2025 Jiulong Hu <me@hujiulong.com>
 */
const { sin: sin$1, cos: cos$1, sqrt: sqrt$1, abs: abs$1, PI: PI$1 } = Math;
const a = 6378245;
const ee = 0.006693421622965823;
// roughly check whether coordinates are in China.
function isInChinaBbox(lon, lat) {
    return lon >= 72.004 && lon <= 137.8347 && lat >= 0.8293 && lat <= 55.8271;
}
function transformLat(x, y) {
    let ret = -100 + 2 * x + 3 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt$1(abs$1(x));
    ret += ((20 * sin$1(6 * x * PI$1) + 20 * sin$1(2 * x * PI$1)) * 2) / 3;
    ret += ((20 * sin$1(y * PI$1) + 40 * sin$1((y / 3) * PI$1)) * 2) / 3;
    ret += ((160 * sin$1((y / 12) * PI$1) + 320 * sin$1((y * PI$1) / 30)) * 2) / 3;
    return ret;
}
function transformLon(x, y) {
    let ret = 300 + x + 2 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt$1(abs$1(x));
    ret += ((20 * sin$1(6 * x * PI$1) + 20 * sin$1(2 * x * PI$1)) * 2) / 3;
    ret += ((20 * sin$1(x * PI$1) + 40 * sin$1((x / 3) * PI$1)) * 2) / 3;
    ret += ((150 * sin$1((x / 12) * PI$1) + 300 * sin$1((x / 30) * PI$1)) * 2) / 3;
    return ret;
}
function delta(lon, lat) {
    let dLon = transformLon(lon - 105, lat - 35);
    let dLat = transformLat(lon - 105, lat - 35);
    const radLat = (lat / 180) * PI$1;
    let magic = sin$1(radLat);
    magic = 1 - ee * magic * magic;
    const sqrtMagic = sqrt$1(magic);
    dLon = (dLon * 180) / ((a / sqrtMagic) * cos$1(radLat) * PI$1);
    dLat = (dLat * 180) / (((a * (1 - ee)) / (magic * sqrtMagic)) * PI$1);
    return [dLon, dLat];
}
function WGS84ToGCJ02(coord) {
    const [lon, lat] = coord;
    if (!isInChinaBbox(lon, lat))
        return [lon, lat];
    const d = delta(lon, lat);
    return [lon + d[0], lat + d[1]];
}
function GCJ02ToWGS84(coord) {
    const [lon, lat] = coord;
    if (!isInChinaBbox(lon, lat))
        return [lon, lat];
    let [wgsLon, wgsLat] = [lon, lat];
    let tempPoint = WGS84ToGCJ02([wgsLon, wgsLat]);
    let dx = tempPoint[0] - lon;
    let dy = tempPoint[1] - lat;
    while (abs$1(dx) > 1e-6 || abs$1(dy) > 1e-6) {
        wgsLon -= dx;
        wgsLat -= dy;
        tempPoint = WGS84ToGCJ02([wgsLon, wgsLat]);
        dx = tempPoint[0] - lon;
        dy = tempPoint[1] - lat;
    }
    return [wgsLon, wgsLat];
}

const { sin, cos, atan2, sqrt, PI } = Math;
const baiduFactor = (PI * 3000.0) / 180.0;
function BD09ToGCJ02(coord) {
    const [lon, lat] = coord;
    const x = lon - 0.0065;
    const y = lat - 0.006;
    const z = sqrt(x * x + y * y) - 0.00002 * sin(y * baiduFactor);
    const theta = atan2(y, x) - 0.000003 * cos(x * baiduFactor);
    const newLon = z * cos(theta);
    const newLat = z * sin(theta);
    return [newLon, newLat];
}
function GCJ02ToBD09(coord) {
    const [lon, lat] = coord;
    const x = lon;
    const y = lat;
    const z = sqrt(x * x + y * y) + 0.00002 * sin(y * baiduFactor);
    const theta = atan2(y, x) + 0.000003 * cos(x * baiduFactor);
    const newLon = z * cos(theta) + 0.0065;
    const newLat = z * sin(theta) + 0.006;
    return [newLon, newLat];
}

// https://github.com/Turfjs/turf/blob/master/packages/turf-projection/index.ts
const R2D = 180 / Math.PI;
const D2R = Math.PI / 180;
const A = 6378137.0;
const MAXEXTENT = 20037508.342789244;
function EPSG3857ToWGS84(xy) {
    return [
        (xy[0] * R2D) / A,
        (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D,
    ];
}
function WGS84ToEPSG3857(lonLat) {
    // compensate longitudes passing the 180th meridian
    // from https://github.com/proj4js/proj4js/blob/master/lib/common/adjust_lon.js
    const adjusted = Math.abs(lonLat[0]) <= 180
        ? lonLat[0]
        : lonLat[0] - (lonLat[0] < 0 ? -1 : 1) * 360;
    const xy = [
        A * adjusted * D2R,
        A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * lonLat[1] * D2R)),
    ];
    // if xy value is beyond maxextent (e.g. poles), return maxextent
    if (xy[0] > MAXEXTENT)
        xy[0] = MAXEXTENT;
    if (xy[0] < -MAXEXTENT)
        xy[0] = -MAXEXTENT;
    if (xy[1] > MAXEXTENT)
        xy[1] = MAXEXTENT;
    if (xy[1] < -MAXEXTENT)
        xy[1] = -MAXEXTENT;
    return xy;
}

const { abs } = Math;
const MCBAND = [12890594.86, 8362377.87, 5591021, 3481989.83, 1678043.12, 0];
const LLBAND = [75, 60, 45, 30, 15, 0];
const MC2LL = [
    [
        1.410526172116255e-8, 0.00000898305509648872, -1.9939833816331,
        200.9824383106796, -187.2403703815547, 91.6087516669843, -23.38765649603339,
        2.57121317296198, -0.03801003308653, 17337981.2,
    ],
    [
        -7.435856389565537e-9, 0.000008983055097726239, -0.78625201886289,
        96.32687599759846, -1.85204757529826, -59.36935905485877, 47.40033549296737,
        -16.50741931063887, 2.28786674699375, 10260144.86,
    ],
    [
        -3.030883460898826e-8, 0.00000898305509983578, 0.30071316287616,
        59.74293618442277, 7.357984074871, -25.38371002664745, 13.45380521110908,
        -3.29883767235584, 0.32710905363475, 6856817.37,
    ],
    [
        -1.981981304930552e-8, 0.000008983055099779535, 0.03278182852591,
        40.31678527705744, 0.65659298677277, -4.44255534477492, 0.85341911805263,
        0.12923347998204, -0.04625736007561, 4482777.06,
    ],
    [
        3.09191371068437e-9, 0.000008983055096812155, 0.00006995724062,
        23.10934304144901, -0.00023663490511, -0.6321817810242, -0.00663494467273,
        0.03430082397953, -0.00466043876332, 2555164.4,
    ],
    [
        2.890871144776878e-9, 0.000008983055095805407, -3.068298e-8,
        7.47137025468032, -0.00000353937994, -0.02145144861037, -0.00001234426596,
        0.00010322952773, -0.00000323890364, 826088.5,
    ],
];
const LL2MC = [
    [
        -0.0015702102444, 111320.7020616939, 1704480524535203, -10338987376042340,
        26112667856603880, -35149669176653700, 26595700718403920,
        -10725012454188240, 1800819912950474, 82.5,
    ],
    [
        0.0008277824516172526, 111320.7020463578, 647795574.6671607,
        -4082003173.641316, 10774905663.51142, -15171875531.51559,
        12053065338.62167, -5124939663.577472, 913311935.9512032, 67.5,
    ],
    [
        0.00337398766765, 111320.7020202162, 4481351.045890365, -23393751.19931662,
        79682215.47186455, -115964993.2797253, 97236711.15602145,
        -43661946.33752821, 8477230.501135234, 52.5,
    ],
    [
        0.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245,
        992013.7397791013, -1221952.21711287, 1340652.697009075, -620943.6990984312,
        144416.9293806241, 37.5,
    ],
    [
        -0.0003441963504368392, 111320.7020576856, 278.2353980772752,
        2485758.690035394, 6070.750963243378, 54821.18345352118, 9540.606633304236,
        -2710.55326746645, 1405.483844121726, 22.5,
    ],
    [
        -0.0003218135878613132, 111320.7020701615, 0.00369383431289,
        823725.6402795718, 0.46104986909093, 2351.343141331292, 1.58060784298199,
        8.77738589078284, 0.37238884252424, 7.45,
    ],
];
function transform$1(x, y, factors) {
    const cc = abs(y) / factors[9];
    let xt = factors[0] + factors[1] * abs(x);
    let yt = factors[2] +
        factors[3] * cc +
        factors[4] * Math.pow(cc, 2) +
        factors[5] * Math.pow(cc, 3) +
        factors[6] * Math.pow(cc, 4) +
        factors[7] * Math.pow(cc, 5) +
        factors[8] * Math.pow(cc, 6);
    xt *= x < 0 ? -1 : 1;
    yt *= y < 0 ? -1 : 1;
    return [xt, yt];
}
function BD09toBD09MC(coord) {
    const [lng, lat] = coord;
    let factors = [];
    for (let i = 0; i < LLBAND.length; i++) {
        if (abs(lat) > LLBAND[i]) {
            factors = LL2MC[i];
            break;
        }
    }
    return transform$1(lng, lat, factors);
}
function BD09MCtoBD09(coord) {
    const [x, y] = coord;
    let factors = [];
    for (let i = 0; i < MCBAND.length; i++) {
        if (abs(y) >= MCBAND[i]) {
            factors = MC2LL[i];
            break;
        }
    }
    return transform$1(x, y, factors);
}

function assert(condition, msg) {
    if (!condition)
        throw new Error(msg);
}
/**
 * isArray
 *
 * @param {*} input variable to validate
 * @returns {boolean} true/false
 */
function isArray(input) {
    return !!input && Object.prototype.toString.call(input) === '[object Array]';
}
/**
 * isNumber
 *
 * @param {*} num Number to validate
 * @returns {boolean} true/false
 * @example
 * isNumber(123)
 * //=true
 * isNumber('foo')
 * //=false
 */
function isNumber(input) {
    return !isNaN(Number(input)) && input !== null && !isArray(input);
}
/**
 * compose
 */
function compose(...funcs) {
    const start = funcs.length - 1;
    /* eslint-disable func-names */
    return function (...args) {
        let i = start;
        let result = funcs[start].apply(null, args);
        while (i--)
            result = funcs[i].call(null, result);
        return result;
    };
}
/**
 * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()
 * https://github.com/Turfjs/turf/blob/master/packages/turf-meta/index.mjs
 *
 * @name coordEach
 * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object
 * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)
 * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.
 * @returns {void}
 * @example
 * let features = featureCollection([
 *   point([26, 37], {"foo": "bar"}),
 *   point([36, 53], {"hello": "world"})
 * ]);
 *
 * coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {
 *   //=currentCoord
 *   //=coordIndex
 *   //=featureIndex
 *   //=multiFeatureIndex
 *   //=geometryIndex
 * });
 */
/* eslint-disable no-param-reassign */
function coordEach(geojson, callback, excludeWrapCoord = false) {
    // Handles null Geometry -- Skips this GeoJSON
    if (geojson === null)
        return;
    /* eslint-disable-next-line */
    let j;
    let k;
    let l;
    let geometry;
    let coords;
    let stopG;
    let wrapShrink = 0;
    let coordIndex = 0;
    let geometryMaybeCollection;
    let isGeometryCollection;
    const { type } = geojson;
    const isFeatureCollection = type === 'FeatureCollection';
    const isFeature = type === 'Feature';
    const stop = isFeatureCollection
        ? geojson.features.length
        : 1;
    // This logic may look a little weird. The reason why it is that way
    // is because it's trying to be fast. GeoJSON supports multiple kinds
    // of objects at its root: FeatureCollection, Features, Geometries.
    // This function has the responsibility of handling all of them, and that
    // means that some of the `for` loops you see below actually just don't apply
    // to certain inputs. For instance, if you give this just a
    // Point geometry, then both loops are short-circuited and all we do
    // is gradually rename the input until it's called 'geometry'.
    //
    // This also aims to allocate as few resources as possible: just a
    // few numbers and booleans, rather than any temporary arrays as would
    // be required with the normalization approach.
    for (let featureIndex = 0; featureIndex < stop; featureIndex++) {
        geometryMaybeCollection = isFeatureCollection
            ? geojson.features[featureIndex].geometry
            : isFeature
                ? geojson.geometry
                : geojson;
        isGeometryCollection = geometryMaybeCollection
            ? geometryMaybeCollection.type === 'GeometryCollection'
            : false;
        stopG = isGeometryCollection
            ? geometryMaybeCollection.geometries.length
            : 1;
        for (let geomIndex = 0; geomIndex < stopG; geomIndex++) {
            let multiFeatureIndex = 0;
            let geometryIndex = 0;
            geometry = isGeometryCollection
                ? geometryMaybeCollection.geometries[geomIndex]
                : geometryMaybeCollection;
            // Handles null Geometry -- Skips this geometry
            if (geometry === null)
                continue;
            const geomType = geometry.type;
            wrapShrink =
                excludeWrapCoord &&
                    (geomType === 'Polygon' || geomType === 'MultiPolygon')
                    ? 1
                    : 0;
            switch (geomType) {
                case null:
                    break;
                case 'Point':
                    coords = geometry.coordinates;
                    if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false)
                        return false;
                    coordIndex++;
                    multiFeatureIndex++;
                    break;
                case 'LineString':
                case 'MultiPoint':
                    coords = geometry.coordinates;
                    for (j = 0; j < coords.length; j++) {
                        if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false)
                            return false;
                        coordIndex++;
                        if (geomType === 'MultiPoint')
                            multiFeatureIndex++;
                    }
                    if (geomType === 'LineString')
                        multiFeatureIndex++;
                    break;
                case 'Polygon':
                case 'MultiLineString':
                    coords = geometry.coordinates;
                    for (j = 0; j < coords.length; j++) {
                        for (k = 0; k < coords[j].length - wrapShrink; k++) {
                            if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false)
                                return false;
                            coordIndex++;
                        }
                        if (geomType === 'MultiLineString')
                            multiFeatureIndex++;
                        if (geomType === 'Polygon')
                            geometryIndex++;
                    }
                    if (geomType === 'Polygon')
                        multiFeatureIndex++;
                    break;
                case 'MultiPolygon':
                    coords = geometry.coordinates;
                    for (j = 0; j < coords.length; j++) {
                        geometryIndex = 0;
                        for (k = 0; k < coords[j].length; k++) {
                            for (l = 0; l < coords[j][k].length - wrapShrink; l++) {
                                if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false)
                                    return false;
                                coordIndex++;
                            }
                            geometryIndex++;
                        }
                        multiFeatureIndex++;
                    }
                    break;
                case 'GeometryCollection':
                    for (j = 0; j < geometry.geometries.length; j++) {
                        if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false)
                            return false;
                    }
                    break;
                default:
                    throw new Error('Unknown Geometry Type');
            }
        }
    }
}

var CRSTypes;
(function (CRSTypes) {
    // WGS84
    CRSTypes["WGS84"] = "WGS84";
    CRSTypes["WGS1984"] = "WGS84";
    CRSTypes["EPSG4326"] = "WGS84";
    // GCJ02
    CRSTypes["GCJ02"] = "GCJ02";
    CRSTypes["AMap"] = "GCJ02";
    // BD09
    CRSTypes["BD09"] = "BD09";
    CRSTypes["BD09LL"] = "BD09";
    CRSTypes["Baidu"] = "BD09";
    CRSTypes["BMap"] = "BD09";
    // BD09MC
    CRSTypes["BD09MC"] = "BD09MC";
    CRSTypes["BD09Meter"] = "BD09MC";
    // EPSG3857
    CRSTypes["EPSG3857"] = "EPSG3857";
    CRSTypes["EPSG900913"] = "EPSG3857";
    CRSTypes["EPSG102100"] = "EPSG3857";
    CRSTypes["WebMercator"] = "EPSG3857";
    CRSTypes["WM"] = "EPSG3857";
})(CRSTypes || (CRSTypes = {}));
const WGS84 = {
    to: {
        [CRSTypes.GCJ02]: WGS84ToGCJ02,
        [CRSTypes.BD09]: compose(GCJ02ToBD09, WGS84ToGCJ02),
        [CRSTypes.BD09MC]: compose(BD09toBD09MC, GCJ02ToBD09, WGS84ToGCJ02),
        [CRSTypes.EPSG3857]: WGS84ToEPSG3857,
    },
};
const GCJ02 = {
    to: {
        [CRSTypes.WGS84]: GCJ02ToWGS84,
        [CRSTypes.BD09]: GCJ02ToBD09,
        [CRSTypes.BD09MC]: compose(BD09toBD09MC, GCJ02ToBD09),
        [CRSTypes.EPSG3857]: compose(WGS84ToEPSG3857, GCJ02ToWGS84),
    },
};
const BD09 = {
    to: {
        [CRSTypes.WGS84]: compose(GCJ02ToWGS84, BD09ToGCJ02),
        [CRSTypes.GCJ02]: BD09ToGCJ02,
        [CRSTypes.EPSG3857]: compose(WGS84ToEPSG3857, GCJ02ToWGS84, BD09ToGCJ02),
        [CRSTypes.BD09MC]: BD09toBD09MC,
    },
};
const EPSG3857 = {
    to: {
        [CRSTypes.WGS84]: EPSG3857ToWGS84,
        [CRSTypes.GCJ02]: compose(WGS84ToGCJ02, EPSG3857ToWGS84),
        [CRSTypes.BD09]: compose(GCJ02ToBD09, WGS84ToGCJ02, EPSG3857ToWGS84),
        [CRSTypes.BD09MC]: compose(BD09toBD09MC, GCJ02ToBD09, WGS84ToGCJ02, EPSG3857ToWGS84),
    },
};
const BD09MC = {
    to: {
        [CRSTypes.WGS84]: compose(GCJ02ToWGS84, BD09ToGCJ02, BD09MCtoBD09),
        [CRSTypes.GCJ02]: compose(BD09ToGCJ02, BD09MCtoBD09),
        [CRSTypes.EPSG3857]: compose(WGS84ToEPSG3857, GCJ02ToWGS84, BD09ToGCJ02, BD09MCtoBD09),
        [CRSTypes.BD09]: BD09MCtoBD09,
    },
};
const crsMap = {
    WGS84,
    GCJ02,
    BD09,
    EPSG3857,
    BD09MC,
};
var crsMap$1 = crsMap;

/**
 * transform
 *
 * @param {geojson|position|string} input
 * @returns {geojson|position} output
 */
/* eslint-disable no-param-reassign */
function transform(input, crsFrom, crsTo) {
    assert(!!input, 'The args[0] input coordinate is required');
    assert(!!crsFrom, 'The args[1] original coordinate system is required');
    assert(!!crsTo, 'The args[2] target coordinate system is required');
    if (crsFrom === crsTo)
        return input;
    const from = crsMap$1[crsFrom];
    assert(!!from, `Invalid original coordinate system: ${crsFrom}`);
    const to = from.to[crsTo];
    assert(!!to, `Invalid target coordinate system: ${crsTo}`);
    const type = typeof input;
    assert(type === 'string' || type === 'object', `Invalid input coordinate type: ${type}`);
    if (type === 'string') {
        try {
            input = JSON.parse(input);
        }
        catch (e) {
            throw new Error(`Invalid input coordinate: ${input}`);
        }
    }
    let isPosition = false;
    if (isArray(input)) {
        assert(input.length >= 2, `Invalid input coordinate: ${input}`);
        assert(isNumber(input[0]) && isNumber(input[1]), `Invalid input coordinate: ${input}`);
        input = input.map(Number);
        isPosition = true;
    }
    const convert = to;
    if (isPosition)
        return convert(input);
    // GeoJSON类型直接转换输入
    coordEach(input, (coord) => {
        [coord[0], coord[1]] = convert(coord);
    });
    return input;
}

const exported = Object.assign(Object.assign({}, CRSTypes), { // 兼容原来gcoord.WGS84的使用方式
    CRSTypes,
    transform });




/***/ }),

/***/ "./node_modules/immutable/dist/immutable.es.js":
/*!*****************************************************!*\
  !*** ./node_modules/immutable/dist/immutable.es.js ***!
  \*****************************************************/
/*! exports provided: default, Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn, has, hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep, mergeDeepWith, mergeWith, remove, removeIn, set, setIn, update, updateIn, version */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Collection", function() { return Collection; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Iterable", function() { return Iterable; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "List", function() { return List; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Map", function() { return Map; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OrderedMap", function() { return OrderedMap; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OrderedSet", function() { return OrderedSet; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PairSorting", function() { return PairSorting; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Range", function() { return Range; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Record", function() { return Record; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Repeat", function() { return Repeat; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Seq", function() { return Seq; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Set", function() { return Set; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Stack", function() { return Stack; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromJS", function() { return fromJS; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getIn", function() { return getIn$1; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "has", function() { return has; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasIn", function() { return hasIn$1; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hash", function() { return hash; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "is", function() { return is; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAssociative", function() { return isAssociative; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isCollection", function() { return isCollection; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isImmutable", function() { return isImmutable; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIndexed", function() { return isIndexed; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isKeyed", function() { return isKeyed; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isList", function() { return isList; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMap", function() { return isMap; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isOrdered", function() { return isOrdered; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isOrderedMap", function() { return isOrderedMap; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isOrderedSet", function() { return isOrderedSet; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPlainObject", function() { return isPlainObject; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isRecord", function() { return isRecord; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSeq", function() { return isSeq; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSet", function() { return isSet; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isStack", function() { return isStack; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isValueObject", function() { return isValueObject; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeDeep", function() { return mergeDeep$1; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeDeepWith", function() { return mergeDeepWith$1; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return mergeWith; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return remove; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeIn", function() { return removeIn; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "set", function() { return set; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setIn", function() { return setIn$1; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "update", function() { return update$1; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateIn", function() { return updateIn$1; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "version", function() { return version; });
/**
 * MIT License
 * 
 * Copyright (c) 2014-present, Lee Byron and other contributors.
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
var DELETE = 'delete';

// Constants describing the size of trie nodes.
var SHIFT = 5; // Resulted in best performance after ______?
var SIZE = 1 << SHIFT;
var MASK = SIZE - 1;

// A consistent shared value representing "not set" which equals nothing other
// than itself, and nothing that could be provided externally.
var NOT_SET = {};

// Boolean references, Rough equivalent of `bool &`.
function MakeRef() {
  return { value: false };
}

function SetRef(ref) {
  if (ref) {
    ref.value = true;
  }
}

// A function which returns a value representing an "owner" for transient writes
// to tries. The return value will only ever equal itself, and will not equal
// the return of any subsequent call of this function.
function OwnerID() {}

function ensureSize(iter) {
  if (iter.size === undefined) {
    iter.size = iter.__iterate(returnTrue);
  }
  return iter.size;
}

function wrapIndex(iter, index) {
  // This implements "is array index" which the ECMAString spec defines as:
  //
  //     A String property name P is an array index if and only if
  //     ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal
  //     to 2^32−1.
  //
  // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects
  if (typeof index !== 'number') {
    var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32
    if ('' + uint32Index !== index || uint32Index === 4294967295) {
      return NaN;
    }
    index = uint32Index;
  }
  return index < 0 ? ensureSize(iter) + index : index;
}

function returnTrue() {
  return true;
}

function wholeSlice(begin, end, size) {
  return (
    ((begin === 0 && !isNeg(begin)) ||
      (size !== undefined && begin <= -size)) &&
    (end === undefined || (size !== undefined && end >= size))
  );
}

function resolveBegin(begin, size) {
  return resolveIndex(begin, size, 0);
}

function resolveEnd(end, size) {
  return resolveIndex(end, size, size);
}

function resolveIndex(index, size, defaultIndex) {
  // Sanitize indices using this shorthand for ToInt32(argument)
  // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32
  return index === undefined
    ? defaultIndex
    : isNeg(index)
    ? size === Infinity
      ? size
      : Math.max(0, size + index) | 0
    : size === undefined || size === index
    ? index
    : Math.min(size, index) | 0;
}

function isNeg(value) {
  // Account for -0 which is negative, but not less than 0.
  return value < 0 || (value === 0 && 1 / value === -Infinity);
}

var IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';

function isCollection(maybeCollection) {
  return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);
}

var IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';

function isKeyed(maybeKeyed) {
  return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);
}

var IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';

function isIndexed(maybeIndexed) {
  return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);
}

function isAssociative(maybeAssociative) {
  return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);
}

var Collection = function Collection(value) {
  // eslint-disable-next-line no-constructor-return
  return isCollection(value) ? value : Seq(value);
};

var KeyedCollection = /*@__PURE__*/(function (Collection) {
  function KeyedCollection(value) {
    // eslint-disable-next-line no-constructor-return
    return isKeyed(value) ? value : KeyedSeq(value);
  }

  if ( Collection ) KeyedCollection.__proto__ = Collection;
  KeyedCollection.prototype = Object.create( Collection && Collection.prototype );
  KeyedCollection.prototype.constructor = KeyedCollection;

  return KeyedCollection;
}(Collection));

var IndexedCollection = /*@__PURE__*/(function (Collection) {
  function IndexedCollection(value) {
    // eslint-disable-next-line no-constructor-return
    return isIndexed(value) ? value : IndexedSeq(value);
  }

  if ( Collection ) IndexedCollection.__proto__ = Collection;
  IndexedCollection.prototype = Object.create( Collection && Collection.prototype );
  IndexedCollection.prototype.constructor = IndexedCollection;

  return IndexedCollection;
}(Collection));

var SetCollection = /*@__PURE__*/(function (Collection) {
  function SetCollection(value) {
    // eslint-disable-next-line no-constructor-return
    return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);
  }

  if ( Collection ) SetCollection.__proto__ = Collection;
  SetCollection.prototype = Object.create( Collection && Collection.prototype );
  SetCollection.prototype.constructor = SetCollection;

  return SetCollection;
}(Collection));

Collection.Keyed = KeyedCollection;
Collection.Indexed = IndexedCollection;
Collection.Set = SetCollection;

var IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';

function isSeq(maybeSeq) {
  return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);
}

var IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';

function isRecord(maybeRecord) {
  return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);
}

function isImmutable(maybeImmutable) {
  return isCollection(maybeImmutable) || isRecord(maybeImmutable);
}

var IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';

function isOrdered(maybeOrdered) {
  return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);
}

var ITERATE_KEYS = 0;
var ITERATE_VALUES = 1;
var ITERATE_ENTRIES = 2;

var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
var FAUX_ITERATOR_SYMBOL = '@@iterator';

var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;

var Iterator = function Iterator(next) {
  this.next = next;
};

Iterator.prototype.toString = function toString () {
  return '[Iterator]';
};

Iterator.KEYS = ITERATE_KEYS;
Iterator.VALUES = ITERATE_VALUES;
Iterator.ENTRIES = ITERATE_ENTRIES;

Iterator.prototype.inspect = Iterator.prototype.toSource = function () {
  return this.toString();
};
Iterator.prototype[ITERATOR_SYMBOL] = function () {
  return this;
};

function iteratorValue(type, k, v, iteratorResult) {
  var value = type === 0 ? k : type === 1 ? v : [k, v];
  iteratorResult
    ? (iteratorResult.value = value)
    : (iteratorResult = {
        value: value,
        done: false,
      });
  return iteratorResult;
}

function iteratorDone() {
  return { value: undefined, done: true };
}

function hasIterator(maybeIterable) {
  if (Array.isArray(maybeIterable)) {
    // IE11 trick as it does not support `Symbol.iterator`
    return true;
  }

  return !!getIteratorFn(maybeIterable);
}

function isIterator(maybeIterator) {
  return maybeIterator && typeof maybeIterator.next === 'function';
}

function getIterator(iterable) {
  var iteratorFn = getIteratorFn(iterable);
  return iteratorFn && iteratorFn.call(iterable);
}

function getIteratorFn(iterable) {
  var iteratorFn =
    iterable &&
    ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||
      iterable[FAUX_ITERATOR_SYMBOL]);
  if (typeof iteratorFn === 'function') {
    return iteratorFn;
  }
}

function isEntriesIterable(maybeIterable) {
  var iteratorFn = getIteratorFn(maybeIterable);
  return iteratorFn && iteratorFn === maybeIterable.entries;
}

function isKeysIterable(maybeIterable) {
  var iteratorFn = getIteratorFn(maybeIterable);
  return iteratorFn && iteratorFn === maybeIterable.keys;
}

var hasOwnProperty = Object.prototype.hasOwnProperty;

function isArrayLike(value) {
  if (Array.isArray(value) || typeof value === 'string') {
    return true;
  }

  return (
    value &&
    typeof value === 'object' &&
    Number.isInteger(value.length) &&
    value.length >= 0 &&
    (value.length === 0
      ? // Only {length: 0} is considered Array-like.
        Object.keys(value).length === 1
      : // An object is only Array-like if it has a property where the last value
        // in the array-like may be found (which could be undefined).
        value.hasOwnProperty(value.length - 1))
  );
}

var Seq = /*@__PURE__*/(function (Collection) {
  function Seq(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptySequence()
      : isImmutable(value)
      ? value.toSeq()
      : seqFromValue(value);
  }

  if ( Collection ) Seq.__proto__ = Collection;
  Seq.prototype = Object.create( Collection && Collection.prototype );
  Seq.prototype.constructor = Seq;

  Seq.prototype.toSeq = function toSeq () {
    return this;
  };

  Seq.prototype.toString = function toString () {
    return this.__toString('Seq {', '}');
  };

  Seq.prototype.cacheResult = function cacheResult () {
    if (!this._cache && this.__iterateUncached) {
      this._cache = this.entrySeq().toArray();
      this.size = this._cache.length;
    }
    return this;
  };

  // abstract __iterateUncached(fn, reverse)

  Seq.prototype.__iterate = function __iterate (fn, reverse) {
    var cache = this._cache;
    if (cache) {
      var size = cache.length;
      var i = 0;
      while (i !== size) {
        var entry = cache[reverse ? size - ++i : i++];
        if (fn(entry[1], entry[0], this) === false) {
          break;
        }
      }
      return i;
    }
    return this.__iterateUncached(fn, reverse);
  };

  // abstract __iteratorUncached(type, reverse)

  Seq.prototype.__iterator = function __iterator (type, reverse) {
    var cache = this._cache;
    if (cache) {
      var size = cache.length;
      var i = 0;
      return new Iterator(function () {
        if (i === size) {
          return iteratorDone();
        }
        var entry = cache[reverse ? size - ++i : i++];
        return iteratorValue(type, entry[0], entry[1]);
      });
    }
    return this.__iteratorUncached(type, reverse);
  };

  return Seq;
}(Collection));

var KeyedSeq = /*@__PURE__*/(function (Seq) {
  function KeyedSeq(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptySequence().toKeyedSeq()
      : isCollection(value)
      ? isKeyed(value)
        ? value.toSeq()
        : value.fromEntrySeq()
      : isRecord(value)
      ? value.toSeq()
      : keyedSeqFromValue(value);
  }

  if ( Seq ) KeyedSeq.__proto__ = Seq;
  KeyedSeq.prototype = Object.create( Seq && Seq.prototype );
  KeyedSeq.prototype.constructor = KeyedSeq;

  KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {
    return this;
  };

  return KeyedSeq;
}(Seq));

var IndexedSeq = /*@__PURE__*/(function (Seq) {
  function IndexedSeq(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptySequence()
      : isCollection(value)
      ? isKeyed(value)
        ? value.entrySeq()
        : value.toIndexedSeq()
      : isRecord(value)
      ? value.toSeq().entrySeq()
      : indexedSeqFromValue(value);
  }

  if ( Seq ) IndexedSeq.__proto__ = Seq;
  IndexedSeq.prototype = Object.create( Seq && Seq.prototype );
  IndexedSeq.prototype.constructor = IndexedSeq;

  IndexedSeq.of = function of (/*...values*/) {
    return IndexedSeq(arguments);
  };

  IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {
    return this;
  };

  IndexedSeq.prototype.toString = function toString () {
    return this.__toString('Seq [', ']');
  };

  return IndexedSeq;
}(Seq));

var SetSeq = /*@__PURE__*/(function (Seq) {
  function SetSeq(value) {
    // eslint-disable-next-line no-constructor-return
    return (
      isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)
    ).toSetSeq();
  }

  if ( Seq ) SetSeq.__proto__ = Seq;
  SetSeq.prototype = Object.create( Seq && Seq.prototype );
  SetSeq.prototype.constructor = SetSeq;

  SetSeq.of = function of (/*...values*/) {
    return SetSeq(arguments);
  };

  SetSeq.prototype.toSetSeq = function toSetSeq () {
    return this;
  };

  return SetSeq;
}(Seq));

Seq.isSeq = isSeq;
Seq.Keyed = KeyedSeq;
Seq.Set = SetSeq;
Seq.Indexed = IndexedSeq;

Seq.prototype[IS_SEQ_SYMBOL] = true;

// #pragma Root Sequences

var ArraySeq = /*@__PURE__*/(function (IndexedSeq) {
  function ArraySeq(array) {
    this._array = array;
    this.size = array.length;
  }

  if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;
  ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );
  ArraySeq.prototype.constructor = ArraySeq;

  ArraySeq.prototype.get = function get (index, notSetValue) {
    return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;
  };

  ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {
    var array = this._array;
    var size = array.length;
    var i = 0;
    while (i !== size) {
      var ii = reverse ? size - ++i : i++;
      if (fn(array[ii], ii, this) === false) {
        break;
      }
    }
    return i;
  };

  ArraySeq.prototype.__iterator = function __iterator (type, reverse) {
    var array = this._array;
    var size = array.length;
    var i = 0;
    return new Iterator(function () {
      if (i === size) {
        return iteratorDone();
      }
      var ii = reverse ? size - ++i : i++;
      return iteratorValue(type, ii, array[ii]);
    });
  };

  return ArraySeq;
}(IndexedSeq));

var ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {
  function ObjectSeq(object) {
    var keys = Object.keys(object).concat(
      Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []
    );
    this._object = object;
    this._keys = keys;
    this.size = keys.length;
  }

  if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;
  ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );
  ObjectSeq.prototype.constructor = ObjectSeq;

  ObjectSeq.prototype.get = function get (key, notSetValue) {
    if (notSetValue !== undefined && !this.has(key)) {
      return notSetValue;
    }
    return this._object[key];
  };

  ObjectSeq.prototype.has = function has (key) {
    return hasOwnProperty.call(this._object, key);
  };

  ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {
    var object = this._object;
    var keys = this._keys;
    var size = keys.length;
    var i = 0;
    while (i !== size) {
      var key = keys[reverse ? size - ++i : i++];
      if (fn(object[key], key, this) === false) {
        break;
      }
    }
    return i;
  };

  ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {
    var object = this._object;
    var keys = this._keys;
    var size = keys.length;
    var i = 0;
    return new Iterator(function () {
      if (i === size) {
        return iteratorDone();
      }
      var key = keys[reverse ? size - ++i : i++];
      return iteratorValue(type, key, object[key]);
    });
  };

  return ObjectSeq;
}(KeyedSeq));
ObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;

var CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {
  function CollectionSeq(collection) {
    this._collection = collection;
    this.size = collection.length || collection.size;
  }

  if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;
  CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );
  CollectionSeq.prototype.constructor = CollectionSeq;

  CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {
    if (reverse) {
      return this.cacheResult().__iterate(fn, reverse);
    }
    var collection = this._collection;
    var iterator = getIterator(collection);
    var iterations = 0;
    if (isIterator(iterator)) {
      var step;
      while (!(step = iterator.next()).done) {
        if (fn(step.value, iterations++, this) === false) {
          break;
        }
      }
    }
    return iterations;
  };

  CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {
    if (reverse) {
      return this.cacheResult().__iterator(type, reverse);
    }
    var collection = this._collection;
    var iterator = getIterator(collection);
    if (!isIterator(iterator)) {
      return new Iterator(iteratorDone);
    }
    var iterations = 0;
    return new Iterator(function () {
      var step = iterator.next();
      return step.done ? step : iteratorValue(type, iterations++, step.value);
    });
  };

  return CollectionSeq;
}(IndexedSeq));

// # pragma Helper functions

var EMPTY_SEQ;

function emptySequence() {
  return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));
}

function keyedSeqFromValue(value) {
  var seq = maybeIndexedSeqFromValue(value);
  if (seq) {
    return seq.fromEntrySeq();
  }
  if (typeof value === 'object') {
    return new ObjectSeq(value);
  }
  throw new TypeError(
    'Expected Array or collection object of [k, v] entries, or keyed object: ' +
      value
  );
}

function indexedSeqFromValue(value) {
  var seq = maybeIndexedSeqFromValue(value);
  if (seq) {
    return seq;
  }
  throw new TypeError(
    'Expected Array or collection object of values: ' + value
  );
}

function seqFromValue(value) {
  var seq = maybeIndexedSeqFromValue(value);
  if (seq) {
    return isEntriesIterable(value)
      ? seq.fromEntrySeq()
      : isKeysIterable(value)
      ? seq.toSetSeq()
      : seq;
  }
  if (typeof value === 'object') {
    return new ObjectSeq(value);
  }
  throw new TypeError(
    'Expected Array or collection object of values, or keyed object: ' + value
  );
}

function maybeIndexedSeqFromValue(value) {
  return isArrayLike(value)
    ? new ArraySeq(value)
    : hasIterator(value)
    ? new CollectionSeq(value)
    : undefined;
}

var IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';

function isMap(maybeMap) {
  return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);
}

function isOrderedMap(maybeOrderedMap) {
  return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);
}

function isValueObject(maybeValue) {
  return Boolean(
    maybeValue &&
      typeof maybeValue.equals === 'function' &&
      typeof maybeValue.hashCode === 'function'
  );
}

/**
 * An extension of the "same-value" algorithm as [described for use by ES6 Map
 * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)
 *
 * NaN is considered the same as NaN, however -0 and 0 are considered the same
 * value, which is different from the algorithm described by
 * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).
 *
 * This is extended further to allow Objects to describe the values they
 * represent, by way of `valueOf` or `equals` (and `hashCode`).
 *
 * Note: because of this extension, the key equality of Immutable.Map and the
 * value equality of Immutable.Set will differ from ES6 Map and Set.
 *
 * ### Defining custom values
 *
 * The easiest way to describe the value an object represents is by implementing
 * `valueOf`. For example, `Date` represents a value by returning a unix
 * timestamp for `valueOf`:
 *
 *     var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...
 *     var date2 = new Date(1234567890000);
 *     date1.valueOf(); // 1234567890000
 *     assert( date1 !== date2 );
 *     assert( Immutable.is( date1, date2 ) );
 *
 * Note: overriding `valueOf` may have other implications if you use this object
 * where JavaScript expects a primitive, such as implicit string coercion.
 *
 * For more complex types, especially collections, implementing `valueOf` may
 * not be performant. An alternative is to implement `equals` and `hashCode`.
 *
 * `equals` takes another object, presumably of similar type, and returns true
 * if it is equal. Equality is symmetrical, so the same result should be
 * returned if this and the argument are flipped.
 *
 *     assert( a.equals(b) === b.equals(a) );
 *
 * `hashCode` returns a 32bit integer number representing the object which will
 * be used to determine how to store the value object in a Map or Set. You must
 * provide both or neither methods, one must not exist without the other.
 *
 * Also, an important relationship between these methods must be upheld: if two
 * values are equal, they *must* return the same hashCode. If the values are not
 * equal, they might have the same hashCode; this is called a hash collision,
 * and while undesirable for performance reasons, it is acceptable.
 *
 *     if (a.equals(b)) {
 *       assert( a.hashCode() === b.hashCode() );
 *     }
 *
 * All Immutable collections are Value Objects: they implement `equals()`
 * and `hashCode()`.
 */
function is(valueA, valueB) {
  if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {
    return true;
  }
  if (!valueA || !valueB) {
    return false;
  }
  if (
    typeof valueA.valueOf === 'function' &&
    typeof valueB.valueOf === 'function'
  ) {
    valueA = valueA.valueOf();
    valueB = valueB.valueOf();
    if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {
      return true;
    }
    if (!valueA || !valueB) {
      return false;
    }
  }
  return !!(
    isValueObject(valueA) &&
    isValueObject(valueB) &&
    valueA.equals(valueB)
  );
}

var imul =
  typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2
    ? Math.imul
    : function imul(a, b) {
        a |= 0; // int
        b |= 0; // int
        var c = a & 0xffff;
        var d = b & 0xffff;
        // Shift by 0 fixes the sign on the high part.
        return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int
      };

// v8 has an optimization for storing 31-bit signed numbers.
// Values which have either 00 or 11 as the high order bits qualify.
// This function drops the highest order bit in a signed number, maintaining
// the sign bit.
function smi(i32) {
  return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);
}

var defaultValueOf = Object.prototype.valueOf;

function hash(o) {
  if (o == null) {
    return hashNullish(o);
  }

  if (typeof o.hashCode === 'function') {
    // Drop any high bits from accidentally long hash codes.
    return smi(o.hashCode(o));
  }

  var v = valueOf(o);

  if (v == null) {
    return hashNullish(v);
  }

  switch (typeof v) {
    case 'boolean':
      // The hash values for built-in constants are a 1 value for each 5-byte
      // shift region expect for the first, which encodes the value. This
      // reduces the odds of a hash collision for these common values.
      return v ? 0x42108421 : 0x42108420;
    case 'number':
      return hashNumber(v);
    case 'string':
      return v.length > STRING_HASH_CACHE_MIN_STRLEN
        ? cachedHashString(v)
        : hashString(v);
    case 'object':
    case 'function':
      return hashJSObj(v);
    case 'symbol':
      return hashSymbol(v);
    default:
      if (typeof v.toString === 'function') {
        return hashString(v.toString());
      }
      throw new Error('Value type ' + typeof v + ' cannot be hashed.');
  }
}

function hashNullish(nullish) {
  return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;
}

// Compress arbitrarily large numbers into smi hashes.
function hashNumber(n) {
  if (n !== n || n === Infinity) {
    return 0;
  }
  var hash = n | 0;
  if (hash !== n) {
    hash ^= n * 0xffffffff;
  }
  while (n > 0xffffffff) {
    n /= 0xffffffff;
    hash ^= n;
  }
  return smi(hash);
}

function cachedHashString(string) {
  var hashed = stringHashCache[string];
  if (hashed === undefined) {
    hashed = hashString(string);
    if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {
      STRING_HASH_CACHE_SIZE = 0;
      stringHashCache = {};
    }
    STRING_HASH_CACHE_SIZE++;
    stringHashCache[string] = hashed;
  }
  return hashed;
}

// http://jsperf.com/hashing-strings
function hashString(string) {
  // This is the hash from JVM
  // The hash code for a string is computed as
  // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],
  // where s[i] is the ith character of the string and n is the length of
  // the string. We "mod" the result to make it between 0 (inclusive) and 2^31
  // (exclusive) by dropping high bits.
  var hashed = 0;
  for (var ii = 0; ii < string.length; ii++) {
    hashed = (31 * hashed + string.charCodeAt(ii)) | 0;
  }
  return smi(hashed);
}

function hashSymbol(sym) {
  var hashed = symbolMap[sym];
  if (hashed !== undefined) {
    return hashed;
  }

  hashed = nextHash();

  symbolMap[sym] = hashed;

  return hashed;
}

function hashJSObj(obj) {
  var hashed;
  if (usingWeakMap) {
    hashed = weakMap.get(obj);
    if (hashed !== undefined) {
      return hashed;
    }
  }

  hashed = obj[UID_HASH_KEY];
  if (hashed !== undefined) {
    return hashed;
  }

  if (!canDefineProperty) {
    hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];
    if (hashed !== undefined) {
      return hashed;
    }

    hashed = getIENodeHash(obj);
    if (hashed !== undefined) {
      return hashed;
    }
  }

  hashed = nextHash();

  if (usingWeakMap) {
    weakMap.set(obj, hashed);
  } else if (isExtensible !== undefined && isExtensible(obj) === false) {
    throw new Error('Non-extensible objects are not allowed as keys.');
  } else if (canDefineProperty) {
    Object.defineProperty(obj, UID_HASH_KEY, {
      enumerable: false,
      configurable: false,
      writable: false,
      value: hashed,
    });
  } else if (
    obj.propertyIsEnumerable !== undefined &&
    obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable
  ) {
    // Since we can't define a non-enumerable property on the object
    // we'll hijack one of the less-used non-enumerable properties to
    // save our hash on it. Since this is a function it will not show up in
    // `JSON.stringify` which is what we want.
    obj.propertyIsEnumerable = function () {
      return this.constructor.prototype.propertyIsEnumerable.apply(
        this,
        arguments
      );
    };
    obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;
  } else if (obj.nodeType !== undefined) {
    // At this point we couldn't get the IE `uniqueID` to use as a hash
    // and we couldn't use a non-enumerable property to exploit the
    // dontEnum bug so we simply add the `UID_HASH_KEY` on the node
    // itself.
    obj[UID_HASH_KEY] = hashed;
  } else {
    throw new Error('Unable to set a non-enumerable property on object.');
  }

  return hashed;
}

// Get references to ES5 object methods.
var isExtensible = Object.isExtensible;

// True if Object.defineProperty works as expected. IE8 fails this test.
var canDefineProperty = (function () {
  try {
    Object.defineProperty({}, '@', {});
    return true;
  } catch (e) {
    return false;
  }
})();

// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it
// and avoid memory leaks from the IE cloneNode bug.
function getIENodeHash(node) {
  if (node && node.nodeType > 0) {
    switch (node.nodeType) {
      case 1: // Element
        return node.uniqueID;
      case 9: // Document
        return node.documentElement && node.documentElement.uniqueID;
    }
  }
}

function valueOf(obj) {
  return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'
    ? obj.valueOf(obj)
    : obj;
}

function nextHash() {
  var nextHash = ++_objHashUID;
  if (_objHashUID & 0x40000000) {
    _objHashUID = 0;
  }
  return nextHash;
}

// If possible, use a WeakMap.
var usingWeakMap = typeof WeakMap === 'function';
var weakMap;
if (usingWeakMap) {
  weakMap = new WeakMap();
}

var symbolMap = Object.create(null);

var _objHashUID = 0;

var UID_HASH_KEY = '__immutablehash__';
if (typeof Symbol === 'function') {
  UID_HASH_KEY = Symbol(UID_HASH_KEY);
}

var STRING_HASH_CACHE_MIN_STRLEN = 16;
var STRING_HASH_CACHE_MAX_SIZE = 255;
var STRING_HASH_CACHE_SIZE = 0;
var stringHashCache = {};

var ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {
  function ToKeyedSequence(indexed, useKeys) {
    this._iter = indexed;
    this._useKeys = useKeys;
    this.size = indexed.size;
  }

  if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;
  ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );
  ToKeyedSequence.prototype.constructor = ToKeyedSequence;

  ToKeyedSequence.prototype.get = function get (key, notSetValue) {
    return this._iter.get(key, notSetValue);
  };

  ToKeyedSequence.prototype.has = function has (key) {
    return this._iter.has(key);
  };

  ToKeyedSequence.prototype.valueSeq = function valueSeq () {
    return this._iter.valueSeq();
  };

  ToKeyedSequence.prototype.reverse = function reverse () {
    var this$1$1 = this;

    var reversedSequence = reverseFactory(this, true);
    if (!this._useKeys) {
      reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };
    }
    return reversedSequence;
  };

  ToKeyedSequence.prototype.map = function map (mapper, context) {
    var this$1$1 = this;

    var mappedSequence = mapFactory(this, mapper, context);
    if (!this._useKeys) {
      mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };
    }
    return mappedSequence;
  };

  ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);
  };

  ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {
    return this._iter.__iterator(type, reverse);
  };

  return ToKeyedSequence;
}(KeyedSeq));
ToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;

var ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {
  function ToIndexedSequence(iter) {
    this._iter = iter;
    this.size = iter.size;
  }

  if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;
  ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );
  ToIndexedSequence.prototype.constructor = ToIndexedSequence;

  ToIndexedSequence.prototype.includes = function includes (value) {
    return this._iter.includes(value);
  };

  ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    var i = 0;
    reverse && ensureSize(this);
    return this._iter.__iterate(
      function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },
      reverse
    );
  };

  ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {
    var this$1$1 = this;

    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);
    var i = 0;
    reverse && ensureSize(this);
    return new Iterator(function () {
      var step = iterator.next();
      return step.done
        ? step
        : iteratorValue(
            type,
            reverse ? this$1$1.size - ++i : i++,
            step.value,
            step
          );
    });
  };

  return ToIndexedSequence;
}(IndexedSeq));

var ToSetSequence = /*@__PURE__*/(function (SetSeq) {
  function ToSetSequence(iter) {
    this._iter = iter;
    this.size = iter.size;
  }

  if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;
  ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );
  ToSetSequence.prototype.constructor = ToSetSequence;

  ToSetSequence.prototype.has = function has (key) {
    return this._iter.includes(key);
  };

  ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);
  };

  ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {
    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);
    return new Iterator(function () {
      var step = iterator.next();
      return step.done
        ? step
        : iteratorValue(type, step.value, step.value, step);
    });
  };

  return ToSetSequence;
}(SetSeq));

var FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {
  function FromEntriesSequence(entries) {
    this._iter = entries;
    this.size = entries.size;
  }

  if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;
  FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );
  FromEntriesSequence.prototype.constructor = FromEntriesSequence;

  FromEntriesSequence.prototype.entrySeq = function entrySeq () {
    return this._iter.toSeq();
  };

  FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    return this._iter.__iterate(function (entry) {
      // Check if entry exists first so array access doesn't throw for holes
      // in the parent iteration.
      if (entry) {
        validateEntry(entry);
        var indexedCollection = isCollection(entry);
        return fn(
          indexedCollection ? entry.get(1) : entry[1],
          indexedCollection ? entry.get(0) : entry[0],
          this$1$1
        );
      }
    }, reverse);
  };

  FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {
    var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);
    return new Iterator(function () {
      while (true) {
        var step = iterator.next();
        if (step.done) {
          return step;
        }
        var entry = step.value;
        // Check if entry exists first so array access doesn't throw for holes
        // in the parent iteration.
        if (entry) {
          validateEntry(entry);
          var indexedCollection = isCollection(entry);
          return iteratorValue(
            type,
            indexedCollection ? entry.get(0) : entry[0],
            indexedCollection ? entry.get(1) : entry[1],
            step
          );
        }
      }
    });
  };

  return FromEntriesSequence;
}(KeyedSeq));

ToIndexedSequence.prototype.cacheResult =
  ToKeyedSequence.prototype.cacheResult =
  ToSetSequence.prototype.cacheResult =
  FromEntriesSequence.prototype.cacheResult =
    cacheResultThrough;

function flipFactory(collection) {
  var flipSequence = makeSequence(collection);
  flipSequence._iter = collection;
  flipSequence.size = collection.size;
  flipSequence.flip = function () { return collection; };
  flipSequence.reverse = function () {
    var reversedSequence = collection.reverse.apply(this); // super.reverse()
    reversedSequence.flip = function () { return collection.reverse(); };
    return reversedSequence;
  };
  flipSequence.has = function (key) { return collection.includes(key); };
  flipSequence.includes = function (key) { return collection.has(key); };
  flipSequence.cacheResult = cacheResultThrough;
  flipSequence.__iterateUncached = function (fn, reverse) {
    var this$1$1 = this;

    return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);
  };
  flipSequence.__iteratorUncached = function (type, reverse) {
    if (type === ITERATE_ENTRIES) {
      var iterator = collection.__iterator(type, reverse);
      return new Iterator(function () {
        var step = iterator.next();
        if (!step.done) {
          var k = step.value[0];
          step.value[0] = step.value[1];
          step.value[1] = k;
        }
        return step;
      });
    }
    return collection.__iterator(
      type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,
      reverse
    );
  };
  return flipSequence;
}

function mapFactory(collection, mapper, context) {
  var mappedSequence = makeSequence(collection);
  mappedSequence.size = collection.size;
  mappedSequence.has = function (key) { return collection.has(key); };
  mappedSequence.get = function (key, notSetValue) {
    var v = collection.get(key, NOT_SET);
    return v === NOT_SET
      ? notSetValue
      : mapper.call(context, v, key, collection);
  };
  mappedSequence.__iterateUncached = function (fn, reverse) {
    var this$1$1 = this;

    return collection.__iterate(
      function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },
      reverse
    );
  };
  mappedSequence.__iteratorUncached = function (type, reverse) {
    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);
    return new Iterator(function () {
      var step = iterator.next();
      if (step.done) {
        return step;
      }
      var entry = step.value;
      var key = entry[0];
      return iteratorValue(
        type,
        key,
        mapper.call(context, entry[1], key, collection),
        step
      );
    });
  };
  return mappedSequence;
}

function reverseFactory(collection, useKeys) {
  var this$1$1 = this;

  var reversedSequence = makeSequence(collection);
  reversedSequence._iter = collection;
  reversedSequence.size = collection.size;
  reversedSequence.reverse = function () { return collection; };
  if (collection.flip) {
    reversedSequence.flip = function () {
      var flipSequence = flipFactory(collection);
      flipSequence.reverse = function () { return collection.flip(); };
      return flipSequence;
    };
  }
  reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };
  reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };
  reversedSequence.includes = function (value) { return collection.includes(value); };
  reversedSequence.cacheResult = cacheResultThrough;
  reversedSequence.__iterate = function (fn, reverse) {
    var this$1$1 = this;

    var i = 0;
    reverse && ensureSize(collection);
    return collection.__iterate(
      function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },
      !reverse
    );
  };
  reversedSequence.__iterator = function (type, reverse) {
    var i = 0;
    reverse && ensureSize(collection);
    var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);
    return new Iterator(function () {
      var step = iterator.next();
      if (step.done) {
        return step;
      }
      var entry = step.value;
      return iteratorValue(
        type,
        useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,
        entry[1],
        step
      );
    });
  };
  return reversedSequence;
}

function filterFactory(collection, predicate, context, useKeys) {
  var filterSequence = makeSequence(collection);
  if (useKeys) {
    filterSequence.has = function (key) {
      var v = collection.get(key, NOT_SET);
      return v !== NOT_SET && !!predicate.call(context, v, key, collection);
    };
    filterSequence.get = function (key, notSetValue) {
      var v = collection.get(key, NOT_SET);
      return v !== NOT_SET && predicate.call(context, v, key, collection)
        ? v
        : notSetValue;
    };
  }
  filterSequence.__iterateUncached = function (fn, reverse) {
    var this$1$1 = this;

    var iterations = 0;
    collection.__iterate(function (v, k, c) {
      if (predicate.call(context, v, k, c)) {
        iterations++;
        return fn(v, useKeys ? k : iterations - 1, this$1$1);
      }
    }, reverse);
    return iterations;
  };
  filterSequence.__iteratorUncached = function (type, reverse) {
    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);
    var iterations = 0;
    return new Iterator(function () {
      while (true) {
        var step = iterator.next();
        if (step.done) {
          return step;
        }
        var entry = step.value;
        var key = entry[0];
        var value = entry[1];
        if (predicate.call(context, value, key, collection)) {
          return iteratorValue(type, useKeys ? key : iterations++, value, step);
        }
      }
    });
  };
  return filterSequence;
}

function countByFactory(collection, grouper, context) {
  var groups = Map().asMutable();
  collection.__iterate(function (v, k) {
    groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });
  });
  return groups.asImmutable();
}

function groupByFactory(collection, grouper, context) {
  var isKeyedIter = isKeyed(collection);
  var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();
  collection.__iterate(function (v, k) {
    groups.update(
      grouper.call(context, v, k, collection),
      function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }
    );
  });
  var coerce = collectionClass(collection);
  return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();
}

function partitionFactory(collection, predicate, context) {
  var isKeyedIter = isKeyed(collection);
  var groups = [[], []];
  collection.__iterate(function (v, k) {
    groups[predicate.call(context, v, k, collection) ? 1 : 0].push(
      isKeyedIter ? [k, v] : v
    );
  });
  var coerce = collectionClass(collection);
  return groups.map(function (arr) { return reify(collection, coerce(arr)); });
}

function sliceFactory(collection, begin, end, useKeys) {
  var originalSize = collection.size;

  if (wholeSlice(begin, end, originalSize)) {
    return collection;
  }

  // begin or end can not be resolved if they were provided as negative numbers and
  // this collection's size is unknown. In that case, cache first so there is
  // a known size and these do not resolve to NaN.
  if (typeof originalSize === 'undefined' && (begin < 0 || end < 0)) {
    return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);
  }

  var resolvedBegin = resolveBegin(begin, originalSize);
  var resolvedEnd = resolveEnd(end, originalSize);

  // Note: resolvedEnd is undefined when the original sequence's length is
  // unknown and this slice did not supply an end and should contain all
  // elements after resolvedBegin.
  // In that case, resolvedSize will be NaN and sliceSize will remain undefined.
  var resolvedSize = resolvedEnd - resolvedBegin;
  var sliceSize;
  if (resolvedSize === resolvedSize) {
    sliceSize = resolvedSize < 0 ? 0 : resolvedSize;
  }

  var sliceSeq = makeSequence(collection);

  // If collection.size is undefined, the size of the realized sliceSeq is
  // unknown at this point unless the number of items to slice is 0
  sliceSeq.size =
    sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;

  if (!useKeys && isSeq(collection) && sliceSize >= 0) {
    sliceSeq.get = function (index, notSetValue) {
      index = wrapIndex(this, index);
      return index >= 0 && index < sliceSize
        ? collection.get(index + resolvedBegin, notSetValue)
        : notSetValue;
    };
  }

  sliceSeq.__iterateUncached = function (fn, reverse) {
    var this$1$1 = this;

    if (sliceSize === 0) {
      return 0;
    }
    if (reverse) {
      return this.cacheResult().__iterate(fn, reverse);
    }
    var skipped = 0;
    var isSkipping = true;
    var iterations = 0;
    collection.__iterate(function (v, k) {
      if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {
        iterations++;
        return (
          fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&
          iterations !== sliceSize
        );
      }
    });
    return iterations;
  };

  sliceSeq.__iteratorUncached = function (type, reverse) {
    if (sliceSize !== 0 && reverse) {
      return this.cacheResult().__iterator(type, reverse);
    }
    // Don't bother instantiating parent iterator if taking 0.
    if (sliceSize === 0) {
      return new Iterator(iteratorDone);
    }
    var iterator = collection.__iterator(type, reverse);
    var skipped = 0;
    var iterations = 0;
    return new Iterator(function () {
      while (skipped++ < resolvedBegin) {
        iterator.next();
      }
      if (++iterations > sliceSize) {
        return iteratorDone();
      }
      var step = iterator.next();
      if (useKeys || type === ITERATE_VALUES || step.done) {
        return step;
      }
      if (type === ITERATE_KEYS) {
        return iteratorValue(type, iterations - 1, undefined, step);
      }
      return iteratorValue(type, iterations - 1, step.value[1], step);
    });
  };

  return sliceSeq;
}

function takeWhileFactory(collection, predicate, context) {
  var takeSequence = makeSequence(collection);
  takeSequence.__iterateUncached = function (fn, reverse) {
    var this$1$1 = this;

    if (reverse) {
      return this.cacheResult().__iterate(fn, reverse);
    }
    var iterations = 0;
    collection.__iterate(
      function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }
    );
    return iterations;
  };
  takeSequence.__iteratorUncached = function (type, reverse) {
    var this$1$1 = this;

    if (reverse) {
      return this.cacheResult().__iterator(type, reverse);
    }
    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);
    var iterating = true;
    return new Iterator(function () {
      if (!iterating) {
        return iteratorDone();
      }
      var step = iterator.next();
      if (step.done) {
        return step;
      }
      var entry = step.value;
      var k = entry[0];
      var v = entry[1];
      if (!predicate.call(context, v, k, this$1$1)) {
        iterating = false;
        return iteratorDone();
      }
      return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);
    });
  };
  return takeSequence;
}

function skipWhileFactory(collection, predicate, context, useKeys) {
  var skipSequence = makeSequence(collection);
  skipSequence.__iterateUncached = function (fn, reverse) {
    var this$1$1 = this;

    if (reverse) {
      return this.cacheResult().__iterate(fn, reverse);
    }
    var isSkipping = true;
    var iterations = 0;
    collection.__iterate(function (v, k, c) {
      if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {
        iterations++;
        return fn(v, useKeys ? k : iterations - 1, this$1$1);
      }
    });
    return iterations;
  };
  skipSequence.__iteratorUncached = function (type, reverse) {
    var this$1$1 = this;

    if (reverse) {
      return this.cacheResult().__iterator(type, reverse);
    }
    var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);
    var skipping = true;
    var iterations = 0;
    return new Iterator(function () {
      var step;
      var k;
      var v;
      do {
        step = iterator.next();
        if (step.done) {
          if (useKeys || type === ITERATE_VALUES) {
            return step;
          }
          if (type === ITERATE_KEYS) {
            return iteratorValue(type, iterations++, undefined, step);
          }
          return iteratorValue(type, iterations++, step.value[1], step);
        }
        var entry = step.value;
        k = entry[0];
        v = entry[1];
        skipping && (skipping = predicate.call(context, v, k, this$1$1));
      } while (skipping);
      return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);
    });
  };
  return skipSequence;
}

function concatFactory(collection, values) {
  var isKeyedCollection = isKeyed(collection);
  var iters = [collection]
    .concat(values)
    .map(function (v) {
      if (!isCollection(v)) {
        v = isKeyedCollection
          ? keyedSeqFromValue(v)
          : indexedSeqFromValue(Array.isArray(v) ? v : [v]);
      } else if (isKeyedCollection) {
        v = KeyedCollection(v);
      }
      return v;
    })
    .filter(function (v) { return v.size !== 0; });

  if (iters.length === 0) {
    return collection;
  }

  if (iters.length === 1) {
    var singleton = iters[0];
    if (
      singleton === collection ||
      (isKeyedCollection && isKeyed(singleton)) ||
      (isIndexed(collection) && isIndexed(singleton))
    ) {
      return singleton;
    }
  }

  var concatSeq = new ArraySeq(iters);
  if (isKeyedCollection) {
    concatSeq = concatSeq.toKeyedSeq();
  } else if (!isIndexed(collection)) {
    concatSeq = concatSeq.toSetSeq();
  }
  concatSeq = concatSeq.flatten(true);
  concatSeq.size = iters.reduce(function (sum, seq) {
    if (sum !== undefined) {
      var size = seq.size;
      if (size !== undefined) {
        return sum + size;
      }
    }
  }, 0);
  return concatSeq;
}

function flattenFactory(collection, depth, useKeys) {
  var flatSequence = makeSequence(collection);
  flatSequence.__iterateUncached = function (fn, reverse) {
    if (reverse) {
      return this.cacheResult().__iterate(fn, reverse);
    }
    var iterations = 0;
    var stopped = false;
    function flatDeep(iter, currentDepth) {
      iter.__iterate(function (v, k) {
        if ((!depth || currentDepth < depth) && isCollection(v)) {
          flatDeep(v, currentDepth + 1);
        } else {
          iterations++;
          if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {
            stopped = true;
          }
        }
        return !stopped;
      }, reverse);
    }
    flatDeep(collection, 0);
    return iterations;
  };
  flatSequence.__iteratorUncached = function (type, reverse) {
    if (reverse) {
      return this.cacheResult().__iterator(type, reverse);
    }
    var iterator = collection.__iterator(type, reverse);
    var stack = [];
    var iterations = 0;
    return new Iterator(function () {
      while (iterator) {
        var step = iterator.next();
        if (step.done !== false) {
          iterator = stack.pop();
          continue;
        }
        var v = step.value;
        if (type === ITERATE_ENTRIES) {
          v = v[1];
        }
        if ((!depth || stack.length < depth) && isCollection(v)) {
          stack.push(iterator);
          iterator = v.__iterator(type, reverse);
        } else {
          return useKeys ? step : iteratorValue(type, iterations++, v, step);
        }
      }
      return iteratorDone();
    });
  };
  return flatSequence;
}

function flatMapFactory(collection, mapper, context) {
  var coerce = collectionClass(collection);
  return collection
    .toSeq()
    .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })
    .flatten(true);
}

function interposeFactory(collection, separator) {
  var interposedSequence = makeSequence(collection);
  interposedSequence.size = collection.size && collection.size * 2 - 1;
  interposedSequence.__iterateUncached = function (fn, reverse) {
    var this$1$1 = this;

    var iterations = 0;
    collection.__iterate(
      function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&
        fn(v, iterations++, this$1$1) !== false; },
      reverse
    );
    return iterations;
  };
  interposedSequence.__iteratorUncached = function (type, reverse) {
    var iterator = collection.__iterator(ITERATE_VALUES, reverse);
    var iterations = 0;
    var step;
    return new Iterator(function () {
      if (!step || iterations % 2) {
        step = iterator.next();
        if (step.done) {
          return step;
        }
      }
      return iterations % 2
        ? iteratorValue(type, iterations++, separator)
        : iteratorValue(type, iterations++, step.value, step);
    });
  };
  return interposedSequence;
}

function sortFactory(collection, comparator, mapper) {
  if (!comparator) {
    comparator = defaultComparator;
  }
  var isKeyedCollection = isKeyed(collection);
  var index = 0;
  var entries = collection
    .toSeq()
    .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })
    .valueSeq()
    .toArray();
  entries
    .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })
    .forEach(
      isKeyedCollection
        ? function (v, i) {
            entries[i].length = 2;
          }
        : function (v, i) {
            entries[i] = v[1];
          }
    );
  return isKeyedCollection
    ? KeyedSeq(entries)
    : isIndexed(collection)
    ? IndexedSeq(entries)
    : SetSeq(entries);
}

function maxFactory(collection, comparator, mapper) {
  if (!comparator) {
    comparator = defaultComparator;
  }
  if (mapper) {
    var entry = collection
      .toSeq()
      .map(function (v, k) { return [v, mapper(v, k, collection)]; })
      .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });
    return entry && entry[0];
  }
  return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });
}

function maxCompare(comparator, a, b) {
  var comp = comparator(b, a);
  // b is considered the new max if the comparator declares them equal, but
  // they are not equal and b is in fact a nullish value.
  return (
    (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||
    comp > 0
  );
}

function zipWithFactory(keyIter, zipper, iters, zipAll) {
  var zipSequence = makeSequence(keyIter);
  var sizes = new ArraySeq(iters).map(function (i) { return i.size; });
  zipSequence.size = zipAll ? sizes.max() : sizes.min();
  // Note: this a generic base implementation of __iterate in terms of
  // __iterator which may be more generically useful in the future.
  zipSequence.__iterate = function (fn, reverse) {
    /* generic:
    var iterator = this.__iterator(ITERATE_ENTRIES, reverse);
    var step;
    var iterations = 0;
    while (!(step = iterator.next()).done) {
      iterations++;
      if (fn(step.value[1], step.value[0], this) === false) {
        break;
      }
    }
    return iterations;
    */
    // indexed:
    var iterator = this.__iterator(ITERATE_VALUES, reverse);
    var step;
    var iterations = 0;
    while (!(step = iterator.next()).done) {
      if (fn(step.value, iterations++, this) === false) {
        break;
      }
    }
    return iterations;
  };
  zipSequence.__iteratorUncached = function (type, reverse) {
    var iterators = iters.map(
      function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }
    );
    var iterations = 0;
    var isDone = false;
    return new Iterator(function () {
      var steps;
      if (!isDone) {
        steps = iterators.map(function (i) { return i.next(); });
        isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });
      }
      if (isDone) {
        return iteratorDone();
      }
      return iteratorValue(
        type,
        iterations++,
        zipper.apply(
          null,
          steps.map(function (s) { return s.value; })
        )
      );
    });
  };
  return zipSequence;
}

// #pragma Helper Functions

function reify(iter, seq) {
  return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);
}

function validateEntry(entry) {
  if (entry !== Object(entry)) {
    throw new TypeError('Expected [K, V] tuple: ' + entry);
  }
}

function collectionClass(collection) {
  return isKeyed(collection)
    ? KeyedCollection
    : isIndexed(collection)
    ? IndexedCollection
    : SetCollection;
}

function makeSequence(collection) {
  return Object.create(
    (isKeyed(collection)
      ? KeyedSeq
      : isIndexed(collection)
      ? IndexedSeq
      : SetSeq
    ).prototype
  );
}

function cacheResultThrough() {
  if (this._iter.cacheResult) {
    this._iter.cacheResult();
    this.size = this._iter.size;
    return this;
  }
  return Seq.prototype.cacheResult.call(this);
}

function defaultComparator(a, b) {
  if (a === undefined && b === undefined) {
    return 0;
  }

  if (a === undefined) {
    return 1;
  }

  if (b === undefined) {
    return -1;
  }

  return a > b ? 1 : a < b ? -1 : 0;
}

function arrCopy(arr, offset) {
  offset = offset || 0;
  var len = Math.max(0, arr.length - offset);
  var newArr = new Array(len);
  for (var ii = 0; ii < len; ii++) {
    newArr[ii] = arr[ii + offset];
  }
  return newArr;
}

function invariant(condition, error) {
  if (!condition) { throw new Error(error); }
}

function assertNotInfinite(size) {
  invariant(
    size !== Infinity,
    'Cannot perform this action with an infinite size.'
  );
}

function coerceKeyPath(keyPath) {
  if (isArrayLike(keyPath) && typeof keyPath !== 'string') {
    return keyPath;
  }
  if (isOrdered(keyPath)) {
    return keyPath.toArray();
  }
  throw new TypeError(
    'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath
  );
}

var toString = Object.prototype.toString;

function isPlainObject(value) {
  // The base prototype's toString deals with Argument objects and native namespaces like Math
  if (
    !value ||
    typeof value !== 'object' ||
    toString.call(value) !== '[object Object]'
  ) {
    return false;
  }

  var proto = Object.getPrototypeOf(value);
  if (proto === null) {
    return true;
  }

  // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)
  var parentProto = proto;
  var nextProto = Object.getPrototypeOf(proto);
  while (nextProto !== null) {
    parentProto = nextProto;
    nextProto = Object.getPrototypeOf(parentProto);
  }
  return parentProto === proto;
}

/**
 * Returns true if the value is a potentially-persistent data structure, either
 * provided by Immutable.js or a plain Array or Object.
 */
function isDataStructure(value) {
  return (
    typeof value === 'object' &&
    (isImmutable(value) || Array.isArray(value) || isPlainObject(value))
  );
}

function quoteString(value) {
  try {
    return typeof value === 'string' ? JSON.stringify(value) : String(value);
  } catch (_ignoreError) {
    return JSON.stringify(value);
  }
}

function has(collection, key) {
  return isImmutable(collection)
    ? collection.has(key)
    : isDataStructure(collection) && hasOwnProperty.call(collection, key);
}

function get(collection, key, notSetValue) {
  return isImmutable(collection)
    ? collection.get(key, notSetValue)
    : !has(collection, key)
    ? notSetValue
    : typeof collection.get === 'function'
    ? collection.get(key)
    : collection[key];
}

function shallowCopy(from) {
  if (Array.isArray(from)) {
    return arrCopy(from);
  }
  var to = {};
  for (var key in from) {
    if (hasOwnProperty.call(from, key)) {
      to[key] = from[key];
    }
  }
  return to;
}

function remove(collection, key) {
  if (!isDataStructure(collection)) {
    throw new TypeError(
      'Cannot update non-data-structure value: ' + collection
    );
  }
  if (isImmutable(collection)) {
    if (!collection.remove) {
      throw new TypeError(
        'Cannot update immutable value without .remove() method: ' + collection
      );
    }
    return collection.remove(key);
  }
  if (!hasOwnProperty.call(collection, key)) {
    return collection;
  }
  var collectionCopy = shallowCopy(collection);
  if (Array.isArray(collectionCopy)) {
    collectionCopy.splice(key, 1);
  } else {
    delete collectionCopy[key];
  }
  return collectionCopy;
}

function set(collection, key, value) {
  if (!isDataStructure(collection)) {
    throw new TypeError(
      'Cannot update non-data-structure value: ' + collection
    );
  }
  if (isImmutable(collection)) {
    if (!collection.set) {
      throw new TypeError(
        'Cannot update immutable value without .set() method: ' + collection
      );
    }
    return collection.set(key, value);
  }
  if (hasOwnProperty.call(collection, key) && value === collection[key]) {
    return collection;
  }
  var collectionCopy = shallowCopy(collection);
  collectionCopy[key] = value;
  return collectionCopy;
}

function updateIn$1(collection, keyPath, notSetValue, updater) {
  if (!updater) {
    updater = notSetValue;
    notSetValue = undefined;
  }
  var updatedValue = updateInDeeply(
    isImmutable(collection),
    collection,
    coerceKeyPath(keyPath),
    0,
    notSetValue,
    updater
  );
  return updatedValue === NOT_SET ? notSetValue : updatedValue;
}

function updateInDeeply(
  inImmutable,
  existing,
  keyPath,
  i,
  notSetValue,
  updater
) {
  var wasNotSet = existing === NOT_SET;
  if (i === keyPath.length) {
    var existingValue = wasNotSet ? notSetValue : existing;
    var newValue = updater(existingValue);
    return newValue === existingValue ? existing : newValue;
  }
  if (!wasNotSet && !isDataStructure(existing)) {
    throw new TypeError(
      'Cannot update within non-data-structure value in path [' +
        keyPath.slice(0, i).map(quoteString) +
        ']: ' +
        existing
    );
  }
  var key = keyPath[i];
  var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);
  var nextUpdated = updateInDeeply(
    nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),
    nextExisting,
    keyPath,
    i + 1,
    notSetValue,
    updater
  );
  return nextUpdated === nextExisting
    ? existing
    : nextUpdated === NOT_SET
    ? remove(existing, key)
    : set(
        wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,
        key,
        nextUpdated
      );
}

function setIn$1(collection, keyPath, value) {
  return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });
}

function setIn(keyPath, v) {
  return setIn$1(this, keyPath, v);
}

function removeIn(collection, keyPath) {
  return updateIn$1(collection, keyPath, function () { return NOT_SET; });
}

function deleteIn(keyPath) {
  return removeIn(this, keyPath);
}

function update$1(collection, key, notSetValue, updater) {
  return updateIn$1(collection, [key], notSetValue, updater);
}

function update(key, notSetValue, updater) {
  return arguments.length === 1
    ? key(this)
    : update$1(this, key, notSetValue, updater);
}

function updateIn(keyPath, notSetValue, updater) {
  return updateIn$1(this, keyPath, notSetValue, updater);
}

function merge$1() {
  var iters = [], len = arguments.length;
  while ( len-- ) iters[ len ] = arguments[ len ];

  return mergeIntoKeyedWith(this, iters);
}

function mergeWith$1(merger) {
  var iters = [], len = arguments.length - 1;
  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];

  if (typeof merger !== 'function') {
    throw new TypeError('Invalid merger function: ' + merger);
  }
  return mergeIntoKeyedWith(this, iters, merger);
}

function mergeIntoKeyedWith(collection, collections, merger) {
  var iters = [];
  for (var ii = 0; ii < collections.length; ii++) {
    var collection$1 = KeyedCollection(collections[ii]);
    if (collection$1.size !== 0) {
      iters.push(collection$1);
    }
  }
  if (iters.length === 0) {
    return collection;
  }
  if (
    collection.toSeq().size === 0 &&
    !collection.__ownerID &&
    iters.length === 1
  ) {
    return collection.constructor(iters[0]);
  }
  return collection.withMutations(function (collection) {
    var mergeIntoCollection = merger
      ? function (value, key) {
          update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }
          );
        }
      : function (value, key) {
          collection.set(key, value);
        };
    for (var ii = 0; ii < iters.length; ii++) {
      iters[ii].forEach(mergeIntoCollection);
    }
  });
}

function merge(collection) {
  var sources = [], len = arguments.length - 1;
  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];

  return mergeWithSources(collection, sources);
}

function mergeWith(merger, collection) {
  var sources = [], len = arguments.length - 2;
  while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];

  return mergeWithSources(collection, sources, merger);
}

function mergeDeep$1(collection) {
  var sources = [], len = arguments.length - 1;
  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];

  return mergeDeepWithSources(collection, sources);
}

function mergeDeepWith$1(merger, collection) {
  var sources = [], len = arguments.length - 2;
  while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];

  return mergeDeepWithSources(collection, sources, merger);
}

function mergeDeepWithSources(collection, sources, merger) {
  return mergeWithSources(collection, sources, deepMergerWith(merger));
}

function mergeWithSources(collection, sources, merger) {
  if (!isDataStructure(collection)) {
    throw new TypeError(
      'Cannot merge into non-data-structure value: ' + collection
    );
  }
  if (isImmutable(collection)) {
    return typeof merger === 'function' && collection.mergeWith
      ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))
      : collection.merge
      ? collection.merge.apply(collection, sources)
      : collection.concat.apply(collection, sources);
  }
  var isArray = Array.isArray(collection);
  var merged = collection;
  var Collection = isArray ? IndexedCollection : KeyedCollection;
  var mergeItem = isArray
    ? function (value) {
        // Copy on write
        if (merged === collection) {
          merged = shallowCopy(merged);
        }
        merged.push(value);
      }
    : function (value, key) {
        var hasVal = hasOwnProperty.call(merged, key);
        var nextVal =
          hasVal && merger ? merger(merged[key], value, key) : value;
        if (!hasVal || nextVal !== merged[key]) {
          // Copy on write
          if (merged === collection) {
            merged = shallowCopy(merged);
          }
          merged[key] = nextVal;
        }
      };
  for (var i = 0; i < sources.length; i++) {
    Collection(sources[i]).forEach(mergeItem);
  }
  return merged;
}

function deepMergerWith(merger) {
  function deepMerger(oldValue, newValue, key) {
    return isDataStructure(oldValue) &&
      isDataStructure(newValue) &&
      areMergeable(oldValue, newValue)
      ? mergeWithSources(oldValue, [newValue], deepMerger)
      : merger
      ? merger(oldValue, newValue, key)
      : newValue;
  }
  return deepMerger;
}

/**
 * It's unclear what the desired behavior is for merging two collections that
 * fall into separate categories between keyed, indexed, or set-like, so we only
 * consider them mergeable if they fall into the same category.
 */
function areMergeable(oldDataStructure, newDataStructure) {
  var oldSeq = Seq(oldDataStructure);
  var newSeq = Seq(newDataStructure);
  // This logic assumes that a sequence can only fall into one of the three
  // categories mentioned above (since there's no `isSetLike()` method).
  return (
    isIndexed(oldSeq) === isIndexed(newSeq) &&
    isKeyed(oldSeq) === isKeyed(newSeq)
  );
}

function mergeDeep() {
  var iters = [], len = arguments.length;
  while ( len-- ) iters[ len ] = arguments[ len ];

  return mergeDeepWithSources(this, iters);
}

function mergeDeepWith(merger) {
  var iters = [], len = arguments.length - 1;
  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];

  return mergeDeepWithSources(this, iters, merger);
}

function mergeIn(keyPath) {
  var iters = [], len = arguments.length - 1;
  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];

  return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });
}

function mergeDeepIn(keyPath) {
  var iters = [], len = arguments.length - 1;
  while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];

  return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }
  );
}

function withMutations(fn) {
  var mutable = this.asMutable();
  fn(mutable);
  return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;
}

function asMutable() {
  return this.__ownerID ? this : this.__ensureOwner(new OwnerID());
}

function asImmutable() {
  return this.__ensureOwner();
}

function wasAltered() {
  return this.__altered;
}

var Map = /*@__PURE__*/(function (KeyedCollection) {
  function Map(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptyMap()
      : isMap(value) && !isOrdered(value)
      ? value
      : emptyMap().withMutations(function (map) {
          var iter = KeyedCollection(value);
          assertNotInfinite(iter.size);
          iter.forEach(function (v, k) { return map.set(k, v); });
        });
  }

  if ( KeyedCollection ) Map.__proto__ = KeyedCollection;
  Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );
  Map.prototype.constructor = Map;

  Map.of = function of () {
    var keyValues = [], len = arguments.length;
    while ( len-- ) keyValues[ len ] = arguments[ len ];

    return emptyMap().withMutations(function (map) {
      for (var i = 0; i < keyValues.length; i += 2) {
        if (i + 1 >= keyValues.length) {
          throw new Error('Missing value for key: ' + keyValues[i]);
        }
        map.set(keyValues[i], keyValues[i + 1]);
      }
    });
  };

  Map.prototype.toString = function toString () {
    return this.__toString('Map {', '}');
  };

  // @pragma Access

  Map.prototype.get = function get (k, notSetValue) {
    return this._root
      ? this._root.get(0, undefined, k, notSetValue)
      : notSetValue;
  };

  // @pragma Modification

  Map.prototype.set = function set (k, v) {
    return updateMap(this, k, v);
  };

  Map.prototype.remove = function remove (k) {
    return updateMap(this, k, NOT_SET);
  };

  Map.prototype.deleteAll = function deleteAll (keys) {
    var collection = Collection(keys);

    if (collection.size === 0) {
      return this;
    }

    return this.withMutations(function (map) {
      collection.forEach(function (key) { return map.remove(key); });
    });
  };

  Map.prototype.clear = function clear () {
    if (this.size === 0) {
      return this;
    }
    if (this.__ownerID) {
      this.size = 0;
      this._root = null;
      this.__hash = undefined;
      this.__altered = true;
      return this;
    }
    return emptyMap();
  };

  // @pragma Composition

  Map.prototype.sort = function sort (comparator) {
    // Late binding
    return OrderedMap(sortFactory(this, comparator));
  };

  Map.prototype.sortBy = function sortBy (mapper, comparator) {
    // Late binding
    return OrderedMap(sortFactory(this, comparator, mapper));
  };

  Map.prototype.map = function map (mapper, context) {
    var this$1$1 = this;

    return this.withMutations(function (map) {
      map.forEach(function (value, key) {
        map.set(key, mapper.call(context, value, key, this$1$1));
      });
    });
  };

  // @pragma Mutability

  Map.prototype.__iterator = function __iterator (type, reverse) {
    return new MapIterator(this, type, reverse);
  };

  Map.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    var iterations = 0;
    this._root &&
      this._root.iterate(function (entry) {
        iterations++;
        return fn(entry[1], entry[0], this$1$1);
      }, reverse);
    return iterations;
  };

  Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {
    if (ownerID === this.__ownerID) {
      return this;
    }
    if (!ownerID) {
      if (this.size === 0) {
        return emptyMap();
      }
      this.__ownerID = ownerID;
      this.__altered = false;
      return this;
    }
    return makeMap(this.size, this._root, ownerID, this.__hash);
  };

  return Map;
}(KeyedCollection));

Map.isMap = isMap;

var MapPrototype = Map.prototype;
MapPrototype[IS_MAP_SYMBOL] = true;
MapPrototype[DELETE] = MapPrototype.remove;
MapPrototype.removeAll = MapPrototype.deleteAll;
MapPrototype.setIn = setIn;
MapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;
MapPrototype.update = update;
MapPrototype.updateIn = updateIn;
MapPrototype.merge = MapPrototype.concat = merge$1;
MapPrototype.mergeWith = mergeWith$1;
MapPrototype.mergeDeep = mergeDeep;
MapPrototype.mergeDeepWith = mergeDeepWith;
MapPrototype.mergeIn = mergeIn;
MapPrototype.mergeDeepIn = mergeDeepIn;
MapPrototype.withMutations = withMutations;
MapPrototype.wasAltered = wasAltered;
MapPrototype.asImmutable = asImmutable;
MapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;
MapPrototype['@@transducer/step'] = function (result, arr) {
  return result.set(arr[0], arr[1]);
};
MapPrototype['@@transducer/result'] = function (obj) {
  return obj.asImmutable();
};

// #pragma Trie Nodes

var ArrayMapNode = function ArrayMapNode(ownerID, entries) {
  this.ownerID = ownerID;
  this.entries = entries;
};

ArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {
  var entries = this.entries;
  for (var ii = 0, len = entries.length; ii < len; ii++) {
    if (is(key, entries[ii][0])) {
      return entries[ii][1];
    }
  }
  return notSetValue;
};

ArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {
  var removed = value === NOT_SET;

  var entries = this.entries;
  var idx = 0;
  var len = entries.length;
  for (; idx < len; idx++) {
    if (is(key, entries[idx][0])) {
      break;
    }
  }
  var exists = idx < len;

  if (exists ? entries[idx][1] === value : removed) {
    return this;
  }

  SetRef(didAlter);
  (removed || !exists) && SetRef(didChangeSize);

  if (removed && entries.length === 1) {
    return; // undefined
  }

  if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {
    return createNodes(ownerID, entries, key, value);
  }

  var isEditable = ownerID && ownerID === this.ownerID;
  var newEntries = isEditable ? entries : arrCopy(entries);

  if (exists) {
    if (removed) {
      idx === len - 1
        ? newEntries.pop()
        : (newEntries[idx] = newEntries.pop());
    } else {
      newEntries[idx] = [key, value];
    }
  } else {
    newEntries.push([key, value]);
  }

  if (isEditable) {
    this.entries = newEntries;
    return this;
  }

  return new ArrayMapNode(ownerID, newEntries);
};

var BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {
  this.ownerID = ownerID;
  this.bitmap = bitmap;
  this.nodes = nodes;
};

BitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {
  if (keyHash === undefined) {
    keyHash = hash(key);
  }
  var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);
  var bitmap = this.bitmap;
  return (bitmap & bit) === 0
    ? notSetValue
    : this.nodes[popCount(bitmap & (bit - 1))].get(
        shift + SHIFT,
        keyHash,
        key,
        notSetValue
      );
};

BitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {
  if (keyHash === undefined) {
    keyHash = hash(key);
  }
  var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;
  var bit = 1 << keyHashFrag;
  var bitmap = this.bitmap;
  var exists = (bitmap & bit) !== 0;

  if (!exists && value === NOT_SET) {
    return this;
  }

  var idx = popCount(bitmap & (bit - 1));
  var nodes = this.nodes;
  var node = exists ? nodes[idx] : undefined;
  var newNode = updateNode(
    node,
    ownerID,
    shift + SHIFT,
    keyHash,
    key,
    value,
    didChangeSize,
    didAlter
  );

  if (newNode === node) {
    return this;
  }

  if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {
    return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);
  }

  if (
    exists &&
    !newNode &&
    nodes.length === 2 &&
    isLeafNode(nodes[idx ^ 1])
  ) {
    return nodes[idx ^ 1];
  }

  if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {
    return newNode;
  }

  var isEditable = ownerID && ownerID === this.ownerID;
  var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;
  var newNodes = exists
    ? newNode
      ? setAt(nodes, idx, newNode, isEditable)
      : spliceOut(nodes, idx, isEditable)
    : spliceIn(nodes, idx, newNode, isEditable);

  if (isEditable) {
    this.bitmap = newBitmap;
    this.nodes = newNodes;
    return this;
  }

  return new BitmapIndexedNode(ownerID, newBitmap, newNodes);
};

var HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {
  this.ownerID = ownerID;
  this.count = count;
  this.nodes = nodes;
};

HashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {
  if (keyHash === undefined) {
    keyHash = hash(key);
  }
  var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;
  var node = this.nodes[idx];
  return node
    ? node.get(shift + SHIFT, keyHash, key, notSetValue)
    : notSetValue;
};

HashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {
  if (keyHash === undefined) {
    keyHash = hash(key);
  }
  var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;
  var removed = value === NOT_SET;
  var nodes = this.nodes;
  var node = nodes[idx];

  if (removed && !node) {
    return this;
  }

  var newNode = updateNode(
    node,
    ownerID,
    shift + SHIFT,
    keyHash,
    key,
    value,
    didChangeSize,
    didAlter
  );
  if (newNode === node) {
    return this;
  }

  var newCount = this.count;
  if (!node) {
    newCount++;
  } else if (!newNode) {
    newCount--;
    if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {
      return packNodes(ownerID, nodes, newCount, idx);
    }
  }

  var isEditable = ownerID && ownerID === this.ownerID;
  var newNodes = setAt(nodes, idx, newNode, isEditable);

  if (isEditable) {
    this.count = newCount;
    this.nodes = newNodes;
    return this;
  }

  return new HashArrayMapNode(ownerID, newCount, newNodes);
};

var HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {
  this.ownerID = ownerID;
  this.keyHash = keyHash;
  this.entries = entries;
};

HashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {
  var entries = this.entries;
  for (var ii = 0, len = entries.length; ii < len; ii++) {
    if (is(key, entries[ii][0])) {
      return entries[ii][1];
    }
  }
  return notSetValue;
};

HashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {
  if (keyHash === undefined) {
    keyHash = hash(key);
  }

  var removed = value === NOT_SET;

  if (keyHash !== this.keyHash) {
    if (removed) {
      return this;
    }
    SetRef(didAlter);
    SetRef(didChangeSize);
    return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);
  }

  var entries = this.entries;
  var idx = 0;
  var len = entries.length;
  for (; idx < len; idx++) {
    if (is(key, entries[idx][0])) {
      break;
    }
  }
  var exists = idx < len;

  if (exists ? entries[idx][1] === value : removed) {
    return this;
  }

  SetRef(didAlter);
  (removed || !exists) && SetRef(didChangeSize);

  if (removed && len === 2) {
    return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);
  }

  var isEditable = ownerID && ownerID === this.ownerID;
  var newEntries = isEditable ? entries : arrCopy(entries);

  if (exists) {
    if (removed) {
      idx === len - 1
        ? newEntries.pop()
        : (newEntries[idx] = newEntries.pop());
    } else {
      newEntries[idx] = [key, value];
    }
  } else {
    newEntries.push([key, value]);
  }

  if (isEditable) {
    this.entries = newEntries;
    return this;
  }

  return new HashCollisionNode(ownerID, this.keyHash, newEntries);
};

var ValueNode = function ValueNode(ownerID, keyHash, entry) {
  this.ownerID = ownerID;
  this.keyHash = keyHash;
  this.entry = entry;
};

ValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {
  return is(key, this.entry[0]) ? this.entry[1] : notSetValue;
};

ValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {
  var removed = value === NOT_SET;
  var keyMatch = is(key, this.entry[0]);
  if (keyMatch ? value === this.entry[1] : removed) {
    return this;
  }

  SetRef(didAlter);

  if (removed) {
    SetRef(didChangeSize);
    return; // undefined
  }

  if (keyMatch) {
    if (ownerID && ownerID === this.ownerID) {
      this.entry[1] = value;
      return this;
    }
    return new ValueNode(ownerID, this.keyHash, [key, value]);
  }

  SetRef(didChangeSize);
  return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);
};

// #pragma Iterators

ArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =
  function (fn, reverse) {
    var entries = this.entries;
    for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {
      if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {
        return false;
      }
    }
  };

BitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =
  function (fn, reverse) {
    var nodes = this.nodes;
    for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {
      var node = nodes[reverse ? maxIndex - ii : ii];
      if (node && node.iterate(fn, reverse) === false) {
        return false;
      }
    }
  };

// eslint-disable-next-line no-unused-vars
ValueNode.prototype.iterate = function (fn, reverse) {
  return fn(this.entry);
};

var MapIterator = /*@__PURE__*/(function (Iterator) {
  function MapIterator(map, type, reverse) {
    this._type = type;
    this._reverse = reverse;
    this._stack = map._root && mapIteratorFrame(map._root);
  }

  if ( Iterator ) MapIterator.__proto__ = Iterator;
  MapIterator.prototype = Object.create( Iterator && Iterator.prototype );
  MapIterator.prototype.constructor = MapIterator;

  MapIterator.prototype.next = function next () {
    var type = this._type;
    var stack = this._stack;
    while (stack) {
      var node = stack.node;
      var index = stack.index++;
      var maxIndex = (void 0);
      if (node.entry) {
        if (index === 0) {
          return mapIteratorValue(type, node.entry);
        }
      } else if (node.entries) {
        maxIndex = node.entries.length - 1;
        if (index <= maxIndex) {
          return mapIteratorValue(
            type,
            node.entries[this._reverse ? maxIndex - index : index]
          );
        }
      } else {
        maxIndex = node.nodes.length - 1;
        if (index <= maxIndex) {
          var subNode = node.nodes[this._reverse ? maxIndex - index : index];
          if (subNode) {
            if (subNode.entry) {
              return mapIteratorValue(type, subNode.entry);
            }
            stack = this._stack = mapIteratorFrame(subNode, stack);
          }
          continue;
        }
      }
      stack = this._stack = this._stack.__prev;
    }
    return iteratorDone();
  };

  return MapIterator;
}(Iterator));

function mapIteratorValue(type, entry) {
  return iteratorValue(type, entry[0], entry[1]);
}

function mapIteratorFrame(node, prev) {
  return {
    node: node,
    index: 0,
    __prev: prev,
  };
}

function makeMap(size, root, ownerID, hash) {
  var map = Object.create(MapPrototype);
  map.size = size;
  map._root = root;
  map.__ownerID = ownerID;
  map.__hash = hash;
  map.__altered = false;
  return map;
}

var EMPTY_MAP;
function emptyMap() {
  return EMPTY_MAP || (EMPTY_MAP = makeMap(0));
}

function updateMap(map, k, v) {
  var newRoot;
  var newSize;
  if (!map._root) {
    if (v === NOT_SET) {
      return map;
    }
    newSize = 1;
    newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);
  } else {
    var didChangeSize = MakeRef();
    var didAlter = MakeRef();
    newRoot = updateNode(
      map._root,
      map.__ownerID,
      0,
      undefined,
      k,
      v,
      didChangeSize,
      didAlter
    );
    if (!didAlter.value) {
      return map;
    }
    newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);
  }
  if (map.__ownerID) {
    map.size = newSize;
    map._root = newRoot;
    map.__hash = undefined;
    map.__altered = true;
    return map;
  }
  return newRoot ? makeMap(newSize, newRoot) : emptyMap();
}

function updateNode(
  node,
  ownerID,
  shift,
  keyHash,
  key,
  value,
  didChangeSize,
  didAlter
) {
  if (!node) {
    if (value === NOT_SET) {
      return node;
    }
    SetRef(didAlter);
    SetRef(didChangeSize);
    return new ValueNode(ownerID, keyHash, [key, value]);
  }
  return node.update(
    ownerID,
    shift,
    keyHash,
    key,
    value,
    didChangeSize,
    didAlter
  );
}

function isLeafNode(node) {
  return (
    node.constructor === ValueNode || node.constructor === HashCollisionNode
  );
}

function mergeIntoNode(node, ownerID, shift, keyHash, entry) {
  if (node.keyHash === keyHash) {
    return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);
  }

  var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;
  var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;

  var newNode;
  var nodes =
    idx1 === idx2
      ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]
      : ((newNode = new ValueNode(ownerID, keyHash, entry)),
        idx1 < idx2 ? [node, newNode] : [newNode, node]);

  return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);
}

function createNodes(ownerID, entries, key, value) {
  if (!ownerID) {
    ownerID = new OwnerID();
  }
  var node = new ValueNode(ownerID, hash(key), [key, value]);
  for (var ii = 0; ii < entries.length; ii++) {
    var entry = entries[ii];
    node = node.update(ownerID, 0, undefined, entry[0], entry[1]);
  }
  return node;
}

function packNodes(ownerID, nodes, count, excluding) {
  var bitmap = 0;
  var packedII = 0;
  var packedNodes = new Array(count);
  for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {
    var node = nodes[ii];
    if (node !== undefined && ii !== excluding) {
      bitmap |= bit;
      packedNodes[packedII++] = node;
    }
  }
  return new BitmapIndexedNode(ownerID, bitmap, packedNodes);
}

function expandNodes(ownerID, nodes, bitmap, including, node) {
  var count = 0;
  var expandedNodes = new Array(SIZE);
  for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {
    expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;
  }
  expandedNodes[including] = node;
  return new HashArrayMapNode(ownerID, count + 1, expandedNodes);
}

function popCount(x) {
  x -= (x >> 1) & 0x55555555;
  x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
  x = (x + (x >> 4)) & 0x0f0f0f0f;
  x += x >> 8;
  x += x >> 16;
  return x & 0x7f;
}

function setAt(array, idx, val, canEdit) {
  var newArray = canEdit ? array : arrCopy(array);
  newArray[idx] = val;
  return newArray;
}

function spliceIn(array, idx, val, canEdit) {
  var newLen = array.length + 1;
  if (canEdit && idx + 1 === newLen) {
    array[idx] = val;
    return array;
  }
  var newArray = new Array(newLen);
  var after = 0;
  for (var ii = 0; ii < newLen; ii++) {
    if (ii === idx) {
      newArray[ii] = val;
      after = -1;
    } else {
      newArray[ii] = array[ii + after];
    }
  }
  return newArray;
}

function spliceOut(array, idx, canEdit) {
  var newLen = array.length - 1;
  if (canEdit && idx === newLen) {
    array.pop();
    return array;
  }
  var newArray = new Array(newLen);
  var after = 0;
  for (var ii = 0; ii < newLen; ii++) {
    if (ii === idx) {
      after = 1;
    }
    newArray[ii] = array[ii + after];
  }
  return newArray;
}

var MAX_ARRAY_MAP_SIZE = SIZE / 4;
var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;
var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;

var IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';

function isList(maybeList) {
  return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);
}

var List = /*@__PURE__*/(function (IndexedCollection) {
  function List(value) {
    var empty = emptyList();
    if (value === undefined || value === null) {
      // eslint-disable-next-line no-constructor-return
      return empty;
    }
    if (isList(value)) {
      // eslint-disable-next-line no-constructor-return
      return value;
    }
    var iter = IndexedCollection(value);
    var size = iter.size;
    if (size === 0) {
      // eslint-disable-next-line no-constructor-return
      return empty;
    }
    assertNotInfinite(size);
    if (size > 0 && size < SIZE) {
      // eslint-disable-next-line no-constructor-return
      return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));
    }
    // eslint-disable-next-line no-constructor-return
    return empty.withMutations(function (list) {
      list.setSize(size);
      iter.forEach(function (v, i) { return list.set(i, v); });
    });
  }

  if ( IndexedCollection ) List.__proto__ = IndexedCollection;
  List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );
  List.prototype.constructor = List;

  List.of = function of (/*...values*/) {
    return this(arguments);
  };

  List.prototype.toString = function toString () {
    return this.__toString('List [', ']');
  };

  // @pragma Access

  List.prototype.get = function get (index, notSetValue) {
    index = wrapIndex(this, index);
    if (index >= 0 && index < this.size) {
      index += this._origin;
      var node = listNodeFor(this, index);
      return node && node.array[index & MASK];
    }
    return notSetValue;
  };

  // @pragma Modification

  List.prototype.set = function set (index, value) {
    return updateList(this, index, value);
  };

  List.prototype.remove = function remove (index) {
    return !this.has(index)
      ? this
      : index === 0
      ? this.shift()
      : index === this.size - 1
      ? this.pop()
      : this.splice(index, 1);
  };

  List.prototype.insert = function insert (index, value) {
    return this.splice(index, 0, value);
  };

  List.prototype.clear = function clear () {
    if (this.size === 0) {
      return this;
    }
    if (this.__ownerID) {
      this.size = this._origin = this._capacity = 0;
      this._level = SHIFT;
      this._root = this._tail = this.__hash = undefined;
      this.__altered = true;
      return this;
    }
    return emptyList();
  };

  List.prototype.push = function push (/*...values*/) {
    var values = arguments;
    var oldSize = this.size;
    return this.withMutations(function (list) {
      setListBounds(list, 0, oldSize + values.length);
      for (var ii = 0; ii < values.length; ii++) {
        list.set(oldSize + ii, values[ii]);
      }
    });
  };

  List.prototype.pop = function pop () {
    return setListBounds(this, 0, -1);
  };

  List.prototype.unshift = function unshift (/*...values*/) {
    var values = arguments;
    return this.withMutations(function (list) {
      setListBounds(list, -values.length);
      for (var ii = 0; ii < values.length; ii++) {
        list.set(ii, values[ii]);
      }
    });
  };

  List.prototype.shift = function shift () {
    return setListBounds(this, 1);
  };

  // @pragma Composition

  List.prototype.concat = function concat (/*...collections*/) {
    var arguments$1 = arguments;

    var seqs = [];
    for (var i = 0; i < arguments.length; i++) {
      var argument = arguments$1[i];
      var seq = IndexedCollection(
        typeof argument !== 'string' && hasIterator(argument)
          ? argument
          : [argument]
      );
      if (seq.size !== 0) {
        seqs.push(seq);
      }
    }
    if (seqs.length === 0) {
      return this;
    }
    if (this.size === 0 && !this.__ownerID && seqs.length === 1) {
      return this.constructor(seqs[0]);
    }
    return this.withMutations(function (list) {
      seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });
    });
  };

  List.prototype.setSize = function setSize (size) {
    return setListBounds(this, 0, size);
  };

  List.prototype.map = function map (mapper, context) {
    var this$1$1 = this;

    return this.withMutations(function (list) {
      for (var i = 0; i < this$1$1.size; i++) {
        list.set(i, mapper.call(context, list.get(i), i, this$1$1));
      }
    });
  };

  // @pragma Iteration

  List.prototype.slice = function slice (begin, end) {
    var size = this.size;
    if (wholeSlice(begin, end, size)) {
      return this;
    }
    return setListBounds(
      this,
      resolveBegin(begin, size),
      resolveEnd(end, size)
    );
  };

  List.prototype.__iterator = function __iterator (type, reverse) {
    var index = reverse ? this.size : 0;
    var values = iterateList(this, reverse);
    return new Iterator(function () {
      var value = values();
      return value === DONE
        ? iteratorDone()
        : iteratorValue(type, reverse ? --index : index++, value);
    });
  };

  List.prototype.__iterate = function __iterate (fn, reverse) {
    var index = reverse ? this.size : 0;
    var values = iterateList(this, reverse);
    var value;
    while ((value = values()) !== DONE) {
      if (fn(value, reverse ? --index : index++, this) === false) {
        break;
      }
    }
    return index;
  };

  List.prototype.__ensureOwner = function __ensureOwner (ownerID) {
    if (ownerID === this.__ownerID) {
      return this;
    }
    if (!ownerID) {
      if (this.size === 0) {
        return emptyList();
      }
      this.__ownerID = ownerID;
      this.__altered = false;
      return this;
    }
    return makeList(
      this._origin,
      this._capacity,
      this._level,
      this._root,
      this._tail,
      ownerID,
      this.__hash
    );
  };

  return List;
}(IndexedCollection));

List.isList = isList;

var ListPrototype = List.prototype;
ListPrototype[IS_LIST_SYMBOL] = true;
ListPrototype[DELETE] = ListPrototype.remove;
ListPrototype.merge = ListPrototype.concat;
ListPrototype.setIn = setIn;
ListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;
ListPrototype.update = update;
ListPrototype.updateIn = updateIn;
ListPrototype.mergeIn = mergeIn;
ListPrototype.mergeDeepIn = mergeDeepIn;
ListPrototype.withMutations = withMutations;
ListPrototype.wasAltered = wasAltered;
ListPrototype.asImmutable = asImmutable;
ListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;
ListPrototype['@@transducer/step'] = function (result, arr) {
  return result.push(arr);
};
ListPrototype['@@transducer/result'] = function (obj) {
  return obj.asImmutable();
};

var VNode = function VNode(array, ownerID) {
  this.array = array;
  this.ownerID = ownerID;
};

// TODO: seems like these methods are very similar

VNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {
  if (index === level ? 1 << level : this.array.length === 0) {
    return this;
  }
  var originIndex = (index >>> level) & MASK;
  if (originIndex >= this.array.length) {
    return new VNode([], ownerID);
  }
  var removingFirst = originIndex === 0;
  var newChild;
  if (level > 0) {
    var oldChild = this.array[originIndex];
    newChild =
      oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);
    if (newChild === oldChild && removingFirst) {
      return this;
    }
  }
  if (removingFirst && !newChild) {
    return this;
  }
  var editable = editableVNode(this, ownerID);
  if (!removingFirst) {
    for (var ii = 0; ii < originIndex; ii++) {
      editable.array[ii] = undefined;
    }
  }
  if (newChild) {
    editable.array[originIndex] = newChild;
  }
  return editable;
};

VNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {
  if (index === (level ? 1 << level : 0) || this.array.length === 0) {
    return this;
  }
  var sizeIndex = ((index - 1) >>> level) & MASK;
  if (sizeIndex >= this.array.length) {
    return this;
  }

  var newChild;
  if (level > 0) {
    var oldChild = this.array[sizeIndex];
    newChild =
      oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);
    if (newChild === oldChild && sizeIndex === this.array.length - 1) {
      return this;
    }
  }

  var editable = editableVNode(this, ownerID);
  editable.array.splice(sizeIndex + 1);
  if (newChild) {
    editable.array[sizeIndex] = newChild;
  }
  return editable;
};

var DONE = {};

function iterateList(list, reverse) {
  var left = list._origin;
  var right = list._capacity;
  var tailPos = getTailOffset(right);
  var tail = list._tail;

  return iterateNodeOrLeaf(list._root, list._level, 0);

  function iterateNodeOrLeaf(node, level, offset) {
    return level === 0
      ? iterateLeaf(node, offset)
      : iterateNode(node, level, offset);
  }

  function iterateLeaf(node, offset) {
    var array = offset === tailPos ? tail && tail.array : node && node.array;
    var from = offset > left ? 0 : left - offset;
    var to = right - offset;
    if (to > SIZE) {
      to = SIZE;
    }
    return function () {
      if (from === to) {
        return DONE;
      }
      var idx = reverse ? --to : from++;
      return array && array[idx];
    };
  }

  function iterateNode(node, level, offset) {
    var values;
    var array = node && node.array;
    var from = offset > left ? 0 : (left - offset) >> level;
    var to = ((right - offset) >> level) + 1;
    if (to > SIZE) {
      to = SIZE;
    }
    return function () {
      while (true) {
        if (values) {
          var value = values();
          if (value !== DONE) {
            return value;
          }
          values = null;
        }
        if (from === to) {
          return DONE;
        }
        var idx = reverse ? --to : from++;
        values = iterateNodeOrLeaf(
          array && array[idx],
          level - SHIFT,
          offset + (idx << level)
        );
      }
    };
  }
}

function makeList(origin, capacity, level, root, tail, ownerID, hash) {
  var list = Object.create(ListPrototype);
  list.size = capacity - origin;
  list._origin = origin;
  list._capacity = capacity;
  list._level = level;
  list._root = root;
  list._tail = tail;
  list.__ownerID = ownerID;
  list.__hash = hash;
  list.__altered = false;
  return list;
}

var EMPTY_LIST;
function emptyList() {
  return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));
}

function updateList(list, index, value) {
  index = wrapIndex(list, index);

  if (index !== index) {
    return list;
  }

  if (index >= list.size || index < 0) {
    return list.withMutations(function (list) {
      index < 0
        ? setListBounds(list, index).set(0, value)
        : setListBounds(list, 0, index + 1).set(index, value);
    });
  }

  index += list._origin;

  var newTail = list._tail;
  var newRoot = list._root;
  var didAlter = MakeRef();
  if (index >= getTailOffset(list._capacity)) {
    newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);
  } else {
    newRoot = updateVNode(
      newRoot,
      list.__ownerID,
      list._level,
      index,
      value,
      didAlter
    );
  }

  if (!didAlter.value) {
    return list;
  }

  if (list.__ownerID) {
    list._root = newRoot;
    list._tail = newTail;
    list.__hash = undefined;
    list.__altered = true;
    return list;
  }
  return makeList(list._origin, list._capacity, list._level, newRoot, newTail);
}

function updateVNode(node, ownerID, level, index, value, didAlter) {
  var idx = (index >>> level) & MASK;
  var nodeHas = node && idx < node.array.length;
  if (!nodeHas && value === undefined) {
    return node;
  }

  var newNode;

  if (level > 0) {
    var lowerNode = node && node.array[idx];
    var newLowerNode = updateVNode(
      lowerNode,
      ownerID,
      level - SHIFT,
      index,
      value,
      didAlter
    );
    if (newLowerNode === lowerNode) {
      return node;
    }
    newNode = editableVNode(node, ownerID);
    newNode.array[idx] = newLowerNode;
    return newNode;
  }

  if (nodeHas && node.array[idx] === value) {
    return node;
  }

  if (didAlter) {
    SetRef(didAlter);
  }

  newNode = editableVNode(node, ownerID);
  if (value === undefined && idx === newNode.array.length - 1) {
    newNode.array.pop();
  } else {
    newNode.array[idx] = value;
  }
  return newNode;
}

function editableVNode(node, ownerID) {
  if (ownerID && node && ownerID === node.ownerID) {
    return node;
  }
  return new VNode(node ? node.array.slice() : [], ownerID);
}

function listNodeFor(list, rawIndex) {
  if (rawIndex >= getTailOffset(list._capacity)) {
    return list._tail;
  }
  if (rawIndex < 1 << (list._level + SHIFT)) {
    var node = list._root;
    var level = list._level;
    while (node && level > 0) {
      node = node.array[(rawIndex >>> level) & MASK];
      level -= SHIFT;
    }
    return node;
  }
}

function setListBounds(list, begin, end) {
  // Sanitize begin & end using this shorthand for ToInt32(argument)
  // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32
  if (begin !== undefined) {
    begin |= 0;
  }
  if (end !== undefined) {
    end |= 0;
  }
  var owner = list.__ownerID || new OwnerID();
  var oldOrigin = list._origin;
  var oldCapacity = list._capacity;
  var newOrigin = oldOrigin + begin;
  var newCapacity =
    end === undefined
      ? oldCapacity
      : end < 0
      ? oldCapacity + end
      : oldOrigin + end;
  if (newOrigin === oldOrigin && newCapacity === oldCapacity) {
    return list;
  }

  // If it's going to end after it starts, it's empty.
  if (newOrigin >= newCapacity) {
    return list.clear();
  }

  var newLevel = list._level;
  var newRoot = list._root;

  // New origin might need creating a higher root.
  var offsetShift = 0;
  while (newOrigin + offsetShift < 0) {
    newRoot = new VNode(
      newRoot && newRoot.array.length ? [undefined, newRoot] : [],
      owner
    );
    newLevel += SHIFT;
    offsetShift += 1 << newLevel;
  }
  if (offsetShift) {
    newOrigin += offsetShift;
    oldOrigin += offsetShift;
    newCapacity += offsetShift;
    oldCapacity += offsetShift;
  }

  var oldTailOffset = getTailOffset(oldCapacity);
  var newTailOffset = getTailOffset(newCapacity);

  // New size might need creating a higher root.
  while (newTailOffset >= 1 << (newLevel + SHIFT)) {
    newRoot = new VNode(
      newRoot && newRoot.array.length ? [newRoot] : [],
      owner
    );
    newLevel += SHIFT;
  }

  // Locate or create the new tail.
  var oldTail = list._tail;
  var newTail =
    newTailOffset < oldTailOffset
      ? listNodeFor(list, newCapacity - 1)
      : newTailOffset > oldTailOffset
      ? new VNode([], owner)
      : oldTail;

  // Merge Tail into tree.
  if (
    oldTail &&
    newTailOffset > oldTailOffset &&
    newOrigin < oldCapacity &&
    oldTail.array.length
  ) {
    newRoot = editableVNode(newRoot, owner);
    var node = newRoot;
    for (var level = newLevel; level > SHIFT; level -= SHIFT) {
      var idx = (oldTailOffset >>> level) & MASK;
      node = node.array[idx] = editableVNode(node.array[idx], owner);
    }
    node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;
  }

  // If the size has been reduced, there's a chance the tail needs to be trimmed.
  if (newCapacity < oldCapacity) {
    newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);
  }

  // If the new origin is within the tail, then we do not need a root.
  if (newOrigin >= newTailOffset) {
    newOrigin -= newTailOffset;
    newCapacity -= newTailOffset;
    newLevel = SHIFT;
    newRoot = null;
    newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);

    // Otherwise, if the root has been trimmed, garbage collect.
  } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {
    offsetShift = 0;

    // Identify the new top root node of the subtree of the old root.
    while (newRoot) {
      var beginIndex = (newOrigin >>> newLevel) & MASK;
      if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {
        break;
      }
      if (beginIndex) {
        offsetShift += (1 << newLevel) * beginIndex;
      }
      newLevel -= SHIFT;
      newRoot = newRoot.array[beginIndex];
    }

    // Trim the new sides of the new root.
    if (newRoot && newOrigin > oldOrigin) {
      newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);
    }
    if (newRoot && newTailOffset < oldTailOffset) {
      newRoot = newRoot.removeAfter(
        owner,
        newLevel,
        newTailOffset - offsetShift
      );
    }
    if (offsetShift) {
      newOrigin -= offsetShift;
      newCapacity -= offsetShift;
    }
  }

  if (list.__ownerID) {
    list.size = newCapacity - newOrigin;
    list._origin = newOrigin;
    list._capacity = newCapacity;
    list._level = newLevel;
    list._root = newRoot;
    list._tail = newTail;
    list.__hash = undefined;
    list.__altered = true;
    return list;
  }
  return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);
}

function getTailOffset(size) {
  return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;
}

var OrderedMap = /*@__PURE__*/(function (Map) {
  function OrderedMap(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptyOrderedMap()
      : isOrderedMap(value)
      ? value
      : emptyOrderedMap().withMutations(function (map) {
          var iter = KeyedCollection(value);
          assertNotInfinite(iter.size);
          iter.forEach(function (v, k) { return map.set(k, v); });
        });
  }

  if ( Map ) OrderedMap.__proto__ = Map;
  OrderedMap.prototype = Object.create( Map && Map.prototype );
  OrderedMap.prototype.constructor = OrderedMap;

  OrderedMap.of = function of (/*...values*/) {
    return this(arguments);
  };

  OrderedMap.prototype.toString = function toString () {
    return this.__toString('OrderedMap {', '}');
  };

  // @pragma Access

  OrderedMap.prototype.get = function get (k, notSetValue) {
    var index = this._map.get(k);
    return index !== undefined ? this._list.get(index)[1] : notSetValue;
  };

  // @pragma Modification

  OrderedMap.prototype.clear = function clear () {
    if (this.size === 0) {
      return this;
    }
    if (this.__ownerID) {
      this.size = 0;
      this._map.clear();
      this._list.clear();
      this.__altered = true;
      return this;
    }
    return emptyOrderedMap();
  };

  OrderedMap.prototype.set = function set (k, v) {
    return updateOrderedMap(this, k, v);
  };

  OrderedMap.prototype.remove = function remove (k) {
    return updateOrderedMap(this, k, NOT_SET);
  };

  OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    return this._list.__iterate(
      function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },
      reverse
    );
  };

  OrderedMap.prototype.__iterator = function __iterator (type, reverse) {
    return this._list.fromEntrySeq().__iterator(type, reverse);
  };

  OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {
    if (ownerID === this.__ownerID) {
      return this;
    }
    var newMap = this._map.__ensureOwner(ownerID);
    var newList = this._list.__ensureOwner(ownerID);
    if (!ownerID) {
      if (this.size === 0) {
        return emptyOrderedMap();
      }
      this.__ownerID = ownerID;
      this.__altered = false;
      this._map = newMap;
      this._list = newList;
      return this;
    }
    return makeOrderedMap(newMap, newList, ownerID, this.__hash);
  };

  return OrderedMap;
}(Map));

OrderedMap.isOrderedMap = isOrderedMap;

OrderedMap.prototype[IS_ORDERED_SYMBOL] = true;
OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;

function makeOrderedMap(map, list, ownerID, hash) {
  var omap = Object.create(OrderedMap.prototype);
  omap.size = map ? map.size : 0;
  omap._map = map;
  omap._list = list;
  omap.__ownerID = ownerID;
  omap.__hash = hash;
  omap.__altered = false;
  return omap;
}

var EMPTY_ORDERED_MAP;
function emptyOrderedMap() {
  return (
    EMPTY_ORDERED_MAP ||
    (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))
  );
}

function updateOrderedMap(omap, k, v) {
  var map = omap._map;
  var list = omap._list;
  var i = map.get(k);
  var has = i !== undefined;
  var newMap;
  var newList;
  if (v === NOT_SET) {
    // removed
    if (!has) {
      return omap;
    }
    if (list.size >= SIZE && list.size >= map.size * 2) {
      newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });
      newMap = newList
        .toKeyedSeq()
        .map(function (entry) { return entry[0]; })
        .flip()
        .toMap();
      if (omap.__ownerID) {
        newMap.__ownerID = newList.__ownerID = omap.__ownerID;
      }
    } else {
      newMap = map.remove(k);
      newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);
    }
  } else if (has) {
    if (v === list.get(i)[1]) {
      return omap;
    }
    newMap = map;
    newList = list.set(i, [k, v]);
  } else {
    newMap = map.set(k, list.size);
    newList = list.set(list.size, [k, v]);
  }
  if (omap.__ownerID) {
    omap.size = newMap.size;
    omap._map = newMap;
    omap._list = newList;
    omap.__hash = undefined;
    omap.__altered = true;
    return omap;
  }
  return makeOrderedMap(newMap, newList);
}

var IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';

function isStack(maybeStack) {
  return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);
}

var Stack = /*@__PURE__*/(function (IndexedCollection) {
  function Stack(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptyStack()
      : isStack(value)
      ? value
      : emptyStack().pushAll(value);
  }

  if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;
  Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );
  Stack.prototype.constructor = Stack;

  Stack.of = function of (/*...values*/) {
    return this(arguments);
  };

  Stack.prototype.toString = function toString () {
    return this.__toString('Stack [', ']');
  };

  // @pragma Access

  Stack.prototype.get = function get (index, notSetValue) {
    var head = this._head;
    index = wrapIndex(this, index);
    while (head && index--) {
      head = head.next;
    }
    return head ? head.value : notSetValue;
  };

  Stack.prototype.peek = function peek () {
    return this._head && this._head.value;
  };

  // @pragma Modification

  Stack.prototype.push = function push (/*...values*/) {
    var arguments$1 = arguments;

    if (arguments.length === 0) {
      return this;
    }
    var newSize = this.size + arguments.length;
    var head = this._head;
    for (var ii = arguments.length - 1; ii >= 0; ii--) {
      head = {
        value: arguments$1[ii],
        next: head,
      };
    }
    if (this.__ownerID) {
      this.size = newSize;
      this._head = head;
      this.__hash = undefined;
      this.__altered = true;
      return this;
    }
    return makeStack(newSize, head);
  };

  Stack.prototype.pushAll = function pushAll (iter) {
    iter = IndexedCollection(iter);
    if (iter.size === 0) {
      return this;
    }
    if (this.size === 0 && isStack(iter)) {
      return iter;
    }
    assertNotInfinite(iter.size);
    var newSize = this.size;
    var head = this._head;
    iter.__iterate(function (value) {
      newSize++;
      head = {
        value: value,
        next: head,
      };
    }, /* reverse */ true);
    if (this.__ownerID) {
      this.size = newSize;
      this._head = head;
      this.__hash = undefined;
      this.__altered = true;
      return this;
    }
    return makeStack(newSize, head);
  };

  Stack.prototype.pop = function pop () {
    return this.slice(1);
  };

  Stack.prototype.clear = function clear () {
    if (this.size === 0) {
      return this;
    }
    if (this.__ownerID) {
      this.size = 0;
      this._head = undefined;
      this.__hash = undefined;
      this.__altered = true;
      return this;
    }
    return emptyStack();
  };

  Stack.prototype.slice = function slice (begin, end) {
    if (wholeSlice(begin, end, this.size)) {
      return this;
    }
    var resolvedBegin = resolveBegin(begin, this.size);
    var resolvedEnd = resolveEnd(end, this.size);
    if (resolvedEnd !== this.size) {
      // super.slice(begin, end);
      return IndexedCollection.prototype.slice.call(this, begin, end);
    }
    var newSize = this.size - resolvedBegin;
    var head = this._head;
    while (resolvedBegin--) {
      head = head.next;
    }
    if (this.__ownerID) {
      this.size = newSize;
      this._head = head;
      this.__hash = undefined;
      this.__altered = true;
      return this;
    }
    return makeStack(newSize, head);
  };

  // @pragma Mutability

  Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {
    if (ownerID === this.__ownerID) {
      return this;
    }
    if (!ownerID) {
      if (this.size === 0) {
        return emptyStack();
      }
      this.__ownerID = ownerID;
      this.__altered = false;
      return this;
    }
    return makeStack(this.size, this._head, ownerID, this.__hash);
  };

  // @pragma Iteration

  Stack.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    if (reverse) {
      return new ArraySeq(this.toArray()).__iterate(
        function (v, k) { return fn(v, k, this$1$1); },
        reverse
      );
    }
    var iterations = 0;
    var node = this._head;
    while (node) {
      if (fn(node.value, iterations++, this) === false) {
        break;
      }
      node = node.next;
    }
    return iterations;
  };

  Stack.prototype.__iterator = function __iterator (type, reverse) {
    if (reverse) {
      return new ArraySeq(this.toArray()).__iterator(type, reverse);
    }
    var iterations = 0;
    var node = this._head;
    return new Iterator(function () {
      if (node) {
        var value = node.value;
        node = node.next;
        return iteratorValue(type, iterations++, value);
      }
      return iteratorDone();
    });
  };

  return Stack;
}(IndexedCollection));

Stack.isStack = isStack;

var StackPrototype = Stack.prototype;
StackPrototype[IS_STACK_SYMBOL] = true;
StackPrototype.shift = StackPrototype.pop;
StackPrototype.unshift = StackPrototype.push;
StackPrototype.unshiftAll = StackPrototype.pushAll;
StackPrototype.withMutations = withMutations;
StackPrototype.wasAltered = wasAltered;
StackPrototype.asImmutable = asImmutable;
StackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;
StackPrototype['@@transducer/step'] = function (result, arr) {
  return result.unshift(arr);
};
StackPrototype['@@transducer/result'] = function (obj) {
  return obj.asImmutable();
};

function makeStack(size, head, ownerID, hash) {
  var map = Object.create(StackPrototype);
  map.size = size;
  map._head = head;
  map.__ownerID = ownerID;
  map.__hash = hash;
  map.__altered = false;
  return map;
}

var EMPTY_STACK;
function emptyStack() {
  return EMPTY_STACK || (EMPTY_STACK = makeStack(0));
}

var IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';

function isSet(maybeSet) {
  return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);
}

function isOrderedSet(maybeOrderedSet) {
  return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);
}

function deepEqual(a, b) {
  if (a === b) {
    return true;
  }

  if (
    !isCollection(b) ||
    (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||
    (a.__hash !== undefined &&
      b.__hash !== undefined &&
      a.__hash !== b.__hash) ||
    isKeyed(a) !== isKeyed(b) ||
    isIndexed(a) !== isIndexed(b) ||
    isOrdered(a) !== isOrdered(b)
  ) {
    return false;
  }

  if (a.size === 0 && b.size === 0) {
    return true;
  }

  var notAssociative = !isAssociative(a);

  if (isOrdered(a)) {
    var entries = a.entries();
    return (
      b.every(function (v, k) {
        var entry = entries.next().value;
        return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));
      }) && entries.next().done
    );
  }

  var flipped = false;

  if (a.size === undefined) {
    if (b.size === undefined) {
      if (typeof a.cacheResult === 'function') {
        a.cacheResult();
      }
    } else {
      flipped = true;
      var _ = a;
      a = b;
      b = _;
    }
  }

  var allEqual = true;
  var bSize = b.__iterate(function (v, k) {
    if (
      notAssociative
        ? !a.has(v)
        : flipped
        ? !is(v, a.get(k, NOT_SET))
        : !is(a.get(k, NOT_SET), v)
    ) {
      allEqual = false;
      return false;
    }
  });

  return allEqual && a.size === bSize;
}

function mixin(ctor, methods) {
  var keyCopier = function (key) {
    ctor.prototype[key] = methods[key];
  };
  Object.keys(methods).forEach(keyCopier);
  Object.getOwnPropertySymbols &&
    Object.getOwnPropertySymbols(methods).forEach(keyCopier);
  return ctor;
}

function toJS(value) {
  if (!value || typeof value !== 'object') {
    return value;
  }
  if (!isCollection(value)) {
    if (!isDataStructure(value)) {
      return value;
    }
    value = Seq(value);
  }
  if (isKeyed(value)) {
    var result$1 = {};
    value.__iterate(function (v, k) {
      result$1[k] = toJS(v);
    });
    return result$1;
  }
  var result = [];
  value.__iterate(function (v) {
    result.push(toJS(v));
  });
  return result;
}

var Set = /*@__PURE__*/(function (SetCollection) {
  function Set(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptySet()
      : isSet(value) && !isOrdered(value)
      ? value
      : emptySet().withMutations(function (set) {
          var iter = SetCollection(value);
          assertNotInfinite(iter.size);
          iter.forEach(function (v) { return set.add(v); });
        });
  }

  if ( SetCollection ) Set.__proto__ = SetCollection;
  Set.prototype = Object.create( SetCollection && SetCollection.prototype );
  Set.prototype.constructor = Set;

  Set.of = function of (/*...values*/) {
    return this(arguments);
  };

  Set.fromKeys = function fromKeys (value) {
    return this(KeyedCollection(value).keySeq());
  };

  Set.intersect = function intersect (sets) {
    sets = Collection(sets).toArray();
    return sets.length
      ? SetPrototype.intersect.apply(Set(sets.pop()), sets)
      : emptySet();
  };

  Set.union = function union (sets) {
    sets = Collection(sets).toArray();
    return sets.length
      ? SetPrototype.union.apply(Set(sets.pop()), sets)
      : emptySet();
  };

  Set.prototype.toString = function toString () {
    return this.__toString('Set {', '}');
  };

  // @pragma Access

  Set.prototype.has = function has (value) {
    return this._map.has(value);
  };

  // @pragma Modification

  Set.prototype.add = function add (value) {
    return updateSet(this, this._map.set(value, value));
  };

  Set.prototype.remove = function remove (value) {
    return updateSet(this, this._map.remove(value));
  };

  Set.prototype.clear = function clear () {
    return updateSet(this, this._map.clear());
  };

  // @pragma Composition

  Set.prototype.map = function map (mapper, context) {
    var this$1$1 = this;

    // keep track if the set is altered by the map function
    var didChanges = false;

    var newMap = updateSet(
      this,
      this._map.mapEntries(function (ref) {
        var v = ref[1];

        var mapped = mapper.call(context, v, v, this$1$1);

        if (mapped !== v) {
          didChanges = true;
        }

        return [mapped, mapped];
      }, context)
    );

    return didChanges ? newMap : this;
  };

  Set.prototype.union = function union () {
    var iters = [], len = arguments.length;
    while ( len-- ) iters[ len ] = arguments[ len ];

    iters = iters.filter(function (x) { return x.size !== 0; });
    if (iters.length === 0) {
      return this;
    }
    if (this.size === 0 && !this.__ownerID && iters.length === 1) {
      return this.constructor(iters[0]);
    }
    return this.withMutations(function (set) {
      for (var ii = 0; ii < iters.length; ii++) {
        if (typeof iters[ii] === 'string') {
          set.add(iters[ii]);
        } else {
          SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });
        }
      }
    });
  };

  Set.prototype.intersect = function intersect () {
    var iters = [], len = arguments.length;
    while ( len-- ) iters[ len ] = arguments[ len ];

    if (iters.length === 0) {
      return this;
    }
    iters = iters.map(function (iter) { return SetCollection(iter); });
    var toRemove = [];
    this.forEach(function (value) {
      if (!iters.every(function (iter) { return iter.includes(value); })) {
        toRemove.push(value);
      }
    });
    return this.withMutations(function (set) {
      toRemove.forEach(function (value) {
        set.remove(value);
      });
    });
  };

  Set.prototype.subtract = function subtract () {
    var iters = [], len = arguments.length;
    while ( len-- ) iters[ len ] = arguments[ len ];

    if (iters.length === 0) {
      return this;
    }
    iters = iters.map(function (iter) { return SetCollection(iter); });
    var toRemove = [];
    this.forEach(function (value) {
      if (iters.some(function (iter) { return iter.includes(value); })) {
        toRemove.push(value);
      }
    });
    return this.withMutations(function (set) {
      toRemove.forEach(function (value) {
        set.remove(value);
      });
    });
  };

  Set.prototype.sort = function sort (comparator) {
    // Late binding
    return OrderedSet(sortFactory(this, comparator));
  };

  Set.prototype.sortBy = function sortBy (mapper, comparator) {
    // Late binding
    return OrderedSet(sortFactory(this, comparator, mapper));
  };

  Set.prototype.wasAltered = function wasAltered () {
    return this._map.wasAltered();
  };

  Set.prototype.__iterate = function __iterate (fn, reverse) {
    var this$1$1 = this;

    return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);
  };

  Set.prototype.__iterator = function __iterator (type, reverse) {
    return this._map.__iterator(type, reverse);
  };

  Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {
    if (ownerID === this.__ownerID) {
      return this;
    }
    var newMap = this._map.__ensureOwner(ownerID);
    if (!ownerID) {
      if (this.size === 0) {
        return this.__empty();
      }
      this.__ownerID = ownerID;
      this._map = newMap;
      return this;
    }
    return this.__make(newMap, ownerID);
  };

  return Set;
}(SetCollection));

Set.isSet = isSet;

var SetPrototype = Set.prototype;
SetPrototype[IS_SET_SYMBOL] = true;
SetPrototype[DELETE] = SetPrototype.remove;
SetPrototype.merge = SetPrototype.concat = SetPrototype.union;
SetPrototype.withMutations = withMutations;
SetPrototype.asImmutable = asImmutable;
SetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;
SetPrototype['@@transducer/step'] = function (result, arr) {
  return result.add(arr);
};
SetPrototype['@@transducer/result'] = function (obj) {
  return obj.asImmutable();
};

SetPrototype.__empty = emptySet;
SetPrototype.__make = makeSet;

function updateSet(set, newMap) {
  if (set.__ownerID) {
    set.size = newMap.size;
    set._map = newMap;
    return set;
  }
  return newMap === set._map
    ? set
    : newMap.size === 0
    ? set.__empty()
    : set.__make(newMap);
}

function makeSet(map, ownerID) {
  var set = Object.create(SetPrototype);
  set.size = map ? map.size : 0;
  set._map = map;
  set.__ownerID = ownerID;
  return set;
}

var EMPTY_SET;
function emptySet() {
  return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));
}

/**
 * Returns a lazy seq of nums from start (inclusive) to end
 * (exclusive), by step, where start defaults to 0, step to 1, and end to
 * infinity. When start is equal to end, returns empty list.
 */
var Range = /*@__PURE__*/(function (IndexedSeq) {
  function Range(start, end, step) {
    if (!(this instanceof Range)) {
      // eslint-disable-next-line no-constructor-return
      return new Range(start, end, step);
    }
    invariant(step !== 0, 'Cannot step a Range by 0');
    start = start || 0;
    if (end === undefined) {
      end = Infinity;
    }
    step = step === undefined ? 1 : Math.abs(step);
    if (end < start) {
      step = -step;
    }
    this._start = start;
    this._end = end;
    this._step = step;
    this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);
    if (this.size === 0) {
      if (EMPTY_RANGE) {
        // eslint-disable-next-line no-constructor-return
        return EMPTY_RANGE;
      }
      EMPTY_RANGE = this;
    }
  }

  if ( IndexedSeq ) Range.__proto__ = IndexedSeq;
  Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );
  Range.prototype.constructor = Range;

  Range.prototype.toString = function toString () {
    if (this.size === 0) {
      return 'Range []';
    }
    return (
      'Range [ ' +
      this._start +
      '...' +
      this._end +
      (this._step !== 1 ? ' by ' + this._step : '') +
      ' ]'
    );
  };

  Range.prototype.get = function get (index, notSetValue) {
    return this.has(index)
      ? this._start + wrapIndex(this, index) * this._step
      : notSetValue;
  };

  Range.prototype.includes = function includes (searchValue) {
    var possibleIndex = (searchValue - this._start) / this._step;
    return (
      possibleIndex >= 0 &&
      possibleIndex < this.size &&
      possibleIndex === Math.floor(possibleIndex)
    );
  };

  Range.prototype.slice = function slice (begin, end) {
    if (wholeSlice(begin, end, this.size)) {
      return this;
    }
    begin = resolveBegin(begin, this.size);
    end = resolveEnd(end, this.size);
    if (end <= begin) {
      return new Range(0, 0);
    }
    return new Range(
      this.get(begin, this._end),
      this.get(end, this._end),
      this._step
    );
  };

  Range.prototype.indexOf = function indexOf (searchValue) {
    var offsetValue = searchValue - this._start;
    if (offsetValue % this._step === 0) {
      var index = offsetValue / this._step;
      if (index >= 0 && index < this.size) {
        return index;
      }
    }
    return -1;
  };

  Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {
    return this.indexOf(searchValue);
  };

  Range.prototype.__iterate = function __iterate (fn, reverse) {
    var size = this.size;
    var step = this._step;
    var value = reverse ? this._start + (size - 1) * step : this._start;
    var i = 0;
    while (i !== size) {
      if (fn(value, reverse ? size - ++i : i++, this) === false) {
        break;
      }
      value += reverse ? -step : step;
    }
    return i;
  };

  Range.prototype.__iterator = function __iterator (type, reverse) {
    var size = this.size;
    var step = this._step;
    var value = reverse ? this._start + (size - 1) * step : this._start;
    var i = 0;
    return new Iterator(function () {
      if (i === size) {
        return iteratorDone();
      }
      var v = value;
      value += reverse ? -step : step;
      return iteratorValue(type, reverse ? size - ++i : i++, v);
    });
  };

  Range.prototype.equals = function equals (other) {
    return other instanceof Range
      ? this._start === other._start &&
          this._end === other._end &&
          this._step === other._step
      : deepEqual(this, other);
  };

  return Range;
}(IndexedSeq));

var EMPTY_RANGE;

function getIn$1(collection, searchKeyPath, notSetValue) {
  var keyPath = coerceKeyPath(searchKeyPath);
  var i = 0;
  while (i !== keyPath.length) {
    collection = get(collection, keyPath[i++], NOT_SET);
    if (collection === NOT_SET) {
      return notSetValue;
    }
  }
  return collection;
}

function getIn(searchKeyPath, notSetValue) {
  return getIn$1(this, searchKeyPath, notSetValue);
}

function hasIn$1(collection, keyPath) {
  return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;
}

function hasIn(searchKeyPath) {
  return hasIn$1(this, searchKeyPath);
}

function toObject() {
  assertNotInfinite(this.size);
  var object = {};
  this.__iterate(function (v, k) {
    object[k] = v;
  });
  return object;
}

// Note: all of these methods are deprecated.
Collection.isIterable = isCollection;
Collection.isKeyed = isKeyed;
Collection.isIndexed = isIndexed;
Collection.isAssociative = isAssociative;
Collection.isOrdered = isOrdered;

Collection.Iterator = Iterator;

mixin(Collection, {
  // ### Conversion to other types

  toArray: function toArray() {
    assertNotInfinite(this.size);
    var array = new Array(this.size || 0);
    var useTuples = isKeyed(this);
    var i = 0;
    this.__iterate(function (v, k) {
      // Keyed collections produce an array of tuples.
      array[i++] = useTuples ? [k, v] : v;
    });
    return array;
  },

  toIndexedSeq: function toIndexedSeq() {
    return new ToIndexedSequence(this);
  },

  toJS: function toJS$1() {
    return toJS(this);
  },

  toKeyedSeq: function toKeyedSeq() {
    return new ToKeyedSequence(this, true);
  },

  toMap: function toMap() {
    // Use Late Binding here to solve the circular dependency.
    return Map(this.toKeyedSeq());
  },

  toObject: toObject,

  toOrderedMap: function toOrderedMap() {
    // Use Late Binding here to solve the circular dependency.
    return OrderedMap(this.toKeyedSeq());
  },

  toOrderedSet: function toOrderedSet() {
    // Use Late Binding here to solve the circular dependency.
    return OrderedSet(isKeyed(this) ? this.valueSeq() : this);
  },

  toSet: function toSet() {
    // Use Late Binding here to solve the circular dependency.
    return Set(isKeyed(this) ? this.valueSeq() : this);
  },

  toSetSeq: function toSetSeq() {
    return new ToSetSequence(this);
  },

  toSeq: function toSeq() {
    return isIndexed(this)
      ? this.toIndexedSeq()
      : isKeyed(this)
      ? this.toKeyedSeq()
      : this.toSetSeq();
  },

  toStack: function toStack() {
    // Use Late Binding here to solve the circular dependency.
    return Stack(isKeyed(this) ? this.valueSeq() : this);
  },

  toList: function toList() {
    // Use Late Binding here to solve the circular dependency.
    return List(isKeyed(this) ? this.valueSeq() : this);
  },

  // ### Common JavaScript methods and properties

  toString: function toString() {
    return '[Collection]';
  },

  __toString: function __toString(head, tail) {
    if (this.size === 0) {
      return head + tail;
    }
    return (
      head +
      ' ' +
      this.toSeq().map(this.__toStringMapper).join(', ') +
      ' ' +
      tail
    );
  },

  // ### ES6 Collection methods (ES6 Array and Map)

  concat: function concat() {
    var values = [], len = arguments.length;
    while ( len-- ) values[ len ] = arguments[ len ];

    return reify(this, concatFactory(this, values));
  },

  includes: function includes(searchValue) {
    return this.some(function (value) { return is(value, searchValue); });
  },

  entries: function entries() {
    return this.__iterator(ITERATE_ENTRIES);
  },

  every: function every(predicate, context) {
    assertNotInfinite(this.size);
    var returnValue = true;
    this.__iterate(function (v, k, c) {
      if (!predicate.call(context, v, k, c)) {
        returnValue = false;
        return false;
      }
    });
    return returnValue;
  },

  filter: function filter(predicate, context) {
    return reify(this, filterFactory(this, predicate, context, true));
  },

  partition: function partition(predicate, context) {
    return partitionFactory(this, predicate, context);
  },

  find: function find(predicate, context, notSetValue) {
    var entry = this.findEntry(predicate, context);
    return entry ? entry[1] : notSetValue;
  },

  forEach: function forEach(sideEffect, context) {
    assertNotInfinite(this.size);
    return this.__iterate(context ? sideEffect.bind(context) : sideEffect);
  },

  join: function join(separator) {
    assertNotInfinite(this.size);
    separator = separator !== undefined ? '' + separator : ',';
    var joined = '';
    var isFirst = true;
    this.__iterate(function (v) {
      isFirst ? (isFirst = false) : (joined += separator);
      joined += v !== null && v !== undefined ? v.toString() : '';
    });
    return joined;
  },

  keys: function keys() {
    return this.__iterator(ITERATE_KEYS);
  },

  map: function map(mapper, context) {
    return reify(this, mapFactory(this, mapper, context));
  },

  reduce: function reduce$1(reducer, initialReduction, context) {
    return reduce(
      this,
      reducer,
      initialReduction,
      context,
      arguments.length < 2,
      false
    );
  },

  reduceRight: function reduceRight(reducer, initialReduction, context) {
    return reduce(
      this,
      reducer,
      initialReduction,
      context,
      arguments.length < 2,
      true
    );
  },

  reverse: function reverse() {
    return reify(this, reverseFactory(this, true));
  },

  slice: function slice(begin, end) {
    return reify(this, sliceFactory(this, begin, end, true));
  },

  some: function some(predicate, context) {
    assertNotInfinite(this.size);
    var returnValue = false;
    this.__iterate(function (v, k, c) {
      if (predicate.call(context, v, k, c)) {
        returnValue = true;
        return false;
      }
    });
    return returnValue;
  },

  sort: function sort(comparator) {
    return reify(this, sortFactory(this, comparator));
  },

  values: function values() {
    return this.__iterator(ITERATE_VALUES);
  },

  // ### More sequential methods

  butLast: function butLast() {
    return this.slice(0, -1);
  },

  isEmpty: function isEmpty() {
    return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });
  },

  count: function count(predicate, context) {
    return ensureSize(
      predicate ? this.toSeq().filter(predicate, context) : this
    );
  },

  countBy: function countBy(grouper, context) {
    return countByFactory(this, grouper, context);
  },

  equals: function equals(other) {
    return deepEqual(this, other);
  },

  entrySeq: function entrySeq() {
    var collection = this;
    if (collection._cache) {
      // We cache as an entries array, so we can just return the cache!
      return new ArraySeq(collection._cache);
    }
    var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();
    entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };
    return entriesSequence;
  },

  filterNot: function filterNot(predicate, context) {
    return this.filter(not(predicate), context);
  },

  findEntry: function findEntry(predicate, context, notSetValue) {
    var found = notSetValue;
    this.__iterate(function (v, k, c) {
      if (predicate.call(context, v, k, c)) {
        found = [k, v];
        return false;
      }
    });
    return found;
  },

  findKey: function findKey(predicate, context) {
    var entry = this.findEntry(predicate, context);
    return entry && entry[0];
  },

  findLast: function findLast(predicate, context, notSetValue) {
    return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);
  },

  findLastEntry: function findLastEntry(predicate, context, notSetValue) {
    return this.toKeyedSeq()
      .reverse()
      .findEntry(predicate, context, notSetValue);
  },

  findLastKey: function findLastKey(predicate, context) {
    return this.toKeyedSeq().reverse().findKey(predicate, context);
  },

  first: function first(notSetValue) {
    return this.find(returnTrue, null, notSetValue);
  },

  flatMap: function flatMap(mapper, context) {
    return reify(this, flatMapFactory(this, mapper, context));
  },

  flatten: function flatten(depth) {
    return reify(this, flattenFactory(this, depth, true));
  },

  fromEntrySeq: function fromEntrySeq() {
    return new FromEntriesSequence(this);
  },

  get: function get(searchKey, notSetValue) {
    return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);
  },

  getIn: getIn,

  groupBy: function groupBy(grouper, context) {
    return groupByFactory(this, grouper, context);
  },

  has: function has(searchKey) {
    return this.get(searchKey, NOT_SET) !== NOT_SET;
  },

  hasIn: hasIn,

  isSubset: function isSubset(iter) {
    iter = typeof iter.includes === 'function' ? iter : Collection(iter);
    return this.every(function (value) { return iter.includes(value); });
  },

  isSuperset: function isSuperset(iter) {
    iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);
    return iter.isSubset(this);
  },

  keyOf: function keyOf(searchValue) {
    return this.findKey(function (value) { return is(value, searchValue); });
  },

  keySeq: function keySeq() {
    return this.toSeq().map(keyMapper).toIndexedSeq();
  },

  last: function last(notSetValue) {
    return this.toSeq().reverse().first(notSetValue);
  },

  lastKeyOf: function lastKeyOf(searchValue) {
    return this.toKeyedSeq().reverse().keyOf(searchValue);
  },

  max: function max(comparator) {
    return maxFactory(this, comparator);
  },

  maxBy: function maxBy(mapper, comparator) {
    return maxFactory(this, comparator, mapper);
  },

  min: function min(comparator) {
    return maxFactory(
      this,
      comparator ? neg(comparator) : defaultNegComparator
    );
  },

  minBy: function minBy(mapper, comparator) {
    return maxFactory(
      this,
      comparator ? neg(comparator) : defaultNegComparator,
      mapper
    );
  },

  rest: function rest() {
    return this.slice(1);
  },

  skip: function skip(amount) {
    return amount === 0 ? this : this.slice(Math.max(0, amount));
  },

  skipLast: function skipLast(amount) {
    return amount === 0 ? this : this.slice(0, -Math.max(0, amount));
  },

  skipWhile: function skipWhile(predicate, context) {
    return reify(this, skipWhileFactory(this, predicate, context, true));
  },

  skipUntil: function skipUntil(predicate, context) {
    return this.skipWhile(not(predicate), context);
  },

  sortBy: function sortBy(mapper, comparator) {
    return reify(this, sortFactory(this, comparator, mapper));
  },

  take: function take(amount) {
    return this.slice(0, Math.max(0, amount));
  },

  takeLast: function takeLast(amount) {
    return this.slice(-Math.max(0, amount));
  },

  takeWhile: function takeWhile(predicate, context) {
    return reify(this, takeWhileFactory(this, predicate, context));
  },

  takeUntil: function takeUntil(predicate, context) {
    return this.takeWhile(not(predicate), context);
  },

  update: function update(fn) {
    return fn(this);
  },

  valueSeq: function valueSeq() {
    return this.toIndexedSeq();
  },

  // ### Hashable Object

  hashCode: function hashCode() {
    return this.__hash || (this.__hash = hashCollection(this));
  },

  // ### Internal

  // abstract __iterate(fn, reverse)

  // abstract __iterator(type, reverse)
});

var CollectionPrototype = Collection.prototype;
CollectionPrototype[IS_COLLECTION_SYMBOL] = true;
CollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;
CollectionPrototype.toJSON = CollectionPrototype.toArray;
CollectionPrototype.__toStringMapper = quoteString;
CollectionPrototype.inspect = CollectionPrototype.toSource = function () {
  return this.toString();
};
CollectionPrototype.chain = CollectionPrototype.flatMap;
CollectionPrototype.contains = CollectionPrototype.includes;

mixin(KeyedCollection, {
  // ### More sequential methods

  flip: function flip() {
    return reify(this, flipFactory(this));
  },

  mapEntries: function mapEntries(mapper, context) {
    var this$1$1 = this;

    var iterations = 0;
    return reify(
      this,
      this.toSeq()
        .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })
        .fromEntrySeq()
    );
  },

  mapKeys: function mapKeys(mapper, context) {
    var this$1$1 = this;

    return reify(
      this,
      this.toSeq()
        .flip()
        .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })
        .flip()
    );
  },
});

var KeyedCollectionPrototype = KeyedCollection.prototype;
KeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;
KeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;
KeyedCollectionPrototype.toJSON = toObject;
KeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };

mixin(IndexedCollection, {
  // ### Conversion to other types

  toKeyedSeq: function toKeyedSeq() {
    return new ToKeyedSequence(this, false);
  },

  // ### ES6 Collection methods (ES6 Array and Map)

  filter: function filter(predicate, context) {
    return reify(this, filterFactory(this, predicate, context, false));
  },

  findIndex: function findIndex(predicate, context) {
    var entry = this.findEntry(predicate, context);
    return entry ? entry[0] : -1;
  },

  indexOf: function indexOf(searchValue) {
    var key = this.keyOf(searchValue);
    return key === undefined ? -1 : key;
  },

  lastIndexOf: function lastIndexOf(searchValue) {
    var key = this.lastKeyOf(searchValue);
    return key === undefined ? -1 : key;
  },

  reverse: function reverse() {
    return reify(this, reverseFactory(this, false));
  },

  slice: function slice(begin, end) {
    return reify(this, sliceFactory(this, begin, end, false));
  },

  splice: function splice(index, removeNum /*, ...values*/) {
    var numArgs = arguments.length;
    removeNum = Math.max(removeNum || 0, 0);
    if (numArgs === 0 || (numArgs === 2 && !removeNum)) {
      return this;
    }
    // If index is negative, it should resolve relative to the size of the
    // collection. However size may be expensive to compute if not cached, so
    // only call count() if the number is in fact negative.
    index = resolveBegin(index, index < 0 ? this.count() : this.size);
    var spliced = this.slice(0, index);
    return reify(
      this,
      numArgs === 1
        ? spliced
        : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))
    );
  },

  // ### More collection methods

  findLastIndex: function findLastIndex(predicate, context) {
    var entry = this.findLastEntry(predicate, context);
    return entry ? entry[0] : -1;
  },

  first: function first(notSetValue) {
    return this.get(0, notSetValue);
  },

  flatten: function flatten(depth) {
    return reify(this, flattenFactory(this, depth, false));
  },

  get: function get(index, notSetValue) {
    index = wrapIndex(this, index);
    return index < 0 ||
      this.size === Infinity ||
      (this.size !== undefined && index > this.size)
      ? notSetValue
      : this.find(function (_, key) { return key === index; }, undefined, notSetValue);
  },

  has: function has(index) {
    index = wrapIndex(this, index);
    return (
      index >= 0 &&
      (this.size !== undefined
        ? this.size === Infinity || index < this.size
        : this.indexOf(index) !== -1)
    );
  },

  interpose: function interpose(separator) {
    return reify(this, interposeFactory(this, separator));
  },

  interleave: function interleave(/*...collections*/) {
    var collections = [this].concat(arrCopy(arguments));
    var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);
    var interleaved = zipped.flatten(true);
    if (zipped.size) {
      interleaved.size = zipped.size * collections.length;
    }
    return reify(this, interleaved);
  },

  keySeq: function keySeq() {
    return Range(0, this.size);
  },

  last: function last(notSetValue) {
    return this.get(-1, notSetValue);
  },

  skipWhile: function skipWhile(predicate, context) {
    return reify(this, skipWhileFactory(this, predicate, context, false));
  },

  zip: function zip(/*, ...collections */) {
    var collections = [this].concat(arrCopy(arguments));
    return reify(this, zipWithFactory(this, defaultZipper, collections));
  },

  zipAll: function zipAll(/*, ...collections */) {
    var collections = [this].concat(arrCopy(arguments));
    return reify(this, zipWithFactory(this, defaultZipper, collections, true));
  },

  zipWith: function zipWith(zipper /*, ...collections */) {
    var collections = arrCopy(arguments);
    collections[0] = this;
    return reify(this, zipWithFactory(this, zipper, collections));
  },
});

var IndexedCollectionPrototype = IndexedCollection.prototype;
IndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;
IndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;

mixin(SetCollection, {
  // ### ES6 Collection methods (ES6 Array and Map)

  get: function get(value, notSetValue) {
    return this.has(value) ? value : notSetValue;
  },

  includes: function includes(value) {
    return this.has(value);
  },

  // ### More sequential methods

  keySeq: function keySeq() {
    return this.valueSeq();
  },
});

var SetCollectionPrototype = SetCollection.prototype;
SetCollectionPrototype.has = CollectionPrototype.includes;
SetCollectionPrototype.contains = SetCollectionPrototype.includes;
SetCollectionPrototype.keys = SetCollectionPrototype.values;

// Mixin subclasses

mixin(KeyedSeq, KeyedCollectionPrototype);
mixin(IndexedSeq, IndexedCollectionPrototype);
mixin(SetSeq, SetCollectionPrototype);

// #pragma Helper functions

function reduce(collection, reducer, reduction, context, useFirst, reverse) {
  assertNotInfinite(collection.size);
  collection.__iterate(function (v, k, c) {
    if (useFirst) {
      useFirst = false;
      reduction = v;
    } else {
      reduction = reducer.call(context, reduction, v, k, c);
    }
  }, reverse);
  return reduction;
}

function keyMapper(v, k) {
  return k;
}

function entryMapper(v, k) {
  return [k, v];
}

function not(predicate) {
  return function () {
    return !predicate.apply(this, arguments);
  };
}

function neg(predicate) {
  return function () {
    return -predicate.apply(this, arguments);
  };
}

function defaultZipper() {
  return arrCopy(arguments);
}

function defaultNegComparator(a, b) {
  return a < b ? 1 : a > b ? -1 : 0;
}

function hashCollection(collection) {
  if (collection.size === Infinity) {
    return 0;
  }
  var ordered = isOrdered(collection);
  var keyed = isKeyed(collection);
  var h = ordered ? 1 : 0;
  var size = collection.__iterate(
    keyed
      ? ordered
        ? function (v, k) {
            h = (31 * h + hashMerge(hash(v), hash(k))) | 0;
          }
        : function (v, k) {
            h = (h + hashMerge(hash(v), hash(k))) | 0;
          }
      : ordered
      ? function (v) {
          h = (31 * h + hash(v)) | 0;
        }
      : function (v) {
          h = (h + hash(v)) | 0;
        }
  );
  return murmurHashOfSize(size, h);
}

function murmurHashOfSize(size, h) {
  h = imul(h, 0xcc9e2d51);
  h = imul((h << 15) | (h >>> -15), 0x1b873593);
  h = imul((h << 13) | (h >>> -13), 5);
  h = ((h + 0xe6546b64) | 0) ^ size;
  h = imul(h ^ (h >>> 16), 0x85ebca6b);
  h = imul(h ^ (h >>> 13), 0xc2b2ae35);
  h = smi(h ^ (h >>> 16));
  return h;
}

function hashMerge(a, b) {
  return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int
}

var OrderedSet = /*@__PURE__*/(function (Set) {
  function OrderedSet(value) {
    // eslint-disable-next-line no-constructor-return
    return value === undefined || value === null
      ? emptyOrderedSet()
      : isOrderedSet(value)
      ? value
      : emptyOrderedSet().withMutations(function (set) {
          var iter = SetCollection(value);
          assertNotInfinite(iter.size);
          iter.forEach(function (v) { return set.add(v); });
        });
  }

  if ( Set ) OrderedSet.__proto__ = Set;
  OrderedSet.prototype = Object.create( Set && Set.prototype );
  OrderedSet.prototype.constructor = OrderedSet;

  OrderedSet.of = function of (/*...values*/) {
    return this(arguments);
  };

  OrderedSet.fromKeys = function fromKeys (value) {
    return this(KeyedCollection(value).keySeq());
  };

  OrderedSet.prototype.toString = function toString () {
    return this.__toString('OrderedSet {', '}');
  };

  return OrderedSet;
}(Set));

OrderedSet.isOrderedSet = isOrderedSet;

var OrderedSetPrototype = OrderedSet.prototype;
OrderedSetPrototype[IS_ORDERED_SYMBOL] = true;
OrderedSetPrototype.zip = IndexedCollectionPrototype.zip;
OrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;
OrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;

OrderedSetPrototype.__empty = emptyOrderedSet;
OrderedSetPrototype.__make = makeOrderedSet;

function makeOrderedSet(map, ownerID) {
  var set = Object.create(OrderedSetPrototype);
  set.size = map ? map.size : 0;
  set._map = map;
  set.__ownerID = ownerID;
  return set;
}

var EMPTY_ORDERED_SET;
function emptyOrderedSet() {
  return (
    EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))
  );
}

var PairSorting = {
  LeftThenRight: -1,
  RightThenLeft: +1,
};

function throwOnInvalidDefaultValues(defaultValues) {
  if (isRecord(defaultValues)) {
    throw new Error(
      'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'
    );
  }

  if (isImmutable(defaultValues)) {
    throw new Error(
      'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'
    );
  }

  if (defaultValues === null || typeof defaultValues !== 'object') {
    throw new Error(
      'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'
    );
  }
}

var Record = function Record(defaultValues, name) {
  var hasInitialized;

  throwOnInvalidDefaultValues(defaultValues);

  var RecordType = function Record(values) {
    var this$1$1 = this;

    if (values instanceof RecordType) {
      return values;
    }
    if (!(this instanceof RecordType)) {
      return new RecordType(values);
    }
    if (!hasInitialized) {
      hasInitialized = true;
      var keys = Object.keys(defaultValues);
      var indices = (RecordTypePrototype._indices = {});
      // Deprecated: left to attempt not to break any external code which
      // relies on a ._name property existing on record instances.
      // Use Record.getDescriptiveName() instead
      RecordTypePrototype._name = name;
      RecordTypePrototype._keys = keys;
      RecordTypePrototype._defaultValues = defaultValues;
      for (var i = 0; i < keys.length; i++) {
        var propName = keys[i];
        indices[propName] = i;
        if (RecordTypePrototype[propName]) {
          /* eslint-disable no-console */
          typeof console === 'object' &&
            console.warn &&
            console.warn(
              'Cannot define ' +
                recordName(this) +
                ' with property "' +
                propName +
                '" since that property name is part of the Record API.'
            );
          /* eslint-enable no-console */
        } else {
          setProp(RecordTypePrototype, propName);
        }
      }
    }
    this.__ownerID = undefined;
    this._values = List().withMutations(function (l) {
      l.setSize(this$1$1._keys.length);
      KeyedCollection(values).forEach(function (v, k) {
        l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);
      });
    });
    return this;
  };

  var RecordTypePrototype = (RecordType.prototype =
    Object.create(RecordPrototype));
  RecordTypePrototype.constructor = RecordType;

  if (name) {
    RecordType.displayName = name;
  }

  // eslint-disable-next-line no-constructor-return
  return RecordType;
};

Record.prototype.toString = function toString () {
  var str = recordName(this) + ' { ';
  var keys = this._keys;
  var k;
  for (var i = 0, l = keys.length; i !== l; i++) {
    k = keys[i];
    str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));
  }
  return str + ' }';
};

Record.prototype.equals = function equals (other) {
  return (
    this === other ||
    (isRecord(other) && recordSeq(this).equals(recordSeq(other)))
  );
};

Record.prototype.hashCode = function hashCode () {
  return recordSeq(this).hashCode();
};

// @pragma Access

Record.prototype.has = function has (k) {
  return this._indices.hasOwnProperty(k);
};

Record.prototype.get = function get (k, notSetValue) {
  if (!this.has(k)) {
    return notSetValue;
  }
  var index = this._indices[k];
  var value = this._values.get(index);
  return value === undefined ? this._defaultValues[k] : value;
};

// @pragma Modification

Record.prototype.set = function set (k, v) {
  if (this.has(k)) {
    var newValues = this._values.set(
      this._indices[k],
      v === this._defaultValues[k] ? undefined : v
    );
    if (newValues !== this._values && !this.__ownerID) {
      return makeRecord(this, newValues);
    }
  }
  return this;
};

Record.prototype.remove = function remove (k) {
  return this.set(k);
};

Record.prototype.clear = function clear () {
  var newValues = this._values.clear().setSize(this._keys.length);

  return this.__ownerID ? this : makeRecord(this, newValues);
};

Record.prototype.wasAltered = function wasAltered () {
  return this._values.wasAltered();
};

Record.prototype.toSeq = function toSeq () {
  return recordSeq(this);
};

Record.prototype.toJS = function toJS$1 () {
  return toJS(this);
};

Record.prototype.entries = function entries () {
  return this.__iterator(ITERATE_ENTRIES);
};

Record.prototype.__iterator = function __iterator (type, reverse) {
  return recordSeq(this).__iterator(type, reverse);
};

Record.prototype.__iterate = function __iterate (fn, reverse) {
  return recordSeq(this).__iterate(fn, reverse);
};

Record.prototype.__ensureOwner = function __ensureOwner (ownerID) {
  if (ownerID === this.__ownerID) {
    return this;
  }
  var newValues = this._values.__ensureOwner(ownerID);
  if (!ownerID) {
    this.__ownerID = ownerID;
    this._values = newValues;
    return this;
  }
  return makeRecord(this, newValues, ownerID);
};

Record.isRecord = isRecord;
Record.getDescriptiveName = recordName;
var RecordPrototype = Record.prototype;
RecordPrototype[IS_RECORD_SYMBOL] = true;
RecordPrototype[DELETE] = RecordPrototype.remove;
RecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;
RecordPrototype.getIn = getIn;
RecordPrototype.hasIn = CollectionPrototype.hasIn;
RecordPrototype.merge = merge$1;
RecordPrototype.mergeWith = mergeWith$1;
RecordPrototype.mergeIn = mergeIn;
RecordPrototype.mergeDeep = mergeDeep;
RecordPrototype.mergeDeepWith = mergeDeepWith;
RecordPrototype.mergeDeepIn = mergeDeepIn;
RecordPrototype.setIn = setIn;
RecordPrototype.update = update;
RecordPrototype.updateIn = updateIn;
RecordPrototype.withMutations = withMutations;
RecordPrototype.asMutable = asMutable;
RecordPrototype.asImmutable = asImmutable;
RecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;
RecordPrototype.toJSON = RecordPrototype.toObject =
  CollectionPrototype.toObject;
RecordPrototype.inspect = RecordPrototype.toSource = function () {
  return this.toString();
};

function makeRecord(likeRecord, values, ownerID) {
  var record = Object.create(Object.getPrototypeOf(likeRecord));
  record._values = values;
  record.__ownerID = ownerID;
  return record;
}

function recordName(record) {
  return record.constructor.displayName || record.constructor.name || 'Record';
}

function recordSeq(record) {
  return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));
}

function setProp(prototype, name) {
  try {
    Object.defineProperty(prototype, name, {
      get: function () {
        return this.get(name);
      },
      set: function (value) {
        invariant(this.__ownerID, 'Cannot set on an immutable record.');
        this.set(name, value);
      },
    });
  } catch (error) {
    // Object.defineProperty failed. Probably IE8.
  }
}

/**
 * Returns a lazy Seq of `value` repeated `times` times. When `times` is
 * undefined, returns an infinite sequence of `value`.
 */
var Repeat = /*@__PURE__*/(function (IndexedSeq) {
  function Repeat(value, times) {
    if (!(this instanceof Repeat)) {
      // eslint-disable-next-line no-constructor-return
      return new Repeat(value, times);
    }
    this._value = value;
    this.size = times === undefined ? Infinity : Math.max(0, times);
    if (this.size === 0) {
      if (EMPTY_REPEAT) {
        // eslint-disable-next-line no-constructor-return
        return EMPTY_REPEAT;
      }
      EMPTY_REPEAT = this;
    }
  }

  if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;
  Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );
  Repeat.prototype.constructor = Repeat;

  Repeat.prototype.toString = function toString () {
    if (this.size === 0) {
      return 'Repeat []';
    }
    return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';
  };

  Repeat.prototype.get = function get (index, notSetValue) {
    return this.has(index) ? this._value : notSetValue;
  };

  Repeat.prototype.includes = function includes (searchValue) {
    return is(this._value, searchValue);
  };

  Repeat.prototype.slice = function slice (begin, end) {
    var size = this.size;
    return wholeSlice(begin, end, size)
      ? this
      : new Repeat(
          this._value,
          resolveEnd(end, size) - resolveBegin(begin, size)
        );
  };

  Repeat.prototype.reverse = function reverse () {
    return this;
  };

  Repeat.prototype.indexOf = function indexOf (searchValue) {
    if (is(this._value, searchValue)) {
      return 0;
    }
    return -1;
  };

  Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {
    if (is(this._value, searchValue)) {
      return this.size;
    }
    return -1;
  };

  Repeat.prototype.__iterate = function __iterate (fn, reverse) {
    var size = this.size;
    var i = 0;
    while (i !== size) {
      if (fn(this._value, reverse ? size - ++i : i++, this) === false) {
        break;
      }
    }
    return i;
  };

  Repeat.prototype.__iterator = function __iterator (type, reverse) {
    var this$1$1 = this;

    var size = this.size;
    var i = 0;
    return new Iterator(function () { return i === size
        ? iteratorDone()
        : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }
    );
  };

  Repeat.prototype.equals = function equals (other) {
    return other instanceof Repeat
      ? is(this._value, other._value)
      : deepEqual(this, other);
  };

  return Repeat;
}(IndexedSeq));

var EMPTY_REPEAT;

function fromJS(value, converter) {
  return fromJSWith(
    [],
    converter || defaultConverter,
    value,
    '',
    converter && converter.length > 2 ? [] : undefined,
    { '': value }
  );
}

function fromJSWith(stack, converter, value, key, keyPath, parentValue) {
  if (
    typeof value !== 'string' &&
    !isImmutable(value) &&
    (isArrayLike(value) || hasIterator(value) || isPlainObject(value))
  ) {
    if (~stack.indexOf(value)) {
      throw new TypeError('Cannot convert circular structure to Immutable');
    }
    stack.push(value);
    keyPath && key !== '' && keyPath.push(key);
    var converted = converter.call(
      parentValue,
      key,
      Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }
      ),
      keyPath && keyPath.slice()
    );
    stack.pop();
    keyPath && keyPath.pop();
    return converted;
  }
  return value;
}

function defaultConverter(k, v) {
  // Effectively the opposite of "Collection.toSeq()"
  return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();
}

var version = "4.3.7";

var Immutable = {
  version: version,

  Collection: Collection,
  // Note: Iterable is deprecated
  Iterable: Collection,

  Seq: Seq,
  Map: Map,
  OrderedMap: OrderedMap,
  List: List,
  Stack: Stack,
  Set: Set,
  OrderedSet: OrderedSet,
  PairSorting: PairSorting,

  Record: Record,
  Range: Range,
  Repeat: Repeat,

  is: is,
  fromJS: fromJS,
  hash: hash,

  isImmutable: isImmutable,
  isCollection: isCollection,
  isKeyed: isKeyed,
  isIndexed: isIndexed,
  isAssociative: isAssociative,
  isOrdered: isOrdered,
  isValueObject: isValueObject,
  isPlainObject: isPlainObject,
  isSeq: isSeq,
  isList: isList,
  isMap: isMap,
  isOrderedMap: isOrderedMap,
  isStack: isStack,
  isSet: isSet,
  isOrderedSet: isOrderedSet,
  isRecord: isRecord,

  get: get,
  getIn: getIn$1,
  has: has,
  hasIn: hasIn$1,
  merge: merge,
  mergeDeep: mergeDeep$1,
  mergeWith: mergeWith,
  mergeDeepWith: mergeDeepWith$1,
  remove: remove,
  removeIn: removeIn,
  set: set,
  setIn: setIn$1,
  update: update$1,
  updateIn: updateIn$1,
};

// Note: Iterable is deprecated
var Iterable = Collection;

/* harmony default export */ __webpack_exports__["default"] = (Immutable);



/***/ }),

/***/ "./node_modules/sass/sass.dart.js":
/*!****************************************!*\
  !*** ./node_modules/sass/sass.dart.js ***!
  \****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(process, __dirname, __filename, Buffer) {// Because of vitejs/vite#12340, there's no way to reliably detect whether we're
// running as a (possibly bundled/polyfilled) ESM module or as a CommonJS
// module. In order to work everywhere, we have to provide the load function via
// a side channel on the global object. We write it as a stack so that multiple
// cli_pkg packages can depend on one another without clobbering their exports.
if (!globalThis._cliPkgExports) {
  globalThis._cliPkgExports = [];
}
let _cliPkgExports = {};
globalThis._cliPkgExports.push(_cliPkgExports);

_cliPkgExports.load = function(_cliPkgRequires, _cliPkgExportParam) {
var dartNodeIsActuallyNode = typeof process !== "undefined" && (process.versions || {}).hasOwnProperty('node');

// make sure to keep this as 'var'
// we don't want block scoping
var self = dartNodeIsActuallyNode ? Object.create(globalThis) : globalThis;

self.scheduleImmediate = typeof setImmediate !== "undefined"
    ? function (cb) {
        setImmediate(cb);
      }
    : function(cb) {
        setTimeout(cb, 0);
      };

// CommonJS globals.
if (true) {
  }
self.exports = _cliPkgExportParam || _cliPkgExports;

// Node.js specific exports, check to see if they exist & or polyfilled

if (typeof process !== "undefined") {
  self.process = process;
}

if (true) {
  self.__dirname = __dirname;
}

if (true) {
  self.__filename = __filename;
}

if (typeof Buffer !== "undefined") {
  self.Buffer = Buffer;
}

// if we're running in a browser, Dart supports most of this out of box
// make sure we only run these in Node.js environment

if (dartNodeIsActuallyNode) {
  // This line is to:
  // 1) Prevent Webpack from bundling.
  // 2) In Webpack on Node.js, make sure we're using the native Node.js require, which is available via __non_webpack_require__
  // https://github.com/mbullington/node_preamble.dart/issues/18#issuecomment-527305561
  var url = ( true ? require : undefined)("url");

  // Setting `self.location=` in Electron throws a `TypeError`, so we define it
  // as a property instead to be safe.
  Object.defineProperty(self, "location", {
    value: {
      get href() {
        if (url.pathToFileURL) {
          return url.pathToFileURL(process.cwd()).href + "/";
        } else {
          // This isn't really a correct transformation, but it's the best we have
          // for versions of Node <10.12.0 which introduced `url.pathToFileURL()`.
          // For example, it will fail for paths that contain characters that need
          // to be escaped in URLs.
          return "file://" + (function() {
            var cwd = process.cwd();
            if (process.platform != "win32") return cwd;
            return "/" + cwd.replace(/\\/g, "/");
          })() + "/"
        }
      }
    }
  });

  (function() {
    function computeCurrentScript() {
      try {
        throw new Error();
      } catch(e) {
        var stack = e.stack;
        var re = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "mg");
        var lastMatch = null;
        do {
          var match = re.exec(stack);
          if (match != null) lastMatch = match;
        } while (match != null);
        return lastMatch[1];
      }
    }

    // Setting `self.document=` isn't known to throw an error anywhere like
    // `self.location=` does on Electron, but it's better to be future-proof
    // just in case..
    var cachedCurrentScript = null;
    Object.defineProperty(self, "document", {
      value: {
        get currentScript() {
          if (cachedCurrentScript == null) {
            cachedCurrentScript = {src: computeCurrentScript()};
          }
          return cachedCurrentScript;
        }
      }
    });
  })();

  self.dartDeferredLibraryLoader = function(uri, successCallback, errorCallback) {
    try {
     load(uri);
      successCallback();
    } catch (error) {
      errorCallback(error);
    }
  };
}

self.immutable = _cliPkgRequires.immutable;
self.chokidar = _cliPkgRequires.chokidar;
self.readline = _cliPkgRequires.readline;
self.fs = _cliPkgRequires.fs;
self.stream = _cliPkgRequires.stream;
self.util = _cliPkgRequires.util;
// Generated by dart2js (NullSafetyMode.sound, trust primitives, omit checks, lax runtime type, csp, deferred-serialization, intern-composite-values), the Dart to JavaScript compiler version: 3.1.5.
// The code supports the following hooks:
// dartPrint(message):
//    if this function is defined it is called instead of the Dart [print]
//    method.
//
// dartMainRunner(main, args):
//    if this function is defined, the Dart [main] method will not be invoked
//    directly. Instead, a closure that will invoke [main], and its arguments
//    [args] is passed to [dartMainRunner].
//
// dartDeferredLibraryLoader(uri, successCallback, errorCallback, loadId, loadPriority):
//    if this function is defined, it will be called when a deferred library
//    is loaded. It should load and eval the javascript of `uri`, and call
//    successCallback. If it fails to do so, it should call errorCallback with
//    an error. The loadId argument is the deferred import that resulted in
//    this uri being loaded. The loadPriority argument is the priority the
//    library should be loaded with as specified in the code via the
//    load-priority annotation (0: normal, 1: high).
//
// dartCallInstrumentation(id, qualifiedName):
//    if this function is defined, it will be called at each entry of a
//    method or constructor. Used only when compiling programs with
//    --experiment-call-instrumentation.
(function dartProgram() {
  function copyProperties(from, to) {
    var keys = Object.keys(from);
    for (var i = 0; i < keys.length; i++) {
      var key = keys[i];
      to[key] = from[key];
    }
  }
  function mixinPropertiesHard(from, to) {
    var keys = Object.keys(from);
    for (var i = 0; i < keys.length; i++) {
      var key = keys[i];
      if (!to.hasOwnProperty(key))
        to[key] = from[key];
    }
  }
  function mixinPropertiesEasy(from, to) {
    Object.assign(to, from);
  }
  var supportsDirectProtoAccess = function() {
    var cls = function() {
    };
    cls.prototype = {p: {}};
    var object = new cls();
    if (!(Object.getPrototypeOf(object) && Object.getPrototypeOf(object).p === cls.prototype.p))
      return false;
    try {
      if (typeof navigator != "undefined" && typeof navigator.userAgent == "string" && navigator.userAgent.indexOf("Chrome/") >= 0)
        return true;
      if (typeof version == "function" && version.length == 0) {
        var v = version();
        if (/^\d+\.\d+\.\d+\.\d+$/.test(v))
          return true;
      }
    } catch (_) {
    }
    return false;
  }();
  function inherit(cls, sup) {
    cls.prototype.constructor = cls;
    cls.prototype["$is" + cls.name] = cls;
    if (sup != null) {
      if (supportsDirectProtoAccess) {
        Object.setPrototypeOf(cls.prototype, sup.prototype);
        return;
      }
      var clsPrototype = Object.create(sup.prototype);
      copyProperties(cls.prototype, clsPrototype);
      cls.prototype = clsPrototype;
    }
  }
  function inheritMany(sup, classes) {
    for (var i = 0; i < classes.length; i++)
      inherit(classes[i], sup);
  }
  function mixinEasy(cls, mixin) {
    mixinPropertiesEasy(mixin.prototype, cls.prototype);
    cls.prototype.constructor = cls;
  }
  function mixinHard(cls, mixin) {
    mixinPropertiesHard(mixin.prototype, cls.prototype);
    cls.prototype.constructor = cls;
  }
  function lazyOld(holder, name, getterName, initializer) {
    var uninitializedSentinel = holder;
    holder[name] = uninitializedSentinel;
    holder[getterName] = function() {
      holder[getterName] = function() {
        A.throwCyclicInit(name);
      };
      var result;
      var sentinelInProgress = initializer;
      try {
        if (holder[name] === uninitializedSentinel) {
          result = holder[name] = sentinelInProgress;
          result = holder[name] = initializer();
        } else
          result = holder[name];
      } finally {
        if (result === sentinelInProgress)
          holder[name] = null;
        holder[getterName] = function() {
          return this[name];
        };
      }
      return result;
    };
  }
  function lazy(holder, name, getterName, initializer) {
    var uninitializedSentinel = holder;
    holder[name] = uninitializedSentinel;
    holder[getterName] = function() {
      if (holder[name] === uninitializedSentinel)
        holder[name] = initializer();
      holder[getterName] = function() {
        return this[name];
      };
      return holder[name];
    };
  }
  function lazyFinal(holder, name, getterName, initializer) {
    var uninitializedSentinel = holder;
    holder[name] = uninitializedSentinel;
    holder[getterName] = function() {
      if (holder[name] === uninitializedSentinel) {
        var value = initializer();
        if (holder[name] !== uninitializedSentinel)
          A.throwLateFieldADI(name);
        holder[name] = value;
      }
      var finalValue = holder[name];
      holder[getterName] = function() {
        return finalValue;
      };
      return finalValue;
    };
  }
  function makeConstList(list) {
    list.immutable$list = Array;
    list.fixed$length = Array;
    return list;
  }
  function convertToFastObject(properties) {
    function t() {
    }
    t.prototype = properties;
    new t();
    return properties;
  }
  function convertAllToFastObject(arrayOfObjects) {
    for (var i = 0; i < arrayOfObjects.length; ++i)
      convertToFastObject(arrayOfObjects[i]);
  }
  var functionCounter = 0;
  function instanceTearOffGetter(isIntercepted, parameters) {
    var cache = null;
    return isIntercepted ? function(receiver) {
      if (cache === null)
        cache = A.closureFromTearOff(parameters);
      return new cache(receiver, this);
    } : function() {
      if (cache === null)
        cache = A.closureFromTearOff(parameters);
      return new cache(this, null);
    };
  }
  function staticTearOffGetter(parameters) {
    var cache = null;
    return function() {
      if (cache === null)
        cache = A.closureFromTearOff(parameters).prototype;
      return cache;
    };
  }
  var typesOffset = 0;
  function tearOffParameters(container, isStatic, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {
    if (typeof funType == "number")
      funType += typesOffset;
    return {co: container, iS: isStatic, iI: isIntercepted, rC: requiredParameterCount, dV: optionalParameterDefaultValues, cs: callNames, fs: funsOrNames, fT: funType, aI: applyIndex || 0, nDA: needsDirectAccess};
  }
  function installStaticTearOff(holder, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex) {
    var parameters = tearOffParameters(holder, true, false, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, false);
    var getterFunction = staticTearOffGetter(parameters);
    holder[getterName] = getterFunction;
  }
  function installInstanceTearOff(prototype, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, needsDirectAccess) {
    isIntercepted = !!isIntercepted;
    var parameters = tearOffParameters(prototype, false, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, funsOrNames, funType, applyIndex, !!needsDirectAccess);
    var getterFunction = instanceTearOffGetter(isIntercepted, parameters);
    prototype[getterName] = getterFunction;
  }
  function setOrUpdateInterceptorsByTag(newTags) {
    var tags = init.interceptorsByTag;
    if (!tags) {
      init.interceptorsByTag = newTags;
      return;
    }
    copyProperties(newTags, tags);
  }
  function setOrUpdateLeafTags(newTags) {
    var tags = init.leafTags;
    if (!tags) {
      init.leafTags = newTags;
      return;
    }
    copyProperties(newTags, tags);
  }
  function updateTypes(newTypes) {
    var types = init.types;
    var length = types.length;
    types.push.apply(types, newTypes);
    return length;
  }
  function updateHolder(holder, newHolder) {
    copyProperties(newHolder, holder);
    return holder;
  }
  var hunkHelpers = function() {
    var mkInstance = function(isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
        return function(container, getterName, name, funType) {
          return installInstanceTearOff(container, getterName, isIntercepted, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex, false);
        };
      },
      mkStatic = function(requiredParameterCount, optionalParameterDefaultValues, callNames, applyIndex) {
        return function(container, getterName, name, funType) {
          return installStaticTearOff(container, getterName, requiredParameterCount, optionalParameterDefaultValues, callNames, [name], funType, applyIndex);
        };
      };
    return {inherit: inherit, inheritMany: inheritMany, mixin: mixinEasy, mixinHard: mixinHard, installStaticTearOff: installStaticTearOff, installInstanceTearOff: installInstanceTearOff, _instance_0u: mkInstance(0, 0, null, ["call$0"], 0), _instance_1u: mkInstance(0, 1, null, ["call$1"], 0), _instance_2u: mkInstance(0, 2, null, ["call$2"], 0), _instance_0i: mkInstance(1, 0, null, ["call$0"], 0), _instance_1i: mkInstance(1, 1, null, ["call$1"], 0), _instance_2i: mkInstance(1, 2, null, ["call$2"], 0), _static_0: mkStatic(0, null, ["call$0"], 0), _static_1: mkStatic(1, null, ["call$1"], 0), _static_2: mkStatic(2, null, ["call$2"], 0), makeConstList: makeConstList, lazy: lazy, lazyFinal: lazyFinal, lazyOld: lazyOld, updateHolder: updateHolder, convertToFastObject: convertToFastObject, updateTypes: updateTypes, setOrUpdateInterceptorsByTag: setOrUpdateInterceptorsByTag, setOrUpdateLeafTags: setOrUpdateLeafTags};
  }();
  function initializeDeferredHunk(hunk) {
    typesOffset = init.types.length;
    hunk(hunkHelpers, init, holders, $);
  }
  var A = {JS_CONST: function JS_CONST() {
    },
    CastIterable_CastIterable(source, $S, $T) {
      if ($S._eval$1("EfficientLengthIterable<0>")._is(source))
        return new A._EfficientLengthCastIterable(source, $S._eval$1("@<0>")._bind$1($T)._eval$1("_EfficientLengthCastIterable<1,2>"));
      return new A.CastIterable(source, $S._eval$1("@<0>")._bind$1($T)._eval$1("CastIterable<1,2>"));
    },
    LateError$localNI(localName) {
      return new A.LateError("Local '" + localName + "' has not been initialized.");
    },
    hexDigitValue(char) {
      var letter,
        digit = char ^ 48;
      if (digit <= 9)
        return digit;
      letter = char | 32;
      if (97 <= letter && letter <= 102)
        return letter - 87;
      return -1;
    },
    SystemHash_combine(hash, value) {
      hash = hash + value & 536870911;
      hash = hash + ((hash & 524287) << 10) & 536870911;
      return hash ^ hash >>> 6;
    },
    SystemHash_finish(hash) {
      hash = hash + ((hash & 67108863) << 3) & 536870911;
      hash ^= hash >>> 11;
      return hash + ((hash & 16383) << 15) & 536870911;
    },
    checkNotNullable(value, $name, $T) {
      return value;
    },
    isToStringVisiting(object) {
      var t1, i;
      for (t1 = $.toStringVisiting.length, i = 0; i < t1; ++i)
        if (object === $.toStringVisiting[i])
          return true;
      return false;
    },
    SubListIterable$(_iterable, _start, _endOrLength, $E) {
      A.RangeError_checkNotNegative(_start, "start");
      if (_endOrLength != null) {
        A.RangeError_checkNotNegative(_endOrLength, "end");
        if (_start > _endOrLength)
          A.throwExpression(A.RangeError$range(_start, 0, _endOrLength, "start", null));
      }
      return new A.SubListIterable(_iterable, _start, _endOrLength, $E._eval$1("SubListIterable<0>"));
    },
    MappedIterable_MappedIterable(iterable, $function, $S, $T) {
      if (type$.EfficientLengthIterable_dynamic._is(iterable))
        return new A.EfficientLengthMappedIterable(iterable, $function, $S._eval$1("@<0>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>"));
      return new A.MappedIterable(iterable, $function, $S._eval$1("@<0>")._bind$1($T)._eval$1("MappedIterable<1,2>"));
    },
    TakeIterable_TakeIterable(iterable, takeCount, $E) {
      var _s9_ = "takeCount";
      A.ArgumentError_checkNotNull(takeCount, _s9_);
      A.RangeError_checkNotNegative(takeCount, _s9_);
      if (type$.EfficientLengthIterable_dynamic._is(iterable))
        return new A.EfficientLengthTakeIterable(iterable, takeCount, $E._eval$1("EfficientLengthTakeIterable<0>"));
      return new A.TakeIterable(iterable, takeCount, $E._eval$1("TakeIterable<0>"));
    },
    SkipIterable_SkipIterable(iterable, count, $E) {
      var _s5_ = "count";
      if (type$.EfficientLengthIterable_dynamic._is(iterable)) {
        A.ArgumentError_checkNotNull(count, _s5_);
        A.RangeError_checkNotNegative(count, _s5_);
        return new A.EfficientLengthSkipIterable(iterable, count, $E._eval$1("EfficientLengthSkipIterable<0>"));
      }
      A.ArgumentError_checkNotNull(count, _s5_);
      A.RangeError_checkNotNegative(count, _s5_);
      return new A.SkipIterable(iterable, count, $E._eval$1("SkipIterable<0>"));
    },
    FollowedByIterable_FollowedByIterable$firstEfficient(first, second, $E) {
      if ($E._eval$1("EfficientLengthIterable<0>")._is(second))
        return new A.EfficientLengthFollowedByIterable(first, second, $E._eval$1("EfficientLengthFollowedByIterable<0>"));
      return new A.FollowedByIterable(first, second, $E._eval$1("FollowedByIterable<0>"));
    },
    IterableElementError_noElement() {
      return new A.StateError("No element");
    },
    IterableElementError_tooMany() {
      return new A.StateError("Too many elements");
    },
    IterableElementError_tooFew() {
      return new A.StateError("Too few elements");
    },
    Sort_sort(a, compare) {
      A.Sort__doSort(a, 0, J.get$length$asx(a) - 1, compare);
    },
    Sort__doSort(a, left, right, compare) {
      if (right - left <= 32)
        A.Sort__insertionSort(a, left, right, compare);
      else
        A.Sort__dualPivotQuicksort(a, left, right, compare);
    },
    Sort__insertionSort(a, left, right, compare) {
      var i, t1, el, j, j0;
      for (i = left + 1, t1 = J.getInterceptor$asx(a); i <= right; ++i) {
        el = t1.$index(a, i);
        j = i;
        while (true) {
          if (!(j > left && compare.call$2(t1.$index(a, j - 1), el) > 0))
            break;
          j0 = j - 1;
          t1.$indexSet(a, j, t1.$index(a, j0));
          j = j0;
        }
        t1.$indexSet(a, j, el);
      }
    },
    Sort__dualPivotQuicksort(a, left, right, compare) {
      var t0, less, great, k, ak, comp, great0, less0, pivots_are_equal, t2,
        sixth = B.JSInt_methods._tdivFast$1(right - left + 1, 6),
        index1 = left + sixth,
        index5 = right - sixth,
        index3 = B.JSInt_methods._tdivFast$1(left + right, 2),
        index2 = index3 - sixth,
        index4 = index3 + sixth,
        t1 = J.getInterceptor$asx(a),
        el1 = t1.$index(a, index1),
        el2 = t1.$index(a, index2),
        el3 = t1.$index(a, index3),
        el4 = t1.$index(a, index4),
        el5 = t1.$index(a, index5);
      if (compare.call$2(el1, el2) > 0) {
        t0 = el2;
        el2 = el1;
        el1 = t0;
      }
      if (compare.call$2(el4, el5) > 0) {
        t0 = el5;
        el5 = el4;
        el4 = t0;
      }
      if (compare.call$2(el1, el3) > 0) {
        t0 = el3;
        el3 = el1;
        el1 = t0;
      }
      if (compare.call$2(el2, el3) > 0) {
        t0 = el3;
        el3 = el2;
        el2 = t0;
      }
      if (compare.call$2(el1, el4) > 0) {
        t0 = el4;
        el4 = el1;
        el1 = t0;
      }
      if (compare.call$2(el3, el4) > 0) {
        t0 = el4;
        el4 = el3;
        el3 = t0;
      }
      if (compare.call$2(el2, el5) > 0) {
        t0 = el5;
        el5 = el2;
        el2 = t0;
      }
      if (compare.call$2(el2, el3) > 0) {
        t0 = el3;
        el3 = el2;
        el2 = t0;
      }
      if (compare.call$2(el4, el5) > 0) {
        t0 = el5;
        el5 = el4;
        el4 = t0;
      }
      t1.$indexSet(a, index1, el1);
      t1.$indexSet(a, index3, el3);
      t1.$indexSet(a, index5, el5);
      t1.$indexSet(a, index2, t1.$index(a, left));
      t1.$indexSet(a, index4, t1.$index(a, right));
      less = left + 1;
      great = right - 1;
      if (J.$eq$(compare.call$2(el2, el4), 0)) {
        for (k = less; k <= great; ++k) {
          ak = t1.$index(a, k);
          comp = compare.call$2(ak, el2);
          if (comp === 0)
            continue;
          if (comp < 0) {
            if (k !== less) {
              t1.$indexSet(a, k, t1.$index(a, less));
              t1.$indexSet(a, less, ak);
            }
            ++less;
          } else
            for (; true;) {
              comp = compare.call$2(t1.$index(a, great), el2);
              if (comp > 0) {
                --great;
                continue;
              } else {
                great0 = great - 1;
                if (comp < 0) {
                  t1.$indexSet(a, k, t1.$index(a, less));
                  less0 = less + 1;
                  t1.$indexSet(a, less, t1.$index(a, great));
                  t1.$indexSet(a, great, ak);
                  great = great0;
                  less = less0;
                  break;
                } else {
                  t1.$indexSet(a, k, t1.$index(a, great));
                  t1.$indexSet(a, great, ak);
                  great = great0;
                  break;
                }
              }
            }
        }
        pivots_are_equal = true;
      } else {
        for (k = less; k <= great; ++k) {
          ak = t1.$index(a, k);
          if (compare.call$2(ak, el2) < 0) {
            if (k !== less) {
              t1.$indexSet(a, k, t1.$index(a, less));
              t1.$indexSet(a, less, ak);
            }
            ++less;
          } else if (compare.call$2(ak, el4) > 0)
            for (; true;)
              if (compare.call$2(t1.$index(a, great), el4) > 0) {
                --great;
                if (great < k)
                  break;
                continue;
              } else {
                great0 = great - 1;
                if (compare.call$2(t1.$index(a, great), el2) < 0) {
                  t1.$indexSet(a, k, t1.$index(a, less));
                  less0 = less + 1;
                  t1.$indexSet(a, less, t1.$index(a, great));
                  t1.$indexSet(a, great, ak);
                  less = less0;
                } else {
                  t1.$indexSet(a, k, t1.$index(a, great));
                  t1.$indexSet(a, great, ak);
                }
                great = great0;
                break;
              }
        }
        pivots_are_equal = false;
      }
      t2 = less - 1;
      t1.$indexSet(a, left, t1.$index(a, t2));
      t1.$indexSet(a, t2, el2);
      t2 = great + 1;
      t1.$indexSet(a, right, t1.$index(a, t2));
      t1.$indexSet(a, t2, el4);
      A.Sort__doSort(a, left, less - 2, compare);
      A.Sort__doSort(a, great + 2, right, compare);
      if (pivots_are_equal)
        return;
      if (less < index1 && great > index5) {
        for (; J.$eq$(compare.call$2(t1.$index(a, less), el2), 0);)
          ++less;
        for (; J.$eq$(compare.call$2(t1.$index(a, great), el4), 0);)
          --great;
        for (k = less; k <= great; ++k) {
          ak = t1.$index(a, k);
          if (compare.call$2(ak, el2) === 0) {
            if (k !== less) {
              t1.$indexSet(a, k, t1.$index(a, less));
              t1.$indexSet(a, less, ak);
            }
            ++less;
          } else if (compare.call$2(ak, el4) === 0)
            for (; true;)
              if (compare.call$2(t1.$index(a, great), el4) === 0) {
                --great;
                if (great < k)
                  break;
                continue;
              } else {
                great0 = great - 1;
                if (compare.call$2(t1.$index(a, great), el2) < 0) {
                  t1.$indexSet(a, k, t1.$index(a, less));
                  less0 = less + 1;
                  t1.$indexSet(a, less, t1.$index(a, great));
                  t1.$indexSet(a, great, ak);
                  less = less0;
                } else {
                  t1.$indexSet(a, k, t1.$index(a, great));
                  t1.$indexSet(a, great, ak);
                }
                great = great0;
                break;
              }
        }
        A.Sort__doSort(a, less, great, compare);
      } else
        A.Sort__doSort(a, less, great, compare);
    },
    _CastIterableBase: function _CastIterableBase() {
    },
    CastIterator: function CastIterator(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    CastIterable: function CastIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    _EfficientLengthCastIterable: function _EfficientLengthCastIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    _CastListBase: function _CastListBase() {
    },
    _CastListBase_sort_closure: function _CastListBase_sort_closure(t0, t1) {
      this.$this = t0;
      this.compare = t1;
    },
    CastList: function CastList(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    CastSet: function CastSet(t0, t1, t2) {
      this._source = t0;
      this._emptySet = t1;
      this.$ti = t2;
    },
    CastMap: function CastMap(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    CastMap_forEach_closure: function CastMap_forEach_closure(t0, t1) {
      this.$this = t0;
      this.f = t1;
    },
    CastMap_entries_closure: function CastMap_entries_closure(t0) {
      this.$this = t0;
    },
    LateError: function LateError(t0) {
      this._message = t0;
    },
    CodeUnits: function CodeUnits(t0) {
      this._string = t0;
    },
    nullFuture_closure: function nullFuture_closure() {
    },
    SentinelValue: function SentinelValue() {
    },
    EfficientLengthIterable: function EfficientLengthIterable() {
    },
    ListIterable: function ListIterable() {
    },
    SubListIterable: function SubListIterable(t0, t1, t2, t3) {
      var _ = this;
      _.__internal$_iterable = t0;
      _.__internal$_start = t1;
      _._endOrLength = t2;
      _.$ti = t3;
    },
    ListIterator: function ListIterator(t0, t1) {
      var _ = this;
      _.__internal$_iterable = t0;
      _.__internal$_length = t1;
      _.__internal$_index = 0;
      _.__internal$_current = null;
    },
    MappedIterable: function MappedIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    EfficientLengthMappedIterable: function EfficientLengthMappedIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    MappedIterator: function MappedIterator(t0, t1) {
      this.__internal$_current = null;
      this._iterator = t0;
      this._f = t1;
    },
    MappedListIterable: function MappedListIterable(t0, t1, t2) {
      this._source = t0;
      this._f = t1;
      this.$ti = t2;
    },
    WhereIterable: function WhereIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    WhereIterator: function WhereIterator(t0, t1) {
      this._iterator = t0;
      this._f = t1;
    },
    ExpandIterable: function ExpandIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    ExpandIterator: function ExpandIterator(t0, t1, t2) {
      var _ = this;
      _._iterator = t0;
      _._f = t1;
      _._currentExpansion = t2;
      _.__internal$_current = null;
    },
    TakeIterable: function TakeIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._takeCount = t1;
      this.$ti = t2;
    },
    EfficientLengthTakeIterable: function EfficientLengthTakeIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._takeCount = t1;
      this.$ti = t2;
    },
    TakeIterator: function TakeIterator(t0, t1) {
      this._iterator = t0;
      this._remaining = t1;
    },
    SkipIterable: function SkipIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._skipCount = t1;
      this.$ti = t2;
    },
    EfficientLengthSkipIterable: function EfficientLengthSkipIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._skipCount = t1;
      this.$ti = t2;
    },
    SkipIterator: function SkipIterator(t0, t1) {
      this._iterator = t0;
      this._skipCount = t1;
    },
    SkipWhileIterable: function SkipWhileIterable(t0, t1, t2) {
      this.__internal$_iterable = t0;
      this._f = t1;
      this.$ti = t2;
    },
    SkipWhileIterator: function SkipWhileIterator(t0, t1) {
      this._iterator = t0;
      this._f = t1;
      this._hasSkipped = false;
    },
    EmptyIterable: function EmptyIterable(t0) {
      this.$ti = t0;
    },
    EmptyIterator: function EmptyIterator() {
    },
    FollowedByIterable: function FollowedByIterable(t0, t1, t2) {
      this.__internal$_first = t0;
      this._second = t1;
      this.$ti = t2;
    },
    EfficientLengthFollowedByIterable: function EfficientLengthFollowedByIterable(t0, t1, t2) {
      this.__internal$_first = t0;
      this._second = t1;
      this.$ti = t2;
    },
    FollowedByIterator: function FollowedByIterator(t0, t1) {
      this._currentIterator = t0;
      this._nextIterable = t1;
    },
    WhereTypeIterable: function WhereTypeIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    WhereTypeIterator: function WhereTypeIterator(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    FixedLengthListMixin: function FixedLengthListMixin() {
    },
    UnmodifiableListMixin: function UnmodifiableListMixin() {
    },
    UnmodifiableListBase: function UnmodifiableListBase() {
    },
    ReversedListIterable: function ReversedListIterable(t0, t1) {
      this._source = t0;
      this.$ti = t1;
    },
    Symbol: function Symbol(t0) {
      this.__internal$_name = t0;
    },
    __CastListBase__CastIterableBase_ListMixin: function __CastListBase__CastIterableBase_ListMixin() {
    },
    ConstantMap_ConstantMap$from(other, $K, $V) {
      var allStrings, k, object, index, index0, map,
        keys = A.List_List$from(other.get$keys(other), true, $K),
        t1 = keys.length,
        _i = 0;
      while (true) {
        if (!(_i < t1)) {
          allStrings = true;
          break;
        }
        k = keys[_i];
        if (typeof k != "string" || "__proto__" === k) {
          allStrings = false;
          break;
        }
        ++_i;
      }
      if (allStrings) {
        object = {};
        for (index = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i, index = index0) {
          k = keys[_i];
          other.$index(0, k);
          index0 = index + 1;
          object[k] = index;
        }
        map = new A.ConstantStringMap(object, A.List_List$from(other.get$values(other), true, $V), $K._eval$1("@<0>")._bind$1($V)._eval$1("ConstantStringMap<1,2>"));
        map.$keys = keys;
        return map;
      }
      return new A.ConstantMapView(A.LinkedHashMap_LinkedHashMap$from(other, $K, $V), $K._eval$1("@<0>")._bind$1($V)._eval$1("ConstantMapView<1,2>"));
    },
    ConstantMap__throwUnmodifiable() {
      throw A.wrapException(A.UnsupportedError$("Cannot modify unmodifiable Map"));
    },
    ConstantSet__throwUnmodifiable() {
      throw A.wrapException(A.UnsupportedError$("Cannot modify constant Set"));
    },
    instantiate1(f, T1) {
      var t1 = new A.Instantiation1(f, T1._eval$1("Instantiation1<0>"));
      t1.Instantiation$1(f);
      return t1;
    },
    unminifyOrTag(rawClassName) {
      var preserved = init.mangledGlobalNames[rawClassName];
      if (preserved != null)
        return preserved;
      return rawClassName;
    },
    isJsIndexable(object, record) {
      var result;
      if (record != null) {
        result = record.x;
        if (result != null)
          return result;
      }
      return type$.JavaScriptIndexingBehavior_dynamic._is(object);
    },
    S(value) {
      var result;
      if (typeof value == "string")
        return value;
      if (typeof value == "number") {
        if (value !== 0)
          return "" + value;
      } else if (true === value)
        return "true";
      else if (false === value)
        return "false";
      else if (value == null)
        return "null";
      result = J.toString$0$(value);
      return result;
    },
    JSInvocationMirror$(_memberName, _internalName, _kind, _arguments, _namedArgumentNames, _typeArgumentCount) {
      return new A.JSInvocationMirror(_memberName, _kind, _arguments, _namedArgumentNames, _typeArgumentCount);
    },
    Primitives_objectHashCode(object) {
      var hash,
        property = $.Primitives__identityHashCodeProperty;
      if (property == null)
        property = $.Primitives__identityHashCodeProperty = Symbol("identityHashCode");
      hash = object[property];
      if (hash == null) {
        hash = Math.random() * 0x3fffffff | 0;
        object[property] = hash;
      }
      return hash;
    },
    Primitives_parseInt(source, radix) {
      var decimalMatch, maxCharCode, digitsPart, t1, i, _null = null,
        match = /^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(source);
      if (match == null)
        return _null;
      decimalMatch = match[3];
      if (radix == null) {
        if (decimalMatch != null)
          return parseInt(source, 10);
        if (match[2] != null)
          return parseInt(source, 16);
        return _null;
      }
      if (radix < 2 || radix > 36)
        throw A.wrapException(A.RangeError$range(radix, 2, 36, "radix", _null));
      if (radix === 10 && decimalMatch != null)
        return parseInt(source, 10);
      if (radix < 10 || decimalMatch == null) {
        maxCharCode = radix <= 10 ? 47 + radix : 86 + radix;
        digitsPart = match[1];
        for (t1 = digitsPart.length, i = 0; i < t1; ++i)
          if ((digitsPart.charCodeAt(i) | 32) > maxCharCode)
            return _null;
      }
      return parseInt(source, radix);
    },
    Primitives_parseDouble(source) {
      var result, trimmed;
      if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(source))
        return null;
      result = parseFloat(source);
      if (isNaN(result)) {
        trimmed = B.JSString_methods.trim$0(source);
        if (trimmed === "NaN" || trimmed === "+NaN" || trimmed === "-NaN")
          return result;
        return null;
      }
      return result;
    },
    Primitives_objectTypeName(object) {
      return A.Primitives__objectTypeNameNewRti(object);
    },
    Primitives__objectTypeNameNewRti(object) {
      var interceptor, dispatchName, $constructor, constructorName;
      if (object instanceof A.Object)
        return A._rtiToString(A.instanceType(object), null);
      interceptor = J.getInterceptor$(object);
      if (interceptor === B.Interceptor_methods || interceptor === B.JavaScriptObject_methods || type$.UnknownJavaScriptObject._is(object)) {
        dispatchName = B.C_JS_CONST(object);
        if (dispatchName !== "Object" && dispatchName !== "")
          return dispatchName;
        $constructor = object.constructor;
        if (typeof $constructor == "function") {
          constructorName = $constructor.name;
          if (typeof constructorName == "string" && constructorName !== "Object" && constructorName !== "")
            return constructorName;
        }
      }
      return A._rtiToString(A.instanceType(object), null);
    },
    Primitives_safeToString(object) {
      if (object == null || typeof object == "number" || A._isBool(object))
        return J.toString$0$(object);
      if (typeof object == "string")
        return JSON.stringify(object);
      if (object instanceof A.Closure)
        return object.toString$0(0);
      if (object instanceof A._Record)
        return object._toString$1(true);
      return "Instance of '" + A.Primitives_objectTypeName(object) + "'";
    },
    Primitives_currentUri() {
      if (!!self.location)
        return self.location.href;
      return null;
    },
    Primitives__fromCharCodeApply(array) {
      var result, i, i0, chunkEnd,
        end = array.length;
      if (end <= 500)
        return String.fromCharCode.apply(null, array);
      for (result = "", i = 0; i < end; i = i0) {
        i0 = i + 500;
        chunkEnd = i0 < end ? i0 : end;
        result += String.fromCharCode.apply(null, array.slice(i, chunkEnd));
      }
      return result;
    },
    Primitives_stringFromCodePoints(codePoints) {
      var t1, _i, i,
        a = A._setArrayType([], type$.JSArray_int);
      for (t1 = codePoints.length, _i = 0; _i < codePoints.length; codePoints.length === t1 || (0, A.throwConcurrentModificationError)(codePoints), ++_i) {
        i = codePoints[_i];
        if (!A._isInt(i))
          throw A.wrapException(A.argumentErrorValue(i));
        if (i <= 65535)
          a.push(i);
        else if (i <= 1114111) {
          a.push(55296 + (B.JSInt_methods._shrOtherPositive$1(i - 65536, 10) & 1023));
          a.push(56320 + (i & 1023));
        } else
          throw A.wrapException(A.argumentErrorValue(i));
      }
      return A.Primitives__fromCharCodeApply(a);
    },
    Primitives_stringFromCharCodes(charCodes) {
      var t1, _i, i;
      for (t1 = charCodes.length, _i = 0; _i < t1; ++_i) {
        i = charCodes[_i];
        if (!A._isInt(i))
          throw A.wrapException(A.argumentErrorValue(i));
        if (i < 0)
          throw A.wrapException(A.argumentErrorValue(i));
        if (i > 65535)
          return A.Primitives_stringFromCodePoints(charCodes);
      }
      return A.Primitives__fromCharCodeApply(charCodes);
    },
    Primitives_stringFromNativeUint8List(charCodes, start, end) {
      var i, result, i0, chunkEnd;
      if (end <= 500 && start === 0 && end === charCodes.length)
        return String.fromCharCode.apply(null, charCodes);
      for (i = start, result = ""; i < end; i = i0) {
        i0 = i + 500;
        chunkEnd = i0 < end ? i0 : end;
        result += String.fromCharCode.apply(null, charCodes.subarray(i, chunkEnd));
      }
      return result;
    },
    Primitives_stringFromCharCode(charCode) {
      var bits;
      if (0 <= charCode) {
        if (charCode <= 65535)
          return String.fromCharCode(charCode);
        if (charCode <= 1114111) {
          bits = charCode - 65536;
          return String.fromCharCode((B.JSInt_methods._shrOtherPositive$1(bits, 10) | 55296) >>> 0, bits & 1023 | 56320);
        }
      }
      throw A.wrapException(A.RangeError$range(charCode, 0, 1114111, null, null));
    },
    Primitives_lazyAsJsDate(receiver) {
      if (receiver.date === void 0)
        receiver.date = new Date(receiver._core$_value);
      return receiver.date;
    },
    Primitives_getYear(receiver) {
      var t1 = A.Primitives_lazyAsJsDate(receiver).getFullYear() + 0;
      return t1;
    },
    Primitives_getMonth(receiver) {
      var t1 = A.Primitives_lazyAsJsDate(receiver).getMonth() + 1;
      return t1;
    },
    Primitives_getDay(receiver) {
      var t1 = A.Primitives_lazyAsJsDate(receiver).getDate() + 0;
      return t1;
    },
    Primitives_getHours(receiver) {
      var t1 = A.Primitives_lazyAsJsDate(receiver).getHours() + 0;
      return t1;
    },
    Primitives_getMinutes(receiver) {
      var t1 = A.Primitives_lazyAsJsDate(receiver).getMinutes() + 0;
      return t1;
    },
    Primitives_getSeconds(receiver) {
      var t1 = A.Primitives_lazyAsJsDate(receiver).getSeconds() + 0;
      return t1;
    },
    Primitives_getMilliseconds(receiver) {
      var t1 = A.Primitives_lazyAsJsDate(receiver).getMilliseconds() + 0;
      return t1;
    },
    Primitives_functionNoSuchMethod($function, positionalArguments, namedArguments) {
      var $arguments, namedArgumentList, t1 = {};
      t1.argumentCount = 0;
      $arguments = [];
      namedArgumentList = [];
      t1.argumentCount = positionalArguments.length;
      B.JSArray_methods.addAll$1($arguments, positionalArguments);
      t1.names = "";
      if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
        namedArguments.forEach$1(0, new A.Primitives_functionNoSuchMethod_closure(t1, namedArgumentList, $arguments));
      return J.noSuchMethod$1$($function, new A.JSInvocationMirror(B.Symbol_call, 0, $arguments, namedArgumentList, 0));
    },
    Primitives_applyFunction($function, positionalArguments, namedArguments) {
      var t1, argumentCount, jsStub;
      if (Array.isArray(positionalArguments))
        t1 = namedArguments == null || namedArguments.__js_helper$_length === 0;
      else
        t1 = false;
      if (t1) {
        argumentCount = positionalArguments.length;
        if (argumentCount === 0) {
          if (!!$function.call$0)
            return $function.call$0();
        } else if (argumentCount === 1) {
          if (!!$function.call$1)
            return $function.call$1(positionalArguments[0]);
        } else if (argumentCount === 2) {
          if (!!$function.call$2)
            return $function.call$2(positionalArguments[0], positionalArguments[1]);
        } else if (argumentCount === 3) {
          if (!!$function.call$3)
            return $function.call$3(positionalArguments[0], positionalArguments[1], positionalArguments[2]);
        } else if (argumentCount === 4) {
          if (!!$function.call$4)
            return $function.call$4(positionalArguments[0], positionalArguments[1], positionalArguments[2], positionalArguments[3]);
        } else if (argumentCount === 5)
          if (!!$function.call$5)
            return $function.call$5(positionalArguments[0], positionalArguments[1], positionalArguments[2], positionalArguments[3], positionalArguments[4]);
        jsStub = $function["call" + "$" + argumentCount];
        if (jsStub != null)
          return jsStub.apply($function, positionalArguments);
      }
      return A.Primitives__generalApplyFunction($function, positionalArguments, namedArguments);
    },
    Primitives__generalApplyFunction($function, positionalArguments, namedArguments) {
      var defaultValuesClosure, t1, defaultValues, interceptor, jsFunction, maxArguments, missingDefaults, keys, _i, defaultValue, used, t2,
        $arguments = Array.isArray(positionalArguments) ? positionalArguments : A.List_List$of(positionalArguments, true, type$.dynamic),
        argumentCount = $arguments.length,
        requiredParameterCount = $function.$requiredArgCount;
      if (argumentCount < requiredParameterCount)
        return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
      defaultValuesClosure = $function.$defaultValues;
      t1 = defaultValuesClosure == null;
      defaultValues = !t1 ? defaultValuesClosure() : null;
      interceptor = J.getInterceptor$($function);
      jsFunction = interceptor["call*"];
      if (typeof jsFunction == "string")
        jsFunction = interceptor[jsFunction];
      if (t1) {
        if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
          return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
        if (argumentCount === requiredParameterCount)
          return jsFunction.apply($function, $arguments);
        return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
      }
      if (Array.isArray(defaultValues)) {
        if (namedArguments != null && namedArguments.__js_helper$_length !== 0)
          return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
        maxArguments = requiredParameterCount + defaultValues.length;
        if (argumentCount > maxArguments)
          return A.Primitives_functionNoSuchMethod($function, $arguments, null);
        if (argumentCount < maxArguments) {
          missingDefaults = defaultValues.slice(argumentCount - requiredParameterCount);
          if ($arguments === positionalArguments)
            $arguments = A.List_List$of($arguments, true, type$.dynamic);
          B.JSArray_methods.addAll$1($arguments, missingDefaults);
        }
        return jsFunction.apply($function, $arguments);
      } else {
        if (argumentCount > requiredParameterCount)
          return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
        if ($arguments === positionalArguments)
          $arguments = A.List_List$of($arguments, true, type$.dynamic);
        keys = Object.keys(defaultValues);
        if (namedArguments == null)
          for (t1 = keys.length, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) {
            defaultValue = defaultValues[keys[_i]];
            if (B.C__Required === defaultValue)
              return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
            B.JSArray_methods.add$1($arguments, defaultValue);
          }
        else {
          for (t1 = keys.length, used = 0, _i = 0; _i < keys.length; keys.length === t1 || (0, A.throwConcurrentModificationError)(keys), ++_i) {
            t2 = keys[_i];
            if (namedArguments.containsKey$1(t2)) {
              ++used;
              B.JSArray_methods.add$1($arguments, namedArguments.$index(0, t2));
            } else {
              defaultValue = defaultValues[t2];
              if (B.C__Required === defaultValue)
                return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
              B.JSArray_methods.add$1($arguments, defaultValue);
            }
          }
          if (used !== namedArguments.__js_helper$_length)
            return A.Primitives_functionNoSuchMethod($function, $arguments, namedArguments);
        }
        return jsFunction.apply($function, $arguments);
      }
    },
    diagnoseIndexError(indexable, index) {
      var $length, _s5_ = "index";
      if (!A._isInt(index))
        return new A.ArgumentError(true, index, _s5_, null);
      $length = J.get$length$asx(indexable);
      if (index < 0 || index >= $length)
        return A.IndexError$withLength(index, $length, indexable, null, _s5_);
      return A.RangeError$value(index, _s5_, null);
    },
    diagnoseRangeError(start, end, $length) {
      if (start < 0 || start > $length)
        return A.RangeError$range(start, 0, $length, "start", null);
      if (end != null)
        if (end < start || end > $length)
          return A.RangeError$range(end, start, $length, "end", null);
      return new A.ArgumentError(true, end, "end", null);
    },
    argumentErrorValue(object) {
      return new A.ArgumentError(true, object, null, null);
    },
    checkNum(value) {
      return value;
    },
    wrapException(ex) {
      return A.initializeExceptionWrapper(new Error(), ex);
    },
    initializeExceptionWrapper(wrapper, ex) {
      var t1;
      if (ex == null)
        ex = new A.TypeError();
      wrapper.dartException = ex;
      t1 = A.toStringWrapper;
      if ("defineProperty" in Object) {
        Object.defineProperty(wrapper, "message", {get: t1});
        wrapper.name = "";
      } else
        wrapper.toString = t1;
      return wrapper;
    },
    toStringWrapper() {
      return J.toString$0$(this.dartException);
    },
    throwExpression(ex) {
      throw A.wrapException(ex);
    },
    throwExpressionWithWrapper(ex, wrapper) {
      throw A.initializeExceptionWrapper(wrapper, ex);
    },
    throwConcurrentModificationError(collection) {
      throw A.wrapException(A.ConcurrentModificationError$(collection));
    },
    TypeErrorDecoder_extractPattern(message) {
      var match, $arguments, argumentsExpr, expr, method, receiver;
      message = A.quoteStringForRegExp(message.replace(String({}), "$receiver$"));
      match = message.match(/\\\$[a-zA-Z]+\\\$/g);
      if (match == null)
        match = A._setArrayType([], type$.JSArray_String);
      $arguments = match.indexOf("\\$arguments\\$");
      argumentsExpr = match.indexOf("\\$argumentsExpr\\$");
      expr = match.indexOf("\\$expr\\$");
      method = match.indexOf("\\$method\\$");
      receiver = match.indexOf("\\$receiver\\$");
      return new A.TypeErrorDecoder(message.replace(new RegExp("\\\\\\$arguments\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$", "g"), "((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$", "g"), "((?:x|[^x])*)"), $arguments, argumentsExpr, expr, method, receiver);
    },
    TypeErrorDecoder_provokeCallErrorOn(expression) {
      return function($expr$) {
        var $argumentsExpr$ = "$arguments$";
        try {
          $expr$.$method$($argumentsExpr$);
        } catch (e) {
          return e.message;
        }
      }(expression);
    },
    TypeErrorDecoder_provokePropertyErrorOn(expression) {
      return function($expr$) {
        try {
          $expr$.$method$;
        } catch (e) {
          return e.message;
        }
      }(expression);
    },
    JsNoSuchMethodError$(_message, match) {
      var t1 = match == null,
        t2 = t1 ? null : match.method;
      return new A.JsNoSuchMethodError(_message, t2, t1 ? null : match.receiver);
    },
    unwrapException(ex) {
      if (ex == null)
        return new A.NullThrownFromJavaScriptException(ex);
      if (ex instanceof A.ExceptionAndStackTrace)
        return A.saveStackTrace(ex, ex.dartException);
      if (typeof ex !== "object")
        return ex;
      if ("dartException" in ex)
        return A.saveStackTrace(ex, ex.dartException);
      return A._unwrapNonDartException(ex);
    },
    saveStackTrace(ex, error) {
      if (type$.Error._is(error))
        if (error.$thrownJsError == null)
          error.$thrownJsError = ex;
      return error;
    },
    _unwrapNonDartException(ex) {
      var message, number, ieErrorCode, t1, nsme, notClosure, nullCall, nullLiteralCall, undefCall, undefLiteralCall, nullProperty, undefProperty, undefLiteralProperty, match, _null = null;
      if (!("message" in ex))
        return ex;
      message = ex.message;
      if ("number" in ex && typeof ex.number == "number") {
        number = ex.number;
        ieErrorCode = number & 65535;
        if ((B.JSInt_methods._shrOtherPositive$1(number, 16) & 8191) === 10)
          switch (ieErrorCode) {
            case 438:
              return A.saveStackTrace(ex, A.JsNoSuchMethodError$(A.S(message) + " (Error " + ieErrorCode + ")", _null));
            case 445:
            case 5007:
              t1 = A.S(message);
              return A.saveStackTrace(ex, new A.NullError(t1 + " (Error " + ieErrorCode + ")", _null));
          }
      }
      if (ex instanceof TypeError) {
        nsme = $.$get$TypeErrorDecoder_noSuchMethodPattern();
        notClosure = $.$get$TypeErrorDecoder_notClosurePattern();
        nullCall = $.$get$TypeErrorDecoder_nullCallPattern();
        nullLiteralCall = $.$get$TypeErrorDecoder_nullLiteralCallPattern();
        undefCall = $.$get$TypeErrorDecoder_undefinedCallPattern();
        undefLiteralCall = $.$get$TypeErrorDecoder_undefinedLiteralCallPattern();
        nullProperty = $.$get$TypeErrorDecoder_nullPropertyPattern();
        $.$get$TypeErrorDecoder_nullLiteralPropertyPattern();
        undefProperty = $.$get$TypeErrorDecoder_undefinedPropertyPattern();
        undefLiteralProperty = $.$get$TypeErrorDecoder_undefinedLiteralPropertyPattern();
        match = nsme.matchTypeError$1(message);
        if (match != null)
          return A.saveStackTrace(ex, A.JsNoSuchMethodError$(message, match));
        else {
          match = notClosure.matchTypeError$1(message);
          if (match != null) {
            match.method = "call";
            return A.saveStackTrace(ex, A.JsNoSuchMethodError$(message, match));
          } else {
            match = nullCall.matchTypeError$1(message);
            if (match == null) {
              match = nullLiteralCall.matchTypeError$1(message);
              if (match == null) {
                match = undefCall.matchTypeError$1(message);
                if (match == null) {
                  match = undefLiteralCall.matchTypeError$1(message);
                  if (match == null) {
                    match = nullProperty.matchTypeError$1(message);
                    if (match == null) {
                      match = nullLiteralCall.matchTypeError$1(message);
                      if (match == null) {
                        match = undefProperty.matchTypeError$1(message);
                        if (match == null) {
                          match = undefLiteralProperty.matchTypeError$1(message);
                          t1 = match != null;
                        } else
                          t1 = true;
                      } else
                        t1 = true;
                    } else
                      t1 = true;
                  } else
                    t1 = true;
                } else
                  t1 = true;
              } else
                t1 = true;
            } else
              t1 = true;
            if (t1)
              return A.saveStackTrace(ex, new A.NullError(message, match == null ? _null : match.method));
          }
        }
        return A.saveStackTrace(ex, new A.UnknownJsTypeError(typeof message == "string" ? message : ""));
      }
      if (ex instanceof RangeError) {
        if (typeof message == "string" && message.indexOf("call stack") !== -1)
          return new A.StackOverflowError();
        message = function(ex) {
          try {
            return String(ex);
          } catch (e) {
          }
          return null;
        }(ex);
        return A.saveStackTrace(ex, new A.ArgumentError(false, _null, _null, typeof message == "string" ? message.replace(/^RangeError:\s*/, "") : message));
      }
      if (typeof InternalError == "function" && ex instanceof InternalError)
        if (typeof message == "string" && message === "too much recursion")
          return new A.StackOverflowError();
      return ex;
    },
    getTraceFromException(exception) {
      var trace;
      if (exception instanceof A.ExceptionAndStackTrace)
        return exception.stackTrace;
      if (exception == null)
        return new A._StackTrace(exception);
      trace = exception.$cachedTrace;
      if (trace != null)
        return trace;
      return exception.$cachedTrace = new A._StackTrace(exception);
    },
    objectHashCode(object) {
      if (object == null)
        return J.get$hashCode$(object);
      if (typeof object == "object")
        return A.Primitives_objectHashCode(object);
      return J.get$hashCode$(object);
    },
    constantHashCode(key) {
      if (typeof key == "number")
        return B.JSNumber_methods.get$hashCode(key);
      if (key instanceof A._Type)
        return A.Primitives_objectHashCode(key);
      if (key instanceof A._Record)
        return key.get$hashCode(key);
      if (key instanceof A.Symbol)
        return key.get$hashCode(key);
      return A.objectHashCode(key);
    },
    fillLiteralMap(keyValuePairs, result) {
      var index, index0, index1,
        $length = keyValuePairs.length;
      for (index = 0; index < $length; index = index1) {
        index0 = index + 1;
        index1 = index0 + 1;
        result.$indexSet(0, keyValuePairs[index], keyValuePairs[index0]);
      }
      return result;
    },
    fillLiteralSet(values, result) {
      var index,
        $length = values.length;
      for (index = 0; index < $length; ++index)
        result.add$1(0, values[index]);
      return result;
    },
    invokeClosure(closure, numberOfArguments, arg1, arg2, arg3, arg4) {
      switch (numberOfArguments) {
        case 0:
          return closure.call$0();
        case 1:
          return closure.call$1(arg1);
        case 2:
          return closure.call$2(arg1, arg2);
        case 3:
          return closure.call$3(arg1, arg2, arg3);
        case 4:
          return closure.call$4(arg1, arg2, arg3, arg4);
      }
      throw A.wrapException(new A._Exception("Unsupported number of arguments for wrapped closure"));
    },
    convertDartClosureToJS(closure, arity) {
      var $function;
      if (closure == null)
        return null;
      $function = closure.$identity;
      if (!!$function)
        return $function;
      $function = function(closure, arity, invoke) {
        return function(a1, a2, a3, a4) {
          return invoke(closure, arity, a1, a2, a3, a4);
        };
      }(closure, arity, A.invokeClosure);
      closure.$identity = $function;
      return $function;
    },
    Closure_fromTearOff(parameters) {
      var $prototype, $constructor, t2, trampoline, applyTrampoline, i, stub, stub0, stubName, stubCallName,
        container = parameters.co,
        isStatic = parameters.iS,
        isIntercepted = parameters.iI,
        needsDirectAccess = parameters.nDA,
        applyTrampolineIndex = parameters.aI,
        funsOrNames = parameters.fs,
        callNames = parameters.cs,
        $name = funsOrNames[0],
        callName = callNames[0],
        $function = container[$name],
        t1 = parameters.fT;
      t1.toString;
      $prototype = isStatic ? Object.create(new A.StaticClosure().constructor.prototype) : Object.create(new A.BoundClosure(null, null).constructor.prototype);
      $prototype.$initialize = $prototype.constructor;
      if (isStatic)
        $constructor = function static_tear_off() {
          this.$initialize();
        };
      else
        $constructor = function tear_off(a, b) {
          this.$initialize(a, b);
        };
      $prototype.constructor = $constructor;
      $constructor.prototype = $prototype;
      $prototype.$_name = $name;
      $prototype.$_target = $function;
      t2 = !isStatic;
      if (t2)
        trampoline = A.Closure_forwardCallTo($name, $function, isIntercepted, needsDirectAccess);
      else {
        $prototype.$static_name = $name;
        trampoline = $function;
      }
      $prototype.$signature = A.Closure__computeSignatureFunctionNewRti(t1, isStatic, isIntercepted);
      $prototype[callName] = trampoline;
      for (applyTrampoline = trampoline, i = 1; i < funsOrNames.length; ++i) {
        stub = funsOrNames[i];
        if (typeof stub == "string") {
          stub0 = container[stub];
          stubName = stub;
          stub = stub0;
        } else
          stubName = "";
        stubCallName = callNames[i];
        if (stubCallName != null) {
          if (t2)
            stub = A.Closure_forwardCallTo(stubName, stub, isIntercepted, needsDirectAccess);
          $prototype[stubCallName] = stub;
        }
        if (i === applyTrampolineIndex)
          applyTrampoline = stub;
      }
      $prototype["call*"] = applyTrampoline;
      $prototype.$requiredArgCount = parameters.rC;
      $prototype.$defaultValues = parameters.dV;
      return $constructor;
    },
    Closure__computeSignatureFunctionNewRti(functionType, isStatic, isIntercepted) {
      if (typeof functionType == "number")
        return functionType;
      if (typeof functionType == "string") {
        if (isStatic)
          throw A.wrapException("Cannot compute signature for static tearoff.");
        return function(recipe, evalOnReceiver) {
          return function() {
            return evalOnReceiver(this, recipe);
          };
        }(functionType, A.BoundClosure_evalRecipe);
      }
      throw A.wrapException("Error in functionType of tearoff");
    },
    Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function) {
      var getReceiver = A.BoundClosure_receiverOf;
      switch (needsDirectAccess ? -1 : arity) {
        case 0:
          return function(entry, receiverOf) {
            return function() {
              return receiverOf(this)[entry]();
            };
          }(stubName, getReceiver);
        case 1:
          return function(entry, receiverOf) {
            return function(a) {
              return receiverOf(this)[entry](a);
            };
          }(stubName, getReceiver);
        case 2:
          return function(entry, receiverOf) {
            return function(a, b) {
              return receiverOf(this)[entry](a, b);
            };
          }(stubName, getReceiver);
        case 3:
          return function(entry, receiverOf) {
            return function(a, b, c) {
              return receiverOf(this)[entry](a, b, c);
            };
          }(stubName, getReceiver);
        case 4:
          return function(entry, receiverOf) {
            return function(a, b, c, d) {
              return receiverOf(this)[entry](a, b, c, d);
            };
          }(stubName, getReceiver);
        case 5:
          return function(entry, receiverOf) {
            return function(a, b, c, d, e) {
              return receiverOf(this)[entry](a, b, c, d, e);
            };
          }(stubName, getReceiver);
        default:
          return function(f, receiverOf) {
            return function() {
              return f.apply(receiverOf(this), arguments);
            };
          }($function, getReceiver);
      }
    },
    Closure_forwardCallTo(stubName, $function, isIntercepted, needsDirectAccess) {
      var arity, t1;
      if (isIntercepted)
        return A.Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess);
      arity = $function.length;
      t1 = A.Closure_cspForwardCall(arity, needsDirectAccess, stubName, $function);
      return t1;
    },
    Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function) {
      var getReceiver = A.BoundClosure_receiverOf,
        getInterceptor = A.BoundClosure_interceptorOf;
      switch (needsDirectAccess ? -1 : arity) {
        case 0:
          throw A.wrapException(new A.RuntimeError("Intercepted function with no arguments."));
        case 1:
          return function(entry, interceptorOf, receiverOf) {
            return function() {
              return interceptorOf(this)[entry](receiverOf(this));
            };
          }(stubName, getInterceptor, getReceiver);
        case 2:
          return function(entry, interceptorOf, receiverOf) {
            return function(a) {
              return interceptorOf(this)[entry](receiverOf(this), a);
            };
          }(stubName, getInterceptor, getReceiver);
        case 3:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b) {
              return interceptorOf(this)[entry](receiverOf(this), a, b);
            };
          }(stubName, getInterceptor, getReceiver);
        case 4:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b, c) {
              return interceptorOf(this)[entry](receiverOf(this), a, b, c);
            };
          }(stubName, getInterceptor, getReceiver);
        case 5:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b, c, d) {
              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d);
            };
          }(stubName, getInterceptor, getReceiver);
        case 6:
          return function(entry, interceptorOf, receiverOf) {
            return function(a, b, c, d, e) {
              return interceptorOf(this)[entry](receiverOf(this), a, b, c, d, e);
            };
          }(stubName, getInterceptor, getReceiver);
        default:
          return function(f, interceptorOf, receiverOf) {
            return function() {
              var a = [receiverOf(this)];
              Array.prototype.push.apply(a, arguments);
              return f.apply(interceptorOf(this), a);
            };
          }($function, getInterceptor, getReceiver);
      }
    },
    Closure_forwardInterceptedCallTo(stubName, $function, needsDirectAccess) {
      var arity, t1;
      if ($.BoundClosure__interceptorFieldNameCache == null)
        $.BoundClosure__interceptorFieldNameCache = A.BoundClosure__computeFieldNamed("interceptor");
      if ($.BoundClosure__receiverFieldNameCache == null)
        $.BoundClosure__receiverFieldNameCache = A.BoundClosure__computeFieldNamed("receiver");
      arity = $function.length;
      t1 = A.Closure_cspForwardInterceptedCall(arity, needsDirectAccess, stubName, $function);
      return t1;
    },
    closureFromTearOff(parameters) {
      return A.Closure_fromTearOff(parameters);
    },
    BoundClosure_evalRecipe(closure, recipe) {
      return A._Universe_evalInEnvironment(init.typeUniverse, A.instanceType(closure._receiver), recipe);
    },
    BoundClosure_receiverOf(closure) {
      return closure._receiver;
    },
    BoundClosure_interceptorOf(closure) {
      return closure._interceptor;
    },
    BoundClosure__computeFieldNamed(fieldName) {
      var t1, i, $name,
        template = new A.BoundClosure("receiver", "interceptor"),
        names = J.JSArray_markFixedList(Object.getOwnPropertyNames(template));
      for (t1 = names.length, i = 0; i < t1; ++i) {
        $name = names[i];
        if (template[$name] === fieldName)
          return $name;
      }
      throw A.wrapException(A.ArgumentError$("Field name " + fieldName + " not found.", null));
    },
    throwCyclicInit(staticName) {
      throw A.wrapException(new A._CyclicInitializationError(staticName));
    },
    getIsolateAffinityTag($name) {
      return init.getIsolateTag($name);
    },
    LinkedHashMapKeyIterator$(_map, _modifications) {
      var t1 = new A.LinkedHashMapKeyIterator(_map, _modifications);
      t1._cell = _map._first;
      return t1;
    },
    defineProperty(obj, property, value) {
      Object.defineProperty(obj, property, {value: value, enumerable: false, writable: true, configurable: true});
    },
    lookupAndCacheInterceptor(obj) {
      var interceptor, interceptorClass, altTag, mark, t1,
        tag = $.getTagFunction.call$1(obj),
        record = $.dispatchRecordsForInstanceTags[tag];
      if (record != null) {
        Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
        return record.i;
      }
      interceptor = $.interceptorsForUncacheableTags[tag];
      if (interceptor != null)
        return interceptor;
      interceptorClass = init.interceptorsByTag[tag];
      if (interceptorClass == null) {
        altTag = $.alternateTagFunction.call$2(obj, tag);
        if (altTag != null) {
          record = $.dispatchRecordsForInstanceTags[altTag];
          if (record != null) {
            Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
            return record.i;
          }
          interceptor = $.interceptorsForUncacheableTags[altTag];
          if (interceptor != null)
            return interceptor;
          interceptorClass = init.interceptorsByTag[altTag];
          tag = altTag;
        }
      }
      if (interceptorClass == null)
        return null;
      interceptor = interceptorClass.prototype;
      mark = tag[0];
      if (mark === "!") {
        record = A.makeLeafDispatchRecord(interceptor);
        $.dispatchRecordsForInstanceTags[tag] = record;
        Object.defineProperty(obj, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
        return record.i;
      }
      if (mark === "~") {
        $.interceptorsForUncacheableTags[tag] = interceptor;
        return interceptor;
      }
      if (mark === "-") {
        t1 = A.makeLeafDispatchRecord(interceptor);
        Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
        return t1.i;
      }
      if (mark === "+")
        return A.patchInteriorProto(obj, interceptor);
      if (mark === "*")
        throw A.wrapException(A.UnimplementedError$(tag));
      if (init.leafTags[tag] === true) {
        t1 = A.makeLeafDispatchRecord(interceptor);
        Object.defineProperty(Object.getPrototypeOf(obj), init.dispatchPropertyName, {value: t1, enumerable: false, writable: true, configurable: true});
        return t1.i;
      } else
        return A.patchInteriorProto(obj, interceptor);
    },
    patchInteriorProto(obj, interceptor) {
      var proto = Object.getPrototypeOf(obj);
      Object.defineProperty(proto, init.dispatchPropertyName, {value: J.makeDispatchRecord(interceptor, proto, null, null), enumerable: false, writable: true, configurable: true});
      return interceptor;
    },
    makeLeafDispatchRecord(interceptor) {
      return J.makeDispatchRecord(interceptor, false, null, !!interceptor.$isJavaScriptIndexingBehavior);
    },
    makeDefaultDispatchRecord(tag, interceptorClass, proto) {
      var interceptor = interceptorClass.prototype;
      if (init.leafTags[tag] === true)
        return A.makeLeafDispatchRecord(interceptor);
      else
        return J.makeDispatchRecord(interceptor, proto, null, null);
    },
    initNativeDispatch() {
      if (true === $.initNativeDispatchFlag)
        return;
      $.initNativeDispatchFlag = true;
      A.initNativeDispatchContinue();
    },
    initNativeDispatchContinue() {
      var map, tags, fun, i, tag, proto, record, interceptorClass;
      $.dispatchRecordsForInstanceTags = Object.create(null);
      $.interceptorsForUncacheableTags = Object.create(null);
      A.initHooks();
      map = init.interceptorsByTag;
      tags = Object.getOwnPropertyNames(map);
      if (typeof window != "undefined") {
        window;
        fun = function() {
        };
        for (i = 0; i < tags.length; ++i) {
          tag = tags[i];
          proto = $.prototypeForTagFunction.call$1(tag);
          if (proto != null) {
            record = A.makeDefaultDispatchRecord(tag, map[tag], proto);
            if (record != null) {
              Object.defineProperty(proto, init.dispatchPropertyName, {value: record, enumerable: false, writable: true, configurable: true});
              fun.prototype = proto;
            }
          }
        }
      }
      for (i = 0; i < tags.length; ++i) {
        tag = tags[i];
        if (/^[A-Za-z_]/.test(tag)) {
          interceptorClass = map[tag];
          map["!" + tag] = interceptorClass;
          map["~" + tag] = interceptorClass;
          map["-" + tag] = interceptorClass;
          map["+" + tag] = interceptorClass;
          map["*" + tag] = interceptorClass;
        }
      }
    },
    initHooks() {
      var transformers, i, transformer, getTag, getUnknownTag, prototypeForTag,
        hooks = B.C_JS_CONST0();
      hooks = A.applyHooksTransformer(B.C_JS_CONST1, A.applyHooksTransformer(B.C_JS_CONST2, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST3, A.applyHooksTransformer(B.C_JS_CONST4, A.applyHooksTransformer(B.C_JS_CONST5, A.applyHooksTransformer(B.C_JS_CONST6(B.C_JS_CONST), hooks)))))));
      if (typeof dartNativeDispatchHooksTransformer != "undefined") {
        transformers = dartNativeDispatchHooksTransformer;
        if (typeof transformers == "function")
          transformers = [transformers];
        if (Array.isArray(transformers))
          for (i = 0; i < transformers.length; ++i) {
            transformer = transformers[i];
            if (typeof transformer == "function")
              hooks = transformer(hooks) || hooks;
          }
      }
      getTag = hooks.getTag;
      getUnknownTag = hooks.getUnknownTag;
      prototypeForTag = hooks.prototypeForTag;
      $.getTagFunction = new A.initHooks_closure(getTag);
      $.alternateTagFunction = new A.initHooks_closure0(getUnknownTag);
      $.prototypeForTagFunction = new A.initHooks_closure1(prototypeForTag);
    },
    applyHooksTransformer(transformer, hooks) {
      return transformer(hooks) || hooks;
    },
    _RecordN__equalValues(a, b) {
      var i;
      for (i = 0; i < a.length; ++i)
        if (!J.$eq$(a[i], b[i]))
          return false;
      return true;
    },
    createRecordTypePredicate(shape, fieldRtis) {
      var $length = fieldRtis.length,
        $function = init.rttc["" + $length + ";" + shape];
      if ($function == null)
        return null;
      if ($length === 0)
        return $function;
      if ($length === $function.length)
        return $function.apply(null, fieldRtis);
      return $function(fieldRtis);
    },
    JSSyntaxRegExp_makeNative(source, multiLine, caseSensitive, unicode, dotAll, global) {
      var m = multiLine ? "m" : "",
        i = caseSensitive ? "" : "i",
        u = unicode ? "u" : "",
        s = dotAll ? "s" : "",
        g = global ? "g" : "",
        regexp = function(source, modifiers) {
          try {
            return new RegExp(source, modifiers);
          } catch (e) {
            return e;
          }
        }(source, m + i + u + s + g);
      if (regexp instanceof RegExp)
        return regexp;
      throw A.wrapException(A.FormatException$("Illegal RegExp pattern (" + String(regexp) + ")", source, null));
    },
    stringContainsUnchecked(receiver, other, startIndex) {
      var t1;
      if (typeof other == "string")
        return receiver.indexOf(other, startIndex) >= 0;
      else if (other instanceof A.JSSyntaxRegExp) {
        t1 = B.JSString_methods.substring$1(receiver, startIndex);
        return other._nativeRegExp.test(t1);
      } else {
        t1 = J.allMatches$1$s(other, B.JSString_methods.substring$1(receiver, startIndex));
        return !t1.get$isEmpty(t1);
      }
    },
    escapeReplacement(replacement) {
      if (replacement.indexOf("$", 0) >= 0)
        return replacement.replace(/\$/g, "$$$$");
      return replacement;
    },
    stringReplaceFirstRE(receiver, regexp, replacement, startIndex) {
      var match = regexp._execGlobal$2(receiver, startIndex);
      if (match == null)
        return receiver;
      return A.stringReplaceRangeUnchecked(receiver, match._match.index, match.get$end(match), replacement);
    },
    quoteStringForRegExp(string) {
      if (/[[\]{}()*+?.\\^$|]/.test(string))
        return string.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&");
      return string;
    },
    stringReplaceAllUnchecked(receiver, pattern, replacement) {
      var nativeRegexp;
      if (typeof pattern == "string")
        return A.stringReplaceAllUncheckedString(receiver, pattern, replacement);
      if (pattern instanceof A.JSSyntaxRegExp) {
        nativeRegexp = pattern.get$_nativeGlobalVersion();
        nativeRegexp.lastIndex = 0;
        return receiver.replace(nativeRegexp, A.escapeReplacement(replacement));
      }
      return A.stringReplaceAllGeneral(receiver, pattern, replacement);
    },
    stringReplaceAllGeneral(receiver, pattern, replacement) {
      var t1, startIndex, t2, match;
      for (t1 = J.allMatches$1$s(pattern, receiver), t1 = t1.get$iterator(t1), startIndex = 0, t2 = ""; t1.moveNext$0();) {
        match = t1.get$current(t1);
        t2 = t2 + receiver.substring(startIndex, match.get$start(match)) + replacement;
        startIndex = match.get$end(match);
      }
      t1 = t2 + receiver.substring(startIndex);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    stringReplaceAllUncheckedString(receiver, pattern, replacement) {
      var $length, t1, i;
      if (pattern === "") {
        if (receiver === "")
          return replacement;
        $length = receiver.length;
        t1 = "" + replacement;
        for (i = 0; i < $length; ++i)
          t1 = t1 + receiver[i] + replacement;
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      }
      if (receiver.indexOf(pattern, 0) < 0)
        return receiver;
      if (receiver.length < 500 || replacement.indexOf("$", 0) >= 0)
        return receiver.split(pattern).join(replacement);
      return receiver.replace(new RegExp(A.quoteStringForRegExp(pattern), "g"), A.escapeReplacement(replacement));
    },
    stringReplaceFirstUnchecked(receiver, pattern, replacement, startIndex) {
      var index, t1, matches, match;
      if (typeof pattern == "string") {
        index = receiver.indexOf(pattern, startIndex);
        if (index < 0)
          return receiver;
        return A.stringReplaceRangeUnchecked(receiver, index, index + pattern.length, replacement);
      }
      if (pattern instanceof A.JSSyntaxRegExp)
        return startIndex === 0 ? receiver.replace(pattern._nativeRegExp, A.escapeReplacement(replacement)) : A.stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
      t1 = J.allMatches$2$s(pattern, receiver, startIndex);
      matches = t1.get$iterator(t1);
      if (!matches.moveNext$0())
        return receiver;
      match = matches.get$current(matches);
      return B.JSString_methods.replaceRange$3(receiver, match.get$start(match), match.get$end(match), replacement);
    },
    stringReplaceRangeUnchecked(receiver, start, end, replacement) {
      return receiver.substring(0, start) + replacement + receiver.substring(end);
    },
    _Record_2: function _Record_2(t0, t1) {
      this._0 = t0;
      this._1 = t1;
    },
    _Record_2_forImport: function _Record_2_forImport(t0, t1) {
      this._0 = t0;
      this._1 = t1;
    },
    _Record_2_imports_modules: function _Record_2_imports_modules(t0, t1) {
      this._0 = t0;
      this._1 = t1;
    },
    _Record_2_loadedUrls_stylesheet: function _Record_2_loadedUrls_stylesheet(t0, t1) {
      this._0 = t0;
      this._1 = t1;
    },
    _Record_2_sourceMap: function _Record_2_sourceMap(t0, t1) {
      this._0 = t0;
      this._1 = t1;
    },
    _Record_3: function _Record_3(t0, t1, t2) {
      this._0 = t0;
      this._1 = t1;
      this._2 = t2;
    },
    _Record_3_importer_isDependency: function _Record_3_importer_isDependency(t0, t1, t2) {
      this._0 = t0;
      this._1 = t1;
      this._2 = t2;
    },
    _Record_3_originalUrl: function _Record_3_originalUrl(t0, t1, t2) {
      this._0 = t0;
      this._1 = t1;
      this._2 = t2;
    },
    _Record_4: function _Record_4(t0) {
      this._values = t0;
    },
    _Record_4_baseImporter_baseUrl_forImport: function _Record_4_baseImporter_baseUrl_forImport(t0) {
      this._values = t0;
    },
    _Record_5_named_namedNodes_positional_positionalNodes_separator: function _Record_5_named_namedNodes_positional_positionalNodes_separator(t0) {
      this._values = t0;
    },
    ConstantMapView: function ConstantMapView(t0, t1) {
      this._map = t0;
      this.$ti = t1;
    },
    ConstantMap: function ConstantMap() {
    },
    ConstantStringMap: function ConstantStringMap(t0, t1, t2) {
      this._jsIndex = t0;
      this._values = t1;
      this.$ti = t2;
    },
    _KeysOrValues: function _KeysOrValues(t0, t1) {
      this._elements = t0;
      this.$ti = t1;
    },
    _KeysOrValuesOrElementsIterator: function _KeysOrValuesOrElementsIterator(t0, t1) {
      var _ = this;
      _._elements = t0;
      _.__js_helper$_length = t1;
      _.__js_helper$_index = 0;
      _.__js_helper$_current = null;
    },
    ConstantSet: function ConstantSet() {
    },
    ConstantStringSet: function ConstantStringSet(t0, t1, t2) {
      this._jsIndex = t0;
      this.__js_helper$_length = t1;
      this.$ti = t2;
    },
    GeneralConstantSet: function GeneralConstantSet(t0, t1) {
      this._elements = t0;
      this.$ti = t1;
    },
    Instantiation: function Instantiation() {
    },
    Instantiation1: function Instantiation1(t0, t1) {
      this._genericClosure = t0;
      this.$ti = t1;
    },
    JSInvocationMirror: function JSInvocationMirror(t0, t1, t2, t3, t4) {
      var _ = this;
      _.__js_helper$_memberName = t0;
      _.__js_helper$_kind = t1;
      _._arguments = t2;
      _._namedArgumentNames = t3;
      _._typeArgumentCount = t4;
    },
    Primitives_functionNoSuchMethod_closure: function Primitives_functionNoSuchMethod_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.namedArgumentList = t1;
      this.$arguments = t2;
    },
    TypeErrorDecoder: function TypeErrorDecoder(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._pattern = t0;
      _._arguments = t1;
      _._argumentsExpr = t2;
      _._expr = t3;
      _._method = t4;
      _._receiver = t5;
    },
    NullError: function NullError(t0, t1) {
      this.__js_helper$_message = t0;
      this._method = t1;
    },
    JsNoSuchMethodError: function JsNoSuchMethodError(t0, t1, t2) {
      this.__js_helper$_message = t0;
      this._method = t1;
      this._receiver = t2;
    },
    UnknownJsTypeError: function UnknownJsTypeError(t0) {
      this.__js_helper$_message = t0;
    },
    NullThrownFromJavaScriptException: function NullThrownFromJavaScriptException(t0) {
      this._irritant = t0;
    },
    ExceptionAndStackTrace: function ExceptionAndStackTrace(t0, t1) {
      this.dartException = t0;
      this.stackTrace = t1;
    },
    _StackTrace: function _StackTrace(t0) {
      this._exception = t0;
      this._trace = null;
    },
    Closure: function Closure() {
    },
    Closure0Args: function Closure0Args() {
    },
    Closure2Args: function Closure2Args() {
    },
    TearOffClosure: function TearOffClosure() {
    },
    StaticClosure: function StaticClosure() {
    },
    BoundClosure: function BoundClosure(t0, t1) {
      this._receiver = t0;
      this._interceptor = t1;
    },
    _CyclicInitializationError: function _CyclicInitializationError(t0) {
      this.variableName = t0;
    },
    RuntimeError: function RuntimeError(t0) {
      this.message = t0;
    },
    _Required: function _Required() {
    },
    JsLinkedHashMap: function JsLinkedHashMap(t0) {
      var _ = this;
      _.__js_helper$_length = 0;
      _._last = _._first = _.__js_helper$_rest = _._nums = _._strings = null;
      _._modifications = 0;
      _.$ti = t0;
    },
    JsLinkedHashMap_values_closure: function JsLinkedHashMap_values_closure(t0) {
      this.$this = t0;
    },
    JsLinkedHashMap_addAll_closure: function JsLinkedHashMap_addAll_closure(t0) {
      this.$this = t0;
    },
    LinkedHashMapCell: function LinkedHashMapCell(t0, t1) {
      var _ = this;
      _.hashMapCellKey = t0;
      _.hashMapCellValue = t1;
      _._previous = _._next = null;
    },
    LinkedHashMapKeyIterable: function LinkedHashMapKeyIterable(t0, t1) {
      this.__js_helper$_map = t0;
      this.$ti = t1;
    },
    LinkedHashMapKeyIterator: function LinkedHashMapKeyIterator(t0, t1) {
      var _ = this;
      _.__js_helper$_map = t0;
      _._modifications = t1;
      _.__js_helper$_current = _._cell = null;
    },
    JsIdentityLinkedHashMap: function JsIdentityLinkedHashMap(t0) {
      var _ = this;
      _.__js_helper$_length = 0;
      _._last = _._first = _.__js_helper$_rest = _._nums = _._strings = null;
      _._modifications = 0;
      _.$ti = t0;
    },
    JsConstantLinkedHashMap: function JsConstantLinkedHashMap(t0) {
      var _ = this;
      _.__js_helper$_length = 0;
      _._last = _._first = _.__js_helper$_rest = _._nums = _._strings = null;
      _._modifications = 0;
      _.$ti = t0;
    },
    initHooks_closure: function initHooks_closure(t0) {
      this.getTag = t0;
    },
    initHooks_closure0: function initHooks_closure0(t0) {
      this.getUnknownTag = t0;
    },
    initHooks_closure1: function initHooks_closure1(t0) {
      this.prototypeForTag = t0;
    },
    _Record: function _Record() {
    },
    _Record2: function _Record2() {
    },
    _Record3: function _Record3() {
    },
    _RecordN: function _RecordN() {
    },
    JSSyntaxRegExp: function JSSyntaxRegExp(t0, t1) {
      var _ = this;
      _.pattern = t0;
      _._nativeRegExp = t1;
      _._nativeAnchoredRegExp = _._nativeGlobalRegExp = null;
    },
    _MatchImplementation: function _MatchImplementation(t0) {
      this._match = t0;
    },
    _AllMatchesIterable: function _AllMatchesIterable(t0, t1, t2) {
      this._re = t0;
      this.__js_helper$_string = t1;
      this._start = t2;
    },
    _AllMatchesIterator: function _AllMatchesIterator(t0, t1, t2) {
      var _ = this;
      _._regExp = t0;
      _.__js_helper$_string = t1;
      _._nextIndex = t2;
      _.__js_helper$_current = null;
    },
    StringMatch: function StringMatch(t0, t1) {
      this.start = t0;
      this.pattern = t1;
    },
    _StringAllMatchesIterable: function _StringAllMatchesIterable(t0, t1, t2) {
      this._input = t0;
      this._pattern = t1;
      this.__js_helper$_index = t2;
    },
    _StringAllMatchesIterator: function _StringAllMatchesIterator(t0, t1, t2) {
      var _ = this;
      _._input = t0;
      _._pattern = t1;
      _.__js_helper$_index = t2;
      _.__js_helper$_current = null;
    },
    throwLateFieldADI(fieldName) {
      A.throwExpressionWithWrapper(new A.LateError("Field '" + fieldName + "' has been assigned during initialization."), new Error());
    },
    throwUnnamedLateFieldNI() {
      A.throwExpressionWithWrapper(new A.LateError("Field '' has not been initialized."), new Error());
    },
    throwUnnamedLateFieldAI() {
      A.throwExpressionWithWrapper(new A.LateError("Field '' has already been initialized."), new Error());
    },
    throwUnnamedLateFieldADI() {
      A.throwExpressionWithWrapper(new A.LateError("Field '' has been assigned during initialization."), new Error());
    },
    _Cell$() {
      var t1 = new A._Cell("");
      return t1._value = t1;
    },
    _Cell$named(_name) {
      var t1 = new A._Cell(_name);
      return t1._value = t1;
    },
    _InitializedCell$(_initializer) {
      var t1 = new A._InitializedCell(_initializer);
      return t1._value = t1;
    },
    _Cell: function _Cell(t0) {
      this.__late_helper$_name = t0;
      this._value = null;
    },
    _InitializedCell: function _InitializedCell(t0) {
      this._value = null;
      this._initializer = t0;
    },
    _ensureNativeList(list) {
      return list;
    },
    NativeInt8List__create1(arg) {
      return new Int8Array(arg);
    },
    _checkValidIndex(index, list, $length) {
      if (index >>> 0 !== index || index >= $length)
        throw A.wrapException(A.diagnoseIndexError(list, index));
    },
    _checkValidRange(start, end, $length) {
      var t1;
      if (!(start >>> 0 !== start))
        if (end == null)
          t1 = start > $length;
        else
          t1 = end >>> 0 !== end || start > end || end > $length;
      else
        t1 = true;
      if (t1)
        throw A.wrapException(A.diagnoseRangeError(start, end, $length));
      if (end == null)
        return $length;
      return end;
    },
    NativeByteBuffer: function NativeByteBuffer() {
    },
    NativeTypedData: function NativeTypedData() {
    },
    NativeByteData: function NativeByteData() {
    },
    NativeTypedArray: function NativeTypedArray() {
    },
    NativeTypedArrayOfDouble: function NativeTypedArrayOfDouble() {
    },
    NativeTypedArrayOfInt: function NativeTypedArrayOfInt() {
    },
    NativeFloat32List: function NativeFloat32List() {
    },
    NativeFloat64List: function NativeFloat64List() {
    },
    NativeInt16List: function NativeInt16List() {
    },
    NativeInt32List: function NativeInt32List() {
    },
    NativeInt8List: function NativeInt8List() {
    },
    NativeUint16List: function NativeUint16List() {
    },
    NativeUint32List: function NativeUint32List() {
    },
    NativeUint8ClampedList: function NativeUint8ClampedList() {
    },
    NativeUint8List: function NativeUint8List() {
    },
    _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin() {
    },
    _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin() {
    },
    _NativeTypedArrayOfInt_NativeTypedArray_ListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin() {
    },
    _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin: function _NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin() {
    },
    Rti__getQuestionFromStar(universe, rti) {
      var question = rti._precomputed1;
      return question == null ? rti._precomputed1 = A._Universe__lookupQuestionRti(universe, rti._primary, true) : question;
    },
    Rti__getFutureFromFutureOr(universe, rti) {
      var future = rti._precomputed1;
      return future == null ? rti._precomputed1 = A._Universe__lookupInterfaceRti(universe, "Future", [rti._primary]) : future;
    },
    Rti__isUnionOfFunctionType(rti) {
      var kind = rti._kind;
      if (kind === 6 || kind === 7 || kind === 8)
        return A.Rti__isUnionOfFunctionType(rti._primary);
      return kind === 12 || kind === 13;
    },
    Rti__getCanonicalRecipe(rti) {
      return rti._canonicalRecipe;
    },
    pairwiseIsTest(fieldRtis, values) {
      var i,
        $length = values.length;
      for (i = 0; i < $length; ++i)
        if (!fieldRtis[i]._is(values[i]))
          return false;
      return true;
    },
    findType(recipe) {
      return A._Universe_eval(init.typeUniverse, recipe, false);
    },
    instantiatedGenericFunctionType(genericFunctionRti, instantiationRti) {
      var t1, cache, key, probe, rti;
      if (genericFunctionRti == null)
        return null;
      t1 = instantiationRti._rest;
      cache = genericFunctionRti._bindCache;
      if (cache == null)
        cache = genericFunctionRti._bindCache = new Map();
      key = instantiationRti._canonicalRecipe;
      probe = cache.get(key);
      if (probe != null)
        return probe;
      rti = A._substitute(init.typeUniverse, genericFunctionRti._primary, t1, 0);
      cache.set(key, rti);
      return rti;
    },
    _substitute(universe, rti, typeArguments, depth) {
      var baseType, substitutedBaseType, interfaceTypeArguments, substitutedInterfaceTypeArguments, base, substitutedBase, $arguments, substitutedArguments, returnType, substitutedReturnType, functionParameters, substitutedFunctionParameters, bounds, substitutedBounds, index, argument,
        kind = rti._kind;
      switch (kind) {
        case 5:
        case 1:
        case 2:
        case 3:
        case 4:
          return rti;
        case 6:
          baseType = rti._primary;
          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
          if (substitutedBaseType === baseType)
            return rti;
          return A._Universe__lookupStarRti(universe, substitutedBaseType, true);
        case 7:
          baseType = rti._primary;
          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
          if (substitutedBaseType === baseType)
            return rti;
          return A._Universe__lookupQuestionRti(universe, substitutedBaseType, true);
        case 8:
          baseType = rti._primary;
          substitutedBaseType = A._substitute(universe, baseType, typeArguments, depth);
          if (substitutedBaseType === baseType)
            return rti;
          return A._Universe__lookupFutureOrRti(universe, substitutedBaseType, true);
        case 9:
          interfaceTypeArguments = rti._rest;
          substitutedInterfaceTypeArguments = A._substituteArray(universe, interfaceTypeArguments, typeArguments, depth);
          if (substitutedInterfaceTypeArguments === interfaceTypeArguments)
            return rti;
          return A._Universe__lookupInterfaceRti(universe, rti._primary, substitutedInterfaceTypeArguments);
        case 10:
          base = rti._primary;
          substitutedBase = A._substitute(universe, base, typeArguments, depth);
          $arguments = rti._rest;
          substitutedArguments = A._substituteArray(universe, $arguments, typeArguments, depth);
          if (substitutedBase === base && substitutedArguments === $arguments)
            return rti;
          return A._Universe__lookupBindingRti(universe, substitutedBase, substitutedArguments);
        case 12:
          returnType = rti._primary;
          substitutedReturnType = A._substitute(universe, returnType, typeArguments, depth);
          functionParameters = rti._rest;
          substitutedFunctionParameters = A._substituteFunctionParameters(universe, functionParameters, typeArguments, depth);
          if (substitutedReturnType === returnType && substitutedFunctionParameters === functionParameters)
            return rti;
          return A._Universe__lookupFunctionRti(universe, substitutedReturnType, substitutedFunctionParameters);
        case 13:
          bounds = rti._rest;
          depth += bounds.length;
          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, depth);
          base = rti._primary;
          substitutedBase = A._substitute(universe, base, typeArguments, depth);
          if (substitutedBounds === bounds && substitutedBase === base)
            return rti;
          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, true);
        case 14:
          index = rti._primary;
          if (index < depth)
            return rti;
          argument = typeArguments[index - depth];
          if (argument == null)
            return rti;
          return argument;
        default:
          throw A.wrapException(A.AssertionError$("Attempted to substitute unexpected RTI kind " + kind));
      }
    },
    _substituteArray(universe, rtiArray, typeArguments, depth) {
      var changed, i, rti, substitutedRti,
        $length = rtiArray.length,
        result = A._Utils_newArrayOrEmpty($length);
      for (changed = false, i = 0; i < $length; ++i) {
        rti = rtiArray[i];
        substitutedRti = A._substitute(universe, rti, typeArguments, depth);
        if (substitutedRti !== rti)
          changed = true;
        result[i] = substitutedRti;
      }
      return changed ? result : rtiArray;
    },
    _substituteNamed(universe, namedArray, typeArguments, depth) {
      var changed, i, t1, t2, rti, substitutedRti,
        $length = namedArray.length,
        result = A._Utils_newArrayOrEmpty($length);
      for (changed = false, i = 0; i < $length; i += 3) {
        t1 = namedArray[i];
        t2 = namedArray[i + 1];
        rti = namedArray[i + 2];
        substitutedRti = A._substitute(universe, rti, typeArguments, depth);
        if (substitutedRti !== rti)
          changed = true;
        result.splice(i, 3, t1, t2, substitutedRti);
      }
      return changed ? result : namedArray;
    },
    _substituteFunctionParameters(universe, functionParameters, typeArguments, depth) {
      var result,
        requiredPositional = functionParameters._requiredPositional,
        substitutedRequiredPositional = A._substituteArray(universe, requiredPositional, typeArguments, depth),
        optionalPositional = functionParameters._optionalPositional,
        substitutedOptionalPositional = A._substituteArray(universe, optionalPositional, typeArguments, depth),
        named = functionParameters._named,
        substitutedNamed = A._substituteNamed(universe, named, typeArguments, depth);
      if (substitutedRequiredPositional === requiredPositional && substitutedOptionalPositional === optionalPositional && substitutedNamed === named)
        return functionParameters;
      result = new A._FunctionParameters();
      result._requiredPositional = substitutedRequiredPositional;
      result._optionalPositional = substitutedOptionalPositional;
      result._named = substitutedNamed;
      return result;
    },
    _setArrayType(target, rti) {
      target[init.arrayRti] = rti;
      return target;
    },
    closureFunctionType(closure) {
      var t1,
        signature = closure.$signature;
      if (signature != null) {
        if (typeof signature == "number")
          return A.getTypeFromTypesTable(signature);
        t1 = closure.$signature();
        return t1;
      }
      return null;
    },
    instanceOrFunctionType(object, testRti) {
      var rti;
      if (A.Rti__isUnionOfFunctionType(testRti))
        if (object instanceof A.Closure) {
          rti = A.closureFunctionType(object);
          if (rti != null)
            return rti;
        }
      return A.instanceType(object);
    },
    instanceType(object) {
      if (object instanceof A.Object)
        return A._instanceType(object);
      if (Array.isArray(object))
        return A._arrayInstanceType(object);
      return A._instanceTypeFromConstructor(J.getInterceptor$(object));
    },
    _arrayInstanceType(object) {
      var rti = object[init.arrayRti],
        defaultRti = type$.JSArray_dynamic;
      if (rti == null)
        return defaultRti;
      if (rti.constructor !== defaultRti.constructor)
        return defaultRti;
      return rti;
    },
    _instanceType(object) {
      var rti = object.$ti;
      return rti != null ? rti : A._instanceTypeFromConstructor(object);
    },
    _instanceTypeFromConstructor(instance) {
      var $constructor = instance.constructor,
        probe = $constructor.$ccache;
      if (probe != null)
        return probe;
      return A._instanceTypeFromConstructorMiss(instance, $constructor);
    },
    _instanceTypeFromConstructorMiss(instance, $constructor) {
      var effectiveConstructor = instance instanceof A.Closure ? Object.getPrototypeOf(Object.getPrototypeOf(instance)).constructor : $constructor,
        rti = A._Universe_findErasedType(init.typeUniverse, effectiveConstructor.name);
      $constructor.$ccache = rti;
      return rti;
    },
    getTypeFromTypesTable(index) {
      var rti,
        table = init.types,
        type = table[index];
      if (typeof type == "string") {
        rti = A._Universe_eval(init.typeUniverse, type, false);
        table[index] = rti;
        return rti;
      }
      return type;
    },
    getRuntimeTypeOfDartObject(object) {
      return A.createRuntimeType(A._instanceType(object));
    },
    getRuntimeTypeOfClosure(closure) {
      var rti = A.closureFunctionType(closure);
      return A.createRuntimeType(rti == null ? A.instanceType(closure) : rti);
    },
    _structuralTypeOf(object) {
      var functionRti;
      if (object instanceof A._Record)
        return A.evaluateRtiForRecord(object.$recipe, object._getFieldValues$0());
      functionRti = object instanceof A.Closure ? A.closureFunctionType(object) : null;
      if (functionRti != null)
        return functionRti;
      if (type$.TrustedGetRuntimeType._is(object))
        return J.get$runtimeType$(object)._rti;
      if (Array.isArray(object))
        return A._arrayInstanceType(object);
      return A.instanceType(object);
    },
    createRuntimeType(rti) {
      var t1 = rti._cachedRuntimeType;
      return t1 == null ? rti._cachedRuntimeType = A._createRuntimeType(rti) : t1;
    },
    _createRuntimeType(rti) {
      var starErasedRti, t1,
        s = rti._canonicalRecipe,
        starErasedRecipe = s.replace(/\*/g, "");
      if (starErasedRecipe === s)
        return rti._cachedRuntimeType = new A._Type(rti);
      starErasedRti = A._Universe_eval(init.typeUniverse, starErasedRecipe, true);
      t1 = starErasedRti._cachedRuntimeType;
      return t1 == null ? starErasedRti._cachedRuntimeType = A._createRuntimeType(starErasedRti) : t1;
    },
    evaluateRtiForRecord(recordRecipe, valuesList) {
      var bindings, i,
        values = valuesList,
        $length = values.length;
      if ($length === 0)
        return type$.Record_0;
      bindings = A._Universe_evalInEnvironment(init.typeUniverse, A._structuralTypeOf(values[0]), "@<0>");
      for (i = 1; i < $length; ++i)
        bindings = A._Universe_bind(init.typeUniverse, bindings, A._structuralTypeOf(values[i]));
      return A._Universe_evalInEnvironment(init.typeUniverse, bindings, recordRecipe);
    },
    typeLiteral(recipe) {
      return A.createRuntimeType(A._Universe_eval(init.typeUniverse, recipe, false));
    },
    _installSpecializedIsTest(object) {
      var t1, unstarred, isFn, $name, predicate, testRti = this;
      if (testRti === type$.Object)
        return A._finishIsFn(testRti, object, A._isObject);
      if (!A.isStrongTopType(testRti))
        if (!(testRti === type$.legacy_Object))
          t1 = false;
        else
          t1 = true;
      else
        t1 = true;
      if (t1)
        return A._finishIsFn(testRti, object, A._isTop);
      t1 = testRti._kind;
      if (t1 === 7)
        return A._finishIsFn(testRti, object, A._generalNullableIsTestImplementation);
      if (t1 === 1)
        return A._finishIsFn(testRti, object, A._isNever);
      unstarred = t1 === 6 ? testRti._primary : testRti;
      t1 = unstarred._kind;
      if (t1 === 8)
        return A._finishIsFn(testRti, object, A._isFutureOr);
      if (unstarred === type$.int)
        isFn = A._isInt;
      else if (unstarred === type$.double || unstarred === type$.num)
        isFn = A._isNum;
      else if (unstarred === type$.String)
        isFn = A._isString;
      else
        isFn = unstarred === type$.bool ? A._isBool : null;
      if (isFn != null)
        return A._finishIsFn(testRti, object, isFn);
      if (t1 === 9) {
        $name = unstarred._primary;
        if (unstarred._rest.every(A.isTopType)) {
          testRti._specializedTestResource = "$is" + $name;
          if ($name === "List")
            return A._finishIsFn(testRti, object, A._isListTestViaProperty);
          return A._finishIsFn(testRti, object, A._isTestViaProperty);
        }
      } else if (t1 === 11) {
        predicate = A.createRecordTypePredicate(unstarred._primary, unstarred._rest);
        return A._finishIsFn(testRti, object, predicate == null ? A._isNever : predicate);
      }
      return A._finishIsFn(testRti, object, A._generalIsTestImplementation);
    },
    _finishIsFn(testRti, object, isFn) {
      testRti._is = isFn;
      return testRti._is(object);
    },
    _installSpecializedAsCheck(object) {
      var t1, testRti = this,
        asFn = A._generalAsCheckImplementation;
      if (!A.isStrongTopType(testRti))
        if (!(testRti === type$.legacy_Object))
          t1 = false;
        else
          t1 = true;
      else
        t1 = true;
      if (t1)
        asFn = A._asTop;
      else if (testRti === type$.Object)
        asFn = A._asObject;
      else {
        t1 = A.isNullable(testRti);
        if (t1)
          asFn = A._generalNullableAsCheckImplementation;
      }
      testRti._as = asFn;
      return testRti._as(object);
    },
    _nullIs(testRti) {
      var t1,
        kind = testRti._kind;
      if (!A.isStrongTopType(testRti))
        if (!(testRti === type$.legacy_Object))
          if (!(testRti === type$.legacy_Never))
            if (kind !== 7)
              if (!(kind === 6 && A._nullIs(testRti._primary)))
                t1 = kind === 8 && A._nullIs(testRti._primary) || testRti === type$.Null || testRti === type$.JSNull;
              else
                t1 = true;
            else
              t1 = true;
          else
            t1 = true;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    _generalIsTestImplementation(object) {
      var testRti = this;
      if (object == null)
        return A._nullIs(testRti);
      return A._isSubtype(init.typeUniverse, A.instanceOrFunctionType(object, testRti), null, testRti, null);
    },
    _generalNullableIsTestImplementation(object) {
      if (object == null)
        return true;
      return this._primary._is(object);
    },
    _isTestViaProperty(object) {
      var tag, testRti = this;
      if (object == null)
        return A._nullIs(testRti);
      tag = testRti._specializedTestResource;
      if (object instanceof A.Object)
        return !!object[tag];
      return !!J.getInterceptor$(object)[tag];
    },
    _isListTestViaProperty(object) {
      var tag, testRti = this;
      if (object == null)
        return A._nullIs(testRti);
      if (typeof object != "object")
        return false;
      if (Array.isArray(object))
        return true;
      tag = testRti._specializedTestResource;
      if (object instanceof A.Object)
        return !!object[tag];
      return !!J.getInterceptor$(object)[tag];
    },
    _generalAsCheckImplementation(object) {
      var t1, testRti = this;
      if (object == null) {
        t1 = A.isNullable(testRti);
        if (t1)
          return object;
      } else if (testRti._is(object))
        return object;
      A._failedAsCheck(object, testRti);
    },
    _generalNullableAsCheckImplementation(object) {
      var testRti = this;
      if (object == null)
        return object;
      else if (testRti._is(object))
        return object;
      A._failedAsCheck(object, testRti);
    },
    _failedAsCheck(object, testRti) {
      throw A.wrapException(A._TypeError$fromMessage(A._Error_compose(object, A._rtiToString(testRti, null))));
    },
    _Error_compose(object, checkedTypeDescription) {
      return A.Error_safeToString(object) + ": type '" + A._rtiToString(A._structuralTypeOf(object), null) + "' is not a subtype of type '" + checkedTypeDescription + "'";
    },
    _TypeError$fromMessage(message) {
      return new A._TypeError("TypeError: " + message);
    },
    _TypeError__TypeError$forType(object, type) {
      return new A._TypeError("TypeError: " + A._Error_compose(object, type));
    },
    _isFutureOr(object) {
      var testRti = this,
        unstarred = testRti._kind === 6 ? testRti._primary : testRti;
      return unstarred._primary._is(object) || A.Rti__getFutureFromFutureOr(init.typeUniverse, unstarred)._is(object);
    },
    _isObject(object) {
      return object != null;
    },
    _asObject(object) {
      if (object != null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "Object"));
    },
    _isTop(object) {
      return true;
    },
    _asTop(object) {
      return object;
    },
    _isNever(object) {
      return false;
    },
    _isBool(object) {
      return true === object || false === object;
    },
    _asBool(object) {
      if (true === object)
        return true;
      if (false === object)
        return false;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "bool"));
    },
    _asBoolS(object) {
      if (true === object)
        return true;
      if (false === object)
        return false;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "bool"));
    },
    _asBoolQ(object) {
      if (true === object)
        return true;
      if (false === object)
        return false;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "bool?"));
    },
    _asDouble(object) {
      if (typeof object == "number")
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "double"));
    },
    _asDoubleS(object) {
      if (typeof object == "number")
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "double"));
    },
    _asDoubleQ(object) {
      if (typeof object == "number")
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "double?"));
    },
    _isInt(object) {
      return typeof object == "number" && Math.floor(object) === object;
    },
    _asInt(object) {
      if (typeof object == "number" && Math.floor(object) === object)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "int"));
    },
    _asIntS(object) {
      if (typeof object == "number" && Math.floor(object) === object)
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "int"));
    },
    _asIntQ(object) {
      if (typeof object == "number" && Math.floor(object) === object)
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "int?"));
    },
    _isNum(object) {
      return typeof object == "number";
    },
    _asNum(object) {
      if (typeof object == "number")
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "num"));
    },
    _asNumS(object) {
      if (typeof object == "number")
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "num"));
    },
    _asNumQ(object) {
      if (typeof object == "number")
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "num?"));
    },
    _isString(object) {
      return typeof object == "string";
    },
    _asString(object) {
      if (typeof object == "string")
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "String"));
    },
    _asStringS(object) {
      if (typeof object == "string")
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "String"));
    },
    _asStringQ(object) {
      if (typeof object == "string")
        return object;
      if (object == null)
        return object;
      throw A.wrapException(A._TypeError__TypeError$forType(object, "String?"));
    },
    _rtiArrayToString(array, genericContext) {
      var s, sep, i;
      for (s = "", sep = "", i = 0; i < array.length; ++i, sep = ", ")
        s += sep + A._rtiToString(array[i], genericContext);
      return s;
    },
    _recordRtiToString(recordType, genericContext) {
      var fieldCount, names, namesIndex, s, comma, i,
        partialShape = recordType._primary,
        fields = recordType._rest;
      if ("" === partialShape)
        return "(" + A._rtiArrayToString(fields, genericContext) + ")";
      fieldCount = fields.length;
      names = partialShape.split(",");
      namesIndex = names.length - fieldCount;
      for (s = "(", comma = "", i = 0; i < fieldCount; ++i, comma = ", ") {
        s += comma;
        if (namesIndex === 0)
          s += "{";
        s += A._rtiToString(fields[i], genericContext);
        if (namesIndex >= 0)
          s += " " + names[namesIndex];
        ++namesIndex;
      }
      return s + "})";
    },
    _functionRtiToString(functionType, genericContext, bounds) {
      var boundsLength, outerContextLength, offset, i, t1, t2, typeParametersText, typeSep, boundRti, kind, t3, parameters, requiredPositional, requiredPositionalLength, optionalPositional, optionalPositionalLength, named, namedLength, returnTypeText, argumentsText, sep, _s2_ = ", ";
      if (bounds != null) {
        boundsLength = bounds.length;
        if (genericContext == null) {
          genericContext = A._setArrayType([], type$.JSArray_String);
          outerContextLength = null;
        } else
          outerContextLength = genericContext.length;
        offset = genericContext.length;
        for (i = boundsLength; i > 0; --i)
          genericContext.push("T" + (offset + i));
        for (t1 = type$.nullable_Object, t2 = type$.legacy_Object, typeParametersText = "<", typeSep = "", i = 0; i < boundsLength; ++i, typeSep = _s2_) {
          typeParametersText = B.JSString_methods.$add(typeParametersText + typeSep, genericContext[genericContext.length - 1 - i]);
          boundRti = bounds[i];
          kind = boundRti._kind;
          if (!(kind === 2 || kind === 3 || kind === 4 || kind === 5 || boundRti === t1))
            if (!(boundRti === t2))
              t3 = false;
            else
              t3 = true;
          else
            t3 = true;
          if (!t3)
            typeParametersText += " extends " + A._rtiToString(boundRti, genericContext);
        }
        typeParametersText += ">";
      } else {
        typeParametersText = "";
        outerContextLength = null;
      }
      t1 = functionType._primary;
      parameters = functionType._rest;
      requiredPositional = parameters._requiredPositional;
      requiredPositionalLength = requiredPositional.length;
      optionalPositional = parameters._optionalPositional;
      optionalPositionalLength = optionalPositional.length;
      named = parameters._named;
      namedLength = named.length;
      returnTypeText = A._rtiToString(t1, genericContext);
      for (argumentsText = "", sep = "", i = 0; i < requiredPositionalLength; ++i, sep = _s2_)
        argumentsText += sep + A._rtiToString(requiredPositional[i], genericContext);
      if (optionalPositionalLength > 0) {
        argumentsText += sep + "[";
        for (sep = "", i = 0; i < optionalPositionalLength; ++i, sep = _s2_)
          argumentsText += sep + A._rtiToString(optionalPositional[i], genericContext);
        argumentsText += "]";
      }
      if (namedLength > 0) {
        argumentsText += sep + "{";
        for (sep = "", i = 0; i < namedLength; i += 3, sep = _s2_) {
          argumentsText += sep;
          if (named[i + 1])
            argumentsText += "required ";
          argumentsText += A._rtiToString(named[i + 2], genericContext) + " " + named[i];
        }
        argumentsText += "}";
      }
      if (outerContextLength != null) {
        genericContext.toString;
        genericContext.length = outerContextLength;
      }
      return typeParametersText + "(" + argumentsText + ") => " + returnTypeText;
    },
    _rtiToString(rti, genericContext) {
      var s, questionArgument, argumentKind, $name, $arguments, t1,
        kind = rti._kind;
      if (kind === 5)
        return "erased";
      if (kind === 2)
        return "dynamic";
      if (kind === 3)
        return "void";
      if (kind === 1)
        return "Never";
      if (kind === 4)
        return "any";
      if (kind === 6) {
        s = A._rtiToString(rti._primary, genericContext);
        return s;
      }
      if (kind === 7) {
        questionArgument = rti._primary;
        s = A._rtiToString(questionArgument, genericContext);
        argumentKind = questionArgument._kind;
        return (argumentKind === 12 || argumentKind === 13 ? "(" + s + ")" : s) + "?";
      }
      if (kind === 8)
        return "FutureOr<" + A._rtiToString(rti._primary, genericContext) + ">";
      if (kind === 9) {
        $name = A._unminifyOrTag(rti._primary);
        $arguments = rti._rest;
        return $arguments.length > 0 ? $name + ("<" + A._rtiArrayToString($arguments, genericContext) + ">") : $name;
      }
      if (kind === 11)
        return A._recordRtiToString(rti, genericContext);
      if (kind === 12)
        return A._functionRtiToString(rti, genericContext, null);
      if (kind === 13)
        return A._functionRtiToString(rti._primary, genericContext, rti._rest);
      if (kind === 14) {
        t1 = rti._primary;
        return genericContext[genericContext.length - 1 - t1];
      }
      return "?";
    },
    _unminifyOrTag(rawClassName) {
      var preserved = init.mangledGlobalNames[rawClassName];
      if (preserved != null)
        return preserved;
      return rawClassName;
    },
    _Universe_findRule(universe, targetType) {
      var rule = universe.tR[targetType];
      for (; typeof rule == "string";)
        rule = universe.tR[rule];
      return rule;
    },
    _Universe_findErasedType(universe, cls) {
      var $length, erased, $arguments, i, $interface,
        t1 = universe.eT,
        probe = t1[cls];
      if (probe == null)
        return A._Universe_eval(universe, cls, false);
      else if (typeof probe == "number") {
        $length = probe;
        erased = A._Universe__lookupTerminalRti(universe, 5, "#");
        $arguments = A._Utils_newArrayOrEmpty($length);
        for (i = 0; i < $length; ++i)
          $arguments[i] = erased;
        $interface = A._Universe__lookupInterfaceRti(universe, cls, $arguments);
        t1[cls] = $interface;
        return $interface;
      } else
        return probe;
    },
    _Universe_addRules(universe, rules) {
      return A._Utils_objectAssign(universe.tR, rules);
    },
    _Universe_addErasedTypes(universe, types) {
      return A._Utils_objectAssign(universe.eT, types);
    },
    _Universe_eval(universe, recipe, normalize) {
      var rti,
        t1 = universe.eC,
        probe = t1.get(recipe);
      if (probe != null)
        return probe;
      rti = A._Parser_parse(A._Parser_create(universe, null, recipe, normalize));
      t1.set(recipe, rti);
      return rti;
    },
    _Universe_evalInEnvironment(universe, environment, recipe) {
      var probe, rti,
        cache = environment._evalCache;
      if (cache == null)
        cache = environment._evalCache = new Map();
      probe = cache.get(recipe);
      if (probe != null)
        return probe;
      rti = A._Parser_parse(A._Parser_create(universe, environment, recipe, true));
      cache.set(recipe, rti);
      return rti;
    },
    _Universe_bind(universe, environment, argumentsRti) {
      var argumentsRecipe, probe, rti,
        cache = environment._bindCache;
      if (cache == null)
        cache = environment._bindCache = new Map();
      argumentsRecipe = argumentsRti._canonicalRecipe;
      probe = cache.get(argumentsRecipe);
      if (probe != null)
        return probe;
      rti = A._Universe__lookupBindingRti(universe, environment, argumentsRti._kind === 10 ? argumentsRti._rest : [argumentsRti]);
      cache.set(argumentsRecipe, rti);
      return rti;
    },
    _Universe__installTypeTests(universe, rti) {
      rti._as = A._installSpecializedAsCheck;
      rti._is = A._installSpecializedIsTest;
      return rti;
    },
    _Universe__lookupTerminalRti(universe, kind, key) {
      var rti, t1,
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = kind;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupStarRti(universe, baseType, normalize) {
      var t1,
        key = baseType._canonicalRecipe + "*",
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      t1 = A._Universe__createStarRti(universe, baseType, key, normalize);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__createStarRti(universe, baseType, key, normalize) {
      var baseKind, t1, rti;
      if (normalize) {
        baseKind = baseType._kind;
        if (!A.isStrongTopType(baseType))
          t1 = baseType === type$.Null || baseType === type$.JSNull || baseKind === 7 || baseKind === 6;
        else
          t1 = true;
        if (t1)
          return baseType;
      }
      rti = new A.Rti(null, null);
      rti._kind = 6;
      rti._primary = baseType;
      rti._canonicalRecipe = key;
      return A._Universe__installTypeTests(universe, rti);
    },
    _Universe__lookupQuestionRti(universe, baseType, normalize) {
      var t1,
        key = baseType._canonicalRecipe + "?",
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      t1 = A._Universe__createQuestionRti(universe, baseType, key, normalize);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__createQuestionRti(universe, baseType, key, normalize) {
      var baseKind, t1, starArgument, rti;
      if (normalize) {
        baseKind = baseType._kind;
        if (!A.isStrongTopType(baseType))
          if (!(baseType === type$.Null || baseType === type$.JSNull))
            if (baseKind !== 7)
              t1 = baseKind === 8 && A.isNullable(baseType._primary);
            else
              t1 = true;
          else
            t1 = true;
        else
          t1 = true;
        if (t1)
          return baseType;
        else if (baseKind === 1 || baseType === type$.legacy_Never)
          return type$.Null;
        else if (baseKind === 6) {
          starArgument = baseType._primary;
          if (starArgument._kind === 8 && A.isNullable(starArgument._primary))
            return starArgument;
          else
            return A.Rti__getQuestionFromStar(universe, baseType);
        }
      }
      rti = new A.Rti(null, null);
      rti._kind = 7;
      rti._primary = baseType;
      rti._canonicalRecipe = key;
      return A._Universe__installTypeTests(universe, rti);
    },
    _Universe__lookupFutureOrRti(universe, baseType, normalize) {
      var t1,
        key = baseType._canonicalRecipe + "/",
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      t1 = A._Universe__createFutureOrRti(universe, baseType, key, normalize);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__createFutureOrRti(universe, baseType, key, normalize) {
      var t1, t2, rti;
      if (normalize) {
        t1 = baseType._kind;
        if (!A.isStrongTopType(baseType))
          if (!(baseType === type$.legacy_Object))
            t2 = false;
          else
            t2 = true;
        else
          t2 = true;
        if (t2 || baseType === type$.Object)
          return baseType;
        else if (t1 === 1)
          return A._Universe__lookupInterfaceRti(universe, "Future", [baseType]);
        else if (baseType === type$.Null || baseType === type$.JSNull)
          return type$.nullable_Future_Null;
      }
      rti = new A.Rti(null, null);
      rti._kind = 8;
      rti._primary = baseType;
      rti._canonicalRecipe = key;
      return A._Universe__installTypeTests(universe, rti);
    },
    _Universe__lookupGenericFunctionParameterRti(universe, index) {
      var rti, t1,
        key = "" + index + "^",
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 14;
      rti._primary = index;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__canonicalRecipeJoin($arguments) {
      var s, sep, i,
        $length = $arguments.length;
      for (s = "", sep = "", i = 0; i < $length; ++i, sep = ",")
        s += sep + $arguments[i]._canonicalRecipe;
      return s;
    },
    _Universe__canonicalRecipeJoinNamed($arguments) {
      var s, sep, i, t1, nameSep,
        $length = $arguments.length;
      for (s = "", sep = "", i = 0; i < $length; i += 3, sep = ",") {
        t1 = $arguments[i];
        nameSep = $arguments[i + 1] ? "!" : ":";
        s += sep + t1 + nameSep + $arguments[i + 2]._canonicalRecipe;
      }
      return s;
    },
    _Universe__lookupInterfaceRti(universe, $name, $arguments) {
      var probe, rti, t1,
        s = $name;
      if ($arguments.length > 0)
        s += "<" + A._Universe__canonicalRecipeJoin($arguments) + ">";
      probe = universe.eC.get(s);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 9;
      rti._primary = $name;
      rti._rest = $arguments;
      if ($arguments.length > 0)
        rti._precomputed1 = $arguments[0];
      rti._canonicalRecipe = s;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(s, t1);
      return t1;
    },
    _Universe__lookupBindingRti(universe, base, $arguments) {
      var newBase, newArguments, key, probe, rti, t1;
      if (base._kind === 10) {
        newBase = base._primary;
        newArguments = base._rest.concat($arguments);
      } else {
        newArguments = $arguments;
        newBase = base;
      }
      key = newBase._canonicalRecipe + (";<" + A._Universe__canonicalRecipeJoin(newArguments) + ">");
      probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 10;
      rti._primary = newBase;
      rti._rest = newArguments;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupRecordRti(universe, partialShapeTag, fields) {
      var rti, t1,
        key = "+" + (partialShapeTag + "(" + A._Universe__canonicalRecipeJoin(fields) + ")"),
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 11;
      rti._primary = partialShapeTag;
      rti._rest = fields;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupFunctionRti(universe, returnType, parameters) {
      var sep, key, probe, rti, t1,
        s = returnType._canonicalRecipe,
        requiredPositional = parameters._requiredPositional,
        requiredPositionalLength = requiredPositional.length,
        optionalPositional = parameters._optionalPositional,
        optionalPositionalLength = optionalPositional.length,
        named = parameters._named,
        namedLength = named.length,
        recipe = "(" + A._Universe__canonicalRecipeJoin(requiredPositional);
      if (optionalPositionalLength > 0) {
        sep = requiredPositionalLength > 0 ? "," : "";
        recipe += sep + "[" + A._Universe__canonicalRecipeJoin(optionalPositional) + "]";
      }
      if (namedLength > 0) {
        sep = requiredPositionalLength > 0 ? "," : "";
        recipe += sep + "{" + A._Universe__canonicalRecipeJoinNamed(named) + "}";
      }
      key = s + (recipe + ")");
      probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      rti = new A.Rti(null, null);
      rti._kind = 12;
      rti._primary = returnType;
      rti._rest = parameters;
      rti._canonicalRecipe = key;
      t1 = A._Universe__installTypeTests(universe, rti);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__lookupGenericFunctionRti(universe, baseFunctionType, bounds, normalize) {
      var t1,
        key = baseFunctionType._canonicalRecipe + ("<" + A._Universe__canonicalRecipeJoin(bounds) + ">"),
        probe = universe.eC.get(key);
      if (probe != null)
        return probe;
      t1 = A._Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize);
      universe.eC.set(key, t1);
      return t1;
    },
    _Universe__createGenericFunctionRti(universe, baseFunctionType, bounds, key, normalize) {
      var $length, typeArguments, count, i, bound, substitutedBase, substitutedBounds, rti;
      if (normalize) {
        $length = bounds.length;
        typeArguments = A._Utils_newArrayOrEmpty($length);
        for (count = 0, i = 0; i < $length; ++i) {
          bound = bounds[i];
          if (bound._kind === 1) {
            typeArguments[i] = bound;
            ++count;
          }
        }
        if (count > 0) {
          substitutedBase = A._substitute(universe, baseFunctionType, typeArguments, 0);
          substitutedBounds = A._substituteArray(universe, bounds, typeArguments, 0);
          return A._Universe__lookupGenericFunctionRti(universe, substitutedBase, substitutedBounds, bounds !== substitutedBounds);
        }
      }
      rti = new A.Rti(null, null);
      rti._kind = 13;
      rti._primary = baseFunctionType;
      rti._rest = bounds;
      rti._canonicalRecipe = key;
      return A._Universe__installTypeTests(universe, rti);
    },
    _Parser_create(universe, environment, recipe, normalize) {
      return {u: universe, e: environment, r: recipe, s: [], p: 0, n: normalize};
    },
    _Parser_parse(parser) {
      var t2, i, ch, t3, array, end, item,
        source = parser.r,
        t1 = parser.s;
      for (t2 = source.length, i = 0; i < t2;) {
        ch = source.charCodeAt(i);
        if (ch >= 48 && ch <= 57)
          i = A._Parser_handleDigit(i + 1, ch, source, t1);
        else if ((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124)
          i = A._Parser_handleIdentifier(parser, i, source, t1, false);
        else if (ch === 46)
          i = A._Parser_handleIdentifier(parser, i, source, t1, true);
        else {
          ++i;
          switch (ch) {
            case 44:
              break;
            case 58:
              t1.push(false);
              break;
            case 33:
              t1.push(true);
              break;
            case 59:
              t1.push(A._Parser_toType(parser.u, parser.e, t1.pop()));
              break;
            case 94:
              t1.push(A._Universe__lookupGenericFunctionParameterRti(parser.u, t1.pop()));
              break;
            case 35:
              t1.push(A._Universe__lookupTerminalRti(parser.u, 5, "#"));
              break;
            case 64:
              t1.push(A._Universe__lookupTerminalRti(parser.u, 2, "@"));
              break;
            case 126:
              t1.push(A._Universe__lookupTerminalRti(parser.u, 3, "~"));
              break;
            case 60:
              t1.push(parser.p);
              parser.p = t1.length;
              break;
            case 62:
              A._Parser_handleTypeArguments(parser, t1);
              break;
            case 38:
              A._Parser_handleExtendedOperations(parser, t1);
              break;
            case 42:
              t3 = parser.u;
              t1.push(A._Universe__lookupStarRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n));
              break;
            case 63:
              t3 = parser.u;
              t1.push(A._Universe__lookupQuestionRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n));
              break;
            case 47:
              t3 = parser.u;
              t1.push(A._Universe__lookupFutureOrRti(t3, A._Parser_toType(t3, parser.e, t1.pop()), parser.n));
              break;
            case 40:
              t1.push(-3);
              t1.push(parser.p);
              parser.p = t1.length;
              break;
            case 41:
              A._Parser_handleArguments(parser, t1);
              break;
            case 91:
              t1.push(parser.p);
              parser.p = t1.length;
              break;
            case 93:
              array = t1.splice(parser.p);
              A._Parser_toTypes(parser.u, parser.e, array);
              parser.p = t1.pop();
              t1.push(array);
              t1.push(-1);
              break;
            case 123:
              t1.push(parser.p);
              parser.p = t1.length;
              break;
            case 125:
              array = t1.splice(parser.p);
              A._Parser_toTypesNamed(parser.u, parser.e, array);
              parser.p = t1.pop();
              t1.push(array);
              t1.push(-2);
              break;
            case 43:
              end = source.indexOf("(", i);
              t1.push(source.substring(i, end));
              t1.push(-4);
              t1.push(parser.p);
              parser.p = t1.length;
              i = end + 1;
              break;
            default:
              throw "Bad character " + ch;
          }
        }
      }
      item = t1.pop();
      return A._Parser_toType(parser.u, parser.e, item);
    },
    _Parser_handleDigit(i, digit, source, stack) {
      var t1, ch,
        value = digit - 48;
      for (t1 = source.length; i < t1; ++i) {
        ch = source.charCodeAt(i);
        if (!(ch >= 48 && ch <= 57))
          break;
        value = value * 10 + (ch - 48);
      }
      stack.push(value);
      return i;
    },
    _Parser_handleIdentifier(parser, start, source, stack, hasPeriod) {
      var t1, ch, t2, string, environment, recipe,
        i = start + 1;
      for (t1 = source.length; i < t1; ++i) {
        ch = source.charCodeAt(i);
        if (ch === 46) {
          if (hasPeriod)
            break;
          hasPeriod = true;
        } else {
          if (!((((ch | 32) >>> 0) - 97 & 65535) < 26 || ch === 95 || ch === 36 || ch === 124))
            t2 = ch >= 48 && ch <= 57;
          else
            t2 = true;
          if (!t2)
            break;
        }
      }
      string = source.substring(start, i);
      if (hasPeriod) {
        t1 = parser.u;
        environment = parser.e;
        if (environment._kind === 10)
          environment = environment._primary;
        recipe = A._Universe_findRule(t1, environment._primary)[string];
        if (recipe == null)
          A.throwExpression('No "' + string + '" in "' + A.Rti__getCanonicalRecipe(environment) + '"');
        stack.push(A._Universe_evalInEnvironment(t1, environment, recipe));
      } else
        stack.push(string);
      return i;
    },
    _Parser_handleTypeArguments(parser, stack) {
      var base,
        t1 = parser.u,
        $arguments = A._Parser_collectArray(parser, stack),
        head = stack.pop();
      if (typeof head == "string")
        stack.push(A._Universe__lookupInterfaceRti(t1, head, $arguments));
      else {
        base = A._Parser_toType(t1, parser.e, head);
        switch (base._kind) {
          case 12:
            stack.push(A._Universe__lookupGenericFunctionRti(t1, base, $arguments, parser.n));
            break;
          default:
            stack.push(A._Universe__lookupBindingRti(t1, base, $arguments));
            break;
        }
      }
    },
    _Parser_handleArguments(parser, stack) {
      var optionalPositional, named, requiredPositional, returnType, parameters, _null = null,
        t1 = parser.u,
        head = stack.pop();
      if (typeof head == "number")
        switch (head) {
          case -1:
            optionalPositional = stack.pop();
            named = _null;
            break;
          case -2:
            named = stack.pop();
            optionalPositional = _null;
            break;
          default:
            stack.push(head);
            named = _null;
            optionalPositional = named;
            break;
        }
      else {
        stack.push(head);
        named = _null;
        optionalPositional = named;
      }
      requiredPositional = A._Parser_collectArray(parser, stack);
      head = stack.pop();
      switch (head) {
        case -3:
          head = stack.pop();
          if (optionalPositional == null)
            optionalPositional = t1.sEA;
          if (named == null)
            named = t1.sEA;
          returnType = A._Parser_toType(t1, parser.e, head);
          parameters = new A._FunctionParameters();
          parameters._requiredPositional = requiredPositional;
          parameters._optionalPositional = optionalPositional;
          parameters._named = named;
          stack.push(A._Universe__lookupFunctionRti(t1, returnType, parameters));
          return;
        case -4:
          stack.push(A._Universe__lookupRecordRti(t1, stack.pop(), requiredPositional));
          return;
        default:
          throw A.wrapException(A.AssertionError$("Unexpected state under `()`: " + A.S(head)));
      }
    },
    _Parser_handleExtendedOperations(parser, stack) {
      var $top = stack.pop();
      if (0 === $top) {
        stack.push(A._Universe__lookupTerminalRti(parser.u, 1, "0&"));
        return;
      }
      if (1 === $top) {
        stack.push(A._Universe__lookupTerminalRti(parser.u, 4, "1&"));
        return;
      }
      throw A.wrapException(A.AssertionError$("Unexpected extended operation " + A.S($top)));
    },
    _Parser_collectArray(parser, stack) {
      var array = stack.splice(parser.p);
      A._Parser_toTypes(parser.u, parser.e, array);
      parser.p = stack.pop();
      return array;
    },
    _Parser_toType(universe, environment, item) {
      if (typeof item == "string")
        return A._Universe__lookupInterfaceRti(universe, item, universe.sEA);
      else if (typeof item == "number") {
        environment.toString;
        return A._Parser_indexToType(universe, environment, item);
      } else
        return item;
    },
    _Parser_toTypes(universe, environment, items) {
      var i,
        $length = items.length;
      for (i = 0; i < $length; ++i)
        items[i] = A._Parser_toType(universe, environment, items[i]);
    },
    _Parser_toTypesNamed(universe, environment, items) {
      var i,
        $length = items.length;
      for (i = 2; i < $length; i += 3)
        items[i] = A._Parser_toType(universe, environment, items[i]);
    },
    _Parser_indexToType(universe, environment, index) {
      var typeArguments, len,
        kind = environment._kind;
      if (kind === 10) {
        if (index === 0)
          return environment._primary;
        typeArguments = environment._rest;
        len = typeArguments.length;
        if (index <= len)
          return typeArguments[index - 1];
        index -= len;
        environment = environment._primary;
        kind = environment._kind;
      } else if (index === 0)
        return environment;
      if (kind !== 9)
        throw A.wrapException(A.AssertionError$("Indexed base must be an interface type"));
      typeArguments = environment._rest;
      if (index <= typeArguments.length)
        return typeArguments[index - 1];
      throw A.wrapException(A.AssertionError$("Bad index " + index + " for " + environment.toString$0(0)));
    },
    _isSubtype(universe, s, sEnv, t, tEnv) {
      var t1, sKind, leftTypeVariable, tKind, t2, sBounds, tBounds, sLength, i, sBound, tBound;
      if (s === t)
        return true;
      if (!A.isStrongTopType(t))
        if (!(t === type$.legacy_Object))
          t1 = false;
        else
          t1 = true;
      else
        t1 = true;
      if (t1)
        return true;
      sKind = s._kind;
      if (sKind === 4)
        return true;
      if (A.isStrongTopType(s))
        return false;
      if (s._kind !== 1)
        t1 = false;
      else
        t1 = true;
      if (t1)
        return true;
      leftTypeVariable = sKind === 14;
      if (leftTypeVariable)
        if (A._isSubtype(universe, sEnv[s._primary], sEnv, t, tEnv))
          return true;
      tKind = t._kind;
      t1 = s === type$.Null || s === type$.JSNull;
      if (t1) {
        if (tKind === 8)
          return A._isSubtype(universe, s, sEnv, t._primary, tEnv);
        return t === type$.Null || t === type$.JSNull || tKind === 7 || tKind === 6;
      }
      if (t === type$.Object) {
        if (sKind === 8)
          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
        if (sKind === 6)
          return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
        return sKind !== 7;
      }
      if (sKind === 6)
        return A._isSubtype(universe, s._primary, sEnv, t, tEnv);
      if (tKind === 6) {
        t1 = A.Rti__getQuestionFromStar(universe, t);
        return A._isSubtype(universe, s, sEnv, t1, tEnv);
      }
      if (sKind === 8) {
        if (!A._isSubtype(universe, s._primary, sEnv, t, tEnv))
          return false;
        return A._isSubtype(universe, A.Rti__getFutureFromFutureOr(universe, s), sEnv, t, tEnv);
      }
      if (sKind === 7) {
        t1 = A._isSubtype(universe, type$.Null, sEnv, t, tEnv);
        return t1 && A._isSubtype(universe, s._primary, sEnv, t, tEnv);
      }
      if (tKind === 8) {
        if (A._isSubtype(universe, s, sEnv, t._primary, tEnv))
          return true;
        return A._isSubtype(universe, s, sEnv, A.Rti__getFutureFromFutureOr(universe, t), tEnv);
      }
      if (tKind === 7) {
        t1 = A._isSubtype(universe, s, sEnv, type$.Null, tEnv);
        return t1 || A._isSubtype(universe, s, sEnv, t._primary, tEnv);
      }
      if (leftTypeVariable)
        return false;
      t1 = sKind !== 12;
      if ((!t1 || sKind === 13) && t === type$.Function)
        return true;
      t2 = sKind === 11;
      if (t2 && t === type$.Record)
        return true;
      if (tKind === 13) {
        if (s === type$.JavaScriptFunction)
          return true;
        if (sKind !== 13)
          return false;
        sBounds = s._rest;
        tBounds = t._rest;
        sLength = sBounds.length;
        if (sLength !== tBounds.length)
          return false;
        sEnv = sEnv == null ? sBounds : sBounds.concat(sEnv);
        tEnv = tEnv == null ? tBounds : tBounds.concat(tEnv);
        for (i = 0; i < sLength; ++i) {
          sBound = sBounds[i];
          tBound = tBounds[i];
          if (!A._isSubtype(universe, sBound, sEnv, tBound, tEnv) || !A._isSubtype(universe, tBound, tEnv, sBound, sEnv))
            return false;
        }
        return A._isFunctionSubtype(universe, s._primary, sEnv, t._primary, tEnv);
      }
      if (tKind === 12) {
        if (s === type$.JavaScriptFunction)
          return true;
        if (t1)
          return false;
        return A._isFunctionSubtype(universe, s, sEnv, t, tEnv);
      }
      if (sKind === 9) {
        if (tKind !== 9)
          return false;
        return A._isInterfaceSubtype(universe, s, sEnv, t, tEnv);
      }
      if (t2 && tKind === 11)
        return A._isRecordSubtype(universe, s, sEnv, t, tEnv);
      return false;
    },
    _isFunctionSubtype(universe, s, sEnv, t, tEnv) {
      var sParameters, tParameters, sRequiredPositional, tRequiredPositional, sRequiredPositionalLength, tRequiredPositionalLength, requiredPositionalDelta, sOptionalPositional, tOptionalPositional, sOptionalPositionalLength, tOptionalPositionalLength, i, t1, sNamed, tNamed, sNamedLength, tNamedLength, sIndex, tIndex, tName, sName, sIsRequired;
      if (!A._isSubtype(universe, s._primary, sEnv, t._primary, tEnv))
        return false;
      sParameters = s._rest;
      tParameters = t._rest;
      sRequiredPositional = sParameters._requiredPositional;
      tRequiredPositional = tParameters._requiredPositional;
      sRequiredPositionalLength = sRequiredPositional.length;
      tRequiredPositionalLength = tRequiredPositional.length;
      if (sRequiredPositionalLength > tRequiredPositionalLength)
        return false;
      requiredPositionalDelta = tRequiredPositionalLength - sRequiredPositionalLength;
      sOptionalPositional = sParameters._optionalPositional;
      tOptionalPositional = tParameters._optionalPositional;
      sOptionalPositionalLength = sOptionalPositional.length;
      tOptionalPositionalLength = tOptionalPositional.length;
      if (sRequiredPositionalLength + sOptionalPositionalLength < tRequiredPositionalLength + tOptionalPositionalLength)
        return false;
      for (i = 0; i < sRequiredPositionalLength; ++i) {
        t1 = sRequiredPositional[i];
        if (!A._isSubtype(universe, tRequiredPositional[i], tEnv, t1, sEnv))
          return false;
      }
      for (i = 0; i < requiredPositionalDelta; ++i) {
        t1 = sOptionalPositional[i];
        if (!A._isSubtype(universe, tRequiredPositional[sRequiredPositionalLength + i], tEnv, t1, sEnv))
          return false;
      }
      for (i = 0; i < tOptionalPositionalLength; ++i) {
        t1 = sOptionalPositional[requiredPositionalDelta + i];
        if (!A._isSubtype(universe, tOptionalPositional[i], tEnv, t1, sEnv))
          return false;
      }
      sNamed = sParameters._named;
      tNamed = tParameters._named;
      sNamedLength = sNamed.length;
      tNamedLength = tNamed.length;
      for (sIndex = 0, tIndex = 0; tIndex < tNamedLength; tIndex += 3) {
        tName = tNamed[tIndex];
        for (; true;) {
          if (sIndex >= sNamedLength)
            return false;
          sName = sNamed[sIndex];
          sIndex += 3;
          if (tName < sName)
            return false;
          sIsRequired = sNamed[sIndex - 2];
          if (sName < tName) {
            if (sIsRequired)
              return false;
            continue;
          }
          t1 = tNamed[tIndex + 1];
          if (sIsRequired && !t1)
            return false;
          t1 = sNamed[sIndex - 1];
          if (!A._isSubtype(universe, tNamed[tIndex + 2], tEnv, t1, sEnv))
            return false;
          break;
        }
      }
      for (; sIndex < sNamedLength;) {
        if (sNamed[sIndex + 1])
          return false;
        sIndex += 3;
      }
      return true;
    },
    _isInterfaceSubtype(universe, s, sEnv, t, tEnv) {
      var rule, recipes, $length, supertypeArgs, i, t1, t2,
        sName = s._primary,
        tName = t._primary;
      for (; sName !== tName;) {
        rule = universe.tR[sName];
        if (rule == null)
          return false;
        if (typeof rule == "string") {
          sName = rule;
          continue;
        }
        recipes = rule[tName];
        if (recipes == null)
          return false;
        $length = recipes.length;
        supertypeArgs = $length > 0 ? new Array($length) : init.typeUniverse.sEA;
        for (i = 0; i < $length; ++i)
          supertypeArgs[i] = A._Universe_evalInEnvironment(universe, s, recipes[i]);
        return A._areArgumentsSubtypes(universe, supertypeArgs, null, sEnv, t._rest, tEnv);
      }
      t1 = s._rest;
      t2 = t._rest;
      return A._areArgumentsSubtypes(universe, t1, null, sEnv, t2, tEnv);
    },
    _areArgumentsSubtypes(universe, sArgs, sVariances, sEnv, tArgs, tEnv) {
      var i, t1, t2,
        $length = sArgs.length;
      for (i = 0; i < $length; ++i) {
        t1 = sArgs[i];
        t2 = tArgs[i];
        if (!A._isSubtype(universe, t1, sEnv, t2, tEnv))
          return false;
      }
      return true;
    },
    _isRecordSubtype(universe, s, sEnv, t, tEnv) {
      var i,
        sFields = s._rest,
        tFields = t._rest,
        sCount = sFields.length;
      if (sCount !== tFields.length)
        return false;
      if (s._primary !== t._primary)
        return false;
      for (i = 0; i < sCount; ++i)
        if (!A._isSubtype(universe, sFields[i], sEnv, tFields[i], tEnv))
          return false;
      return true;
    },
    isNullable(t) {
      var t1,
        kind = t._kind;
      if (!(t === type$.Null || t === type$.JSNull))
        if (!A.isStrongTopType(t))
          if (kind !== 7)
            if (!(kind === 6 && A.isNullable(t._primary)))
              t1 = kind === 8 && A.isNullable(t._primary);
            else
              t1 = true;
          else
            t1 = true;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    isTopType(t) {
      var t1;
      if (!A.isStrongTopType(t))
        if (!(t === type$.legacy_Object))
          t1 = false;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    isStrongTopType(t) {
      var kind = t._kind;
      return kind === 2 || kind === 3 || kind === 4 || kind === 5 || t === type$.nullable_Object;
    },
    _Utils_objectAssign(o, other) {
      var i, key,
        keys = Object.keys(other),
        $length = keys.length;
      for (i = 0; i < $length; ++i) {
        key = keys[i];
        o[key] = other[key];
      }
    },
    _Utils_newArrayOrEmpty($length) {
      return $length > 0 ? new Array($length) : init.typeUniverse.sEA;
    },
    Rti: function Rti(t0, t1) {
      var _ = this;
      _._as = t0;
      _._is = t1;
      _._cachedRuntimeType = _._specializedTestResource = _._precomputed1 = null;
      _._kind = 0;
      _._canonicalRecipe = _._bindCache = _._evalCache = _._rest = _._primary = null;
    },
    _FunctionParameters: function _FunctionParameters() {
      this._named = this._optionalPositional = this._requiredPositional = null;
    },
    _Type: function _Type(t0) {
      this._rti = t0;
    },
    _Error: function _Error() {
    },
    _TypeError: function _TypeError(t0) {
      this.__rti$_message = t0;
    },
    _AsyncRun__initializeScheduleImmediate() {
      var div, span, t1 = {};
      if (self.scheduleImmediate != null)
        return A.async__AsyncRun__scheduleImmediateJsOverride$closure();
      if (self.MutationObserver != null && self.document != null) {
        div = self.document.createElement("div");
        span = self.document.createElement("span");
        t1.storedCallback = null;
        new self.MutationObserver(A.convertDartClosureToJS(new A._AsyncRun__initializeScheduleImmediate_internalCallback(t1), 1)).observe(div, {childList: true});
        return new A._AsyncRun__initializeScheduleImmediate_closure(t1, div, span);
      } else if (self.setImmediate != null)
        return A.async__AsyncRun__scheduleImmediateWithSetImmediate$closure();
      return A.async__AsyncRun__scheduleImmediateWithTimer$closure();
    },
    _AsyncRun__scheduleImmediateJsOverride(callback) {
      self.scheduleImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateJsOverride_internalCallback(callback), 0));
    },
    _AsyncRun__scheduleImmediateWithSetImmediate(callback) {
      self.setImmediate(A.convertDartClosureToJS(new A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(callback), 0));
    },
    _AsyncRun__scheduleImmediateWithTimer(callback) {
      A.Timer__createTimer(B.Duration_0, callback);
    },
    Timer__createTimer(duration, callback) {
      var milliseconds = B.JSInt_methods._tdivFast$1(duration._duration, 1000);
      return A._TimerImpl$(milliseconds < 0 ? 0 : milliseconds, callback);
    },
    _TimerImpl$(milliseconds, callback) {
      var t1 = new A._TimerImpl(true);
      t1._TimerImpl$2(milliseconds, callback);
      return t1;
    },
    _TimerImpl$periodic(milliseconds, callback) {
      var t1 = new A._TimerImpl(false);
      t1._TimerImpl$periodic$2(milliseconds, callback);
      return t1;
    },
    _makeAsyncAwaitCompleter($T) {
      return new A._AsyncAwaitCompleter(new A._Future($.Zone__current, $T._eval$1("_Future<0>")), $T._eval$1("_AsyncAwaitCompleter<0>"));
    },
    _asyncStartSync(bodyFunction, completer) {
      bodyFunction.call$2(0, null);
      completer.isSync = true;
      return completer._future;
    },
    _asyncAwait(object, bodyFunction) {
      A._awaitOnObject(object, bodyFunction);
    },
    _asyncReturn(object, completer) {
      completer.complete$1(object);
    },
    _asyncRethrow(object, completer) {
      completer.completeError$2(A.unwrapException(object), A.getTraceFromException(object));
    },
    _awaitOnObject(object, bodyFunction) {
      var t1, future,
        thenCallback = new A._awaitOnObject_closure(bodyFunction),
        errorCallback = new A._awaitOnObject_closure0(bodyFunction);
      if (object instanceof A._Future)
        object._thenAwait$1$2(thenCallback, errorCallback, type$.dynamic);
      else {
        t1 = type$.dynamic;
        if (object instanceof A._Future)
          object.then$1$2$onError(0, thenCallback, errorCallback, t1);
        else {
          future = new A._Future($.Zone__current, type$._Future_dynamic);
          future._state = 8;
          future._resultOrListeners = object;
          future._thenAwait$1$2(thenCallback, errorCallback, t1);
        }
      }
    },
    _wrapJsFunctionForAsync($function) {
      var $protected = function(fn, ERROR) {
        return function(errorCode, result) {
          while (true)
            try {
              fn(errorCode, result);
              break;
            } catch (error) {
              result = error;
              errorCode = ERROR;
            }
        };
      }($function, 1);
      return $.Zone__current.registerBinaryCallback$3$1(new A._wrapJsFunctionForAsync_closure($protected), type$.void, type$.int, type$.dynamic);
    },
    _SyncStarIterator__terminatedBody(_1, _2, _3) {
      return 0;
    },
    AsyncError$(error, stackTrace) {
      var t1 = A.checkNotNullable(error, "error", type$.Object);
      return new A.AsyncError(t1, stackTrace == null ? A.AsyncError_defaultStackTrace(error) : stackTrace);
    },
    AsyncError_defaultStackTrace(error) {
      var stackTrace;
      if (type$.Error._is(error)) {
        stackTrace = error.get$stackTrace();
        if (stackTrace != null)
          return stackTrace;
      }
      return B._StringStackTrace_3uE;
    },
    Future_Future$value(value, $T) {
      var t1;
      $T._as(value);
      t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
      t1._asyncComplete$1(value);
      return t1;
    },
    Future_Future$error(error, stackTrace, $T) {
      var t1, replacement;
      A.checkNotNullable(error, "error", type$.Object);
      t1 = $.Zone__current;
      if (t1 !== B.C__RootZone) {
        replacement = t1.errorCallback$2(error, stackTrace);
        if (replacement != null) {
          error = replacement.error;
          stackTrace = replacement.stackTrace;
        }
      }
      if (stackTrace == null)
        stackTrace = A.AsyncError_defaultStackTrace(error);
      t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>"));
      t1._asyncCompleteError$2(error, stackTrace);
      return t1;
    },
    Future_wait(futures, eagerError, $T) {
      var error, stackTrace, handleError, future, pos, e, st, t1, t2, exception, _box_0 = {}, cleanUp = null,
        _future = new A._Future($.Zone__current, $T._eval$1("_Future<List<0>>"));
      _box_0.values = null;
      _box_0.remaining = 0;
      error = A._Cell$named("error");
      stackTrace = A._Cell$named("stackTrace");
      handleError = new A.Future_wait_handleError(_box_0, cleanUp, eagerError, _future, error, stackTrace);
      try {
        for (t1 = J.get$iterator$ax(futures), t2 = type$.Null; t1.moveNext$0();) {
          future = t1.get$current(t1);
          pos = _box_0.remaining;
          J.then$1$2$onError$x(future, new A.Future_wait_closure(_box_0, pos, _future, cleanUp, eagerError, error, stackTrace, $T), handleError, t2);
          ++_box_0.remaining;
        }
        t1 = _box_0.remaining;
        if (t1 === 0) {
          t1 = _future;
          t1._completeWithValue$1(A._setArrayType([], $T._eval$1("JSArray<0>")));
          return t1;
        }
        _box_0.values = A.List_List$filled(t1, null, false, $T._eval$1("0?"));
      } catch (exception) {
        e = A.unwrapException(exception);
        st = A.getTraceFromException(exception);
        if (_box_0.remaining === 0 || eagerError)
          return A.Future_Future$error(e, st, $T._eval$1("List<0>"));
        else {
          error._value = e;
          stackTrace._value = st;
        }
      }
      return _future;
    },
    _Future$zoneValue(value, _zone, $T) {
      var t1 = new A._Future(_zone, $T._eval$1("_Future<0>"));
      t1._state = 8;
      t1._resultOrListeners = value;
      return t1;
    },
    _Future__chainCoreFutureSync(source, target) {
      var t1, listeners;
      for (; t1 = source._state, (t1 & 4) !== 0;)
        source = source._resultOrListeners;
      if ((t1 & 24) !== 0) {
        listeners = target._removeListeners$0();
        target._cloneResult$1(source);
        A._Future__propagateToListeners(target, listeners);
      } else {
        listeners = target._resultOrListeners;
        target._setChained$1(source);
        source._prependListeners$1(listeners);
      }
    },
    _Future__chainCoreFutureAsync(source, target) {
      var t2, listeners, _box_0 = {},
        t1 = _box_0.source = source;
      for (; t2 = t1._state, (t2 & 4) !== 0;) {
        t1 = t1._resultOrListeners;
        _box_0.source = t1;
      }
      if ((t2 & 24) === 0) {
        listeners = target._resultOrListeners;
        target._setChained$1(t1);
        _box_0.source._prependListeners$1(listeners);
        return;
      }
      if ((t2 & 16) === 0 && target._resultOrListeners == null) {
        target._cloneResult$1(t1);
        return;
      }
      target._state ^= 2;
      target._zone.scheduleMicrotask$1(new A._Future__chainCoreFutureAsync_closure(_box_0, target));
    },
    _Future__propagateToListeners(source, listeners) {
      var _box_0, t2, t3, hasError, nextListener, nextListener0, sourceResult, t4, zone, oldZone, result, current, _box_1 = {},
        t1 = _box_1.source = source;
      for (; true;) {
        _box_0 = {};
        t2 = t1._state;
        t3 = (t2 & 16) === 0;
        hasError = !t3;
        if (listeners == null) {
          if (hasError && (t2 & 1) === 0) {
            t2 = t1._resultOrListeners;
            t1._zone.handleUncaughtError$2(t2.error, t2.stackTrace);
          }
          return;
        }
        _box_0.listener = listeners;
        nextListener = listeners._nextListener;
        for (t1 = listeners; nextListener != null; t1 = nextListener, nextListener = nextListener0) {
          t1._nextListener = null;
          A._Future__propagateToListeners(_box_1.source, t1);
          _box_0.listener = nextListener;
          nextListener0 = nextListener._nextListener;
        }
        t2 = _box_1.source;
        sourceResult = t2._resultOrListeners;
        _box_0.listenerHasError = hasError;
        _box_0.listenerValueOrError = sourceResult;
        if (t3) {
          t4 = t1.state;
          t4 = (t4 & 1) !== 0 || (t4 & 15) === 8;
        } else
          t4 = true;
        if (t4) {
          zone = t1.result._zone;
          if (hasError) {
            t1 = t2._zone;
            t1 = !(t1 === zone || t1.get$errorZone() === zone.get$errorZone());
          } else
            t1 = false;
          if (t1) {
            t1 = _box_1.source;
            t2 = t1._resultOrListeners;
            t1._zone.handleUncaughtError$2(t2.error, t2.stackTrace);
            return;
          }
          oldZone = $.Zone__current;
          if (oldZone !== zone)
            $.Zone__current = zone;
          else
            oldZone = null;
          t1 = _box_0.listener.state;
          if ((t1 & 15) === 8)
            new A._Future__propagateToListeners_handleWhenCompleteCallback(_box_0, _box_1, hasError).call$0();
          else if (t3) {
            if ((t1 & 1) !== 0)
              new A._Future__propagateToListeners_handleValueCallback(_box_0, sourceResult).call$0();
          } else if ((t1 & 2) !== 0)
            new A._Future__propagateToListeners_handleError(_box_1, _box_0).call$0();
          if (oldZone != null)
            $.Zone__current = oldZone;
          t1 = _box_0.listenerValueOrError;
          if (t1 instanceof A._Future) {
            t2 = _box_0.listener.$ti;
            t2 = t2._eval$1("Future<2>")._is(t1) || !t2._rest[1]._is(t1);
          } else
            t2 = false;
          if (t2) {
            result = _box_0.listener.result;
            if ((t1._state & 24) !== 0) {
              current = result._resultOrListeners;
              result._resultOrListeners = null;
              listeners = result._reverseListeners$1(current);
              result._state = t1._state & 30 | result._state & 1;
              result._resultOrListeners = t1._resultOrListeners;
              _box_1.source = t1;
              continue;
            } else
              A._Future__chainCoreFutureSync(t1, result);
            return;
          }
        }
        result = _box_0.listener.result;
        current = result._resultOrListeners;
        result._resultOrListeners = null;
        listeners = result._reverseListeners$1(current);
        t1 = _box_0.listenerHasError;
        t2 = _box_0.listenerValueOrError;
        if (!t1) {
          result._state = 8;
          result._resultOrListeners = t2;
        } else {
          result._state = result._state & 1 | 16;
          result._resultOrListeners = t2;
        }
        _box_1.source = result;
        t1 = result;
      }
    },
    _registerErrorHandler(errorHandler, zone) {
      if (type$.dynamic_Function_Object_StackTrace._is(errorHandler))
        return zone.registerBinaryCallback$3$1(errorHandler, type$.dynamic, type$.Object, type$.StackTrace);
      if (type$.dynamic_Function_Object._is(errorHandler))
        return zone.registerUnaryCallback$2$1(errorHandler, type$.dynamic, type$.Object);
      throw A.wrapException(A.ArgumentError$value(errorHandler, "onError", string$.Error_));
    },
    _microtaskLoop() {
      var entry, next;
      for (entry = $._nextCallback; entry != null; entry = $._nextCallback) {
        $._lastPriorityCallback = null;
        next = entry.next;
        $._nextCallback = next;
        if (next == null)
          $._lastCallback = null;
        entry.callback.call$0();
      }
    },
    _startMicrotaskLoop() {
      $._isInCallbackLoop = true;
      try {
        A._microtaskLoop();
      } finally {
        $._lastPriorityCallback = null;
        $._isInCallbackLoop = false;
        if ($._nextCallback != null)
          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure());
      }
    },
    _scheduleAsyncCallback(callback) {
      var newEntry = new A._AsyncCallbackEntry(callback),
        lastCallback = $._lastCallback;
      if (lastCallback == null) {
        $._nextCallback = $._lastCallback = newEntry;
        if (!$._isInCallbackLoop)
          $.$get$_AsyncRun__scheduleImmediateClosure().call$1(A.async___startMicrotaskLoop$closure());
      } else
        $._lastCallback = lastCallback.next = newEntry;
    },
    _schedulePriorityAsyncCallback(callback) {
      var entry, lastPriorityCallback, next,
        t1 = $._nextCallback;
      if (t1 == null) {
        A._scheduleAsyncCallback(callback);
        $._lastPriorityCallback = $._lastCallback;
        return;
      }
      entry = new A._AsyncCallbackEntry(callback);
      lastPriorityCallback = $._lastPriorityCallback;
      if (lastPriorityCallback == null) {
        entry.next = t1;
        $._nextCallback = $._lastPriorityCallback = entry;
      } else {
        next = lastPriorityCallback.next;
        entry.next = next;
        $._lastPriorityCallback = lastPriorityCallback.next = entry;
        if (next == null)
          $._lastCallback = entry;
      }
    },
    scheduleMicrotask(callback) {
      var t1, _null = null,
        currentZone = $.Zone__current;
      if (B.C__RootZone === currentZone) {
        A._rootScheduleMicrotask(_null, _null, B.C__RootZone, callback);
        return;
      }
      if (B.C__RootZone === currentZone.get$_scheduleMicrotask().zone)
        t1 = B.C__RootZone.get$errorZone() === currentZone.get$errorZone();
      else
        t1 = false;
      if (t1) {
        A._rootScheduleMicrotask(_null, _null, currentZone, currentZone.registerCallback$1$1(callback, type$.void));
        return;
      }
      t1 = $.Zone__current;
      t1.scheduleMicrotask$1(t1.bindCallbackGuarded$1(callback));
    },
    Stream_Stream$fromFuture(future, $T) {
      var _null = null,
        t1 = $T._eval$1("_SyncStreamController<0>"),
        controller = new A._SyncStreamController(_null, _null, _null, _null, t1);
      future.then$1$2$onError(0, new A.Stream_Stream$fromFuture_closure(controller, $T), new A.Stream_Stream$fromFuture_closure0(controller), type$.Null);
      return new A._ControllerStream(controller, t1._eval$1("_ControllerStream<1>"));
    },
    StreamIterator_StreamIterator(stream) {
      return new A._StreamIterator(A.checkNotNullable(stream, "stream", type$.Object));
    },
    StreamController_StreamController(onCancel, onListen, onPause, onResume, sync, $T) {
      return sync ? new A._SyncStreamController(onListen, onPause, onResume, onCancel, $T._eval$1("_SyncStreamController<0>")) : new A._AsyncStreamController(onListen, onPause, onResume, onCancel, $T._eval$1("_AsyncStreamController<0>"));
    },
    _runGuarded(notificationHandler) {
      var e, s, exception;
      if (notificationHandler == null)
        return;
      try {
        notificationHandler.call$0();
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        $.Zone__current.handleUncaughtError$2(e, s);
      }
    },
    _ControllerSubscription$(_controller, onData, onError, onDone, cancelOnError, $T) {
      var t1 = $.Zone__current,
        t2 = cancelOnError ? 1 : 0,
        t3 = A._BufferingStreamSubscription__registerDataHandler(t1, onData, $T),
        t4 = A._BufferingStreamSubscription__registerErrorHandler(t1, onError),
        t5 = onDone == null ? A.async___nullDoneHandler$closure() : onDone;
      return new A._ControllerSubscription(_controller, t3, t4, t1.registerCallback$1$1(t5, type$.void), t1, t2, $T._eval$1("_ControllerSubscription<0>"));
    },
    _AddStreamState_makeErrorHandler(controller) {
      return new A._AddStreamState_makeErrorHandler_closure(controller);
    },
    _BufferingStreamSubscription__registerDataHandler(zone, handleData, $T) {
      var t1 = handleData == null ? A.async___nullDataHandler$closure() : handleData;
      return zone.registerUnaryCallback$2$1(t1, type$.void, $T);
    },
    _BufferingStreamSubscription__registerErrorHandler(zone, handleError) {
      if (handleError == null)
        handleError = A.async___nullErrorHandler$closure();
      if (type$.void_Function_Object_StackTrace._is(handleError))
        return zone.registerBinaryCallback$3$1(handleError, type$.dynamic, type$.Object, type$.StackTrace);
      if (type$.void_Function_Object._is(handleError))
        return zone.registerUnaryCallback$2$1(handleError, type$.dynamic, type$.Object);
      throw A.wrapException(A.ArgumentError$("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.", null));
    },
    _nullDataHandler(value) {
    },
    _nullErrorHandler(error, stackTrace) {
      $.Zone__current.handleUncaughtError$2(error, stackTrace);
    },
    _nullDoneHandler() {
    },
    Timer_Timer(duration, callback) {
      var t1 = $.Zone__current;
      if (t1 === B.C__RootZone)
        return t1.createTimer$2(duration, callback);
      return t1.createTimer$2(duration, t1.bindCallbackGuarded$1(callback));
    },
    _rootHandleUncaughtError($self, $parent, zone, error, stackTrace) {
      A._rootHandleError(error, stackTrace);
    },
    _rootHandleError(error, stackTrace) {
      A._schedulePriorityAsyncCallback(new A._rootHandleError_closure(error, stackTrace));
    },
    _rootRun($self, $parent, zone, f) {
      var old,
        t1 = $.Zone__current;
      if (t1 === zone)
        return f.call$0();
      $.Zone__current = zone;
      old = t1;
      try {
        t1 = f.call$0();
        return t1;
      } finally {
        $.Zone__current = old;
      }
    },
    _rootRunUnary($self, $parent, zone, f, arg) {
      var old,
        t1 = $.Zone__current;
      if (t1 === zone)
        return f.call$1(arg);
      $.Zone__current = zone;
      old = t1;
      try {
        t1 = f.call$1(arg);
        return t1;
      } finally {
        $.Zone__current = old;
      }
    },
    _rootRunBinary($self, $parent, zone, f, arg1, arg2) {
      var old,
        t1 = $.Zone__current;
      if (t1 === zone)
        return f.call$2(arg1, arg2);
      $.Zone__current = zone;
      old = t1;
      try {
        t1 = f.call$2(arg1, arg2);
        return t1;
      } finally {
        $.Zone__current = old;
      }
    },
    _rootRegisterCallback($self, $parent, zone, f) {
      return f;
    },
    _rootRegisterUnaryCallback($self, $parent, zone, f) {
      return f;
    },
    _rootRegisterBinaryCallback($self, $parent, zone, f) {
      return f;
    },
    _rootErrorCallback($self, $parent, zone, error, stackTrace) {
      return null;
    },
    _rootScheduleMicrotask($self, $parent, zone, f) {
      var t1, t2;
      if (B.C__RootZone !== zone) {
        t1 = B.C__RootZone.get$errorZone();
        t2 = zone.get$errorZone();
        f = t1 !== t2 ? zone.bindCallbackGuarded$1(f) : zone.bindCallback$1$1(f, type$.void);
      }
      A._scheduleAsyncCallback(f);
    },
    _rootCreateTimer($self, $parent, zone, duration, callback) {
      return A.Timer__createTimer(duration, B.C__RootZone !== zone ? zone.bindCallback$1$1(callback, type$.void) : callback);
    },
    _rootCreatePeriodicTimer($self, $parent, zone, duration, callback) {
      var milliseconds;
      if (B.C__RootZone !== zone)
        callback = zone.bindUnaryCallback$2$1(callback, type$.void, type$.Timer);
      milliseconds = B.JSInt_methods._tdivFast$1(duration._duration, 1000);
      return A._TimerImpl$periodic(milliseconds < 0 ? 0 : milliseconds, callback);
    },
    _rootPrint($self, $parent, zone, line) {
      A.printString(line);
    },
    _printToZone(line) {
      $.Zone__current.print$1(line);
    },
    _rootFork($self, $parent, zone, specification, zoneValues) {
      var valueMap, t1, handleUncaughtError;
      $.printToZone = A.async___printToZone$closure();
      if (specification == null)
        specification = B._ZoneSpecification_ALf;
      if (zoneValues == null)
        valueMap = zone.get$_async$_map();
      else {
        t1 = type$.nullable_Object;
        valueMap = A.HashMap_HashMap$from(zoneValues, t1, t1);
      }
      t1 = new A._CustomZone(zone.get$_run(), zone.get$_runUnary(), zone.get$_runBinary(), zone.get$_registerCallback(), zone.get$_registerUnaryCallback(), zone.get$_registerBinaryCallback(), zone.get$_errorCallback(), zone.get$_scheduleMicrotask(), zone.get$_createTimer(), zone.get$_createPeriodicTimer(), zone.get$_print(), zone.get$_fork(), zone.get$_handleUncaughtError(), zone, valueMap);
      handleUncaughtError = specification.handleUncaughtError;
      if (handleUncaughtError != null)
        t1._handleUncaughtError = new A._ZoneFunction(t1, handleUncaughtError);
      return t1;
    },
    runZoned(body, zoneValues, $R) {
      A.checkNotNullable(body, "body", $R._eval$1("0()"));
      return A._runZoned(body, zoneValues, null, $R);
    },
    _runZoned(body, zoneValues, specification, $R) {
      return $.Zone__current.fork$2$specification$zoneValues(specification, zoneValues).run$1$1(0, body, $R);
    },
    _AsyncRun__initializeScheduleImmediate_internalCallback: function _AsyncRun__initializeScheduleImmediate_internalCallback(t0) {
      this._box_0 = t0;
    },
    _AsyncRun__initializeScheduleImmediate_closure: function _AsyncRun__initializeScheduleImmediate_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.div = t1;
      this.span = t2;
    },
    _AsyncRun__scheduleImmediateJsOverride_internalCallback: function _AsyncRun__scheduleImmediateJsOverride_internalCallback(t0) {
      this.callback = t0;
    },
    _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback: function _AsyncRun__scheduleImmediateWithSetImmediate_internalCallback(t0) {
      this.callback = t0;
    },
    _TimerImpl: function _TimerImpl(t0) {
      this._once = t0;
      this._handle = null;
      this._tick = 0;
    },
    _TimerImpl_internalCallback: function _TimerImpl_internalCallback(t0, t1) {
      this.$this = t0;
      this.callback = t1;
    },
    _TimerImpl$periodic_closure: function _TimerImpl$periodic_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.milliseconds = t1;
      _.start = t2;
      _.callback = t3;
    },
    _AsyncAwaitCompleter: function _AsyncAwaitCompleter(t0, t1) {
      this._future = t0;
      this.isSync = false;
      this.$ti = t1;
    },
    _awaitOnObject_closure: function _awaitOnObject_closure(t0) {
      this.bodyFunction = t0;
    },
    _awaitOnObject_closure0: function _awaitOnObject_closure0(t0) {
      this.bodyFunction = t0;
    },
    _wrapJsFunctionForAsync_closure: function _wrapJsFunctionForAsync_closure(t0) {
      this.$protected = t0;
    },
    _SyncStarIterator: function _SyncStarIterator(t0) {
      var _ = this;
      _._body = t0;
      _._suspendedBodies = _._nestedIterator = _._datum = _._async$_current = null;
    },
    _SyncStarIterable: function _SyncStarIterable(t0, t1) {
      this._outerHelper = t0;
      this.$ti = t1;
    },
    AsyncError: function AsyncError(t0, t1) {
      this.error = t0;
      this.stackTrace = t1;
    },
    Future_wait_handleError: function Future_wait_handleError(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.cleanUp = t1;
      _.eagerError = t2;
      _._future = t3;
      _.error = t4;
      _.stackTrace = t5;
    },
    Future_wait_closure: function Future_wait_closure(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _._box_0 = t0;
      _.pos = t1;
      _._future = t2;
      _.cleanUp = t3;
      _.eagerError = t4;
      _.error = t5;
      _.stackTrace = t6;
      _.T = t7;
    },
    _Completer: function _Completer() {
    },
    _AsyncCompleter: function _AsyncCompleter(t0, t1) {
      this.future = t0;
      this.$ti = t1;
    },
    _SyncCompleter: function _SyncCompleter(t0, t1) {
      this.future = t0;
      this.$ti = t1;
    },
    _FutureListener: function _FutureListener(t0, t1, t2, t3, t4) {
      var _ = this;
      _._nextListener = null;
      _.result = t0;
      _.state = t1;
      _.callback = t2;
      _.errorCallback = t3;
      _.$ti = t4;
    },
    _Future: function _Future(t0, t1) {
      var _ = this;
      _._state = 0;
      _._zone = t0;
      _._resultOrListeners = null;
      _.$ti = t1;
    },
    _Future__addListener_closure: function _Future__addListener_closure(t0, t1) {
      this.$this = t0;
      this.listener = t1;
    },
    _Future__prependListeners_closure: function _Future__prependListeners_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _Future__chainForeignFuture_closure: function _Future__chainForeignFuture_closure(t0) {
      this.$this = t0;
    },
    _Future__chainForeignFuture_closure0: function _Future__chainForeignFuture_closure0(t0) {
      this.$this = t0;
    },
    _Future__chainForeignFuture_closure1: function _Future__chainForeignFuture_closure1(t0, t1, t2) {
      this.$this = t0;
      this.e = t1;
      this.s = t2;
    },
    _Future__chainCoreFutureAsync_closure: function _Future__chainCoreFutureAsync_closure(t0, t1) {
      this._box_0 = t0;
      this.target = t1;
    },
    _Future__asyncCompleteWithValue_closure: function _Future__asyncCompleteWithValue_closure(t0, t1) {
      this.$this = t0;
      this.value = t1;
    },
    _Future__asyncCompleteError_closure: function _Future__asyncCompleteError_closure(t0, t1, t2) {
      this.$this = t0;
      this.error = t1;
      this.stackTrace = t2;
    },
    _Future__propagateToListeners_handleWhenCompleteCallback: function _Future__propagateToListeners_handleWhenCompleteCallback(t0, t1, t2) {
      this._box_0 = t0;
      this._box_1 = t1;
      this.hasError = t2;
    },
    _Future__propagateToListeners_handleWhenCompleteCallback_closure: function _Future__propagateToListeners_handleWhenCompleteCallback_closure(t0) {
      this.originalSource = t0;
    },
    _Future__propagateToListeners_handleValueCallback: function _Future__propagateToListeners_handleValueCallback(t0, t1) {
      this._box_0 = t0;
      this.sourceResult = t1;
    },
    _Future__propagateToListeners_handleError: function _Future__propagateToListeners_handleError(t0, t1) {
      this._box_1 = t0;
      this._box_0 = t1;
    },
    _AsyncCallbackEntry: function _AsyncCallbackEntry(t0) {
      this.callback = t0;
      this.next = null;
    },
    Stream: function Stream() {
    },
    Stream_Stream$fromFuture_closure: function Stream_Stream$fromFuture_closure(t0, t1) {
      this.controller = t0;
      this.T = t1;
    },
    Stream_Stream$fromFuture_closure0: function Stream_Stream$fromFuture_closure0(t0) {
      this.controller = t0;
    },
    Stream_length_closure: function Stream_length_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    Stream_length_closure0: function Stream_length_closure0(t0, t1) {
      this._box_0 = t0;
      this.future = t1;
    },
    _StreamController: function _StreamController() {
    },
    _StreamController__subscribe_closure: function _StreamController__subscribe_closure(t0) {
      this.$this = t0;
    },
    _StreamController__recordCancel_complete: function _StreamController__recordCancel_complete(t0) {
      this.$this = t0;
    },
    _SyncStreamControllerDispatch: function _SyncStreamControllerDispatch() {
    },
    _AsyncStreamControllerDispatch: function _AsyncStreamControllerDispatch() {
    },
    _AsyncStreamController: function _AsyncStreamController(t0, t1, t2, t3, t4) {
      var _ = this;
      _._varData = null;
      _._state = 0;
      _._doneFuture = null;
      _.onListen = t0;
      _.onPause = t1;
      _.onResume = t2;
      _.onCancel = t3;
      _.$ti = t4;
    },
    _SyncStreamController: function _SyncStreamController(t0, t1, t2, t3, t4) {
      var _ = this;
      _._varData = null;
      _._state = 0;
      _._doneFuture = null;
      _.onListen = t0;
      _.onPause = t1;
      _.onResume = t2;
      _.onCancel = t3;
      _.$ti = t4;
    },
    _ControllerStream: function _ControllerStream(t0, t1) {
      this._controller = t0;
      this.$ti = t1;
    },
    _ControllerSubscription: function _ControllerSubscription(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._controller = t0;
      _._onData = t1;
      _._onError = t2;
      _._onDone = t3;
      _._zone = t4;
      _._state = t5;
      _._pending = _._cancelFuture = null;
      _.$ti = t6;
    },
    _AddStreamState: function _AddStreamState() {
    },
    _AddStreamState_makeErrorHandler_closure: function _AddStreamState_makeErrorHandler_closure(t0) {
      this.controller = t0;
    },
    _AddStreamState_cancel_closure: function _AddStreamState_cancel_closure(t0) {
      this.$this = t0;
    },
    _StreamControllerAddStreamState: function _StreamControllerAddStreamState(t0, t1, t2) {
      this.varData = t0;
      this.addStreamFuture = t1;
      this.addSubscription = t2;
    },
    _BufferingStreamSubscription: function _BufferingStreamSubscription() {
    },
    _BufferingStreamSubscription__sendError_sendError: function _BufferingStreamSubscription__sendError_sendError(t0, t1, t2) {
      this.$this = t0;
      this.error = t1;
      this.stackTrace = t2;
    },
    _BufferingStreamSubscription__sendDone_sendDone: function _BufferingStreamSubscription__sendDone_sendDone(t0) {
      this.$this = t0;
    },
    _StreamImpl: function _StreamImpl() {
    },
    _DelayedEvent: function _DelayedEvent() {
    },
    _DelayedData: function _DelayedData(t0) {
      this.value = t0;
      this.next = null;
    },
    _DelayedError: function _DelayedError(t0, t1) {
      this.error = t0;
      this.stackTrace = t1;
      this.next = null;
    },
    _DelayedDone: function _DelayedDone() {
    },
    _PendingEvents: function _PendingEvents() {
      this._state = 0;
      this.lastPendingEvent = this.firstPendingEvent = null;
    },
    _PendingEvents_schedule_closure: function _PendingEvents_schedule_closure(t0, t1) {
      this.$this = t0;
      this.dispatch = t1;
    },
    _StreamIterator: function _StreamIterator(t0) {
      this._subscription = null;
      this._stateData = t0;
      this._async$_hasValue = false;
    },
    _ForwardingStream: function _ForwardingStream() {
    },
    _ForwardingStreamSubscription: function _ForwardingStreamSubscription(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._stream = t0;
      _._subscription = null;
      _._onData = t1;
      _._onError = t2;
      _._onDone = t3;
      _._zone = t4;
      _._state = t5;
      _._pending = _._cancelFuture = null;
      _.$ti = t6;
    },
    _ExpandStream: function _ExpandStream(t0, t1, t2) {
      this._expand = t0;
      this._async$_source = t1;
      this.$ti = t2;
    },
    _ZoneFunction: function _ZoneFunction(t0, t1) {
      this.zone = t0;
      this.$function = t1;
    },
    _ZoneSpecification: function _ZoneSpecification(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {
      var _ = this;
      _.handleUncaughtError = t0;
      _.run = t1;
      _.runUnary = t2;
      _.runBinary = t3;
      _.registerCallback = t4;
      _.registerUnaryCallback = t5;
      _.registerBinaryCallback = t6;
      _.errorCallback = t7;
      _.scheduleMicrotask = t8;
      _.createTimer = t9;
      _.createPeriodicTimer = t10;
      _.print = t11;
      _.fork = t12;
    },
    _ZoneDelegate: function _ZoneDelegate(t0) {
      this._delegationTarget = t0;
    },
    _Zone: function _Zone() {
    },
    _CustomZone: function _CustomZone(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) {
      var _ = this;
      _._run = t0;
      _._runUnary = t1;
      _._runBinary = t2;
      _._registerCallback = t3;
      _._registerUnaryCallback = t4;
      _._registerBinaryCallback = t5;
      _._errorCallback = t6;
      _._scheduleMicrotask = t7;
      _._createTimer = t8;
      _._createPeriodicTimer = t9;
      _._print = t10;
      _._fork = t11;
      _._handleUncaughtError = t12;
      _._delegateCache = null;
      _.parent = t13;
      _._async$_map = t14;
    },
    _CustomZone_bindCallback_closure: function _CustomZone_bindCallback_closure(t0, t1, t2) {
      this.$this = t0;
      this.registered = t1;
      this.R = t2;
    },
    _CustomZone_bindUnaryCallback_closure: function _CustomZone_bindUnaryCallback_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.registered = t1;
      _.T = t2;
      _.R = t3;
    },
    _CustomZone_bindCallbackGuarded_closure: function _CustomZone_bindCallbackGuarded_closure(t0, t1) {
      this.$this = t0;
      this.registered = t1;
    },
    _rootHandleError_closure: function _rootHandleError_closure(t0, t1) {
      this.error = t0;
      this.stackTrace = t1;
    },
    _RootZone: function _RootZone() {
    },
    _RootZone_bindCallback_closure: function _RootZone_bindCallback_closure(t0, t1, t2) {
      this.$this = t0;
      this.f = t1;
      this.R = t2;
    },
    _RootZone_bindUnaryCallback_closure: function _RootZone_bindUnaryCallback_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.f = t1;
      _.T = t2;
      _.R = t3;
    },
    _RootZone_bindCallbackGuarded_closure: function _RootZone_bindCallbackGuarded_closure(t0, t1) {
      this.$this = t0;
      this.f = t1;
    },
    HashMap_HashMap($K, $V) {
      return new A._HashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("_HashMap<1,2>"));
    },
    _HashMap__getTableEntry(table, key) {
      var entry = table[key];
      return entry === table ? null : entry;
    },
    _HashMap__setTableEntry(table, key, value) {
      if (value == null)
        table[key] = table;
      else
        table[key] = value;
    },
    _HashMap__newHashTable() {
      var table = Object.create(null);
      A._HashMap__setTableEntry(table, "<non-identifier-key>", table);
      delete table["<non-identifier-key>"];
      return table;
    },
    LinkedHashMap_LinkedHashMap(equals, hashCode, isValidKey, $K, $V) {
      if (isValidKey == null)
        if (hashCode == null) {
          if (equals == null)
            return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"));
          hashCode = A.collection___defaultHashCode$closure();
        } else {
          if (A.core__identityHashCode$closure() === hashCode && A.core__identical$closure() === equals)
            return new A.JsIdentityLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsIdentityLinkedHashMap<1,2>"));
          if (equals == null)
            equals = A.collection___defaultEquals$closure();
        }
      else {
        if (hashCode == null)
          hashCode = A.collection___defaultHashCode$closure();
        if (equals == null)
          equals = A.collection___defaultEquals$closure();
      }
      return A._LinkedCustomHashMap$(equals, hashCode, isValidKey, $K, $V);
    },
    LinkedHashMap_LinkedHashMap$_literal(keyValuePairs, $K, $V) {
      return A.fillLiteralMap(keyValuePairs, new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>")));
    },
    LinkedHashMap_LinkedHashMap$_empty($K, $V) {
      return new A.JsLinkedHashMap($K._eval$1("@<0>")._bind$1($V)._eval$1("JsLinkedHashMap<1,2>"));
    },
    _LinkedCustomHashMap$(_equals, _hashCode, validKey, $K, $V) {
      var t1 = validKey != null ? validKey : new A._LinkedCustomHashMap_closure($K);
      return new A._LinkedCustomHashMap(_equals, _hashCode, t1, $K._eval$1("@<0>")._bind$1($V)._eval$1("_LinkedCustomHashMap<1,2>"));
    },
    LinkedHashSet_LinkedHashSet($E) {
      return new A._LinkedHashSet($E._eval$1("_LinkedHashSet<0>"));
    },
    LinkedHashSet_LinkedHashSet$_empty($E) {
      return new A._LinkedHashSet($E._eval$1("_LinkedHashSet<0>"));
    },
    LinkedHashSet_LinkedHashSet$_literal(values, $E) {
      return A.fillLiteralSet(values, new A._LinkedHashSet($E._eval$1("_LinkedHashSet<0>")));
    },
    _LinkedHashSet__newHashTable() {
      var table = Object.create(null);
      table["<non-identifier-key>"] = table;
      delete table["<non-identifier-key>"];
      return table;
    },
    _LinkedHashSetIterator$(_set, _modifications) {
      var t1 = new A._LinkedHashSetIterator(_set, _modifications);
      t1._collection$_cell = _set._collection$_first;
      return t1;
    },
    UnmodifiableListView$(source, $E) {
      return new A.UnmodifiableListView(source, $E._eval$1("UnmodifiableListView<0>"));
    },
    _defaultEquals(a, b) {
      return J.$eq$(a, b);
    },
    _defaultHashCode(a) {
      return J.get$hashCode$(a);
    },
    HashMap_HashMap$from(other, $K, $V) {
      var result = A.HashMap_HashMap($K, $V);
      other.forEach$1(0, new A.HashMap_HashMap$from_closure(result, $K, $V));
      return result;
    },
    LinkedHashMap_LinkedHashMap$from(other, $K, $V) {
      var result = A.LinkedHashMap_LinkedHashMap(null, null, null, $K, $V);
      other.forEach$1(0, new A.LinkedHashMap_LinkedHashMap$from_closure(result, $K, $V));
      return result;
    },
    LinkedHashMap_LinkedHashMap$of(other, $K, $V) {
      var t1 = A.LinkedHashMap_LinkedHashMap(null, null, null, $K, $V);
      t1.addAll$1(0, other);
      return t1;
    },
    LinkedHashSet_LinkedHashSet$from(elements, $E) {
      var t1, _i,
        result = A.LinkedHashSet_LinkedHashSet($E);
      for (t1 = elements.length, _i = 0; _i < elements.length; elements.length === t1 || (0, A.throwConcurrentModificationError)(elements), ++_i)
        result.add$1(0, $E._as(elements[_i]));
      return result;
    },
    LinkedHashSet_LinkedHashSet$of(elements, $E) {
      var t1 = A.LinkedHashSet_LinkedHashSet($E);
      t1.addAll$1(0, elements);
      return t1;
    },
    ListBase__compareAny(a, b) {
      var t1 = type$.Comparable_dynamic;
      return J.compareTo$1$ns(t1._as(a), t1._as(b));
    },
    MapBase_mapToString(m) {
      var result, t1 = {};
      if (A.isToStringVisiting(m))
        return "{...}";
      result = new A.StringBuffer("");
      try {
        $.toStringVisiting.push(m);
        result._contents += "{";
        t1.first = true;
        m.forEach$1(0, new A.MapBase_mapToString_closure(t1, result));
        result._contents += "}";
      } finally {
        $.toStringVisiting.pop();
      }
      t1 = result._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    MapBase__fillMapWithIterables(map, keys, values) {
      var keyIterator = keys.get$iterator(keys),
        valueIterator = values.get$iterator(values),
        hasNextKey = keyIterator.moveNext$0(),
        hasNextValue = valueIterator.moveNext$0();
      while (true) {
        if (!(hasNextKey && hasNextValue))
          break;
        map.$indexSet(0, keyIterator.get$current(keyIterator), valueIterator.get$current(valueIterator));
        hasNextKey = keyIterator.moveNext$0();
        hasNextValue = valueIterator.moveNext$0();
      }
      if (hasNextKey || hasNextValue)
        throw A.wrapException(A.ArgumentError$("Iterables do not have same length.", null));
    },
    ListQueue$($E) {
      return new A.ListQueue(A.List_List$filled(A.ListQueue__calculateCapacity(null), null, false, $E._eval$1("0?")), $E._eval$1("ListQueue<0>"));
    },
    ListQueue__calculateCapacity(initialCapacity) {
      return 8;
    },
    ListQueue__nextPowerOf2(number) {
      var nextNumber;
      number = (number << 1 >>> 0) - 1;
      for (; true; number = nextNumber) {
        nextNumber = (number & number - 1) >>> 0;
        if (nextNumber === 0)
          return number;
      }
    },
    _ListQueueIterator$(queue) {
      return new A._ListQueueIterator(queue, queue._tail, queue._modificationCount, queue._head);
    },
    _UnmodifiableSetMixin__throwUnmodifiable() {
      throw A.wrapException(A.UnsupportedError$("Cannot change an unmodifiable set"));
    },
    _HashMap: function _HashMap(t0) {
      var _ = this;
      _._collection$_length = 0;
      _._collection$_keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
      _.$ti = t0;
    },
    _HashMap_values_closure: function _HashMap_values_closure(t0) {
      this.$this = t0;
    },
    _HashMap_addAll_closure: function _HashMap_addAll_closure(t0) {
      this.$this = t0;
    },
    _IdentityHashMap: function _IdentityHashMap(t0) {
      var _ = this;
      _._collection$_length = 0;
      _._collection$_keys = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
      _.$ti = t0;
    },
    _HashMapKeyIterable: function _HashMapKeyIterable(t0, t1) {
      this._map = t0;
      this.$ti = t1;
    },
    _HashMapKeyIterator: function _HashMapKeyIterator(t0, t1) {
      var _ = this;
      _._map = t0;
      _._collection$_keys = t1;
      _._offset = 0;
      _._collection$_current = null;
    },
    _LinkedCustomHashMap: function _LinkedCustomHashMap(t0, t1, t2, t3) {
      var _ = this;
      _._equals = t0;
      _._hashCode = t1;
      _._validKey = t2;
      _.__js_helper$_length = 0;
      _._last = _._first = _.__js_helper$_rest = _._nums = _._strings = null;
      _._modifications = 0;
      _.$ti = t3;
    },
    _LinkedCustomHashMap_closure: function _LinkedCustomHashMap_closure(t0) {
      this.K = t0;
    },
    _LinkedHashSet: function _LinkedHashSet(t0) {
      var _ = this;
      _._collection$_length = 0;
      _._collection$_last = _._collection$_first = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
      _._collection$_modifications = 0;
      _.$ti = t0;
    },
    _LinkedIdentityHashSet: function _LinkedIdentityHashSet(t0) {
      var _ = this;
      _._collection$_length = 0;
      _._collection$_last = _._collection$_first = _._collection$_rest = _._collection$_nums = _._collection$_strings = null;
      _._collection$_modifications = 0;
      _.$ti = t0;
    },
    _LinkedHashSetCell: function _LinkedHashSetCell(t0) {
      this._element = t0;
      this._collection$_previous = this._collection$_next = null;
    },
    _LinkedHashSetIterator: function _LinkedHashSetIterator(t0, t1) {
      var _ = this;
      _._set = t0;
      _._collection$_modifications = t1;
      _._collection$_current = _._collection$_cell = null;
    },
    UnmodifiableListView: function UnmodifiableListView(t0, t1) {
      this._collection$_source = t0;
      this.$ti = t1;
    },
    HashMap_HashMap$from_closure: function HashMap_HashMap$from_closure(t0, t1, t2) {
      this.result = t0;
      this.K = t1;
      this.V = t2;
    },
    LinkedHashMap_LinkedHashMap$from_closure: function LinkedHashMap_LinkedHashMap$from_closure(t0, t1, t2) {
      this.result = t0;
      this.K = t1;
      this.V = t2;
    },
    ListBase: function ListBase() {
    },
    MapBase: function MapBase() {
    },
    MapBase_addAll_closure: function MapBase_addAll_closure(t0) {
      this.$this = t0;
    },
    MapBase_entries_closure: function MapBase_entries_closure(t0) {
      this.$this = t0;
    },
    MapBase_mapToString_closure: function MapBase_mapToString_closure(t0, t1) {
      this._box_0 = t0;
      this.result = t1;
    },
    UnmodifiableMapBase: function UnmodifiableMapBase() {
    },
    _MapBaseValueIterable: function _MapBaseValueIterable(t0, t1) {
      this._map = t0;
      this.$ti = t1;
    },
    _MapBaseValueIterator: function _MapBaseValueIterator(t0, t1) {
      this._collection$_keys = t0;
      this._map = t1;
      this._collection$_current = null;
    },
    _UnmodifiableMapMixin: function _UnmodifiableMapMixin() {
    },
    MapView: function MapView() {
    },
    UnmodifiableMapView: function UnmodifiableMapView(t0, t1) {
      this._map = t0;
      this.$ti = t1;
    },
    ListQueue: function ListQueue(t0, t1) {
      var _ = this;
      _._table = t0;
      _._modificationCount = _._tail = _._head = 0;
      _.$ti = t1;
    },
    _ListQueueIterator: function _ListQueueIterator(t0, t1, t2, t3) {
      var _ = this;
      _._queue = t0;
      _._collection$_end = t1;
      _._modificationCount = t2;
      _._collection$_position = t3;
      _._collection$_current = null;
    },
    SetBase: function SetBase() {
    },
    _SetBase: function _SetBase() {
    },
    _UnmodifiableSetMixin: function _UnmodifiableSetMixin() {
    },
    UnmodifiableSetView: function UnmodifiableSetView(t0, t1) {
      this._collection$_source = t0;
      this.$ti = t1;
    },
    _UnmodifiableMapView_MapView__UnmodifiableMapMixin: function _UnmodifiableMapView_MapView__UnmodifiableMapMixin() {
    },
    _UnmodifiableSetView_SetBase__UnmodifiableSetMixin: function _UnmodifiableSetView_SetBase__UnmodifiableSetMixin() {
    },
    Utf8Decoder__convertIntercepted(allowMalformed, codeUnits, start, end) {
      var casted, result;
      if (codeUnits instanceof Uint8Array) {
        casted = codeUnits;
        end = casted.length;
        if (end - start < 15)
          return null;
        result = A.Utf8Decoder__convertInterceptedUint8List(allowMalformed, casted, start, end);
        if (result != null && allowMalformed)
          if (result.indexOf("\ufffd") >= 0)
            return null;
        return result;
      }
      return null;
    },
    Utf8Decoder__convertInterceptedUint8List(allowMalformed, codeUnits, start, end) {
      var decoder = allowMalformed ? $.$get$Utf8Decoder__decoderNonfatal() : $.$get$Utf8Decoder__decoder();
      if (decoder == null)
        return null;
      if (0 === start && end === codeUnits.length)
        return A.Utf8Decoder__useTextDecoder(decoder, codeUnits);
      return A.Utf8Decoder__useTextDecoder(decoder, codeUnits.subarray(start, A.RangeError_checkValidRange(start, end, codeUnits.length)));
    },
    Utf8Decoder__useTextDecoder(decoder, codeUnits) {
      var t1, exception;
      try {
        t1 = decoder.decode(codeUnits);
        return t1;
      } catch (exception) {
      }
      return null;
    },
    Base64Codec__checkPadding(source, sourceIndex, sourceEnd, firstPadding, paddingCount, $length) {
      if (B.JSInt_methods.$mod($length, 4) !== 0)
        throw A.wrapException(A.FormatException$("Invalid base64 padding, padded length must be multiple of four, is " + $length, source, sourceEnd));
      if (firstPadding + paddingCount !== $length)
        throw A.wrapException(A.FormatException$("Invalid base64 padding, '=' not at the end", source, sourceIndex));
      if (paddingCount > 2)
        throw A.wrapException(A.FormatException$("Invalid base64 padding, more than two '=' characters", source, sourceIndex));
    },
    _Base64Encoder_encodeChunk(alphabet, bytes, start, end, isLast, output, outputIndex, state) {
      var t1, i, byteOr, byte, outputIndex0, outputIndex1,
        bits = state >>> 2,
        expectedChars = 3 - (state & 3);
      for (t1 = J.getInterceptor$asx(bytes), i = start, byteOr = 0; i < end; ++i) {
        byte = t1.$index(bytes, i);
        byteOr = (byteOr | byte) >>> 0;
        bits = (bits << 8 | byte) & 16777215;
        --expectedChars;
        if (expectedChars === 0) {
          outputIndex0 = outputIndex + 1;
          output[outputIndex] = alphabet.charCodeAt(bits >>> 18 & 63);
          outputIndex = outputIndex0 + 1;
          output[outputIndex0] = alphabet.charCodeAt(bits >>> 12 & 63);
          outputIndex0 = outputIndex + 1;
          output[outputIndex] = alphabet.charCodeAt(bits >>> 6 & 63);
          outputIndex = outputIndex0 + 1;
          output[outputIndex0] = alphabet.charCodeAt(bits & 63);
          bits = 0;
          expectedChars = 3;
        }
      }
      if (byteOr >= 0 && byteOr <= 255) {
        if (isLast && expectedChars < 3) {
          outputIndex0 = outputIndex + 1;
          outputIndex1 = outputIndex0 + 1;
          if (3 - expectedChars === 1) {
            output[outputIndex] = alphabet.charCodeAt(bits >>> 2 & 63);
            output[outputIndex0] = alphabet.charCodeAt(bits << 4 & 63);
            output[outputIndex1] = 61;
            output[outputIndex1 + 1] = 61;
          } else {
            output[outputIndex] = alphabet.charCodeAt(bits >>> 10 & 63);
            output[outputIndex0] = alphabet.charCodeAt(bits >>> 4 & 63);
            output[outputIndex1] = alphabet.charCodeAt(bits << 2 & 63);
            output[outputIndex1 + 1] = 61;
          }
          return 0;
        }
        return (bits << 2 | 3 - expectedChars) >>> 0;
      }
      for (i = start; i < end;) {
        byte = t1.$index(bytes, i);
        if (byte < 0 || byte > 255)
          break;
        ++i;
      }
      throw A.wrapException(A.ArgumentError$value(bytes, "Not a byte value at index " + i + ": 0x" + J.toRadixString$1$n(t1.$index(bytes, i), 16), null));
    },
    JsonUnsupportedObjectError$(unsupportedObject, cause, partialResult) {
      return new A.JsonUnsupportedObjectError(unsupportedObject, cause);
    },
    _defaultToEncodable(object) {
      return object.toJson$0();
    },
    _JsonStringStringifier$(_sink, _toEncodable) {
      return new A._JsonStringStringifier(_sink, [], A.convert___defaultToEncodable$closure());
    },
    _JsonStringStringifier_stringify(object, toEncodable, indent) {
      var t1,
        output = new A.StringBuffer(""),
        stringifier = A._JsonStringStringifier$(output, toEncodable);
      stringifier.writeObject$1(object);
      t1 = output._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Utf8Decoder_errorDescription(state) {
      switch (state) {
        case 65:
          return "Missing extension byte";
        case 67:
          return "Unexpected extension byte";
        case 69:
          return "Invalid UTF-8 byte";
        case 71:
          return "Overlong encoding";
        case 73:
          return "Out of unicode range";
        case 75:
          return "Encoded surrogate";
        case 77:
          return "Unfinished UTF-8 octet sequence";
        default:
          return "";
      }
    },
    _Utf8Decoder__makeUint8List(codeUnits, start, end) {
      var t1, i, b,
        $length = end - start,
        bytes = new Uint8Array($length);
      for (t1 = J.getInterceptor$asx(codeUnits), i = 0; i < $length; ++i) {
        b = t1.$index(codeUnits, start + i);
        bytes[i] = (b & 4294967040) >>> 0 !== 0 ? 255 : b;
      }
      return bytes;
    },
    Utf8Decoder__decoder_closure: function Utf8Decoder__decoder_closure() {
    },
    Utf8Decoder__decoderNonfatal_closure: function Utf8Decoder__decoderNonfatal_closure() {
    },
    AsciiCodec: function AsciiCodec() {
    },
    _UnicodeSubsetEncoder: function _UnicodeSubsetEncoder() {
    },
    AsciiEncoder: function AsciiEncoder(t0) {
      this._subsetMask = t0;
    },
    Base64Codec: function Base64Codec() {
    },
    Base64Encoder: function Base64Encoder() {
    },
    _Base64Encoder: function _Base64Encoder(t0) {
      this._convert$_state = 0;
      this._alphabet = t0;
    },
    _Base64EncoderSink: function _Base64EncoderSink() {
    },
    _Utf8Base64EncoderSink: function _Utf8Base64EncoderSink(t0, t1) {
      this._sink = t0;
      this._encoder = t1;
    },
    ByteConversionSink: function ByteConversionSink() {
    },
    Codec: function Codec() {
    },
    Converter: function Converter() {
    },
    Encoding: function Encoding() {
    },
    JsonUnsupportedObjectError: function JsonUnsupportedObjectError(t0, t1) {
      this.unsupportedObject = t0;
      this.cause = t1;
    },
    JsonCyclicError: function JsonCyclicError(t0, t1) {
      this.unsupportedObject = t0;
      this.cause = t1;
    },
    JsonCodec: function JsonCodec() {
    },
    JsonEncoder: function JsonEncoder(t0) {
      this._toEncodable = t0;
    },
    _JsonStringifier: function _JsonStringifier() {
    },
    _JsonStringifier_writeMap_closure: function _JsonStringifier_writeMap_closure(t0, t1) {
      this._box_0 = t0;
      this.keyValueList = t1;
    },
    _JsonStringStringifier: function _JsonStringStringifier(t0, t1, t2) {
      this._sink = t0;
      this._seen = t1;
      this._toEncodable = t2;
    },
    StringConversionSink: function StringConversionSink() {
    },
    _StringSinkConversionSink: function _StringSinkConversionSink(t0) {
      this._stringSink = t0;
    },
    _StringCallbackSink: function _StringCallbackSink(t0, t1) {
      this._convert$_callback = t0;
      this._stringSink = t1;
    },
    _Utf8StringSinkAdapter: function _Utf8StringSinkAdapter(t0, t1, t2) {
      this._decoder = t0;
      this._sink = t1;
      this._stringSink = t2;
    },
    Utf8Codec: function Utf8Codec() {
    },
    Utf8Encoder: function Utf8Encoder() {
    },
    _Utf8Encoder: function _Utf8Encoder(t0) {
      this._bufferIndex = 0;
      this._buffer = t0;
    },
    Utf8Decoder: function Utf8Decoder(t0) {
      this._allowMalformed = t0;
    },
    _Utf8Decoder: function _Utf8Decoder(t0) {
      this.allowMalformed = t0;
      this._convert$_state = 16;
      this._charOrIndex = 0;
    },
    identityHashCode(object) {
      return A.objectHashCode(object);
    },
    Function_apply($function, positionalArguments) {
      return A.Primitives_applyFunction($function, positionalArguments, null);
    },
    Expando$() {
      return new A.Expando(new WeakMap());
    },
    Expando__checkType(object) {
      if (A._isBool(object) || typeof object == "number" || typeof object == "string" || object instanceof A._Record)
        A.Expando__badExpandoKey(object);
    },
    Expando__badExpandoKey(object) {
      throw A.wrapException(A.ArgumentError$value(object, "object", "Expandos are not allowed on strings, numbers, bools, records or null"));
    },
    int_parse(source, radix) {
      var value = A.Primitives_parseInt(source, radix);
      if (value != null)
        return value;
      throw A.wrapException(A.FormatException$(source, null, null));
    },
    double_parse(source) {
      var value = A.Primitives_parseDouble(source);
      if (value != null)
        return value;
      throw A.wrapException(A.FormatException$("Invalid double", source, null));
    },
    Error__throw(error, stackTrace) {
      error = A.wrapException(error);
      error.stack = stackTrace.toString$0(0);
      throw error;
      throw A.wrapException("unreachable");
    },
    List_List$filled($length, fill, growable, $E) {
      var i,
        result = growable ? J.JSArray_JSArray$growable($length, $E) : J.JSArray_JSArray$fixed($length, $E);
      if ($length !== 0 && fill != null)
        for (i = 0; i < result.length; ++i)
          result[i] = fill;
      return result;
    },
    List_List$from(elements, growable, $E) {
      var t1,
        list = A._setArrayType([], $E._eval$1("JSArray<0>"));
      for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
        list.push(t1.get$current(t1));
      if (growable)
        return list;
      return J.JSArray_markFixedList(list);
    },
    List_List$of(elements, growable, $E) {
      var t1;
      if (growable)
        return A.List_List$_of(elements, $E);
      t1 = J.JSArray_markFixedList(A.List_List$_of(elements, $E));
      return t1;
    },
    List_List$_of(elements, $E) {
      var list, t1;
      if (Array.isArray(elements))
        return A._setArrayType(elements.slice(0), $E._eval$1("JSArray<0>"));
      list = A._setArrayType([], $E._eval$1("JSArray<0>"));
      for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
        list.push(t1.get$current(t1));
      return list;
    },
    List_List$unmodifiable(elements, $E) {
      return J.JSArray_markUnmodifiableList(A.List_List$from(elements, false, $E));
    },
    String_String$fromCharCodes(charCodes, start, end) {
      var array, len;
      if (Array.isArray(charCodes)) {
        array = charCodes;
        len = array.length;
        end = A.RangeError_checkValidRange(start, end, len);
        return A.Primitives_stringFromCharCodes(start > 0 || end < len ? array.slice(start, end) : array);
      }
      if (type$.NativeUint8List._is(charCodes))
        return A.Primitives_stringFromNativeUint8List(charCodes, start, A.RangeError_checkValidRange(start, end, charCodes.length));
      return A.String__stringFromIterable(charCodes, start, end);
    },
    String_String$fromCharCode(charCode) {
      return A.Primitives_stringFromCharCode(charCode);
    },
    String__stringFromIterable(charCodes, start, end) {
      var t1, it, i, list, _null = null;
      if (start < 0)
        throw A.wrapException(A.RangeError$range(start, 0, J.get$length$asx(charCodes), _null, _null));
      t1 = end == null;
      if (!t1 && end < start)
        throw A.wrapException(A.RangeError$range(end, start, J.get$length$asx(charCodes), _null, _null));
      it = J.get$iterator$ax(charCodes);
      for (i = 0; i < start; ++i)
        if (!it.moveNext$0())
          throw A.wrapException(A.RangeError$range(start, 0, i, _null, _null));
      list = [];
      if (t1)
        for (; it.moveNext$0();)
          list.push(it.get$current(it));
      else
        for (i = start; i < end; ++i) {
          if (!it.moveNext$0())
            throw A.wrapException(A.RangeError$range(end, start, i, _null, _null));
          list.push(it.get$current(it));
        }
      return A.Primitives_stringFromCharCodes(list);
    },
    RegExp_RegExp(source, multiLine) {
      return new A.JSSyntaxRegExp(source, A.JSSyntaxRegExp_makeNative(source, multiLine, true, false, false, false));
    },
    identical(a, b) {
      return a == null ? b == null : a === b;
    },
    StringBuffer__writeAll(string, objects, separator) {
      var iterator = J.get$iterator$ax(objects);
      if (!iterator.moveNext$0())
        return string;
      if (separator.length === 0) {
        do
          string += A.S(iterator.get$current(iterator));
        while (iterator.moveNext$0());
      } else {
        string += A.S(iterator.get$current(iterator));
        for (; iterator.moveNext$0();)
          string = string + separator + A.S(iterator.get$current(iterator));
      }
      return string;
    },
    NoSuchMethodError_NoSuchMethodError$withInvocation(receiver, invocation) {
      return new A.NoSuchMethodError(receiver, invocation.get$memberName(), invocation.get$positionalArguments(), invocation.get$namedArguments());
    },
    Uri_base() {
      var cachedUri, uri,
        current = A.Primitives_currentUri();
      if (current == null)
        throw A.wrapException(A.UnsupportedError$("'Uri.base' is not supported"));
      cachedUri = $.Uri__cachedBaseUri;
      if (cachedUri != null && current === $.Uri__cachedBaseString)
        return cachedUri;
      uri = A.Uri_parse(current);
      $.Uri__cachedBaseUri = uri;
      $.Uri__cachedBaseString = current;
      return uri;
    },
    _Uri__uriEncode(canonicalTable, text, encoding, spaceToPlus) {
      var t1, bytes, i, t2, byte,
        _s16_ = "0123456789ABCDEF";
      if (encoding === B.C_Utf8Codec) {
        t1 = $.$get$_Uri__needsNoEncoding();
        t1 = t1._nativeRegExp.test(text);
      } else
        t1 = false;
      if (t1)
        return text;
      bytes = encoding.get$encoder().convert$1(text);
      for (t1 = bytes.length, i = 0, t2 = ""; i < t1; ++i) {
        byte = bytes[i];
        if (byte < 128 && (canonicalTable[byte >>> 4] & 1 << (byte & 15)) !== 0)
          t2 += A.Primitives_stringFromCharCode(byte);
        else
          t2 = spaceToPlus && byte === 32 ? t2 + "+" : t2 + "%" + _s16_[byte >>> 4 & 15] + _s16_[byte & 15];
      }
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    },
    StackTrace_current() {
      var stackTrace, exception;
      if ($.$get$_hasErrorStackProperty())
        return A.getTraceFromException(new Error());
      try {
        throw A.wrapException("");
      } catch (exception) {
        stackTrace = A.getTraceFromException(exception);
        return stackTrace;
      }
    },
    DateTime__fourDigits(n) {
      var absN = Math.abs(n),
        sign = n < 0 ? "-" : "";
      if (absN >= 1000)
        return "" + n;
      if (absN >= 100)
        return sign + "0" + absN;
      if (absN >= 10)
        return sign + "00" + absN;
      return sign + "000" + absN;
    },
    DateTime__threeDigits(n) {
      if (n >= 100)
        return "" + n;
      if (n >= 10)
        return "0" + n;
      return "00" + n;
    },
    DateTime__twoDigits(n) {
      if (n >= 10)
        return "" + n;
      return "0" + n;
    },
    Duration$(milliseconds) {
      return new A.Duration(1000 * milliseconds);
    },
    Error_safeToString(object) {
      if (typeof object == "number" || A._isBool(object) || object == null)
        return J.toString$0$(object);
      if (typeof object == "string")
        return JSON.stringify(object);
      return A.Primitives_safeToString(object);
    },
    Error_throwWithStackTrace(error, stackTrace) {
      A.checkNotNullable(error, "error", type$.Object);
      A.checkNotNullable(stackTrace, "stackTrace", type$.StackTrace);
      A.Error__throw(error, stackTrace);
    },
    AssertionError$(message) {
      return new A.AssertionError(message);
    },
    ArgumentError$(message, $name) {
      return new A.ArgumentError(false, null, $name, message);
    },
    ArgumentError$value(value, $name, message) {
      return new A.ArgumentError(true, value, $name, message);
    },
    ArgumentError_checkNotNull(argument, $name) {
      return argument;
    },
    RangeError$(message) {
      var _null = null;
      return new A.RangeError(_null, _null, false, _null, _null, message);
    },
    RangeError$value(value, $name, message) {
      return new A.RangeError(null, null, true, value, $name, message == null ? "Value not in range" : message);
    },
    RangeError$range(invalidValue, minValue, maxValue, $name, message) {
      return new A.RangeError(minValue, maxValue, true, invalidValue, $name, message == null ? "Invalid value" : message);
    },
    RangeError_checkValueInInterval(value, minValue, maxValue, $name) {
      if (value < minValue || value > maxValue)
        throw A.wrapException(A.RangeError$range(value, minValue, maxValue, $name, null));
      return value;
    },
    RangeError_checkValidRange(start, end, $length) {
      if (0 > start || start > $length)
        throw A.wrapException(A.RangeError$range(start, 0, $length, "start", null));
      if (end != null) {
        if (start > end || end > $length)
          throw A.wrapException(A.RangeError$range(end, start, $length, "end", null));
        return end;
      }
      return $length;
    },
    RangeError_checkNotNegative(value, $name) {
      if (value < 0)
        throw A.wrapException(A.RangeError$range(value, 0, null, $name, null));
      return value;
    },
    IndexError$withLength(invalidValue, $length, indexable, message, $name) {
      return new A.IndexError($length, true, invalidValue, $name, "Index out of range");
    },
    IndexError_check(index, $length, indexable, message, $name) {
      if (0 > index || index >= $length)
        throw A.wrapException(A.IndexError$withLength(index, $length, indexable, message, $name == null ? "index" : $name));
      return index;
    },
    UnsupportedError$(message) {
      return new A.UnsupportedError(message);
    },
    UnimplementedError$(message) {
      return new A.UnimplementedError(message);
    },
    StateError$(message) {
      return new A.StateError(message);
    },
    ConcurrentModificationError$(modifiedObject) {
      return new A.ConcurrentModificationError(modifiedObject);
    },
    FormatException$(message, source, offset) {
      return new A.FormatException(message, source, offset);
    },
    Iterable_Iterable$generate(count, generator, $E) {
      if (count <= 0)
        return new A.EmptyIterable($E._eval$1("EmptyIterable<0>"));
      return new A._GeneratorIterable(count, generator, $E._eval$1("_GeneratorIterable<0>"));
    },
    Iterable_iterableToShortString(iterable, leftDelimiter, rightDelimiter) {
      var parts, t1;
      if (A.isToStringVisiting(iterable)) {
        if (leftDelimiter === "(" && rightDelimiter === ")")
          return "(...)";
        return leftDelimiter + "..." + rightDelimiter;
      }
      parts = A._setArrayType([], type$.JSArray_String);
      $.toStringVisiting.push(iterable);
      try {
        A._iterablePartsToStrings(iterable, parts);
      } finally {
        $.toStringVisiting.pop();
      }
      t1 = A.StringBuffer__writeAll(leftDelimiter, parts, ", ") + rightDelimiter;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    Iterable_iterableToFullString(iterable, leftDelimiter, rightDelimiter) {
      var buffer, t1;
      if (A.isToStringVisiting(iterable))
        return leftDelimiter + "..." + rightDelimiter;
      buffer = new A.StringBuffer(leftDelimiter);
      $.toStringVisiting.push(iterable);
      try {
        t1 = buffer;
        t1._contents = A.StringBuffer__writeAll(t1._contents, iterable, ", ");
      } finally {
        $.toStringVisiting.pop();
      }
      buffer._contents += rightDelimiter;
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _iterablePartsToStrings(iterable, parts) {
      var next, ultimateString, penultimateString, penultimate, ultimate, ultimate0, elision,
        it = iterable.get$iterator(iterable),
        $length = 0, count = 0;
      while (true) {
        if (!($length < 80 || count < 3))
          break;
        if (!it.moveNext$0())
          return;
        next = A.S(it.get$current(it));
        parts.push(next);
        $length += next.length + 2;
        ++count;
      }
      if (!it.moveNext$0()) {
        if (count <= 5)
          return;
        ultimateString = parts.pop();
        penultimateString = parts.pop();
      } else {
        penultimate = it.get$current(it);
        ++count;
        if (!it.moveNext$0()) {
          if (count <= 4) {
            parts.push(A.S(penultimate));
            return;
          }
          ultimateString = A.S(penultimate);
          penultimateString = parts.pop();
          $length += ultimateString.length + 2;
        } else {
          ultimate = it.get$current(it);
          ++count;
          for (; it.moveNext$0(); penultimate = ultimate, ultimate = ultimate0) {
            ultimate0 = it.get$current(it);
            ++count;
            if (count > 100) {
              while (true) {
                if (!($length > 75 && count > 3))
                  break;
                $length -= parts.pop().length + 2;
                --count;
              }
              parts.push("...");
              return;
            }
          }
          penultimateString = A.S(penultimate);
          ultimateString = A.S(ultimate);
          $length += ultimateString.length + penultimateString.length + 4;
        }
      }
      if (count > parts.length + 2) {
        $length += 5;
        elision = "...";
      } else
        elision = null;
      while (true) {
        if (!($length > 80 && parts.length > 3))
          break;
        $length -= parts.pop().length + 2;
        if (elision == null) {
          $length += 5;
          elision = "...";
        }
      }
      if (elision != null)
        parts.push(elision);
      parts.push(penultimateString);
      parts.push(ultimateString);
    },
    Map_castFrom(source, $K, $V, K2, V2) {
      return new A.CastMap(source, $K._eval$1("@<0>")._bind$1($V)._bind$1(K2)._bind$1(V2)._eval$1("CastMap<1,2,3,4>"));
    },
    Object_hash(object1, object2, object3, object4) {
      var t1;
      if (B.C_SentinelValue === object3) {
        t1 = J.get$hashCode$(object1);
        object2 = J.get$hashCode$(object2);
        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2));
      }
      if (B.C_SentinelValue === object4) {
        t1 = J.get$hashCode$(object1);
        object2 = J.get$hashCode$(object2);
        object3 = J.get$hashCode$(object3);
        return A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2), object3));
      }
      t1 = J.get$hashCode$(object1);
      object2 = J.get$hashCode$(object2);
      object3 = J.get$hashCode$(object3);
      object4 = J.get$hashCode$(object4);
      object4 = A.SystemHash_finish(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine(A.SystemHash_combine($.$get$_hashSeed(), t1), object2), object3), object4));
      return object4;
    },
    Object_hashAll(objects) {
      var t1, _i,
        hash = $.$get$_hashSeed();
      for (t1 = objects.length, _i = 0; _i < objects.length; objects.length === t1 || (0, A.throwConcurrentModificationError)(objects), ++_i)
        hash = A.SystemHash_combine(hash, J.get$hashCode$(objects[_i]));
      return A.SystemHash_finish(hash);
    },
    print(object) {
      var line = A.S(object),
        toZone = $.printToZone;
      if (toZone == null)
        A.printString(line);
      else
        toZone.call$1(line);
    },
    Set_Set$unmodifiable(elements, $E) {
      return new A.UnmodifiableSetView(A.LinkedHashSet_LinkedHashSet$of(elements, $E), $E._eval$1("UnmodifiableSetView<0>"));
    },
    Set_castFrom(source, newSet, $S, $T) {
      return new A.CastSet(source, newSet, $S._eval$1("@<0>")._bind$1($T)._eval$1("CastSet<1,2>"));
    },
    _combineSurrogatePair(start, end) {
      return 65536 + ((start & 1023) << 10) + (end & 1023);
    },
    Uri_Uri$dataFromString($content, encoding, mimeType) {
      var encodingName, t1,
        buffer = new A.StringBuffer(""),
        indices = A._setArrayType([-1], type$.JSArray_int);
      if (encoding == null)
        encodingName = null;
      else
        encodingName = "utf-8";
      if (encoding == null)
        encoding = B.C_AsciiCodec;
      A.UriData__writeUri(mimeType, encodingName, null, buffer, indices);
      indices.push(buffer._contents.length);
      buffer._contents += ",";
      A.UriData__uriEncodeBytes(B.List_oFp, encoding.encode$1($content), buffer);
      t1 = buffer._contents;
      return new A.UriData(t1.charCodeAt(0) == 0 ? t1 : t1, indices, null).get$uri();
    },
    Uri_parse(uri) {
      var delta, indices, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, isSimple, scheme, t1, t2, schemeAuth, queryStart0, pathStart0, userInfoStart, userInfo, host, portNumber, port, path, query, _null = null,
        end = uri.length;
      if (end >= 5) {
        delta = ((uri.charCodeAt(4) ^ 58) * 3 | uri.charCodeAt(0) ^ 100 | uri.charCodeAt(1) ^ 97 | uri.charCodeAt(2) ^ 116 | uri.charCodeAt(3) ^ 97) >>> 0;
        if (delta === 0)
          return A.UriData__parse(end < end ? B.JSString_methods.substring$2(uri, 0, end) : uri, 5, _null).get$uri();
        else if (delta === 32)
          return A.UriData__parse(B.JSString_methods.substring$2(uri, 5, end), 0, _null).get$uri();
      }
      indices = A.List_List$filled(8, 0, false, type$.int);
      indices[0] = 0;
      indices[1] = -1;
      indices[2] = -1;
      indices[7] = -1;
      indices[3] = 0;
      indices[4] = 0;
      indices[5] = end;
      indices[6] = end;
      if (A._scan(uri, 0, end, 0, indices) >= 14)
        indices[7] = end;
      schemeEnd = indices[1];
      if (schemeEnd >= 0)
        if (A._scan(uri, 0, schemeEnd, 20, indices) === 20)
          indices[7] = schemeEnd;
      hostStart = indices[2] + 1;
      portStart = indices[3];
      pathStart = indices[4];
      queryStart = indices[5];
      fragmentStart = indices[6];
      if (fragmentStart < queryStart)
        queryStart = fragmentStart;
      if (pathStart < hostStart)
        pathStart = queryStart;
      else if (pathStart <= schemeEnd)
        pathStart = schemeEnd + 1;
      if (portStart < hostStart)
        portStart = pathStart;
      isSimple = indices[7] < 0;
      if (isSimple)
        if (hostStart > schemeEnd + 3) {
          scheme = _null;
          isSimple = false;
        } else {
          t1 = portStart > 0;
          if (t1 && portStart + 1 === pathStart) {
            scheme = _null;
            isSimple = false;
          } else {
            if (!B.JSString_methods.startsWith$2(uri, "\\", pathStart))
              if (hostStart > 0)
                t2 = B.JSString_methods.startsWith$2(uri, "\\", hostStart - 1) || B.JSString_methods.startsWith$2(uri, "\\", hostStart - 2);
              else
                t2 = false;
            else
              t2 = true;
            if (t2) {
              scheme = _null;
              isSimple = false;
            } else {
              if (!(queryStart < end && queryStart === pathStart + 2 && B.JSString_methods.startsWith$2(uri, "..", pathStart)))
                t2 = queryStart > pathStart + 2 && B.JSString_methods.startsWith$2(uri, "/..", queryStart - 3);
              else
                t2 = true;
              if (t2) {
                scheme = _null;
                isSimple = false;
              } else {
                if (schemeEnd === 4)
                  if (B.JSString_methods.startsWith$2(uri, "file", 0)) {
                    if (hostStart <= 0) {
                      if (!B.JSString_methods.startsWith$2(uri, "/", pathStart)) {
                        schemeAuth = "file:///";
                        delta = 3;
                      } else {
                        schemeAuth = "file://";
                        delta = 2;
                      }
                      uri = schemeAuth + B.JSString_methods.substring$2(uri, pathStart, end);
                      schemeEnd -= 0;
                      t1 = delta - 0;
                      queryStart += t1;
                      fragmentStart += t1;
                      end = uri.length;
                      hostStart = 7;
                      portStart = 7;
                      pathStart = 7;
                    } else if (pathStart === queryStart) {
                      ++fragmentStart;
                      queryStart0 = queryStart + 1;
                      uri = B.JSString_methods.replaceRange$3(uri, pathStart, queryStart, "/");
                      ++end;
                      queryStart = queryStart0;
                    }
                    scheme = "file";
                  } else if (B.JSString_methods.startsWith$2(uri, "http", 0)) {
                    if (t1 && portStart + 3 === pathStart && B.JSString_methods.startsWith$2(uri, "80", portStart + 1)) {
                      fragmentStart -= 3;
                      pathStart0 = pathStart - 3;
                      queryStart -= 3;
                      uri = B.JSString_methods.replaceRange$3(uri, portStart, pathStart, "");
                      end -= 3;
                      pathStart = pathStart0;
                    }
                    scheme = "http";
                  } else
                    scheme = _null;
                else if (schemeEnd === 5 && B.JSString_methods.startsWith$2(uri, "https", 0)) {
                  if (t1 && portStart + 4 === pathStart && B.JSString_methods.startsWith$2(uri, "443", portStart + 1)) {
                    fragmentStart -= 4;
                    pathStart0 = pathStart - 4;
                    queryStart -= 4;
                    uri = B.JSString_methods.replaceRange$3(uri, portStart, pathStart, "");
                    end -= 3;
                    pathStart = pathStart0;
                  }
                  scheme = "https";
                } else
                  scheme = _null;
                isSimple = true;
              }
            }
          }
        }
      else
        scheme = _null;
      if (isSimple) {
        if (end < uri.length) {
          uri = B.JSString_methods.substring$2(uri, 0, end);
          schemeEnd -= 0;
          hostStart -= 0;
          portStart -= 0;
          pathStart -= 0;
          queryStart -= 0;
          fragmentStart -= 0;
        }
        return new A._SimpleUri(uri, schemeEnd, hostStart, portStart, pathStart, queryStart, fragmentStart, scheme);
      }
      if (scheme == null)
        if (schemeEnd > 0)
          scheme = A._Uri__makeScheme(uri, 0, schemeEnd);
        else {
          if (schemeEnd === 0)
            A._Uri__fail(uri, 0, "Invalid empty scheme");
          scheme = "";
        }
      if (hostStart > 0) {
        userInfoStart = schemeEnd + 3;
        userInfo = userInfoStart < hostStart ? A._Uri__makeUserInfo(uri, userInfoStart, hostStart - 1) : "";
        host = A._Uri__makeHost(uri, hostStart, portStart, false);
        t1 = portStart + 1;
        if (t1 < pathStart) {
          portNumber = A.Primitives_parseInt(B.JSString_methods.substring$2(uri, t1, pathStart), _null);
          port = A._Uri__makePort(portNumber == null ? A.throwExpression(A.FormatException$("Invalid port", uri, t1)) : portNumber, scheme);
        } else
          port = _null;
      } else {
        port = _null;
        host = port;
        userInfo = "";
      }
      path = A._Uri__makePath(uri, pathStart, queryStart, _null, scheme, host != null);
      query = queryStart < fragmentStart ? A._Uri__makeQuery(uri, queryStart + 1, fragmentStart, _null) : _null;
      return A._Uri$_internal(scheme, userInfo, host, port, path, query, fragmentStart < end ? A._Uri__makeFragment(uri, fragmentStart + 1, end) : _null);
    },
    Uri_decodeComponent(encodedComponent) {
      return A._Uri__uriDecode(encodedComponent, 0, encodedComponent.length, B.C_Utf8Codec, false);
    },
    Uri__parseIPv4Address(host, start, end) {
      var i, partStart, partIndex, char, part, partIndex0,
        _s43_ = "IPv4 address should contain exactly 4 parts",
        _s37_ = "each part must be in the range 0..255",
        error = new A.Uri__parseIPv4Address_error(host),
        result = new Uint8Array(4);
      for (i = start, partStart = i, partIndex = 0; i < end; ++i) {
        char = host.charCodeAt(i);
        if (char !== 46) {
          if ((char ^ 48) > 9)
            error.call$2("invalid character", i);
        } else {
          if (partIndex === 3)
            error.call$2(_s43_, i);
          part = A.int_parse(B.JSString_methods.substring$2(host, partStart, i), null);
          if (part > 255)
            error.call$2(_s37_, partStart);
          partIndex0 = partIndex + 1;
          result[partIndex] = part;
          partStart = i + 1;
          partIndex = partIndex0;
        }
      }
      if (partIndex !== 3)
        error.call$2(_s43_, end);
      part = A.int_parse(B.JSString_methods.substring$2(host, partStart, end), null);
      if (part > 255)
        error.call$2(_s37_, partStart);
      result[partIndex] = part;
      return result;
    },
    Uri_parseIPv6Address(host, start, end) {
      var parts, i, partStart, wildcardSeen, seenDot, char, atEnd, t1, last, bytes, wildCardLength, index, value, j, _null = null,
        error = new A.Uri_parseIPv6Address_error(host),
        parseHex = new A.Uri_parseIPv6Address_parseHex(error, host);
      if (host.length < 2)
        error.call$2("address is too short", _null);
      parts = A._setArrayType([], type$.JSArray_int);
      for (i = start, partStart = i, wildcardSeen = false, seenDot = false; i < end; ++i) {
        char = host.charCodeAt(i);
        if (char === 58) {
          if (i === start) {
            ++i;
            if (host.charCodeAt(i) !== 58)
              error.call$2("invalid start colon.", i);
            partStart = i;
          }
          if (i === partStart) {
            if (wildcardSeen)
              error.call$2("only one wildcard `::` is allowed", i);
            parts.push(-1);
            wildcardSeen = true;
          } else
            parts.push(parseHex.call$2(partStart, i));
          partStart = i + 1;
        } else if (char === 46)
          seenDot = true;
      }
      if (parts.length === 0)
        error.call$2("too few parts", _null);
      atEnd = partStart === end;
      t1 = B.JSArray_methods.get$last(parts);
      if (atEnd && t1 !== -1)
        error.call$2("expected a part after last `:`", end);
      if (!atEnd)
        if (!seenDot)
          parts.push(parseHex.call$2(partStart, end));
        else {
          last = A.Uri__parseIPv4Address(host, partStart, end);
          parts.push((last[0] << 8 | last[1]) >>> 0);
          parts.push((last[2] << 8 | last[3]) >>> 0);
        }
      if (wildcardSeen) {
        if (parts.length > 7)
          error.call$2("an address with a wildcard must have less than 7 parts", _null);
      } else if (parts.length !== 8)
        error.call$2("an address without a wildcard must contain exactly 8 parts", _null);
      bytes = new Uint8Array(16);
      for (t1 = parts.length, wildCardLength = 9 - t1, i = 0, index = 0; i < t1; ++i) {
        value = parts[i];
        if (value === -1)
          for (j = 0; j < wildCardLength; ++j) {
            bytes[index] = 0;
            bytes[index + 1] = 0;
            index += 2;
          }
        else {
          bytes[index] = B.JSInt_methods._shrOtherPositive$1(value, 8);
          bytes[index + 1] = value & 255;
          index += 2;
        }
      }
      return bytes;
    },
    _Uri$_internal(scheme, _userInfo, _host, _port, path, _query, _fragment) {
      return new A._Uri(scheme, _userInfo, _host, _port, path, _query, _fragment);
    },
    _Uri__Uri(host, path, pathSegments, scheme) {
      var userInfo, query, fragment, port, isFile, t1, hasAuthority, t2, _null = null;
      scheme = scheme == null ? "" : A._Uri__makeScheme(scheme, 0, scheme.length);
      userInfo = A._Uri__makeUserInfo(_null, 0, 0);
      host = A._Uri__makeHost(host, 0, host == null ? 0 : host.length, false);
      query = A._Uri__makeQuery(_null, 0, 0, _null);
      fragment = A._Uri__makeFragment(_null, 0, 0);
      port = A._Uri__makePort(_null, scheme);
      isFile = scheme === "file";
      if (host == null)
        t1 = userInfo.length !== 0 || port != null || isFile;
      else
        t1 = false;
      if (t1)
        host = "";
      t1 = host == null;
      hasAuthority = !t1;
      path = A._Uri__makePath(path, 0, path == null ? 0 : path.length, pathSegments, scheme, hasAuthority);
      t2 = scheme.length === 0;
      if (t2 && t1 && !B.JSString_methods.startsWith$1(path, "/"))
        path = A._Uri__normalizeRelativePath(path, !t2 || hasAuthority);
      else
        path = A._Uri__removeDotSegments(path);
      return A._Uri$_internal(scheme, userInfo, t1 && B.JSString_methods.startsWith$1(path, "//") ? "" : host, port, path, query, fragment);
    },
    _Uri__defaultPort(scheme) {
      if (scheme === "http")
        return 80;
      if (scheme === "https")
        return 443;
      return 0;
    },
    _Uri__fail(uri, index, message) {
      throw A.wrapException(A.FormatException$(message, uri, index));
    },
    _Uri__Uri$file(path, windows) {
      return windows ? A._Uri__makeWindowsFileUrl(path, false) : A._Uri__makeFileUri(path, false);
    },
    _Uri__checkNonWindowsPathReservedCharacters(segments, argumentError) {
      var t1, _i, segment, t2, t3;
      for (t1 = segments.length, _i = 0; _i < t1; ++_i) {
        segment = segments[_i];
        t2 = J.getInterceptor$asx(segment);
        t3 = t2.get$length(segment);
        if (0 > t3)
          A.throwExpression(A.RangeError$range(0, 0, t2.get$length(segment), null, null));
        if (A.stringContainsUnchecked(segment, "/", 0)) {
          t1 = A.UnsupportedError$("Illegal path character " + A.S(segment));
          throw A.wrapException(t1);
        }
      }
    },
    _Uri__checkWindowsPathReservedCharacters(segments, argumentError, firstSegment) {
      var t1, t2, t3, t4, t5, _null = null;
      for (t1 = A.SubListIterable$(segments, firstSegment, _null, A._arrayInstanceType(segments)._precomputed1), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        t4 = A.RegExp_RegExp('["*/:<>?\\\\|]', false);
        t5 = t3.length;
        if (A.stringContainsUnchecked(t3, t4, 0))
          if (argumentError)
            throw A.wrapException(A.ArgumentError$("Illegal character in path", _null));
          else
            throw A.wrapException(A.UnsupportedError$("Illegal character in path: " + t3));
      }
    },
    _Uri__checkWindowsDriveLetter(charCode, argumentError) {
      var t1,
        _s21_ = "Illegal drive letter ";
      if (!(65 <= charCode && charCode <= 90))
        t1 = 97 <= charCode && charCode <= 122;
      else
        t1 = true;
      if (t1)
        return;
      if (argumentError)
        throw A.wrapException(A.ArgumentError$(_s21_ + A.String_String$fromCharCode(charCode), null));
      else
        throw A.wrapException(A.UnsupportedError$(_s21_ + A.String_String$fromCharCode(charCode)));
    },
    _Uri__makeFileUri(path, slashTerminated) {
      var _null = null,
        segments = A._setArrayType(path.split("/"), type$.JSArray_String);
      if (B.JSString_methods.startsWith$1(path, "/"))
        return A._Uri__Uri(_null, _null, segments, "file");
      else
        return A._Uri__Uri(_null, _null, segments, _null);
    },
    _Uri__makeWindowsFileUrl(path, slashTerminated) {
      var t1, pathSegments, pathStart, hostPart, _s1_ = "\\", _null = null, _s4_ = "file";
      if (B.JSString_methods.startsWith$1(path, "\\\\?\\"))
        if (B.JSString_methods.startsWith$2(path, "UNC\\", 4))
          path = B.JSString_methods.replaceRange$3(path, 0, 7, _s1_);
        else {
          path = B.JSString_methods.substring$1(path, 4);
          if (path.length < 3 || path.charCodeAt(1) !== 58 || path.charCodeAt(2) !== 92)
            throw A.wrapException(A.ArgumentError$value(path, "path", "Windows paths with \\\\?\\ prefix must be absolute"));
        }
      else
        path = A.stringReplaceAllUnchecked(path, "/", _s1_);
      t1 = path.length;
      if (t1 > 1 && path.charCodeAt(1) === 58) {
        A._Uri__checkWindowsDriveLetter(path.charCodeAt(0), true);
        if (t1 === 2 || path.charCodeAt(2) !== 92)
          throw A.wrapException(A.ArgumentError$value(path, "path", "Windows paths with drive letter must be absolute"));
        pathSegments = A._setArrayType(path.split(_s1_), type$.JSArray_String);
        A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 1);
        return A._Uri__Uri(_null, _null, pathSegments, _s4_);
      }
      if (B.JSString_methods.startsWith$1(path, _s1_))
        if (B.JSString_methods.startsWith$2(path, _s1_, 1)) {
          pathStart = B.JSString_methods.indexOf$2(path, _s1_, 2);
          t1 = pathStart < 0;
          hostPart = t1 ? B.JSString_methods.substring$1(path, 2) : B.JSString_methods.substring$2(path, 2, pathStart);
          pathSegments = A._setArrayType((t1 ? "" : B.JSString_methods.substring$1(path, pathStart + 1)).split(_s1_), type$.JSArray_String);
          A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
          return A._Uri__Uri(hostPart, _null, pathSegments, _s4_);
        } else {
          pathSegments = A._setArrayType(path.split(_s1_), type$.JSArray_String);
          A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
          return A._Uri__Uri(_null, _null, pathSegments, _s4_);
        }
      else {
        pathSegments = A._setArrayType(path.split(_s1_), type$.JSArray_String);
        A._Uri__checkWindowsPathReservedCharacters(pathSegments, true, 0);
        return A._Uri__Uri(_null, _null, pathSegments, _null);
      }
    },
    _Uri__makePort(port, scheme) {
      if (port != null && port === A._Uri__defaultPort(scheme))
        return null;
      return port;
    },
    _Uri__makeHost(host, start, end, strictIPv6) {
      var t1, t2, index, zoneIDstart, zoneID, i;
      if (host == null)
        return null;
      if (start === end)
        return "";
      if (host.charCodeAt(start) === 91) {
        t1 = end - 1;
        if (host.charCodeAt(t1) !== 93)
          A._Uri__fail(host, start, "Missing end `]` to match `[` in host");
        t2 = start + 1;
        index = A._Uri__checkZoneID(host, t2, t1);
        if (index < t1) {
          zoneIDstart = index + 1;
          zoneID = A._Uri__normalizeZoneID(host, B.JSString_methods.startsWith$2(host, "25", zoneIDstart) ? index + 3 : zoneIDstart, t1, "%25");
        } else
          zoneID = "";
        A.Uri_parseIPv6Address(host, t2, index);
        return B.JSString_methods.substring$2(host, start, index).toLowerCase() + zoneID + "]";
      }
      for (i = start; i < end; ++i)
        if (host.charCodeAt(i) === 58) {
          index = B.JSString_methods.indexOf$2(host, "%", start);
          index = index >= start && index < end ? index : end;
          if (index < end) {
            zoneIDstart = index + 1;
            zoneID = A._Uri__normalizeZoneID(host, B.JSString_methods.startsWith$2(host, "25", zoneIDstart) ? index + 3 : zoneIDstart, end, "%25");
          } else
            zoneID = "";
          A.Uri_parseIPv6Address(host, start, index);
          return "[" + B.JSString_methods.substring$2(host, start, index) + zoneID + "]";
        }
      return A._Uri__normalizeRegName(host, start, end);
    },
    _Uri__checkZoneID(host, start, end) {
      var index = B.JSString_methods.indexOf$2(host, "%", start);
      return index >= start && index < end ? index : end;
    },
    _Uri__normalizeZoneID(host, start, end, prefix) {
      var index, sectionStart, isNormalized, char, replacement, t1, t2, tail, sourceLength, slice,
        buffer = prefix !== "" ? new A.StringBuffer(prefix) : null;
      for (index = start, sectionStart = index, isNormalized = true; index < end;) {
        char = host.charCodeAt(index);
        if (char === 37) {
          replacement = A._Uri__normalizeEscape(host, index, true);
          t1 = replacement == null;
          if (t1 && isNormalized) {
            index += 3;
            continue;
          }
          if (buffer == null)
            buffer = new A.StringBuffer("");
          t2 = buffer._contents += B.JSString_methods.substring$2(host, sectionStart, index);
          if (t1)
            replacement = B.JSString_methods.substring$2(host, index, index + 3);
          else if (replacement === "%")
            A._Uri__fail(host, index, "ZoneID should not contain % anymore");
          buffer._contents = t2 + replacement;
          index += 3;
          sectionStart = index;
          isNormalized = true;
        } else if (char < 127 && (B.List_M1A[char >>> 4] & 1 << (char & 15)) !== 0) {
          if (isNormalized && 65 <= char && 90 >= char) {
            if (buffer == null)
              buffer = new A.StringBuffer("");
            if (sectionStart < index) {
              buffer._contents += B.JSString_methods.substring$2(host, sectionStart, index);
              sectionStart = index;
            }
            isNormalized = false;
          }
          ++index;
        } else {
          if ((char & 64512) === 55296 && index + 1 < end) {
            tail = host.charCodeAt(index + 1);
            if ((tail & 64512) === 56320) {
              char = (char & 1023) << 10 | tail & 1023 | 65536;
              sourceLength = 2;
            } else
              sourceLength = 1;
          } else
            sourceLength = 1;
          slice = B.JSString_methods.substring$2(host, sectionStart, index);
          if (buffer == null) {
            buffer = new A.StringBuffer("");
            t1 = buffer;
          } else
            t1 = buffer;
          t1._contents += slice;
          t1._contents += A._Uri__escapeChar(char);
          index += sourceLength;
          sectionStart = index;
        }
      }
      if (buffer == null)
        return B.JSString_methods.substring$2(host, start, end);
      if (sectionStart < end)
        buffer._contents += B.JSString_methods.substring$2(host, sectionStart, end);
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Uri__normalizeRegName(host, start, end) {
      var index, sectionStart, buffer, isNormalized, char, replacement, t1, slice, t2, sourceLength, tail;
      for (index = start, sectionStart = index, buffer = null, isNormalized = true; index < end;) {
        char = host.charCodeAt(index);
        if (char === 37) {
          replacement = A._Uri__normalizeEscape(host, index, true);
          t1 = replacement == null;
          if (t1 && isNormalized) {
            index += 3;
            continue;
          }
          if (buffer == null)
            buffer = new A.StringBuffer("");
          slice = B.JSString_methods.substring$2(host, sectionStart, index);
          t2 = buffer._contents += !isNormalized ? slice.toLowerCase() : slice;
          if (t1) {
            replacement = B.JSString_methods.substring$2(host, index, index + 3);
            sourceLength = 3;
          } else if (replacement === "%") {
            replacement = "%25";
            sourceLength = 1;
          } else
            sourceLength = 3;
          buffer._contents = t2 + replacement;
          index += sourceLength;
          sectionStart = index;
          isNormalized = true;
        } else if (char < 127 && (B.List_ejq[char >>> 4] & 1 << (char & 15)) !== 0) {
          if (isNormalized && 65 <= char && 90 >= char) {
            if (buffer == null)
              buffer = new A.StringBuffer("");
            if (sectionStart < index) {
              buffer._contents += B.JSString_methods.substring$2(host, sectionStart, index);
              sectionStart = index;
            }
            isNormalized = false;
          }
          ++index;
        } else if (char <= 93 && (B.List_YmH[char >>> 4] & 1 << (char & 15)) !== 0)
          A._Uri__fail(host, index, "Invalid character");
        else {
          if ((char & 64512) === 55296 && index + 1 < end) {
            tail = host.charCodeAt(index + 1);
            if ((tail & 64512) === 56320) {
              char = (char & 1023) << 10 | tail & 1023 | 65536;
              sourceLength = 2;
            } else
              sourceLength = 1;
          } else
            sourceLength = 1;
          slice = B.JSString_methods.substring$2(host, sectionStart, index);
          if (!isNormalized)
            slice = slice.toLowerCase();
          if (buffer == null) {
            buffer = new A.StringBuffer("");
            t1 = buffer;
          } else
            t1 = buffer;
          t1._contents += slice;
          t1._contents += A._Uri__escapeChar(char);
          index += sourceLength;
          sectionStart = index;
        }
      }
      if (buffer == null)
        return B.JSString_methods.substring$2(host, start, end);
      if (sectionStart < end) {
        slice = B.JSString_methods.substring$2(host, sectionStart, end);
        buffer._contents += !isNormalized ? slice.toLowerCase() : slice;
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Uri__makeScheme(scheme, start, end) {
      var i, containsUpperCase, codeUnit;
      if (start === end)
        return "";
      if (!A._Uri__isAlphabeticCharacter(scheme.charCodeAt(start)))
        A._Uri__fail(scheme, start, "Scheme not starting with alphabetic character");
      for (i = start, containsUpperCase = false; i < end; ++i) {
        codeUnit = scheme.charCodeAt(i);
        if (!(codeUnit < 128 && (B.List_MMm[codeUnit >>> 4] & 1 << (codeUnit & 15)) !== 0))
          A._Uri__fail(scheme, i, "Illegal scheme character");
        if (65 <= codeUnit && codeUnit <= 90)
          containsUpperCase = true;
      }
      scheme = B.JSString_methods.substring$2(scheme, start, end);
      return A._Uri__canonicalizeScheme(containsUpperCase ? scheme.toLowerCase() : scheme);
    },
    _Uri__canonicalizeScheme(scheme) {
      if (scheme === "http")
        return "http";
      if (scheme === "file")
        return "file";
      if (scheme === "https")
        return "https";
      if (scheme === "package")
        return "package";
      return scheme;
    },
    _Uri__makeUserInfo(userInfo, start, end) {
      if (userInfo == null)
        return "";
      return A._Uri__normalizeOrSubstring(userInfo, start, end, B.List_OL3, false, false);
    },
    _Uri__makePath(path, start, end, pathSegments, scheme, hasAuthority) {
      var result,
        isFile = scheme === "file",
        ensureLeadingSlash = isFile || hasAuthority;
      if (path == null) {
        if (pathSegments == null)
          return isFile ? "/" : "";
        result = new A.MappedListIterable(pathSegments, new A._Uri__makePath_closure(), A._arrayInstanceType(pathSegments)._eval$1("MappedListIterable<1,String>")).join$1(0, "/");
      } else if (pathSegments != null)
        throw A.wrapException(A.ArgumentError$("Both path and pathSegments specified", null));
      else
        result = A._Uri__normalizeOrSubstring(path, start, end, B.List_XRg, true, true);
      if (result.length === 0) {
        if (isFile)
          return "/";
      } else if (ensureLeadingSlash && !B.JSString_methods.startsWith$1(result, "/"))
        result = "/" + result;
      return A._Uri__normalizePath(result, scheme, hasAuthority);
    },
    _Uri__normalizePath(path, scheme, hasAuthority) {
      var t1 = scheme.length === 0;
      if (t1 && !hasAuthority && !B.JSString_methods.startsWith$1(path, "/") && !B.JSString_methods.startsWith$1(path, "\\"))
        return A._Uri__normalizeRelativePath(path, !t1 || hasAuthority);
      return A._Uri__removeDotSegments(path);
    },
    _Uri__makeQuery(query, start, end, queryParameters) {
      if (query != null)
        return A._Uri__normalizeOrSubstring(query, start, end, B.List_oFp, true, false);
      return null;
    },
    _Uri__makeFragment(fragment, start, end) {
      if (fragment == null)
        return null;
      return A._Uri__normalizeOrSubstring(fragment, start, end, B.List_oFp, true, false);
    },
    _Uri__normalizeEscape(source, index, lowerCase) {
      var firstDigit, secondDigit, firstDigitValue, secondDigitValue, value,
        t1 = index + 2;
      if (t1 >= source.length)
        return "%";
      firstDigit = source.charCodeAt(index + 1);
      secondDigit = source.charCodeAt(t1);
      firstDigitValue = A.hexDigitValue(firstDigit);
      secondDigitValue = A.hexDigitValue(secondDigit);
      if (firstDigitValue < 0 || secondDigitValue < 0)
        return "%";
      value = firstDigitValue * 16 + secondDigitValue;
      if (value < 127 && (B.List_M1A[B.JSInt_methods._shrOtherPositive$1(value, 4)] & 1 << (value & 15)) !== 0)
        return A.Primitives_stringFromCharCode(lowerCase && 65 <= value && 90 >= value ? (value | 32) >>> 0 : value);
      if (firstDigit >= 97 || secondDigit >= 97)
        return B.JSString_methods.substring$2(source, index, index + 3).toUpperCase();
      return null;
    },
    _Uri__escapeChar(char) {
      var codeUnits, flag, encodedBytes, index, byte,
        _s16_ = "0123456789ABCDEF";
      if (char < 128) {
        codeUnits = new Uint8Array(3);
        codeUnits[0] = 37;
        codeUnits[1] = _s16_.charCodeAt(char >>> 4);
        codeUnits[2] = _s16_.charCodeAt(char & 15);
      } else {
        if (char > 2047)
          if (char > 65535) {
            flag = 240;
            encodedBytes = 4;
          } else {
            flag = 224;
            encodedBytes = 3;
          }
        else {
          flag = 192;
          encodedBytes = 2;
        }
        codeUnits = new Uint8Array(3 * encodedBytes);
        for (index = 0; --encodedBytes, encodedBytes >= 0; flag = 128) {
          byte = B.JSInt_methods._shrReceiverPositive$1(char, 6 * encodedBytes) & 63 | flag;
          codeUnits[index] = 37;
          codeUnits[index + 1] = _s16_.charCodeAt(byte >>> 4);
          codeUnits[index + 2] = _s16_.charCodeAt(byte & 15);
          index += 3;
        }
      }
      return A.String_String$fromCharCodes(codeUnits, 0, null);
    },
    _Uri__normalizeOrSubstring(component, start, end, charTable, escapeDelimiters, replaceBackslash) {
      var t1 = A._Uri__normalize(component, start, end, charTable, escapeDelimiters, replaceBackslash);
      return t1 == null ? B.JSString_methods.substring$2(component, start, end) : t1;
    },
    _Uri__normalize(component, start, end, charTable, escapeDelimiters, replaceBackslash) {
      var t1, index, sectionStart, buffer, char, replacement, sourceLength, t2, tail, t3, _null = null;
      for (t1 = !escapeDelimiters, index = start, sectionStart = index, buffer = _null; index < end;) {
        char = component.charCodeAt(index);
        if (char < 127 && (charTable[char >>> 4] & 1 << (char & 15)) !== 0)
          ++index;
        else {
          if (char === 37) {
            replacement = A._Uri__normalizeEscape(component, index, false);
            if (replacement == null) {
              index += 3;
              continue;
            }
            if ("%" === replacement) {
              replacement = "%25";
              sourceLength = 1;
            } else
              sourceLength = 3;
          } else if (char === 92 && replaceBackslash) {
            replacement = "/";
            sourceLength = 1;
          } else if (t1 && char <= 93 && (B.List_YmH[char >>> 4] & 1 << (char & 15)) !== 0) {
            A._Uri__fail(component, index, "Invalid character");
            sourceLength = _null;
            replacement = sourceLength;
          } else {
            if ((char & 64512) === 55296) {
              t2 = index + 1;
              if (t2 < end) {
                tail = component.charCodeAt(t2);
                if ((tail & 64512) === 56320) {
                  char = (char & 1023) << 10 | tail & 1023 | 65536;
                  sourceLength = 2;
                } else
                  sourceLength = 1;
              } else
                sourceLength = 1;
            } else
              sourceLength = 1;
            replacement = A._Uri__escapeChar(char);
          }
          if (buffer == null) {
            buffer = new A.StringBuffer("");
            t2 = buffer;
          } else
            t2 = buffer;
          t3 = t2._contents += B.JSString_methods.substring$2(component, sectionStart, index);
          t2._contents = t3 + A.S(replacement);
          index += sourceLength;
          sectionStart = index;
        }
      }
      if (buffer == null)
        return _null;
      if (sectionStart < end)
        buffer._contents += B.JSString_methods.substring$2(component, sectionStart, end);
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Uri__mayContainDotSegments(path) {
      if (B.JSString_methods.startsWith$1(path, "."))
        return true;
      return B.JSString_methods.indexOf$1(path, "/.") !== -1;
    },
    _Uri__removeDotSegments(path) {
      var output, t1, t2, appendSlash, _i, segment;
      if (!A._Uri__mayContainDotSegments(path))
        return path;
      output = A._setArrayType([], type$.JSArray_String);
      for (t1 = path.split("/"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {
        segment = t1[_i];
        if (J.$eq$(segment, "..")) {
          if (output.length !== 0) {
            output.pop();
            if (output.length === 0)
              output.push("");
          }
          appendSlash = true;
        } else if ("." === segment)
          appendSlash = true;
        else {
          output.push(segment);
          appendSlash = false;
        }
      }
      if (appendSlash)
        output.push("");
      return B.JSArray_methods.join$1(output, "/");
    },
    _Uri__normalizeRelativePath(path, allowScheme) {
      var output, t1, t2, appendSlash, _i, segment;
      if (!A._Uri__mayContainDotSegments(path))
        return !allowScheme ? A._Uri__escapeScheme(path) : path;
      output = A._setArrayType([], type$.JSArray_String);
      for (t1 = path.split("/"), t2 = t1.length, appendSlash = false, _i = 0; _i < t2; ++_i) {
        segment = t1[_i];
        if (".." === segment)
          if (output.length !== 0 && B.JSArray_methods.get$last(output) !== "..") {
            output.pop();
            appendSlash = true;
          } else {
            output.push("..");
            appendSlash = false;
          }
        else if ("." === segment)
          appendSlash = true;
        else {
          output.push(segment);
          appendSlash = false;
        }
      }
      t1 = output.length;
      if (t1 !== 0)
        t1 = t1 === 1 && output[0].length === 0;
      else
        t1 = true;
      if (t1)
        return "./";
      if (appendSlash || B.JSArray_methods.get$last(output) === "..")
        output.push("");
      if (!allowScheme)
        output[0] = A._Uri__escapeScheme(output[0]);
      return B.JSArray_methods.join$1(output, "/");
    },
    _Uri__escapeScheme(path) {
      var i, char,
        t1 = path.length;
      if (t1 >= 2 && A._Uri__isAlphabeticCharacter(path.charCodeAt(0)))
        for (i = 1; i < t1; ++i) {
          char = path.charCodeAt(i);
          if (char === 58)
            return B.JSString_methods.substring$2(path, 0, i) + "%3A" + B.JSString_methods.substring$1(path, i + 1);
          if (char > 127 || (B.List_MMm[char >>> 4] & 1 << (char & 15)) === 0)
            break;
        }
      return path;
    },
    _Uri__packageNameEnd(uri, path) {
      if (uri.isScheme$1("package") && uri._host == null)
        return A._skipPackageNameChars(path, 0, path.length);
      return -1;
    },
    _Uri__toWindowsFilePath(uri) {
      var hasDriveLetter, t2, host,
        segments = uri.get$pathSegments(),
        t1 = segments.length;
      if (t1 > 0 && J.get$length$asx(segments[0]) === 2 && J.codeUnitAt$1$s(segments[0], 1) === 58) {
        A._Uri__checkWindowsDriveLetter(J.codeUnitAt$1$s(segments[0], 0), false);
        A._Uri__checkWindowsPathReservedCharacters(segments, false, 1);
        hasDriveLetter = true;
      } else {
        A._Uri__checkWindowsPathReservedCharacters(segments, false, 0);
        hasDriveLetter = false;
      }
      t2 = uri.get$hasAbsolutePath() && !hasDriveLetter ? "" + "\\" : "";
      if (uri.get$hasAuthority()) {
        host = uri.get$host();
        if (host.length !== 0)
          t2 = t2 + "\\" + host + "\\";
      }
      t2 = A.StringBuffer__writeAll(t2, segments, "\\");
      t1 = hasDriveLetter && t1 === 1 ? t2 + "\\" : t2;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _Uri__hexCharPairToByte(s, pos) {
      var byte, i, charCode;
      for (byte = 0, i = 0; i < 2; ++i) {
        charCode = s.charCodeAt(pos + i);
        if (48 <= charCode && charCode <= 57)
          byte = byte * 16 + charCode - 48;
        else {
          charCode |= 32;
          if (97 <= charCode && charCode <= 102)
            byte = byte * 16 + charCode - 87;
          else
            throw A.wrapException(A.ArgumentError$("Invalid URL encoding", null));
        }
      }
      return byte;
    },
    _Uri__uriDecode(text, start, end, encoding, plusToSpace) {
      var simple, codeUnit, t1, bytes,
        i = start;
      while (true) {
        if (!(i < end)) {
          simple = true;
          break;
        }
        codeUnit = text.charCodeAt(i);
        if (codeUnit <= 127)
          if (codeUnit !== 37)
            t1 = false;
          else
            t1 = true;
        else
          t1 = true;
        if (t1) {
          simple = false;
          break;
        }
        ++i;
      }
      if (simple) {
        if (B.C_Utf8Codec !== encoding)
          t1 = false;
        else
          t1 = true;
        if (t1)
          return B.JSString_methods.substring$2(text, start, end);
        else
          bytes = new A.CodeUnits(B.JSString_methods.substring$2(text, start, end));
      } else {
        bytes = A._setArrayType([], type$.JSArray_int);
        for (t1 = text.length, i = start; i < end; ++i) {
          codeUnit = text.charCodeAt(i);
          if (codeUnit > 127)
            throw A.wrapException(A.ArgumentError$("Illegal percent encoding in URI", null));
          if (codeUnit === 37) {
            if (i + 3 > t1)
              throw A.wrapException(A.ArgumentError$("Truncated URI", null));
            bytes.push(A._Uri__hexCharPairToByte(text, i + 1));
            i += 2;
          } else
            bytes.push(codeUnit);
        }
      }
      return B.Utf8Decoder_false.convert$1(bytes);
    },
    _Uri__isAlphabeticCharacter(codeUnit) {
      var lowerCase = codeUnit | 32;
      return 97 <= lowerCase && lowerCase <= 122;
    },
    UriData__writeUri(mimeType, charsetName, parameters, buffer, indices) {
      var t1, slashIndex;
      if (mimeType != null)
        t1 = 10 === mimeType.length && A._caseInsensitiveCompareStart("text/plain", mimeType, 0) >= 0;
      else
        t1 = true;
      if (t1)
        mimeType = "";
      if (mimeType.length === 0 || mimeType === "application/octet-stream")
        t1 = buffer._contents += mimeType;
      else {
        slashIndex = A.UriData__validateMimeType(mimeType);
        if (slashIndex < 0)
          throw A.wrapException(A.ArgumentError$value(mimeType, "mimeType", "Invalid MIME type"));
        t1 = buffer._contents += A._Uri__uriEncode(B.List_yzX, B.JSString_methods.substring$2(mimeType, 0, slashIndex), B.C_Utf8Codec, false);
        buffer._contents = t1 + "/";
        t1 = buffer._contents += A._Uri__uriEncode(B.List_yzX, B.JSString_methods.substring$1(mimeType, slashIndex + 1), B.C_Utf8Codec, false);
      }
      if (charsetName != null) {
        indices.push(t1.length);
        indices.push(buffer._contents.length + 8);
        buffer._contents += ";charset=";
        buffer._contents += A._Uri__uriEncode(B.List_yzX, charsetName, B.C_Utf8Codec, false);
      }
    },
    UriData__validateMimeType(mimeType) {
      var t1, slashIndex, i;
      for (t1 = mimeType.length, slashIndex = -1, i = 0; i < t1; ++i) {
        if (mimeType.charCodeAt(i) !== 47)
          continue;
        if (slashIndex < 0) {
          slashIndex = i;
          continue;
        }
        return -1;
      }
      return slashIndex;
    },
    UriData__parse(text, start, sourceUri) {
      var t1, i, slashIndex, char, equalsIndex, lastSeparator, t2, data,
        _s17_ = "Invalid MIME type",
        indices = A._setArrayType([start - 1], type$.JSArray_int);
      for (t1 = text.length, i = start, slashIndex = -1, char = null; i < t1; ++i) {
        char = text.charCodeAt(i);
        if (char === 44 || char === 59)
          break;
        if (char === 47) {
          if (slashIndex < 0) {
            slashIndex = i;
            continue;
          }
          throw A.wrapException(A.FormatException$(_s17_, text, i));
        }
      }
      if (slashIndex < 0 && i > start)
        throw A.wrapException(A.FormatException$(_s17_, text, i));
      for (; char !== 44;) {
        indices.push(i);
        ++i;
        for (equalsIndex = -1; i < t1; ++i) {
          char = text.charCodeAt(i);
          if (char === 61) {
            if (equalsIndex < 0)
              equalsIndex = i;
          } else if (char === 59 || char === 44)
            break;
        }
        if (equalsIndex >= 0)
          indices.push(equalsIndex);
        else {
          lastSeparator = B.JSArray_methods.get$last(indices);
          if (char !== 44 || i !== lastSeparator + 7 || !B.JSString_methods.startsWith$2(text, "base64", lastSeparator + 1))
            throw A.wrapException(A.FormatException$("Expecting '='", text, i));
          break;
        }
      }
      indices.push(i);
      t2 = i + 1;
      if ((indices.length & 1) === 1)
        text = B.C_Base64Codec.normalize$3(text, t2, t1);
      else {
        data = A._Uri__normalize(text, t2, t1, B.List_oFp, true, false);
        if (data != null)
          text = B.JSString_methods.replaceRange$3(text, t2, t1, data);
      }
      return new A.UriData(text, indices, sourceUri);
    },
    UriData__uriEncodeBytes(canonicalTable, bytes, buffer) {
      var t1, byteOr, i, byte,
        _s16_ = "0123456789ABCDEF";
      for (t1 = J.getInterceptor$asx(bytes), byteOr = 0, i = 0; i < t1.get$length(bytes); ++i) {
        byte = t1.$index(bytes, i);
        byteOr |= byte;
        if (byte < 128 && (canonicalTable[B.JSInt_methods._shrOtherPositive$1(byte, 4)] & 1 << (byte & 15)) !== 0)
          buffer._contents += A.Primitives_stringFromCharCode(byte);
        else {
          buffer._contents += A.Primitives_stringFromCharCode(37);
          buffer._contents += A.Primitives_stringFromCharCode(_s16_.charCodeAt(B.JSInt_methods._shrOtherPositive$1(byte, 4)));
          buffer._contents += A.Primitives_stringFromCharCode(_s16_.charCodeAt(byte & 15));
        }
      }
      if ((byteOr & 4294967040) >>> 0 !== 0)
        for (i = 0; i < t1.get$length(bytes); ++i) {
          byte = t1.$index(bytes, i);
          if (byte < 0 || byte > 255)
            throw A.wrapException(A.ArgumentError$value(byte, "non-byte value", null));
        }
    },
    _createTables() {
      var _i, t1, t2, t3, b,
        _s77_ = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=",
        _s1_ = ".", _s1_0 = ":", _s1_1 = "/", _s1_2 = "\\", _s1_3 = "?", _s1_4 = "#", _s2_ = "/\\",
        tables = J.JSArray_JSArray$allocateGrowable(22, type$.Uint8List);
      for (_i = 0; _i < 22; ++_i)
        tables[_i] = new Uint8Array(96);
      t1 = new A._createTables_build(tables);
      t2 = new A._createTables_setChars();
      t3 = new A._createTables_setRange();
      b = t1.call$2(0, 225);
      t2.call$3(b, _s77_, 1);
      t2.call$3(b, _s1_, 14);
      t2.call$3(b, _s1_0, 34);
      t2.call$3(b, _s1_1, 3);
      t2.call$3(b, _s1_2, 227);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(14, 225);
      t2.call$3(b, _s77_, 1);
      t2.call$3(b, _s1_, 15);
      t2.call$3(b, _s1_0, 34);
      t2.call$3(b, _s2_, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(15, 225);
      t2.call$3(b, _s77_, 1);
      t2.call$3(b, "%", 225);
      t2.call$3(b, _s1_0, 34);
      t2.call$3(b, _s1_1, 9);
      t2.call$3(b, _s1_2, 233);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(1, 225);
      t2.call$3(b, _s77_, 1);
      t2.call$3(b, _s1_0, 34);
      t2.call$3(b, _s1_1, 10);
      t2.call$3(b, _s1_2, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(2, 235);
      t2.call$3(b, _s77_, 139);
      t2.call$3(b, _s1_1, 131);
      t2.call$3(b, _s1_2, 131);
      t2.call$3(b, _s1_, 146);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(3, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s1_1, 68);
      t2.call$3(b, _s1_2, 68);
      t2.call$3(b, _s1_, 18);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(4, 229);
      t2.call$3(b, _s77_, 5);
      t3.call$3(b, "AZ", 229);
      t2.call$3(b, _s1_0, 102);
      t2.call$3(b, "@", 68);
      t2.call$3(b, "[", 232);
      t2.call$3(b, _s1_1, 138);
      t2.call$3(b, _s1_2, 138);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(5, 229);
      t2.call$3(b, _s77_, 5);
      t3.call$3(b, "AZ", 229);
      t2.call$3(b, _s1_0, 102);
      t2.call$3(b, "@", 68);
      t2.call$3(b, _s1_1, 138);
      t2.call$3(b, _s1_2, 138);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(6, 231);
      t3.call$3(b, "19", 7);
      t2.call$3(b, "@", 68);
      t2.call$3(b, _s1_1, 138);
      t2.call$3(b, _s1_2, 138);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(7, 231);
      t3.call$3(b, "09", 7);
      t2.call$3(b, "@", 68);
      t2.call$3(b, _s1_1, 138);
      t2.call$3(b, _s1_2, 138);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      t2.call$3(t1.call$2(8, 8), "]", 5);
      b = t1.call$2(9, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s1_, 16);
      t2.call$3(b, _s2_, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(16, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s1_, 17);
      t2.call$3(b, _s2_, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(17, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s1_1, 9);
      t2.call$3(b, _s1_2, 233);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(10, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s1_, 18);
      t2.call$3(b, _s1_1, 10);
      t2.call$3(b, _s1_2, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(18, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s1_, 19);
      t2.call$3(b, _s2_, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(19, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s2_, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(11, 235);
      t2.call$3(b, _s77_, 11);
      t2.call$3(b, _s1_1, 10);
      t2.call$3(b, _s1_2, 234);
      t2.call$3(b, _s1_3, 172);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(12, 236);
      t2.call$3(b, _s77_, 12);
      t2.call$3(b, _s1_3, 12);
      t2.call$3(b, _s1_4, 205);
      b = t1.call$2(13, 237);
      t2.call$3(b, _s77_, 13);
      t2.call$3(b, _s1_3, 13);
      t3.call$3(t1.call$2(20, 245), "az", 21);
      b = t1.call$2(21, 245);
      t3.call$3(b, "az", 21);
      t3.call$3(b, "09", 21);
      t2.call$3(b, "+-.", 21);
      return tables;
    },
    _scan(uri, start, end, state, indices) {
      var i, table, char, transition,
        tables = $.$get$_scannerTables();
      for (i = start; i < end; ++i) {
        table = tables[state];
        char = uri.charCodeAt(i) ^ 96;
        transition = table[char > 95 ? 31 : char];
        state = transition & 31;
        indices[transition >>> 5] = i;
      }
      return state;
    },
    _SimpleUri__packageNameEnd(uri) {
      if (uri._schemeEnd === 7 && B.JSString_methods.startsWith$1(uri._uri, "package") && uri._hostStart <= 0)
        return A._skipPackageNameChars(uri._uri, uri._pathStart, uri._queryStart);
      return -1;
    },
    _skipPackageNameChars(source, start, end) {
      var i, dots, char;
      for (i = start, dots = 0; i < end; ++i) {
        char = source.charCodeAt(i);
        if (char === 47)
          return dots !== 0 ? i : -1;
        if (char === 37 || char === 58)
          return -1;
        dots |= char ^ 46;
      }
      return -1;
    },
    _caseInsensitiveCompareStart(prefix, string, start) {
      var t1, result, i, stringChar, delta, lowerChar;
      for (t1 = prefix.length, result = 0, i = 0; i < t1; ++i) {
        stringChar = string.charCodeAt(start + i);
        delta = prefix.charCodeAt(i) ^ stringChar;
        if (delta !== 0) {
          if (delta === 32) {
            lowerChar = stringChar | delta;
            if (97 <= lowerChar && lowerChar <= 122) {
              result = 32;
              continue;
            }
          }
          return -1;
        }
      }
      return result;
    },
    NoSuchMethodError_toString_closure: function NoSuchMethodError_toString_closure(t0, t1) {
      this._box_0 = t0;
      this.sb = t1;
    },
    DateTime: function DateTime(t0, t1) {
      this._core$_value = t0;
      this.isUtc = t1;
    },
    Duration: function Duration(t0) {
      this._duration = t0;
    },
    _Enum: function _Enum() {
    },
    Error: function Error() {
    },
    AssertionError: function AssertionError(t0) {
      this.message = t0;
    },
    TypeError: function TypeError() {
    },
    ArgumentError: function ArgumentError(t0, t1, t2, t3) {
      var _ = this;
      _._hasValue = t0;
      _.invalidValue = t1;
      _.name = t2;
      _.message = t3;
    },
    RangeError: function RangeError(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.start = t0;
      _.end = t1;
      _._hasValue = t2;
      _.invalidValue = t3;
      _.name = t4;
      _.message = t5;
    },
    IndexError: function IndexError(t0, t1, t2, t3, t4) {
      var _ = this;
      _.length = t0;
      _._hasValue = t1;
      _.invalidValue = t2;
      _.name = t3;
      _.message = t4;
    },
    NoSuchMethodError: function NoSuchMethodError(t0, t1, t2, t3) {
      var _ = this;
      _._core$_receiver = t0;
      _._memberName = t1;
      _._core$_arguments = t2;
      _._namedArguments = t3;
    },
    UnsupportedError: function UnsupportedError(t0) {
      this.message = t0;
    },
    UnimplementedError: function UnimplementedError(t0) {
      this.message = t0;
    },
    StateError: function StateError(t0) {
      this.message = t0;
    },
    ConcurrentModificationError: function ConcurrentModificationError(t0) {
      this.modifiedObject = t0;
    },
    OutOfMemoryError: function OutOfMemoryError() {
    },
    StackOverflowError: function StackOverflowError() {
    },
    _Exception: function _Exception(t0) {
      this.message = t0;
    },
    FormatException: function FormatException(t0, t1, t2) {
      this.message = t0;
      this.source = t1;
      this.offset = t2;
    },
    Iterable: function Iterable() {
    },
    _GeneratorIterable: function _GeneratorIterable(t0, t1, t2) {
      this.length = t0;
      this._generator = t1;
      this.$ti = t2;
    },
    MapEntry: function MapEntry(t0, t1, t2) {
      this.key = t0;
      this.value = t1;
      this.$ti = t2;
    },
    Null: function Null() {
    },
    Object: function Object() {
    },
    _StringStackTrace: function _StringStackTrace(t0) {
      this._stackTrace = t0;
    },
    Runes: function Runes(t0) {
      this.string = t0;
    },
    RuneIterator: function RuneIterator(t0) {
      var _ = this;
      _.string = t0;
      _._nextPosition = _._position = 0;
      _._currentCodePoint = -1;
    },
    StringBuffer: function StringBuffer(t0) {
      this._contents = t0;
    },
    Uri__parseIPv4Address_error: function Uri__parseIPv4Address_error(t0) {
      this.host = t0;
    },
    Uri_parseIPv6Address_error: function Uri_parseIPv6Address_error(t0) {
      this.host = t0;
    },
    Uri_parseIPv6Address_parseHex: function Uri_parseIPv6Address_parseHex(t0, t1) {
      this.error = t0;
      this.host = t1;
    },
    _Uri: function _Uri(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.scheme = t0;
      _._userInfo = t1;
      _._host = t2;
      _._port = t3;
      _.path = t4;
      _._query = t5;
      _._fragment = t6;
      _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = $;
    },
    _Uri__makePath_closure: function _Uri__makePath_closure() {
    },
    UriData: function UriData(t0, t1, t2) {
      this._text = t0;
      this._separatorIndices = t1;
      this._uriCache = t2;
    },
    _createTables_build: function _createTables_build(t0) {
      this.tables = t0;
    },
    _createTables_setChars: function _createTables_setChars() {
    },
    _createTables_setRange: function _createTables_setRange() {
    },
    _SimpleUri: function _SimpleUri(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _._uri = t0;
      _._schemeEnd = t1;
      _._hostStart = t2;
      _._portStart = t3;
      _._pathStart = t4;
      _._queryStart = t5;
      _._fragmentStart = t6;
      _._schemeCache = t7;
      _._hashCodeCache = null;
    },
    _DataUri: function _DataUri(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.scheme = t0;
      _._userInfo = t1;
      _._host = t2;
      _._port = t3;
      _.path = t4;
      _._query = t5;
      _._fragment = t6;
      _.___Uri_hashCode_FI = _.___Uri_pathSegments_FI = _.___Uri__text_FI = $;
    },
    Expando: function Expando(t0) {
      this._jsWeakMap = t0;
    },
    _convertDartFunctionFast(f) {
      var ret,
        existing = f.$dart_jsFunction;
      if (existing != null)
        return existing;
      ret = function(_call, f) {
        return function() {
          return _call(f, Array.prototype.slice.apply(arguments));
        };
      }(A._callDartFunctionFast, f);
      ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
      f.$dart_jsFunction = ret;
      return ret;
    },
    _convertDartFunctionFastCaptureThis(f) {
      var ret,
        existing = f._$dart_jsFunctionCaptureThis;
      if (existing != null)
        return existing;
      ret = function(_call, f) {
        return function() {
          return _call(f, this, Array.prototype.slice.apply(arguments));
        };
      }(A._callDartFunctionFastCaptureThis, f);
      ret[$.$get$DART_CLOSURE_PROPERTY_NAME()] = f;
      f._$dart_jsFunctionCaptureThis = ret;
      return ret;
    },
    _callDartFunctionFast(callback, $arguments) {
      return A.Function_apply(callback, $arguments);
    },
    _callDartFunctionFastCaptureThis(callback, $self, $arguments) {
      var t1 = [$self];
      B.JSArray_methods.addAll$1(t1, $arguments);
      return A.Function_apply(callback, t1);
    },
    allowInterop(f) {
      if (typeof f == "function")
        return f;
      else
        return A._convertDartFunctionFast(f);
    },
    allowInteropCaptureThis(f) {
      if (typeof f == "function")
        throw A.wrapException(A.ArgumentError$("Function is already a JS function so cannot capture this.", null));
      else
        return A._convertDartFunctionFastCaptureThis(f);
    },
    _noJsifyRequired(o) {
      return o == null || A._isBool(o) || typeof o == "number" || typeof o == "string" || type$.Int8List._is(o) || type$.Uint8List._is(o) || type$.Uint8ClampedList._is(o) || type$.Int16List._is(o) || type$.Uint16List._is(o) || type$.Int32List._is(o) || type$.Uint32List._is(o) || type$.Float32List._is(o) || type$.Float64List._is(o) || type$.ByteBuffer._is(o) || type$.ByteData._is(o);
    },
    jsify0(object) {
      if (A._noJsifyRequired(object))
        return object;
      return new A.jsify__convert(new A._IdentityHashMap(type$._IdentityHashMap_of_nullable_Object_and_nullable_Object)).call$1(object);
    },
    callConstructor(constr, $arguments) {
      var args, factoryFunction;
      if ($arguments instanceof Array)
        switch ($arguments.length) {
          case 0:
            return new constr();
          case 1:
            return new constr($arguments[0]);
          case 2:
            return new constr($arguments[0], $arguments[1]);
          case 3:
            return new constr($arguments[0], $arguments[1], $arguments[2]);
          case 4:
            return new constr($arguments[0], $arguments[1], $arguments[2], $arguments[3]);
        }
      args = [null];
      B.JSArray_methods.addAll$1(args, $arguments);
      factoryFunction = constr.bind.apply(constr, args);
      String(factoryFunction);
      return new factoryFunction();
    },
    jsify__convert: function jsify__convert(t0) {
      this._convertedObjects = t0;
    },
    max(a, b) {
      return Math.max(a, b);
    },
    pow(x, exponent) {
      return Math.pow(x, exponent);
    },
    Random_Random() {
      return B.C__JSRandom;
    },
    _JSRandom: function _JSRandom() {
    },
    ArgParser: function ArgParser(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._arg_parser$_options = t0;
      _._aliases = t1;
      _.options = t2;
      _.commands = t3;
      _._optionsAndSeparators = t4;
      _.allowTrailingOptions = t5;
      _.usageLineLength = t6;
    },
    ArgParser__addOption_closure: function ArgParser__addOption_closure(t0) {
      this.$this = t0;
    },
    ArgParserException$(message, commands) {
      return new A.ArgParserException(commands == null ? B.List_empty : A.List_List$unmodifiable(commands, type$.String), message, null, null);
    },
    ArgParserException: function ArgParserException(t0, t1, t2, t3) {
      var _ = this;
      _.commands = t0;
      _.message = t1;
      _.source = t2;
      _.offset = t3;
    },
    ArgResults: function ArgResults(t0, t1, t2, t3) {
      var _ = this;
      _._parser = t0;
      _._parsed = t1;
      _.name = t2;
      _.rest = t3;
    },
    Option: function Option(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) {
      var _ = this;
      _.name = t0;
      _.abbr = t1;
      _.help = t2;
      _.valueHelp = t3;
      _.allowed = t4;
      _.allowedHelp = t5;
      _.defaultsTo = t6;
      _.negatable = t7;
      _.callback = t8;
      _.type = t9;
      _.splitCommas = t10;
      _.mandatory = t11;
      _.hide = t12;
    },
    OptionType: function OptionType(t0) {
      this.name = t0;
    },
    Parser$(_commandName, _grammar, _args, _parent, rest) {
      var t1 = A._setArrayType([], type$.JSArray_String);
      if (rest != null)
        B.JSArray_methods.addAll$1(t1, rest);
      return new A.Parser0(_commandName, _parent, _grammar, _args, t1, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.dynamic));
    },
    _isLetterOrDigit(codeUnit) {
      var t1;
      if (!(codeUnit >= 65 && codeUnit <= 90))
        if (!(codeUnit >= 97 && codeUnit <= 122))
          t1 = codeUnit >= 48 && codeUnit <= 57;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    Parser0: function Parser0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._commandName = t0;
      _._parser$_parent = t1;
      _._grammar = t2;
      _._args = t3;
      _._parser$_rest = t4;
      _._results = t5;
    },
    Parser_parse_closure: function Parser_parse_closure(t0) {
      this.$this = t0;
    },
    Parser__setOption_closure: function Parser__setOption_closure() {
    },
    _Usage: function _Usage(t0, t1, t2) {
      var _ = this;
      _._usage$_optionsAndSeparators = t0;
      _._usage$_buffer = t1;
      _._currentColumn = 0;
      _.___Usage__columnWidths_FI = $;
      _._newlinesNeeded = 0;
      _.lineLength = t2;
    },
    _Usage__writeOption_closure: function _Usage__writeOption_closure() {
    },
    _Usage__buildAllowedList_closure: function _Usage__buildAllowedList_closure(t0) {
      this.option = t0;
    },
    ErrorResult: function ErrorResult(t0, t1) {
      this.error = t0;
      this.stackTrace = t1;
    },
    ValueResult: function ValueResult(t0, t1) {
      this.value = t0;
      this.$ti = t1;
    },
    StreamCompleter: function StreamCompleter(t0, t1) {
      this._stream_completer$_stream = t0;
      this.$ti = t1;
    },
    _CompleterStream: function _CompleterStream(t0) {
      this._sourceStream = this._stream_completer$_controller = null;
      this.$ti = t0;
    },
    StreamGroup: function StreamGroup(t0, t1, t2) {
      var _ = this;
      _.__StreamGroup__controller_A = $;
      _._closed = false;
      _._stream_group$_state = t0;
      _._subscriptions = t1;
      _.$ti = t2;
    },
    StreamGroup_add_closure: function StreamGroup_add_closure() {
    },
    StreamGroup_add_closure0: function StreamGroup_add_closure0(t0, t1) {
      this.$this = t0;
      this.stream = t1;
    },
    StreamGroup__onListen_closure: function StreamGroup__onListen_closure() {
    },
    StreamGroup__onCancel_closure: function StreamGroup__onCancel_closure(t0) {
      this.$this = t0;
    },
    StreamGroup__listenToStream_closure: function StreamGroup__listenToStream_closure(t0, t1) {
      this.$this = t0;
      this.stream = t1;
    },
    _StreamGroupState: function _StreamGroupState(t0) {
      this.name = t0;
    },
    StreamQueue: function StreamQueue(t0, t1, t2, t3) {
      var _ = this;
      _._stream_queue$_source = t0;
      _._stream_queue$_subscription = null;
      _._isDone = false;
      _._eventsReceived = 0;
      _._eventQueue = t1;
      _._requestQueue = t2;
      _.$ti = t3;
    },
    StreamQueue__ensureListening_closure: function StreamQueue__ensureListening_closure(t0) {
      this.$this = t0;
    },
    StreamQueue__ensureListening_closure1: function StreamQueue__ensureListening_closure1(t0) {
      this.$this = t0;
    },
    StreamQueue__ensureListening_closure0: function StreamQueue__ensureListening_closure0(t0) {
      this.$this = t0;
    },
    _NextRequest: function _NextRequest(t0, t1) {
      this._completer = t0;
      this.$ti = t1;
    },
    isNodeJs() {
      var t1 = self.process;
      if (t1 == null)
        t1 = null;
      else {
        t1 = J.get$release$x(t1);
        t1 = t1 == null ? null : J.get$name$x(t1);
      }
      return J.$eq$(t1, "node");
    },
    isBrowser() {
      return !A.isNodeJs() && self.document != null && typeof self.document.querySelector == "function";
    },
    wrapJSExceptions(callback) {
      var error, error0, error1, error2, t1, exception;
      if (!$.$get$_isStrictMode())
        return callback.call$0();
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (typeof t1 == "string") {
          error = t1;
          throw A.wrapException(error);
        } else if (A._isBool(t1)) {
          error0 = t1;
          throw A.wrapException(error0);
        } else if (typeof t1 == "number") {
          error1 = t1;
          throw A.wrapException(error1);
        } else {
          error2 = t1;
          if (typeof error2 == "symbol" || typeof error2 == "bigint" || error2 == null)
            throw A.wrapException(error2.toString());
          throw exception;
        }
      }
    },
    _isStrictMode_closure: function _isStrictMode_closure() {
    },
    Repl: function Repl(t0, t1, t2, t3) {
      var _ = this;
      _.prompt = t0;
      _.continuation = t1;
      _.validator = t2;
      _.__Repl__adapter_A = $;
      _.history = t3;
    },
    alwaysValid_closure: function alwaysValid_closure() {
    },
    ReplAdapter: function ReplAdapter(t0) {
      this.repl = t0;
      this.rl = null;
    },
    ReplAdapter_runAsync_closure: function ReplAdapter_runAsync_closure(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.rl = t2;
      _.runController = t3;
    },
    ReplAdapter_runAsync__closure: function ReplAdapter_runAsync__closure(t0) {
      this.lineController = t0;
    },
    Stdin: function Stdin() {
    },
    Stdout: function Stdout() {
    },
    ReadlineModule: function ReadlineModule() {
    },
    ReadlineOptions: function ReadlineOptions() {
    },
    ReadlineInterface: function ReadlineInterface() {
    },
    EmptyUnmodifiableSet: function EmptyUnmodifiableSet(t0) {
      this.$ti = t0;
    },
    _EmptyUnmodifiableSet_IterableBase_UnmodifiableSetMixin: function _EmptyUnmodifiableSet_IterableBase_UnmodifiableSetMixin() {
    },
    DefaultEquality: function DefaultEquality() {
    },
    IterableEquality: function IterableEquality() {
    },
    ListEquality: function ListEquality() {
    },
    _MapEntry: function _MapEntry(t0, t1, t2) {
      this.equality = t0;
      this.key = t1;
      this.value = t2;
    },
    MapEquality: function MapEquality() {
    },
    QueueList$(initialCapacity, $E) {
      return new A.QueueList(A.List_List$filled(A.QueueList__computeInitialCapacity(initialCapacity), null, false, $E._eval$1("0?")), 0, 0, $E._eval$1("QueueList<0>"));
    },
    QueueList_QueueList$from(source, $E) {
      var $length, queue, t1;
      if (type$.List_dynamic._is(source)) {
        $length = J.get$length$asx(source);
        queue = A.QueueList$($length + 1, $E);
        J.setRange$4$ax(queue._queue_list$_table, 0, $length, source, 0);
        queue._queue_list$_tail = $length;
        return queue;
      } else {
        t1 = A.QueueList$(null, $E);
        t1.addAll$1(0, source);
        return t1;
      }
    },
    QueueList__computeInitialCapacity(initialCapacity) {
      if (initialCapacity == null || initialCapacity < 8)
        return 8;
      ++initialCapacity;
      if ((initialCapacity & initialCapacity - 1) >>> 0 === 0)
        return initialCapacity;
      return A.QueueList__nextPowerOf2(initialCapacity);
    },
    QueueList__nextPowerOf2(number) {
      var nextNumber;
      number = (number << 1 >>> 0) - 1;
      for (; true; number = nextNumber) {
        nextNumber = (number & number - 1) >>> 0;
        if (nextNumber === 0)
          return number;
      }
    },
    QueueList: function QueueList(t0, t1, t2, t3) {
      var _ = this;
      _._queue_list$_table = t0;
      _._queue_list$_head = t1;
      _._queue_list$_tail = t2;
      _.$ti = t3;
    },
    _CastQueueList: function _CastQueueList(t0, t1, t2, t3, t4) {
      var _ = this;
      _._queue_list$_delegate = t0;
      _._queue_list$_table = t1;
      _._queue_list$_head = t2;
      _._queue_list$_tail = t3;
      _.$ti = t4;
    },
    _QueueList_Object_ListMixin: function _QueueList_Object_ListMixin() {
    },
    UnionSet: function UnionSet(t0, t1) {
      this._sets = t0;
      this.$ti = t1;
    },
    UnionSet__iterable_closure: function UnionSet__iterable_closure(t0) {
      this.$this = t0;
    },
    UnionSet_contains_closure: function UnionSet_contains_closure(t0, t1) {
      this.$this = t0;
      this.element = t1;
    },
    _UnionSet_SetBase_UnmodifiableSetMixin: function _UnionSet_SetBase_UnmodifiableSetMixin() {
    },
    UnmodifiableSetMixin__throw() {
      throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable Set"));
    },
    UnmodifiableSetView0: function UnmodifiableSetView0(t0, t1) {
      this._base = t0;
      this.$ti = t1;
    },
    UnmodifiableSetMixin: function UnmodifiableSetMixin() {
    },
    _UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin: function _UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin() {
    },
    _DelegatingIterableBase: function _DelegatingIterableBase() {
    },
    DelegatingSet: function DelegatingSet(t0, t1) {
      this._base = t0;
      this.$ti = t1;
    },
    MapKeySet: function MapKeySet(t0, t1) {
      this._baseMap = t0;
      this.$ti = t1;
    },
    MapKeySet_difference_closure: function MapKeySet_difference_closure(t0, t1) {
      this.$this = t0;
      this.other = t1;
    },
    _MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin: function _MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin() {
    },
    BufferModule: function BufferModule() {
    },
    BufferConstants: function BufferConstants() {
    },
    Buffer: function Buffer() {
    },
    ConsoleModule: function ConsoleModule() {
    },
    Console: function Console() {
    },
    EventEmitter: function EventEmitter() {
    },
    fs() {
      var t1 = $._fs;
      return t1 == null ? $._fs = self.fs : t1;
    },
    FS: function FS() {
    },
    FSConstants: function FSConstants() {
    },
    FSWatcher: function FSWatcher() {
    },
    ReadStream: function ReadStream() {
    },
    ReadStreamOptions: function ReadStreamOptions() {
    },
    WriteStream: function WriteStream() {
    },
    WriteStreamOptions: function WriteStreamOptions() {
    },
    FileOptions: function FileOptions() {
    },
    StatOptions: function StatOptions() {
    },
    MkdirOptions: function MkdirOptions() {
    },
    RmdirOptions: function RmdirOptions() {
    },
    WatchOptions: function WatchOptions() {
    },
    WatchFileOptions: function WatchFileOptions() {
    },
    Stats: function Stats() {
    },
    Promise: function Promise() {
    },
    Date: function Date() {
    },
    JsError: function JsError() {
    },
    Atomics: function Atomics() {
    },
    Modules: function Modules() {
    },
    Module: function Module() {
    },
    Net: function Net() {
    },
    Socket: function Socket() {
    },
    NetAddress: function NetAddress() {
    },
    NetServer: function NetServer() {
    },
    NodeJsError: function NodeJsError() {
    },
    JsAssertionError: function JsAssertionError() {
    },
    JsRangeError: function JsRangeError() {
    },
    JsReferenceError: function JsReferenceError() {
    },
    JsSyntaxError: function JsSyntaxError() {
    },
    JsTypeError: function JsTypeError() {
    },
    JsSystemError: function JsSystemError() {
    },
    Process: function Process() {
    },
    CPUUsage: function CPUUsage() {
    },
    Release: function Release() {
    },
    StreamModule: function StreamModule() {
    },
    Readable: function Readable() {
    },
    Writable: function Writable() {
    },
    Duplex: function Duplex() {
    },
    Transform: function Transform() {
    },
    WritableOptions: function WritableOptions() {
    },
    ReadableOptions: function ReadableOptions() {
    },
    Immediate: function Immediate() {
    },
    Timeout: function Timeout() {
    },
    TTY: function TTY() {
    },
    TTYReadStream: function TTYReadStream() {
    },
    TTYWriteStream: function TTYWriteStream() {
    },
    jsify(dartObject) {
      if (A._isBasicType(dartObject))
        return dartObject;
      return A.jsify0(dartObject);
    },
    _isBasicType(value) {
      var t1 = false;
      if (t1)
        return true;
      return false;
    },
    promiseToFuture(promise, $T) {
      var t1 = new A._Future($.Zone__current, $T._eval$1("_Future<0>")),
        completer = new A._SyncCompleter(t1, $T._eval$1("_SyncCompleter<0>"));
      J.then$2$x(promise, A.allowInterop(new A.promiseToFuture_closure(completer)), A.allowInterop(new A.promiseToFuture_closure0(completer)));
      return t1;
    },
    futureToPromise(future, $T) {
      return new self.Promise(A.allowInterop(new A.futureToPromise_closure(future, $T)));
    },
    Util: function Util() {
    },
    promiseToFuture_closure: function promiseToFuture_closure(t0) {
      this.completer = t0;
    },
    promiseToFuture_closure0: function promiseToFuture_closure0(t0) {
      this.completer = t0;
    },
    futureToPromise_closure: function futureToPromise_closure(t0, t1) {
      this.future = t0;
      this.T = t1;
    },
    futureToPromise__closure: function futureToPromise__closure(t0, t1) {
      this.resolve = t0;
      this.T = t1;
    },
    Context_Context(style) {
      return new A.Context(style, ".");
    },
    _parseUri(uri) {
      if (typeof uri == "string")
        return A.Uri_parse(uri);
      if (type$.Uri._is(uri))
        return uri;
      throw A.wrapException(A.ArgumentError$value(uri, "uri", "Value must be a String or a Uri"));
    },
    _validateArgList(method, args) {
      var numArgs, i, numArgs0, message, t1, t2, t3, t4;
      for (numArgs = args.length, i = 1; i < numArgs; ++i) {
        if (args[i] == null || args[i - 1] != null)
          continue;
        for (; numArgs >= 1; numArgs = numArgs0) {
          numArgs0 = numArgs - 1;
          if (args[numArgs0] != null)
            break;
        }
        message = new A.StringBuffer("");
        t1 = "" + (method + "(");
        message._contents = t1;
        t2 = A._arrayInstanceType(args);
        t3 = t2._eval$1("SubListIterable<1>");
        t4 = new A.SubListIterable(args, 0, numArgs, t3);
        t4.SubListIterable$3(args, 0, numArgs, t2._precomputed1);
        t3 = t1 + new A.MappedListIterable(t4, new A._validateArgList_closure(), t3._eval$1("MappedListIterable<ListIterable.E,String>")).join$1(0, ", ");
        message._contents = t3;
        message._contents = t3 + ("): part " + (i - 1) + " was null, but part " + i + " was not.");
        throw A.wrapException(A.ArgumentError$(message.toString$0(0), null));
      }
    },
    Context: function Context(t0, t1) {
      this.style = t0;
      this._context$_current = t1;
    },
    Context_joinAll_closure: function Context_joinAll_closure() {
    },
    Context_split_closure: function Context_split_closure() {
    },
    _validateArgList_closure: function _validateArgList_closure() {
    },
    _PathDirection: function _PathDirection(t0) {
      this.name = t0;
    },
    _PathRelation: function _PathRelation(t0) {
      this.name = t0;
    },
    InternalStyle: function InternalStyle() {
    },
    ParsedPath_ParsedPath$parse(path, style) {
      var t1, parts, separators, start, i,
        root = style.getRoot$1(path),
        isRootRelative = style.isRootRelative$1(path);
      if (root != null)
        path = B.JSString_methods.substring$1(path, root.length);
      t1 = type$.JSArray_String;
      parts = A._setArrayType([], t1);
      separators = A._setArrayType([], t1);
      t1 = path.length;
      if (t1 !== 0 && style.isSeparator$1(path.charCodeAt(0))) {
        separators.push(path[0]);
        start = 1;
      } else {
        separators.push("");
        start = 0;
      }
      for (i = start; i < t1; ++i)
        if (style.isSeparator$1(path.charCodeAt(i))) {
          parts.push(B.JSString_methods.substring$2(path, start, i));
          separators.push(path[i]);
          start = i + 1;
        }
      if (start < t1) {
        parts.push(B.JSString_methods.substring$1(path, start));
        separators.push("");
      }
      return new A.ParsedPath(style, root, isRootRelative, parts, separators);
    },
    ParsedPath: function ParsedPath(t0, t1, t2, t3, t4) {
      var _ = this;
      _.style = t0;
      _.root = t1;
      _.isRootRelative = t2;
      _.parts = t3;
      _.separators = t4;
    },
    ParsedPath__splitExtension_closure: function ParsedPath__splitExtension_closure() {
    },
    ParsedPath__splitExtension_closure0: function ParsedPath__splitExtension_closure0() {
    },
    PathException$(message) {
      return new A.PathException(message);
    },
    PathException: function PathException(t0) {
      this.message = t0;
    },
    PathMap__create(context, $V) {
      var t1 = {};
      t1.context = context;
      t1.context = $.$get$context();
      return A.LinkedHashMap_LinkedHashMap(new A.PathMap__create_closure(t1), new A.PathMap__create_closure0(t1), new A.PathMap__create_closure1(), type$.nullable_String, $V);
    },
    PathMap: function PathMap(t0, t1) {
      this._map = t0;
      this.$ti = t1;
    },
    PathMap__create_closure: function PathMap__create_closure(t0) {
      this._box_0 = t0;
    },
    PathMap__create_closure0: function PathMap__create_closure0(t0) {
      this._box_0 = t0;
    },
    PathMap__create_closure1: function PathMap__create_closure1() {
    },
    Style__getPlatformStyle() {
      if (A.Uri_base().get$scheme() !== "file")
        return $.$get$Style_url();
      var t1 = A.Uri_base();
      if (!B.JSString_methods.endsWith$1(t1.get$path(t1), "/"))
        return $.$get$Style_url();
      if (A._Uri__Uri(null, "a/b", null, null).toFilePath$0() === "a\\b")
        return $.$get$Style_windows();
      return $.$get$Style_posix();
    },
    Style: function Style() {
    },
    PosixStyle: function PosixStyle(t0, t1, t2) {
      this.separatorPattern = t0;
      this.needsSeparatorPattern = t1;
      this.rootPattern = t2;
    },
    UrlStyle: function UrlStyle(t0, t1, t2, t3) {
      var _ = this;
      _.separatorPattern = t0;
      _.needsSeparatorPattern = t1;
      _.rootPattern = t2;
      _.relativeRootPattern = t3;
    },
    WindowsStyle: function WindowsStyle(t0, t1, t2, t3) {
      var _ = this;
      _.separatorPattern = t0;
      _.needsSeparatorPattern = t1;
      _.rootPattern = t2;
      _.relativeRootPattern = t3;
    },
    WindowsStyle_absolutePathToUri_closure: function WindowsStyle_absolutePathToUri_closure() {
    },
    Version$_(major, minor, patch, preRelease, build, _text) {
      var t1 = preRelease == null ? A._setArrayType([], type$.JSArray_Object) : A.Version__splitParts(preRelease),
        t2 = build == null ? A._setArrayType([], type$.JSArray_Object) : A.Version__splitParts(build);
      if (major < 0)
        A.throwExpression(A.ArgumentError$("Major version must be non-negative.", null));
      if (minor < 0)
        A.throwExpression(A.ArgumentError$("Minor version must be non-negative.", null));
      if (patch < 0)
        A.throwExpression(A.ArgumentError$("Patch version must be non-negative.", null));
      return new A.Version(major, minor, patch, t1, t2, _text);
    },
    Version___parse_tearOff(text) {
      return A.Version_Version$parse(text);
    },
    Version_Version$parse(text) {
      var major, minor, patch, preRelease, build, t1, exception, _null = null,
        _s17_ = 'Could not parse "',
        match = $.$get$completeVersion().firstMatch$1(text);
      if (match == null)
        throw A.wrapException(A.FormatException$(_s17_ + text + '".', _null, _null));
      try {
        t1 = match._match[1];
        t1.toString;
        major = A.int_parse(t1, _null);
        t1 = match._match[2];
        t1.toString;
        minor = A.int_parse(t1, _null);
        t1 = match._match[3];
        t1.toString;
        patch = A.int_parse(t1, _null);
        preRelease = match._match[5];
        build = match._match[8];
        t1 = A.Version$_(major, minor, patch, preRelease, build, text);
        return t1;
      } catch (exception) {
        if (type$.FormatException._is(A.unwrapException(exception)))
          throw A.wrapException(A.FormatException$(_s17_ + text + '".', _null, _null));
        else
          throw exception;
      }
    },
    Version__splitParts(text) {
      var t1 = type$.MappedListIterable_String_Object;
      return A.List_List$of(new A.MappedListIterable(A._setArrayType(text.split("."), type$.JSArray_String), new A.Version__splitParts_closure(), t1), true, t1._eval$1("ListIterable.E"));
    },
    Version: function Version(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.major = t0;
      _.minor = t1;
      _.patch = t2;
      _.preRelease = t3;
      _.build = t4;
      _._version$_text = t5;
    },
    Version__splitParts_closure: function Version__splitParts_closure() {
    },
    VersionRange: function VersionRange(t0, t1, t2, t3) {
      var _ = this;
      _.min = t0;
      _.max = t1;
      _.includeMin = t2;
      _.includeMax = t3;
    },
    CssMediaQuery_parseList(contents, interpolationMap, logger) {
      var t1 = A.SpanScanner$(contents, null);
      return new A.MediaQueryParser(t1, logger, interpolationMap).parse$0();
    },
    CssMediaQuery$type(type, conditions, modifier) {
      return new A.CssMediaQuery(modifier, type, true, conditions == null ? B.List_empty : A.List_List$unmodifiable(conditions, type$.String));
    },
    CssMediaQuery$condition(conditions, conjunction) {
      var t1 = A.List_List$unmodifiable(conditions, type$.String);
      if (t1.length > 1 && conjunction == null)
        A.throwExpression(A.ArgumentError$(string$.If_con, null));
      return new A.CssMediaQuery(null, null, conjunction !== false, t1);
    },
    CssMediaQuery: function CssMediaQuery(t0, t1, t2, t3) {
      var _ = this;
      _.modifier = t0;
      _.type = t1;
      _.conjunction = t2;
      _.conditions = t3;
    },
    _SingletonCssMediaQueryMergeResult: function _SingletonCssMediaQueryMergeResult(t0) {
      this._name = t0;
    },
    MediaQuerySuccessfulMergeResult: function MediaQuerySuccessfulMergeResult(t0) {
      this.query = t0;
    },
    ModifiableCssAtRule$($name, span, childless, value) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode);
      return new A.ModifiableCssAtRule($name, value, childless, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode), t1);
    },
    ModifiableCssAtRule: function ModifiableCssAtRule(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.isChildless = t2;
      _.span = t3;
      _.children = t4;
      _._children = t5;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssComment: function ModifiableCssComment(t0, t1) {
      var _ = this;
      _.text = t0;
      _.span = t1;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssDeclaration$($name, value, span, parsedAsCustomProperty, valueSpanForMap) {
      var t2,
        t1 = valueSpanForMap == null ? value.span : valueSpanForMap;
      if (parsedAsCustomProperty)
        if (!J.startsWith$1$s($name.value, "--"))
          A.throwExpression(A.ArgumentError$(string$.parsed, null));
        else {
          t2 = value.value;
          if (!(t2 instanceof A.SassString))
            A.throwExpression(A.ArgumentError$(string$.If_par + value.toString$0(0) + "` of type " + A.getRuntimeTypeOfDartObject(t2).toString$0(0) + ").", null));
        }
      return new A.ModifiableCssDeclaration($name, value, parsedAsCustomProperty, t1, span);
    },
    ModifiableCssDeclaration: function ModifiableCssDeclaration(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.parsedAsCustomProperty = t2;
      _.valueSpanForMap = t3;
      _.span = t4;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssImport: function ModifiableCssImport(t0, t1, t2) {
      var _ = this;
      _.url = t0;
      _.modifiers = t1;
      _.span = t2;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssKeyframeBlock$(selector, span) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode);
      return new A.ModifiableCssKeyframeBlock(selector, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode), t1);
    },
    ModifiableCssKeyframeBlock: function ModifiableCssKeyframeBlock(t0, t1, t2, t3) {
      var _ = this;
      _.selector = t0;
      _.span = t1;
      _.children = t2;
      _._children = t3;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssMediaRule$(queries, span) {
      var t1 = A.List_List$unmodifiable(queries, type$.CssMediaQuery),
        t2 = A._setArrayType([], type$.JSArray_ModifiableCssNode);
      if (J.get$isEmpty$asx(queries))
        A.throwExpression(A.ArgumentError$value(queries, "queries", "may not be empty."));
      return new A.ModifiableCssMediaRule(t1, span, new A.UnmodifiableListView(t2, type$.UnmodifiableListView_ModifiableCssNode), t2);
    },
    ModifiableCssMediaRule: function ModifiableCssMediaRule(t0, t1, t2, t3) {
      var _ = this;
      _.queries = t0;
      _.span = t1;
      _.children = t2;
      _._children = t3;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssNode: function ModifiableCssNode() {
    },
    ModifiableCssNode_hasFollowingSibling_closure: function ModifiableCssNode_hasFollowingSibling_closure() {
    },
    ModifiableCssParentNode: function ModifiableCssParentNode() {
    },
    ModifiableCssStyleRule$(_selector, span, originalSelector) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode);
      return new A.ModifiableCssStyleRule(_selector, originalSelector, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode), t1);
    },
    ModifiableCssStyleRule: function ModifiableCssStyleRule(t0, t1, t2, t3, t4) {
      var _ = this;
      _._style_rule$_selector = t0;
      _.originalSelector = t1;
      _.span = t2;
      _.children = t3;
      _._children = t4;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssStylesheet$(span) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode);
      return new A.ModifiableCssStylesheet(span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode), t1);
    },
    ModifiableCssStylesheet: function ModifiableCssStylesheet(t0, t1, t2) {
      var _ = this;
      _.span = t0;
      _.children = t1;
      _._children = t2;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    ModifiableCssSupportsRule$(condition, span) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode);
      return new A.ModifiableCssSupportsRule(condition, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode), t1);
    },
    ModifiableCssSupportsRule: function ModifiableCssSupportsRule(t0, t1, t2, t3) {
      var _ = this;
      _.condition = t0;
      _.span = t1;
      _.children = t2;
      _._children = t3;
      _._indexInParent = _._parent = null;
      _.isGroupEnd = false;
    },
    CssNode: function CssNode() {
    },
    CssParentNode: function CssParentNode() {
    },
    _IsInvisibleVisitor: function _IsInvisibleVisitor(t0, t1) {
      this.includeBogus = t0;
      this.includeComments = t1;
    },
    __IsInvisibleVisitor_Object_EveryCssVisitor: function __IsInvisibleVisitor_Object_EveryCssVisitor() {
    },
    CssStylesheet: function CssStylesheet(t0, t1) {
      this.children = t0;
      this.span = t1;
    },
    CssValue: function CssValue(t0, t1, t2) {
      this.value = t0;
      this.span = t1;
      this.$ti = t2;
    },
    _FakeAstNode: function _FakeAstNode(t0) {
      this._callback = t0;
    },
    Argument: function Argument(t0, t1, t2) {
      this.name = t0;
      this.defaultValue = t1;
      this.span = t2;
    },
    ArgumentDeclaration_ArgumentDeclaration$parse(contents, url) {
      return A.ScssParser$(contents, null, url).parseArgumentDeclaration$0();
    },
    ArgumentDeclaration: function ArgumentDeclaration(t0, t1, t2) {
      this.$arguments = t0;
      this.restArgument = t1;
      this.span = t2;
    },
    ArgumentDeclaration_verify_closure: function ArgumentDeclaration_verify_closure() {
    },
    ArgumentDeclaration_verify_closure0: function ArgumentDeclaration_verify_closure0() {
    },
    ArgumentInvocation$empty(span) {
      return new A.ArgumentInvocation(B.List_empty9, B.Map_empty6, null, null, span);
    },
    ArgumentInvocation: function ArgumentInvocation(t0, t1, t2, t3, t4) {
      var _ = this;
      _.positional = t0;
      _.named = t1;
      _.rest = t2;
      _.keywordRest = t3;
      _.span = t4;
    },
    AtRootQuery: function AtRootQuery(t0, t1, t2, t3) {
      var _ = this;
      _.include = t0;
      _.names = t1;
      _._all = t2;
      _._at_root_query$_rule = t3;
    },
    ConfiguredVariable: function ConfiguredVariable(t0, t1, t2, t3) {
      var _ = this;
      _.name = t0;
      _.expression = t1;
      _.isGuarded = t2;
      _.span = t3;
    },
    _IsCalculationSafeVisitor: function _IsCalculationSafeVisitor() {
    },
    _IsCalculationSafeVisitor_visitListExpression_closure: function _IsCalculationSafeVisitor_visitListExpression_closure(t0) {
      this.$this = t0;
    },
    BinaryOperationExpression: function BinaryOperationExpression(t0, t1, t2, t3) {
      var _ = this;
      _.operator = t0;
      _.left = t1;
      _.right = t2;
      _.allowsSlash = t3;
    },
    BinaryOperator: function BinaryOperator(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.operator = t1;
      _.precedence = t2;
      _.isAssociative = t3;
      _._name = t4;
    },
    BooleanExpression: function BooleanExpression(t0, t1) {
      this.value = t0;
      this.span = t1;
    },
    ColorExpression: function ColorExpression(t0, t1) {
      this.value = t0;
      this.span = t1;
    },
    FunctionExpression: function FunctionExpression(t0, t1, t2, t3) {
      var _ = this;
      _.namespace = t0;
      _.originalName = t1;
      _.$arguments = t2;
      _.span = t3;
    },
    IfExpression: function IfExpression(t0, t1) {
      this.$arguments = t0;
      this.span = t1;
    },
    InterpolatedFunctionExpression: function InterpolatedFunctionExpression(t0, t1, t2) {
      this.name = t0;
      this.$arguments = t1;
      this.span = t2;
    },
    ListExpression: function ListExpression(t0, t1, t2, t3) {
      var _ = this;
      _.contents = t0;
      _.separator = t1;
      _.hasBrackets = t2;
      _.span = t3;
    },
    ListExpression_toString_closure: function ListExpression_toString_closure(t0) {
      this.$this = t0;
    },
    ListExpression__elementNeedsParens_closure: function ListExpression__elementNeedsParens_closure(t0) {
      this._0_0 = t0;
    },
    MapExpression: function MapExpression(t0, t1) {
      this.pairs = t0;
      this.span = t1;
    },
    NullExpression: function NullExpression(t0) {
      this.span = t0;
    },
    NumberExpression: function NumberExpression(t0, t1, t2) {
      this.value = t0;
      this.unit = t1;
      this.span = t2;
    },
    ParenthesizedExpression: function ParenthesizedExpression(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    SelectorExpression: function SelectorExpression(t0) {
      this.span = t0;
    },
    StringExpression_quoteText(text) {
      var t1,
        quote = A.StringExpression__bestQuote(A._setArrayType([text], type$.JSArray_String)),
        buffer = new A.StringBuffer("");
      buffer._contents = "" + A.Primitives_stringFromCharCode(quote);
      A.StringExpression__quoteInnerText(text, quote, buffer, true);
      t1 = buffer._contents += A.Primitives_stringFromCharCode(quote);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    StringExpression__quoteInnerText(text, quote, buffer, $static) {
      var t1, t2, i, _1_0, _0_0, t3, t4;
      for (t1 = text.length, t2 = t1 - 1, i = 0; i < t1; ++i) {
        _1_0 = text.charCodeAt(i);
        if (_1_0 === 10 || _1_0 === 13 || _1_0 === 12) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(97);
          if (i !== t2) {
            _0_0 = text.charCodeAt(i + 1);
            if (!(_0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12))
              if (!(_0_0 >= 48 && _0_0 <= 57))
                if (!(_0_0 >= 97 && _0_0 <= 102))
                  t3 = _0_0 >= 65 && _0_0 <= 70;
                else
                  t3 = true;
              else
                t3 = true;
            else
              t3 = true;
            if (t3)
              buffer.writeCharCode$1(32);
          }
          continue;
        }
        if (92 === _1_0) {
          t3 = _1_0;
          t4 = true;
        } else {
          t3 = null;
          t4 = false;
        }
        if (!t4) {
          if (_1_0 === quote) {
            t3 = _1_0;
            t4 = true;
          } else
            t4 = false;
          if (!t4)
            if (35 === _1_0)
              if ($static)
                if (i < t2)
                  if (text.charCodeAt(i + 1) === 123) {
                    t3 = _1_0;
                    t4 = true;
                  } else
                    t4 = false;
                else
                  t4 = false;
              else
                t4 = false;
            else
              t4 = false;
          else
            t4 = true;
        } else
          t4 = true;
        if (t4) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(t3);
          continue;
        }
        buffer.writeCharCode$1(_1_0);
      }
    },
    StringExpression__bestQuote(strings) {
      var t1, containsDoubleQuote, t2, t3, t4;
      for (t1 = J.get$iterator$ax(strings), containsDoubleQuote = false; t1.moveNext$0();)
        for (t2 = new A.CodeUnits(t1.get$current(t1)), t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
          t4 = t2.__internal$_current;
          if (t4 == null)
            t4 = t3._as(t4);
          if (t4 === 39)
            return 34;
          if (t4 === 34)
            containsDoubleQuote = true;
        }
      return containsDoubleQuote ? 39 : 34;
    },
    StringExpression: function StringExpression(t0, t1) {
      this.text = t0;
      this.hasQuotes = t1;
    },
    SupportsExpression: function SupportsExpression(t0) {
      this.condition = t0;
    },
    UnaryOperationExpression: function UnaryOperationExpression(t0, t1, t2) {
      this.operator = t0;
      this.operand = t1;
      this.span = t2;
    },
    UnaryOperator: function UnaryOperator(t0, t1, t2) {
      this.name = t0;
      this.operator = t1;
      this._name = t2;
    },
    ValueExpression: function ValueExpression(t0, t1) {
      this.value = t0;
      this.span = t1;
    },
    VariableExpression: function VariableExpression(t0, t1, t2) {
      this.namespace = t0;
      this.name = t1;
      this.span = t2;
    },
    DynamicImport: function DynamicImport(t0, t1) {
      this.urlString = t0;
      this.span = t1;
    },
    StaticImport: function StaticImport(t0, t1, t2) {
      this.url = t0;
      this.modifiers = t1;
      this.span = t2;
    },
    Interpolation$(contents, span) {
      var t1 = new A.Interpolation(A.List_List$unmodifiable(contents, type$.Object), span);
      t1.Interpolation$2(contents, span);
      return t1;
    },
    Interpolation: function Interpolation(t0, t1) {
      this.contents = t0;
      this.span = t1;
    },
    Interpolation_asPlain_closure: function Interpolation_asPlain_closure(t0) {
      this._0_0 = t0;
    },
    Interpolation_asPlain_closure0: function Interpolation_asPlain_closure0(t0) {
      this._0_0 = t0;
    },
    Interpolation_initialPlain_closure: function Interpolation_initialPlain_closure(t0) {
      this._0_0 = t0;
    },
    Interpolation_toString_closure: function Interpolation_toString_closure() {
    },
    AtRootRule$(children, span, query) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.AtRootRule(query, span, t1, t2);
    },
    AtRootRule: function AtRootRule(t0, t1, t2, t3) {
      var _ = this;
      _.query = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    AtRule$($name, span, children, value) {
      var t1 = children == null ? null : A.List_List$unmodifiable(children, type$.Statement),
        t2 = t1 == null ? null : B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.AtRule($name, value, span, t1, t2 === true);
    },
    AtRule: function AtRule(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    CallableDeclaration: function CallableDeclaration() {
    },
    ContentBlock$($arguments, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.ContentBlock("@content", $arguments, span, t1, t2);
    },
    ContentBlock: function ContentBlock(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.$arguments = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    ContentRule: function ContentRule(t0, t1) {
      this.$arguments = t0;
      this.span = t1;
    },
    DebugRule: function DebugRule(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    Declaration$($name, value, span) {
      return new A.Declaration($name, value, span, null, false);
    },
    Declaration$nested($name, children, span, value) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.Declaration($name, value, span, t1, t2);
    },
    Declaration: function Declaration(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    EachRule$(variables, list, children, span) {
      var t1 = A.List_List$unmodifiable(variables, type$.String),
        t2 = A.List_List$unmodifiable(children, type$.Statement),
        t3 = B.JSArray_methods.any$1(t2, new A.ParentStatement_closure());
      return new A.EachRule(t1, list, span, t2, t3);
    },
    EachRule: function EachRule(t0, t1, t2, t3, t4) {
      var _ = this;
      _.variables = t0;
      _.list = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    EachRule_toString_closure: function EachRule_toString_closure() {
    },
    ErrorRule: function ErrorRule(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    ExtendRule: function ExtendRule(t0, t1, t2) {
      this.selector = t0;
      this.isOptional = t1;
      this.span = t2;
    },
    ForRule$(variable, from, to, children, span, exclusive) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.ForRule(variable, from, to, exclusive, span, t1, t2);
    },
    ForRule: function ForRule(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.variable = t0;
      _.from = t1;
      _.to = t2;
      _.isExclusive = t3;
      _.span = t4;
      _.children = t5;
      _.hasDeclarations = t6;
    },
    ForwardRule: function ForwardRule(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _.url = t0;
      _.shownMixinsAndFunctions = t1;
      _.shownVariables = t2;
      _.hiddenMixinsAndFunctions = t3;
      _.hiddenVariables = t4;
      _.prefix = t5;
      _.configuration = t6;
      _.span = t7;
    },
    FunctionRule$($name, $arguments, children, span, comment) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.FunctionRule($name, $arguments, span, t1, t2);
    },
    FunctionRule: function FunctionRule(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.$arguments = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    IfClause$(expression, children) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement);
      return new A.IfClause(expression, t1, B.JSArray_methods.any$1(t1, new A.IfRuleClause$__closure()));
    },
    ElseClause$(children) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement);
      return new A.ElseClause(t1, B.JSArray_methods.any$1(t1, new A.IfRuleClause$__closure()));
    },
    IfRule: function IfRule(t0, t1, t2) {
      this.clauses = t0;
      this.lastClause = t1;
      this.span = t2;
    },
    IfRule_toString_closure: function IfRule_toString_closure() {
    },
    IfRuleClause: function IfRuleClause() {
    },
    IfRuleClause$__closure: function IfRuleClause$__closure() {
    },
    IfRuleClause$___closure: function IfRuleClause$___closure() {
    },
    IfClause: function IfClause(t0, t1, t2) {
      this.expression = t0;
      this.children = t1;
      this.hasDeclarations = t2;
    },
    ElseClause: function ElseClause(t0, t1) {
      this.children = t0;
      this.hasDeclarations = t1;
    },
    ImportRule: function ImportRule(t0, t1) {
      this.imports = t0;
      this.span = t1;
    },
    IncludeRule: function IncludeRule(t0, t1, t2, t3, t4) {
      var _ = this;
      _.namespace = t0;
      _.name = t1;
      _.$arguments = t2;
      _.content = t3;
      _.span = t4;
    },
    LoudComment: function LoudComment(t0) {
      this.text = t0;
    },
    MediaRule$(query, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.MediaRule(query, span, t1, t2);
    },
    MediaRule: function MediaRule(t0, t1, t2, t3) {
      var _ = this;
      _.query = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    MixinRule$($name, $arguments, children, span, comment) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.MixinRule($name, $arguments, span, t1, t2);
    },
    MixinRule: function MixinRule(t0, t1, t2, t3, t4) {
      var _ = this;
      _.__MixinRule_hasContent_FI = $;
      _.name = t0;
      _.$arguments = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    _HasContentVisitor: function _HasContentVisitor() {
    },
    __HasContentVisitor_Object_StatementSearchVisitor: function __HasContentVisitor_Object_StatementSearchVisitor() {
    },
    ParentStatement: function ParentStatement() {
    },
    ParentStatement_closure: function ParentStatement_closure() {
    },
    ParentStatement__closure: function ParentStatement__closure() {
    },
    ReturnRule: function ReturnRule(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    SilentComment: function SilentComment(t0, t1) {
      this.text = t0;
      this.span = t1;
    },
    StyleRule$(selector, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.StyleRule(selector, span, t1, t2);
    },
    StyleRule: function StyleRule(t0, t1, t2, t3) {
      var _ = this;
      _.selector = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    Stylesheet$(children, span) {
      var t1 = A._setArrayType([], type$.JSArray_UseRule),
        t2 = A._setArrayType([], type$.JSArray_ForwardRule),
        t3 = A.List_List$unmodifiable(children, type$.Statement),
        t4 = B.JSArray_methods.any$1(t3, new A.ParentStatement_closure());
      t1 = new A.Stylesheet(span, false, t1, t2, t3, t4);
      t1.Stylesheet$internal$3$plainCss(children, span, false);
      return t1;
    },
    Stylesheet$internal(children, span, plainCss) {
      var t1 = A._setArrayType([], type$.JSArray_UseRule),
        t2 = A._setArrayType([], type$.JSArray_ForwardRule),
        t3 = A.List_List$unmodifiable(children, type$.Statement),
        t4 = B.JSArray_methods.any$1(t3, new A.ParentStatement_closure());
      t1 = new A.Stylesheet(span, plainCss, t1, t2, t3, t4);
      t1.Stylesheet$internal$3$plainCss(children, span, plainCss);
      return t1;
    },
    Stylesheet_Stylesheet$parse(contents, syntax, logger, url) {
      var error, stackTrace, url0, t1, exception, t2;
      try {
        switch (syntax) {
          case B.Syntax_Sass_sass:
            t1 = A.SpanScanner$(contents, url);
            t1 = new A.SassParser(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.VariableDeclaration), t1, logger, null).parse$0();
            return t1;
          case B.Syntax_SCSS_scss:
            t1 = A.ScssParser$(contents, logger, url).parse$0();
            return t1;
          case B.Syntax_CSS_css:
            t1 = A.SpanScanner$(contents, url);
            t1 = new A.CssParser(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.VariableDeclaration), t1, logger, null).parse$0();
            return t1;
          default:
            t1 = A.ArgumentError$("Unknown syntax " + syntax.toString$0(0) + ".", null);
            throw A.wrapException(t1);
        }
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error;
          t2 = J.getInterceptor$z(t1);
          t1 = A.SourceSpanException.prototype.get$span.call(t2, t1);
          url0 = t1.get$sourceUrl(t1);
          if (url0 == null || J.toString$0$(url0) === "stdin")
            throw exception;
          t1 = type$.Uri;
          throw A.wrapException(A.throwWithTrace(error.withLoadedUrls$1(A.Set_Set$unmodifiable(A.LinkedHashSet_LinkedHashSet$_literal([url0], t1), t1)), error, stackTrace));
        } else
          throw exception;
      }
    },
    Stylesheet: function Stylesheet(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.span = t0;
      _.plainCss = t1;
      _._uses = t2;
      _._forwards = t3;
      _.children = t4;
      _.hasDeclarations = t5;
    },
    SupportsRule$(condition, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.SupportsRule(condition, span, t1, t2);
    },
    SupportsRule: function SupportsRule(t0, t1, t2, t3) {
      var _ = this;
      _.condition = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    UseRule: function UseRule(t0, t1, t2, t3) {
      var _ = this;
      _.url = t0;
      _.namespace = t1;
      _.configuration = t2;
      _.span = t3;
    },
    VariableDeclaration$($name, expression, span, comment, global, guarded, namespace) {
      if (namespace != null && global)
        A.throwExpression(A.ArgumentError$(string$.Other_, null));
      return new A.VariableDeclaration(namespace, $name, expression, guarded, global, span);
    },
    VariableDeclaration: function VariableDeclaration(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.namespace = t0;
      _.name = t1;
      _.expression = t2;
      _.isGuarded = t3;
      _.isGlobal = t4;
      _.span = t5;
    },
    WarnRule: function WarnRule(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    WhileRule$(condition, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure());
      return new A.WhileRule(condition, span, t1, t2);
    },
    WhileRule: function WhileRule(t0, t1, t2, t3) {
      var _ = this;
      _.condition = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    SupportsAnything: function SupportsAnything(t0, t1) {
      this.contents = t0;
      this.span = t1;
    },
    SupportsDeclaration: function SupportsDeclaration(t0, t1, t2) {
      this.name = t0;
      this.value = t1;
      this.span = t2;
    },
    SupportsFunction: function SupportsFunction(t0, t1, t2) {
      this.name = t0;
      this.$arguments = t1;
      this.span = t2;
    },
    SupportsInterpolation: function SupportsInterpolation(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    SupportsNegation: function SupportsNegation(t0, t1) {
      this.condition = t0;
      this.span = t1;
    },
    SupportsOperation$(left, right, operator, span) {
      var lowerOperator = operator.toLowerCase();
      if (lowerOperator !== "and" && lowerOperator !== "or")
        A.throwExpression(A.ArgumentError$value(operator, "operator", 'may only be "and" or "or".'));
      return new A.SupportsOperation(left, right, operator, span);
    },
    SupportsOperation: function SupportsOperation(t0, t1, t2, t3) {
      var _ = this;
      _.left = t0;
      _.right = t1;
      _.operator = t2;
      _.span = t3;
    },
    Selector: function Selector() {
    },
    _IsInvisibleVisitor0: function _IsInvisibleVisitor0(t0) {
      this.includeBogus = t0;
    },
    _IsBogusVisitor: function _IsBogusVisitor(t0) {
      this.includeLeadingCombinator = t0;
    },
    _IsBogusVisitor_visitComplexSelector_closure: function _IsBogusVisitor_visitComplexSelector_closure(t0) {
      this.$this = t0;
    },
    _IsUselessVisitor: function _IsUselessVisitor() {
    },
    _IsUselessVisitor_visitComplexSelector_closure: function _IsUselessVisitor_visitComplexSelector_closure(t0) {
      this.$this = t0;
    },
    __IsBogusVisitor_Object_AnySelectorVisitor: function __IsBogusVisitor_Object_AnySelectorVisitor() {
    },
    __IsInvisibleVisitor_Object_AnySelectorVisitor: function __IsInvisibleVisitor_Object_AnySelectorVisitor() {
    },
    __IsUselessVisitor_Object_AnySelectorVisitor: function __IsUselessVisitor_Object_AnySelectorVisitor() {
    },
    AttributeSelector: function AttributeSelector(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.op = t1;
      _.value = t2;
      _.modifier = t3;
      _.span = t4;
    },
    AttributeOperator: function AttributeOperator(t0, t1) {
      this._attribute$_text = t0;
      this._name = t1;
    },
    ClassSelector: function ClassSelector(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    Combinator: function Combinator(t0, t1) {
      this._combinator$_text = t0;
      this._name = t1;
    },
    ComplexSelector$(leadingCombinators, components, span, lineBreak) {
      var t1 = A.List_List$unmodifiable(leadingCombinators, type$.CssValue_Combinator),
        t2 = A.List_List$unmodifiable(components, type$.ComplexSelectorComponent);
      if (t1.length === 0 && t2.length === 0)
        A.throwExpression(A.ArgumentError$(string$.leadin, null));
      return new A.ComplexSelector(t1, t2, lineBreak, span);
    },
    ComplexSelector: function ComplexSelector(t0, t1, t2, t3) {
      var _ = this;
      _.leadingCombinators = t0;
      _.components = t1;
      _.lineBreak = t2;
      _.__ComplexSelector_specificity_FI = $;
      _.span = t3;
    },
    ComplexSelector_specificity_closure: function ComplexSelector_specificity_closure() {
    },
    ComplexSelector_singleCompound_closure: function ComplexSelector_singleCompound_closure(t0) {
      this._0_0 = t0;
    },
    ComplexSelector_withAdditionalCombinators_closure: function ComplexSelector_withAdditionalCombinators_closure(t0) {
      this._0_0 = t0;
    },
    ComplexSelector_concatenate_closure: function ComplexSelector_concatenate_closure(t0) {
      this._0_0 = t0;
    },
    ComplexSelectorComponent: function ComplexSelectorComponent(t0, t1, t2) {
      this.selector = t0;
      this.combinators = t1;
      this.span = t2;
    },
    ComplexSelectorComponent_toString_closure: function ComplexSelectorComponent_toString_closure() {
    },
    CompoundSelector$(components, span) {
      var t1 = A.List_List$unmodifiable(components, type$.SimpleSelector);
      if (t1.length === 0)
        A.throwExpression(A.ArgumentError$("components may not be empty.", null));
      return new A.CompoundSelector(t1, span);
    },
    CompoundSelector: function CompoundSelector(t0, t1) {
      this.components = t0;
      this.__CompoundSelector_specificity_FI = $;
      this.span = t1;
    },
    CompoundSelector_specificity_closure: function CompoundSelector_specificity_closure() {
    },
    IDSelector: function IDSelector(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    IDSelector_unify_closure: function IDSelector_unify_closure(t0) {
      this.$this = t0;
    },
    SelectorList$(components, span) {
      var t1 = A.List_List$unmodifiable(components, type$.ComplexSelector);
      if (t1.length === 0)
        A.throwExpression(A.ArgumentError$("components may not be empty.", null));
      return new A.SelectorList(t1, span);
    },
    SelectorList_SelectorList$parse(contents, allowParent, allowPlaceholder, interpolationMap, logger) {
      return A.SelectorParser$(contents, allowParent, allowPlaceholder, interpolationMap, logger, null).parse$0();
    },
    SelectorList: function SelectorList(t0, t1) {
      this.components = t0;
      this.span = t1;
    },
    SelectorList_asSassList_closure: function SelectorList_asSassList_closure() {
    },
    SelectorList_resolveParentSelectors_closure: function SelectorList_resolveParentSelectors_closure(t0, t1, t2) {
      this.$this = t0;
      this.implicitParent = t1;
      this.parent = t2;
    },
    SelectorList_resolveParentSelectors__closure: function SelectorList_resolveParentSelectors__closure(t0) {
      this.complex = t0;
    },
    SelectorList_resolveParentSelectors__closure0: function SelectorList_resolveParentSelectors__closure0(t0) {
      this.complex = t0;
    },
    SelectorList__resolveParentSelectorsCompound_closure: function SelectorList__resolveParentSelectorsCompound_closure() {
    },
    SelectorList__resolveParentSelectorsCompound_closure0: function SelectorList__resolveParentSelectorsCompound_closure0(t0) {
      this.parent = t0;
    },
    SelectorList__resolveParentSelectorsCompound__closure: function SelectorList__resolveParentSelectorsCompound__closure(t0) {
      this._0_0 = t0;
    },
    SelectorList__resolveParentSelectorsCompound_closure1: function SelectorList__resolveParentSelectorsCompound_closure1(t0, t1, t2) {
      this.parentSelector = t0;
      this.resolvedSimples = t1;
      this.component = t2;
    },
    SelectorList_withAdditionalCombinators_closure: function SelectorList_withAdditionalCombinators_closure(t0) {
      this.combinators = t0;
    },
    _ParentSelectorVisitor: function _ParentSelectorVisitor() {
    },
    __ParentSelectorVisitor_Object_SelectorSearchVisitor: function __ParentSelectorVisitor_Object_SelectorSearchVisitor() {
    },
    ParentSelector: function ParentSelector(t0, t1) {
      this.suffix = t0;
      this.span = t1;
    },
    PlaceholderSelector: function PlaceholderSelector(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    PseudoSelector$($name, span, argument, element, selector) {
      var t1 = !element,
        t2 = t1 && !A.PseudoSelector__isFakePseudoElement($name);
      return new A.PseudoSelector($name, A.unvendor($name), t2, t1, argument, selector, span);
    },
    PseudoSelector__isFakePseudoElement($name) {
      switch ($name.charCodeAt(0)) {
        case 97:
        case 65:
          return A.equalsIgnoreCase($name, "after");
        case 98:
        case 66:
          return A.equalsIgnoreCase($name, "before");
        case 102:
        case 70:
          return A.equalsIgnoreCase($name, "first-line") || A.equalsIgnoreCase($name, "first-letter");
        default:
          return false;
      }
    },
    PseudoSelector: function PseudoSelector(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.name = t0;
      _.normalizedName = t1;
      _.isClass = t2;
      _.isSyntacticClass = t3;
      _.argument = t4;
      _.selector = t5;
      _.__PseudoSelector_specificity_FI = $;
      _.span = t6;
    },
    PseudoSelector_specificity_closure: function PseudoSelector_specificity_closure(t0) {
      this.$this = t0;
    },
    PseudoSelector_specificity__closure: function PseudoSelector_specificity__closure() {
    },
    PseudoSelector_specificity__closure0: function PseudoSelector_specificity__closure0() {
    },
    PseudoSelector_unify_closure: function PseudoSelector_unify_closure() {
    },
    QualifiedName: function QualifiedName(t0, t1) {
      this.name = t0;
      this.namespace = t1;
    },
    SimpleSelector: function SimpleSelector() {
    },
    SimpleSelector_isSuperselector_closure: function SimpleSelector_isSuperselector_closure(t0) {
      this.$this = t0;
    },
    SimpleSelector_isSuperselector__closure: function SimpleSelector_isSuperselector__closure(t0) {
      this.$this = t0;
    },
    TypeSelector: function TypeSelector(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    UniversalSelector: function UniversalSelector(t0, t1) {
      this.namespace = t0;
      this.span = t1;
    },
    UniversalSelector_unify_closure: function UniversalSelector_unify_closure(t0) {
      this._0_0 = t0;
    },
    UniversalSelector_unify_closure0: function UniversalSelector_unify_closure0(t0) {
      this._0_0 = t0;
    },
    compileAsync(path, charset, fatalDeprecations, futureDeprecations, importCache, logger, quietDeps, sourceMap, style, syntax, verbose) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CompileResult),
        $async$returnValue, t3, t0, stylesheet, result, t1, t2;
      var $async$compileAsync = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.Deprecation;
              t2 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
              t2.addAll$1(0, fatalDeprecations);
              t3 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
              t3.addAll$1(0, futureDeprecations);
              logger = new A.DeprecationHandlingLogger(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), logger, t2, t3, !verbose);
              t1 = syntax === A.Syntax_forPath(path);
              $async$goto = t1 ? 3 : 5;
              break;
            case 3:
              // then
              t1 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
              t2 = A.isNodeJs() ? self.process : null;
              if (!J.$eq$(t2 == null ? null : J.get$platform$x(t2), "win32")) {
                t2 = A.isNodeJs() ? self.process : null;
                t2 = J.$eq$(t2 == null ? null : J.get$platform$x(t2), "darwin");
              } else
                t2 = true;
              if (t2) {
                t2 = $.$get$context();
                t3 = A._realCasePath(A.absolute(t2.normalize$1(path), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
                t0 = t3;
                t3 = t2;
                t2 = t0;
              } else {
                t2 = $.$get$context();
                t3 = t2.canonicalize$1(0, path);
                t0 = t3;
                t3 = t2;
                t2 = t0;
              }
              $async$goto = 6;
              return A._asyncAwait(importCache.importCanonical$3$originalUrl(new A.FilesystemImporter(t1), t3.toUri$1(t2), t3.toUri$1(path)), $async$compileAsync);
            case 6:
              // returning from await.
              t3 = $async$result;
              t3.toString;
              stylesheet = t3;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              t1 = A.readFile(path);
              stylesheet = A.Stylesheet_Stylesheet$parse(t1, syntax, logger, $.$get$context().toUri$1(path));
            case 4:
              // join
              $async$goto = 7;
              return A._asyncAwait(A._compileStylesheet0(stylesheet, logger, importCache, null, new A.FilesystemImporter(A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null)), null, style, true, null, null, quietDeps, sourceMap, charset), $async$compileAsync);
            case 7:
              // returning from await.
              result = $async$result;
              logger.summarize$1$js(false);
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$compileAsync, $async$completer);
    },
    compileStringAsync(source, charset, fatalDeprecations, futureDeprecations, importCache, importer, logger, quietDeps, sourceMap, style, syntax, verbose) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CompileResult),
        $async$returnValue, t3, stylesheet, result, t1, t2;
      var $async$compileStringAsync = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.Deprecation;
              t2 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
              t2.addAll$1(0, fatalDeprecations);
              t3 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
              t3.addAll$1(0, futureDeprecations);
              logger = new A.DeprecationHandlingLogger(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), logger, t2, t3, !verbose);
              stylesheet = A.Stylesheet_Stylesheet$parse(source, syntax, logger, null);
              $async$goto = 3;
              return A._asyncAwait(A._compileStylesheet0(stylesheet, logger, importCache, null, importer, null, style, true, null, null, quietDeps, sourceMap, charset), $async$compileStringAsync);
            case 3:
              // returning from await.
              result = $async$result;
              logger.summarize$1$js(false);
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$compileStringAsync, $async$completer);
    },
    _compileStylesheet0(stylesheet, logger, importCache, nodeImporter, importer, functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CompileResult),
        $async$returnValue, serializeResult, resultSourceMap, $async$temp1;
      var $async$_compileStylesheet0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A._EvaluateVisitor$0(functions, importCache, logger, nodeImporter, quietDeps, sourceMap).run$2(0, importer, stylesheet), $async$_compileStylesheet0);
            case 3:
              // returning from await.
              serializeResult = $async$temp1.serialize($async$result._1, charset, indentWidth, false, lineFeed, sourceMap, style, true);
              resultSourceMap = serializeResult._1;
              if (resultSourceMap != null && true)
                A.mapInPlace(resultSourceMap.urls, new A._compileStylesheet_closure0(stylesheet, importCache));
              $async$returnValue = new A.CompileResult(serializeResult);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_compileStylesheet0, $async$completer);
    },
    _compileStylesheet_closure0: function _compileStylesheet_closure0(t0, t1) {
      this.stylesheet = t0;
      this.importCache = t1;
    },
    AsyncEnvironment$() {
      var t1 = type$.String,
        t2 = type$.Module_AsyncCallable,
        t3 = type$.AstNode,
        t4 = type$.int,
        t5 = type$.AsyncCallable,
        t6 = type$.JSArray_Map_String_AsyncCallable;
      return new A.AsyncEnvironment(A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), null, null, A._setArrayType([], type$.JSArray_Module_AsyncCallable), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value)], type$.JSArray_Map_String_Value), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t3)], type$.JSArray_Map_String_AstNode), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), null);
    },
    AsyncEnvironment$_(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, _functions, _mixins, _content) {
      var t1 = type$.String,
        t2 = type$.int;
      return new A.AsyncEnvironment(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _functions, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _mixins, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _content);
    },
    _EnvironmentModule__EnvironmentModule0(environment, css, preModuleComments, extensionStore, forwarded) {
      var t1, t2, t3, t4, t5, t6, module, comments, result, t7;
      if (forwarded == null)
        forwarded = B.Set_empty2;
      t1 = type$.dynamic;
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t2 = type$.Module_AsyncCallable, t3 = type$.List_CssComment, t4 = A.MapExtensions_get_pairs(preModuleComments, t2, t3), t4 = t4.get$iterator(t4), t5 = type$.CssComment; t4.moveNext$0();) {
        t6 = t4.get$current(t4);
        module = t6._0;
        comments = t6._1;
        result = A.List_List$from(comments, false, t5);
        result.fixed$length = Array;
        result.immutable$list = Array;
        t1.$indexSet(0, module, result);
      }
      t1 = A.ConstantMap_ConstantMap$from(t1, t2, t3);
      t2 = A._EnvironmentModule__makeModulesByVariable0(forwarded);
      t3 = A._EnvironmentModule__memberMap0(B.JSArray_methods.get$first(environment._async_environment$_variables), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure5(), type$.Map_String_Value), type$.Value);
      t4 = A._EnvironmentModule__memberMap0(B.JSArray_methods.get$first(environment._async_environment$_variableNodes), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure6(), type$.Map_String_AstNode), type$.AstNode);
      t5 = type$.Map_String_AsyncCallable;
      t6 = type$.AsyncCallable;
      t7 = A._EnvironmentModule__memberMap0(B.JSArray_methods.get$first(environment._async_environment$_functions), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure7(), t5), t6);
      t6 = A._EnvironmentModule__memberMap0(B.JSArray_methods.get$first(environment._async_environment$_mixins), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure8(), t5), t6);
      t5 = J.get$isNotEmpty$asx(css.get$children(css)) || preModuleComments.get$isNotEmpty(preModuleComments) || B.JSArray_methods.any$1(environment._async_environment$_allModules, new A._EnvironmentModule__EnvironmentModule_closure9());
      return A._EnvironmentModule$_0(environment, css, t1, extensionStore, t2, t3, t4, t7, t6, t5, !extensionStore.get$isEmpty(extensionStore) || B.JSArray_methods.any$1(environment._async_environment$_allModules, new A._EnvironmentModule__EnvironmentModule_closure10()));
    },
    _EnvironmentModule__makeModulesByVariable0(forwarded) {
      var modulesByVariable, t1, t2, t3, t4, t5;
      if (forwarded.get$isEmpty(forwarded))
        return B.Map_empty8;
      modulesByVariable = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Module_AsyncCallable);
      for (t1 = forwarded.get$iterator(forwarded); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        if (t2 instanceof A._EnvironmentModule0) {
          for (t3 = t2._async_environment$_modulesByVariable, t3 = t3.get$values(t3), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
            t4 = t3.get$current(t3);
            t5 = t4.get$variables();
            A.setAll(modulesByVariable, t5.get$keys(t5), t4);
          }
          A.setAll(modulesByVariable, J.get$keys$z(B.JSArray_methods.get$first(t2._async_environment$_environment._async_environment$_variables)), t2);
        } else {
          t3 = t2.get$variables();
          A.setAll(modulesByVariable, t3.get$keys(t3), t2);
        }
      }
      return modulesByVariable;
    },
    _EnvironmentModule__memberMap0(localMap, otherMaps, $V) {
      var t1, t2, t3;
      localMap = new A.PublicMemberMapView(localMap, $V._eval$1("PublicMemberMapView<0>"));
      if (otherMaps.get$isEmpty(otherMaps))
        return localMap;
      t1 = A._setArrayType([], $V._eval$1("JSArray<Map<String,0>>"));
      for (t2 = otherMaps.get$iterator(otherMaps); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        if (t3.get$isNotEmpty(t3))
          t1.push(t3);
      }
      t1.push(localMap);
      if (t1.length === 1)
        return localMap;
      return A.MergedMapView$(t1, type$.String, $V);
    },
    _EnvironmentModule$_0(_environment, css, preModuleComments, extensionStore, _modulesByVariable, variables, variableNodes, functions, mixins, transitivelyContainsCss, transitivelyContainsExtensions) {
      return new A._EnvironmentModule0(_environment._async_environment$_allModules, variables, variableNodes, functions, mixins, extensionStore, css, preModuleComments, transitivelyContainsCss, transitivelyContainsExtensions, _environment, _modulesByVariable);
    },
    AsyncEnvironment: function AsyncEnvironment(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) {
      var _ = this;
      _._async_environment$_modules = t0;
      _._async_environment$_namespaceNodes = t1;
      _._async_environment$_globalModules = t2;
      _._async_environment$_importedModules = t3;
      _._async_environment$_forwardedModules = t4;
      _._async_environment$_nestedForwardedModules = t5;
      _._async_environment$_allModules = t6;
      _._async_environment$_variables = t7;
      _._async_environment$_variableNodes = t8;
      _._async_environment$_variableIndices = t9;
      _._async_environment$_functions = t10;
      _._async_environment$_functionIndices = t11;
      _._async_environment$_mixins = t12;
      _._async_environment$_mixinIndices = t13;
      _._async_environment$_content = t14;
      _._async_environment$_inMixin = false;
      _._async_environment$_inSemiGlobalScope = true;
      _._async_environment$_lastVariableIndex = _._async_environment$_lastVariableName = null;
    },
    AsyncEnvironment__getVariableFromGlobalModule_closure: function AsyncEnvironment__getVariableFromGlobalModule_closure(t0) {
      this.name = t0;
    },
    AsyncEnvironment_setVariable_closure: function AsyncEnvironment_setVariable_closure(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    AsyncEnvironment_setVariable_closure0: function AsyncEnvironment_setVariable_closure0(t0) {
      this.name = t0;
    },
    AsyncEnvironment_setVariable_closure1: function AsyncEnvironment_setVariable_closure1(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    AsyncEnvironment__getFunctionFromGlobalModule_closure: function AsyncEnvironment__getFunctionFromGlobalModule_closure(t0) {
      this.name = t0;
    },
    AsyncEnvironment__getMixinFromGlobalModule_closure: function AsyncEnvironment__getMixinFromGlobalModule_closure(t0) {
      this.name = t0;
    },
    AsyncEnvironment_toModule_closure: function AsyncEnvironment_toModule_closure() {
    },
    AsyncEnvironment_toDummyModule_closure: function AsyncEnvironment_toDummyModule_closure() {
    },
    _EnvironmentModule0: function _EnvironmentModule0(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) {
      var _ = this;
      _.upstream = t0;
      _.variables = t1;
      _.variableNodes = t2;
      _.functions = t3;
      _.mixins = t4;
      _.extensionStore = t5;
      _.css = t6;
      _.preModuleComments = t7;
      _.transitivelyContainsCss = t8;
      _.transitivelyContainsExtensions = t9;
      _._async_environment$_environment = t10;
      _._async_environment$_modulesByVariable = t11;
    },
    _EnvironmentModule__EnvironmentModule_closure5: function _EnvironmentModule__EnvironmentModule_closure5() {
    },
    _EnvironmentModule__EnvironmentModule_closure6: function _EnvironmentModule__EnvironmentModule_closure6() {
    },
    _EnvironmentModule__EnvironmentModule_closure7: function _EnvironmentModule__EnvironmentModule_closure7() {
    },
    _EnvironmentModule__EnvironmentModule_closure8: function _EnvironmentModule__EnvironmentModule_closure8() {
    },
    _EnvironmentModule__EnvironmentModule_closure9: function _EnvironmentModule__EnvironmentModule_closure9() {
    },
    _EnvironmentModule__EnvironmentModule_closure10: function _EnvironmentModule__EnvironmentModule_closure10() {
    },
    AsyncImportCache__toImporters(importers, loadPaths, packageConfig) {
      var t1, t2, t3, t4, _i, path, _null = null,
        sassPath = A.getEnvironmentVariable("SASS_PATH");
      if (A.isBrowser()) {
        t1 = A._setArrayType([], type$.JSArray_AsyncImporter_2);
        return t1;
      }
      t1 = A._setArrayType([], type$.JSArray_AsyncImporter_2);
      for (t2 = J.get$iterator$ax(loadPaths); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        t1.push(new A.FilesystemImporter($.$get$context().absolute$15(t3, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
      }
      if (sassPath != null) {
        t2 = A.isNodeJs() ? self.process : _null;
        t3 = sassPath.split(J.$eq$(t2 == null ? _null : J.get$platform$x(t2), "win32") ? ";" : ":");
        t4 = t3.length;
        _i = 0;
        for (; _i < t4; ++_i) {
          path = t3[_i];
          t1.push(new A.FilesystemImporter($.$get$context().absolute$15(path, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
        }
      }
      return t1;
    },
    AsyncImportCache: function AsyncImportCache(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._async_import_cache$_importers = t0;
      _._async_import_cache$_logger = t1;
      _._async_import_cache$_canonicalizeCache = t2;
      _._async_import_cache$_relativeCanonicalizeCache = t3;
      _._async_import_cache$_importCache = t4;
      _._async_import_cache$_resultsCache = t5;
    },
    AsyncImportCache_canonicalize_closure: function AsyncImportCache_canonicalize_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.baseImporter = t1;
      _.baseUrl = t2;
      _.url = t3;
      _.forImport = t4;
    },
    AsyncImportCache_canonicalize_closure0: function AsyncImportCache_canonicalize_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.baseUrl = t2;
      _.forImport = t3;
    },
    AsyncImportCache__canonicalize_closure: function AsyncImportCache__canonicalize_closure(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    AsyncImportCache__canonicalize__closure: function AsyncImportCache__canonicalize__closure(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    AsyncImportCache__canonicalize_closure0: function AsyncImportCache__canonicalize_closure0(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    AsyncImportCache_importCanonical_closure: function AsyncImportCache_importCanonical_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.canonicalUrl = t2;
      _.originalUrl = t3;
      _.quiet = t4;
    },
    AsyncImportCache_humanize_closure: function AsyncImportCache_humanize_closure(t0) {
      this.canonicalUrl = t0;
    },
    AsyncImportCache_humanize_closure0: function AsyncImportCache_humanize_closure0() {
    },
    AsyncImportCache_humanize_closure1: function AsyncImportCache_humanize_closure1() {
    },
    AsyncImportCache_humanize_closure2: function AsyncImportCache_humanize_closure2(t0) {
      this.canonicalUrl = t0;
    },
    AsyncBuiltInCallable$mixin($name, $arguments, callback, url) {
      return new A.AsyncBuiltInCallable($name, A.ScssParser$("@mixin " + $name + "(" + $arguments + ") {", null, url).parseArgumentDeclaration$0(), new A.AsyncBuiltInCallable$mixin_closure(callback), false);
    },
    AsyncBuiltInCallable: function AsyncBuiltInCallable(t0, t1, t2, t3) {
      var _ = this;
      _.name = t0;
      _._async_built_in$_arguments = t1;
      _._async_built_in$_callback = t2;
      _.acceptsContent = t3;
    },
    AsyncBuiltInCallable$mixin_closure: function AsyncBuiltInCallable$mixin_closure(t0) {
      this.callback = t0;
    },
    BuiltInCallable$function($name, $arguments, callback, url) {
      return new A.BuiltInCallable($name, A._setArrayType([new A._Record_2(A.ScssParser$("@function " + $name + "(" + $arguments + ") {", null, url).parseArgumentDeclaration$0(), callback)], type$.JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value), false);
    },
    BuiltInCallable$mixin($name, $arguments, callback, acceptsContent, url) {
      return new A.BuiltInCallable($name, A._setArrayType([new A._Record_2(A.ScssParser$("@mixin " + $name + "(" + $arguments + ") {", null, url).parseArgumentDeclaration$0(), new A.BuiltInCallable$mixin_closure(callback))], type$.JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value), acceptsContent);
    },
    BuiltInCallable$overloadedFunction($name, overloads) {
      var t2, t3, t4, t5, t6, args, callback,
        t1 = A._setArrayType([], type$.JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value);
      for (t2 = type$.String, t3 = A.MapExtensions_get_pairs(overloads, t2, type$.Value_Function_List_Value), t3 = t3.get$iterator(t3), t4 = "@function " + $name + "(", t5 = type$.VariableDeclaration; t3.moveNext$0();) {
        t6 = t3.get$current(t3);
        args = t6._0;
        callback = t6._1;
        t6 = A.SpanScanner$(t4 + args + ") {", null);
        t1.push(new A._Record_2(new A.ScssParser(A.LinkedHashMap_LinkedHashMap$_empty(t2, t5), t6, B.StderrLogger_false, null).parseArgumentDeclaration$0(), callback));
      }
      return new A.BuiltInCallable($name, t1, false);
    },
    BuiltInCallable: function BuiltInCallable(t0, t1, t2) {
      this.name = t0;
      this._overloads = t1;
      this.acceptsContent = t2;
    },
    BuiltInCallable$mixin_closure: function BuiltInCallable$mixin_closure(t0) {
      this.callback = t0;
    },
    PlainCssCallable: function PlainCssCallable(t0) {
      this.name = t0;
    },
    UserDefinedCallable: function UserDefinedCallable(t0, t1, t2, t3) {
      var _ = this;
      _.declaration = t0;
      _.environment = t1;
      _.inDependency = t2;
      _.$ti = t3;
    },
    _compileStylesheet(stylesheet, logger, importCache, nodeImporter, importer, functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset) {
      var serializeResult = A.serialize(A._EvaluateVisitor$(functions, importCache, logger, nodeImporter, quietDeps, sourceMap).run$2(0, importer, stylesheet)._1, charset, indentWidth, false, lineFeed, sourceMap, style, true),
        resultSourceMap = serializeResult._1;
      if (resultSourceMap != null && true)
        A.mapInPlace(resultSourceMap.urls, new A._compileStylesheet_closure(stylesheet, importCache));
      return new A.CompileResult(serializeResult);
    },
    _compileStylesheet_closure: function _compileStylesheet_closure(t0, t1) {
      this.stylesheet = t0;
      this.importCache = t1;
    },
    CompileResult: function CompileResult(t0) {
      this._serialize = t0;
    },
    Configuration: function Configuration(t0, t1) {
      this._configuration$_values = t0;
      this.__originalConfiguration = t1;
    },
    ExplicitConfiguration: function ExplicitConfiguration(t0, t1, t2) {
      this.nodeWithSpan = t0;
      this._configuration$_values = t1;
      this.__originalConfiguration = t2;
    },
    ConfiguredValue: function ConfiguredValue(t0, t1, t2) {
      this.value = t0;
      this.configurationSpan = t1;
      this.assignmentNode = t2;
    },
    Deprecation_fromId(id) {
      return A.IterableExtension_firstWhereOrNull(B.List_GN8, new A.Deprecation_fromId_closure(id));
    },
    Deprecation_forVersion(version) {
      var t2, _i, deprecation, $self, t3,
        t1 = A.LinkedHashSet_LinkedHashSet$_empty(type$.Deprecation);
      for (t2 = new A.VersionRange(null, version, false, true).get$allows(), _i = 0; _i < 16; ++_i) {
        deprecation = B.List_GN8[_i];
        $self = deprecation._deprecatedIn;
        t3 = $self == null ? null : A.Version___parse_tearOff($self);
        t3 = t3 == null ? null : t2.call$1(t3);
        if (t3 == null ? false : t3)
          t1.add$1(0, deprecation);
      }
      return t1;
    },
    Deprecation: function Deprecation(t0, t1, t2, t3, t4) {
      var _ = this;
      _.id = t0;
      _._deprecatedIn = t1;
      _.description = t2;
      _.isFuture = t3;
      _._name = t4;
    },
    Deprecation_fromId_closure: function Deprecation_fromId_closure(t0) {
      this.id = t0;
    },
    Environment$() {
      var t1 = type$.String,
        t2 = type$.Module_Callable,
        t3 = type$.AstNode,
        t4 = type$.int,
        t5 = type$.Callable,
        t6 = type$.JSArray_Map_String_Callable;
      return new A.Environment(A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), null, null, A._setArrayType([], type$.JSArray_Module_Callable), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value)], type$.JSArray_Map_String_Value), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t3)], type$.JSArray_Map_String_AstNode), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), null);
    },
    Environment$_(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, _functions, _mixins, _content) {
      var t1 = type$.String,
        t2 = type$.int;
      return new A.Environment(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _functions, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _mixins, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _content);
    },
    _EnvironmentModule__EnvironmentModule(environment, css, preModuleComments, extensionStore, forwarded) {
      var t1, t2, t3, t4, t5, t6, module, comments, result, t7;
      if (forwarded == null)
        forwarded = B.Set_empty0;
      t1 = type$.dynamic;
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t2 = type$.Module_Callable, t3 = type$.List_CssComment, t4 = A.MapExtensions_get_pairs(preModuleComments, t2, t3), t4 = t4.get$iterator(t4), t5 = type$.CssComment; t4.moveNext$0();) {
        t6 = t4.get$current(t4);
        module = t6._0;
        comments = t6._1;
        result = A.List_List$from(comments, false, t5);
        result.fixed$length = Array;
        result.immutable$list = Array;
        t1.$indexSet(0, module, result);
      }
      t1 = A.ConstantMap_ConstantMap$from(t1, t2, t3);
      t2 = A._EnvironmentModule__makeModulesByVariable(forwarded);
      t3 = A._EnvironmentModule__memberMap(B.JSArray_methods.get$first(environment._variables), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure(), type$.Map_String_Value), type$.Value);
      t4 = A._EnvironmentModule__memberMap(B.JSArray_methods.get$first(environment._variableNodes), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure0(), type$.Map_String_AstNode), type$.AstNode);
      t5 = type$.Map_String_Callable;
      t6 = type$.Callable;
      t7 = A._EnvironmentModule__memberMap(B.JSArray_methods.get$first(environment._functions), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure1(), t5), t6);
      t6 = A._EnvironmentModule__memberMap(B.JSArray_methods.get$first(environment._mixins), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure2(), t5), t6);
      t5 = J.get$isNotEmpty$asx(css.get$children(css)) || preModuleComments.get$isNotEmpty(preModuleComments) || B.JSArray_methods.any$1(environment._allModules, new A._EnvironmentModule__EnvironmentModule_closure3());
      return A._EnvironmentModule$_(environment, css, t1, extensionStore, t2, t3, t4, t7, t6, t5, !extensionStore.get$isEmpty(extensionStore) || B.JSArray_methods.any$1(environment._allModules, new A._EnvironmentModule__EnvironmentModule_closure4()));
    },
    _EnvironmentModule__makeModulesByVariable(forwarded) {
      var modulesByVariable, t1, t2, t3, t4, t5;
      if (forwarded.get$isEmpty(forwarded))
        return B.Map_empty1;
      modulesByVariable = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Module_Callable);
      for (t1 = forwarded.get$iterator(forwarded); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        if (t2 instanceof A._EnvironmentModule) {
          for (t3 = t2._modulesByVariable, t3 = t3.get$values(t3), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
            t4 = t3.get$current(t3);
            t5 = t4.get$variables();
            A.setAll(modulesByVariable, t5.get$keys(t5), t4);
          }
          A.setAll(modulesByVariable, J.get$keys$z(B.JSArray_methods.get$first(t2._environment$_environment._variables)), t2);
        } else {
          t3 = t2.get$variables();
          A.setAll(modulesByVariable, t3.get$keys(t3), t2);
        }
      }
      return modulesByVariable;
    },
    _EnvironmentModule__memberMap(localMap, otherMaps, $V) {
      var t1, t2, t3;
      localMap = new A.PublicMemberMapView(localMap, $V._eval$1("PublicMemberMapView<0>"));
      if (otherMaps.get$isEmpty(otherMaps))
        return localMap;
      t1 = A._setArrayType([], $V._eval$1("JSArray<Map<String,0>>"));
      for (t2 = otherMaps.get$iterator(otherMaps); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        if (t3.get$isNotEmpty(t3))
          t1.push(t3);
      }
      t1.push(localMap);
      if (t1.length === 1)
        return localMap;
      return A.MergedMapView$(t1, type$.String, $V);
    },
    _EnvironmentModule$_(_environment, css, preModuleComments, extensionStore, _modulesByVariable, variables, variableNodes, functions, mixins, transitivelyContainsCss, transitivelyContainsExtensions) {
      return new A._EnvironmentModule(_environment._allModules, variables, variableNodes, functions, mixins, extensionStore, css, preModuleComments, transitivelyContainsCss, transitivelyContainsExtensions, _environment, _modulesByVariable);
    },
    Environment: function Environment(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) {
      var _ = this;
      _._environment$_modules = t0;
      _._namespaceNodes = t1;
      _._globalModules = t2;
      _._importedModules = t3;
      _._forwardedModules = t4;
      _._nestedForwardedModules = t5;
      _._allModules = t6;
      _._variables = t7;
      _._variableNodes = t8;
      _._variableIndices = t9;
      _._functions = t10;
      _._functionIndices = t11;
      _._mixins = t12;
      _._mixinIndices = t13;
      _._content = t14;
      _._inMixin = false;
      _._inSemiGlobalScope = true;
      _._lastVariableIndex = _._lastVariableName = null;
    },
    Environment__getVariableFromGlobalModule_closure: function Environment__getVariableFromGlobalModule_closure(t0) {
      this.name = t0;
    },
    Environment_setVariable_closure: function Environment_setVariable_closure(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    Environment_setVariable_closure0: function Environment_setVariable_closure0(t0) {
      this.name = t0;
    },
    Environment_setVariable_closure1: function Environment_setVariable_closure1(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    Environment__getFunctionFromGlobalModule_closure: function Environment__getFunctionFromGlobalModule_closure(t0) {
      this.name = t0;
    },
    Environment__getMixinFromGlobalModule_closure: function Environment__getMixinFromGlobalModule_closure(t0) {
      this.name = t0;
    },
    Environment_toModule_closure: function Environment_toModule_closure() {
    },
    Environment_toDummyModule_closure: function Environment_toDummyModule_closure() {
    },
    _EnvironmentModule: function _EnvironmentModule(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) {
      var _ = this;
      _.upstream = t0;
      _.variables = t1;
      _.variableNodes = t2;
      _.functions = t3;
      _.mixins = t4;
      _.extensionStore = t5;
      _.css = t6;
      _.preModuleComments = t7;
      _.transitivelyContainsCss = t8;
      _.transitivelyContainsExtensions = t9;
      _._environment$_environment = t10;
      _._modulesByVariable = t11;
    },
    _EnvironmentModule__EnvironmentModule_closure: function _EnvironmentModule__EnvironmentModule_closure() {
    },
    _EnvironmentModule__EnvironmentModule_closure0: function _EnvironmentModule__EnvironmentModule_closure0() {
    },
    _EnvironmentModule__EnvironmentModule_closure1: function _EnvironmentModule__EnvironmentModule_closure1() {
    },
    _EnvironmentModule__EnvironmentModule_closure2: function _EnvironmentModule__EnvironmentModule_closure2() {
    },
    _EnvironmentModule__EnvironmentModule_closure3: function _EnvironmentModule__EnvironmentModule_closure3() {
    },
    _EnvironmentModule__EnvironmentModule_closure4: function _EnvironmentModule__EnvironmentModule_closure4() {
    },
    SassException$(message, span, loadedUrls) {
      return new A.SassException(loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    MultiSpanSassException$(message, span, primaryLabel, secondarySpans, loadedUrls) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassException(primaryLabel, t1, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    SassRuntimeException$(message, span, trace, loadedUrls) {
      return new A.SassRuntimeException(trace, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    MultiSpanSassRuntimeException$(message, span, primaryLabel, secondarySpans, trace, loadedUrls) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassRuntimeException(trace, primaryLabel, t1, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    SassFormatException$(message, span, loadedUrls) {
      return new A.SassFormatException(loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    MultiSpanSassFormatException$(message, span, primaryLabel, secondarySpans, loadedUrls) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassFormatException(primaryLabel, t1, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    SassScriptException$(message, argumentName) {
      return new A.SassScriptException(argumentName == null ? message : "$" + argumentName + ": " + message);
    },
    MultiSpanSassScriptException$(message, primaryLabel, secondarySpans) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassScriptException(primaryLabel, t1, message);
    },
    SassException: function SassException(t0, t1, t2) {
      this.loadedUrls = t0;
      this._span_exception$_message = t1;
      this._span = t2;
    },
    MultiSpanSassException: function MultiSpanSassException(t0, t1, t2, t3, t4) {
      var _ = this;
      _.primaryLabel = t0;
      _.secondarySpans = t1;
      _.loadedUrls = t2;
      _._span_exception$_message = t3;
      _._span = t4;
    },
    SassRuntimeException: function SassRuntimeException(t0, t1, t2, t3) {
      var _ = this;
      _.trace = t0;
      _.loadedUrls = t1;
      _._span_exception$_message = t2;
      _._span = t3;
    },
    MultiSpanSassRuntimeException: function MultiSpanSassRuntimeException(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.trace = t0;
      _.primaryLabel = t1;
      _.secondarySpans = t2;
      _.loadedUrls = t3;
      _._span_exception$_message = t4;
      _._span = t5;
    },
    SassFormatException: function SassFormatException(t0, t1, t2) {
      this.loadedUrls = t0;
      this._span_exception$_message = t1;
      this._span = t2;
    },
    MultiSpanSassFormatException: function MultiSpanSassFormatException(t0, t1, t2, t3, t4) {
      var _ = this;
      _.primaryLabel = t0;
      _.secondarySpans = t1;
      _.loadedUrls = t2;
      _._span_exception$_message = t3;
      _._span = t4;
    },
    SassScriptException: function SassScriptException(t0) {
      this.message = t0;
    },
    MultiSpanSassScriptException: function MultiSpanSassScriptException(t0, t1, t2) {
      this.primaryLabel = t0;
      this.secondarySpans = t1;
      this.message = t2;
    },
    compileStylesheet(options, graph, source, destination, ifModified) {
      return A.compileStylesheet$body(options, graph, source, destination, ifModified);
    },
    compileStylesheet$body(options, graph, source, destination, ifModified) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_int_and_String_and_nullable_String),
        $async$returnValue, $async$handler = 2, $async$currentError, error, stackTrace, message, error0, stackTrace0, path, message0, exception, t1, $async$exception;
      var $async$compileStylesheet = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(A._compileStylesheetWithoutErrorHandling(options, graph, source, destination, ifModified), $async$compileStylesheet);
            case 7:
              // returning from await.
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                if (destination != null && !options.get$emitErrorCss())
                  A._tryDelete(destination);
                message = J.toString$1$color$(error, options.get$color());
                if (A._asBool(options._options.$index(0, "trace"))) {
                  t1 = A.getTrace(error);
                  if (t1 == null)
                    t1 = stackTrace;
                } else
                  t1 = null;
                $async$returnValue = A._getErrorWithStackTrace(65, message, t1);
                // goto return
                $async$goto = 1;
                break;
              } else if (t1 instanceof A.FileSystemException) {
                error0 = t1;
                stackTrace0 = A.getTraceFromException($async$exception);
                path = error0.path;
                message0 = path == null ? error0.message : "Error reading " + $.$get$context().relative$2$from(path, null) + ": " + error0.message + ".";
                if (A._asBool(options._options.$index(0, "trace"))) {
                  t1 = A.getTrace(error0);
                  if (t1 == null)
                    t1 = stackTrace0;
                } else
                  t1 = null;
                $async$returnValue = A._getErrorWithStackTrace(66, message0, t1);
                // goto return
                $async$goto = 1;
                break;
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$compileStylesheet, $async$completer);
    },
    _compileStylesheetWithoutErrorHandling(options, graph, source, destination, ifModified) {
      return A._compileStylesheetWithoutErrorHandling$body(options, graph, source, destination, ifModified);
    },
    _compileStylesheetWithoutErrorHandling$body(options, graph, source, destination, ifModified) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$handler = 2, $async$currentError, syntax, result, importCache, error, exception, t1, t2, t3, t4, t5, t6, t7, t8, t9, result0, t10, t11, t12, t13, logger, stylesheet, t0, css, buffer, sourceName, destinationName, nowStr, timestamp, process, importer, $async$exception;
      var $async$_compileStylesheetWithoutErrorHandling = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              importer = new A.FilesystemImporter(A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null));
              if (ifModified)
                try {
                  if (source != null && destination != null && !graph.modifiedSince$3($.$get$context().toUri$1(source), A.modificationTime(destination), importer)) {
                    // goto return
                    $async$goto = 1;
                    break;
                  }
                } catch (exception) {
                  if (!(A.unwrapException(exception) instanceof A.FileSystemException))
                    throw exception;
                }
              syntax = null;
              if (A._asBoolQ(options._ifParsed$1("indented")) === true)
                syntax = B.Syntax_Sass_sass;
              else if (source != null)
                syntax = A.Syntax_forPath(source);
              else
                syntax = B.Syntax_SCSS_scss;
              result = null;
              $async$handler = 4;
              t1 = options._options;
              $async$goto = A._asBool(t1.$index(0, "async")) ? 7 : 9;
              break;
            case 7:
              // then
              t2 = type$.List_String._as(t1.$index(0, "load-path"));
              t3 = A._asBool(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new A.StderrLogger(options.get$color());
              t4 = type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl;
              t5 = type$.Uri;
              t2 = A.AsyncImportCache__toImporters(null, t2, null);
              importCache = new A.AsyncImportCache(t2, t3, A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_2_Uri_and_bool_forImport, t4), A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_4_Uri_and_AsyncImporter_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport, t4), A.LinkedHashMap_LinkedHashMap$_empty(t5, type$.nullable_Stylesheet), A.LinkedHashMap_LinkedHashMap$_empty(t5, type$.ImporterResult));
              $async$goto = source == null ? 10 : 12;
              break;
            case 10:
              // then
              $async$goto = 13;
              return A._asyncAwait(A.readStdin(), $async$_compileStylesheetWithoutErrorHandling);
            case 13:
              // returning from await.
              t2 = $async$result;
              t3 = syntax;
              t4 = A._asBool(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new A.StderrLogger(options.get$color());
              t5 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
              t6 = J.$eq$(t1.$index(0, "style"), "compressed") ? B.OutputStyle_1 : B.OutputStyle_0;
              t7 = A._asBool(t1.$index(0, "quiet-deps"));
              t8 = A._asBool(t1.$index(0, "verbose"));
              t9 = options.get$emitSourceMap();
              $async$goto = 14;
              return A._asyncAwait(A.compileStringAsync(t2, A._asBool(t1.$index(0, "charset")), options.get$fatalDeprecations(), options.get$futureDeprecations(), importCache, new A.FilesystemImporter(t5), t4, t7, t9, t6, t3, t8), $async$_compileStylesheetWithoutErrorHandling);
            case 14:
              // returning from await.
              result0 = $async$result;
              // goto join
              $async$goto = 11;
              break;
            case 12:
              // else
              t2 = syntax;
              t3 = A._asBool(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new A.StderrLogger(options.get$color());
              t4 = J.$eq$(t1.$index(0, "style"), "compressed") ? B.OutputStyle_1 : B.OutputStyle_0;
              t5 = A._asBool(t1.$index(0, "quiet-deps"));
              t6 = A._asBool(t1.$index(0, "verbose"));
              t7 = options.get$emitSourceMap();
              $async$goto = 15;
              return A._asyncAwait(A.compileAsync(source, A._asBool(t1.$index(0, "charset")), options.get$fatalDeprecations(), options.get$futureDeprecations(), importCache, t3, t5, t7, t4, t2, t6), $async$_compileStylesheetWithoutErrorHandling);
            case 15:
              // returning from await.
              result0 = $async$result;
            case 11:
              // join
              result = result0;
              // goto join
              $async$goto = 8;
              break;
            case 9:
              // else
              $async$goto = source == null ? 16 : 18;
              break;
            case 16:
              // then
              $async$goto = 19;
              return A._asyncAwait(A.readStdin(), $async$_compileStylesheetWithoutErrorHandling);
            case 19:
              // returning from await.
              t2 = $async$result;
              t3 = syntax;
              t4 = A._asBool(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new A.StderrLogger(options.get$color());
              t5 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
              t6 = J.$eq$(t1.$index(0, "style"), "compressed") ? B.OutputStyle_1 : B.OutputStyle_0;
              t7 = A._asBool(t1.$index(0, "quiet-deps"));
              t8 = A._asBool(t1.$index(0, "verbose"));
              t9 = options.get$emitSourceMap();
              t1 = A._asBool(t1.$index(0, "charset"));
              t10 = options.get$fatalDeprecations();
              t11 = options.get$futureDeprecations();
              t12 = type$.Deprecation;
              t13 = A.LinkedHashSet_LinkedHashSet$_empty(t12);
              t13.addAll$1(0, t10);
              t10 = A.LinkedHashSet_LinkedHashSet$_empty(t12);
              t10.addAll$1(0, t11);
              logger = new A.DeprecationHandlingLogger(A.LinkedHashMap_LinkedHashMap$_empty(t12, type$.int), t4, t13, t10, !t8);
              stylesheet = A.Stylesheet_Stylesheet$parse(t2, t3 == null ? B.Syntax_SCSS_scss : t3, logger, null);
              result0 = A._compileStylesheet(stylesheet, logger, graph.importCache, null, new A.FilesystemImporter(t5), null, t6, true, null, null, t7, t9, t1);
              logger.summarize$1$js(false);
              // goto join
              $async$goto = 17;
              break;
            case 18:
              // else
              t2 = syntax;
              t3 = A._asBool(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new A.StderrLogger(options.get$color());
              importCache = graph.importCache;
              t4 = J.$eq$(t1.$index(0, "style"), "compressed") ? B.OutputStyle_1 : B.OutputStyle_0;
              t5 = A._asBool(t1.$index(0, "quiet-deps"));
              t6 = A._asBool(t1.$index(0, "verbose"));
              t7 = options.get$emitSourceMap();
              t1 = A._asBool(t1.$index(0, "charset"));
              t8 = options.get$fatalDeprecations();
              t9 = options.get$futureDeprecations();
              t10 = type$.Deprecation;
              t11 = A.LinkedHashSet_LinkedHashSet$_empty(t10);
              t11.addAll$1(0, t8);
              t8 = A.LinkedHashSet_LinkedHashSet$_empty(t10);
              t8.addAll$1(0, t9);
              logger = new A.DeprecationHandlingLogger(A.LinkedHashMap_LinkedHashMap$_empty(t10, type$.int), t3, t11, t8, !t6);
              t3 = t2 == null || t2 === A.Syntax_forPath(source);
              if (t3) {
                t2 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
                t3 = A.isNodeJs() ? self.process : null;
                if (!J.$eq$(t3 == null ? null : J.get$platform$x(t3), "win32")) {
                  t3 = A.isNodeJs() ? self.process : null;
                  t3 = J.$eq$(t3 == null ? null : J.get$platform$x(t3), "darwin");
                } else
                  t3 = true;
                if (t3) {
                  t3 = $.$get$context();
                  t6 = A._realCasePath(A.absolute(t3.normalize$1(source), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
                  t0 = t6;
                  t6 = t3;
                  t3 = t0;
                } else {
                  t3 = $.$get$context();
                  t6 = t3.canonicalize$1(0, source);
                  t0 = t6;
                  t6 = t3;
                  t3 = t0;
                }
                t6 = importCache.importCanonical$3$originalUrl(new A.FilesystemImporter(t2), t6.toUri$1(t3), t6.toUri$1(source));
                t6.toString;
                stylesheet = t6;
              } else {
                t3 = A.readFile(source);
                if (t2 == null)
                  t2 = A.Syntax_forPath(source);
                stylesheet = A.Stylesheet_Stylesheet$parse(t3, t2, logger, $.$get$context().toUri$1(source));
              }
              result0 = A._compileStylesheet(stylesheet, logger, importCache, null, new A.FilesystemImporter(A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null)), null, t4, true, null, null, t5, t7, t1);
              logger.summarize$1$js(false);
            case 17:
              // join
              result = result0;
            case 8:
              // join
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException) {
                error = t1;
                if (options.get$emitErrorCss())
                  if (destination == null)
                    A.print(error.toCssString$0());
                  else {
                    A.ensureDir($.$get$context().dirname$1(destination));
                    A.writeFile(destination, error.toCssString$0() + "\n");
                  }
                throw $async$exception;
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
              css = result._serialize._0 + A._writeSourceMap(options, result._serialize._1, destination);
              if (destination == null) {
                if (css.length !== 0)
                  A.print(css);
              } else {
                A.ensureDir($.$get$context().dirname$1(destination));
                A.writeFile(destination, css + "\n");
              }
              t1 = options._options;
              if (!A._asBool(t1.$index(0, "quiet")))
                t1 = !A._asBool(t1.$index(0, "update")) && !A._asBool(t1.$index(0, "watch"));
              else
                t1 = true;
              if (t1) {
                // goto return
                $async$goto = 1;
                break;
              }
              buffer = new A.StringBuffer("");
              if (source == null)
                sourceName = "stdin";
              else {
                t1 = $.$get$context();
                sourceName = t1.prettyUri$1(t1.toUri$1(source));
              }
              destination.toString;
              t1 = $.$get$context();
              destinationName = t1.prettyUri$1(t1.toUri$1(destination));
              nowStr = new A.DateTime(Date.now(), false).toString$0(0);
              timestamp = B.JSString_methods.substring$2(nowStr, 0, nowStr.length - 7);
              t1 = options.get$color() ? buffer._contents = "" + "\x1b[90m" : "";
              t1 = buffer._contents = t1 + ("[" + timestamp + "] ");
              if (options.get$color())
                t1 = buffer._contents = t1 + "\x1b[32m";
              t1 += "Compiled " + sourceName + " to " + destinationName + ".";
              buffer._contents = t1;
              if (options.get$color())
                buffer._contents = t1 + "\x1b[0m";
              process = A.isNodeJs() ? self.process : null;
              if (process != null)
                t1 = true;
              else {
                process = null;
                t1 = false;
              }
              if (t1) {
                t1 = J.get$stdout$x(process);
                J.write$1$x(t1, buffer.toString$0(0) + "\n");
              } else {
                t1 = self.console;
                J.log$1$x(t1, buffer);
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_compileStylesheetWithoutErrorHandling, $async$completer);
    },
    _writeSourceMap(options, sourceMap, destination) {
      var t1, sourceMapText, url, sourceMapPath, t2, escapedUrl;
      if (sourceMap == null)
        return "";
      if (destination != null) {
        t1 = $.$get$context();
        sourceMap.targetUrl = t1.toUri$1(A.ParsedPath_ParsedPath$parse(destination, t1.style).get$basename()).toString$0(0);
      }
      A.mapInPlace(sourceMap.urls, new A._writeSourceMap_closure(options, destination));
      t1 = options._options;
      sourceMapText = B.C_JsonCodec.encode$2$toEncodable(sourceMap.toJson$1$includeSourceContents(A._asBool(t1.$index(0, "embed-sources"))), null);
      if (A._asBool(t1.$index(0, "embed-source-map")))
        url = A.Uri_Uri$dataFromString(sourceMapText, B.C_Utf8Codec, "application/json");
      else {
        destination.toString;
        sourceMapPath = destination + ".map";
        t2 = $.$get$context();
        A.ensureDir(t2.dirname$1(sourceMapPath));
        A.writeFile(sourceMapPath, sourceMapText);
        url = t2.toUri$1(t2.relative$2$from(sourceMapPath, t2.dirname$1(destination)));
      }
      t2 = url.toString$0(0);
      escapedUrl = A.stringReplaceAllUnchecked(t2, "*/", "%2A/");
      t1 = (J.$eq$(t1.$index(0, "style"), "compressed") ? B.OutputStyle_1 : B.OutputStyle_0) === B.OutputStyle_1 ? "" : "\n\n";
      return t1 + ("/*# sourceMappingURL=" + escapedUrl + " */");
    },
    _tryDelete(path) {
      var exception;
      try {
        A.deleteFile(path);
      } catch (exception) {
        if (!(A.unwrapException(exception) instanceof A.FileSystemException))
          throw exception;
      }
    },
    _getErrorWithStackTrace(exitCode, error, stackTrace) {
      return new A._Record_3(exitCode, error, stackTrace != null ? B.JSString_methods.trimRight$0(A.Trace_Trace$from(stackTrace).get$terse().toString$0(0)) : null);
    },
    _writeSourceMap_closure: function _writeSourceMap_closure(t0, t1) {
      this.options = t0;
      this.destination = t1;
    },
    compileStylesheets(options, graph, sourcesToDestinations, ifModified) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, _1_4, source, destination, t2, t3, _i, t4, printedError, errorWithStackTrace, code, error, stackTrace, buffer, t1, $async$temp1;
      var $async$compileStylesheets = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.nullable_String;
              t1 = A.List_List$of(A.MapExtensions_get_pairs(sourcesToDestinations, t1, t1), true, type$.Record_2_nullable_String_and_nullable_String);
              _1_4 = A._InitializedCell$(new A.compileStylesheets_closure(t1));
              if (t1.length === 1) {
                source = _1_4._readFinal$0()._0;
                destination = _1_4._readFinal$0()._1;
                t2 = true;
              } else {
                source = null;
                destination = null;
                t2 = false;
              }
              $async$goto = t2 ? 4 : 5;
              break;
            case 4:
              // then
              $async$temp1 = A;
              $async$goto = 6;
              return A._asyncAwait(A.compileStylesheet(options, graph, source, destination, ifModified), $async$compileStylesheets);
            case 6:
              // returning from await.
              t1 = $async$temp1._setArrayType([$async$result], type$.JSArray_nullable_Record_3_int_and_String_and_nullable_String);
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 5:
              // join
              t2 = A._setArrayType([], type$.JSArray_Future_nullable_Record_3_int_and_String_and_nullable_String);
              for (t3 = t1.length, _i = 0; _i < t1.length; t1.length === t3 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
                t4 = t1[_i];
                source = t4._0;
                destination = t4._1;
                t2.push(A.compileStylesheet(options, graph, source, destination, ifModified));
              }
              $async$goto = 7;
              return A._asyncAwait(A.Future_wait(t2, A._asBool(options._options.$index(0, "stop-on-error")), type$.nullable_Record_3_int_and_String_and_nullable_String), $async$compileStylesheets);
            case 7:
              // returning from await.
              t1 = $async$result;
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 3:
              // break $label0$0
              for (t1 = J.get$iterator$ax(t1), printedError = false; t1.moveNext$0();) {
                errorWithStackTrace = t1.get$current(t1);
                if (errorWithStackTrace == null)
                  continue;
                code = errorWithStackTrace._0;
                error = errorWithStackTrace._1;
                stackTrace = errorWithStackTrace._2;
                t2 = self.process;
                if (t2 == null)
                  t2 = null;
                else {
                  t2 = J.get$release$x(t2);
                  t2 = t2 == null ? null : J.get$name$x(t2);
                }
                t2 = J.$eq$(t2, "node") ? self.process : null;
                t2 = t2 == null ? null : J.get$exitCode$x(t2);
                if (t2 == null)
                  t2 = 0;
                t2 = Math.max(t2, code);
                t3 = self.process;
                if (t3 == null)
                  t3 = null;
                else {
                  t3 = J.get$release$x(t3);
                  t3 = t3 == null ? null : J.get$name$x(t3);
                }
                t3 = J.$eq$(t3, "node") ? self.process : null;
                if (t3 != null)
                  J.set$exitCode$x(t3, t2);
                buffer = new A.StringBuffer("");
                t2 = (printedError ? buffer._contents = "" + "\n" : "") + error;
                buffer._contents = t2;
                if (stackTrace != null) {
                  t2 += "\n";
                  buffer._contents = t2;
                  t2 += "\n";
                  buffer._contents = t2;
                  buffer._contents = t2 + stackTrace;
                }
                A.printError(buffer);
                printedError = true;
              }
              $async$returnValue = !printedError;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$compileStylesheets, $async$completer);
    },
    compileStylesheets_closure: function compileStylesheets_closure(t0) {
      this._1_0 = t0;
    },
    ExecutableOptions__separator(text) {
      var t1 = $.$get$ExecutableOptions__separatorBar(),
        t2 = B.JSString_methods.$mul(t1, 3),
        t3 = A.hasTerminal() ? "\x1b[1m" : "",
        t4 = A.hasTerminal() ? "\x1b[0m" : "";
      return t2 + " " + t3 + text + t4 + " " + B.JSString_methods.$mul(t1, 35 - text.length);
    },
    ExecutableOptions__fail(message) {
      return A.throwExpression(A.UsageException$(message));
    },
    ExecutableOptions_ExecutableOptions$parse(args) {
      var options, error, t1, t2, exception;
      try {
        t1 = $.$get$ExecutableOptions__parser();
        t2 = A.ListQueue$(type$.String);
        t2.addAll$1(0, args);
        t2 = A.Parser$(null, t1, t2, null, null).parse$0();
        if (t2.wasParsed$1("poll") && !A._asBool(t2.$index(0, "watch")))
          A.ExecutableOptions__fail("--poll may not be passed without --watch.");
        options = new A.ExecutableOptions(t2);
        if (A._asBool(options._options.$index(0, "help")))
          A.ExecutableOptions__fail("Compile Sass to CSS.");
        return options;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.FormatException._is(t1)) {
          error = t1;
          A.ExecutableOptions__fail(J.get$message$x(error));
        } else
          throw exception;
      }
    },
    UsageException$(message) {
      return new A.UsageException(message);
    },
    ExecutableOptions: function ExecutableOptions(t0) {
      var _ = this;
      _._options = t0;
      _.__ExecutableOptions_interactive_FI = $;
      _._sourcesToDestinations = null;
      _.__ExecutableOptions__sourceDirectoriesToDestinations_F = $;
      _._fatalDeprecations = null;
    },
    ExecutableOptions__parser_closure: function ExecutableOptions__parser_closure() {
    },
    ExecutableOptions__parser__closure: function ExecutableOptions__parser__closure(t0) {
      this._0_0 = t0;
    },
    ExecutableOptions__parser__closure0: function ExecutableOptions__parser__closure0(t0) {
      this._1_0 = t0;
    },
    ExecutableOptions_interactive_closure: function ExecutableOptions_interactive_closure(t0) {
      this.$this = t0;
    },
    ExecutableOptions_emitErrorCss_closure: function ExecutableOptions_emitErrorCss_closure() {
    },
    ExecutableOptions_fatalDeprecations_closure: function ExecutableOptions_fatalDeprecations_closure(t0) {
      this.$this = t0;
    },
    UsageException: function UsageException(t0) {
      this.message = t0;
    },
    watch(options, graph) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, t1, t2, t3, t4, t5, t6, dirWatcher, sourcesToDestinations;
      var $async$watch = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              options._ensureSources$0();
              t1 = options.__ExecutableOptions__sourceDirectoriesToDestinations_F;
              t1 === $ && A.throwUnnamedLateFieldNI();
              t2 = type$.String;
              t1 = t1.cast$2$0(0, t2, t2);
              t1 = A.List_List$of(t1.get$keys(t1), true, t2);
              for (options._ensureSources$0(), t3 = options._sourcesToDestinations.cast$2$0(0, t2, t2), t3 = J.get$iterator$ax(t3.get$keys(t3)); t3.moveNext$0();) {
                t4 = t3.get$current(t3);
                t1.push($.$get$context().dirname$1(t4));
              }
              t3 = options._options;
              B.JSArray_methods.addAll$1(t1, type$.List_String._as(t3.$index(0, "load-path")));
              t4 = A._asBool(t3.$index(0, "poll"));
              t5 = type$.Stream_WatchEvent;
              t6 = A.PathMap__create(null, t5);
              t5 = new A.StreamGroup(B._StreamGroupState_dormant, A.LinkedHashMap_LinkedHashMap$_empty(t5, type$.nullable_StreamSubscription_WatchEvent), type$.StreamGroup_WatchEvent);
              t5.__StreamGroup__controller_A = A.StreamController_StreamController(t5.get$_onCancel(), t5.get$_onListen(), t5.get$_onPause(), t5.get$_onResume(), true, type$.WatchEvent);
              dirWatcher = new A.MultiDirWatcher(new A.PathMap(t6, type$.PathMap_Stream_WatchEvent), t5, t4);
              $async$goto = 3;
              return A._asyncAwait(A.Future_wait(new A.MappedListIterable(t1, new A.watch_closure(dirWatcher), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Future<~>>")), false, type$.void), $async$watch);
            case 3:
              // returning from await.
              options._ensureSources$0();
              sourcesToDestinations = options._sourcesToDestinations.cast$2$0(0, t2, t2);
              for (t1 = J.get$iterator$ax(sourcesToDestinations.get$keys(sourcesToDestinations)); t1.moveNext$0();) {
                t2 = t1.get$current(t1);
                t4 = $.$get$context();
                t5 = t4.absolute$15(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
                t6 = self.process;
                if (t6 == null)
                  t6 = null;
                else {
                  t6 = J.get$release$x(t6);
                  t6 = t6 == null ? null : J.get$name$x(t6);
                }
                t6 = J.$eq$(t6, "node") ? self.process : null;
                if (!J.$eq$(t6 == null ? null : J.get$platform$x(t6), "win32")) {
                  t6 = self.process;
                  if (t6 == null)
                    t6 = null;
                  else {
                    t6 = J.get$release$x(t6);
                    t6 = t6 == null ? null : J.get$name$x(t6);
                  }
                  t6 = J.$eq$(t6, "node") ? self.process : null;
                  t6 = J.$eq$(t6 == null ? null : J.get$platform$x(t6), "darwin");
                } else
                  t6 = true;
                graph.addCanonical$4$recanonicalize(new A.FilesystemImporter(t5), t4.toUri$1(t6 ? A._realCasePath(t4.absolute$15(t4.normalize$1(t2), null, null, null, null, null, null, null, null, null, null, null, null, null, null)) : t4.canonicalize$1(0, t2)), t4.toUri$1(t2), false);
              }
              $async$goto = 4;
              return A._asyncAwait(A.compileStylesheets(options, graph, sourcesToDestinations, true), $async$watch);
            case 4:
              // returning from await.
              if (!$async$result && A._asBool(t3.$index(0, "stop-on-error"))) {
                t1 = dirWatcher._group.__StreamGroup__controller_A;
                t1 === $ && A.throwUnnamedLateFieldNI();
                new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$1(0, null).cancel$0();
                // goto return
                $async$goto = 1;
                break;
              }
              A.print("Sass is watching for changes. Press Ctrl-C to stop.\n");
              $async$goto = 5;
              return A._asyncAwait(new A._Watcher(options, graph).watch$1(0, dirWatcher), $async$watch);
            case 5:
              // returning from await.
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$watch, $async$completer);
    },
    watch_closure: function watch_closure(t0) {
      this.dirWatcher = t0;
    },
    _Watcher: function _Watcher(t0, t1) {
      this._watch$_options = t0;
      this._graph = t1;
    },
    _Watcher__debounceEvents_closure: function _Watcher__debounceEvents_closure() {
    },
    _Watcher__debounceEvents__closure: function _Watcher__debounceEvents__closure(t0) {
      this._0_0 = t0;
    },
    _Watcher__debounceEvents__closure0: function _Watcher__debounceEvents__closure0(t0) {
      this._0_0 = t0;
    },
    _Watcher__debounceEvents__closure1: function _Watcher__debounceEvents__closure1(t0) {
      this._1_0 = t0;
    },
    EmptyExtensionStore: function EmptyExtensionStore() {
    },
    Extension: function Extension(t0, t1, t2, t3, t4) {
      var _ = this;
      _.extender = t0;
      _.target = t1;
      _.mediaContext = t2;
      _.isOptional = t3;
      _.span = t4;
    },
    Extender: function Extender(t0, t1) {
      this.selector = t0;
      this.isOriginal = t1;
      this._extension = null;
    },
    ExtensionStore__extendOrReplace(selector, source, targets, mode, span) {
      var t1, t2, t3, t4, t5, t6, t7, t8, _i, complex, compound, t9, t10, t11, _i0, simple, t12, _i1, t13, t14,
        extender = A.ExtensionStore$_mode(mode);
      if (!selector.accept$1(B._IsInvisibleVisitor_true))
        extender._originals.addAll$1(0, selector.components);
      for (t1 = targets.components, t2 = t1.length, t3 = source.components, t4 = t3.length, t5 = type$.ComplexSelector, t6 = type$.Extension, t7 = type$.SimpleSelector, t8 = type$.Map_ComplexSelector_Extension, _i = 0; _i < t2; ++_i) {
        complex = t1[_i];
        compound = complex.get$singleCompound();
        if (compound == null)
          throw A.wrapException(A.SassScriptException$("Can't extend complex selector " + A.S(complex) + ".", null));
        t9 = A.LinkedHashMap_LinkedHashMap$_empty(t7, t8);
        for (t10 = compound.components, t11 = t10.length, _i0 = 0; _i0 < t11; ++_i0) {
          simple = t10[_i0];
          t12 = A.LinkedHashMap_LinkedHashMap$_empty(t5, t6);
          for (_i1 = 0; _i1 < t4; ++_i1) {
            complex = t3[_i1];
            complex.get$specificity();
            t13 = new A.Extender(complex, false);
            t14 = new A.Extension(t13, simple, null, true, span);
            t13._extension = t14;
            t12.$indexSet(0, complex, t14);
          }
          t9.$indexSet(0, simple, t12);
        }
        selector = extender._extendList$2(selector, t9);
      }
      return selector;
    },
    ExtensionStore$() {
      var t1 = type$.SimpleSelector;
      return new A.ExtensionStore(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Set_ModifiableBox_SelectorList), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Map_ComplexSelector_Extension), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.List_Extension), A.LinkedHashMap_LinkedHashMap$_empty(type$.ModifiableBox_SelectorList, type$.List_CssMediaQuery), new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_SimpleSelector_int), new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_ComplexSelector), B.ExtendMode_normal_normal);
    },
    ExtensionStore$_mode(_mode) {
      var t1 = type$.SimpleSelector;
      return new A.ExtensionStore(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Set_ModifiableBox_SelectorList), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Map_ComplexSelector_Extension), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.List_Extension), A.LinkedHashMap_LinkedHashMap$_empty(type$.ModifiableBox_SelectorList, type$.List_CssMediaQuery), new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_SimpleSelector_int), new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_ComplexSelector), _mode);
    },
    ExtensionStore: function ExtensionStore(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._selectors = t0;
      _._extensions = t1;
      _._extensionsByExtender = t2;
      _._mediaContexts = t3;
      _._sourceSpecificity = t4;
      _._originals = t5;
      _._mode = t6;
    },
    ExtensionStore_extensionsWhereTarget_closure: function ExtensionStore_extensionsWhereTarget_closure() {
    },
    ExtensionStore__registerSelector_closure: function ExtensionStore__registerSelector_closure() {
    },
    ExtensionStore__registerSelector_closure0: function ExtensionStore__registerSelector_closure0(t0) {
      this._0_0 = t0;
    },
    ExtensionStore_addExtension_closure: function ExtensionStore_addExtension_closure() {
    },
    ExtensionStore_addExtension_closure0: function ExtensionStore_addExtension_closure0() {
    },
    ExtensionStore_addExtension_closure1: function ExtensionStore_addExtension_closure1(t0) {
      this.complex = t0;
    },
    ExtensionStore__simpleSelectors_closure: function ExtensionStore__simpleSelectors_closure(t0) {
      this._0_0 = t0;
    },
    ExtensionStore__extendExistingExtensions_closure: function ExtensionStore__extendExistingExtensions_closure() {
    },
    ExtensionStore__extendExistingExtensions_closure0: function ExtensionStore__extendExistingExtensions_closure0() {
    },
    ExtensionStore_addExtensions_closure: function ExtensionStore_addExtensions_closure() {
    },
    ExtensionStore__extendComplex_closure: function ExtensionStore__extendComplex_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.complex = t2;
    },
    ExtensionStore__extendComplex__closure: function ExtensionStore__extendComplex__closure(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.complex = t2;
    },
    ExtensionStore__extendCompound_closure: function ExtensionStore__extendCompound_closure() {
    },
    ExtensionStore__extendCompound_closure0: function ExtensionStore__extendCompound_closure0() {
    },
    ExtensionStore__extendCompound_closure1: function ExtensionStore__extendCompound_closure1(t0) {
      this.original = t0;
    },
    ExtensionStore__extendSimple_withoutPseudo: function ExtensionStore__extendSimple_withoutPseudo(t0, t1, t2) {
      this.$this = t0;
      this.extensions = t1;
      this.targetsUsed = t2;
    },
    ExtensionStore__extendSimple_closure: function ExtensionStore__extendSimple_closure(t0, t1) {
      this.$this = t0;
      this.withoutPseudo = t1;
    },
    ExtensionStore__extendSimple_closure0: function ExtensionStore__extendSimple_closure0() {
    },
    ExtensionStore__extendPseudo_closure: function ExtensionStore__extendPseudo_closure() {
    },
    ExtensionStore__extendPseudo_closure0: function ExtensionStore__extendPseudo_closure0() {
    },
    ExtensionStore__extendPseudo_closure1: function ExtensionStore__extendPseudo_closure1() {
    },
    ExtensionStore__extendPseudo_closure2: function ExtensionStore__extendPseudo_closure2(t0) {
      this.pseudo = t0;
    },
    ExtensionStore__extendPseudo_closure3: function ExtensionStore__extendPseudo_closure3(t0, t1) {
      this.pseudo = t0;
      this.selector = t1;
    },
    ExtensionStore__trim_closure: function ExtensionStore__trim_closure(t0, t1) {
      this._box_0 = t0;
      this.complex1 = t1;
    },
    ExtensionStore__trim_closure0: function ExtensionStore__trim_closure0(t0, t1) {
      this._box_0 = t0;
      this.complex1 = t1;
    },
    ExtensionStore_clone_closure: function ExtensionStore_clone_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.newSelectors = t1;
      _.oldToNewSelectors = t2;
      _.newMediaContexts = t3;
    },
    unifyComplex(complexes, span) {
      var t2, trailingCombinator, leadingCombinator, unifiedBase, t3, _0_6, newLeadingCombinator, t4, base, _1_1, newTrailingCombinator, _i, t5, t6, t7, t8, _null = null,
        t1 = J.getInterceptor$asx(complexes);
      if (t1.get$length(complexes) === 1)
        return complexes;
      for (t2 = t1.get$iterator(complexes), trailingCombinator = _null, leadingCombinator = trailingCombinator, unifiedBase = leadingCombinator; t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        if (t3.accept$1(B.C__IsUselessVisitor))
          return _null;
        _0_6 = A._InitializedCell$(new A.unifyComplex_closure(t3));
        t3 = t3.components;
        if (t3.length === 1)
          if (J.get$length$asx(_0_6._readFinal$0()) === 1) {
            newLeadingCombinator = J.$index$asx(_0_6._readFinal$0(), 0);
            t4 = true;
          } else {
            newLeadingCombinator = _null;
            t4 = false;
          }
        else {
          newLeadingCombinator = _null;
          t4 = false;
        }
        if (t4)
          if (leadingCombinator == null)
            leadingCombinator = newLeadingCombinator;
          else if (!leadingCombinator.$eq(0, newLeadingCombinator))
            return _null;
        base = B.JSArray_methods.get$last(t3);
        _1_1 = A._InitializedCell$(new A.unifyComplex_closure0(base));
        if (J.get$length$asx(_1_1._readFinal$0()) === 1) {
          newTrailingCombinator = J.$index$asx(_1_1._readFinal$0(), 0);
          t3 = true;
        } else {
          newTrailingCombinator = _null;
          t3 = false;
        }
        if (t3) {
          if (trailingCombinator != null && !trailingCombinator.$eq(0, newTrailingCombinator))
            return _null;
          trailingCombinator = newTrailingCombinator;
        }
        if (unifiedBase == null)
          unifiedBase = base.selector.components;
        else
          for (t3 = base.selector.components, t4 = t3.length, _i = 0; _i < t4; ++_i) {
            unifiedBase = t3[_i].unify$1(unifiedBase);
            if (unifiedBase == null)
              return _null;
          }
      }
      t2 = type$.JSArray_ComplexSelector;
      t3 = A._setArrayType([], t2);
      for (t4 = t1.get$iterator(complexes); t4.moveNext$0();) {
        t5 = t4.get$current(t4);
        t6 = t5.components;
        t7 = t6.length;
        if (t7 > 1) {
          t8 = t5.leadingCombinators;
          t3.push(A.ComplexSelector$(t8, B.JSArray_methods.take$1(t6, t7 - 1), t5.span, t5.lineBreak));
        }
      }
      t4 = leadingCombinator == null ? B.List_empty1 : A._setArrayType([leadingCombinator], type$.JSArray_CssValue_Combinator);
      unifiedBase.toString;
      t5 = A.CompoundSelector$(unifiedBase, span);
      t6 = trailingCombinator == null ? B.List_empty1 : A._setArrayType([trailingCombinator], type$.JSArray_CssValue_Combinator);
      base = A.ComplexSelector$(t4, A._setArrayType([new A.ComplexSelectorComponent(t5, A.List_List$unmodifiable(t6, type$.CssValue_Combinator), span)], type$.JSArray_ComplexSelectorComponent), span, t1.any$1(complexes, new A.unifyComplex_closure1()));
      if (t3.length === 0)
        t1 = A._setArrayType([base], t2);
      else {
        t1 = A.List_List$of(A.IterableExtension_get_exceptLast(t3), true, type$.ComplexSelector);
        t1.push(B.JSArray_methods.get$last(t3).concatenate$2(base, span));
      }
      return A.weave(t1, span, false);
    },
    unifyCompound(compound1, compound2) {
      var t1, t2, _i, unified,
        result = compound2.components;
      for (t1 = compound1.components, t2 = t1.length, _i = 0; _i < t2; ++_i, result = unified) {
        unified = t1[_i].unify$1(result);
        if (unified == null)
          return null;
      }
      return A.CompoundSelector$(result, compound1.span);
    },
    unifyUniversalAndElement(selector1, selector2) {
      var namespace, $name, t1,
        _0_0 = A._namespaceAndName(selector1, "selector1"),
        namespace1 = _0_0._0,
        name1 = _0_0._1,
        _1_0 = A._namespaceAndName(selector2, "selector2"),
        namespace2 = _1_0._0,
        name2 = _1_0._1;
      if (namespace1 == namespace2 || namespace2 === "*")
        namespace = namespace1;
      else {
        if (namespace1 !== "*")
          return null;
        namespace = namespace2;
      }
      if (name1 == name2 || name2 == null)
        $name = name1;
      else {
        if (!(name1 == null || name1 === "*"))
          return null;
        $name = name2;
      }
      t1 = selector1.span;
      return $name == null ? new A.UniversalSelector(namespace, t1) : new A.TypeSelector(new A.QualifiedName($name, namespace), t1);
    },
    _namespaceAndName(selector, $name) {
      var namespace, t1, name0, _null = null,
        _0_4 = A._InitializedCell$(new A._namespaceAndName_closure(selector));
      $label0$0: {
        if (selector instanceof A.UniversalSelector) {
          namespace = selector.namespace;
          t1 = true;
        } else {
          namespace = _null;
          t1 = false;
        }
        if (t1) {
          t1 = new A._Record_2(namespace, _null);
          break $label0$0;
        }
        if (selector instanceof A.TypeSelector) {
          name0 = _0_4._readFinal$0().name;
          namespace = _0_4._readFinal$0().namespace;
          t1 = true;
        } else {
          namespace = _null;
          name0 = namespace;
          t1 = false;
        }
        if (t1) {
          t1 = new A._Record_2(namespace, name0);
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$value(selector, $name, string$.must_b));
      }
      return t1;
    },
    weave(complexes, span, forceLineBreak) {
      var complex, t2, prefixes, t3, t4, t5, t6, i, t7, t8, _i, t9, t10, _i0, parentPrefix, t11, t12,
        t1 = J.getInterceptor$asx(complexes);
      if (t1.get$length(complexes) === 1) {
        complex = t1.$index(complexes, 0);
        t2 = true;
      } else {
        complex = null;
        t2 = false;
      }
      if (t2) {
        if (!forceLineBreak || complex.lineBreak)
          return complexes;
        return A._setArrayType([A.ComplexSelector$(complex.leadingCombinators, complex.components, complex.span, true)], type$.JSArray_ComplexSelector);
      }
      t2 = type$.JSArray_ComplexSelector;
      prefixes = A._setArrayType([t1.get$first(complexes)], t2);
      for (t1 = t1.skip$1(complexes, 1), t1 = new A.ListIterator(t1, t1.get$length(t1)), t3 = type$.ComplexSelectorComponent, t4 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t5 = t1.__internal$_current;
        if (t5 == null)
          t5 = t4._as(t5);
        t6 = t5.components;
        if (t6.length === 1) {
          for (i = 0; i < prefixes.length; ++i)
            prefixes[i] = prefixes[i].concatenate$3$forceLineBreak(t5, span, forceLineBreak);
          continue;
        }
        t7 = A._setArrayType([], t2);
        for (t8 = prefixes.length, _i = 0; _i < prefixes.length; prefixes.length === t8 || (0, A.throwConcurrentModificationError)(prefixes), ++_i) {
          t9 = A._weaveParents(prefixes[_i], t5, span);
          if (t9 == null)
            t9 = B.List_empty2;
          t10 = t9.length;
          _i0 = 0;
          for (; _i0 < t9.length; t9.length === t10 || (0, A.throwConcurrentModificationError)(t9), ++_i0) {
            parentPrefix = t9[_i0];
            t11 = B.JSArray_methods.get$last(t6);
            t12 = A.List_List$of(parentPrefix.components, true, t3);
            t12.push(t11);
            t11 = parentPrefix.lineBreak || forceLineBreak;
            t7.push(A.ComplexSelector$(parentPrefix.leadingCombinators, t12, span, t11));
          }
        }
        prefixes = t7;
      }
      return prefixes;
    },
    _weaveParents(prefix, base, span) {
      var t1, queue1, queue2, trailingCombinators, _0_0, _0_1, _0_3, rootish1, rootish2, rootish, t2, t3, rootish_case_0, rootish_case_1, groups1, groups2, lcs, choices, t4, _i, group, t5, t6, t7, _i0, chunk, t8, t9, _null = null,
        leadingCombinators = A._mergeLeadingCombinators(prefix.leadingCombinators, base.leadingCombinators);
      if (leadingCombinators == null)
        return _null;
      t1 = type$.ComplexSelectorComponent;
      queue1 = A.QueueList_QueueList$from(prefix.components, t1);
      queue2 = A.QueueList_QueueList$from(A.IterableExtension_get_exceptLast(base.components), t1);
      trailingCombinators = A._mergeTrailingCombinators(queue1, queue2, span, _null);
      if (trailingCombinators == null)
        return _null;
      $label0$0: {
        _0_0 = new A._Record_2(A._firstIfRootish(queue1), A._firstIfRootish(queue2));
        _0_1 = A._InitializedCell$(new A._weaveParents_closure(_0_0));
        _0_3 = A._InitializedCell$(new A._weaveParents_closure0(_0_0));
        if (_0_1._readFinal$0() != null) {
          rootish1 = _0_1._readFinal$0();
          t1 = true;
        } else {
          rootish1 = _null;
          t1 = false;
        }
        if (t1)
          if (_0_3._readFinal$0() != null) {
            rootish2 = _0_3._readFinal$0();
            t1 = true;
          } else {
            rootish2 = _null;
            t1 = false;
          }
        else {
          rootish2 = _null;
          t1 = false;
        }
        if (t1) {
          rootish = A.unifyCompound(rootish1.selector, rootish2.selector);
          if (rootish == null)
            return _null;
          t1 = rootish1.combinators;
          t2 = rootish1.span;
          t3 = type$.CssValue_Combinator;
          queue1.addFirst$1(new A.ComplexSelectorComponent(rootish, A.List_List$unmodifiable(t1, t3), t2));
          queue2.addFirst$1(new A.ComplexSelectorComponent(rootish, A.List_List$unmodifiable(rootish2.combinators, t3), t2));
          break $label0$0;
        }
        if (_0_1._readFinal$0() != null) {
          rootish_case_0 = _0_1._readFinal$0();
          t1 = true;
        } else {
          rootish_case_0 = _null;
          t1 = false;
        }
        if (t1)
          if (_0_3._readFinal$0() == null) {
            t1 = rootish_case_0;
            t2 = true;
          } else {
            t1 = _null;
            t2 = false;
          }
        else {
          t1 = _null;
          t2 = false;
        }
        if (!t2)
          if (_0_1._readFinal$0() == null) {
            if (_0_3._readFinal$0() != null) {
              rootish_case_1 = _0_3._readFinal$0();
              t2 = true;
            } else {
              rootish_case_1 = _null;
              t2 = false;
            }
            if (t2) {
              t1 = rootish_case_1;
              t2 = true;
            } else
              t2 = false;
          } else
            t2 = false;
        else
          t2 = true;
        if (t2) {
          queue1.addFirst$1(t1);
          queue2.addFirst$1(t1);
        }
      }
      groups1 = A._groupSelectors(queue1);
      groups2 = A._groupSelectors(queue2);
      t1 = type$.List_ComplexSelectorComponent;
      lcs = A.longestCommonSubsequence(groups2, groups1, new A._weaveParents_closure1(span), t1);
      choices = A._setArrayType([], type$.JSArray_List_Iterable_ComplexSelectorComponent);
      for (t2 = lcs.length, t3 = type$.JSArray_Iterable_ComplexSelectorComponent, t4 = type$.JSArray_ComplexSelectorComponent, _i = 0; _i < lcs.length; lcs.length === t2 || (0, A.throwConcurrentModificationError)(lcs), ++_i) {
        group = lcs[_i];
        t5 = A._setArrayType([], t3);
        for (t6 = A._chunks(groups1, groups2, new A._weaveParents_closure2(group), t1), t7 = t6.length, _i0 = 0; _i0 < t6.length; t6.length === t7 || (0, A.throwConcurrentModificationError)(t6), ++_i0) {
          chunk = t6[_i0];
          t8 = A._setArrayType([], t4);
          for (t9 = J.get$iterator$ax(chunk); t9.moveNext$0();)
            B.JSArray_methods.addAll$1(t8, t9.get$current(t9));
          t5.push(t8);
        }
        choices.push(t5);
        choices.push(A._setArrayType([group], t3));
        groups1.removeFirst$0();
        groups2.removeFirst$0();
      }
      t2 = A._setArrayType([], t3);
      for (t1 = A._chunks(groups1, groups2, new A._weaveParents_closure3(), t1), t3 = t1.length, _i = 0; _i < t1.length; t1.length === t3 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        chunk = t1[_i];
        t5 = A._setArrayType([], t4);
        for (t6 = J.get$iterator$ax(chunk); t6.moveNext$0();)
          B.JSArray_methods.addAll$1(t5, t6.get$current(t6));
        t2.push(t5);
      }
      choices.push(t2);
      B.JSArray_methods.addAll$1(choices, trailingCombinators);
      t1 = A._setArrayType([], type$.JSArray_ComplexSelector);
      for (t2 = J.get$iterator$ax(A.paths(new A.WhereIterable(choices, new A._weaveParents_closure4(), type$.WhereIterable_List_Iterable_ComplexSelectorComponent), type$.Iterable_ComplexSelectorComponent)), t3 = !prefix.lineBreak, t5 = base.lineBreak; t2.moveNext$0();) {
        t6 = t2.get$current(t2);
        t7 = A._setArrayType([], t4);
        for (t6 = J.get$iterator$ax(t6); t6.moveNext$0();)
          B.JSArray_methods.addAll$1(t7, t6.get$current(t6));
        t1.push(A.ComplexSelector$(leadingCombinators, t7, span, !t3 || t5));
      }
      return t1;
    },
    _firstIfRootish(queue) {
      var first, t1, t2, _i, simple, t3;
      if (queue.get$length(queue) >= 1) {
        first = queue.$index(0, 0);
        t1 = true;
      } else {
        first = null;
        t1 = false;
      }
      if (t1)
        for (t1 = first.selector.components, t2 = t1.length, _i = 0; _i < t2; ++_i) {
          simple = t1[_i];
          if (simple instanceof A.PseudoSelector)
            if (simple.isClass)
              t3 = $._rootishPseudoClasses.contains$1(0, simple.normalizedName);
            else
              t3 = false;
          else
            t3 = false;
          if (t3) {
            queue.removeFirst$0();
            return first;
          }
        }
      return null;
    },
    _mergeLeadingCombinators(combinators1, combinators2) {
      var t1, t2, combinators, _null = null,
        _0_0 = new A._Record_2(combinators1, combinators2),
        _0_1 = A._InitializedCell$(new A._mergeLeadingCombinators_closure(_0_0)),
        _0_4 = A._InitializedCell$(new A._mergeLeadingCombinators_closure0(_0_0)),
        _0_7 = A._InitializedCell$(new A._mergeLeadingCombinators_closure1(_0_1)),
        _0_11 = A._InitializedCell$(new A._mergeLeadingCombinators_closure2(_0_4));
      $label0$0: {
        if (_0_1._readFinal$0() == null || _0_4._readFinal$0() == null) {
          t1 = _null;
          break $label0$0;
        }
        t1 = type$.List_CssValue_Combinator;
        if (!(t1._is(_0_1._readFinal$0()) && _0_7._readFinal$0() > 1))
          t2 = t1._is(_0_4._readFinal$0()) && _0_11._readFinal$0() > 1;
        else
          t2 = true;
        if (t2) {
          t1 = _null;
          break $label0$0;
        }
        if (t1._is(_0_1._readFinal$0()))
          if (_0_7._readFinal$0() <= 0) {
            combinators = _0_4._readFinal$0();
            t2 = true;
          } else {
            combinators = _null;
            t2 = false;
          }
        else {
          combinators = _null;
          t2 = false;
        }
        if (!t2) {
          combinators = _0_1._readFinal$0();
          t1 = t1._is(_0_4._readFinal$0()) && _0_11._readFinal$0() <= 0;
        } else
          t1 = true;
        if (t1) {
          t1 = combinators;
          break $label0$0;
        }
        t1 = B.C_ListEquality.equals$2(0, combinators1, combinators2) ? combinators1 : _null;
        break $label0$0;
      }
      return t1;
    },
    _mergeTrailingCombinators(components1, components2, span, result) {
      var _0_1, last, t1, _1_1, t2, t3, _4_0, _4_1, _4_3, _4_4, _4_5, _4_9, _4_6, _4_7, _4_10, component1, component2, t4, t5, choices, _2_0, unified, followingComponents, nextComponents, followingComponents0, next, following, _3_0, siblingComponents_case_0, siblingComponents_case_1, combinator1, combinator2, combinator_case_0, combinatorComponents_case_0, descendantComponents_case_0, combinator_case_1, descendantComponents_case_1, combinatorComponents_case_1, _null = null;
      if (result == null)
        result = A.QueueList$(_null, type$.List_List_ComplexSelectorComponent);
      _0_1 = A._InitializedCell$(new A._mergeTrailingCombinators_closure(components1));
      $label0$0: {
        if (_0_1._readFinal$0() >= 1) {
          last = components1.$index(0, _0_1._readFinal$0() - 1);
          t1 = true;
        } else {
          last = _null;
          t1 = false;
        }
        if (t1) {
          t1 = last.combinators;
          break $label0$0;
        }
        t1 = B.List_empty1;
        break $label0$0;
      }
      _1_1 = A._InitializedCell$(new A._mergeTrailingCombinators_closure0(components2));
      $label1$1: {
        if (_1_1._readFinal$0() >= 1) {
          last = components2.$index(0, _1_1._readFinal$0() - 1);
          t2 = true;
        } else {
          last = _null;
          t2 = false;
        }
        if (t2) {
          t2 = last.combinators;
          break $label1$1;
        }
        t2 = B.List_empty1;
        break $label1$1;
      }
      t3 = t1.length;
      if (t3 === 0 && t2.length === 0)
        return result;
      if (t3 > 1 || t2.length > 1)
        return _null;
      $label2$2: {
        t3 = A.IterableExtension_get_firstOrNull(t1);
        t3 = t3 == null ? _null : t3.value;
        t2 = A.IterableExtension_get_firstOrNull(t2);
        _4_0 = new A._Record_4([t3, t2 == null ? _null : t2.value, components1, components2]);
        _4_1 = A._InitializedCell$(new A._mergeTrailingCombinators_closure1(_4_0));
        _4_3 = A._InitializedCell$(new A._mergeTrailingCombinators_closure2(_4_1));
        _4_4 = A._InitializedCell$(new A._mergeTrailingCombinators_closure3(_4_0));
        _4_5 = A._InitializedCell$(new A._mergeTrailingCombinators_closure4(_4_4));
        _4_9 = A._InitializedCell$(new A._mergeTrailingCombinators_closure5(_4_4));
        _4_6 = A._InitializedCell$(new A._mergeTrailingCombinators_closure6(_4_0));
        _4_7 = A._InitializedCell$(new A._mergeTrailingCombinators_closure7(_4_0));
        _4_10 = A._InitializedCell$(new A._mergeTrailingCombinators_closure8(_4_1));
        if (_4_3._readFinal$0() && _4_5._readFinal$0()) {
          component1 = components1.removeLast$0(0);
          component2 = components2.removeLast$0(0);
          t2 = component1.selector;
          t3 = component2.selector;
          if (A.compoundIsSuperselector(t2, t3, _null))
            result.addFirst$1(A._setArrayType([A._setArrayType([component2], type$.JSArray_ComplexSelectorComponent)], type$.JSArray_List_ComplexSelectorComponent));
          else {
            t4 = type$.JSArray_ComplexSelectorComponent;
            t5 = type$.JSArray_List_ComplexSelectorComponent;
            if (A.compoundIsSuperselector(t3, t2, _null))
              result.addFirst$1(A._setArrayType([A._setArrayType([component1], t4)], t5));
            else {
              choices = A._setArrayType([A._setArrayType([component1, component2], t4), A._setArrayType([component2, component1], t4)], t5);
              _2_0 = A.unifyCompound(t2, t3);
              if (_2_0 != null) {
                unified = _2_0;
                t2 = true;
              } else {
                unified = _null;
                t2 = false;
              }
              if (t2)
                choices.push(A._setArrayType([new A.ComplexSelectorComponent(unified, A.List_List$unmodifiable(A._setArrayType([B.JSArray_methods.get$first(t1)], type$.JSArray_CssValue_Combinator), type$.CssValue_Combinator), span)], t4));
              result.addFirst$1(choices);
            }
          }
          break $label2$2;
        }
        if (_4_3._readFinal$0())
          if (_4_9._readFinal$0()) {
            followingComponents = _4_6._readFinal$0();
            nextComponents = _4_7._readFinal$0();
            nextComponents = nextComponents;
            t2 = true;
          } else {
            nextComponents = _null;
            followingComponents = nextComponents;
            t2 = false;
          }
        else {
          nextComponents = _null;
          followingComponents = nextComponents;
          t2 = false;
        }
        if (!t2)
          if (_4_10._readFinal$0())
            if (_4_5._readFinal$0()) {
              nextComponents = _4_6._readFinal$0();
              followingComponents0 = _4_7._readFinal$0();
              followingComponents = followingComponents0;
              t2 = true;
            } else
              t2 = false;
          else
            t2 = false;
        else
          t2 = true;
        if (t2) {
          next = nextComponents.removeLast$0(0);
          following = followingComponents.removeLast$0(0);
          t1 = following.selector;
          t2 = next.selector;
          t3 = type$.JSArray_ComplexSelectorComponent;
          t4 = type$.JSArray_List_ComplexSelectorComponent;
          if (A.compoundIsSuperselector(t1, t2, _null))
            result.addFirst$1(A._setArrayType([A._setArrayType([next], t3)], t4));
          else {
            t4 = A._setArrayType([A._setArrayType([following, next], t3)], t4);
            _3_0 = A.unifyCompound(t1, t2);
            if (_3_0 != null) {
              unified = _3_0;
              t1 = true;
            } else {
              unified = _null;
              t1 = false;
            }
            if (t1)
              t4.push(A._setArrayType([new A.ComplexSelectorComponent(unified, A.List_List$unmodifiable(next.combinators, type$.CssValue_Combinator), span)], t3));
            result.addFirst$1(t4);
          }
          break $label2$2;
        }
        if (B.Combinator_Cht === _4_1._readFinal$0())
          if (_4_9._readFinal$0() || _4_5._readFinal$0()) {
            siblingComponents_case_0 = _4_7._readFinal$0();
            t2 = siblingComponents_case_0;
            t3 = true;
          } else {
            t2 = _null;
            t3 = false;
          }
        else {
          t2 = _null;
          t3 = false;
        }
        if (!t3)
          if (_4_10._readFinal$0() || _4_3._readFinal$0())
            if (B.Combinator_Cht === _4_4._readFinal$0()) {
              siblingComponents_case_1 = _4_6._readFinal$0();
              t2 = siblingComponents_case_1;
              t3 = true;
            } else
              t3 = false;
          else
            t3 = false;
        else
          t3 = true;
        if (t3) {
          result.addFirst$1(A._setArrayType([A._setArrayType([t2.removeLast$0(0)], type$.JSArray_ComplexSelectorComponent)], type$.JSArray_List_ComplexSelectorComponent));
          break $label2$2;
        }
        if (_4_1._readFinal$0() != null) {
          combinator1 = _4_1._readFinal$0();
          t2 = true;
        } else {
          combinator1 = _null;
          t2 = false;
        }
        if (t2) {
          if (_4_4._readFinal$0() != null) {
            combinator2 = _4_4._readFinal$0();
            t2 = true;
          } else {
            combinator2 = _null;
            t2 = false;
          }
          t2 = t2 && combinator1 == combinator2;
        } else
          t2 = false;
        if (t2) {
          unified = A.unifyCompound(components1.removeLast$0(0).selector, components2.removeLast$0(0).selector);
          if (unified == null)
            return _null;
          result.addFirst$1(A._setArrayType([A._setArrayType([new A.ComplexSelectorComponent(unified, A.List_List$unmodifiable(A._setArrayType([B.JSArray_methods.get$first(t1)], type$.JSArray_CssValue_Combinator), type$.CssValue_Combinator), span)], type$.JSArray_ComplexSelectorComponent)], type$.JSArray_List_ComplexSelectorComponent));
          break $label2$2;
        }
        if (_4_1._readFinal$0() != null) {
          combinator_case_0 = _4_1._readFinal$0();
          t1 = true;
        } else {
          combinator_case_0 = _null;
          t1 = false;
        }
        if (t1)
          if (_4_4._readFinal$0() == null) {
            combinatorComponents_case_0 = _4_6._readFinal$0();
            descendantComponents_case_0 = _4_7._readFinal$0();
            t1 = descendantComponents_case_0;
            t2 = true;
            t4 = t2;
            t2 = combinatorComponents_case_0;
            t3 = t1;
            t1 = combinator_case_0;
          } else {
            t3 = _null;
            t2 = t3;
            t1 = t2;
            t4 = false;
          }
        else {
          t3 = _null;
          t2 = t3;
          t1 = t2;
          t4 = false;
        }
        if (!t4)
          if (_4_1._readFinal$0() == null) {
            if (_4_4._readFinal$0() != null) {
              combinator_case_1 = _4_4._readFinal$0();
              t4 = true;
            } else {
              combinator_case_1 = _null;
              t4 = false;
            }
            if (t4) {
              descendantComponents_case_1 = _4_6._readFinal$0();
              combinatorComponents_case_1 = _4_7._readFinal$0();
              t1 = combinatorComponents_case_1;
              t2 = true;
              t4 = t2;
              t2 = t1;
              t1 = combinator_case_1;
              t3 = descendantComponents_case_1;
            } else
              t4 = false;
          } else
            t4 = false;
        else
          t4 = true;
        if (t4) {
          if (t1 === B.Combinator_Cht) {
            t1 = A.IterableExtension_get_lastOrNull(t3);
            t1 = t1 == null ? _null : A.compoundIsSuperselector(t1.selector, t2.get$last(t2).selector, _null);
            t1 = t1 === true;
          } else
            t1 = false;
          if (t1)
            t3.removeLast$0(0);
          result.addFirst$1(A._setArrayType([A._setArrayType([t2.removeLast$0(0)], type$.JSArray_ComplexSelectorComponent)], type$.JSArray_List_ComplexSelectorComponent));
          break $label2$2;
        }
        return _null;
      }
      return A._mergeTrailingCombinators(components1, components2, span, result);
    },
    _mustUnify(complex1, complex2) {
      var t2, t3, t4,
        t1 = A.LinkedHashSet_LinkedHashSet$_empty(type$.SimpleSelector);
      for (t2 = J.get$iterator$ax(complex1); t2.moveNext$0();)
        for (t3 = B.JSArray_methods.get$iterator(t2.get$current(t2).selector.components), t4 = new A.WhereIterator(t3, A.functions___isUnique$closure()); t4.moveNext$0();)
          t1.add$1(0, t3.get$current(t3));
      if (t1._collection$_length === 0)
        return false;
      return J.any$1$ax(complex2, new A._mustUnify_closure(t1));
    },
    _isUnique(simple) {
      var t1;
      if (!(simple instanceof A.IDSelector))
        t1 = simple instanceof A.PseudoSelector && !simple.isClass;
      else
        t1 = true;
      return t1;
    },
    _chunks(queue1, queue2, done, $T) {
      var chunk2, _0_0, _0_1, _0_4, _0_5, _0_7, chunk, t2,
        t1 = $T._eval$1("JSArray<0>"),
        chunk1 = A._setArrayType([], t1);
      for (; !done.call$1(queue1);)
        chunk1.push(queue1.removeFirst$0());
      chunk2 = A._setArrayType([], t1);
      for (; !done.call$1(queue2);)
        chunk2.push(queue2.removeFirst$0());
      _0_0 = new A._Record_2(chunk1, chunk2);
      _0_1 = A._InitializedCell$(new A._chunks_closure(_0_0, $T));
      _0_4 = A._InitializedCell$(new A._chunks_closure0(_0_1));
      _0_5 = A._InitializedCell$(new A._chunks_closure1(_0_0, $T));
      _0_7 = A._InitializedCell$(new A._chunks_closure2(_0_5));
      $label0$0: {
        if (_0_4._readFinal$0() && _0_7._readFinal$0()) {
          t1 = A._setArrayType([], $T._eval$1("JSArray<List<0>>"));
          break $label0$0;
        }
        if (_0_4._readFinal$0()) {
          chunk = _0_5._readFinal$0();
          t1 = true;
        } else {
          chunk = null;
          t1 = false;
        }
        if (!t1) {
          chunk = _0_1._readFinal$0();
          t1 = _0_7._readFinal$0();
          t1 = t1;
        } else
          t1 = true;
        if (t1) {
          t1 = A._setArrayType([chunk], $T._eval$1("JSArray<List<0>>"));
          break $label0$0;
        }
        t1 = A.List_List$of(chunk1, true, $T);
        B.JSArray_methods.addAll$1(t1, chunk2);
        t2 = A.List_List$of(chunk2, true, $T);
        B.JSArray_methods.addAll$1(t2, chunk1);
        t2 = A._setArrayType([t1, t2], $T._eval$1("JSArray<List<0>>"));
        t1 = t2;
        break $label0$0;
      }
      return t1;
    },
    paths(choices, $T) {
      return J.fold$2$ax(choices, A._setArrayType([A._setArrayType([], $T._eval$1("JSArray<0>"))], $T._eval$1("JSArray<List<0>>")), new A.paths_closure($T));
    },
    _groupSelectors(complex) {
      var t2, t3, t4,
        groups = A.QueueList$(null, type$.List_ComplexSelectorComponent),
        t1 = type$.JSArray_ComplexSelectorComponent,
        group = A._setArrayType([], t1);
      for (t2 = new A.ListIterator(complex, complex.get$length(complex)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t4 = t2.__internal$_current;
        if (t4 == null)
          t4 = t3._as(t4);
        group.push(t4);
        if (t4.combinators.length === 0) {
          groups._queue_list$_add$1(group);
          group = A._setArrayType([], t1);
        }
      }
      if (group.length !== 0)
        groups._queue_list$_add$1(group);
      return groups;
    },
    listIsSuperselector(list1, list2) {
      return B.JSArray_methods.every$1(list2, new A.listIsSuperselector_closure(list1));
    },
    _complexIsParentSuperselector(complex1, complex2) {
      var t1, base, t2;
      if (J.get$length$asx(complex1) > J.get$length$asx(complex2))
        return false;
      t1 = $.$get$bogusSpan();
      base = new A.ComplexSelectorComponent(A.CompoundSelector$(A._setArrayType([new A.PlaceholderSelector("<temp>", t1)], type$.JSArray_SimpleSelector), t1), A.List_List$unmodifiable(B.List_empty1, type$.CssValue_Combinator), t1);
      t1 = type$.ComplexSelectorComponent;
      t2 = A.List_List$of(complex1, true, t1);
      t2.push(base);
      t1 = A.List_List$of(complex2, true, t1);
      t1.push(base);
      return A.complexIsSuperselector(t2, t1);
    },
    complexIsSuperselector(complex1, complex2) {
      var t1, t2, t3, i1, i2, previousCombinator, remaining1, t4, remaining2, component1, t5, parents, endOfSubselector, component2, combinator1;
      if (B.JSArray_methods.get$last(complex1).combinators.length !== 0)
        return false;
      if (B.JSArray_methods.get$last(complex2).combinators.length !== 0)
        return false;
      for (t1 = type$.JSArray_ComplexSelectorComponent, t2 = A._arrayInstanceType(complex2), t3 = t2._precomputed1, t2 = t2._eval$1("SubListIterable<1>"), i1 = 0, i2 = 0, previousCombinator = null; true; previousCombinator = combinator1) {
        remaining1 = complex1.length - i1;
        t4 = complex2.length;
        remaining2 = t4 - i2;
        if (remaining1 === 0 || remaining2 === 0)
          return false;
        if (remaining1 > remaining2)
          return false;
        component1 = complex1[i1];
        t5 = component1.combinators;
        if (t5.length > 1)
          return false;
        if (remaining1 === 1) {
          parents = B.JSArray_methods.sublist$2(complex2, i2, t4 - 1);
          if (B.JSArray_methods.any$1(parents, new A.complexIsSuperselector_closure()))
            return false;
          return A.compoundIsSuperselector(component1.selector, B.JSArray_methods.get$last(complex2).selector, parents);
        }
        for (t4 = component1.selector, endOfSubselector = i2, parents = null; true;) {
          component2 = complex2[endOfSubselector];
          if (component2.combinators.length > 1)
            return false;
          if (A.compoundIsSuperselector(t4, component2.selector, parents))
            break;
          ++endOfSubselector;
          if (endOfSubselector === complex2.length - 1)
            return false;
          if (parents == null)
            parents = A._setArrayType([], t1);
          parents.push(component2);
        }
        if (!A._compatibleWithPreviousCombinator(previousCombinator, parents == null ? B.List_empty0 : parents))
          return false;
        component2 = complex2[endOfSubselector];
        combinator1 = A.IterableExtension_get_firstOrNull(t5);
        if (!A._isSupercombinator(combinator1, A.IterableExtension_get_firstOrNull(component2.combinators)))
          return false;
        ++i1;
        i2 = endOfSubselector + 1;
        if (complex1.length - i1 === 1) {
          t4 = combinator1 == null;
          if (J.$eq$(t4 ? null : combinator1.value, B.Combinator_Htt)) {
            t4 = complex2.length - 1;
            t5 = new A.SubListIterable(complex2, 0, t4, t2);
            t5.SubListIterable$3(complex2, 0, t4, t3);
            if (!t5.skip$1(0, i2).every$1(0, new A.complexIsSuperselector_closure0(combinator1)))
              return false;
          } else if (!t4)
            if (complex2.length - i2 > 1)
              return false;
        }
      }
    },
    _compatibleWithPreviousCombinator(previous, parents) {
      if (parents.length === 0)
        return true;
      if (previous == null)
        return true;
      if (previous.value !== B.Combinator_Htt)
        return false;
      return B.JSArray_methods.every$1(parents, new A._compatibleWithPreviousCombinator_closure());
    },
    _isSupercombinator(combinator1, combinator2) {
      var t1, t2;
      if (!J.$eq$(combinator1, combinator2)) {
        t1 = combinator1 == null;
        if (t1)
          t2 = J.$eq$(combinator2 == null ? null : combinator2.value, B.Combinator_Cht);
        else
          t2 = false;
        if (!t2)
          if (J.$eq$(t1 ? null : combinator1.value, B.Combinator_Htt))
            t1 = J.$eq$(combinator2 == null ? null : combinator2.value, B.Combinator_4QF);
          else
            t1 = false;
        else
          t1 = true;
      } else
        t1 = true;
      return t1;
    },
    compoundIsSuperselector(compound1, compound2, parents) {
      var t2, pseudo1, index1, pseudo2, index2, t3, t4, t5, _i, simple1, _null = null,
        _0_0 = new A._Record_2(A._findPseudoElementIndexed(compound1), A._findPseudoElementIndexed(compound2)),
        _0_1 = A._InitializedCell$(new A.compoundIsSuperselector_closure(_0_0)),
        _0_5 = A._InitializedCell$(new A.compoundIsSuperselector_closure0(_0_0)),
        t1 = type$.Record_2_nullable_Object_and_nullable_Object;
      if (t1._is(_0_1._readFinal$0())) {
        t2 = type$.PseudoSelector;
        pseudo1 = t2._as(_0_1._readFinal$0()._0);
        index1 = A._asInt(_0_1._readFinal$0()._1);
        if (t1._is(_0_5._readFinal$0())) {
          pseudo2 = t2._as(_0_5._readFinal$0()._0);
          index2 = A._asInt(_0_5._readFinal$0()._1);
          t1 = true;
        } else {
          index2 = _null;
          pseudo2 = index2;
          t1 = false;
        }
      } else {
        index2 = _null;
        pseudo2 = index2;
        index1 = pseudo2;
        pseudo1 = index1;
        t1 = false;
      }
      if (t1) {
        if (pseudo1.isSuperselector$1(pseudo2)) {
          t1 = compound1.components;
          t2 = type$.int;
          t3 = A._arrayInstanceType(t1)._precomputed1;
          t4 = compound2.components;
          t5 = A._arrayInstanceType(t4)._precomputed1;
          t1 = A._compoundComponentsIsSuperselector(A.SubListIterable$(t1, 0, A.checkNotNullable(index1, "count", t2), t3), A.SubListIterable$(t4, 0, A.checkNotNullable(index2, "count", t2), t5), parents) && A._compoundComponentsIsSuperselector(A.SubListIterable$(t1, index1 + 1, _null, t3), A.SubListIterable$(t4, index2 + 1, _null, t5), parents);
        } else
          t1 = false;
        return t1;
      }
      if (!(_0_1._readFinal$0() != null && true))
        t1 = _0_5._readFinal$0() != null && true;
      else
        t1 = true;
      if (t1)
        return false;
      for (t1 = compound1.components, t2 = t1.length, t3 = compound2.components, _i = 0; _i < t2; ++_i) {
        simple1 = t1[_i];
        if (simple1 instanceof A.PseudoSelector && simple1.selector != null && true) {
          if (!A._selectorPseudoIsSuperselector(simple1, compound2, parents))
            return false;
        } else if (!B.JSArray_methods.any$1(t3, simple1.get$isSuperselector()))
          return false;
      }
      return true;
    },
    _findPseudoElementIndexed(compound) {
      var t1, t2, i, simple;
      for (t1 = compound.components, t2 = t1.length, i = 0; i < t2; ++i) {
        simple = t1[i];
        if (simple instanceof A.PseudoSelector && !simple.isClass)
          return new A._Record_2(simple, i);
      }
      return null;
    },
    _compoundComponentsIsSuperselector(compound1, compound2, parents) {
      var t1;
      if (compound1.get$length(compound1) === 0)
        return true;
      if (compound2.get$length(compound2) === 0)
        compound2 = A._setArrayType([new A.UniversalSelector("*", $.$get$bogusSpan())], type$.JSArray_SimpleSelector);
      t1 = $.$get$bogusSpan();
      return A.compoundIsSuperselector(A.CompoundSelector$(compound1, t1), A.CompoundSelector$(compound2, t1), parents);
    },
    _selectorPseudoIsSuperselector(pseudo1, compound2, parents) {
      var selector1 = pseudo1.selector;
      if (selector1 == null)
        throw A.wrapException(A.ArgumentError$("Selector " + pseudo1.toString$0(0) + " must have a selector argument.", null));
      switch (pseudo1.normalizedName) {
        case "is":
        case "matches":
        case "any":
        case "where":
          return A._selectorPseudoArgs(compound2, pseudo1.name, true).any$1(0, new A._selectorPseudoIsSuperselector_closure(selector1)) || B.JSArray_methods.any$1(selector1.components, new A._selectorPseudoIsSuperselector_closure0(parents, compound2));
        case "has":
        case "host":
        case "host-context":
          return A._selectorPseudoArgs(compound2, pseudo1.name, true).any$1(0, new A._selectorPseudoIsSuperselector_closure1(selector1));
        case "slotted":
          return A._selectorPseudoArgs(compound2, pseudo1.name, false).any$1(0, new A._selectorPseudoIsSuperselector_closure2(selector1));
        case "not":
          return B.JSArray_methods.every$1(selector1.components, new A._selectorPseudoIsSuperselector_closure3(compound2, pseudo1));
        case "current":
          return A._selectorPseudoArgs(compound2, pseudo1.name, true).any$1(0, new A._selectorPseudoIsSuperselector_closure4(selector1));
        case "nth-child":
        case "nth-last-child":
          return B.JSArray_methods.any$1(compound2.components, new A._selectorPseudoIsSuperselector_closure5(pseudo1, selector1));
        default:
          throw A.wrapException("unreachable");
      }
    },
    _selectorPseudoArgs(compound, $name, isClass) {
      var t1 = type$.WhereTypeIterable_PseudoSelector;
      return A.IterableNullableExtension_whereNotNull(new A.MappedIterable(new A.WhereIterable(new A.WhereTypeIterable(compound.components, t1), new A._selectorPseudoArgs_closure(isClass, $name), t1._eval$1("WhereIterable<Iterable.E>")), new A._selectorPseudoArgs_closure0(), t1._eval$1("MappedIterable<Iterable.E,SelectorList?>")), type$.SelectorList);
    },
    unifyComplex_closure: function unifyComplex_closure(t0) {
      this._0_0 = t0;
    },
    unifyComplex_closure0: function unifyComplex_closure0(t0) {
      this._1_0 = t0;
    },
    unifyComplex_closure1: function unifyComplex_closure1() {
    },
    _namespaceAndName_closure: function _namespaceAndName_closure(t0) {
      this._0_0 = t0;
    },
    _weaveParents_closure: function _weaveParents_closure(t0) {
      this._0_0 = t0;
    },
    _weaveParents_closure0: function _weaveParents_closure0(t0) {
      this._0_0 = t0;
    },
    _weaveParents_closure1: function _weaveParents_closure1(t0) {
      this.span = t0;
    },
    _weaveParents_closure2: function _weaveParents_closure2(t0) {
      this.group = t0;
    },
    _weaveParents_closure3: function _weaveParents_closure3() {
    },
    _weaveParents_closure4: function _weaveParents_closure4() {
    },
    _mergeLeadingCombinators_closure: function _mergeLeadingCombinators_closure(t0) {
      this._0_0 = t0;
    },
    _mergeLeadingCombinators_closure0: function _mergeLeadingCombinators_closure0(t0) {
      this._0_0 = t0;
    },
    _mergeLeadingCombinators_closure1: function _mergeLeadingCombinators_closure1(t0) {
      this._0_1 = t0;
    },
    _mergeLeadingCombinators_closure2: function _mergeLeadingCombinators_closure2(t0) {
      this._0_4 = t0;
    },
    _mergeTrailingCombinators_closure: function _mergeTrailingCombinators_closure(t0) {
      this._0_0 = t0;
    },
    _mergeTrailingCombinators_closure0: function _mergeTrailingCombinators_closure0(t0) {
      this._1_0 = t0;
    },
    _mergeTrailingCombinators_closure1: function _mergeTrailingCombinators_closure1(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure2: function _mergeTrailingCombinators_closure2(t0) {
      this._4_1 = t0;
    },
    _mergeTrailingCombinators_closure3: function _mergeTrailingCombinators_closure3(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure4: function _mergeTrailingCombinators_closure4(t0) {
      this._4_4 = t0;
    },
    _mergeTrailingCombinators_closure6: function _mergeTrailingCombinators_closure6(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure7: function _mergeTrailingCombinators_closure7(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure5: function _mergeTrailingCombinators_closure5(t0) {
      this._4_4 = t0;
    },
    _mergeTrailingCombinators_closure8: function _mergeTrailingCombinators_closure8(t0) {
      this._4_1 = t0;
    },
    _mustUnify_closure: function _mustUnify_closure(t0) {
      this.uniqueSelectors = t0;
    },
    _mustUnify__closure: function _mustUnify__closure(t0) {
      this.uniqueSelectors = t0;
    },
    _chunks_closure: function _chunks_closure(t0, t1) {
      this._0_0 = t0;
      this.T = t1;
    },
    _chunks_closure0: function _chunks_closure0(t0) {
      this._0_1 = t0;
    },
    _chunks_closure1: function _chunks_closure1(t0, t1) {
      this._0_0 = t0;
      this.T = t1;
    },
    _chunks_closure2: function _chunks_closure2(t0) {
      this._0_5 = t0;
    },
    paths_closure: function paths_closure(t0) {
      this.T = t0;
    },
    paths__closure: function paths__closure(t0, t1) {
      this.paths = t0;
      this.T = t1;
    },
    paths___closure: function paths___closure(t0, t1) {
      this.option = t0;
      this.T = t1;
    },
    listIsSuperselector_closure: function listIsSuperselector_closure(t0) {
      this.list1 = t0;
    },
    listIsSuperselector__closure: function listIsSuperselector__closure(t0) {
      this.complex1 = t0;
    },
    complexIsSuperselector_closure: function complexIsSuperselector_closure() {
    },
    complexIsSuperselector_closure0: function complexIsSuperselector_closure0(t0) {
      this.combinator1 = t0;
    },
    _compatibleWithPreviousCombinator_closure: function _compatibleWithPreviousCombinator_closure() {
    },
    compoundIsSuperselector_closure: function compoundIsSuperselector_closure(t0) {
      this._0_0 = t0;
    },
    compoundIsSuperselector_closure0: function compoundIsSuperselector_closure0(t0) {
      this._0_0 = t0;
    },
    _selectorPseudoIsSuperselector_closure: function _selectorPseudoIsSuperselector_closure(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure0: function _selectorPseudoIsSuperselector_closure0(t0, t1) {
      this.parents = t0;
      this.compound2 = t1;
    },
    _selectorPseudoIsSuperselector_closure1: function _selectorPseudoIsSuperselector_closure1(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure2: function _selectorPseudoIsSuperselector_closure2(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure3: function _selectorPseudoIsSuperselector_closure3(t0, t1) {
      this.compound2 = t0;
      this.pseudo1 = t1;
    },
    _selectorPseudoIsSuperselector__closure: function _selectorPseudoIsSuperselector__closure(t0, t1) {
      this.complex = t0;
      this.pseudo1 = t1;
    },
    _selectorPseudoIsSuperselector___closure0: function _selectorPseudoIsSuperselector___closure0(t0) {
      this.simple2 = t0;
    },
    _selectorPseudoIsSuperselector___closure1: function _selectorPseudoIsSuperselector___closure1(t0) {
      this.simple2 = t0;
    },
    _selectorPseudoIsSuperselector___closure: function _selectorPseudoIsSuperselector___closure(t0) {
      this._0_0 = t0;
    },
    _selectorPseudoIsSuperselector_closure4: function _selectorPseudoIsSuperselector_closure4(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure5: function _selectorPseudoIsSuperselector_closure5(t0, t1) {
      this.pseudo1 = t0;
      this.selector1 = t1;
    },
    _selectorPseudoArgs_closure: function _selectorPseudoArgs_closure(t0, t1) {
      this.isClass = t0;
      this.name = t1;
    },
    _selectorPseudoArgs_closure0: function _selectorPseudoArgs_closure0() {
    },
    MergedExtension_merge(left, right) {
      var t2, t3, t4,
        t1 = left.extender.selector;
      if (!t1.$eq(0, right.extender.selector) || !left.target.$eq(0, right.target))
        throw A.wrapException(A.ArgumentError$(left.toString$0(0) + " and " + right.toString$0(0) + " aren't the same extension.", null));
      t2 = left.mediaContext;
      t3 = t2 == null;
      if (!t3) {
        t4 = right.mediaContext;
        t4 = t4 != null && !B.C_ListEquality.equals$2(0, t2, t4);
      } else
        t4 = false;
      if (t4)
        throw A.wrapException(A.SassException$("From " + left.span.message$1(0, "") + string$.x0aYou_m, right.span, null));
      if (right.isOptional && right.mediaContext == null)
        return left;
      if (left.isOptional && t3)
        return right;
      if (t3)
        t2 = right.mediaContext;
      t1.get$specificity();
      t1 = new A.Extender(t1, false);
      return t1._extension = new A.MergedExtension(left, right, t1, left.target, t2, true, left.span);
    },
    MergedExtension: function MergedExtension(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.left = t0;
      _.right = t1;
      _.extender = t2;
      _.target = t3;
      _.mediaContext = t4;
      _.isOptional = t5;
      _.span = t6;
    },
    ExtendMode: function ExtendMode(t0, t1) {
      this.name = t0;
      this._name = t1;
    },
    globalFunctions_closure: function globalFunctions_closure() {
    },
    _updateComponents($arguments, adjust, change, scale) {
      var keywords, alpha, red, green, blue, hue, saturation, lightness, whiteness, blackness, hasRgb, hasSL, hasWB, t2, t3, t4, t5, _null = null,
        t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        argumentList = type$.SassArgumentList._as(t1.$index($arguments, 1));
      if (argumentList._list$_contents.length !== 0)
        throw A.wrapException(A.SassScriptException$(string$.Only_op, _null));
      argumentList._wereKeywordsAccessed = true;
      keywords = A.LinkedHashMap_LinkedHashMap$of(argumentList._keywords, type$.String, type$.Value);
      t1 = new A._updateComponents_getParam(keywords, scale, change);
      alpha = t1.call$3$checkUnitless("alpha", 1, true);
      red = t1.call$2("red", 255);
      green = t1.call$2("green", 255);
      blue = t1.call$2("blue", 255);
      hue = scale ? _null : A.NullableExtension_andThen(keywords.remove$1(0, "hue"), new A._updateComponents_closure());
      saturation = t1.call$3$checkPercent("saturation", 100, true);
      lightness = t1.call$3$checkPercent("lightness", 100, true);
      whiteness = t1.call$3$assertPercent("whiteness", 100, true);
      blackness = t1.call$3$assertPercent("blackness", 100, true);
      t1 = keywords.__js_helper$_length;
      if (t1 !== 0)
        throw A.wrapException(A.SassScriptException$("No " + A.pluralize("argument", t1, _null) + " named " + A.toSentence(keywords.get$keys(keywords).map$1$1(0, new A._updateComponents_closure0(), type$.Object), "or") + ".", _null));
      hasRgb = red != null || green != null || blue != null;
      hasSL = saturation != null || lightness != null;
      hasWB = whiteness != null || blackness != null;
      if (hasRgb)
        t1 = hasSL || hasWB || hue != null;
      else
        t1 = false;
      if (t1)
        throw A.wrapException(A.SassScriptException$(string$.RGB_pa + (hasWB ? "HWB" : "HSL") + " parameters.", _null));
      if (hasSL && hasWB)
        throw A.wrapException(A.SassScriptException$(string$.HSL_pa, _null));
      t1 = new A._updateComponents_updateValue(change, adjust);
      t2 = new A._updateComponents_updateRgb(t1);
      if (hasRgb) {
        t3 = t2.call$2(color.get$red(color), red);
        t4 = t2.call$2(color.get$green(color), green);
        t2 = t2.call$2(color.get$blue(color), blue);
        return color.changeRgb$4$alpha$blue$green$red(t1.call$3(color._alpha, alpha, 1), t2, t4, t3);
      } else if (hasWB) {
        if (change)
          t2 = hue;
        else {
          t2 = color.get$hue(color);
          t2 += hue == null ? 0 : hue;
        }
        t3 = t1.call$3(color.get$whiteness(color), whiteness, 100);
        t4 = t1.call$3(color.get$blackness(color), blackness, 100);
        t5 = color._alpha;
        t1 = t1.call$3(t5, alpha, 1);
        if (t2 == null)
          t2 = color.get$hue(color);
        if (t3 == null)
          t3 = color.get$whiteness(color);
        if (t4 == null)
          t4 = color.get$blackness(color);
        return A.SassColor_SassColor$hwb(t2, t3, t4, t1 == null ? t5 : t1);
      } else {
        t2 = hue == null;
        if (!t2 || hasSL) {
          if (change)
            t2 = hue;
          else {
            t3 = color.get$hue(color);
            t3 += t2 ? 0 : hue;
            t2 = t3;
          }
          t3 = t1.call$3(color.get$saturation(color), saturation, 100);
          t4 = t1.call$3(color.get$lightness(color), lightness, 100);
          return color.changeHsl$4$alpha$hue$lightness$saturation(t1.call$3(color._alpha, alpha, 1), t2, t4, t3);
        } else if (alpha != null)
          return color.changeAlpha$1(t1.call$3(color._alpha, alpha, 1));
        else
          return color;
      }
    },
    _functionString($name, $arguments) {
      return new A.SassString($name + "(" + J.map$1$1$ax($arguments, new A._functionString_closure(), type$.String).join$1(0, ", ") + ")", false);
    },
    _removedColorFunction($name, argument, negative) {
      return A.BuiltInCallable$function($name, "$color, $amount", new A._removedColorFunction_closure($name, argument, negative), "sass:color");
    },
    _rgb($name, $arguments) {
      var t2, red, green, blue, t3, t4,
        t1 = J.getInterceptor$asx($arguments),
        alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : null;
      if (!t1.$index($arguments, 0).get$isSpecialNumber())
        if (!t1.$index($arguments, 1).get$isSpecialNumber())
          if (!t1.$index($arguments, 2).get$isSpecialNumber()) {
            t2 = alpha == null ? null : alpha.get$isSpecialNumber();
            t2 = t2 === true;
          } else
            t2 = true;
        else
          t2 = true;
      else
        t2 = true;
      if (t2)
        return A._functionString($name, $arguments);
      red = t1.$index($arguments, 0).assertNumber$1("red");
      green = t1.$index($arguments, 1).assertNumber$1("green");
      blue = t1.$index($arguments, 2).assertNumber$1("blue");
      t1 = A.fuzzyRound(A._percentageOrUnitless(red, 255, "red"));
      t2 = A.fuzzyRound(A._percentageOrUnitless(green, 255, "green"));
      t3 = A.fuzzyRound(A._percentageOrUnitless(blue, 255, "blue"));
      t4 = A.NullableExtension_andThen(alpha, new A._rgb_closure());
      return A.SassColor$rgbInternal(t1, t2, t3, t4 == null ? 1 : t4, B._ColorFormatEnum_rgbFunction);
    },
    _rgbTwoArg($name, $arguments) {
      var t2, color,
        t1 = J.getInterceptor$asx($arguments);
      if (!t1.$index($arguments, 0).get$isVar())
        t2 = !(t1.$index($arguments, 0) instanceof A.SassColor) && t1.$index($arguments, 1).get$isVar();
      else
        t2 = true;
      if (t2)
        return A._functionString($name, $arguments);
      else if (t1.$index($arguments, 1).get$isSpecialNumber()) {
        color = t1.$index($arguments, 0).assertColor$1("color");
        return new A.SassString($name + "(" + color.get$red(color) + ", " + color.get$green(color) + ", " + color.get$blue(color) + ", " + A.serializeValue(t1.$index($arguments, 1), false, true) + ")", false);
      }
      return t1.$index($arguments, 0).assertColor$1("color").changeAlpha$1(A._percentageOrUnitless(t1.$index($arguments, 1).assertNumber$1("alpha"), 1, "alpha"));
    },
    _hsl($name, $arguments) {
      var t2, hue, saturation, lightness, t3,
        _s10_ = "saturation",
        _s9_ = "lightness",
        t1 = J.getInterceptor$asx($arguments),
        alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : null;
      if (!t1.$index($arguments, 0).get$isSpecialNumber())
        if (!t1.$index($arguments, 1).get$isSpecialNumber())
          if (!t1.$index($arguments, 2).get$isSpecialNumber()) {
            t2 = alpha == null ? null : alpha.get$isSpecialNumber();
            t2 = t2 === true;
          } else
            t2 = true;
        else
          t2 = true;
      else
        t2 = true;
      if (t2)
        return A._functionString($name, $arguments);
      hue = A._angleValue(t1.$index($arguments, 0), "hue");
      saturation = t1.$index($arguments, 1).assertNumber$1(_s10_);
      lightness = t1.$index($arguments, 2).assertNumber$1(_s9_);
      A._checkPercent(saturation, _s10_);
      A._checkPercent(lightness, _s9_);
      t1 = B.JSNumber_methods.clamp$2(saturation._number$_value, 0, 100);
      t2 = B.JSNumber_methods.clamp$2(lightness._number$_value, 0, 100);
      t3 = A.NullableExtension_andThen(alpha, new A._hsl_closure());
      return A.SassColor$hslInternal(hue, t1, t2, t3 == null ? 1 : t3, B._ColorFormatEnum_hslFunction);
    },
    _angleValue(angleValue, $name) {
      var t1, t2,
        angle = angleValue.assertNumber$1($name);
      if (angle.compatibleWithUnit$1("deg"))
        return angle.coerceValueToUnit$1("deg");
      t1 = angle.toString$0(0);
      t2 = angle.unitSuggestion$1($name);
      A.EvaluationContext_current().warn$2(0, "$" + $name + ": Passing a unit other than deg (" + t1 + string$.x29x20is_d + t2 + string$.x0a_See_, B.Deprecation_8WR);
      return angle._number$_value;
    },
    _checkPercent(number, $name) {
      var t1, t2;
      if (number.hasUnit$1("%"))
        return;
      t1 = number.toString$0(0);
      t2 = number.unitSuggestion$2($name, "%");
      A.EvaluationContext_current().warn$2(0, "$" + $name + ": Passing a number without unit % (" + t1 + string$.x29x20is_d + t2 + string$.x0a_Morex3a, B.Deprecation_8WR);
    },
    _hwb($arguments) {
      var t2, t3,
        _s9_ = "whiteness",
        _s9_0 = "blackness",
        t1 = J.getInterceptor$asx($arguments),
        alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : null,
        hue = A._angleValue(t1.$index($arguments, 0), "hue"),
        whiteness = t1.$index($arguments, 1).assertNumber$1(_s9_),
        blackness = t1.$index($arguments, 2).assertNumber$1(_s9_0);
      whiteness.assertUnit$2("%", _s9_);
      blackness.assertUnit$2("%", _s9_0);
      t1 = whiteness.valueInRange$3(0, 100, _s9_);
      t2 = blackness.valueInRange$3(0, 100, _s9_0);
      t3 = A.NullableExtension_andThen(alpha, new A._hwb_closure());
      return A.SassColor_SassColor$hwb(hue, t1, t2, t3 == null ? 1 : t3);
    },
    _parseChannels($name, argumentNames, channels) {
      var list, t1, channels0, alphaFromSlashList, isCommaSeparated, isBracketed, buffer, _0_4, text, _1_0, _1_2, channel3, alpha, _null = null,
        _s17_ = "$channels must be";
      if (channels.get$isVar())
        return A._functionString($name, A._setArrayType([channels], type$.JSArray_Value));
      if (channels.get$separator(channels) === B.ListSeparator_zg9) {
        list = channels.get$asList();
        t1 = list.length;
        if (t1 !== 2)
          throw A.wrapException(A.SassScriptException$(string$.Only_2 + t1 + " " + A.pluralize("was", t1, "were") + " passed.", _null));
        channels0 = list[0];
        alphaFromSlashList = list[1];
        if (!alphaFromSlashList.get$isSpecialNumber())
          alphaFromSlashList.assertNumber$1("alpha");
        if (list[0].get$isVar())
          return A._functionString($name, A._setArrayType([channels], type$.JSArray_Value));
      } else {
        alphaFromSlashList = _null;
        channels0 = channels;
      }
      isCommaSeparated = channels0.get$separator(channels0) === B.ListSeparator_rXA;
      isBracketed = channels0.get$hasBrackets();
      if (isCommaSeparated || isBracketed) {
        buffer = new A.StringBuffer(_s17_);
        if (isBracketed) {
          t1 = _s17_ + " an unbracketed";
          buffer._contents = t1;
        } else
          t1 = _s17_;
        if (isCommaSeparated) {
          t1 += isBracketed ? "," : " a";
          buffer._contents = t1;
          t1 = buffer._contents = t1 + " space-separated";
        }
        buffer._contents = t1 + " list.";
        throw A.wrapException(A.SassScriptException$(buffer.toString$0(0), _null));
      }
      list = channels0.get$asList();
      _0_4 = A._InitializedCell$(new A._parseChannels_closure(list));
      if (list.length >= 2)
        if (_0_4._readFinal$0() instanceof A.SassString) {
          text = _0_4._readFinal$0()._string$_text;
          t1 = !_0_4._readFinal$0()._hasQuotes && A.equalsIgnoreCase(text, "from");
        } else
          t1 = false;
      else
        t1 = false;
      if (t1)
        return A._functionString($name, A._setArrayType([channels], type$.JSArray_Value));
      t1 = list.length;
      if (t1 > 3)
        throw A.wrapException(A.SassScriptException$("Only 3 elements allowed, but " + t1 + " were passed.", _null));
      else if (t1 < 3) {
        if (!B.JSArray_methods.any$1(list, new A._parseChannels_closure0()))
          if (list.length !== 0) {
            t1 = B.JSArray_methods.get$last(list);
            if (t1 instanceof A.SassString)
              if (t1._hasQuotes) {
                t1 = t1._string$_text;
                t1 = A.startsWithIgnoreCase(t1, "var(") && B.JSString_methods.contains$1(t1, "/");
              } else
                t1 = false;
            else
              t1 = false;
          } else
            t1 = false;
        else
          t1 = true;
        if (t1)
          return A._functionString($name, A._setArrayType([channels], type$.JSArray_Value));
        else
          throw A.wrapException(A.SassScriptException$("Missing element " + argumentNames[list.length] + ".", _null));
      }
      if (alphaFromSlashList != null) {
        t1 = A.List_List$of(list, true, type$.Value);
        t1.push(alphaFromSlashList);
        return t1;
      }
      _1_0 = list[2];
      _1_2 = A._InitializedCell$(new A._parseChannels_closure1(_1_0));
      $label0$0: {
        if (_1_0 instanceof A.SassNumber)
          if (type$.Record_2_nullable_Object_and_nullable_Object._is(_1_2._readFinal$0())) {
            t1 = type$.SassNumber;
            channel3 = t1._as(_1_2._readFinal$0()._0);
            alpha = t1._as(_1_2._readFinal$0()._1);
            t1 = true;
          } else {
            alpha = _null;
            channel3 = alpha;
            t1 = false;
          }
        else {
          alpha = _null;
          channel3 = alpha;
          t1 = false;
        }
        if (t1) {
          t1 = A._setArrayType([list[0], list[1], channel3, alpha], type$.JSArray_Value);
          break $label0$0;
        }
        if (_1_0 instanceof A.SassString)
          if (!_1_0._hasQuotes)
            t1 = B.JSString_methods.contains$1(_1_0._string$_text, "/");
          else
            t1 = false;
        else
          t1 = false;
        if (t1) {
          t1 = A._functionString($name, A._setArrayType([channels0], type$.JSArray_Value));
          break $label0$0;
        }
        t1 = list;
        break $label0$0;
      }
      return t1;
    },
    _percentageOrUnitless(number, max, $name) {
      var value;
      if (!number.get$hasUnits())
        value = number._number$_value;
      else if (number.hasUnit$1("%"))
        value = max * number._number$_value / 100;
      else
        throw A.wrapException(A.SassScriptException$("$" + $name + ": Expected " + number.toString$0(0) + ' to have unit "%" or no units.', null));
      return B.JSNumber_methods.clamp$2(value, 0, max);
    },
    _mixColors(color1, color2, weight) {
      var weightScale, normalizedWeight, t1, t2, alphaDistance, t3, weight1, weight2;
      A._checkPercent(weight, "weight");
      weightScale = weight.valueInRange$3(0, 100, "weight") / 100;
      normalizedWeight = weightScale * 2 - 1;
      t1 = color1._alpha;
      t2 = color2._alpha;
      alphaDistance = t1 - t2;
      t3 = normalizedWeight * alphaDistance;
      weight1 = ((t3 === -1 ? normalizedWeight : (normalizedWeight + alphaDistance) / (1 + t3)) + 1) / 2;
      weight2 = 1 - weight1;
      return A.SassColor$rgb(A.fuzzyRound(color1.get$red(color1) * weight1 + color2.get$red(color2) * weight2), A.fuzzyRound(color1.get$green(color1) * weight1 + color2.get$green(color2) * weight2), A.fuzzyRound(color1.get$blue(color1) * weight1 + color2.get$blue(color2) * weight2), t1 * weightScale + t2 * (1 - weightScale));
    },
    _opacify($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color");
      return color.changeAlpha$1(B.JSNumber_methods.clamp$2(color._alpha + t1.$index($arguments, 1).assertNumber$1("amount").valueInRangeWithUnit$4(0, 1, "amount", ""), 0, 1));
    },
    _transparentize($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color");
      return color.changeAlpha$1(B.JSNumber_methods.clamp$2(color._alpha - t1.$index($arguments, 1).assertNumber$1("amount").valueInRangeWithUnit$4(0, 1, "amount", ""), 0, 1));
    },
    _function4($name, $arguments, callback) {
      return A.BuiltInCallable$function($name, $arguments, callback, "sass:color");
    },
    global_closure0: function global_closure0() {
    },
    global_closure1: function global_closure1() {
    },
    global_closure2: function global_closure2() {
    },
    global_closure3: function global_closure3() {
    },
    global_closure4: function global_closure4() {
    },
    global_closure5: function global_closure5() {
    },
    global_closure6: function global_closure6() {
    },
    global_closure7: function global_closure7() {
    },
    global_closure8: function global_closure8() {
    },
    global_closure9: function global_closure9() {
    },
    global_closure10: function global_closure10() {
    },
    global_closure11: function global_closure11() {
    },
    global_closure12: function global_closure12() {
    },
    global_closure13: function global_closure13() {
    },
    global_closure14: function global_closure14() {
    },
    global_closure15: function global_closure15() {
    },
    global_closure16: function global_closure16() {
    },
    global_closure17: function global_closure17() {
    },
    global_closure18: function global_closure18() {
    },
    global_closure19: function global_closure19() {
    },
    global_closure20: function global_closure20() {
    },
    global_closure21: function global_closure21() {
    },
    global_closure22: function global_closure22() {
    },
    global_closure23: function global_closure23() {
    },
    global_closure24: function global_closure24() {
    },
    global_closure25: function global_closure25() {
    },
    global__closure: function global__closure() {
    },
    global_closure26: function global_closure26() {
    },
    module_closure1: function module_closure1() {
    },
    module_closure2: function module_closure2() {
    },
    module_closure3: function module_closure3() {
    },
    module_closure4: function module_closure4() {
    },
    module_closure5: function module_closure5() {
    },
    module_closure6: function module_closure6() {
    },
    module_closure7: function module_closure7() {
    },
    module_closure8: function module_closure8() {
    },
    module__closure1: function module__closure1() {
    },
    module_closure9: function module_closure9() {
    },
    _red_closure: function _red_closure() {
    },
    _green_closure: function _green_closure() {
    },
    _blue_closure: function _blue_closure() {
    },
    _mix_closure: function _mix_closure() {
    },
    _hue_closure: function _hue_closure() {
    },
    _saturation_closure: function _saturation_closure() {
    },
    _lightness_closure: function _lightness_closure() {
    },
    _complement_closure: function _complement_closure() {
    },
    _adjust_closure: function _adjust_closure() {
    },
    _scale_closure: function _scale_closure() {
    },
    _change_closure: function _change_closure() {
    },
    _ieHexStr_closure: function _ieHexStr_closure() {
    },
    _ieHexStr_closure_hexString: function _ieHexStr_closure_hexString() {
    },
    _updateComponents_getParam: function _updateComponents_getParam(t0, t1, t2) {
      this.keywords = t0;
      this.scale = t1;
      this.change = t2;
    },
    _updateComponents_closure: function _updateComponents_closure() {
    },
    _updateComponents_closure0: function _updateComponents_closure0() {
    },
    _updateComponents_updateValue: function _updateComponents_updateValue(t0, t1) {
      this.change = t0;
      this.adjust = t1;
    },
    _updateComponents_updateRgb: function _updateComponents_updateRgb(t0) {
      this.updateValue = t0;
    },
    _functionString_closure: function _functionString_closure() {
    },
    _removedColorFunction_closure: function _removedColorFunction_closure(t0, t1, t2) {
      this.name = t0;
      this.argument = t1;
      this.negative = t2;
    },
    _rgb_closure: function _rgb_closure() {
    },
    _hsl_closure: function _hsl_closure() {
    },
    _hwb_closure: function _hwb_closure() {
    },
    _parseChannels_closure: function _parseChannels_closure(t0) {
      this._0_0 = t0;
    },
    _parseChannels_closure0: function _parseChannels_closure0() {
    },
    _parseChannels_closure1: function _parseChannels_closure1(t0) {
      this._1_0 = t0;
    },
    _function3($name, $arguments, callback) {
      return A.BuiltInCallable$function($name, $arguments, callback, "sass:list");
    },
    _length_closure0: function _length_closure0() {
    },
    _nth_closure: function _nth_closure() {
    },
    _setNth_closure: function _setNth_closure() {
    },
    _join_closure: function _join_closure() {
    },
    _join__closure: function _join__closure(t0) {
      this._0_0 = t0;
    },
    _join__closure0: function _join__closure0(t0) {
      this._0_1 = t0;
    },
    _join__closure1: function _join__closure1(t0) {
      this._0_0 = t0;
    },
    _append_closure0: function _append_closure0() {
    },
    _zip_closure: function _zip_closure() {
    },
    _zip__closure: function _zip__closure() {
    },
    _zip__closure0: function _zip__closure0(t0) {
      this._box_0 = t0;
    },
    _zip__closure1: function _zip__closure1(t0) {
      this._box_0 = t0;
    },
    _index_closure0: function _index_closure0() {
    },
    _separator_closure: function _separator_closure() {
    },
    _isBracketed_closure: function _isBracketed_closure() {
    },
    _slash_closure: function _slash_closure() {
    },
    _modify(map, keys, modify, addNesting) {
      var keyIterator = J.get$iterator$ax(keys);
      return keyIterator.moveNext$0() ? new A._modify_modifyNestedMap(keyIterator, modify, addNesting).call$1(map) : modify.call$1(map);
    },
    _deepMergeImpl(map1, map2) {
      var t2, t3, result, key, value, _1_0, _1_1, _1_3, resultMap, valueMap, merged, _null = null,
        t1 = map1._map$_contents;
      if (t1.get$isEmpty(t1))
        return map2;
      t2 = map2._map$_contents;
      if (t2.get$isEmpty(t2))
        return map1;
      t3 = type$.Value;
      result = A.LinkedHashMap_LinkedHashMap$of(t1, t3, t3);
      for (t1 = A.MapExtensions_get_pairs(t2, t3, t3), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        key = t2._0;
        value = t2._1;
        t2 = result.$index(0, key);
        t2 = t2 == null ? _null : t2.tryMap$0();
        _1_0 = new A._Record_2(t2, value.tryMap$0());
        _1_1 = A._InitializedCell$(new A._deepMergeImpl_closure(_1_0));
        _1_3 = A._InitializedCell$(new A._deepMergeImpl_closure0(_1_0));
        if (_1_1._readFinal$0() != null) {
          resultMap = _1_1._readFinal$0();
          t2 = true;
        } else {
          resultMap = _null;
          t2 = false;
        }
        if (t2)
          if (_1_3._readFinal$0() != null) {
            valueMap = _1_3._readFinal$0();
            t2 = true;
          } else {
            valueMap = _null;
            t2 = false;
          }
        else {
          valueMap = _null;
          t2 = false;
        }
        if (t2) {
          merged = A._deepMergeImpl(resultMap, valueMap);
          if (merged === resultMap)
            continue;
          result.$indexSet(0, key, merged);
        } else
          result.$indexSet(0, key, value);
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(result, t3, t3));
    },
    _function2($name, $arguments, callback) {
      return A.BuiltInCallable$function($name, $arguments, callback, "sass:map");
    },
    _get_closure: function _get_closure() {
    },
    _set_closure: function _set_closure() {
    },
    _set__closure1: function _set__closure1(t0) {
      this.$arguments = t0;
    },
    _set_closure0: function _set_closure0() {
    },
    _set__closure: function _set__closure(t0) {
      this._0_0 = t0;
    },
    _set__closure0: function _set__closure0(t0) {
      this._box_0 = t0;
    },
    _merge_closure: function _merge_closure() {
    },
    _merge_closure0: function _merge_closure0() {
    },
    _merge__closure: function _merge__closure(t0) {
      this._0_0 = t0;
    },
    _merge__closure0: function _merge__closure0(t0) {
      this.map2 = t0;
    },
    _deepMerge_closure: function _deepMerge_closure() {
    },
    _deepRemove_closure: function _deepRemove_closure() {
    },
    _deepRemove__closure: function _deepRemove__closure(t0) {
      this.keys = t0;
    },
    _remove_closure: function _remove_closure() {
    },
    _remove_closure0: function _remove_closure0() {
    },
    _keys_closure: function _keys_closure() {
    },
    _values_closure: function _values_closure() {
    },
    _hasKey_closure: function _hasKey_closure() {
    },
    _modify_modifyNestedMap: function _modify_modifyNestedMap(t0, t1, t2) {
      this.keyIterator = t0;
      this.modify = t1;
      this.addNesting = t2;
    },
    _deepMergeImpl_closure: function _deepMergeImpl_closure(t0) {
      this._1_0 = t0;
    },
    _deepMergeImpl_closure0: function _deepMergeImpl_closure0(t0) {
      this._1_0 = t0;
    },
    _singleArgumentMathFunc($name, mathFunc) {
      return A.BuiltInCallable$function($name, "$number", new A._singleArgumentMathFunc_closure(mathFunc), "sass:math");
    },
    _numberFunction($name, transform) {
      return A.BuiltInCallable$function($name, "$number", new A._numberFunction_closure(transform), "sass:math");
    },
    _function1($name, $arguments, callback) {
      return A.BuiltInCallable$function($name, $arguments, callback, "sass:math");
    },
    global_closure: function global_closure() {
    },
    module_closure0: function module_closure0() {
    },
    _ceil_closure: function _ceil_closure() {
    },
    _clamp_closure: function _clamp_closure() {
    },
    _floor_closure: function _floor_closure() {
    },
    _max_closure: function _max_closure() {
    },
    _min_closure: function _min_closure() {
    },
    _round_closure: function _round_closure() {
    },
    _hypot_closure: function _hypot_closure() {
    },
    _hypot__closure: function _hypot__closure() {
    },
    _log_closure: function _log_closure() {
    },
    _pow_closure: function _pow_closure() {
    },
    _atan2_closure: function _atan2_closure() {
    },
    _compatible_closure: function _compatible_closure() {
    },
    _isUnitless_closure: function _isUnitless_closure() {
    },
    _unit_closure: function _unit_closure() {
    },
    _percentage_closure: function _percentage_closure() {
    },
    _randomFunction_closure: function _randomFunction_closure() {
    },
    _div_closure: function _div_closure() {
    },
    _singleArgumentMathFunc_closure: function _singleArgumentMathFunc_closure(t0) {
      this.mathFunc = t0;
    },
    _numberFunction_closure: function _numberFunction_closure(t0) {
      this.transform = t0;
    },
    _function5($name, $arguments, callback) {
      return A.BuiltInCallable$function($name, $arguments, callback, "sass:meta");
    },
    global_closure27: function global_closure27() {
    },
    global_closure28: function global_closure28() {
    },
    global_closure29: function global_closure29() {
    },
    global_closure30: function global_closure30() {
    },
    local_closure: function local_closure() {
    },
    local_closure0: function local_closure0() {
    },
    local__closure0: function local__closure0() {
    },
    local_closure1: function local_closure1() {
    },
    local__closure: function local__closure(t0) {
      this._0_0 = t0;
    },
    _prependParent(compound) {
      var t1, type, rest, _null = null,
        span = A.EvaluationContext_current().get$currentCallableSpan(),
        _0_0 = compound.components,
        _0_3 = A._InitializedCell$(new A._prependParent_closure(_0_0)),
        _0_4 = A._InitializedCell$(new A._prependParent_closure0(_0_0));
      $label0$0: {
        if (_0_3._readFinal$0() && _0_4._readFinal$0() instanceof A.UniversalSelector) {
          t1 = _null;
          break $label0$0;
        }
        if (_0_3._readFinal$0())
          if (_0_4._readFinal$0() instanceof A.TypeSelector)
            t1 = _0_4._readFinal$0().name.namespace != null;
          else
            t1 = false;
        else
          t1 = false;
        if (t1) {
          t1 = _null;
          break $label0$0;
        }
        if (_0_3._readFinal$0())
          if (_0_4._readFinal$0() instanceof A.TypeSelector) {
            type = _0_4._readFinal$0();
            rest = B.JSArray_methods.sublist$1(_0_0, 1);
            t1 = true;
          } else {
            rest = _null;
            type = rest;
            t1 = false;
          }
        else {
          rest = _null;
          type = rest;
          t1 = false;
        }
        if (t1) {
          t1 = A._setArrayType([new A.ParentSelector(type.name.name, span)], type$.JSArray_SimpleSelector);
          B.JSArray_methods.addAll$1(t1, rest);
          t1 = A.CompoundSelector$(t1, span);
          break $label0$0;
        }
        t1 = A._setArrayType([new A.ParentSelector(_null, span)], type$.JSArray_SimpleSelector);
        B.JSArray_methods.addAll$1(t1, _0_0);
        t1 = A.CompoundSelector$(t1, span);
        break $label0$0;
      }
      return t1;
    },
    _function0($name, $arguments, callback) {
      return A.BuiltInCallable$function($name, $arguments, callback, "sass:selector");
    },
    _nest_closure: function _nest_closure() {
    },
    _nest__closure: function _nest__closure(t0) {
      this._box_0 = t0;
    },
    _nest__closure0: function _nest__closure0() {
    },
    _append_closure: function _append_closure() {
    },
    _append__closure: function _append__closure() {
    },
    _append__closure0: function _append__closure0(t0) {
      this.span = t0;
    },
    _append___closure: function _append___closure(t0, t1) {
      this.parent = t0;
      this.span = t1;
    },
    _extend_closure: function _extend_closure() {
    },
    _replace_closure: function _replace_closure() {
    },
    _unify_closure: function _unify_closure() {
    },
    _isSuperselector_closure: function _isSuperselector_closure() {
    },
    _simpleSelectors_closure: function _simpleSelectors_closure() {
    },
    _simpleSelectors__closure: function _simpleSelectors__closure() {
    },
    _parse_closure: function _parse_closure() {
    },
    _prependParent_closure: function _prependParent_closure(t0) {
      this._0_0 = t0;
    },
    _prependParent_closure0: function _prependParent_closure0(t0) {
      this._0_0 = t0;
    },
    _codepointForIndex(index, lengthInCodepoints, allowNegative) {
      var result;
      if (index === 0)
        return 0;
      if (index > 0)
        return Math.min(index - 1, lengthInCodepoints);
      result = lengthInCodepoints + index;
      if (result < 0 && !allowNegative)
        return 0;
      return result;
    },
    _function($name, $arguments, callback) {
      return A.BuiltInCallable$function($name, $arguments, callback, "sass:string");
    },
    module_closure: function module_closure() {
    },
    module__closure: function module__closure(t0) {
      this.string = t0;
    },
    module__closure0: function module__closure0(t0) {
      this.string = t0;
    },
    _unquote_closure: function _unquote_closure() {
    },
    _quote_closure: function _quote_closure() {
    },
    _length_closure: function _length_closure() {
    },
    _insert_closure: function _insert_closure() {
    },
    _index_closure: function _index_closure() {
    },
    _slice_closure: function _slice_closure() {
    },
    _toUpperCase_closure: function _toUpperCase_closure() {
    },
    _toLowerCase_closure: function _toLowerCase_closure() {
    },
    _uniqueId_closure: function _uniqueId_closure() {
    },
    ImportCache$(loadPaths, logger) {
      var t1 = type$.nullable_Record_3_Importer_and_Uri_and_Uri_originalUrl,
        t2 = type$.Uri,
        t3 = A.ImportCache__toImporters(null, loadPaths, null);
      return new A.ImportCache(t3, logger, A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_2_Uri_and_bool_forImport, t1), A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_4_Uri_and_Importer_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport, t1), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.nullable_Stylesheet), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.ImporterResult));
    },
    ImportCache__toImporters(importers, loadPaths, packageConfig) {
      var t1, t2, t3, t4, _i, path, _null = null,
        sassPath = A.getEnvironmentVariable("SASS_PATH");
      if (A.isBrowser()) {
        t1 = A._setArrayType([], type$.JSArray_Importer_2);
        return t1;
      }
      t1 = A._setArrayType([], type$.JSArray_Importer_2);
      for (t2 = J.get$iterator$ax(loadPaths); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        t1.push(new A.FilesystemImporter($.$get$context().absolute$15(t3, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
      }
      if (sassPath != null) {
        t2 = A.isNodeJs() ? self.process : _null;
        t3 = sassPath.split(J.$eq$(t2 == null ? _null : J.get$platform$x(t2), "win32") ? ";" : ":");
        t4 = t3.length;
        _i = 0;
        for (; _i < t4; ++_i) {
          path = t3[_i];
          t1.push(new A.FilesystemImporter($.$get$context().absolute$15(path, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
        }
      }
      return t1;
    },
    ImportCache: function ImportCache(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._importers = t0;
      _._logger = t1;
      _._canonicalizeCache = t2;
      _._relativeCanonicalizeCache = t3;
      _._importCache = t4;
      _._resultsCache = t5;
    },
    ImportCache_canonicalize_closure: function ImportCache_canonicalize_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.baseImporter = t1;
      _.baseUrl = t2;
      _.url = t3;
      _.forImport = t4;
    },
    ImportCache_canonicalize_closure0: function ImportCache_canonicalize_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.baseUrl = t2;
      _.forImport = t3;
    },
    ImportCache__canonicalize_closure: function ImportCache__canonicalize_closure(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    ImportCache__canonicalize__closure: function ImportCache__canonicalize__closure(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    ImportCache__canonicalize_closure0: function ImportCache__canonicalize_closure0(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    ImportCache_importCanonical_closure: function ImportCache_importCanonical_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.canonicalUrl = t2;
      _.originalUrl = t3;
      _.quiet = t4;
    },
    ImportCache_humanize_closure: function ImportCache_humanize_closure(t0) {
      this.canonicalUrl = t0;
    },
    ImportCache_humanize_closure0: function ImportCache_humanize_closure0() {
    },
    ImportCache_humanize_closure1: function ImportCache_humanize_closure1() {
    },
    ImportCache_humanize_closure2: function ImportCache_humanize_closure2(t0) {
      this.canonicalUrl = t0;
    },
    ImportCache_clearCanonicalize_closure: function ImportCache_clearCanonicalize_closure(t0) {
      this.url = t0;
    },
    Importer: function Importer() {
    },
    AsyncImporter: function AsyncImporter() {
    },
    FilesystemImporter: function FilesystemImporter(t0) {
      this._loadPath = t0;
    },
    FilesystemImporter_canonicalize_closure: function FilesystemImporter_canonicalize_closure() {
    },
    NoOpImporter: function NoOpImporter() {
    },
    ImporterResult: function ImporterResult(t0, t1, t2) {
      this.contents = t0;
      this._sourceMapUrl = t1;
      this.syntax = t2;
    },
    fromImport() {
      var t1 = A._asBoolQ($.Zone__current.$index(0, B.Symbol__inImportRule));
      return t1 === true;
    },
    withContainingUrl(url, callback, $T) {
      var t1 = url == null ? B.Symbol__none : url,
        t2 = type$.nullable_Object;
      return A.runZoned(callback, A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__containingUrl, t1], t2, t2), $T);
    },
    resolveImportPath(path) {
      var t1,
        extension = A.ParsedPath_ParsedPath$parse(path, $.$get$context().style)._splitExtension$1(1)[1];
      if (extension === ".sass" || extension === ".scss" || extension === ".css") {
        t1 = A.fromImport() ? new A.resolveImportPath_closure(path, extension).call$0() : null;
        return t1 == null ? A._exactlyOne(A._tryPath(path)) : t1;
      }
      t1 = A.fromImport() ? new A.resolveImportPath_closure0(path).call$0() : null;
      if (t1 == null)
        t1 = A._exactlyOne(A._tryPathWithExtensions(path));
      return t1 == null ? A._tryPathAsDirectory(path) : t1;
    },
    _tryPathWithExtensions(path) {
      var result = A._tryPath(path + ".sass");
      B.JSArray_methods.addAll$1(result, A._tryPath(path + ".scss"));
      return result.length !== 0 ? result : A._tryPath(path + ".css");
    },
    _tryPath(path) {
      var t1 = $.$get$context(),
        partial = A.join(t1.dirname$1(path), "_" + A.ParsedPath_ParsedPath$parse(path, t1.style).get$basename(), null);
      t1 = A._setArrayType([], type$.JSArray_String);
      if (A.fileExists(partial))
        t1.push(partial);
      if (A.fileExists(path))
        t1.push(path);
      return t1;
    },
    _tryPathAsDirectory(path) {
      var t1;
      if (!A.dirExists(path))
        return null;
      t1 = A.fromImport() ? new A._tryPathAsDirectory_closure(path).call$0() : null;
      return t1 == null ? A._exactlyOne(A._tryPathWithExtensions(A.join(path, "index", null))) : t1;
    },
    _exactlyOne(paths) {
      var t1, path,
        _0_1 = A._InitializedCell$(new A._exactlyOne_closure(paths));
      $label0$0: {
        if (_0_1._readFinal$0() <= 0) {
          t1 = null;
          break $label0$0;
        }
        if (J.$eq$(_0_1._readFinal$0(), 1)) {
          path = paths[0];
          t1 = true;
        } else {
          path = null;
          t1 = false;
        }
        if (t1) {
          t1 = path;
          break $label0$0;
        }
        t1 = A.throwExpression(string$.It_s_n + B.JSArray_methods.map$1$1(paths, new A._exactlyOne_closure0(), type$.String).join$1(0, "\n"));
      }
      return t1;
    },
    resolveImportPath_closure: function resolveImportPath_closure(t0, t1) {
      this.path = t0;
      this.extension = t1;
    },
    resolveImportPath_closure0: function resolveImportPath_closure0(t0) {
      this.path = t0;
    },
    _tryPathAsDirectory_closure: function _tryPathAsDirectory_closure(t0) {
      this.path = t0;
    },
    _exactlyOne_closure: function _exactlyOne_closure(t0) {
      this._0_0 = t0;
    },
    _exactlyOne_closure0: function _exactlyOne_closure0() {
    },
    InterpolationBuffer: function InterpolationBuffer(t0, t1) {
      this._interpolation_buffer$_text = t0;
      this._interpolation_buffer$_contents = t1;
    },
    InterpolationBuffer_addInterpolation_closure: function InterpolationBuffer_addInterpolation_closure(t0) {
      this._0_0 = t0;
    },
    InterpolationMap$(_interpolation, targetLocations) {
      var t1 = A.List_List$unmodifiable(targetLocations, type$.SourceLocation),
        t2 = _interpolation.contents.length,
        expectedLocations = Math.max(0, t2 - 1);
      if (t1.length !== expectedLocations)
        A.throwExpression(A.ArgumentError$("InterpolationMap must have " + A.S(expectedLocations) + string$.x20targe + t2 + " components.", null));
      return new A.InterpolationMap(_interpolation, t1);
    },
    InterpolationMap: function InterpolationMap(t0, t1) {
      this._interpolation = t0;
      this._targetLocations = t1;
    },
    InterpolationMap_mapException_closure: function InterpolationMap_mapException_closure() {
    },
    InterpolationMap_mapSpan_closure: function InterpolationMap_mapSpan_closure(t0) {
      this._0_0 = t0;
    },
    InterpolationMap_mapSpan_closure0: function InterpolationMap_mapSpan_closure0(t0) {
      this._0_0 = t0;
    },
    _realCasePath(path) {
      var prefix, _null = null,
        t1 = A.isNodeJs() ? self.process : _null;
      if (!J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "win32")) {
        t1 = A.isNodeJs() ? self.process : _null;
        t1 = J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "darwin");
      } else
        t1 = true;
      if (!t1)
        return path;
      t1 = A.isNodeJs() ? self.process : _null;
      if (J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "win32")) {
        prefix = B.JSString_methods.substring$2(path, 0, $.$get$context().style.rootLength$1(path));
        t1 = prefix.length;
        if (t1 !== 0 && A.CharacterExtension_get_isAlphabetic(prefix.charCodeAt(0)))
          path = prefix.toUpperCase() + B.JSString_methods.substring$1(path, t1);
      }
      return new A._realCasePath_helper().call$1(path);
    },
    _realCasePath_helper: function _realCasePath_helper() {
    },
    _realCasePath_helper_closure: function _realCasePath_helper_closure(t0, t1, t2) {
      this.helper = t0;
      this.dirname = t1;
      this.path = t2;
    },
    _realCasePath_helper__closure: function _realCasePath_helper__closure(t0) {
      this.basename = t0;
    },
    printError(message) {
      var t1,
        process = A.isNodeJs() ? self.process : null;
      if (process != null)
        t1 = true;
      else {
        process = null;
        t1 = false;
      }
      if (t1) {
        t1 = J.get$stderr$x(process);
        J.write$1$x(t1, A.S(message == null ? "" : message) + "\n");
      } else {
        t1 = self.console;
        J.error$1$x(t1, message == null ? "" : message);
      }
    },
    readFile(path) {
      var contents, sourceFile, t1, i;
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("readFile() is only supported on Node.js"));
      contents = A._asString(A._readFile(path, "utf8"));
      if (!B.JSString_methods.contains$1(contents, "\ufffd"))
        return contents;
      sourceFile = A.SourceFile$fromString(contents, $.$get$context().toUri$1(path));
      for (t1 = contents.length, i = 0; i < t1; ++i) {
        if (contents.charCodeAt(i) !== 65533)
          continue;
        throw A.wrapException(A.SassException$("Invalid UTF-8.", A.FileLocation$_(sourceFile, i).pointSpan$0(), null));
      }
      return contents;
    },
    _readFile(path, encoding) {
      return A._systemErrorToFileSystemException(new A._readFile_closure(path, encoding));
    },
    writeFile(path, contents) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("writeFile() is only supported on Node.js"));
      return A._systemErrorToFileSystemException(new A.writeFile_closure(path, contents));
    },
    deleteFile(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("deleteFile() is only supported on Node.js"));
      return A._systemErrorToFileSystemException(new A.deleteFile_closure(path));
    },
    readStdin() {
      return A.readStdin$body();
    },
    readStdin$body() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, t3, completer, sink, t1, t2;
      var $async$readStdin = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              t2 = A.isNodeJs() ? self.process : null;
              if (t2 == null)
                throw A.wrapException(A.UnsupportedError$("readStdin() is only supported on Node.js"));
              t3 = new A._Future($.Zone__current, type$._Future_String);
              completer = new A._AsyncCompleter(t3, type$._AsyncCompleter_String);
              t1.contents = null;
              sink = new A._StringCallbackSink(new A.readStdin_closure(t1, completer), new A.StringBuffer("")).asUtf8Sink$1(false);
              t1 = J.getInterceptor$x(t2);
              J.on$2$x(t1.get$stdin(t2), "data", A.allowInterop(new A.readStdin_closure0(sink)));
              J.on$2$x(t1.get$stdin(t2), "end", A.allowInterop(new A.readStdin_closure1(sink)));
              J.on$2$x(t1.get$stdin(t2), "error", A.allowInterop(new A.readStdin_closure2(completer)));
              $async$returnValue = t3;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$readStdin, $async$completer);
    },
    fileExists(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$(string$.fileEx));
      return A._systemErrorToFileSystemException(new A.fileExists_closure(path));
    },
    dirExists(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("dirExists() is only supported on Node.js"));
      return A._systemErrorToFileSystemException(new A.dirExists_closure(path));
    },
    ensureDir(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("ensureDir() is only supported on Node.js"));
      return A._systemErrorToFileSystemException(new A.ensureDir_closure(path));
    },
    listDir(path, recursive) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("listDir() is only supported on Node.js"));
      return A._systemErrorToFileSystemException(new A.listDir_closure(recursive, path));
    },
    modificationTime(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("modificationTime() is only supported on Node.js"));
      return A._systemErrorToFileSystemException(new A.modificationTime_closure(path));
    },
    getEnvironmentVariable($name) {
      var t1 = A.isNodeJs() ? self.process : null,
        env = t1 == null ? null : J.get$env$x(t1);
      if (env == null)
        t1 = null;
      else
        t1 = A._asStringQ(env[$name]);
      return t1;
    },
    _systemErrorToFileSystemException(callback) {
      var error, t1, exception, t2;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        error = A.unwrapException(exception);
        if (!type$.JsSystemError._is(error))
          throw exception;
        t1 = error;
        t2 = J.getInterceptor$x(t1);
        throw A.wrapException(new A.FileSystemException(J.substring$2$s(t2.get$message(t1), (A.S(t2.get$code(t1)) + ": ").length, J.get$length$asx(t2.get$message(t1)) - (", " + A.S(t2.get$syscall(t1)) + " '" + A.S(t2.get$path(t1)) + "'").length), J.get$path$x(error)));
      }
    },
    hasTerminal() {
      var t1 = A.isNodeJs() ? self.process : null;
      return J.$eq$(t1 == null ? null : J.get$isTTY$x(J.get$stdout$x(t1)), true);
    },
    isWindows() {
      var t1 = A.isNodeJs() ? self.process : null;
      return J.$eq$(t1 == null ? null : J.get$platform$x(t1), "win32");
    },
    watchDir(path, poll) {
      var watcher, t2, t3, t1 = {};
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("watchDir() is only supported on Node.js"));
      watcher = J.watch$2$x(self.chokidar, path, {disableGlobbing: true, usePolling: poll});
      t1.controller = null;
      t2 = J.getInterceptor$x(watcher);
      t2.on$2(watcher, "add", A.allowInterop(new A.watchDir_closure(t1)));
      t2.on$2(watcher, "change", A.allowInterop(new A.watchDir_closure0(t1)));
      t2.on$2(watcher, "unlink", A.allowInterop(new A.watchDir_closure1(t1)));
      t2.on$2(watcher, "error", A.allowInterop(new A.watchDir_closure2(t1)));
      t3 = new A._Future($.Zone__current, type$._Future_Stream_WatchEvent);
      t2.on$2(watcher, "ready", A.allowInterop(new A.watchDir_closure3(t1, watcher, new A._AsyncCompleter(t3, type$._AsyncCompleter_Stream_WatchEvent))));
      return t3;
    },
    FileSystemException: function FileSystemException(t0, t1) {
      this.message = t0;
      this.path = t1;
    },
    _readFile_closure: function _readFile_closure(t0, t1) {
      this.path = t0;
      this.encoding = t1;
    },
    writeFile_closure: function writeFile_closure(t0, t1) {
      this.path = t0;
      this.contents = t1;
    },
    deleteFile_closure: function deleteFile_closure(t0) {
      this.path = t0;
    },
    readStdin_closure: function readStdin_closure(t0, t1) {
      this._box_0 = t0;
      this.completer = t1;
    },
    readStdin_closure0: function readStdin_closure0(t0) {
      this.sink = t0;
    },
    readStdin_closure1: function readStdin_closure1(t0) {
      this.sink = t0;
    },
    readStdin_closure2: function readStdin_closure2(t0) {
      this.completer = t0;
    },
    fileExists_closure: function fileExists_closure(t0) {
      this.path = t0;
    },
    dirExists_closure: function dirExists_closure(t0) {
      this.path = t0;
    },
    ensureDir_closure: function ensureDir_closure(t0) {
      this.path = t0;
    },
    listDir_closure: function listDir_closure(t0, t1) {
      this.recursive = t0;
      this.path = t1;
    },
    listDir__closure: function listDir__closure(t0) {
      this.path = t0;
    },
    listDir__closure0: function listDir__closure0() {
    },
    listDir_closure_list: function listDir_closure_list() {
    },
    listDir__list_closure: function listDir__list_closure(t0, t1) {
      this.parent = t0;
      this.list = t1;
    },
    modificationTime_closure: function modificationTime_closure(t0) {
      this.path = t0;
    },
    watchDir_closure: function watchDir_closure(t0) {
      this._box_0 = t0;
    },
    watchDir_closure0: function watchDir_closure0(t0) {
      this._box_0 = t0;
    },
    watchDir_closure1: function watchDir_closure1(t0) {
      this._box_0 = t0;
    },
    watchDir_closure2: function watchDir_closure2(t0) {
      this._box_0 = t0;
    },
    watchDir_closure3: function watchDir_closure3(t0, t1, t2) {
      this._box_0 = t0;
      this.watcher = t1;
      this.completer = t2;
    },
    watchDir__closure: function watchDir__closure(t0) {
      this.watcher = t0;
    },
    JSArray0: function JSArray0() {
    },
    Chokidar: function Chokidar() {
    },
    ChokidarOptions: function ChokidarOptions() {
    },
    ChokidarWatcher: function ChokidarWatcher() {
    },
    JSFunction: function JSFunction() {
    },
    ImmutableList: function ImmutableList() {
    },
    ImmutableMap: function ImmutableMap() {
    },
    NodeImporterResult: function NodeImporterResult() {
    },
    RenderContext: function RenderContext() {
    },
    RenderContextOptions: function RenderContextOptions() {
    },
    RenderContextResult: function RenderContextResult() {
    },
    RenderContextResultStats: function RenderContextResultStats() {
    },
    JSClass: function JSClass() {
    },
    JSUrl: function JSUrl() {
    },
    jsThrow0(error) {
      return type$.Never._as($.$get$_jsThrow0().call$1(error));
    },
    _PropertyDescriptor: function _PropertyDescriptor() {
    },
    WarnForDeprecation_warnForDeprecation(_this, deprecation, message, span, trace) {
      var $self, t1;
      if (_this instanceof A.DeprecationHandlingLogger) {
        $self = _this;
        t1 = true;
      } else {
        $self = null;
        t1 = false;
      }
      if (t1)
        $self.warnForDeprecation$4$span$trace(deprecation, message, span, trace);
      else if (!deprecation.isFuture)
        _this.warn$4$deprecation$span$trace(0, message, true, span, trace);
    },
    _QuietLogger: function _QuietLogger() {
    },
    DeprecationHandlingLogger: function DeprecationHandlingLogger(t0, t1, t2, t3, t4) {
      var _ = this;
      _._warningCounts = t0;
      _._inner = t1;
      _.fatalDeprecations = t2;
      _.futureDeprecations = t3;
      _.limitRepetition = t4;
    },
    DeprecationHandlingLogger_warnForDeprecation_closure: function DeprecationHandlingLogger_warnForDeprecation_closure(t0) {
      this._0_0 = t0;
    },
    DeprecationHandlingLogger_warnForDeprecation_closure0: function DeprecationHandlingLogger_warnForDeprecation_closure0(t0) {
      this._0_0 = t0;
    },
    DeprecationHandlingLogger_summarize_closure: function DeprecationHandlingLogger_summarize_closure() {
    },
    DeprecationHandlingLogger_summarize_closure0: function DeprecationHandlingLogger_summarize_closure0() {
    },
    StderrLogger: function StderrLogger(t0) {
      this.color = t0;
    },
    TrackingLogger: function TrackingLogger(t0) {
      this._tracking$_logger = t0;
      this._emittedDebug = this._emittedWarning = false;
    },
    BuiltInModule$($name, functions, mixins, variables, $T) {
      var t1 = A._Uri__Uri(null, $name, null, "sass"),
        t2 = A.BuiltInModule__callableMap(functions, $T),
        t3 = A.BuiltInModule__callableMap(mixins, $T),
        t4 = variables == null ? B.Map_empty5 : new A.UnmodifiableMapView(variables, type$.UnmodifiableMapView_String_Value);
      return new A.BuiltInModule(t1, t2, t3, t4, $T._eval$1("BuiltInModule<0>"));
    },
    BuiltInModule__callableMap(callables, $T) {
      var t2, _i, callable,
        t1 = type$.String;
      if (callables == null)
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, $T);
      else {
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, $T);
        for (t2 = callables.length, _i = 0; _i < callables.length; callables.length === t2 || (0, A.throwConcurrentModificationError)(callables), ++_i) {
          callable = callables[_i];
          t1.$indexSet(0, J.get$name$x(callable), callable);
        }
        t1 = new A.UnmodifiableMapView(t1, type$.$env_1_1_String._bind$1($T)._eval$1("UnmodifiableMapView<1,2>"));
      }
      return new A.UnmodifiableMapView(t1, type$.$env_1_1_String._bind$1($T)._eval$1("UnmodifiableMapView<1,2>"));
    },
    BuiltInModule: function BuiltInModule(t0, t1, t2, t3, t4) {
      var _ = this;
      _.url = t0;
      _.functions = t1;
      _.mixins = t2;
      _.variables = t3;
      _.$ti = t4;
    },
    ForwardedModuleView_ifNecessary(inner, rule, $T) {
      var t1;
      if (rule.prefix == null)
        if (rule.shownMixinsAndFunctions == null)
          if (rule.shownVariables == null) {
            t1 = rule.hiddenMixinsAndFunctions;
            if (t1 == null)
              t1 = null;
            else {
              t1 = t1._base;
              t1 = t1.get$isEmpty(t1);
            }
            if (t1 === true) {
              t1 = rule.hiddenVariables;
              if (t1 == null)
                t1 = null;
              else {
                t1 = t1._base;
                t1 = t1.get$isEmpty(t1);
              }
              t1 = t1 === true;
            } else
              t1 = false;
          } else
            t1 = false;
        else
          t1 = false;
      else
        t1 = false;
      if (t1)
        return inner;
      else
        return A.ForwardedModuleView$(inner, rule, $T);
    },
    ForwardedModuleView$(_inner, _rule, $T) {
      var t1 = _rule.prefix,
        t2 = _rule.shownVariables,
        t3 = _rule.hiddenVariables,
        t4 = _rule.shownMixinsAndFunctions,
        t5 = _rule.hiddenMixinsAndFunctions;
      return new A.ForwardedModuleView(_inner, _rule, A.ForwardedModuleView__forwardedMap(_inner.get$variables(), t1, t2, t3, type$.Value), A.ForwardedModuleView__forwardedMap(_inner.get$variableNodes(), t1, t2, t3, type$.AstNode), A.ForwardedModuleView__forwardedMap(_inner.get$functions(_inner), t1, t4, t5, $T), A.ForwardedModuleView__forwardedMap(_inner.get$mixins(), t1, t4, t5, $T), $T._eval$1("ForwardedModuleView<0>"));
    },
    ForwardedModuleView__forwardedMap(map, prefix, safelist, blocklist, $V) {
      var t2,
        t1 = prefix == null;
      if (t1)
        if (safelist == null)
          if (blocklist != null) {
            t2 = blocklist._base;
            t2 = t2.get$isEmpty(t2);
          } else
            t2 = true;
        else
          t2 = false;
      else
        t2 = false;
      if (t2)
        return map;
      if (!t1)
        map = new A.PrefixedMapView(map, prefix, $V._eval$1("PrefixedMapView<0>"));
      if (safelist != null)
        map = new A.LimitedMapView(map, safelist._base.intersection$1(new A.MapKeySet(map, type$.MapKeySet_nullable_Object)), type$.$env_1_1_String._bind$1($V)._eval$1("LimitedMapView<1,2>"));
      else {
        if (blocklist != null) {
          t1 = blocklist._base;
          t1 = t1.get$isNotEmpty(t1);
        } else
          t1 = false;
        if (t1)
          map = A.LimitedMapView$blocklist(map, blocklist, type$.String, $V);
      }
      return map;
    },
    ForwardedModuleView: function ForwardedModuleView(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._forwarded_view$_inner = t0;
      _._rule = t1;
      _.variables = t2;
      _.variableNodes = t3;
      _.functions = t4;
      _.mixins = t5;
      _.$ti = t6;
    },
    ShadowedModuleView_ifNecessary(inner, functions, mixins, variables, $T) {
      return A.ShadowedModuleView__needsBlocklist(inner.get$variables(), variables) || A.ShadowedModuleView__needsBlocklist(inner.get$functions(inner), functions) || A.ShadowedModuleView__needsBlocklist(inner.get$mixins(), mixins) ? new A.ShadowedModuleView(inner, A.ShadowedModuleView__shadowedMap(inner.get$variables(), variables, type$.Value), A.ShadowedModuleView__shadowedMap(inner.get$variableNodes(), variables, type$.AstNode), A.ShadowedModuleView__shadowedMap(inner.get$functions(inner), functions, $T), A.ShadowedModuleView__shadowedMap(inner.get$mixins(), mixins, $T), $T._eval$1("ShadowedModuleView<0>")) : null;
    },
    ShadowedModuleView__shadowedMap(map, blocklist, $V) {
      var t1 = A.ShadowedModuleView__needsBlocklist(map, blocklist);
      return !t1 ? map : A.LimitedMapView$blocklist(map, blocklist, type$.String, $V);
    },
    ShadowedModuleView__needsBlocklist(map, blocklist) {
      return map.get$isNotEmpty(map) && blocklist.any$1(0, map.get$containsKey());
    },
    ShadowedModuleView: function ShadowedModuleView(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._shadowed_view$_inner = t0;
      _.variables = t1;
      _.variableNodes = t2;
      _.functions = t3;
      _.mixins = t4;
      _.$ti = t5;
    },
    AtRootQueryParser$(contents, logger, url) {
      var t1 = A.SpanScanner$(contents, url);
      return new A.AtRootQueryParser(t1, logger, null);
    },
    AtRootQueryParser: function AtRootQueryParser(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._interpolationMap = t2;
    },
    AtRootQueryParser_parse_closure: function AtRootQueryParser_parse_closure(t0) {
      this.$this = t0;
    },
    _disallowedFunctionNames_closure: function _disallowedFunctionNames_closure() {
    },
    CssParser: function CssParser(t0, t1, t2, t3) {
      var _ = this;
      _._isUseAllowed = true;
      _._inParentheses = _._inStyleRule = _._stylesheet$_inUnknownAtRule = _._inControlDirective = _._inContentBlock = _._stylesheet$_inMixin = false;
      _._globalVariables = t0;
      _.lastSilentComment = null;
      _.scanner = t1;
      _.logger = t2;
      _._interpolationMap = t3;
    },
    KeyframeSelectorParser$(contents, interpolationMap, logger) {
      var t1 = A.SpanScanner$(contents, null);
      return new A.KeyframeSelectorParser(t1, logger, interpolationMap);
    },
    KeyframeSelectorParser: function KeyframeSelectorParser(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._interpolationMap = t2;
    },
    KeyframeSelectorParser_parse_closure: function KeyframeSelectorParser_parse_closure(t0) {
      this.$this = t0;
    },
    MediaQueryParser: function MediaQueryParser(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._interpolationMap = t2;
    },
    MediaQueryParser_parse_closure: function MediaQueryParser_parse_closure(t0) {
      this.$this = t0;
    },
    Parser_isIdentifier(text) {
      var t1, t2, exception, logger = null;
      try {
        t1 = logger;
        t2 = A.SpanScanner$(text, null);
        new A.Parser(t2, t1 == null ? B.StderrLogger_false : t1, null)._parseIdentifier$0();
        return true;
      } catch (exception) {
        if (type$.SassFormatException._is(A.unwrapException(exception)))
          return false;
        else
          throw exception;
      }
    },
    Parser: function Parser(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._interpolationMap = t2;
    },
    Parser__parseIdentifier_closure: function Parser__parseIdentifier_closure(t0) {
      this.$this = t0;
    },
    Parser_escape_closure: function Parser_escape_closure() {
    },
    Parser_scanIdentChar_matches: function Parser_scanIdentChar_matches(t0, t1) {
      this.caseSensitive = t0;
      this.char = t1;
    },
    Parser_spanFrom_closure: function Parser_spanFrom_closure(t0, t1) {
      this.$this = t0;
      this.span = t1;
    },
    SassParser: function SassParser(t0, t1, t2, t3) {
      var _ = this;
      _._currentIndentation = 0;
      _._spaces = _._nextIndentationEnd = _._nextIndentation = null;
      _._isUseAllowed = true;
      _._inParentheses = _._inStyleRule = _._stylesheet$_inUnknownAtRule = _._inControlDirective = _._inContentBlock = _._stylesheet$_inMixin = false;
      _._globalVariables = t0;
      _.lastSilentComment = null;
      _.scanner = t1;
      _.logger = t2;
      _._interpolationMap = t3;
    },
    SassParser_styleRuleSelector_closure: function SassParser_styleRuleSelector_closure() {
    },
    SassParser_children_closure: function SassParser_children_closure(t0, t1, t2) {
      this.$this = t0;
      this.child = t1;
      this.children = t2;
    },
    SassParser__peekIndentation_closure: function SassParser__peekIndentation_closure() {
    },
    SassParser__peekIndentation_closure0: function SassParser__peekIndentation_closure0() {
    },
    ScssParser$(contents, logger, url) {
      var t1 = A.SpanScanner$(contents, url),
        t2 = logger == null ? B.StderrLogger_false : logger;
      return new A.ScssParser(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.VariableDeclaration), t1, t2, null);
    },
    ScssParser: function ScssParser(t0, t1, t2, t3) {
      var _ = this;
      _._isUseAllowed = true;
      _._inParentheses = _._inStyleRule = _._stylesheet$_inUnknownAtRule = _._inControlDirective = _._inContentBlock = _._stylesheet$_inMixin = false;
      _._globalVariables = t0;
      _.lastSilentComment = null;
      _.scanner = t1;
      _.logger = t2;
      _._interpolationMap = t3;
    },
    SelectorParser$(contents, allowParent, allowPlaceholder, interpolationMap, logger, url) {
      var t1 = A.SpanScanner$(contents, url);
      return new A.SelectorParser(allowParent, allowPlaceholder, t1, logger == null ? B.StderrLogger_false : logger, interpolationMap);
    },
    SelectorParser: function SelectorParser(t0, t1, t2, t3, t4) {
      var _ = this;
      _._allowParent = t0;
      _._allowPlaceholder = t1;
      _.scanner = t2;
      _.logger = t3;
      _._interpolationMap = t4;
    },
    SelectorParser_parse_closure: function SelectorParser_parse_closure(t0) {
      this.$this = t0;
    },
    SelectorParser_parseCompoundSelector_closure: function SelectorParser_parseCompoundSelector_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser: function StylesheetParser() {
    },
    StylesheetParser_parse_closure: function StylesheetParser_parse_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser_parse__closure: function StylesheetParser_parse__closure(t0) {
      this.$this = t0;
    },
    StylesheetParser_parse__closure0: function StylesheetParser_parse__closure0() {
    },
    StylesheetParser_parseArgumentDeclaration_closure: function StylesheetParser_parseArgumentDeclaration_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser_parseVariableDeclaration_closure: function StylesheetParser_parseVariableDeclaration_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser_parseUseRule_closure: function StylesheetParser_parseUseRule_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser__parseSingleProduction_closure: function StylesheetParser__parseSingleProduction_closure(t0, t1, t2) {
      this.$this = t0;
      this.production = t1;
      this.T = t2;
    },
    StylesheetParser__statement_closure: function StylesheetParser__statement_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser_variableDeclarationWithoutNamespace_closure: function StylesheetParser_variableDeclarationWithoutNamespace_closure(t0, t1) {
      this.$this = t0;
      this.start = t1;
    },
    StylesheetParser_variableDeclarationWithoutNamespace_closure0: function StylesheetParser_variableDeclarationWithoutNamespace_closure0(t0) {
      this.declaration = t0;
    },
    StylesheetParser__declarationOrBuffer_closure: function StylesheetParser__declarationOrBuffer_closure(t0) {
      this.name = t0;
    },
    StylesheetParser__declarationOrBuffer_closure0: function StylesheetParser__declarationOrBuffer_closure0(t0, t1) {
      this._box_0 = t0;
      this.name = t1;
    },
    StylesheetParser__styleRule_closure: function StylesheetParser__styleRule_closure(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.wasInStyleRule = t2;
      _.start = t3;
    },
    StylesheetParser__propertyOrVariableDeclaration_closure: function StylesheetParser__propertyOrVariableDeclaration_closure(t0) {
      this._box_0 = t0;
    },
    StylesheetParser__propertyOrVariableDeclaration_closure0: function StylesheetParser__propertyOrVariableDeclaration_closure0(t0, t1) {
      this._box_0 = t0;
      this.value = t1;
    },
    StylesheetParser__atRootRule_closure: function StylesheetParser__atRootRule_closure(t0) {
      this.query = t0;
    },
    StylesheetParser__atRootRule_closure0: function StylesheetParser__atRootRule_closure0() {
    },
    StylesheetParser__eachRule_closure: function StylesheetParser__eachRule_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.wasInControlDirective = t1;
      _.variables = t2;
      _.list = t3;
    },
    StylesheetParser__functionRule_closure: function StylesheetParser__functionRule_closure(t0, t1, t2) {
      this.name = t0;
      this.$arguments = t1;
      this.precedingComment = t2;
    },
    StylesheetParser__forRule_closure: function StylesheetParser__forRule_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    StylesheetParser__forRule_closure0: function StylesheetParser__forRule_closure0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.wasInControlDirective = t2;
      _.variable = t3;
      _.from = t4;
      _.to = t5;
    },
    StylesheetParser__memberList_closure: function StylesheetParser__memberList_closure(t0, t1, t2) {
      this.$this = t0;
      this.variables = t1;
      this.identifiers = t2;
    },
    StylesheetParser__includeRule_closure: function StylesheetParser__includeRule_closure(t0) {
      this.contentArguments_ = t0;
    },
    StylesheetParser_mediaRule_closure: function StylesheetParser_mediaRule_closure(t0) {
      this.query = t0;
    },
    StylesheetParser__mixinRule_closure: function StylesheetParser__mixinRule_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.name = t1;
      _.$arguments = t2;
      _.precedingComment = t3;
    },
    StylesheetParser_mozDocumentRule_closure: function StylesheetParser_mozDocumentRule_closure(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.name = t2;
      _.value = t3;
    },
    StylesheetParser_supportsRule_closure: function StylesheetParser_supportsRule_closure(t0) {
      this.condition = t0;
    },
    StylesheetParser__whileRule_closure: function StylesheetParser__whileRule_closure(t0, t1, t2) {
      this.$this = t0;
      this.wasInControlDirective = t1;
      this.condition = t2;
    },
    StylesheetParser_unknownAtRule_closure: function StylesheetParser_unknownAtRule_closure(t0, t1) {
      this._box_0 = t0;
      this.name = t1;
    },
    StylesheetParser__expression_resetState: function StylesheetParser__expression_resetState(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.start = t2;
    },
    StylesheetParser__expression_resolveOneOperation: function StylesheetParser__expression_resolveOneOperation(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    StylesheetParser__expression_resolveOperations: function StylesheetParser__expression_resolveOperations(t0, t1) {
      this._box_0 = t0;
      this.resolveOneOperation = t1;
    },
    StylesheetParser__expression_addSingleExpression: function StylesheetParser__expression_addSingleExpression(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.resetState = t2;
      _.resolveOperations = t3;
    },
    StylesheetParser__expression_addOperator: function StylesheetParser__expression_addOperator(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.resolveOneOperation = t2;
    },
    StylesheetParser__expression_resolveSpaceExpressions: function StylesheetParser__expression_resolveSpaceExpressions(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.resolveOperations = t2;
    },
    StylesheetParser__expression_closure: function StylesheetParser__expression_closure(t0) {
      this._3_0 = t0;
    },
    StylesheetParser__expression_closure0: function StylesheetParser__expression_closure0(t0) {
      this._3_0 = t0;
    },
    StylesheetParser__expression_closure1: function StylesheetParser__expression_closure1(t0) {
      this._3_0 = t0;
    },
    StylesheetParser_expressionUntilComma_closure: function StylesheetParser_expressionUntilComma_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser__isHexColor_closure: function StylesheetParser__isHexColor_closure(t0) {
      this._0_0 = t0;
    },
    StylesheetParser__isHexColor_closure0: function StylesheetParser__isHexColor_closure0() {
    },
    StylesheetParser__unicodeRange_closure: function StylesheetParser__unicodeRange_closure() {
    },
    StylesheetParser__unicodeRange_closure0: function StylesheetParser__unicodeRange_closure0() {
    },
    StylesheetParser_identifierLike_closure: function StylesheetParser_identifierLike_closure(t0) {
      this._2_0 = t0;
    },
    StylesheetParser_identifierLike_closure0: function StylesheetParser_identifierLike_closure0(t0) {
      this._2_0 = t0;
    },
    StylesheetParser_namespacedExpression_closure: function StylesheetParser_namespacedExpression_closure(t0, t1) {
      this.$this = t0;
      this.start = t1;
    },
    StylesheetParser_trySpecialFunction_closure: function StylesheetParser_trySpecialFunction_closure() {
    },
    StylesheetParser__tryUrlContents_closure: function StylesheetParser__tryUrlContents_closure(t0) {
      this._0_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure: function StylesheetParser__interpolatedDeclarationValue_closure(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure0: function StylesheetParser__interpolatedDeclarationValue_closure0(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure1: function StylesheetParser__interpolatedDeclarationValue_closure1(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure2: function StylesheetParser__interpolatedDeclarationValue_closure2(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure3: function StylesheetParser__interpolatedDeclarationValue_closure3(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__expressionUntilComparison_closure: function StylesheetParser__expressionUntilComparison_closure(t0) {
      this.$this = t0;
    },
    StylesheetParser__supportsConditionInParens_closure: function StylesheetParser__supportsConditionInParens_closure(t0) {
      this._0_0 = t0;
    },
    StylesheetParser__publicIdentifier_closure: function StylesheetParser__publicIdentifier_closure(t0, t1) {
      this.$this = t0;
      this.start = t1;
    },
    StylesheetNode$_(_stylesheet, importer, canonicalUrl, allUpstream) {
      var t1 = new A.StylesheetNode(_stylesheet, importer, canonicalUrl, allUpstream._1, allUpstream._0, A.LinkedHashSet_LinkedHashSet$_empty(type$.StylesheetNode));
      t1.StylesheetNode$_$4(_stylesheet, importer, canonicalUrl, allUpstream);
      return t1;
    },
    StylesheetGraph: function StylesheetGraph(t0, t1, t2) {
      this._nodes = t0;
      this.importCache = t1;
      this._transitiveModificationTimes = t2;
    },
    StylesheetGraph_modifiedSince_transitiveModificationTime: function StylesheetGraph_modifiedSince_transitiveModificationTime(t0) {
      this.$this = t0;
    },
    StylesheetGraph_modifiedSince_transitiveModificationTime_closure: function StylesheetGraph_modifiedSince_transitiveModificationTime_closure(t0, t1) {
      this.node = t0;
      this.transitiveModificationTime = t1;
    },
    StylesheetGraph__add_closure: function StylesheetGraph__add_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.baseImporter = t2;
      _.baseUrl = t3;
    },
    StylesheetGraph_addCanonical_closure: function StylesheetGraph_addCanonical_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.canonicalUrl = t2;
      _.originalUrl = t3;
    },
    StylesheetGraph_reload_closure: function StylesheetGraph_reload_closure(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.canonicalUrl = t2;
    },
    StylesheetGraph__nodeFor_closure: function StylesheetGraph__nodeFor_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.baseImporter = t2;
      _.baseUrl = t3;
      _.forImport = t4;
    },
    StylesheetGraph__nodeFor_closure0: function StylesheetGraph__nodeFor_closure0(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    StylesheetNode: function StylesheetNode(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._stylesheet = t0;
      _.importer = t1;
      _.canonicalUrl = t2;
      _._upstream = t3;
      _._upstreamImports = t4;
      _._downstream = t5;
    },
    Syntax_forPath(path) {
      var t1,
        _0_0 = A.ParsedPath_ParsedPath$parse(path, $.$get$context().style)._splitExtension$1(1)[1];
      $label0$0: {
        if (".sass" === _0_0) {
          t1 = B.Syntax_Sass_sass;
          break $label0$0;
        }
        if (".css" === _0_0) {
          t1 = B.Syntax_CSS_css;
          break $label0$0;
        }
        t1 = B.Syntax_SCSS_scss;
        break $label0$0;
      }
      return t1;
    },
    Syntax: function Syntax(t0, t1) {
      this._syntax$_name = t0;
      this._name = t1;
    },
    Box: function Box(t0, t1) {
      this._box$_inner = t0;
      this.$ti = t1;
    },
    ModifiableBox: function ModifiableBox(t0, t1) {
      this.value = t0;
      this.$ti = t1;
    },
    LazyFileSpan: function LazyFileSpan(t0) {
      this._builder = t0;
      this._lazy_file_span$_span = null;
    },
    LimitedMapView$blocklist(_map, blocklist, $K, $V) {
      var t2, key,
        t1 = A.LinkedHashSet_LinkedHashSet$_empty($K);
      for (t2 = J.get$iterator$ax(_map.get$keys(_map)); t2.moveNext$0();) {
        key = t2.get$current(t2);
        if (!blocklist.contains$1(0, key))
          t1.add$1(0, key);
      }
      return new A.LimitedMapView(_map, t1, $K._eval$1("@<0>")._bind$1($V)._eval$1("LimitedMapView<1,2>"));
    },
    LimitedMapView: function LimitedMapView(t0, t1, t2) {
      this._limited_map_view$_map = t0;
      this._limited_map_view$_keys = t1;
      this.$ti = t2;
    },
    MapExtensions_get_pairs(_this, $K, $V) {
      return _this.get$entries(_this).map$1$1(0, new A.MapExtensions_get_pairs_closure($K, $V), $K._eval$1("@<0>")._bind$1($V)._eval$1("+(1,2)"));
    },
    MapExtensions_get_pairs_closure: function MapExtensions_get_pairs_closure(t0, t1) {
      this.K = t0;
      this.V = t1;
    },
    MergedMapView$(maps, $K, $V) {
      var t1 = $K._eval$1("@<0>")._bind$1($V);
      t1 = new A.MergedMapView(A.LinkedHashMap_LinkedHashMap$_empty($K, t1._eval$1("Map<1,2>")), t1._eval$1("MergedMapView<1,2>"));
      t1.MergedMapView$1(maps, $K, $V);
      return t1;
    },
    MergedMapView: function MergedMapView(t0, t1) {
      this._mapsByKey = t0;
      this.$ti = t1;
    },
    MultiDirWatcher: function MultiDirWatcher(t0, t1, t2) {
      this._watchers = t0;
      this._group = t1;
      this._poll = t2;
    },
    MultiDirWatcher_watch_closure: function MultiDirWatcher_watch_closure(t0) {
      this._0_0 = t0;
    },
    MultiSpan: function MultiSpan(t0, t1, t2) {
      this._multi_span$_primary = t0;
      this.primaryLabel = t1;
      this.secondarySpans = t2;
    },
    NoSourceMapBuffer: function NoSourceMapBuffer(t0) {
      this._no_source_map_buffer$_buffer = t0;
    },
    PrefixedMapView: function PrefixedMapView(t0, t1, t2) {
      this._prefixed_map_view$_map = t0;
      this._prefix = t1;
      this.$ti = t2;
    },
    _PrefixedKeys: function _PrefixedKeys(t0) {
      this._view = t0;
    },
    _PrefixedKeys_iterator_closure: function _PrefixedKeys_iterator_closure(t0) {
      this.$this = t0;
    },
    PublicMemberMapView: function PublicMemberMapView(t0, t1) {
      this._public_member_map_view$_inner = t0;
      this.$ti = t1;
    },
    SourceMapBuffer: function SourceMapBuffer(t0, t1) {
      var _ = this;
      _._source_map_buffer$_buffer = t0;
      _._entries = t1;
      _._column = _._line = 0;
      _._inSpan = false;
    },
    SourceMapBuffer_buildSourceMap_closure: function SourceMapBuffer_buildSourceMap_closure(t0, t1) {
      this._box_0 = t0;
      this.prefixLength = t1;
    },
    UnprefixedMapView: function UnprefixedMapView(t0, t1, t2) {
      this._unprefixed_map_view$_map = t0;
      this._unprefixed_map_view$_prefix = t1;
      this.$ti = t2;
    },
    _UnprefixedKeys: function _UnprefixedKeys(t0) {
      this._unprefixed_map_view$_view = t0;
    },
    _UnprefixedKeys_iterator_closure: function _UnprefixedKeys_iterator_closure(t0) {
      this.$this = t0;
    },
    _UnprefixedKeys_iterator_closure0: function _UnprefixedKeys_iterator_closure0(t0) {
      this.$this = t0;
    },
    toSentence(iter, conjunction) {
      if (iter.get$length(iter) === 1)
        return J.toString$0$(iter.get$first(iter));
      return A.IterableExtension_get_exceptLast(iter).join$1(0, ", ") + (" " + conjunction + " " + A.S(iter.get$last(iter)));
    },
    indent(string, indentation) {
      return new A.MappedListIterable(A._setArrayType(string.split("\n"), type$.JSArray_String), new A.indent_closure(indentation), type$.MappedListIterable_String_String).join$1(0, "\n");
    },
    pluralize($name, number, plural) {
      if (number === 1)
        return $name;
      if (plural != null)
        return plural;
      return $name + "s";
    },
    trimAscii(string, excludeEscape) {
      var t1,
        start = A._firstNonWhitespace(string);
      if (start == null)
        t1 = "";
      else {
        t1 = A._lastNonWhitespace(string, true);
        t1.toString;
        t1 = B.JSString_methods.substring$2(string, start, t1 + 1);
      }
      return t1;
    },
    trimAsciiRight(string, excludeEscape) {
      var end = A._lastNonWhitespace(string, excludeEscape);
      return end == null ? "" : B.JSString_methods.substring$2(string, 0, end + 1);
    },
    _firstNonWhitespace(string) {
      var t1, i, t2;
      for (t1 = string.length, i = 0; i < t1; ++i) {
        t2 = string.charCodeAt(i);
        if (!(t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12))
          return i;
      }
      return null;
    },
    _lastNonWhitespace(string, excludeEscape) {
      var i, i0, codeUnit;
      for (i = string.length - 1, i0 = i; i0 >= 0; --i0) {
        codeUnit = string.charCodeAt(i0);
        if (!(codeUnit === 32 || codeUnit === 9 || codeUnit === 10 || codeUnit === 13 || codeUnit === 12))
          if (excludeEscape && i0 !== 0 && i0 !== i && codeUnit === 92)
            return i0 + 1;
          else
            return i0;
      }
      return null;
    },
    isPublic(member) {
      var start = member.charCodeAt(0);
      return start !== 45 && start !== 95;
    },
    flattenVertically(iterable, $T) {
      var result,
        t1 = iterable.$ti._eval$1("@<ListIterable.E>")._bind$1($T._eval$1("QueueList<0>"))._eval$1("MappedListIterable<1,2>"),
        queues = A.List_List$of(new A.MappedListIterable(iterable, new A.flattenVertically_closure($T), t1), true, t1._eval$1("ListIterable.E"));
      if (queues.length === 1)
        return B.JSArray_methods.get$first(queues);
      result = A._setArrayType([], $T._eval$1("JSArray<0>"));
      for (; queues.length !== 0;) {
        if (!!queues.fixed$length)
          A.throwExpression(A.UnsupportedError$("removeWhere"));
        B.JSArray_methods._removeWhere$2(queues, new A.flattenVertically_closure0(result, $T), true);
      }
      return result;
    },
    codepointIndexToCodeUnitIndex(string, codepointIndex) {
      var codeUnitIndex, i, codeUnitIndex0;
      for (codeUnitIndex = 0, i = 0; i < codepointIndex; ++i) {
        codeUnitIndex0 = codeUnitIndex + 1;
        codeUnitIndex = string.charCodeAt(codeUnitIndex) >>> 10 === 54 ? codeUnitIndex0 + 1 : codeUnitIndex0;
      }
      return codeUnitIndex;
    },
    codeUnitIndexToCodepointIndex(string, codeUnitIndex) {
      var codepointIndex, i;
      for (codepointIndex = 0, i = 0; i < codeUnitIndex; i = (string.charCodeAt(i) >>> 10 === 54 ? i + 1 : i) + 1)
        ++codepointIndex;
      return codepointIndex;
    },
    frameForSpan(span, member, url) {
      var t2, t3,
        t1 = url == null ? span.get$sourceUrl(span) : url;
      if (t1 == null)
        t1 = $.$get$_noSourceUrl();
      t2 = span.get$start(span);
      t2 = t2.file.getLine$1(t2.offset);
      t3 = span.get$start(span);
      return new A.Frame(t1, t2 + 1, t3.file.getColumn$1(t3.offset) + 1, member);
    },
    declarationName(span) {
      var text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(span.file._decodedChars, span._file$_start, span._end), 0, null);
      return A.trimAsciiRight(B.JSString_methods.substring$2(text, 0, B.JSString_methods.indexOf$1(text, ":")), false);
    },
    unvendor($name) {
      var i,
        t1 = $name.length;
      if (t1 < 2)
        return $name;
      if ($name.charCodeAt(0) !== 45)
        return $name;
      if ($name.charCodeAt(1) === 45)
        return $name;
      for (i = 2; i < t1; ++i)
        if ($name.charCodeAt(i) === 45)
          return B.JSString_methods.substring$1($name, i + 1);
      return $name;
    },
    equalsIgnoreCase(string1, string2) {
      var t1, i;
      if (string1 === string2)
        return true;
      if (string1 == null || false)
        return false;
      t1 = string1.length;
      if (t1 !== string2.length)
        return false;
      for (i = 0; i < t1; ++i)
        if (!A.characterEqualsIgnoreCase(string1.charCodeAt(i), string2.charCodeAt(i)))
          return false;
      return true;
    },
    startsWithIgnoreCase(string, prefix) {
      var i,
        t1 = prefix.length;
      if (string.length < t1)
        return false;
      for (i = 0; i < t1; ++i)
        if (!A.characterEqualsIgnoreCase(string.charCodeAt(i), prefix.charCodeAt(i)))
          return false;
      return true;
    },
    mapInPlace(list, $function) {
      var i;
      for (i = 0; i < list.length; ++i)
        list[i] = $function.call$1(list[i]);
    },
    longestCommonSubsequence(list1, list2, select, $T) {
      var t1, _i, selections, i, i0, j, selection, j0,
        _length = list1.get$length(list1) + 1,
        lengths = J.JSArray_JSArray$allocateFixed(_length, type$.List_int);
      for (t1 = type$.int, _i = 0; _i < _length; ++_i)
        lengths[_i] = A.List_List$filled(((list2._queue_list$_tail - list2._queue_list$_head & J.get$length$asx(list2._queue_list$_table) - 1) >>> 0) + 1, 0, false, t1);
      _length = list1.get$length(list1);
      selections = J.JSArray_JSArray$allocateFixed(_length, $T._eval$1("List<0?>"));
      for (t1 = $T._eval$1("0?"), _i = 0; _i < _length; ++_i)
        selections[_i] = A.List_List$filled((list2._queue_list$_tail - list2._queue_list$_head & J.get$length$asx(list2._queue_list$_table) - 1) >>> 0, null, false, t1);
      for (i = 0; i < (list1._queue_list$_tail - list1._queue_list$_head & J.get$length$asx(list1._queue_list$_table) - 1) >>> 0; i = i0)
        for (i0 = i + 1, j = 0; j < (list2._queue_list$_tail - list2._queue_list$_head & J.get$length$asx(list2._queue_list$_table) - 1) >>> 0; j = j0) {
          selection = select.call$2(list1.$index(0, i), list2.$index(0, j));
          selections[i][j] = selection;
          t1 = lengths[i0];
          j0 = j + 1;
          t1[j0] = selection == null ? Math.max(t1[j], lengths[i][j0]) : lengths[i][j] + 1;
        }
      return new A.longestCommonSubsequence_backtrack(selections, lengths, $T).call$2(list1.get$length(list1) - 1, list2.get$length(list2) - 1);
    },
    removeFirstWhere(list, test, orElse) {
      var i;
      for (i = 0; i < list.length; ++i) {
        if (!test.call$1(list[i]))
          continue;
        B.JSArray_methods.removeAt$1(list, i);
        return;
      }
      orElse.call$0();
    },
    mapAddAll2(destination, source, K1, K2, $V) {
      source.forEach$1(0, new A.mapAddAll2_closure(destination, K1, K2, $V));
    },
    setAll(map, keys, value) {
      var t1;
      for (t1 = J.get$iterator$ax(keys); t1.moveNext$0();)
        map.$indexSet(0, t1.get$current(t1), value);
    },
    rotateSlice(list, start, end) {
      var i, next,
        element = list.$index(0, end - 1);
      for (i = start; i < end; ++i, element = next) {
        next = list.$index(0, i);
        list.$indexSet(0, i, element);
      }
    },
    mapAsync(iterable, callback, $E, $F) {
      return A.mapAsync$body(iterable, callback, $E, $F, $F._eval$1("Iterable<0>"));
    },
    mapAsync$body(iterable, callback, $E, $F, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, t2, _i, t1, $async$temp1;
      var $async$mapAsync = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = A._setArrayType([], $F._eval$1("JSArray<0>"));
              t2 = iterable.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$temp1 = t1;
              $async$goto = 6;
              return A._asyncAwait(callback.call$1(iterable[_i]), $async$mapAsync);
            case 6:
              // returning from await.
              $async$temp1.push($async$result);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$mapAsync, $async$completer);
    },
    putIfAbsentAsync(map, key, ifAbsent, $K, $V) {
      return A.putIfAbsentAsync$body(map, key, ifAbsent, $K, $V, $V);
    },
    putIfAbsentAsync$body(map, key, ifAbsent, $K, $V, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, t1, value;
      var $async$putIfAbsentAsync = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (map.containsKey$1(key)) {
                t1 = map.$index(0, key);
                $async$returnValue = t1 == null ? $V._as(t1) : t1;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 3;
              return A._asyncAwait(ifAbsent.call$0(), $async$putIfAbsentAsync);
            case 3:
              // returning from await.
              value = $async$result;
              map.$indexSet(0, key, value);
              $async$returnValue = value;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$putIfAbsentAsync, $async$completer);
    },
    copyMapOfMap(map, K1, K2, $V) {
      var t3, key, child,
        t1 = K2._eval$1("@<0>")._bind$1($V)._eval$1("Map<1,2>"),
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(K1, t1);
      for (t1 = A.MapExtensions_get_pairs(map, K1, t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        key = t3._0;
        child = t3._1;
        t3 = A.LinkedHashMap_LinkedHashMap(null, null, null, K2, $V);
        t3.addAll$1(0, child);
        t2.$indexSet(0, key, t3);
      }
      return t2;
    },
    copyMapOfList(map, $K, $E) {
      var t3, key, list,
        t1 = $E._eval$1("List<0>"),
        t2 = A.LinkedHashMap_LinkedHashMap$_empty($K, t1);
      for (t1 = A.MapExtensions_get_pairs(map, $K, t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        key = t3._0;
        list = t3._1;
        t2.$indexSet(0, key, J.toList$0$ax(list));
      }
      return t2;
    },
    consumeEscapedCharacter(scanner) {
      var _1_0, value, i, next, t1;
      scanner.expectChar$1(92);
      _1_0 = scanner.peekChar$0();
      if (_1_0 == null)
        return 65533;
      if (_1_0 === 10 || _1_0 === 13 || _1_0 === 12)
        scanner.error$1(0, "Expected escape sequence.");
      if (A.CharacterExtension_get_isHex(_1_0)) {
        for (value = 0, i = 0; i < 6; ++i) {
          next = scanner.peekChar$0();
          if (next != null) {
            if (!(next >= 48 && next <= 57))
              if (!(next >= 97 && next <= 102))
                t1 = next >= 65 && next <= 70;
              else
                t1 = true;
            else
              t1 = true;
            t1 = !t1;
          } else
            t1 = true;
          if (t1)
            break;
          value = (value << 4 >>> 0) + A.asHex(scanner.readChar$0());
        }
        t1 = scanner.peekChar$0();
        if (t1 === 32 || t1 === 9 || t1 === 10 || t1 === 13 || t1 === 12)
          scanner.readChar$0();
        $label0$1: {
          if (0 !== value)
            t1 = value >= 55296 && value <= 57343 || value >= 1114111;
          else
            t1 = true;
          if (t1) {
            t1 = 65533;
            break $label0$1;
          }
          t1 = value;
          break $label0$1;
        }
        return t1;
      }
      return scanner.readChar$0();
    },
    throwWithTrace(error, originalError, trace) {
      var t1 = A.getTrace(originalError);
      A.attachTrace(error, t1 == null ? trace : t1);
      throw A.wrapException(error);
    },
    attachTrace(error, trace) {
      var t1;
      if (trace.toString$0(0).length === 0)
        return;
      t1 = $.$get$_traces();
      A.Expando__checkType(error);
      if (t1._jsWeakMap.get(error) == null)
        t1.$indexSet(0, error, trace);
    },
    getTrace(error) {
      var t1;
      if (typeof error == "string" || typeof error == "number" || A._isBool(error))
        t1 = null;
      else {
        t1 = $.$get$_traces();
        A.Expando__checkType(error);
        t1 = t1._jsWeakMap.get(error);
      }
      return t1;
    },
    indent_closure: function indent_closure(t0) {
      this.indentation = t0;
    },
    flattenVertically_closure: function flattenVertically_closure(t0) {
      this.T = t0;
    },
    flattenVertically_closure0: function flattenVertically_closure0(t0, t1) {
      this.result = t0;
      this.T = t1;
    },
    longestCommonSubsequence_backtrack: function longestCommonSubsequence_backtrack(t0, t1, t2) {
      this.selections = t0;
      this.lengths = t1;
      this.T = t2;
    },
    mapAddAll2_closure: function mapAddAll2_closure(t0, t1, t2, t3) {
      var _ = this;
      _.destination = t0;
      _.K1 = t1;
      _.K2 = t2;
      _.V = t3;
    },
    SassApiValue_assertSelector(_this, allowParent, $name) {
      var error, stackTrace, t1, exception,
        string = _this._selectorString$1($name);
      try {
        t1 = A.SelectorList_SelectorList$parse(string, allowParent, true, null, null);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassFormatException._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = B.JSString_methods.replaceFirst$2(J.toString$0$(error), "Error: ", "");
          A.throwWithTrace(new A.SassScriptException($name == null ? t1 : "$" + $name + ": " + t1), error, stackTrace);
        } else
          throw exception;
      }
    },
    SassApiValue_assertCompoundSelector(_this, $name) {
      var error, stackTrace, t1, exception,
        allowParent = false,
        string = _this._selectorString$1($name);
      try {
        t1 = A.SelectorParser$(string, allowParent, true, null, null, null).parseCompoundSelector$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassFormatException._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = B.JSString_methods.replaceFirst$2(J.toString$0$(error), "Error: ", "");
          A.throwWithTrace(new A.SassScriptException("$" + $name + ": " + t1), error, stackTrace);
        } else
          throw exception;
      }
    },
    Value: function Value() {
    },
    SassArgumentList$(contents, keywords, separator) {
      var t1 = type$.Value;
      t1 = new A.SassArgumentList(A.ConstantMap_ConstantMap$from(keywords, type$.String, t1), A.List_List$unmodifiable(contents, t1), separator, false);
      t1.SassList$3$brackets(contents, separator, false);
      return t1;
    },
    SassArgumentList: function SassArgumentList(t0, t1, t2, t3) {
      var _ = this;
      _._keywords = t0;
      _._wereKeywordsAccessed = false;
      _._list$_contents = t1;
      _._separator = t2;
      _._hasBrackets = t3;
    },
    SassBoolean: function SassBoolean(t0) {
      this.value = t0;
    },
    SassCalculation_calc(argument) {
      var value, t1,
        _0_0 = A.SassCalculation__simplify(argument);
      $label0$0: {
        if (_0_0 instanceof A.SassNumber) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1) {
          t1 = value;
          break $label0$0;
        }
        if (_0_0 instanceof A.SassCalculation) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1) {
          t1 = value;
          break $label0$0;
        }
        t1 = new A.SassCalculation("calc", A.List_List$unmodifiable([_0_0], type$.Object));
        break $label0$0;
      }
      return t1;
    },
    SassCalculation_min($arguments) {
      var minimum, _i, arg, t2,
        args = A.List_List$unmodifiable(new A.MappedListIterable($arguments, A.calculation_SassCalculation__simplify$closure(), A._arrayInstanceType($arguments)._eval$1("MappedListIterable<1,@>")), type$.Object),
        t1 = args.length;
      if (t1 === 0)
        throw A.wrapException(A.ArgumentError$("min() must have at least one argument.", null));
      for (minimum = null, _i = 0; _i < t1; ++_i) {
        arg = args[_i];
        if (arg instanceof A.SassNumber)
          t2 = minimum != null && !minimum.isComparableTo$1(arg);
        else
          t2 = true;
        if (t2) {
          minimum = null;
          break;
        } else if (minimum == null || minimum.greaterThan$1(arg).value)
          minimum = arg;
      }
      if (minimum != null)
        return minimum;
      A.SassCalculation__verifyCompatibleNumbers(args);
      return new A.SassCalculation("min", args);
    },
    SassCalculation_max($arguments) {
      var maximum, _i, arg, t2,
        args = A.List_List$unmodifiable(new A.MappedListIterable($arguments, A.calculation_SassCalculation__simplify$closure(), A._arrayInstanceType($arguments)._eval$1("MappedListIterable<1,@>")), type$.Object),
        t1 = args.length;
      if (t1 === 0)
        throw A.wrapException(A.ArgumentError$("max() must have at least one argument.", null));
      for (maximum = null, _i = 0; _i < t1; ++_i) {
        arg = args[_i];
        if (arg instanceof A.SassNumber)
          t2 = maximum != null && !maximum.isComparableTo$1(arg);
        else
          t2 = true;
        if (t2) {
          maximum = null;
          break;
        } else if (maximum == null || maximum.lessThan$1(arg).value)
          maximum = arg;
      }
      if (maximum != null)
        return maximum;
      A.SassCalculation__verifyCompatibleNumbers(args);
      return new A.SassCalculation("max", args);
    },
    SassCalculation_hypot($arguments) {
      var first, subtotal, i, number, value, t2, t3,
        args = A.List_List$unmodifiable(new A.MappedListIterable($arguments, A.calculation_SassCalculation__simplify$closure(), A._arrayInstanceType($arguments)._eval$1("MappedListIterable<1,@>")), type$.Object),
        t1 = args.length;
      if (t1 === 0)
        throw A.wrapException(A.ArgumentError$("hypot() must have at least one argument.", null));
      A.SassCalculation__verifyCompatibleNumbers(args);
      first = B.JSArray_methods.get$first(args);
      if (!(first instanceof A.SassNumber) || first.hasUnit$1("%"))
        return new A.SassCalculation("hypot", args);
      for (subtotal = 0, i = 0; i < t1;) {
        number = args[i];
        if (!(number instanceof A.SassNumber) || !number.hasCompatibleUnits$1(first))
          return new A.SassCalculation("hypot", args);
        ++i;
        value = number.convertValueToMatch$3(first, "numbers[" + i + "]", "numbers[1]");
        subtotal += value * value;
      }
      t1 = Math.sqrt(subtotal);
      t2 = J.getInterceptor$x(first);
      t3 = t2.get$numeratorUnits(first);
      return A.SassNumber_SassNumber$withUnits(t1, t2.get$denominatorUnits(first), t3);
    },
    SassCalculation_abs(argument) {
      var t1, t2;
      argument = A.SassCalculation__simplify(argument);
      if (!(argument instanceof A.SassNumber))
        return new A.SassCalculation("abs", A._setArrayType([argument], type$.JSArray_Object));
      if (argument.hasUnit$1("%")) {
        t1 = argument.toString$0(0);
        t2 = argument.toString$0(0);
        A.EvaluationContext_current().warn$2(0, string$.Passinp + t1 + ")\nTo emit a CSS abs() now: abs(#{" + t2 + string$.x7d__Mor, B.Deprecation_043);
      }
      return A.SassNumber_SassNumber(Math.abs(argument._number$_value), null).coerceToMatch$1(argument);
    },
    SassCalculation_exp(argument) {
      argument = A.SassCalculation__simplify(argument);
      if (!(argument instanceof A.SassNumber))
        return new A.SassCalculation("exp", A._setArrayType([argument], type$.JSArray_Object));
      argument.assertNoUnits$0();
      return A.pow0(A.SassNumber_SassNumber(2.718281828459045, null), argument);
    },
    SassCalculation_sign(argument) {
      var _0_2, t1, t2, arg;
      argument = A.SassCalculation__simplify(argument);
      _0_2 = A._InitializedCell$(new A.SassCalculation_sign_closure(argument));
      $label0$0: {
        t1 = argument instanceof A.SassNumber;
        if (t1)
          t2 = isNaN(_0_2._readFinal$0()) || 0 === _0_2._readFinal$0();
        else
          t2 = false;
        if (t2) {
          t1 = argument;
          break $label0$0;
        }
        if (t1) {
          t1 = !argument.hasUnit$1("%");
          arg = argument;
        } else {
          arg = null;
          t1 = false;
        }
        if (t1) {
          t1 = A.SassNumber_SassNumber(J.get$sign$in(arg._number$_value), null).coerceToMatch$1(argument);
          break $label0$0;
        }
        t1 = new A.SassCalculation("sign", A._setArrayType([argument], type$.JSArray_Object));
        break $label0$0;
      }
      return t1;
    },
    SassCalculation_clamp(min, value, max) {
      var t1, args;
      if (value == null && max != null)
        throw A.wrapException(A.ArgumentError$("If value is null, max must also be null.", null));
      min = A.SassCalculation__simplify(min);
      value = A.NullableExtension_andThen(value, A.calculation_SassCalculation__simplify$closure());
      max = A.NullableExtension_andThen(max, A.calculation_SassCalculation__simplify$closure());
      if (min instanceof A.SassNumber && value instanceof A.SassNumber && max instanceof A.SassNumber && min.hasCompatibleUnits$1(value) && min.hasCompatibleUnits$1(max)) {
        if (value.lessThanOrEquals$1(min).value)
          return min;
        if (value.greaterThanOrEquals$1(max).value)
          return max;
        return value;
      }
      t1 = [min];
      if (value != null)
        t1.push(value);
      if (max != null)
        t1.push(max);
      args = A.List_List$unmodifiable(t1, type$.Object);
      A.SassCalculation__verifyCompatibleNumbers(args);
      A.SassCalculation__verifyLength(args, 3);
      return new A.SassCalculation("clamp", args);
    },
    SassCalculation_pow(base, exponent) {
      var t1 = A._setArrayType([base], type$.JSArray_Object);
      if (exponent != null)
        t1.push(exponent);
      A.SassCalculation__verifyLength(t1, 2);
      base = A.SassCalculation__simplify(base);
      exponent = A.NullableExtension_andThen(exponent, A.calculation_SassCalculation__simplify$closure());
      if (!(base instanceof A.SassNumber) || !(exponent instanceof A.SassNumber))
        return new A.SassCalculation("pow", t1);
      base.assertNoUnits$0();
      exponent.assertNoUnits$0();
      return A.pow0(base, exponent);
    },
    SassCalculation_log(number, base) {
      var t1, t2;
      number = A.SassCalculation__simplify(number);
      base = A.NullableExtension_andThen(base, A.calculation_SassCalculation__simplify$closure());
      t1 = A._setArrayType([number], type$.JSArray_Object);
      t2 = base != null;
      if (t2)
        t1.push(base);
      if (number instanceof A.SassNumber)
        t2 = t2 && !(base instanceof A.SassNumber);
      else
        t2 = true;
      if (t2)
        return new A.SassCalculation("log", t1);
      number.assertNoUnits$0();
      if (base instanceof A.SassNumber) {
        base.assertNoUnits$0();
        return A.log(number, base);
      }
      return A.log(number, null);
    },
    SassCalculation_atan2(y, x) {
      var t1;
      y = A.SassCalculation__simplify(y);
      x = A.NullableExtension_andThen(x, A.calculation_SassCalculation__simplify$closure());
      t1 = A._setArrayType([y], type$.JSArray_Object);
      if (x != null)
        t1.push(x);
      A.SassCalculation__verifyLength(t1, 2);
      A.SassCalculation__verifyCompatibleNumbers(t1);
      if (!(y instanceof A.SassNumber) || !(x instanceof A.SassNumber) || y.hasUnit$1("%") || x.hasUnit$1("%") || !y.hasCompatibleUnits$1(x))
        return new A.SassCalculation("atan2", t1);
      return A.SassNumber_SassNumber$withUnits(Math.atan2(y._number$_value, x.convertValueToMatch$3(y, "x", "y")) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    SassCalculation_rem(dividend, modulus) {
      var t1, result;
      dividend = A.SassCalculation__simplify(dividend);
      modulus = A.NullableExtension_andThen(modulus, A.calculation_SassCalculation__simplify$closure());
      t1 = A._setArrayType([dividend], type$.JSArray_Object);
      if (modulus != null)
        t1.push(modulus);
      A.SassCalculation__verifyLength(t1, 2);
      A.SassCalculation__verifyCompatibleNumbers(t1);
      if (!(dividend instanceof A.SassNumber) || !(modulus instanceof A.SassNumber) || !dividend.hasCompatibleUnits$1(modulus))
        return new A.SassCalculation("rem", t1);
      result = dividend.modulo$1(modulus);
      t1 = modulus._number$_value;
      if (A.DoubleWithSignedZero_get_signIncludingZero(t1) !== A.DoubleWithSignedZero_get_signIncludingZero(dividend._number$_value)) {
        if (t1 == 1 / 0 || t1 == -1 / 0)
          return dividend;
        if (result._number$_value === 0)
          return result.unaryMinus$0();
        return result.minus$1(modulus);
      }
      return result;
    },
    SassCalculation_mod(dividend, modulus) {
      var t1;
      dividend = A.SassCalculation__simplify(dividend);
      modulus = A.NullableExtension_andThen(modulus, A.calculation_SassCalculation__simplify$closure());
      t1 = A._setArrayType([dividend], type$.JSArray_Object);
      if (modulus != null)
        t1.push(modulus);
      A.SassCalculation__verifyLength(t1, 2);
      A.SassCalculation__verifyCompatibleNumbers(t1);
      if (!(dividend instanceof A.SassNumber) || !(modulus instanceof A.SassNumber) || !dividend.hasCompatibleUnits$1(modulus))
        return new A.SassCalculation("mod", t1);
      return dividend.modulo$1(modulus);
    },
    SassCalculation_round(strategyOrNumber, numberOrStep, step) {
      var number, t1, t2, strategy, rest, _null = null, _s5_ = "round",
        _0_0 = new A._Record_3(A.SassCalculation__simplify(strategyOrNumber), A.NullableExtension_andThen(numberOrStep, A.calculation_SassCalculation__simplify$closure()), A.NullableExtension_andThen(step, A.calculation_SassCalculation__simplify$closure())),
        _0_1 = A._InitializedCell$(new A.SassCalculation_round_closure(_0_0)),
        _0_2 = A._InitializedCell$(new A.SassCalculation_round_closure0(_0_0)),
        _0_4 = A._InitializedCell$(new A.SassCalculation_round_closure1(_0_2)),
        _0_5 = A._InitializedCell$(new A.SassCalculation_round_closure2(_0_0)),
        _0_6 = A._InitializedCell$(new A.SassCalculation_round_closure3(_0_5)),
        _0_8 = A._InitializedCell$(new A.SassCalculation_round_closure4(_0_1)),
        _0_10 = A._InitializedCell$(new A.SassCalculation_round_closure5(_0_8)),
        _0_12 = A._InitializedCell$(new A.SassCalculation_round_closure6(_0_8)),
        _0_14 = A._InitializedCell$(new A.SassCalculation_round_closure7(_0_8)),
        _0_16 = A._InitializedCell$(new A.SassCalculation_round_closure8(_0_8));
      if (_0_1._readFinal$0() instanceof A.SassNumber) {
        number = _0_1._readFinal$0();
        t1 = _0_4._readFinal$0() && _0_6._readFinal$0();
      } else {
        number = _null;
        t1 = false;
      }
      if (t1) {
        t1 = B.JSNumber_methods.round$0(number._number$_value);
        t2 = number.get$numeratorUnits(number);
        return A.SassNumber_SassNumber$withUnits(t1, number.get$denominatorUnits(number), t2);
      }
      if (_0_1._readFinal$0() instanceof A.SassNumber) {
        number = _0_1._readFinal$0();
        if (_0_2._readFinal$0() instanceof A.SassNumber) {
          step = _0_2._readFinal$0();
          t1 = _0_6._readFinal$0() && !number.hasCompatibleUnits$1(step);
        } else {
          step = _null;
          t1 = false;
        }
      } else {
        step = _null;
        number = step;
        t1 = false;
      }
      if (t1) {
        t1 = type$.JSArray_Object;
        A.SassCalculation__verifyCompatibleNumbers(A._setArrayType([number, step], t1));
        return new A.SassCalculation(_s5_, A._setArrayType([number, step], t1));
      }
      if (_0_1._readFinal$0() instanceof A.SassNumber) {
        number = _0_1._readFinal$0();
        if (_0_2._readFinal$0() instanceof A.SassNumber) {
          step = _0_2._readFinal$0();
          t1 = _0_6._readFinal$0();
          t1 = t1;
        } else {
          step = _null;
          t1 = false;
        }
      } else {
        step = _null;
        number = step;
        t1 = false;
      }
      if (t1) {
        A.SassCalculation__verifyCompatibleNumbers(A._setArrayType([number, step], type$.JSArray_Object));
        return A.SassCalculation__roundWithStep("nearest", number, step);
      }
      if (_0_1._readFinal$0() instanceof A.SassString)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) {
          strategy = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.SassNumber) {
            number = _0_2._readFinal$0();
            if (_0_5._readFinal$0() instanceof A.SassNumber) {
              step = _0_5._readFinal$0();
              t1 = !number.hasCompatibleUnits$1(step);
            } else {
              step = _null;
              t1 = false;
            }
          } else {
            step = _null;
            number = step;
            t1 = false;
          }
        } else {
          step = _null;
          number = step;
          strategy = number;
          t1 = false;
        }
      else {
        step = _null;
        number = step;
        strategy = number;
        t1 = false;
      }
      if (t1) {
        t1 = type$.JSArray_Object;
        A.SassCalculation__verifyCompatibleNumbers(A._setArrayType([number, step], t1));
        return new A.SassCalculation(_s5_, A._setArrayType([strategy, number, step], t1));
      }
      if (_0_1._readFinal$0() instanceof A.SassString)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) {
          strategy = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.SassNumber) {
            number = _0_2._readFinal$0();
            if (_0_5._readFinal$0() instanceof A.SassNumber) {
              step = _0_5._readFinal$0();
              t1 = true;
            } else {
              step = _null;
              t1 = false;
            }
          } else {
            step = _null;
            number = step;
            t1 = false;
          }
        } else {
          step = _null;
          number = step;
          strategy = number;
          t1 = false;
        }
      else {
        step = _null;
        number = step;
        strategy = number;
        t1 = false;
      }
      if (t1) {
        A.SassCalculation__verifyCompatibleNumbers(A._setArrayType([number, step], type$.JSArray_Object));
        return A.SassCalculation__roundWithStep(strategy._string$_text, number, step);
      }
      if (_0_1._readFinal$0() instanceof A.SassString)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) {
          strategy = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.SassString) {
            rest = _0_2._readFinal$0();
            t1 = _0_6._readFinal$0();
            t1 = t1;
          } else {
            rest = _null;
            t1 = false;
          }
        } else {
          rest = _null;
          strategy = rest;
          t1 = false;
        }
      else {
        rest = _null;
        strategy = rest;
        t1 = false;
      }
      if (t1)
        return new A.SassCalculation(_s5_, A._setArrayType([strategy, rest], type$.JSArray_Object));
      if (_0_1._readFinal$0() instanceof A.SassString)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0())
          t1 = _0_2._readFinal$0() != null && true && _0_6._readFinal$0();
        else
          t1 = false;
      else
        t1 = false;
      if (t1)
        throw A.wrapException(A.SassScriptException$(string$.If_str, _null));
      if (_0_1._readFinal$0() instanceof A.SassString)
        t1 = (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) && _0_4._readFinal$0() && _0_6._readFinal$0();
      else
        t1 = false;
      if (t1)
        throw A.wrapException(A.SassScriptException$(string$.Number, _null));
      if (_0_1._readFinal$0() instanceof A.SassString) {
        rest = _0_1._readFinal$0();
        t1 = _0_4._readFinal$0() && _0_6._readFinal$0();
      } else {
        rest = _null;
        t1 = false;
      }
      if (t1)
        return new A.SassCalculation(_s5_, A._setArrayType([rest], type$.JSArray_Object));
      number = _0_1._readFinal$0();
      if (_0_4._readFinal$0() && _0_6._readFinal$0())
        throw A.wrapException(A.SassScriptException$("Single argument " + A.S(number) + " expected to be simplifiable.", _null));
      number = _0_1._readFinal$0();
      if (_0_2._readFinal$0() != null) {
        step = _0_2._readFinal$0();
        t1 = true;
      } else {
        step = _null;
        t1 = false;
      }
      t1 = t1 && _0_6._readFinal$0();
      if (t1)
        return new A.SassCalculation(_s5_, A._setArrayType([number, step], type$.JSArray_Object));
      if (_0_1._readFinal$0() instanceof A.SassString)
        t1 = _0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0();
      else
        t1 = false;
      if (!t1)
        t1 = _0_1._readFinal$0() instanceof A.SassString && _0_1._readFinal$0().get$isVar();
      else
        t1 = true;
      if (t1) {
        strategy = _0_1._readFinal$0();
        if (_0_2._readFinal$0() != null) {
          number = _0_2._readFinal$0();
          t1 = true;
        } else {
          number = _null;
          t1 = false;
        }
        if (t1)
          if (_0_5._readFinal$0() != null) {
            step = _0_5._readFinal$0();
            t1 = true;
          } else {
            step = _null;
            t1 = false;
          }
        else {
          step = _null;
          t1 = false;
        }
      } else {
        step = _null;
        number = step;
        strategy = number;
        t1 = false;
      }
      if (t1)
        return new A.SassCalculation(_s5_, A._setArrayType([strategy, number, step], type$.JSArray_Object));
      if (_0_2._readFinal$0() != null && true && _0_5._readFinal$0() != null && true)
        throw A.wrapException(A.SassScriptException$(A.S(strategyOrNumber) + string$.x20must_b, _null));
      if (_0_4._readFinal$0())
        _0_5._readFinal$0();
      t1 = A.SassScriptException$("Invalid parameters.", _null);
      throw A.wrapException(t1);
    },
    SassCalculation_operateInternal(operator, left, right, inLegacySassFunction, simplify) {
      var t1;
      if (!simplify)
        return new A.CalculationOperation(operator, left, right);
      left = A.SassCalculation__simplify(left);
      right = A.SassCalculation__simplify(right);
      if (B.CalculationOperator_IyK === operator || B.CalculationOperator_2bx === operator) {
        if (left instanceof A.SassNumber)
          if (right instanceof A.SassNumber)
            t1 = inLegacySassFunction ? left.isComparableTo$1(right) : left.hasCompatibleUnits$1(right);
          else
            t1 = false;
        else
          t1 = false;
        if (t1)
          return operator === B.CalculationOperator_IyK ? left.plus$1(right) : left.minus$1(right);
        A.SassCalculation__verifyCompatibleNumbers(A._setArrayType([left, right], type$.JSArray_Object));
        if (right instanceof A.SassNumber) {
          t1 = right._number$_value;
          t1 = t1 < 0 && !A.fuzzyEquals(t1, 0);
        } else
          t1 = false;
        if (t1) {
          right = right.times$1(A.SassNumber_SassNumber(-1, null));
          operator = operator === B.CalculationOperator_IyK ? B.CalculationOperator_2bx : B.CalculationOperator_IyK;
        }
        return new A.CalculationOperation(operator, left, right);
      } else if (left instanceof A.SassNumber && right instanceof A.SassNumber)
        return operator === B.CalculationOperator_jFr ? left.times$1(right) : left.dividedBy$1(right);
      else
        return new A.CalculationOperation(operator, left, right);
    },
    SassCalculation__roundWithStep(strategy, number, step) {
      var t1, t2, _0_0, _0_2, _0_1, _0_6, _0_8, _0_9, _0_11, _0_13, stepWithNumberUnit;
      if (!A.LinkedHashSet_LinkedHashSet$_literal(["nearest", "up", "down", "to-zero"], type$.String).contains$1(0, strategy))
        throw A.wrapException(A.ArgumentError$(strategy + string$.x20must_b, null));
      t1 = number._number$_value;
      if (t1 == 1 / 0 || t1 == -1 / 0) {
        t2 = step._number$_value;
        t2 = t2 == 1 / 0 || t2 == -1 / 0;
      } else
        t2 = false;
      if (!t2) {
        t2 = step._number$_value;
        t2 = t2 === 0 || isNaN(t1) || isNaN(t2);
      } else
        t2 = true;
      if (t2) {
        t1 = number.get$numeratorUnits(number);
        return A.SassNumber_SassNumber$withUnits(0 / 0, number.get$denominatorUnits(number), t1);
      }
      if (t1 == 1 / 0 || t1 == -1 / 0)
        return number;
      t2 = step._number$_value;
      if (t2 == 1 / 0 || t2 == -1 / 0) {
        _0_0 = new A._Record_2(strategy, t1);
        _0_2 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure(_0_0));
        _0_1 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure0(_0_0));
        _0_6 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure1(_0_1));
        _0_8 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure2(_0_1));
        _0_9 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure3(_0_2));
        _0_11 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure4(_0_1));
        _0_13 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure5(_0_1));
        $label0$0: {
          if (0 === _0_2._readFinal$0()) {
            t1 = number;
            break $label0$0;
          }
          if ((_0_6._readFinal$0() || _0_8._readFinal$0()) && _0_9._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits(0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_6._readFinal$0() || _0_8._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits(-0.0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_11._readFinal$0() && _0_9._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits(1 / 0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_11._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits(-0.0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_13._readFinal$0() && _0_2._readFinal$0() < 0) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits(-1 / 0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_13._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits(0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          t1 = A.throwExpression(A.UnsupportedError$("Invalid argument: " + strategy + "."));
        }
        return t1;
      }
      stepWithNumberUnit = step.convertValueToMatch$1(number);
      $label1$1: {
        if ("nearest" === strategy) {
          t1 = B.JSNumber_methods.round$0(t1 / stepWithNumberUnit);
          t2 = number.get$numeratorUnits(number);
          t2 = A.SassNumber_SassNumber$withUnits(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
          t1 = t2;
          break $label1$1;
        }
        if ("up" === strategy) {
          t1 /= stepWithNumberUnit;
          t1 = t2 < 0 ? B.JSNumber_methods.floor$0(t1) : B.JSNumber_methods.ceil$0(t1);
          t2 = number.get$numeratorUnits(number);
          t2 = A.SassNumber_SassNumber$withUnits(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
          t1 = t2;
          break $label1$1;
        }
        if ("down" === strategy) {
          t1 /= stepWithNumberUnit;
          t1 = t2 < 0 ? B.JSNumber_methods.ceil$0(t1) : B.JSNumber_methods.floor$0(t1);
          t2 = number.get$numeratorUnits(number);
          t2 = A.SassNumber_SassNumber$withUnits(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
          t1 = t2;
          break $label1$1;
        }
        if ("to-zero" === strategy) {
          t2 = t1 / stepWithNumberUnit;
          if (t1 < 0) {
            t1 = B.JSNumber_methods.ceil$0(t2);
            t2 = number.get$numeratorUnits(number);
            t2 = A.SassNumber_SassNumber$withUnits(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
            t1 = t2;
          } else {
            t1 = B.JSNumber_methods.floor$0(t2);
            t2 = number.get$numeratorUnits(number);
            t2 = A.SassNumber_SassNumber$withUnits(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
            t1 = t2;
          }
          break $label1$1;
        }
        t1 = number.get$numeratorUnits(number);
        t1 = A.SassNumber_SassNumber$withUnits(0 / 0, number.get$denominatorUnits(number), t1);
        break $label1$1;
      }
      return t1;
    },
    SassCalculation__simplify(arg) {
      var t1, text, t2, value, _null = null,
        _s32_ = " can't be used in a calculation.",
        _0_11 = A._InitializedCell$(new A.SassCalculation__simplify_closure(arg)),
        _0_12 = A._InitializedCell$(new A.SassCalculation__simplify_closure0(arg)),
        _0_15 = A._InitializedCell$(new A.SassCalculation__simplify_closure1(_0_12)),
        _0_16 = A._InitializedCell$(new A.SassCalculation__simplify_closure2(_0_12));
      $label0$0: {
        if (arg instanceof A.SassNumber || arg instanceof A.CalculationOperation) {
          t1 = arg;
          break $label0$0;
        }
        t1 = arg instanceof A.SassString;
        if (t1 && !arg._hasQuotes) {
          t1 = arg;
          break $label0$0;
        }
        if (t1)
          A.throwExpression(A.SassScriptException$("Quoted string " + arg.toString$0(0) + _s32_, _null));
        t1 = arg instanceof A.SassCalculation;
        if (t1)
          if (_0_11._readFinal$0())
            if (_0_15._readFinal$0())
              if (_0_16._readFinal$0() instanceof A.SassString)
                if (!_0_16._readFinal$0()._hasQuotes) {
                  text = _0_16._readFinal$0()._string$_text;
                  t2 = A.SassCalculation__needsParentheses(text);
                } else {
                  text = _null;
                  t2 = false;
                }
              else {
                text = _null;
                t2 = false;
              }
            else {
              text = _null;
              t2 = false;
            }
          else {
            text = _null;
            t2 = false;
          }
        else {
          text = _null;
          t2 = false;
        }
        if (t2) {
          t1 = new A.SassString("(" + A.S(text) + ")", false);
          break $label0$0;
        }
        if (t1)
          if (_0_11._readFinal$0())
            if (_0_15._readFinal$0()) {
              value = _0_16._readFinal$0();
              t2 = true;
            } else {
              value = _null;
              t2 = false;
            }
          else {
            value = _null;
            t2 = false;
          }
        else {
          value = _null;
          t2 = false;
        }
        if (t2) {
          t1 = value;
          break $label0$0;
        }
        if (t1) {
          t1 = arg;
          break $label0$0;
        }
        if (arg instanceof A.Value)
          A.throwExpression(A.SassScriptException$("Value " + arg.toString$0(0) + _s32_, _null));
        t1 = A.throwExpression(A.ArgumentError$("Unexpected calculation argument " + A.S(arg) + ".", _null));
      }
      return t1;
    },
    SassCalculation__needsParentheses(text) {
      var t1, couldBeVar, second, third, fourth, i, t2,
        first = text.charCodeAt(0);
      if (first === 32 || first === 9 || first === 10 || first === 13 || first === 12 || first === 47 || first === 42)
        return true;
      t1 = text.length;
      couldBeVar = t1 >= 4 && A.characterEqualsIgnoreCase(first, 118);
      if (t1 < 2)
        return false;
      second = text.charCodeAt(1);
      if (second === 32 || second === 9 || second === 10 || second === 13 || second === 12 || second === 47 || second === 42)
        return true;
      couldBeVar = couldBeVar && A.characterEqualsIgnoreCase(second, 97);
      if (t1 < 3)
        return false;
      third = text.charCodeAt(2);
      if (third === 32 || third === 9 || third === 10 || third === 13 || third === 12 || third === 47 || third === 42)
        return true;
      couldBeVar = couldBeVar && A.characterEqualsIgnoreCase(third, 114);
      if (t1 < 4)
        return false;
      fourth = text.charCodeAt(3);
      if (couldBeVar && fourth === 40)
        return true;
      if (fourth === 32 || fourth === 9 || fourth === 10 || fourth === 13 || fourth === 12 || fourth === 47 || fourth === 42)
        return true;
      for (i = 4; i < t1; ++i) {
        t2 = text.charCodeAt(i);
        if (t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12 || t2 === 47 || t2 === 42)
          return true;
      }
      return false;
    },
    SassCalculation__verifyCompatibleNumbers(args) {
      var t1, _i, t2, arg, i, number1, j, number2;
      for (t1 = args.length, _i = 0; t2 = args.length, _i < t2; args.length === t1 || (0, A.throwConcurrentModificationError)(args), ++_i) {
        arg = args[_i];
        if (arg instanceof A.SassNumber && arg.get$hasComplexUnits())
          throw A.wrapException(A.SassScriptException$("Number " + A.S(arg) + " isn't compatible with CSS calculations.", null));
      }
      for (t1 = t2, i = 0; i < t1 - 1; ++i) {
        number1 = args[i];
        if (!(number1 instanceof A.SassNumber))
          continue;
        for (j = i + 1; t1 = args.length, j < t1; ++j) {
          number2 = args[j];
          if (!(number2 instanceof A.SassNumber))
            continue;
          if (number1.hasPossiblyCompatibleUnits$1(number2))
            continue;
          throw A.wrapException(A.SassScriptException$(number1.toString$0(0) + " and " + number2.toString$0(0) + " are incompatible.", null));
        }
      }
    },
    SassCalculation__verifyLength(args, expectedLength) {
      var t1;
      if (args.length === expectedLength)
        return;
      if (B.JSArray_methods.any$1(args, new A.SassCalculation__verifyLength_closure()))
        return;
      t1 = args.length;
      throw A.wrapException(A.SassScriptException$("" + expectedLength + " arguments required, but only " + t1 + " " + A.pluralize("was", t1, "were") + " passed.", null));
    },
    SassCalculation__singleArgument($name, argument, mathFunc, forbidUnits) {
      argument = A.SassCalculation__simplify(argument);
      if (!(argument instanceof A.SassNumber))
        return new A.SassCalculation($name, A._setArrayType([argument], type$.JSArray_Object));
      if (forbidUnits)
        argument.assertNoUnits$0();
      return mathFunc.call$1(argument);
    },
    SassCalculation: function SassCalculation(t0, t1) {
      this.name = t0;
      this.$arguments = t1;
    },
    SassCalculation_sign_closure: function SassCalculation_sign_closure(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure: function SassCalculation_round_closure(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure0: function SassCalculation_round_closure0(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure1: function SassCalculation_round_closure1(t0) {
      this._0_2 = t0;
    },
    SassCalculation_round_closure2: function SassCalculation_round_closure2(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure3: function SassCalculation_round_closure3(t0) {
      this._0_5 = t0;
    },
    SassCalculation_round_closure4: function SassCalculation_round_closure4(t0) {
      this._0_1 = t0;
    },
    SassCalculation_round_closure5: function SassCalculation_round_closure5(t0) {
      this._0_8 = t0;
    },
    SassCalculation_round_closure6: function SassCalculation_round_closure6(t0) {
      this._0_8 = t0;
    },
    SassCalculation_round_closure7: function SassCalculation_round_closure7(t0) {
      this._0_8 = t0;
    },
    SassCalculation_round_closure8: function SassCalculation_round_closure8(t0) {
      this._0_8 = t0;
    },
    SassCalculation__roundWithStep_closure0: function SassCalculation__roundWithStep_closure0(t0) {
      this._0_0 = t0;
    },
    SassCalculation__roundWithStep_closure: function SassCalculation__roundWithStep_closure(t0) {
      this._0_0 = t0;
    },
    SassCalculation__roundWithStep_closure1: function SassCalculation__roundWithStep_closure1(t0) {
      this._0_1 = t0;
    },
    SassCalculation__roundWithStep_closure2: function SassCalculation__roundWithStep_closure2(t0) {
      this._0_1 = t0;
    },
    SassCalculation__roundWithStep_closure3: function SassCalculation__roundWithStep_closure3(t0) {
      this._0_2 = t0;
    },
    SassCalculation__roundWithStep_closure4: function SassCalculation__roundWithStep_closure4(t0) {
      this._0_1 = t0;
    },
    SassCalculation__roundWithStep_closure5: function SassCalculation__roundWithStep_closure5(t0) {
      this._0_1 = t0;
    },
    SassCalculation__simplify_closure: function SassCalculation__simplify_closure(t0) {
      this._0_0 = t0;
    },
    SassCalculation__simplify_closure0: function SassCalculation__simplify_closure0(t0) {
      this._0_0 = t0;
    },
    SassCalculation__simplify_closure1: function SassCalculation__simplify_closure1(t0) {
      this._0_12 = t0;
    },
    SassCalculation__simplify_closure2: function SassCalculation__simplify_closure2(t0) {
      this._0_12 = t0;
    },
    SassCalculation__verifyLength_closure: function SassCalculation__verifyLength_closure() {
    },
    CalculationOperation: function CalculationOperation(t0, t1, t2) {
      this._operator = t0;
      this._left = t1;
      this._right = t2;
    },
    CalculationOperator: function CalculationOperator(t0, t1, t2, t3) {
      var _ = this;
      _.name = t0;
      _.operator = t1;
      _.precedence = t2;
      _._name = t3;
    },
    SassColor$rgb(red, green, blue, alpha) {
      var _null = null,
        t1 = new A.SassColor(red, green, blue, _null, _null, _null, A.fuzzyAssertRange(A.SassColor__handleNullAlpha(alpha), 0, 1, "alpha"), _null);
      A.RangeError_checkValueInInterval(t1.get$red(t1), 0, 255, "red");
      A.RangeError_checkValueInInterval(t1.get$green(t1), 0, 255, "green");
      A.RangeError_checkValueInInterval(t1.get$blue(t1), 0, 255, "blue");
      return t1;
    },
    SassColor$rgbInternal(_red, _green, _blue, alpha, format) {
      var t1 = new A.SassColor(_red, _green, _blue, null, null, null, A.fuzzyAssertRange(alpha, 0, 1, "alpha"), format);
      A.RangeError_checkValueInInterval(t1.get$red(t1), 0, 255, "red");
      A.RangeError_checkValueInInterval(t1.get$green(t1), 0, 255, "green");
      A.RangeError_checkValueInInterval(t1.get$blue(t1), 0, 255, "blue");
      return t1;
    },
    SassColor$hslInternal(hue, saturation, lightness, alpha, format) {
      return new A.SassColor(null, null, null, B.JSNumber_methods.$mod(hue, 360), A.fuzzyAssertRange(saturation, 0, 100, "saturation"), A.fuzzyAssertRange(lightness, 0, 100, "lightness"), A.fuzzyAssertRange(alpha, 0, 1, "alpha"), format);
    },
    SassColor_SassColor$hwb(hue, whiteness, blackness, alpha) {
      var t2, t1 = {},
        scaledHue = B.JSNumber_methods.$mod(hue, 360) / 360,
        scaledWhiteness = t1.scaledWhiteness = A.fuzzyAssertRange(whiteness, 0, 100, "whiteness") / 100,
        scaledBlackness = A.fuzzyAssertRange(blackness, 0, 100, "blackness") / 100,
        sum = scaledWhiteness + scaledBlackness;
      if (sum > 1) {
        t2 = t1.scaledWhiteness = scaledWhiteness / sum;
        scaledBlackness /= sum;
      } else
        t2 = scaledWhiteness;
      t2 = new A.SassColor_SassColor$hwb_toRgb(t1, 1 - t2 - scaledBlackness);
      return A.SassColor$rgb(t2.call$1(scaledHue + 0.3333333333333333), t2.call$1(scaledHue), t2.call$1(scaledHue - 0.3333333333333333), alpha);
    },
    SassColor__handleNullAlpha(alpha) {
      return alpha;
    },
    SassColor__hueToRgb(m1, m2, hue) {
      var t1;
      if (hue < 0)
        ++hue;
      if (hue > 1)
        --hue;
      $label0$0: {
        if (hue < 0.16666666666666666) {
          t1 = m1 + (m2 - m1) * hue * 6;
          break $label0$0;
        }
        if (hue < 0.5) {
          t1 = m2;
          break $label0$0;
        }
        if (hue < 0.6666666666666666) {
          t1 = m1 + (m2 - m1) * (0.6666666666666666 - hue) * 6;
          break $label0$0;
        }
        t1 = m1;
        break $label0$0;
      }
      return t1;
    },
    SassColor: function SassColor(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _._red = t0;
      _._green = t1;
      _._blue = t2;
      _._hue = t3;
      _._saturation = t4;
      _._lightness = t5;
      _._alpha = t6;
      _.format = t7;
    },
    SassColor_SassColor$hwb_toRgb: function SassColor_SassColor$hwb_toRgb(t0, t1) {
      this._box_0 = t0;
      this.factor = t1;
    },
    _ColorFormatEnum: function _ColorFormatEnum(t0) {
      this._color$_name = t0;
    },
    SpanColorFormat: function SpanColorFormat(t0) {
      this._color$_span = t0;
    },
    SassFunction: function SassFunction(t0) {
      this.callable = t0;
    },
    SassList$(contents, _separator, brackets) {
      var t1 = new A.SassList(A.List_List$unmodifiable(contents, type$.Value), _separator, brackets);
      t1.SassList$3$brackets(contents, _separator, brackets);
      return t1;
    },
    SassList: function SassList(t0, t1, t2) {
      this._list$_contents = t0;
      this._separator = t1;
      this._hasBrackets = t2;
    },
    SassList_isBlank_closure: function SassList_isBlank_closure() {
    },
    ListSeparator: function ListSeparator(t0, t1, t2) {
      this._list$_name = t0;
      this.separator = t1;
      this._name = t2;
    },
    SassMap: function SassMap(t0) {
      this._map$_contents = t0;
    },
    SassMixin: function SassMixin(t0) {
      this.callable = t0;
    },
    _SassNull: function _SassNull() {
    },
    conversionFactor(unit1, unit2) {
      var _0_0, innerMap, t1;
      if (unit1 === unit2)
        return 1;
      _0_0 = B.Map_nfuzN.$index(0, unit1);
      if (_0_0 != null) {
        innerMap = _0_0;
        t1 = true;
      } else {
        innerMap = null;
        t1 = false;
      }
      if (t1)
        return innerMap.$index(0, unit2);
      return null;
    },
    SassNumber_SassNumber(value, unit) {
      return unit == null ? new A.UnitlessSassNumber(value, null) : new A.SingleUnitSassNumber(unit, value, null);
    },
    SassNumber_SassNumber$withUnits(value, denominatorUnits, numeratorUnits) {
      var t1, unit, numerators, denominators, unsimplifiedDenominators, valueDouble, _i, denominator, simplifiedAway, i, factor, _1_0, _1_1, _1_2, _1_7, _null = null,
        _0_0 = new A._Record_2(numeratorUnits, denominatorUnits),
        _0_1 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure(_0_0)),
        _0_3 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure0(_0_1)),
        _0_4 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure1(_0_1)),
        _0_6 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure2(_0_4)),
        _0_7 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure3(_0_0)),
        _0_8 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure4(_0_7)),
        _0_10 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure5(_0_7));
      if (_0_3._readFinal$0() || _0_6._readFinal$0())
        t1 = _0_8._readFinal$0() || _0_10._readFinal$0();
      else
        t1 = false;
      if (t1)
        return new A.UnitlessSassNumber(value, _null);
      if (type$.List_String._is(_0_1._readFinal$0()))
        if (J.$eq$(_0_4._readFinal$0(), 1)) {
          unit = J.$index$asx(_0_1._readFinal$0(), 0);
          t1 = _0_8._readFinal$0() || _0_10._readFinal$0();
        } else {
          unit = _null;
          t1 = false;
        }
      else {
        unit = _null;
        t1 = false;
      }
      if (t1)
        return new A.SingleUnitSassNumber(unit, value, _null);
      if (_0_1._readFinal$0() != null) {
        numerators = _0_1._readFinal$0();
        t1 = true;
      } else {
        numerators = _null;
        t1 = false;
      }
      if (t1)
        t1 = _0_8._readFinal$0() || _0_10._readFinal$0();
      else
        t1 = false;
      if (t1)
        return new A.ComplexSassNumber(A.List_List$unmodifiable(numerators, type$.String), B.List_empty, value, _null);
      if (_0_3._readFinal$0() || _0_6._readFinal$0())
        if (_0_7._readFinal$0() != null) {
          denominators = _0_7._readFinal$0();
          t1 = true;
        } else {
          denominators = _null;
          t1 = false;
        }
      else {
        denominators = _null;
        t1 = false;
      }
      if (t1)
        return new A.ComplexSassNumber(B.List_empty, A.List_List$unmodifiable(denominators, type$.String), value, _null);
      numerators = J.toList$0$ax(numeratorUnits);
      denominatorUnits.toString;
      unsimplifiedDenominators = J.toList$0$ax(denominatorUnits);
      denominators = A._setArrayType([], type$.JSArray_String);
      for (t1 = unsimplifiedDenominators.length, valueDouble = value, _i = 0; _i < unsimplifiedDenominators.length; unsimplifiedDenominators.length === t1 || (0, A.throwConcurrentModificationError)(unsimplifiedDenominators), ++_i) {
        denominator = unsimplifiedDenominators[_i];
        i = 0;
        while (true) {
          if (!(i < numerators.length)) {
            simplifiedAway = false;
            break;
          }
          c$0: {
            factor = A.conversionFactor(denominator, numerators[i]);
            if (factor == null)
              break c$0;
            valueDouble *= factor;
            B.JSArray_methods.removeAt$1(numerators, i);
            simplifiedAway = true;
            break;
          }
          ++i;
        }
        if (!simplifiedAway)
          denominators.push(denominator);
      }
      _1_0 = new A._Record_2(numerators, denominators);
      _1_1 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure6(_1_0));
      _1_2 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure7(_1_1));
      _1_7 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure8(_1_0));
      $label0$1: {
        if (_1_2._readFinal$0() <= 0 && _1_7._readFinal$0()) {
          t1 = new A.UnitlessSassNumber(valueDouble, _null);
          break $label0$1;
        }
        if (J.$eq$(_1_2._readFinal$0(), 1)) {
          unit = J.$index$asx(_1_1._readFinal$0(), 0);
          t1 = _1_7._readFinal$0();
          t1 = t1;
        } else {
          unit = _null;
          t1 = false;
        }
        if (t1) {
          t1 = new A.SingleUnitSassNumber(unit, valueDouble, _null);
          break $label0$1;
        }
        t1 = type$.String;
        t1 = new A.ComplexSassNumber(A.List_List$unmodifiable(numerators, t1), A.List_List$unmodifiable(denominators, t1), valueDouble, _null);
        break $label0$1;
      }
      return t1;
    },
    SassNumber: function SassNumber() {
    },
    SassNumber_SassNumber$withUnits_closure0: function SassNumber_SassNumber$withUnits_closure0(t0) {
      this._0_1 = t0;
    },
    SassNumber_SassNumber$withUnits_closure: function SassNumber_SassNumber$withUnits_closure(t0) {
      this._0_0 = t0;
    },
    SassNumber_SassNumber$withUnits_closure1: function SassNumber_SassNumber$withUnits_closure1(t0) {
      this._0_1 = t0;
    },
    SassNumber_SassNumber$withUnits_closure2: function SassNumber_SassNumber$withUnits_closure2(t0) {
      this._0_4 = t0;
    },
    SassNumber_SassNumber$withUnits_closure4: function SassNumber_SassNumber$withUnits_closure4(t0) {
      this._0_7 = t0;
    },
    SassNumber_SassNumber$withUnits_closure3: function SassNumber_SassNumber$withUnits_closure3(t0) {
      this._0_0 = t0;
    },
    SassNumber_SassNumber$withUnits_closure5: function SassNumber_SassNumber$withUnits_closure5(t0) {
      this._0_7 = t0;
    },
    SassNumber_SassNumber$withUnits_closure6: function SassNumber_SassNumber$withUnits_closure6(t0) {
      this._1_0 = t0;
    },
    SassNumber_SassNumber$withUnits_closure7: function SassNumber_SassNumber$withUnits_closure7(t0) {
      this._1_1 = t0;
    },
    SassNumber_SassNumber$withUnits_closure8: function SassNumber_SassNumber$withUnits_closure8(t0) {
      this._1_0 = t0;
    },
    SassNumber__coerceOrConvertValue_compatibilityException: function SassNumber__coerceOrConvertValue_compatibilityException(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.other = t1;
      _.otherName = t2;
      _.otherHasUnits = t3;
      _.name = t4;
      _.newNumerators = t5;
      _.newDenominators = t6;
    },
    SassNumber__coerceOrConvertValue_closure: function SassNumber__coerceOrConvertValue_closure(t0, t1) {
      this._box_0 = t0;
      this.newNumerator = t1;
    },
    SassNumber__coerceOrConvertValue_closure0: function SassNumber__coerceOrConvertValue_closure0(t0) {
      this.compatibilityException = t0;
    },
    SassNumber__coerceOrConvertValue_closure1: function SassNumber__coerceOrConvertValue_closure1(t0, t1) {
      this._box_0 = t0;
      this.newDenominator = t1;
    },
    SassNumber__coerceOrConvertValue_closure2: function SassNumber__coerceOrConvertValue_closure2(t0) {
      this.compatibilityException = t0;
    },
    SassNumber_plus_closure: function SassNumber_plus_closure() {
    },
    SassNumber_minus_closure: function SassNumber_minus_closure() {
    },
    SassNumber_multiplyUnits_closure: function SassNumber_multiplyUnits_closure(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure0: function SassNumber_multiplyUnits_closure0(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure1: function SassNumber_multiplyUnits_closure1(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure2: function SassNumber_multiplyUnits_closure2(t0) {
      this._0_3 = t0;
    },
    SassNumber_multiplyUnits_closure3: function SassNumber_multiplyUnits_closure3(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure4: function SassNumber_multiplyUnits_closure4(t0) {
      this._0_7 = t0;
    },
    SassNumber_multiplyUnits_closure5: function SassNumber_multiplyUnits_closure5(t0) {
      this._0_1 = t0;
    },
    SassNumber_multiplyUnits_closure6: function SassNumber_multiplyUnits_closure6(t0) {
      this._0_2 = t0;
    },
    SassNumber_multiplyUnits_closure7: function SassNumber_multiplyUnits_closure7(t0, t1) {
      this._box_0 = t0;
      this.numerator = t1;
    },
    SassNumber_multiplyUnits_closure8: function SassNumber_multiplyUnits_closure8(t0, t1) {
      this.newNumerators = t0;
      this.numerator = t1;
    },
    SassNumber_multiplyUnits_closure9: function SassNumber_multiplyUnits_closure9(t0, t1) {
      this._box_0 = t0;
      this.numerator = t1;
    },
    SassNumber_multiplyUnits_closure10: function SassNumber_multiplyUnits_closure10(t0, t1) {
      this.newNumerators = t0;
      this.numerator = t1;
    },
    SassNumber__areAnyConvertible_closure: function SassNumber__areAnyConvertible_closure(t0) {
      this.units2 = t0;
    },
    SassNumber__unitString_closure: function SassNumber__unitString_closure(t0) {
      this._0_0 = t0;
    },
    SassNumber__unitString_closure0: function SassNumber__unitString_closure0(t0) {
      this._0_0 = t0;
    },
    SassNumber__unitString_closure1: function SassNumber__unitString_closure1(t0) {
      this._0_5 = t0;
    },
    SassNumber__unitString_closure2: function SassNumber__unitString_closure2(t0) {
      this._0_6 = t0;
    },
    SassNumber__canonicalizeUnitList_closure: function SassNumber__canonicalizeUnitList_closure() {
    },
    SassNumber__canonicalMultiplier_closure: function SassNumber__canonicalMultiplier_closure(t0) {
      this.$this = t0;
    },
    SassNumber_unitSuggestion_closure: function SassNumber_unitSuggestion_closure() {
    },
    SassNumber_unitSuggestion_closure0: function SassNumber_unitSuggestion_closure0() {
    },
    ComplexSassNumber: function ComplexSassNumber(t0, t1, t2, t3) {
      var _ = this;
      _._numeratorUnits = t0;
      _._denominatorUnits = t1;
      _._number$_value = t2;
      _.hashCache = null;
      _.asSlash = t3;
    },
    SingleUnitSassNumber: function SingleUnitSassNumber(t0, t1, t2) {
      var _ = this;
      _._unit = t0;
      _._number$_value = t1;
      _.hashCache = null;
      _.asSlash = t2;
    },
    SingleUnitSassNumber__coerceToUnit_closure: function SingleUnitSassNumber__coerceToUnit_closure(t0, t1) {
      this.$this = t0;
      this.unit = t1;
    },
    SingleUnitSassNumber__coerceValueToUnit_closure: function SingleUnitSassNumber__coerceValueToUnit_closure(t0) {
      this.$this = t0;
    },
    SingleUnitSassNumber_multiplyUnits_closure: function SingleUnitSassNumber_multiplyUnits_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    SingleUnitSassNumber_multiplyUnits_closure0: function SingleUnitSassNumber_multiplyUnits_closure0(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    UnitlessSassNumber: function UnitlessSassNumber(t0, t1) {
      this._number$_value = t0;
      this.hashCache = null;
      this.asSlash = t1;
    },
    SassString$(_text, quotes) {
      return new A.SassString(_text, quotes);
    },
    SassString: function SassString(t0, t1) {
      var _ = this;
      _._string$_text = t0;
      _._hasQuotes = t1;
      _.__SassString__sassLength_FI = $;
      _._hashCache = null;
    },
    AnySelectorVisitor: function AnySelectorVisitor() {
    },
    AnySelectorVisitor_visitComplexSelector_closure: function AnySelectorVisitor_visitComplexSelector_closure(t0) {
      this.$this = t0;
    },
    AnySelectorVisitor_visitCompoundSelector_closure: function AnySelectorVisitor_visitCompoundSelector_closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor$0(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t1 = type$.Uri,
        t2 = type$.Module_AsyncCallable,
        t3 = A._setArrayType([], type$.JSArray_Record_2_String_and_AstNode);
      t1 = new A._EvaluateVisitor0(importCache, nodeImporter, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.AsyncCallable), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Configuration), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode), logger, A.LinkedHashSet_LinkedHashSet$_empty(type$.Record_2_String_and_SourceSpan), quietDeps, sourceMap, A.AsyncEnvironment$(), A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.nullable_AstNode), t3, B.Configuration_Map_empty_null);
      t1._EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap0(functions, importCache, logger, nodeImporter, quietDeps, sourceMap);
      return t1;
    },
    _EvaluateVisitor0: function _EvaluateVisitor0(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) {
      var _ = this;
      _._async_evaluate$_importCache = t0;
      _._async_evaluate$_nodeImporter = t1;
      _._async_evaluate$_builtInFunctions = t2;
      _._async_evaluate$_builtInModules = t3;
      _._async_evaluate$_modules = t4;
      _._async_evaluate$_moduleConfigurations = t5;
      _._async_evaluate$_moduleNodes = t6;
      _._async_evaluate$_logger = t7;
      _._async_evaluate$_warningsEmitted = t8;
      _._async_evaluate$_quietDeps = t9;
      _._async_evaluate$_sourceMap = t10;
      _._async_evaluate$_environment = t11;
      _._async_evaluate$_declarationName = _._async_evaluate$__parent = _._async_evaluate$_mediaQuerySources = _._async_evaluate$_mediaQueries = _._async_evaluate$_styleRuleIgnoringAtRoot = null;
      _._async_evaluate$_member = "root stylesheet";
      _._async_evaluate$_importSpan = _._async_evaluate$_callableNode = _._async_evaluate$_currentCallable = null;
      _._async_evaluate$_inSupportsDeclaration = _._async_evaluate$_inKeyframes = _._async_evaluate$_atRootExcludingStyleRule = _._async_evaluate$_inUnknownAtRule = _._async_evaluate$_inFunction = false;
      _._async_evaluate$_loadedUrls = t12;
      _._async_evaluate$_activeModules = t13;
      _._async_evaluate$_stack = t14;
      _._async_evaluate$_importer = null;
      _._async_evaluate$_inDependency = false;
      _._async_evaluate$__extensionStore = _._async_evaluate$_preModuleComments = _._async_evaluate$_outOfOrderImports = _._async_evaluate$__endOfImports = _._async_evaluate$__root = _._async_evaluate$__stylesheet = null;
      _._async_evaluate$_configuration = t15;
    },
    _EvaluateVisitor_closure12: function _EvaluateVisitor_closure12(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure13: function _EvaluateVisitor_closure13(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure14: function _EvaluateVisitor_closure14(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure15: function _EvaluateVisitor_closure15(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure16: function _EvaluateVisitor_closure16(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure17: function _EvaluateVisitor_closure17(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure18: function _EvaluateVisitor_closure18(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure19: function _EvaluateVisitor_closure19(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure20: function _EvaluateVisitor_closure20(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure6: function _EvaluateVisitor__closure6(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure21: function _EvaluateVisitor_closure21(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure5: function _EvaluateVisitor__closure5(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure22: function _EvaluateVisitor_closure22(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure23: function _EvaluateVisitor_closure23(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure3: function _EvaluateVisitor__closure3(t0, t1, t2) {
      this.values = t0;
      this.span = t1;
      this.callableNode = t2;
    },
    _EvaluateVisitor__closure4: function _EvaluateVisitor__closure4(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure24: function _EvaluateVisitor_closure24(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_run_closure0: function _EvaluateVisitor_run_closure0(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.importer = t2;
    },
    _EvaluateVisitor_run__closure0: function _EvaluateVisitor_run__closure0(t0, t1, t2) {
      this.$this = t0;
      this.importer = t1;
      this.node = t2;
    },
    _EvaluateVisitor__loadModule_closure1: function _EvaluateVisitor__loadModule_closure1(t0, t1) {
      this._box_1 = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__loadModule_closure2: function _EvaluateVisitor__loadModule_closure2(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.nodeWithSpan = t2;
      _.baseUrl = t3;
      _.namesInErrors = t4;
      _.configuration = t5;
      _.callback = t6;
    },
    _EvaluateVisitor__loadModule__closure1: function _EvaluateVisitor__loadModule__closure1(t0, t1) {
      this.$this = t0;
      this.message = t1;
    },
    _EvaluateVisitor__loadModule__closure2: function _EvaluateVisitor__loadModule__closure2(t0, t1, t2) {
      this._box_0 = t0;
      this.callback = t1;
      this.firstLoad = t2;
    },
    _EvaluateVisitor__execute_closure0: function _EvaluateVisitor__execute_closure0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.stylesheet = t2;
      _.extensionStore = t3;
      _.configuration = t4;
      _.css = t5;
      _.preModuleComments = t6;
    },
    _EvaluateVisitor__combineCss_closure1: function _EvaluateVisitor__combineCss_closure1() {
    },
    _EvaluateVisitor__combineCss_closure2: function _EvaluateVisitor__combineCss_closure2(t0) {
      this.selectors = t0;
    },
    _EvaluateVisitor__combineCss_visitModule0: function _EvaluateVisitor__combineCss_visitModule0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.seen = t1;
      _.clone = t2;
      _.css = t3;
      _.imports = t4;
      _.sorted = t5;
    },
    _EvaluateVisitor__extendModules_closure1: function _EvaluateVisitor__extendModules_closure1(t0) {
      this.originalSelectors = t0;
    },
    _EvaluateVisitor__extendModules_closure2: function _EvaluateVisitor__extendModules_closure2() {
    },
    _EvaluateVisitor_visitAtRootRule_closure1: function _EvaluateVisitor_visitAtRootRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitAtRootRule_closure2: function _EvaluateVisitor_visitAtRootRule_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure5: function _EvaluateVisitor__scopeForAtRoot_closure5(t0, t1, t2) {
      this.$this = t0;
      this.newParent = t1;
      this.node = t2;
    },
    _EvaluateVisitor__scopeForAtRoot_closure6: function _EvaluateVisitor__scopeForAtRoot_closure6(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure7: function _EvaluateVisitor__scopeForAtRoot_closure7(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot__closure0: function _EvaluateVisitor__scopeForAtRoot__closure0(t0, t1) {
      this.innerScope = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure8: function _EvaluateVisitor__scopeForAtRoot_closure8(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure9: function _EvaluateVisitor__scopeForAtRoot_closure9() {
    },
    _EvaluateVisitor__scopeForAtRoot_closure10: function _EvaluateVisitor__scopeForAtRoot_closure10(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor_visitContentRule_closure0: function _EvaluateVisitor_visitContentRule_closure0(t0, t1) {
      this.$this = t0;
      this.content = t1;
    },
    _EvaluateVisitor_visitDeclaration_closure0: function _EvaluateVisitor_visitDeclaration_closure0(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitEachRule_closure2: function _EvaluateVisitor_visitEachRule_closure2(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure3: function _EvaluateVisitor_visitEachRule_closure3(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure4: function _EvaluateVisitor_visitEachRule_closure4(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.list = t1;
      _.setVariables = t2;
      _.node = t3;
    },
    _EvaluateVisitor_visitEachRule__closure0: function _EvaluateVisitor_visitEachRule__closure0(t0, t1, t2) {
      this.$this = t0;
      this.setVariables = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitEachRule___closure0: function _EvaluateVisitor_visitEachRule___closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure2: function _EvaluateVisitor_visitAtRule_closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure3: function _EvaluateVisitor_visitAtRule_closure3(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.children = t2;
    },
    _EvaluateVisitor_visitAtRule__closure0: function _EvaluateVisitor_visitAtRule__closure0(t0, t1) {
      this.$this = t0;
      this.children = t1;
    },
    _EvaluateVisitor_visitAtRule_closure4: function _EvaluateVisitor_visitAtRule_closure4() {
    },
    _EvaluateVisitor_visitForRule_closure4: function _EvaluateVisitor_visitForRule_closure4(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure5: function _EvaluateVisitor_visitForRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure6: function _EvaluateVisitor_visitForRule_closure6(t0) {
      this.fromNumber = t0;
    },
    _EvaluateVisitor_visitForRule_closure7: function _EvaluateVisitor_visitForRule_closure7(t0, t1) {
      this.toNumber = t0;
      this.fromNumber = t1;
    },
    _EvaluateVisitor_visitForRule_closure8: function _EvaluateVisitor_visitForRule_closure8(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.from = t3;
      _.direction = t4;
      _.fromNumber = t5;
    },
    _EvaluateVisitor_visitForRule__closure0: function _EvaluateVisitor_visitForRule__closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitForwardRule_closure1: function _EvaluateVisitor_visitForwardRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForwardRule_closure2: function _EvaluateVisitor_visitForwardRule_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__registerCommentsForModule_closure0: function _EvaluateVisitor__registerCommentsForModule_closure0() {
    },
    _EvaluateVisitor_visitIfRule_closure0: function _EvaluateVisitor_visitIfRule_closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIfRule__closure0: function _EvaluateVisitor_visitIfRule__closure0(t0, t1) {
      this.$this = t0;
      this.clause = t1;
    },
    _EvaluateVisitor_visitIfRule___closure0: function _EvaluateVisitor_visitIfRule___closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport_closure0: function _EvaluateVisitor__visitDynamicImport_closure0(t0, t1) {
      this.$this = t0;
      this.$import = t1;
    },
    _EvaluateVisitor__visitDynamicImport__closure3: function _EvaluateVisitor__visitDynamicImport__closure3(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport__closure4: function _EvaluateVisitor__visitDynamicImport__closure4() {
    },
    _EvaluateVisitor__visitDynamicImport__closure5: function _EvaluateVisitor__visitDynamicImport__closure5() {
    },
    _EvaluateVisitor__visitDynamicImport__closure6: function _EvaluateVisitor__visitDynamicImport__closure6(t0, t1, t2, t3, t4) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.loadsUserDefinedModules = t2;
      _.environment = t3;
      _.children = t4;
    },
    _EvaluateVisitor__applyMixin_closure3: function _EvaluateVisitor__applyMixin_closure3(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure2: function _EvaluateVisitor__applyMixin__closure2(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin_closure2: function _EvaluateVisitor__applyMixin_closure2(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__applyMixin_closure4: function _EvaluateVisitor__applyMixin_closure4(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.contentCallable = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure1: function _EvaluateVisitor__applyMixin__closure1(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin___closure0: function _EvaluateVisitor__applyMixin___closure0(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin____closure0: function _EvaluateVisitor__applyMixin____closure0(t0, t1) {
      this.$this = t0;
      this.statement = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure2: function _EvaluateVisitor_visitIncludeRule_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure3: function _EvaluateVisitor_visitIncludeRule_closure3(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIncludeRule_closure4: function _EvaluateVisitor_visitIncludeRule_closure4(t0) {
      this.node = t0;
    },
    _EvaluateVisitor_visitMediaRule_closure2: function _EvaluateVisitor_visitMediaRule_closure2(t0, t1) {
      this.$this = t0;
      this.queries = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure3: function _EvaluateVisitor_visitMediaRule_closure3(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.queries = t2;
      _.mergedSources = t3;
      _.node = t4;
    },
    _EvaluateVisitor_visitMediaRule__closure0: function _EvaluateVisitor_visitMediaRule__closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule___closure0: function _EvaluateVisitor_visitMediaRule___closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure4: function _EvaluateVisitor_visitMediaRule_closure4(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitStyleRule_closure4: function _EvaluateVisitor_visitStyleRule_closure4(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure5: function _EvaluateVisitor_visitStyleRule_closure5() {
    },
    _EvaluateVisitor_visitStyleRule_closure6: function _EvaluateVisitor_visitStyleRule_closure6(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitStyleRule__closure0: function _EvaluateVisitor_visitStyleRule__closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure7: function _EvaluateVisitor_visitStyleRule_closure7() {
    },
    _EvaluateVisitor_visitStyleRule_closure8: function _EvaluateVisitor_visitStyleRule_closure8() {
    },
    _EvaluateVisitor_visitSupportsRule_closure1: function _EvaluateVisitor_visitSupportsRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule__closure0: function _EvaluateVisitor_visitSupportsRule__closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule_closure2: function _EvaluateVisitor_visitSupportsRule_closure2() {
    },
    _EvaluateVisitor__visitSupportsCondition_closure0: function _EvaluateVisitor__visitSupportsCondition_closure0(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure2: function _EvaluateVisitor_visitVariableDeclaration_closure2(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure3: function _EvaluateVisitor_visitVariableDeclaration_closure3(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure4: function _EvaluateVisitor_visitVariableDeclaration_closure4(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.value = t2;
    },
    _EvaluateVisitor_visitUseRule_closure0: function _EvaluateVisitor_visitUseRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWarnRule_closure0: function _EvaluateVisitor_visitWarnRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule_closure0: function _EvaluateVisitor_visitWhileRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule__closure0: function _EvaluateVisitor_visitWhileRule__closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitBinaryOperationExpression_closure0: function _EvaluateVisitor_visitBinaryOperationExpression_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__slash_closure1: function _EvaluateVisitor__slash_closure1(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_closure2: function _EvaluateVisitor__slash_closure2(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_recommendation0: function _EvaluateVisitor__slash_recommendation0() {
    },
    _EvaluateVisitor_visitVariableExpression_closure0: function _EvaluateVisitor_visitVariableExpression_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitUnaryOperationExpression_closure0: function _EvaluateVisitor_visitUnaryOperationExpression_closure0(t0, t1) {
      this.node = t0;
      this.operand = t1;
    },
    _EvaluateVisitor_visitListExpression_closure0: function _EvaluateVisitor_visitListExpression_closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitFunctionExpression_closure2: function _EvaluateVisitor_visitFunctionExpression_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitFunctionExpression_closure3: function _EvaluateVisitor_visitFunctionExpression_closure3() {
    },
    _EvaluateVisitor_visitFunctionExpression_closure4: function _EvaluateVisitor_visitFunctionExpression_closure4(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor__checkCalculationArguments_check0: function _EvaluateVisitor__checkCalculationArguments_check0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__visitCalculationExpression_closure0: function _EvaluateVisitor__visitCalculationExpression_closure0(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.inLegacySassFunction = t3;
    },
    _EvaluateVisitor__checkAdjacentCalculationValues_closure0: function _EvaluateVisitor__checkAdjacentCalculationValues_closure0(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitInterpolatedFunctionExpression_closure0: function _EvaluateVisitor_visitInterpolatedFunctionExpression_closure0(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.$function = t2;
    },
    _EvaluateVisitor__runUserDefinedCallable_closure0: function _EvaluateVisitor__runUserDefinedCallable_closure0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.callable = t1;
      _.evaluated = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable__closure0: function _EvaluateVisitor__runUserDefinedCallable__closure0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable___closure0: function _EvaluateVisitor__runUserDefinedCallable___closure0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable____closure0: function _EvaluateVisitor__runUserDefinedCallable____closure0() {
    },
    _EvaluateVisitor__runFunctionCallable_closure0: function _EvaluateVisitor__runFunctionCallable_closure0(t0, t1) {
      this.$this = t0;
      this.callable = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure2: function _EvaluateVisitor__runBuiltInCallable_closure2(t0, t1, t2) {
      this._box_0 = t0;
      this.evaluated = t1;
      this.namedSet = t2;
    },
    _EvaluateVisitor__runBuiltInCallable_closure3: function _EvaluateVisitor__runBuiltInCallable_closure3(t0, t1) {
      this._box_0 = t0;
      this.evaluated = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure4: function _EvaluateVisitor__runBuiltInCallable_closure4() {
    },
    _EvaluateVisitor__evaluateArguments_closure3: function _EvaluateVisitor__evaluateArguments_closure3() {
    },
    _EvaluateVisitor__evaluateArguments_closure4: function _EvaluateVisitor__evaluateArguments_closure4(t0, t1) {
      this.$this = t0;
      this.restNodeForSpan = t1;
    },
    _EvaluateVisitor__evaluateArguments_closure5: function _EvaluateVisitor__evaluateArguments_closure5(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.namedNodes = t3;
    },
    _EvaluateVisitor__evaluateArguments_closure6: function _EvaluateVisitor__evaluateArguments_closure6() {
    },
    _EvaluateVisitor__evaluateMacroArguments_closure3: function _EvaluateVisitor__evaluateMacroArguments_closure3(t0) {
      this.restArgs = t0;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure4: function _EvaluateVisitor__evaluateMacroArguments_closure4(t0, t1, t2) {
      this.$this = t0;
      this.restNodeForSpan = t1;
      this.restArgs = t2;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure5: function _EvaluateVisitor__evaluateMacroArguments_closure5(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.restArgs = t3;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure6: function _EvaluateVisitor__evaluateMacroArguments_closure6(t0, t1, t2) {
      this.$this = t0;
      this.keywordRestNodeForSpan = t1;
      this.keywordRestArgs = t2;
    },
    _EvaluateVisitor__addRestMap_closure0: function _EvaluateVisitor__addRestMap_closure0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.values = t1;
      _.convert = t2;
      _.expressionNode = t3;
      _.map = t4;
      _.nodeWithSpan = t5;
    },
    _EvaluateVisitor__verifyArguments_closure0: function _EvaluateVisitor__verifyArguments_closure0(t0, t1, t2) {
      this.$arguments = t0;
      this.positional = t1;
      this.named = t2;
    },
    _EvaluateVisitor_visitCssAtRule_closure1: function _EvaluateVisitor_visitCssAtRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssAtRule_closure2: function _EvaluateVisitor_visitCssAtRule_closure2() {
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure1: function _EvaluateVisitor_visitCssKeyframeBlock_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure2: function _EvaluateVisitor_visitCssKeyframeBlock_closure2() {
    },
    _EvaluateVisitor_visitCssMediaRule_closure2: function _EvaluateVisitor_visitCssMediaRule_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure3: function _EvaluateVisitor_visitCssMediaRule_closure3(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.node = t2;
      _.mergedSources = t3;
    },
    _EvaluateVisitor_visitCssMediaRule__closure0: function _EvaluateVisitor_visitCssMediaRule__closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule___closure0: function _EvaluateVisitor_visitCssMediaRule___closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure4: function _EvaluateVisitor_visitCssMediaRule_closure4(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitCssStyleRule_closure2: function _EvaluateVisitor_visitCssStyleRule_closure2(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitCssStyleRule__closure0: function _EvaluateVisitor_visitCssStyleRule__closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssStyleRule_closure3: function _EvaluateVisitor_visitCssStyleRule_closure3() {
    },
    _EvaluateVisitor_visitCssStyleRule_closure4: function _EvaluateVisitor_visitCssStyleRule_closure4(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure1: function _EvaluateVisitor_visitCssSupportsRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule__closure0: function _EvaluateVisitor_visitCssSupportsRule__closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure2: function _EvaluateVisitor_visitCssSupportsRule_closure2() {
    },
    _EvaluateVisitor__performInterpolationHelper_closure0: function _EvaluateVisitor__performInterpolationHelper_closure0(t0) {
      this.interpolation = t0;
    },
    _EvaluateVisitor__serialize_closure0: function _EvaluateVisitor__serialize_closure0(t0, t1) {
      this.value = t0;
      this.quote = t1;
    },
    _EvaluateVisitor__expressionNode_closure0: function _EvaluateVisitor__expressionNode_closure0(t0, t1) {
      this.$this = t0;
      this.expression = t1;
    },
    _EvaluateVisitor__withoutSlash_recommendation0: function _EvaluateVisitor__withoutSlash_recommendation0() {
    },
    _EvaluateVisitor__stackFrame_closure0: function _EvaluateVisitor__stackFrame_closure0(t0) {
      this.$this = t0;
    },
    _ImportedCssVisitor0: function _ImportedCssVisitor0(t0) {
      this._async_evaluate$_visitor = t0;
    },
    _ImportedCssVisitor_visitCssAtRule_closure0: function _ImportedCssVisitor_visitCssAtRule_closure0() {
    },
    _ImportedCssVisitor_visitCssMediaRule_closure0: function _ImportedCssVisitor_visitCssMediaRule_closure0(t0) {
      this.hasBeenMerged = t0;
    },
    _ImportedCssVisitor_visitCssStyleRule_closure0: function _ImportedCssVisitor_visitCssStyleRule_closure0() {
    },
    _ImportedCssVisitor_visitCssSupportsRule_closure0: function _ImportedCssVisitor_visitCssSupportsRule_closure0() {
    },
    _EvaluationContext0: function _EvaluationContext0(t0, t1) {
      this._async_evaluate$_visitor = t0;
      this._async_evaluate$_defaultWarnNodeWithSpan = t1;
    },
    cloneCssStylesheet(stylesheet, extensionStore) {
      var _0_0 = extensionStore.clone$0();
      return new A._Record_2(new A._CloneCssVisitor(_0_0._1)._visitChildren$2(A.ModifiableCssStylesheet$(stylesheet.get$span(stylesheet)), stylesheet), _0_0._0);
    },
    _CloneCssVisitor: function _CloneCssVisitor(t0) {
      this._oldToNewSelectors = t0;
    },
    _EvaluateVisitor$(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t1 = type$.Uri,
        t2 = type$.Module_Callable,
        t3 = A._setArrayType([], type$.JSArray_Record_2_String_and_AstNode);
      t1 = new A._EvaluateVisitor(importCache, nodeImporter, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Callable), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Configuration), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode), logger, A.LinkedHashSet_LinkedHashSet$_empty(type$.Record_2_String_and_SourceSpan), quietDeps, sourceMap, A.Environment$(), A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.nullable_AstNode), t3, B.Configuration_Map_empty_null);
      t1._EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap(functions, importCache, logger, nodeImporter, quietDeps, sourceMap);
      return t1;
    },
    Evaluator: function Evaluator(t0, t1) {
      this._visitor = t0;
      this._importer = t1;
    },
    _EvaluateVisitor: function _EvaluateVisitor(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) {
      var _ = this;
      _._evaluate$_importCache = t0;
      _._nodeImporter = t1;
      _._builtInFunctions = t2;
      _._builtInModules = t3;
      _._modules = t4;
      _._moduleConfigurations = t5;
      _._moduleNodes = t6;
      _._evaluate$_logger = t7;
      _._warningsEmitted = t8;
      _._quietDeps = t9;
      _._sourceMap = t10;
      _._environment = t11;
      _._declarationName = _.__parent = _._mediaQuerySources = _._mediaQueries = _._styleRuleIgnoringAtRoot = null;
      _._member = "root stylesheet";
      _._importSpan = _._callableNode = _._currentCallable = null;
      _._inSupportsDeclaration = _._inKeyframes = _._atRootExcludingStyleRule = _._inUnknownAtRule = _._inFunction = false;
      _._loadedUrls = t12;
      _._activeModules = t13;
      _._stack = t14;
      _._importer = null;
      _._inDependency = false;
      _.__extensionStore = _._preModuleComments = _._outOfOrderImports = _.__endOfImports = _.__root = _.__stylesheet = null;
      _._configuration = t15;
    },
    _EvaluateVisitor_closure: function _EvaluateVisitor_closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure0: function _EvaluateVisitor_closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure1: function _EvaluateVisitor_closure1(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure2: function _EvaluateVisitor_closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure3: function _EvaluateVisitor_closure3(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure4: function _EvaluateVisitor_closure4(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure5: function _EvaluateVisitor_closure5(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure6: function _EvaluateVisitor_closure6(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure7: function _EvaluateVisitor_closure7(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure2: function _EvaluateVisitor__closure2(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure8: function _EvaluateVisitor_closure8(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure1: function _EvaluateVisitor__closure1(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure9: function _EvaluateVisitor_closure9(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure10: function _EvaluateVisitor_closure10(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure: function _EvaluateVisitor__closure(t0, t1, t2) {
      this.values = t0;
      this.span = t1;
      this.callableNode = t2;
    },
    _EvaluateVisitor__closure0: function _EvaluateVisitor__closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure11: function _EvaluateVisitor_closure11(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_run_closure: function _EvaluateVisitor_run_closure(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.importer = t2;
    },
    _EvaluateVisitor_run__closure: function _EvaluateVisitor_run__closure(t0, t1, t2) {
      this.$this = t0;
      this.importer = t1;
      this.node = t2;
    },
    _EvaluateVisitor_runExpression_closure: function _EvaluateVisitor_runExpression_closure(t0, t1, t2) {
      this.$this = t0;
      this.importer = t1;
      this.expression = t2;
    },
    _EvaluateVisitor_runExpression__closure: function _EvaluateVisitor_runExpression__closure(t0, t1) {
      this.$this = t0;
      this.expression = t1;
    },
    _EvaluateVisitor_runExpression___closure: function _EvaluateVisitor_runExpression___closure(t0, t1) {
      this.$this = t0;
      this.expression = t1;
    },
    _EvaluateVisitor_runStatement_closure: function _EvaluateVisitor_runStatement_closure(t0, t1, t2) {
      this.$this = t0;
      this.importer = t1;
      this.statement = t2;
    },
    _EvaluateVisitor_runStatement__closure: function _EvaluateVisitor_runStatement__closure(t0, t1) {
      this.$this = t0;
      this.statement = t1;
    },
    _EvaluateVisitor_runStatement___closure: function _EvaluateVisitor_runStatement___closure(t0, t1) {
      this.$this = t0;
      this.statement = t1;
    },
    _EvaluateVisitor__loadModule_closure: function _EvaluateVisitor__loadModule_closure(t0, t1) {
      this._box_1 = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__loadModule_closure0: function _EvaluateVisitor__loadModule_closure0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.nodeWithSpan = t2;
      _.baseUrl = t3;
      _.namesInErrors = t4;
      _.configuration = t5;
      _.callback = t6;
    },
    _EvaluateVisitor__loadModule__closure: function _EvaluateVisitor__loadModule__closure(t0, t1) {
      this.$this = t0;
      this.message = t1;
    },
    _EvaluateVisitor__loadModule__closure0: function _EvaluateVisitor__loadModule__closure0(t0, t1, t2) {
      this._box_0 = t0;
      this.callback = t1;
      this.firstLoad = t2;
    },
    _EvaluateVisitor__execute_closure: function _EvaluateVisitor__execute_closure(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.stylesheet = t2;
      _.extensionStore = t3;
      _.configuration = t4;
      _.css = t5;
      _.preModuleComments = t6;
    },
    _EvaluateVisitor__combineCss_closure: function _EvaluateVisitor__combineCss_closure() {
    },
    _EvaluateVisitor__combineCss_closure0: function _EvaluateVisitor__combineCss_closure0(t0) {
      this.selectors = t0;
    },
    _EvaluateVisitor__combineCss_visitModule: function _EvaluateVisitor__combineCss_visitModule(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.seen = t1;
      _.clone = t2;
      _.css = t3;
      _.imports = t4;
      _.sorted = t5;
    },
    _EvaluateVisitor__extendModules_closure: function _EvaluateVisitor__extendModules_closure(t0) {
      this.originalSelectors = t0;
    },
    _EvaluateVisitor__extendModules_closure0: function _EvaluateVisitor__extendModules_closure0() {
    },
    _EvaluateVisitor_visitAtRootRule_closure: function _EvaluateVisitor_visitAtRootRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitAtRootRule_closure0: function _EvaluateVisitor_visitAtRootRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure: function _EvaluateVisitor__scopeForAtRoot_closure(t0, t1, t2) {
      this.$this = t0;
      this.newParent = t1;
      this.node = t2;
    },
    _EvaluateVisitor__scopeForAtRoot_closure0: function _EvaluateVisitor__scopeForAtRoot_closure0(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure1: function _EvaluateVisitor__scopeForAtRoot_closure1(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot__closure: function _EvaluateVisitor__scopeForAtRoot__closure(t0, t1) {
      this.innerScope = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure2: function _EvaluateVisitor__scopeForAtRoot_closure2(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure3: function _EvaluateVisitor__scopeForAtRoot_closure3() {
    },
    _EvaluateVisitor__scopeForAtRoot_closure4: function _EvaluateVisitor__scopeForAtRoot_closure4(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor_visitContentRule_closure: function _EvaluateVisitor_visitContentRule_closure(t0, t1) {
      this.$this = t0;
      this.content = t1;
    },
    _EvaluateVisitor_visitDeclaration_closure: function _EvaluateVisitor_visitDeclaration_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitEachRule_closure: function _EvaluateVisitor_visitEachRule_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure0: function _EvaluateVisitor_visitEachRule_closure0(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure1: function _EvaluateVisitor_visitEachRule_closure1(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.list = t1;
      _.setVariables = t2;
      _.node = t3;
    },
    _EvaluateVisitor_visitEachRule__closure: function _EvaluateVisitor_visitEachRule__closure(t0, t1, t2) {
      this.$this = t0;
      this.setVariables = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitEachRule___closure: function _EvaluateVisitor_visitEachRule___closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure: function _EvaluateVisitor_visitAtRule_closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure0: function _EvaluateVisitor_visitAtRule_closure0(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.children = t2;
    },
    _EvaluateVisitor_visitAtRule__closure: function _EvaluateVisitor_visitAtRule__closure(t0, t1) {
      this.$this = t0;
      this.children = t1;
    },
    _EvaluateVisitor_visitAtRule_closure1: function _EvaluateVisitor_visitAtRule_closure1() {
    },
    _EvaluateVisitor_visitForRule_closure: function _EvaluateVisitor_visitForRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure0: function _EvaluateVisitor_visitForRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure1: function _EvaluateVisitor_visitForRule_closure1(t0) {
      this.fromNumber = t0;
    },
    _EvaluateVisitor_visitForRule_closure2: function _EvaluateVisitor_visitForRule_closure2(t0, t1) {
      this.toNumber = t0;
      this.fromNumber = t1;
    },
    _EvaluateVisitor_visitForRule_closure3: function _EvaluateVisitor_visitForRule_closure3(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.from = t3;
      _.direction = t4;
      _.fromNumber = t5;
    },
    _EvaluateVisitor_visitForRule__closure: function _EvaluateVisitor_visitForRule__closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitForwardRule_closure: function _EvaluateVisitor_visitForwardRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForwardRule_closure0: function _EvaluateVisitor_visitForwardRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__registerCommentsForModule_closure: function _EvaluateVisitor__registerCommentsForModule_closure() {
    },
    _EvaluateVisitor_visitIfRule_closure: function _EvaluateVisitor_visitIfRule_closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIfRule__closure: function _EvaluateVisitor_visitIfRule__closure(t0, t1) {
      this.$this = t0;
      this.clause = t1;
    },
    _EvaluateVisitor_visitIfRule___closure: function _EvaluateVisitor_visitIfRule___closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport_closure: function _EvaluateVisitor__visitDynamicImport_closure(t0, t1) {
      this.$this = t0;
      this.$import = t1;
    },
    _EvaluateVisitor__visitDynamicImport__closure: function _EvaluateVisitor__visitDynamicImport__closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport__closure0: function _EvaluateVisitor__visitDynamicImport__closure0() {
    },
    _EvaluateVisitor__visitDynamicImport__closure1: function _EvaluateVisitor__visitDynamicImport__closure1() {
    },
    _EvaluateVisitor__visitDynamicImport__closure2: function _EvaluateVisitor__visitDynamicImport__closure2(t0, t1, t2, t3, t4) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.loadsUserDefinedModules = t2;
      _.environment = t3;
      _.children = t4;
    },
    _EvaluateVisitor__applyMixin_closure0: function _EvaluateVisitor__applyMixin_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure0: function _EvaluateVisitor__applyMixin__closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin_closure: function _EvaluateVisitor__applyMixin_closure(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__applyMixin_closure1: function _EvaluateVisitor__applyMixin_closure1(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.contentCallable = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure: function _EvaluateVisitor__applyMixin__closure(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin___closure: function _EvaluateVisitor__applyMixin___closure(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin____closure: function _EvaluateVisitor__applyMixin____closure(t0, t1) {
      this.$this = t0;
      this.statement = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure: function _EvaluateVisitor_visitIncludeRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure0: function _EvaluateVisitor_visitIncludeRule_closure0(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIncludeRule_closure1: function _EvaluateVisitor_visitIncludeRule_closure1(t0) {
      this.node = t0;
    },
    _EvaluateVisitor_visitMediaRule_closure: function _EvaluateVisitor_visitMediaRule_closure(t0, t1) {
      this.$this = t0;
      this.queries = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure0: function _EvaluateVisitor_visitMediaRule_closure0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.queries = t2;
      _.mergedSources = t3;
      _.node = t4;
    },
    _EvaluateVisitor_visitMediaRule__closure: function _EvaluateVisitor_visitMediaRule__closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule___closure: function _EvaluateVisitor_visitMediaRule___closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure1: function _EvaluateVisitor_visitMediaRule_closure1(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitStyleRule_closure: function _EvaluateVisitor_visitStyleRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure0: function _EvaluateVisitor_visitStyleRule_closure0() {
    },
    _EvaluateVisitor_visitStyleRule_closure1: function _EvaluateVisitor_visitStyleRule_closure1(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitStyleRule__closure: function _EvaluateVisitor_visitStyleRule__closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure2: function _EvaluateVisitor_visitStyleRule_closure2() {
    },
    _EvaluateVisitor_visitStyleRule_closure3: function _EvaluateVisitor_visitStyleRule_closure3() {
    },
    _EvaluateVisitor_visitSupportsRule_closure: function _EvaluateVisitor_visitSupportsRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule__closure: function _EvaluateVisitor_visitSupportsRule__closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule_closure0: function _EvaluateVisitor_visitSupportsRule_closure0() {
    },
    _EvaluateVisitor__visitSupportsCondition_closure: function _EvaluateVisitor__visitSupportsCondition_closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure: function _EvaluateVisitor_visitVariableDeclaration_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure0: function _EvaluateVisitor_visitVariableDeclaration_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure1: function _EvaluateVisitor_visitVariableDeclaration_closure1(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.value = t2;
    },
    _EvaluateVisitor_visitUseRule_closure: function _EvaluateVisitor_visitUseRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWarnRule_closure: function _EvaluateVisitor_visitWarnRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule_closure: function _EvaluateVisitor_visitWhileRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule__closure: function _EvaluateVisitor_visitWhileRule__closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitBinaryOperationExpression_closure: function _EvaluateVisitor_visitBinaryOperationExpression_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__slash_closure: function _EvaluateVisitor__slash_closure(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_closure0: function _EvaluateVisitor__slash_closure0(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_recommendation: function _EvaluateVisitor__slash_recommendation() {
    },
    _EvaluateVisitor_visitVariableExpression_closure: function _EvaluateVisitor_visitVariableExpression_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitUnaryOperationExpression_closure: function _EvaluateVisitor_visitUnaryOperationExpression_closure(t0, t1) {
      this.node = t0;
      this.operand = t1;
    },
    _EvaluateVisitor_visitListExpression_closure: function _EvaluateVisitor_visitListExpression_closure(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitFunctionExpression_closure: function _EvaluateVisitor_visitFunctionExpression_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitFunctionExpression_closure0: function _EvaluateVisitor_visitFunctionExpression_closure0() {
    },
    _EvaluateVisitor_visitFunctionExpression_closure1: function _EvaluateVisitor_visitFunctionExpression_closure1(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor__checkCalculationArguments_check: function _EvaluateVisitor__checkCalculationArguments_check(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__visitCalculationExpression_closure: function _EvaluateVisitor__visitCalculationExpression_closure(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.inLegacySassFunction = t3;
    },
    _EvaluateVisitor__checkAdjacentCalculationValues_closure: function _EvaluateVisitor__checkAdjacentCalculationValues_closure(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitInterpolatedFunctionExpression_closure: function _EvaluateVisitor_visitInterpolatedFunctionExpression_closure(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.$function = t2;
    },
    _EvaluateVisitor__runUserDefinedCallable_closure: function _EvaluateVisitor__runUserDefinedCallable_closure(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.callable = t1;
      _.evaluated = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable__closure: function _EvaluateVisitor__runUserDefinedCallable__closure(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable___closure: function _EvaluateVisitor__runUserDefinedCallable___closure(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable____closure: function _EvaluateVisitor__runUserDefinedCallable____closure() {
    },
    _EvaluateVisitor__runFunctionCallable_closure: function _EvaluateVisitor__runFunctionCallable_closure(t0, t1) {
      this.$this = t0;
      this.callable = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure: function _EvaluateVisitor__runBuiltInCallable_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.evaluated = t1;
      this.namedSet = t2;
    },
    _EvaluateVisitor__runBuiltInCallable_closure0: function _EvaluateVisitor__runBuiltInCallable_closure0(t0, t1) {
      this._box_0 = t0;
      this.evaluated = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure1: function _EvaluateVisitor__runBuiltInCallable_closure1() {
    },
    _EvaluateVisitor__evaluateArguments_closure: function _EvaluateVisitor__evaluateArguments_closure() {
    },
    _EvaluateVisitor__evaluateArguments_closure0: function _EvaluateVisitor__evaluateArguments_closure0(t0, t1) {
      this.$this = t0;
      this.restNodeForSpan = t1;
    },
    _EvaluateVisitor__evaluateArguments_closure1: function _EvaluateVisitor__evaluateArguments_closure1(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.namedNodes = t3;
    },
    _EvaluateVisitor__evaluateArguments_closure2: function _EvaluateVisitor__evaluateArguments_closure2() {
    },
    _EvaluateVisitor__evaluateMacroArguments_closure: function _EvaluateVisitor__evaluateMacroArguments_closure(t0) {
      this.restArgs = t0;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure0: function _EvaluateVisitor__evaluateMacroArguments_closure0(t0, t1, t2) {
      this.$this = t0;
      this.restNodeForSpan = t1;
      this.restArgs = t2;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure1: function _EvaluateVisitor__evaluateMacroArguments_closure1(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.restArgs = t3;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure2: function _EvaluateVisitor__evaluateMacroArguments_closure2(t0, t1, t2) {
      this.$this = t0;
      this.keywordRestNodeForSpan = t1;
      this.keywordRestArgs = t2;
    },
    _EvaluateVisitor__addRestMap_closure: function _EvaluateVisitor__addRestMap_closure(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.values = t1;
      _.convert = t2;
      _.expressionNode = t3;
      _.map = t4;
      _.nodeWithSpan = t5;
    },
    _EvaluateVisitor__verifyArguments_closure: function _EvaluateVisitor__verifyArguments_closure(t0, t1, t2) {
      this.$arguments = t0;
      this.positional = t1;
      this.named = t2;
    },
    _EvaluateVisitor_visitCssAtRule_closure: function _EvaluateVisitor_visitCssAtRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssAtRule_closure0: function _EvaluateVisitor_visitCssAtRule_closure0() {
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure: function _EvaluateVisitor_visitCssKeyframeBlock_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure0: function _EvaluateVisitor_visitCssKeyframeBlock_closure0() {
    },
    _EvaluateVisitor_visitCssMediaRule_closure: function _EvaluateVisitor_visitCssMediaRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure0: function _EvaluateVisitor_visitCssMediaRule_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.node = t2;
      _.mergedSources = t3;
    },
    _EvaluateVisitor_visitCssMediaRule__closure: function _EvaluateVisitor_visitCssMediaRule__closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule___closure: function _EvaluateVisitor_visitCssMediaRule___closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure1: function _EvaluateVisitor_visitCssMediaRule_closure1(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitCssStyleRule_closure: function _EvaluateVisitor_visitCssStyleRule_closure(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitCssStyleRule__closure: function _EvaluateVisitor_visitCssStyleRule__closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssStyleRule_closure0: function _EvaluateVisitor_visitCssStyleRule_closure0() {
    },
    _EvaluateVisitor_visitCssStyleRule_closure1: function _EvaluateVisitor_visitCssStyleRule_closure1(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure: function _EvaluateVisitor_visitCssSupportsRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule__closure: function _EvaluateVisitor_visitCssSupportsRule__closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure0: function _EvaluateVisitor_visitCssSupportsRule_closure0() {
    },
    _EvaluateVisitor__performInterpolationHelper_closure: function _EvaluateVisitor__performInterpolationHelper_closure(t0) {
      this.interpolation = t0;
    },
    _EvaluateVisitor__serialize_closure: function _EvaluateVisitor__serialize_closure(t0, t1) {
      this.value = t0;
      this.quote = t1;
    },
    _EvaluateVisitor__expressionNode_closure: function _EvaluateVisitor__expressionNode_closure(t0, t1) {
      this.$this = t0;
      this.expression = t1;
    },
    _EvaluateVisitor__withoutSlash_recommendation: function _EvaluateVisitor__withoutSlash_recommendation() {
    },
    _EvaluateVisitor__stackFrame_closure: function _EvaluateVisitor__stackFrame_closure(t0) {
      this.$this = t0;
    },
    _ImportedCssVisitor: function _ImportedCssVisitor(t0) {
      this._visitor = t0;
    },
    _ImportedCssVisitor_visitCssAtRule_closure: function _ImportedCssVisitor_visitCssAtRule_closure() {
    },
    _ImportedCssVisitor_visitCssMediaRule_closure: function _ImportedCssVisitor_visitCssMediaRule_closure(t0) {
      this.hasBeenMerged = t0;
    },
    _ImportedCssVisitor_visitCssStyleRule_closure: function _ImportedCssVisitor_visitCssStyleRule_closure() {
    },
    _ImportedCssVisitor_visitCssSupportsRule_closure: function _ImportedCssVisitor_visitCssSupportsRule_closure() {
    },
    _EvaluationContext: function _EvaluationContext(t0, t1) {
      this._visitor = t0;
      this._defaultWarnNodeWithSpan = t1;
    },
    EveryCssVisitor: function EveryCssVisitor() {
    },
    EveryCssVisitor_visitCssAtRule_closure: function EveryCssVisitor_visitCssAtRule_closure(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssKeyframeBlock_closure: function EveryCssVisitor_visitCssKeyframeBlock_closure(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssMediaRule_closure: function EveryCssVisitor_visitCssMediaRule_closure(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssStyleRule_closure: function EveryCssVisitor_visitCssStyleRule_closure(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssStylesheet_closure: function EveryCssVisitor_visitCssStylesheet_closure(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssSupportsRule_closure: function EveryCssVisitor_visitCssSupportsRule_closure(t0) {
      this.$this = t0;
    },
    expressionToCalc(expression) {
      var t1 = A._setArrayType([B.C__MakeExpressionCalculationSafe.visitBinaryOperationExpression$1(expression)], type$.JSArray_Expression),
        t2 = expression.get$span(expression),
        t3 = type$.Expression;
      return new A.FunctionExpression(null, "calc", new A.ArgumentInvocation(A.List_List$unmodifiable(t1, t3), A.ConstantMap_ConstantMap$from(B.Map_empty6, type$.String, t3), null, null, t2), expression.get$span(expression));
    },
    _MakeExpressionCalculationSafe: function _MakeExpressionCalculationSafe() {
    },
    __MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor: function __MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor() {
    },
    _FindDependenciesVisitor: function _FindDependenciesVisitor(t0, t1, t2, t3, t4) {
      var _ = this;
      _._find_dependencies$_uses = t0;
      _._find_dependencies$_forwards = t1;
      _._metaLoadCss = t2;
      _._imports = t3;
      _._metaNamespaces = t4;
    },
    _FindDependenciesVisitor_visitIncludeRule_closure: function _FindDependenciesVisitor_visitIncludeRule_closure(t0) {
      this._0_0 = t0;
    },
    _FindDependenciesVisitor_visitIncludeRule_closure0: function _FindDependenciesVisitor_visitIncludeRule_closure0(t0) {
      this._0_4 = t0;
    },
    DependencyReport: function DependencyReport(t0, t1, t2, t3) {
      var _ = this;
      _.uses = t0;
      _.forwards = t1;
      _.metaLoadCss = t2;
      _.imports = t3;
    },
    __FindDependenciesVisitor_Object_RecursiveStatementVisitor: function __FindDependenciesVisitor_Object_RecursiveStatementVisitor() {
    },
    RecursiveStatementVisitor: function RecursiveStatementVisitor() {
    },
    ReplaceExpressionVisitor: function ReplaceExpressionVisitor() {
    },
    ReplaceExpressionVisitor_visitListExpression_closure: function ReplaceExpressionVisitor_visitListExpression_closure(t0) {
      this.$this = t0;
    },
    ReplaceExpressionVisitor_visitArgumentInvocation_closure: function ReplaceExpressionVisitor_visitArgumentInvocation_closure(t0) {
      this.$this = t0;
    },
    ReplaceExpressionVisitor_visitInterpolation_closure: function ReplaceExpressionVisitor_visitInterpolation_closure(t0) {
      this.$this = t0;
    },
    SelectorSearchVisitor: function SelectorSearchVisitor() {
    },
    SelectorSearchVisitor_visitComplexSelector_closure: function SelectorSearchVisitor_visitComplexSelector_closure(t0) {
      this.$this = t0;
    },
    SelectorSearchVisitor_visitCompoundSelector_closure: function SelectorSearchVisitor_visitCompoundSelector_closure(t0) {
      this.$this = t0;
    },
    serialize(node, charset, indentWidth, inspect, lineFeed, sourceMap, style, useSpaces) {
      var t1, css, t2, prefix,
        visitor = A._SerializeVisitor$(2, inspect, lineFeed, true, sourceMap, style, true);
      node.accept$1(visitor);
      t1 = visitor._serialize$_buffer;
      css = t1.toString$0(0);
      if (charset) {
        t2 = new A.CodeUnits(css);
        t2 = t2.any$1(t2, new A.serialize_closure());
      } else
        t2 = false;
      if (t2)
        prefix = style === B.OutputStyle_1 ? "\ufeff" : '@charset "UTF-8";\n';
      else
        prefix = "";
      t1 = sourceMap ? t1.buildSourceMap$1$prefix(prefix) : null;
      return new A._Record_2_sourceMap(prefix + css, t1);
    },
    serializeValue(value, inspect, quote) {
      var visitor = A._SerializeVisitor$(null, inspect, null, quote, false, null, true);
      value.accept$1(visitor);
      return visitor._serialize$_buffer.toString$0(0);
    },
    serializeSelector(selector, inspect) {
      var visitor = A._SerializeVisitor$(null, true, null, true, false, null, true);
      selector.accept$1(visitor);
      return visitor._serialize$_buffer.toString$0(0);
    },
    _SerializeVisitor$(indentWidth, inspect, lineFeed, quote, sourceMap, style, useSpaces) {
      var t1 = sourceMap ? new A.SourceMapBuffer(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Entry)) : new A.NoSourceMapBuffer(new A.StringBuffer("")),
        t2 = style == null ? B.OutputStyle_0 : style,
        t3 = indentWidth == null ? 2 : indentWidth;
      A.RangeError_checkValueInInterval(t3, 0, 10, "indentWidth");
      return new A._SerializeVisitor(t1, t2, inspect, quote, 32, t3, B.LineFeed_lf);
    },
    serialize_closure: function serialize_closure() {
    },
    _SerializeVisitor: function _SerializeVisitor(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._serialize$_buffer = t0;
      _._indentation = 0;
      _._style = t1;
      _._inspect = t2;
      _._quote = t3;
      _._indentCharacter = t4;
      _._indentWidth = t5;
      _._serialize$_lineFeed = t6;
    },
    _SerializeVisitor_visitCssComment_closure: function _SerializeVisitor_visitCssComment_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssAtRule_closure: function _SerializeVisitor_visitCssAtRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssMediaRule_closure: function _SerializeVisitor_visitCssMediaRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssImport_closure: function _SerializeVisitor_visitCssImport_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssImport__closure: function _SerializeVisitor_visitCssImport__closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssKeyframeBlock_closure: function _SerializeVisitor_visitCssKeyframeBlock_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssStyleRule_closure: function _SerializeVisitor_visitCssStyleRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssSupportsRule_closure: function _SerializeVisitor_visitCssSupportsRule_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssDeclaration_closure: function _SerializeVisitor_visitCssDeclaration_closure(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssDeclaration_closure0: function _SerializeVisitor_visitCssDeclaration_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor__writeCalculationValue_closure: function _SerializeVisitor__writeCalculationValue_closure(t0) {
      this._2_0 = t0;
    },
    _SerializeVisitor_visitList_closure: function _SerializeVisitor_visitList_closure() {
    },
    _SerializeVisitor_visitList_closure0: function _SerializeVisitor_visitList_closure0(t0, t1) {
      this.$this = t0;
      this.value = t1;
    },
    _SerializeVisitor_visitList_closure1: function _SerializeVisitor_visitList_closure1(t0) {
      this.$this = t0;
    },
    _SerializeVisitor_visitMap_closure: function _SerializeVisitor_visitMap_closure(t0) {
      this.$this = t0;
    },
    _SerializeVisitor__visitQuotedString_closure: function _SerializeVisitor__visitQuotedString_closure(t0) {
      this._1_0 = t0;
    },
    _SerializeVisitor__visitQuotedString_closure0: function _SerializeVisitor__visitQuotedString_closure0(t0) {
      this._1_0 = t0;
    },
    _SerializeVisitor_visitSelectorList_closure: function _SerializeVisitor_visitSelectorList_closure() {
    },
    _SerializeVisitor_visitPseudoSelector_closure: function _SerializeVisitor_visitPseudoSelector_closure(t0) {
      this._0_0 = t0;
    },
    _SerializeVisitor__write_closure: function _SerializeVisitor__write_closure(t0, t1) {
      this.$this = t0;
      this.value = t1;
    },
    _SerializeVisitor__visitChildren_closure: function _SerializeVisitor__visitChildren_closure(t0, t1) {
      this.$this = t0;
      this.child = t1;
    },
    _SerializeVisitor__visitChildren_closure0: function _SerializeVisitor__visitChildren_closure0(t0, t1) {
      this.$this = t0;
      this.child = t1;
    },
    OutputStyle: function OutputStyle(t0) {
      this._name = t0;
    },
    LineFeed: function LineFeed(t0) {
      this._name = t0;
    },
    StatementSearchVisitor: function StatementSearchVisitor() {
    },
    StatementSearchVisitor_visitIfRule_closure: function StatementSearchVisitor_visitIfRule_closure(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitIfRule__closure0: function StatementSearchVisitor_visitIfRule__closure0(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitIfRule_closure0: function StatementSearchVisitor_visitIfRule_closure0(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitIfRule__closure: function StatementSearchVisitor_visitIfRule__closure(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitChildren_closure: function StatementSearchVisitor_visitChildren_closure(t0) {
      this.$this = t0;
    },
    Entry: function Entry(t0, t1, t2) {
      this.source = t0;
      this.target = t1;
      this.identifierName = t2;
    },
    SingleMapping_SingleMapping$fromEntries(entries) {
      var lines, t1, t2, urls, names, files, targetEntries, t3, t4, lineNum, _i, sourceEntry, t5, t6, sourceUrl, t7, urlId,
        sourceEntries = J.toList$0$ax(entries);
      B.JSArray_methods.sort$0(sourceEntries);
      lines = A._setArrayType([], type$.JSArray_TargetLineEntry);
      t1 = type$.String;
      t2 = type$.int;
      urls = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
      names = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
      files = A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.SourceFile);
      targetEntries = A._Cell$();
      for (t2 = sourceEntries.length, t3 = type$.JSArray_TargetEntry, t4 = targetEntries.__late_helper$_name, lineNum = null, _i = 0; _i < sourceEntries.length; sourceEntries.length === t2 || (0, A.throwConcurrentModificationError)(sourceEntries), ++_i) {
        sourceEntry = sourceEntries[_i];
        if (lineNum == null || sourceEntry.target.line > lineNum) {
          lineNum = sourceEntry.target.line;
          t5 = A._setArrayType([], t3);
          targetEntries._value = t5;
          lines.push(new A.TargetLineEntry(lineNum, t5));
        }
        t5 = sourceEntry.source;
        t6 = t5.file;
        sourceUrl = t6.url;
        t7 = sourceUrl == null ? "" : sourceUrl.toString$0(0);
        urlId = urls.putIfAbsent$2(t7, new A.SingleMapping_SingleMapping$fromEntries_closure(urls));
        files.putIfAbsent$2(urlId, new A.SingleMapping_SingleMapping$fromEntries_closure0(sourceEntry));
        t7 = targetEntries._value;
        if (t7 === targetEntries)
          A.throwExpression(A.LateError$localNI(t4));
        t5 = t5.offset;
        J.add$1$ax(t7, new A.TargetEntry(sourceEntry.target.column, urlId, t6.getLine$1(t5), t6.getColumn$1(t5), null));
      }
      t2 = urls.get$values(urls);
      t2 = A.MappedIterable_MappedIterable(t2, new A.SingleMapping_SingleMapping$fromEntries_closure1(files), A._instanceType(t2)._eval$1("Iterable.E"), type$.nullable_SourceFile);
      t2 = A.List_List$of(t2, true, A._instanceType(t2)._eval$1("Iterable.E"));
      t3 = urls.$ti._eval$1("LinkedHashMapKeyIterable<1>");
      t4 = names.$ti._eval$1("LinkedHashMapKeyIterable<1>");
      return new A.SingleMapping(A.List_List$of(new A.LinkedHashMapKeyIterable(urls, t3), true, t3._eval$1("Iterable.E")), A.List_List$of(new A.LinkedHashMapKeyIterable(names, t4), true, t4._eval$1("Iterable.E")), t2, lines, null, A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.dynamic));
    },
    Mapping: function Mapping() {
    },
    SingleMapping: function SingleMapping(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.urls = t0;
      _.names = t1;
      _.files = t2;
      _.lines = t3;
      _.targetUrl = t4;
      _.sourceRoot = null;
      _.extensions = t5;
    },
    SingleMapping_SingleMapping$fromEntries_closure: function SingleMapping_SingleMapping$fromEntries_closure(t0) {
      this.urls = t0;
    },
    SingleMapping_SingleMapping$fromEntries_closure0: function SingleMapping_SingleMapping$fromEntries_closure0(t0) {
      this.sourceEntry = t0;
    },
    SingleMapping_SingleMapping$fromEntries_closure1: function SingleMapping_SingleMapping$fromEntries_closure1(t0) {
      this.files = t0;
    },
    SingleMapping_toJson_closure: function SingleMapping_toJson_closure() {
    },
    SingleMapping_toJson_closure0: function SingleMapping_toJson_closure0(t0) {
      this.result = t0;
    },
    TargetLineEntry: function TargetLineEntry(t0, t1) {
      this.line = t0;
      this.entries = t1;
    },
    TargetEntry: function TargetEntry(t0, t1, t2, t3, t4) {
      var _ = this;
      _.column = t0;
      _.sourceUrlId = t1;
      _.sourceLine = t2;
      _.sourceColumn = t3;
      _.sourceNameId = t4;
    },
    SourceFile$fromString(text, url) {
      var t1 = new A.CodeUnits(text),
        t2 = A._setArrayType([0], type$.JSArray_int),
        t3 = typeof url == "string" ? A.Uri_parse(url) : type$.nullable_Uri._as(url);
      t2 = new A.SourceFile(t3, t2, new Uint32Array(A._ensureNativeList(t1.toList$0(t1))));
      t2.SourceFile$decoded$2$url(t1, url);
      return t2;
    },
    SourceFile$decoded(decodedChars, url) {
      var t1 = A._setArrayType([0], type$.JSArray_int),
        t2 = typeof url == "string" ? A.Uri_parse(url) : type$.nullable_Uri._as(url);
      t1 = new A.SourceFile(t2, t1, new Uint32Array(A._ensureNativeList(J.toList$0$ax(decodedChars))));
      t1.SourceFile$decoded$2$url(decodedChars, url);
      return t1;
    },
    FileLocation$_(file, offset) {
      if (offset < 0)
        A.throwExpression(A.RangeError$("Offset may not be negative, was " + offset + "."));
      else if (offset > file._decodedChars.length)
        A.throwExpression(A.RangeError$("Offset " + offset + string$.x20must_n + file.get$length(file) + "."));
      return new A.FileLocation(file, offset);
    },
    _FileSpan$(file, _start, _end) {
      if (_end < _start)
        A.throwExpression(A.ArgumentError$("End " + _end + " must come after start " + _start + ".", null));
      else if (_end > file._decodedChars.length)
        A.throwExpression(A.RangeError$("End " + _end + string$.x20must_n + file.get$length(file) + "."));
      else if (_start < 0)
        A.throwExpression(A.RangeError$("Start may not be negative, was " + _start + "."));
      return new A._FileSpan(file, _start, _end);
    },
    FileSpanExtension_subspan(_this, start, end) {
      var t1, startOffset, t2;
      A.RangeError_checkValidRange(start, end, _this.get$length(_this));
      if (start === 0)
        t1 = end == null || end === _this.get$length(_this);
      else
        t1 = false;
      if (t1)
        return _this;
      startOffset = _this.get$start(_this).offset;
      t1 = _this.get$file(_this);
      t2 = end == null ? _this.get$end(_this).offset : startOffset + end;
      return t1.span$2(0, startOffset + start, t2);
    },
    SourceFile: function SourceFile(t0, t1, t2) {
      var _ = this;
      _.url = t0;
      _._lineStarts = t1;
      _._decodedChars = t2;
      _._cachedLine = null;
    },
    FileLocation: function FileLocation(t0, t1) {
      this.file = t0;
      this.offset = t1;
    },
    _FileSpan: function _FileSpan(t0, t1, t2) {
      this.file = t0;
      this._file$_start = t1;
      this._end = t2;
    },
    Highlighter$(span, color) {
      var t1 = A.Highlighter__collateLines(A._setArrayType([A._Highlight$(span, null, true)], type$.JSArray__Highlight)),
        t2 = new A.Highlighter_closure(color).call$0(),
        t3 = B.JSInt_methods.toString$0(B.JSArray_methods.get$last(t1).number + 1),
        t4 = A.Highlighter__contiguous(t1) ? 0 : 3,
        t5 = A._arrayInstanceType(t1);
      return new A.Highlighter(t1, t2, null, 1 + Math.max(t3.length, t4), new A.MappedListIterable(t1, new A.Highlighter$__closure(), t5._eval$1("MappedListIterable<1,int>")).reduce$1(0, B.CONSTANT), !A.isAllTheSame(new A.MappedListIterable(t1, new A.Highlighter$__closure0(), t5._eval$1("MappedListIterable<1,Object?>"))), new A.StringBuffer(""));
    },
    Highlighter$multiple(primarySpan, primaryLabel, secondarySpans, color, primaryColor, secondaryColor) {
      var t2, t3, t4, t5, t6,
        t1 = A._setArrayType([A._Highlight$(primarySpan, primaryLabel, true)], type$.JSArray__Highlight);
      for (t2 = secondarySpans.get$entries(secondarySpans), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        t1.push(A._Highlight$(t3.key, t3.value, false));
      }
      t1 = A.Highlighter__collateLines(t1);
      if (color)
        t2 = primaryColor == null ? "\x1b[31m" : primaryColor;
      else
        t2 = null;
      if (color)
        t3 = "\x1b[34m";
      else
        t3 = null;
      t4 = B.JSInt_methods.toString$0(B.JSArray_methods.get$last(t1).number + 1);
      t5 = A.Highlighter__contiguous(t1) ? 0 : 3;
      t6 = A._arrayInstanceType(t1);
      return new A.Highlighter(t1, t2, t3, 1 + Math.max(t4.length, t5), new A.MappedListIterable(t1, new A.Highlighter$__closure(), t6._eval$1("MappedListIterable<1,int>")).reduce$1(0, B.CONSTANT), !A.isAllTheSame(new A.MappedListIterable(t1, new A.Highlighter$__closure0(), t6._eval$1("MappedListIterable<1,Object?>"))), new A.StringBuffer(""));
    },
    Highlighter__contiguous(lines) {
      var i, thisLine, nextLine;
      for (i = 0; i < lines.length - 1;) {
        thisLine = lines[i];
        ++i;
        nextLine = lines[i];
        if (thisLine.number + 1 !== nextLine.number && J.$eq$(thisLine.url, nextLine.url))
          return false;
      }
      return true;
    },
    Highlighter__collateLines(highlights) {
      var t1, t2, t3,
        highlightsByUrl = A.groupBy(highlights, new A.Highlighter__collateLines_closure(), type$._Highlight, type$.Object);
      for (t1 = highlightsByUrl.get$values(highlightsByUrl), t1 = new A.MappedIterator(J.get$iterator$ax(t1.__internal$_iterable), t1._f), t2 = A._instanceType(t1)._rest[1]; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        J.sort$1$ax(t3, new A.Highlighter__collateLines_closure0());
      }
      t1 = highlightsByUrl.get$entries(highlightsByUrl);
      t2 = A._instanceType(t1)._eval$1("ExpandIterable<Iterable.E,_Line>");
      return A.List_List$of(new A.ExpandIterable(t1, new A.Highlighter__collateLines_closure1(), t2), true, t2._eval$1("Iterable.E"));
    },
    _Highlight$(span, label, primary) {
      var t2,
        t1 = new A._Highlight_closure(span).call$0();
      if (label == null)
        t2 = null;
      else
        t2 = A.stringReplaceAllUnchecked(label, "\r\n", "\n");
      return new A._Highlight(t1, primary, t2);
    },
    _Highlight__normalizeNewlines(span) {
      var endOffset, t1, i, t2, t3, t4,
        text = span.get$text();
      if (!B.JSString_methods.contains$1(text, "\r\n"))
        return span;
      endOffset = span.get$end(span).get$offset();
      for (t1 = text.length - 1, i = 0; i < t1; ++i)
        if (text.charCodeAt(i) === 13 && text.charCodeAt(i + 1) === 10)
          --endOffset;
      t1 = span.get$start(span);
      t2 = span.get$sourceUrl(span);
      t3 = span.get$end(span).get$line();
      t2 = A.SourceLocation$(endOffset, span.get$end(span).get$column(), t3, t2);
      t3 = A.stringReplaceAllUnchecked(text, "\r\n", "\n");
      t4 = span.get$context(span);
      return A.SourceSpanWithContext$(t1, t2, t3, A.stringReplaceAllUnchecked(t4, "\r\n", "\n"));
    },
    _Highlight__normalizeTrailingNewline(span) {
      var context, text, start, end, t1, t2, t3;
      if (!B.JSString_methods.endsWith$1(span.get$context(span), "\n"))
        return span;
      if (B.JSString_methods.endsWith$1(span.get$text(), "\n\n"))
        return span;
      context = B.JSString_methods.substring$2(span.get$context(span), 0, span.get$context(span).length - 1);
      text = span.get$text();
      start = span.get$start(span);
      end = span.get$end(span);
      if (B.JSString_methods.endsWith$1(span.get$text(), "\n")) {
        t1 = A.findLineStart(span.get$context(span), span.get$text(), span.get$start(span).get$column());
        t1.toString;
        t1 = t1 + span.get$start(span).get$column() + span.get$length(span) === span.get$context(span).length;
      } else
        t1 = false;
      if (t1) {
        text = B.JSString_methods.substring$2(span.get$text(), 0, span.get$text().length - 1);
        if (text.length === 0)
          end = start;
        else {
          t1 = span.get$end(span).get$offset();
          t2 = span.get$sourceUrl(span);
          t3 = span.get$end(span).get$line();
          end = A.SourceLocation$(t1 - 1, A._Highlight__lastLineLength(context), t3 - 1, t2);
          start = span.get$start(span).get$offset() === span.get$end(span).get$offset() ? end : span.get$start(span);
        }
      }
      return A.SourceSpanWithContext$(start, end, text, context);
    },
    _Highlight__normalizeEndOfLine(span) {
      var text, t1, t2, t3, t4;
      if (span.get$end(span).get$column() !== 0)
        return span;
      if (span.get$end(span).get$line() === span.get$start(span).get$line())
        return span;
      text = B.JSString_methods.substring$2(span.get$text(), 0, span.get$text().length - 1);
      t1 = span.get$start(span);
      t2 = span.get$end(span).get$offset();
      t3 = span.get$sourceUrl(span);
      t4 = span.get$end(span).get$line();
      t3 = A.SourceLocation$(t2 - 1, text.length - B.JSString_methods.lastIndexOf$1(text, "\n") - 1, t4 - 1, t3);
      return A.SourceSpanWithContext$(t1, t3, text, B.JSString_methods.endsWith$1(span.get$context(span), "\n") ? B.JSString_methods.substring$2(span.get$context(span), 0, span.get$context(span).length - 1) : span.get$context(span));
    },
    _Highlight__lastLineLength(text) {
      var t1 = text.length;
      if (t1 === 0)
        return 0;
      else if (text.charCodeAt(t1 - 1) === 10)
        return t1 === 1 ? 0 : t1 - B.JSString_methods.lastIndexOf$2(text, "\n", t1 - 2) - 1;
      else
        return t1 - B.JSString_methods.lastIndexOf$1(text, "\n") - 1;
    },
    Highlighter: function Highlighter(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._lines = t0;
      _._primaryColor = t1;
      _._secondaryColor = t2;
      _._paddingBeforeSidebar = t3;
      _._maxMultilineSpans = t4;
      _._multipleFiles = t5;
      _._highlighter$_buffer = t6;
    },
    Highlighter_closure: function Highlighter_closure(t0) {
      this.color = t0;
    },
    Highlighter$__closure: function Highlighter$__closure() {
    },
    Highlighter$___closure: function Highlighter$___closure() {
    },
    Highlighter$__closure0: function Highlighter$__closure0() {
    },
    Highlighter__collateLines_closure: function Highlighter__collateLines_closure() {
    },
    Highlighter__collateLines_closure0: function Highlighter__collateLines_closure0() {
    },
    Highlighter__collateLines_closure1: function Highlighter__collateLines_closure1() {
    },
    Highlighter__collateLines__closure: function Highlighter__collateLines__closure(t0) {
      this.line = t0;
    },
    Highlighter_highlight_closure: function Highlighter_highlight_closure() {
    },
    Highlighter__writeFileStart_closure: function Highlighter__writeFileStart_closure(t0) {
      this.$this = t0;
    },
    Highlighter__writeMultilineHighlights_closure: function Highlighter__writeMultilineHighlights_closure(t0, t1, t2) {
      this.$this = t0;
      this.startLine = t1;
      this.line = t2;
    },
    Highlighter__writeMultilineHighlights_closure0: function Highlighter__writeMultilineHighlights_closure0(t0, t1) {
      this.$this = t0;
      this.highlight = t1;
    },
    Highlighter__writeMultilineHighlights_closure1: function Highlighter__writeMultilineHighlights_closure1(t0) {
      this.$this = t0;
    },
    Highlighter__writeMultilineHighlights_closure2: function Highlighter__writeMultilineHighlights_closure2(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.current = t2;
      _.startLine = t3;
      _.line = t4;
      _.highlight = t5;
      _.endLine = t6;
    },
    Highlighter__writeMultilineHighlights__closure: function Highlighter__writeMultilineHighlights__closure(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    Highlighter__writeMultilineHighlights__closure0: function Highlighter__writeMultilineHighlights__closure0(t0, t1) {
      this.$this = t0;
      this.vertical = t1;
    },
    Highlighter__writeHighlightedText_closure: function Highlighter__writeHighlightedText_closure(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.text = t1;
      _.startColumn = t2;
      _.endColumn = t3;
    },
    Highlighter__writeIndicator_closure: function Highlighter__writeIndicator_closure(t0, t1, t2) {
      this.$this = t0;
      this.line = t1;
      this.highlight = t2;
    },
    Highlighter__writeIndicator_closure0: function Highlighter__writeIndicator_closure0(t0, t1, t2) {
      this.$this = t0;
      this.line = t1;
      this.highlight = t2;
    },
    Highlighter__writeIndicator_closure1: function Highlighter__writeIndicator_closure1(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.coversWholeLine = t1;
      _.line = t2;
      _.highlight = t3;
    },
    Highlighter__writeLabel_closure: function Highlighter__writeLabel_closure(t0, t1) {
      this.$this = t0;
      this.lines = t1;
    },
    Highlighter__writeLabel_closure0: function Highlighter__writeLabel_closure0(t0, t1) {
      this.$this = t0;
      this.text = t1;
    },
    Highlighter__writeSidebar_closure: function Highlighter__writeSidebar_closure(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.end = t2;
    },
    _Highlight: function _Highlight(t0, t1, t2) {
      this.span = t0;
      this.isPrimary = t1;
      this.label = t2;
    },
    _Highlight_closure: function _Highlight_closure(t0) {
      this.span = t0;
    },
    _Line: function _Line(t0, t1, t2, t3) {
      var _ = this;
      _.text = t0;
      _.number = t1;
      _.url = t2;
      _.highlights = t3;
    },
    SourceLocation$(offset, column, line, sourceUrl) {
      var t1 = line == null,
        t2 = t1 ? 0 : line,
        t3 = column == null,
        t4 = t3 ? offset : column;
      if (offset < 0)
        A.throwExpression(A.RangeError$("Offset may not be negative, was " + offset + "."));
      else if (!t1 && line < 0)
        A.throwExpression(A.RangeError$("Line may not be negative, was " + A.S(line) + "."));
      else if (!t3 && column < 0)
        A.throwExpression(A.RangeError$("Column may not be negative, was " + A.S(column) + "."));
      return new A.SourceLocation(sourceUrl, offset, t2, t4);
    },
    SourceLocation: function SourceLocation(t0, t1, t2, t3) {
      var _ = this;
      _.sourceUrl = t0;
      _.offset = t1;
      _.line = t2;
      _.column = t3;
    },
    SourceLocationMixin: function SourceLocationMixin() {
    },
    SourceSpanExtension_messageMultiple(_this, message, label, secondarySpans, color, primaryColor, secondaryColor) {
      var t2,
        t1 = _this.get$start(_this);
      t1 = t1.file.getLine$1(t1.offset);
      t2 = _this.get$start(_this);
      t2 = "" + ("line " + (t1 + 1) + ", column " + (t2.file.getColumn$1(t2.offset) + 1));
      if (_this.get$sourceUrl(_this) != null) {
        t1 = _this.get$sourceUrl(_this);
        t1 = t2 + (" of " + $.$get$context().prettyUri$1(t1));
      } else
        t1 = t2;
      t1 = t1 + (": " + message + "\n") + A.Highlighter$multiple(_this, label, secondarySpans, color, primaryColor, secondaryColor).highlight$0();
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    SourceSpanBase: function SourceSpanBase() {
    },
    SourceSpanException: function SourceSpanException() {
    },
    SourceSpanFormatException: function SourceSpanFormatException(t0, t1, t2) {
      this.source = t0;
      this._span_exception$_message = t1;
      this._span = t2;
    },
    MultiSourceSpanException: function MultiSourceSpanException() {
    },
    MultiSourceSpanFormatException: function MultiSourceSpanFormatException(t0, t1, t2, t3) {
      var _ = this;
      _.primaryLabel = t0;
      _.secondarySpans = t1;
      _._span_exception$_message = t2;
      _._span = t3;
    },
    SourceSpanMixin: function SourceSpanMixin() {
    },
    SourceSpanWithContext$(start, end, text, _context) {
      var t1 = new A.SourceSpanWithContext(_context, start, end, text);
      t1.SourceSpanBase$3(start, end, text);
      if (!B.JSString_methods.contains$1(_context, text))
        A.throwExpression(A.ArgumentError$('The context line "' + _context + '" must contain "' + text + '".', null));
      if (A.findLineStart(_context, text, start.get$column()) == null)
        A.throwExpression(A.ArgumentError$('The span text "' + text + '" must start at column ' + (start.get$column() + 1) + ' in a line within "' + _context + '".', null));
      return t1;
    },
    SourceSpanWithContext: function SourceSpanWithContext(t0, t1, t2, t3) {
      var _ = this;
      _._context = t0;
      _.start = t1;
      _.end = t2;
      _.text = t3;
    },
    Chain_Chain$parse(chain) {
      var t1, t2,
        _s51_ = string$.x3d_____;
      if (chain.length === 0)
        return new A.Chain(A.List_List$unmodifiable(A._setArrayType([], type$.JSArray_Trace), type$.Trace));
      t1 = $.$get$vmChainGap();
      if (B.JSString_methods.contains$1(chain, t1)) {
        t1 = B.JSString_methods.split$1(chain, t1);
        t2 = A._arrayInstanceType(t1);
        return new A.Chain(A.List_List$unmodifiable(new A.MappedIterable(new A.WhereIterable(t1, new A.Chain_Chain$parse_closure(), t2._eval$1("WhereIterable<1>")), A.trace_Trace___parseVM_tearOff$closure(), t2._eval$1("MappedIterable<1,Trace>")), type$.Trace));
      }
      if (!B.JSString_methods.contains$1(chain, _s51_))
        return new A.Chain(A.List_List$unmodifiable(A._setArrayType([A.Trace_Trace$parse(chain)], type$.JSArray_Trace), type$.Trace));
      return new A.Chain(A.List_List$unmodifiable(new A.MappedListIterable(A._setArrayType(chain.split(_s51_), type$.JSArray_String), A.trace_Trace___parseFriendly_tearOff$closure(), type$.MappedListIterable_String_Trace), type$.Trace));
    },
    Chain: function Chain(t0) {
      this.traces = t0;
    },
    Chain_Chain$parse_closure: function Chain_Chain$parse_closure() {
    },
    Chain_toTrace_closure: function Chain_toTrace_closure() {
    },
    Chain_toString_closure0: function Chain_toString_closure0() {
    },
    Chain_toString__closure0: function Chain_toString__closure0() {
    },
    Chain_toString_closure: function Chain_toString_closure(t0) {
      this.longest = t0;
    },
    Chain_toString__closure: function Chain_toString__closure(t0) {
      this.longest = t0;
    },
    Frame___parseVM_tearOff(frame) {
      return A.Frame_Frame$parseVM(frame);
    },
    Frame_Frame$parseVM(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseVM_closure(frame));
    },
    Frame___parseV8_tearOff(frame) {
      return A.Frame_Frame$parseV8(frame);
    },
    Frame_Frame$parseV8(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseV8_closure(frame));
    },
    Frame_Frame$_parseFirefoxEval(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$_parseFirefoxEval_closure(frame));
    },
    Frame___parseFirefox_tearOff(frame) {
      return A.Frame_Frame$parseFirefox(frame);
    },
    Frame_Frame$parseFirefox(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseFirefox_closure(frame));
    },
    Frame___parseFriendly_tearOff(frame) {
      return A.Frame_Frame$parseFriendly(frame);
    },
    Frame_Frame$parseFriendly(frame) {
      return A.Frame__catchFormatException(frame, new A.Frame_Frame$parseFriendly_closure(frame));
    },
    Frame__uriOrPathToUri(uriOrPath) {
      if (B.JSString_methods.contains$1(uriOrPath, $.$get$Frame__uriRegExp()))
        return A.Uri_parse(uriOrPath);
      else if (B.JSString_methods.contains$1(uriOrPath, $.$get$Frame__windowsRegExp()))
        return A._Uri__Uri$file(uriOrPath, true);
      else if (B.JSString_methods.startsWith$1(uriOrPath, "/"))
        return A._Uri__Uri$file(uriOrPath, false);
      if (B.JSString_methods.contains$1(uriOrPath, "\\"))
        return $.$get$windows().toUri$1(uriOrPath);
      return A.Uri_parse(uriOrPath);
    },
    Frame__catchFormatException(text, body) {
      var t1, exception;
      try {
        t1 = body.call$0();
        return t1;
      } catch (exception) {
        if (type$.FormatException._is(A.unwrapException(exception)))
          return new A.UnparsedFrame(A._Uri__Uri(null, "unparsed", null, null), text);
        else
          throw exception;
      }
    },
    Frame: function Frame(t0, t1, t2, t3) {
      var _ = this;
      _.uri = t0;
      _.line = t1;
      _.column = t2;
      _.member = t3;
    },
    Frame_Frame$parseVM_closure: function Frame_Frame$parseVM_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseV8_closure: function Frame_Frame$parseV8_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseV8_closure_parseLocation: function Frame_Frame$parseV8_closure_parseLocation(t0) {
      this.frame = t0;
    },
    Frame_Frame$_parseFirefoxEval_closure: function Frame_Frame$_parseFirefoxEval_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseFirefox_closure: function Frame_Frame$parseFirefox_closure(t0) {
      this.frame = t0;
    },
    Frame_Frame$parseFriendly_closure: function Frame_Frame$parseFriendly_closure(t0) {
      this.frame = t0;
    },
    LazyTrace: function LazyTrace(t0) {
      this._thunk = t0;
      this.__LazyTrace__trace_FI = $;
    },
    LazyTrace_terse_closure: function LazyTrace_terse_closure(t0) {
      this.$this = t0;
    },
    Trace_Trace$from(trace) {
      if (type$.Trace._is(trace))
        return trace;
      if (trace instanceof A.Chain)
        return trace.toTrace$0();
      return new A.LazyTrace(new A.Trace_Trace$from_closure(trace));
    },
    Trace_Trace$parse(trace) {
      var error, t1, exception;
      try {
        if (trace.length === 0) {
          t1 = A.Trace$(A._setArrayType([], type$.JSArray_Frame), null);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, $.$get$_v8Trace())) {
          t1 = A.Trace$parseV8(trace);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, "\tat ")) {
          t1 = A.Trace$parseJSCore(trace);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, $.$get$_firefoxSafariTrace()) || B.JSString_methods.contains$1(trace, $.$get$_firefoxEvalTrace())) {
          t1 = A.Trace$parseFirefox(trace);
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, string$.x3d_____)) {
          t1 = A.Chain_Chain$parse(trace).toTrace$0();
          return t1;
        }
        if (B.JSString_methods.contains$1(trace, $.$get$_friendlyTrace())) {
          t1 = A.Trace$parseFriendly(trace);
          return t1;
        }
        t1 = A.Trace$parseVM(trace);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.FormatException._is(t1)) {
          error = t1;
          throw A.wrapException(A.FormatException$(J.get$message$x(error) + "\nStack trace:\n" + trace, null, null));
        } else
          throw exception;
      }
    },
    Trace___parseVM_tearOff(trace) {
      return A.Trace$parseVM(trace);
    },
    Trace$parseVM(trace) {
      var t1 = A.List_List$unmodifiable(A.Trace__parseVM(trace), type$.Frame);
      return new A.Trace(t1, new A._StringStackTrace(trace));
    },
    Trace__parseVM(trace) {
      var $frames,
        t1 = B.JSString_methods.trim$0(trace),
        t2 = $.$get$vmChainGap(),
        t3 = type$.WhereIterable_String,
        lines = new A.WhereIterable(A._setArrayType(A.stringReplaceAllUnchecked(t1, t2, "").split("\n"), type$.JSArray_String), new A.Trace__parseVM_closure(), t3);
      if (!lines.get$iterator(lines).moveNext$0())
        return A._setArrayType([], type$.JSArray_Frame);
      t1 = A.TakeIterable_TakeIterable(lines, lines.get$length(lines) - 1, t3._eval$1("Iterable.E"));
      t1 = A.MappedIterable_MappedIterable(t1, A.frame_Frame___parseVM_tearOff$closure(), A._instanceType(t1)._eval$1("Iterable.E"), type$.Frame);
      $frames = A.List_List$of(t1, true, A._instanceType(t1)._eval$1("Iterable.E"));
      if (!J.endsWith$1$s(lines.get$last(lines), ".da"))
        B.JSArray_methods.add$1($frames, A.Frame_Frame$parseVM(lines.get$last(lines)));
      return $frames;
    },
    Trace$parseV8(trace) {
      var t1 = A.SubListIterable$(A._setArrayType(trace.split("\n"), type$.JSArray_String), 1, null, type$.String).super$Iterable$skipWhile(0, new A.Trace$parseV8_closure()),
        t2 = type$.Frame;
      t2 = A.List_List$unmodifiable(A.MappedIterable_MappedIterable(t1, A.frame_Frame___parseV8_tearOff$closure(), t1.$ti._eval$1("Iterable.E"), t2), t2);
      return new A.Trace(t2, new A._StringStackTrace(trace));
    },
    Trace$parseJSCore(trace) {
      var t1 = A.List_List$unmodifiable(new A.MappedIterable(new A.WhereIterable(A._setArrayType(trace.split("\n"), type$.JSArray_String), new A.Trace$parseJSCore_closure(), type$.WhereIterable_String), A.frame_Frame___parseV8_tearOff$closure(), type$.MappedIterable_String_Frame), type$.Frame);
      return new A.Trace(t1, new A._StringStackTrace(trace));
    },
    Trace$parseFirefox(trace) {
      var t1 = A.List_List$unmodifiable(new A.MappedIterable(new A.WhereIterable(A._setArrayType(B.JSString_methods.trim$0(trace).split("\n"), type$.JSArray_String), new A.Trace$parseFirefox_closure(), type$.WhereIterable_String), A.frame_Frame___parseFirefox_tearOff$closure(), type$.MappedIterable_String_Frame), type$.Frame);
      return new A.Trace(t1, new A._StringStackTrace(trace));
    },
    Trace___parseFriendly_tearOff(trace) {
      return A.Trace$parseFriendly(trace);
    },
    Trace$parseFriendly(trace) {
      var t1 = trace.length === 0 ? A._setArrayType([], type$.JSArray_Frame) : new A.MappedIterable(new A.WhereIterable(A._setArrayType(B.JSString_methods.trim$0(trace).split("\n"), type$.JSArray_String), new A.Trace$parseFriendly_closure(), type$.WhereIterable_String), A.frame_Frame___parseFriendly_tearOff$closure(), type$.MappedIterable_String_Frame);
      t1 = A.List_List$unmodifiable(t1, type$.Frame);
      return new A.Trace(t1, new A._StringStackTrace(trace));
    },
    Trace$($frames, original) {
      var t1 = A.List_List$unmodifiable($frames, type$.Frame);
      return new A.Trace(t1, new A._StringStackTrace(original == null ? "" : original));
    },
    Trace: function Trace(t0, t1) {
      this.frames = t0;
      this.original = t1;
    },
    Trace_Trace$from_closure: function Trace_Trace$from_closure(t0) {
      this.trace = t0;
    },
    Trace__parseVM_closure: function Trace__parseVM_closure() {
    },
    Trace$parseV8_closure: function Trace$parseV8_closure() {
    },
    Trace$parseJSCore_closure: function Trace$parseJSCore_closure() {
    },
    Trace$parseFirefox_closure: function Trace$parseFirefox_closure() {
    },
    Trace$parseFriendly_closure: function Trace$parseFriendly_closure() {
    },
    Trace_terse_closure: function Trace_terse_closure() {
    },
    Trace_foldFrames_closure: function Trace_foldFrames_closure(t0) {
      this.oldPredicate = t0;
    },
    Trace_foldFrames_closure0: function Trace_foldFrames_closure0(t0) {
      this._box_0 = t0;
    },
    Trace_toString_closure0: function Trace_toString_closure0() {
    },
    Trace_toString_closure: function Trace_toString_closure(t0) {
      this.longest = t0;
    },
    UnparsedFrame: function UnparsedFrame(t0, t1) {
      this.uri = t0;
      this.member = t1;
    },
    TransformByHandlers_transformByHandlers(_this, onData, onDone, $S, $T) {
      var _null = null, t1 = {},
        controller = A.StreamController_StreamController(_null, _null, _null, _null, true, $T);
      t1.subscription = null;
      controller.onListen = new A.TransformByHandlers_transformByHandlers_closure(t1, _this, onData, controller, A.instantiate1(A.from_handlers__TransformByHandlers__defaultHandleError$closure(), $T), onDone, $S);
      return controller.get$stream();
    },
    TransformByHandlers__defaultHandleError(error, stackTrace, sink) {
      sink.addError$2(error, stackTrace);
    },
    TransformByHandlers_transformByHandlers_closure: function TransformByHandlers_transformByHandlers_closure(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._box_1 = t0;
      _._this = t1;
      _.handleData = t2;
      _.controller = t3;
      _.handleError = t4;
      _.handleDone = t5;
      _.S = t6;
    },
    TransformByHandlers_transformByHandlers__closure: function TransformByHandlers_transformByHandlers__closure(t0, t1, t2) {
      this.handleData = t0;
      this.controller = t1;
      this.S = t2;
    },
    TransformByHandlers_transformByHandlers__closure1: function TransformByHandlers_transformByHandlers__closure1(t0, t1) {
      this.handleError = t0;
      this.controller = t1;
    },
    TransformByHandlers_transformByHandlers__closure0: function TransformByHandlers_transformByHandlers__closure0(t0, t1, t2) {
      this._box_0 = t0;
      this.handleDone = t1;
      this.controller = t2;
    },
    TransformByHandlers_transformByHandlers__closure2: function TransformByHandlers_transformByHandlers__closure2(t0, t1) {
      this._box_1 = t0;
      this._box_0 = t1;
    },
    RateLimit__debounceAggregate(_this, duration, collect, leading, trailing, $T, $S) {
      var t1 = {};
      t1.soFar = t1.timer = null;
      t1.emittedLatestAsLeading = t1.shouldClose = t1.hasPending = false;
      return A.TransformByHandlers_transformByHandlers(_this, new A.RateLimit__debounceAggregate_closure(t1, $S, collect, false, duration, true, $T), new A.RateLimit__debounceAggregate_closure0(t1, true, $S), $T, $S);
    },
    _collect($event, soFar, $T) {
      var t1 = soFar == null ? A._setArrayType([], $T._eval$1("JSArray<0>")) : soFar;
      J.add$1$ax(t1, $event);
      return t1;
    },
    RateLimit__debounceAggregate_closure: function RateLimit__debounceAggregate_closure(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._box_0 = t0;
      _.S = t1;
      _.collect = t2;
      _.leading = t3;
      _.duration = t4;
      _.trailing = t5;
      _.T = t6;
    },
    RateLimit__debounceAggregate_closure_emit: function RateLimit__debounceAggregate_closure_emit(t0, t1, t2) {
      this._box_0 = t0;
      this.sink = t1;
      this.S = t2;
    },
    RateLimit__debounceAggregate__closure: function RateLimit__debounceAggregate__closure(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.trailing = t1;
      _.emit = t2;
      _.sink = t3;
    },
    RateLimit__debounceAggregate_closure0: function RateLimit__debounceAggregate_closure0(t0, t1, t2) {
      this._box_0 = t0;
      this.trailing = t1;
      this.S = t2;
    },
    StringScannerException$(message, span, source) {
      return new A.StringScannerException(source, message, span);
    },
    StringScannerException: function StringScannerException(t0, t1, t2) {
      this.source = t0;
      this._span_exception$_message = t1;
      this._span = t2;
    },
    LineScanner$(string) {
      return new A.LineScanner(null, string);
    },
    LineScanner: function LineScanner(t0, t1) {
      var _ = this;
      _._line_scanner$_column = _._line_scanner$_line = 0;
      _.sourceUrl = t0;
      _.string = t1;
      _._string_scanner$_position = 0;
      _._lastMatchPosition = _._lastMatch = null;
    },
    SpanScanner$(string, sourceUrl) {
      var t2,
        t1 = A.SourceFile$fromString(string, sourceUrl);
      if (sourceUrl == null)
        t2 = null;
      else
        t2 = typeof sourceUrl == "string" ? A.Uri_parse(sourceUrl) : type$.Uri._as(sourceUrl);
      return new A.SpanScanner(t1, t2, string);
    },
    SpanScanner: function SpanScanner(t0, t1, t2) {
      var _ = this;
      _._sourceFile = t0;
      _.sourceUrl = t1;
      _.string = t2;
      _._string_scanner$_position = 0;
      _._lastMatchPosition = _._lastMatch = null;
    },
    _SpanScannerState: function _SpanScannerState(t0, t1) {
      this._scanner = t0;
      this.position = t1;
    },
    StringScanner$(string, position, sourceUrl) {
      var t1;
      if (sourceUrl == null)
        t1 = null;
      else
        t1 = typeof sourceUrl == "string" ? A.Uri_parse(sourceUrl) : type$.Uri._as(sourceUrl);
      return new A.StringScanner(t1, string);
    },
    StringScanner: function StringScanner(t0, t1) {
      var _ = this;
      _.sourceUrl = t0;
      _.string = t1;
      _._string_scanner$_position = 0;
      _._lastMatchPosition = _._lastMatch = null;
    },
    AsciiGlyphSet: function AsciiGlyphSet() {
    },
    UnicodeGlyphSet: function UnicodeGlyphSet() {
    },
    WatchEvent: function WatchEvent(t0, t1) {
      this.type = t0;
      this.path = t1;
    },
    ChangeType: function ChangeType(t0) {
      this._watch_event$_name = t0;
    },
    AnySelectorVisitor0: function AnySelectorVisitor0() {
    },
    AnySelectorVisitor_visitComplexSelector_closure0: function AnySelectorVisitor_visitComplexSelector_closure0(t0) {
      this.$this = t0;
    },
    AnySelectorVisitor_visitCompoundSelector_closure0: function AnySelectorVisitor_visitCompoundSelector_closure0(t0) {
      this.$this = t0;
    },
    SupportsAnything0: function SupportsAnything0(t0, t1) {
      this.contents = t0;
      this.span = t1;
    },
    Argument0: function Argument0(t0, t1, t2) {
      this.name = t0;
      this.defaultValue = t1;
      this.span = t2;
    },
    ArgumentDeclaration_ArgumentDeclaration$parse0(contents, url) {
      return A.ScssParser$0(contents, null, url).parseArgumentDeclaration$0();
    },
    ArgumentDeclaration0: function ArgumentDeclaration0(t0, t1, t2) {
      this.$arguments = t0;
      this.restArgument = t1;
      this.span = t2;
    },
    ArgumentDeclaration_verify_closure1: function ArgumentDeclaration_verify_closure1() {
    },
    ArgumentDeclaration_verify_closure2: function ArgumentDeclaration_verify_closure2() {
    },
    ArgumentInvocation$empty0(span) {
      return new A.ArgumentInvocation0(B.List_empty20, B.Map_empty14, null, null, span);
    },
    ArgumentInvocation0: function ArgumentInvocation0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.positional = t0;
      _.named = t1;
      _.rest = t2;
      _.keywordRest = t3;
      _.span = t4;
    },
    argumentListClass_closure: function argumentListClass_closure() {
    },
    argumentListClass__closure: function argumentListClass__closure() {
    },
    argumentListClass__closure0: function argumentListClass__closure0() {
    },
    SassArgumentList$0(contents, keywords, separator) {
      var t1 = type$.Value_2;
      t1 = new A.SassArgumentList0(A.ConstantMap_ConstantMap$from(keywords, type$.String, t1), A.List_List$unmodifiable(contents, t1), separator, false);
      t1.SassList$3$brackets0(contents, separator, false);
      return t1;
    },
    SassArgumentList0: function SassArgumentList0(t0, t1, t2, t3) {
      var _ = this;
      _._argument_list$_keywords = t0;
      _._argument_list$_wereKeywordsAccessed = false;
      _._list1$_contents = t1;
      _._list1$_separator = t2;
      _._list1$_hasBrackets = t3;
    },
    JSArray1: function JSArray1() {
    },
    AsyncImporter0: function AsyncImporter0() {
    },
    JSToDartAsyncImporter: function JSToDartAsyncImporter(t0, t1, t2) {
      this._async0$_canonicalize = t0;
      this._load = t1;
      this._nonCanonicalSchemes = t2;
    },
    JSToDartAsyncImporter_canonicalize_closure: function JSToDartAsyncImporter_canonicalize_closure(t0, t1) {
      this.$this = t0;
      this.url = t1;
    },
    JSToDartAsyncImporter_load_closure: function JSToDartAsyncImporter_load_closure(t0, t1) {
      this.$this = t0;
      this.url = t1;
    },
    AsyncBuiltInCallable$mixin0($name, $arguments, callback, url) {
      return new A.AsyncBuiltInCallable0($name, A.ScssParser$0("@mixin " + $name + "(" + $arguments + ") {", null, url).parseArgumentDeclaration$0(), new A.AsyncBuiltInCallable$mixin_closure0(callback), false);
    },
    AsyncBuiltInCallable0: function AsyncBuiltInCallable0(t0, t1, t2, t3) {
      var _ = this;
      _.name = t0;
      _._async_built_in0$_arguments = t1;
      _._async_built_in0$_callback = t2;
      _.acceptsContent = t3;
    },
    AsyncBuiltInCallable$mixin_closure0: function AsyncBuiltInCallable$mixin_closure0(t0) {
      this.callback = t0;
    },
    compileAsync0(path, charset, fatalDeprecations, functions, futureDeprecations, importCache, indentWidth, lineFeed, logger, nodeImporter, quietDeps, sourceMap, style, syntax, useSpaces, verbose) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CompileResult_2),
        $async$returnValue, t2, t3, t4, t0, stylesheet, result, t1;
      var $async$compileAsync0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.Deprecation_2;
              logger = new A.DeprecationHandlingLogger0(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), logger, A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashSet_LinkedHashSet$_empty(t1), !verbose);
              t1 = nodeImporter == null;
              if (t1)
                t2 = syntax == null || syntax === A.Syntax_forPath0(path);
              else
                t2 = false;
              $async$goto = t2 ? 3 : 5;
              break;
            case 3:
              // then
              if (importCache == null)
                importCache = A.AsyncImportCache$none(logger);
              t2 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
              t3 = A.isNodeJs() ? self.process : null;
              if (!J.$eq$(t3 == null ? null : J.get$platform$x(t3), "win32")) {
                t3 = A.isNodeJs() ? self.process : null;
                t3 = J.$eq$(t3 == null ? null : J.get$platform$x(t3), "darwin");
              } else
                t3 = true;
              if (t3) {
                t3 = $.$get$context();
                t4 = A._realCasePath0(A.absolute(t3.normalize$1(path), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
                t0 = t4;
                t4 = t3;
                t3 = t0;
              } else {
                t3 = $.$get$context();
                t4 = t3.canonicalize$1(0, path);
                t0 = t4;
                t4 = t3;
                t3 = t0;
              }
              $async$goto = 6;
              return A._asyncAwait(importCache.importCanonical$3$originalUrl(new A.FilesystemImporter0(t2), t4.toUri$1(t3), t4.toUri$1(path)), $async$compileAsync0);
            case 6:
              // returning from await.
              t4 = $async$result;
              t4.toString;
              stylesheet = t4;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              t2 = A.readFile0(path);
              t3 = syntax == null ? A.Syntax_forPath0(path) : syntax;
              stylesheet = A.Stylesheet_Stylesheet$parse0(t2, t3, logger, $.$get$context().toUri$1(path));
            case 4:
              // join
              $async$goto = 7;
              return A._asyncAwait(A._compileStylesheet2(stylesheet, logger, importCache, nodeImporter, new A.FilesystemImporter0(A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null)), functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset), $async$compileAsync0);
            case 7:
              // returning from await.
              result = $async$result;
              logger.summarize$1$js(!t1);
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$compileAsync0, $async$completer);
    },
    compileStringAsync0(source, charset, functions, importCache, importer, indentWidth, lineFeed, logger, nodeImporter, quietDeps, sourceMap, style, syntax, url, useSpaces, verbose) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CompileResult_2),
        $async$returnValue, stylesheet, result, t1;
      var $async$compileStringAsync0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.Deprecation_2;
              logger = new A.DeprecationHandlingLogger0(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), logger, A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashSet_LinkedHashSet$_empty(t1), !verbose);
              stylesheet = A.Stylesheet_Stylesheet$parse0(source, syntax == null ? B.Syntax_SCSS_scss0 : syntax, logger, url);
              if (importer == null)
                t1 = A.isBrowser() ? new A.NoOpImporter0() : new A.FilesystemImporter0(A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null));
              else
                t1 = importer;
              $async$goto = 3;
              return A._asyncAwait(A._compileStylesheet2(stylesheet, logger, importCache, nodeImporter, t1, functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset), $async$compileStringAsync0);
            case 3:
              // returning from await.
              result = $async$result;
              logger.summarize$1$js(nodeImporter != null);
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$compileStringAsync0, $async$completer);
    },
    _compileStylesheet2(stylesheet, logger, importCache, nodeImporter, importer, functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CompileResult_2),
        $async$returnValue, evaluateResult, serializeResult, resultSourceMap;
      var $async$_compileStylesheet2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(A._EvaluateVisitor$2(functions, importCache, logger, nodeImporter, quietDeps, sourceMap).run$2(0, importer, stylesheet), $async$_compileStylesheet2);
            case 3:
              // returning from await.
              evaluateResult = $async$result;
              serializeResult = A.serialize0(evaluateResult._1, charset, indentWidth, false, lineFeed, sourceMap, style, useSpaces);
              resultSourceMap = serializeResult._1;
              if (resultSourceMap != null && importCache != null)
                A.mapInPlace0(resultSourceMap.urls, new A._compileStylesheet_closure2(stylesheet, importCache));
              $async$returnValue = new A.CompileResult0(evaluateResult, serializeResult);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_compileStylesheet2, $async$completer);
    },
    _compileStylesheet_closure2: function _compileStylesheet_closure2(t0, t1) {
      this.stylesheet = t0;
      this.importCache = t1;
    },
    AsyncEnvironment$0() {
      var t1 = type$.String,
        t2 = type$.Module_AsyncCallable_2,
        t3 = type$.AstNode_2,
        t4 = type$.int,
        t5 = type$.AsyncCallable_2,
        t6 = type$.JSArray_Map_String_AsyncCallable_2;
      return new A.AsyncEnvironment0(A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), null, null, A._setArrayType([], type$.JSArray_Module_AsyncCallable_2), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value_2)], type$.JSArray_Map_String_Value_2), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t3)], type$.JSArray_Map_String_AstNode_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), null);
    },
    AsyncEnvironment$_0(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, _functions, _mixins, _content) {
      var t1 = type$.String,
        t2 = type$.int;
      return new A.AsyncEnvironment0(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _functions, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _mixins, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _content);
    },
    _EnvironmentModule__EnvironmentModule2(environment, css, preModuleComments, extensionStore, forwarded) {
      var t1, t2, t3, t4, t5, t6, module, comments, result, t7;
      if (forwarded == null)
        forwarded = B.Set_empty6;
      t1 = type$.dynamic;
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t2 = type$.Module_AsyncCallable_2, t3 = type$.List_CssComment_2, t4 = A.MapExtensions_get_pairs0(preModuleComments, t2, t3), t4 = t4.get$iterator(t4), t5 = type$.CssComment_2; t4.moveNext$0();) {
        t6 = t4.get$current(t4);
        module = t6._0;
        comments = t6._1;
        result = A.List_List$from(comments, false, t5);
        result.fixed$length = Array;
        result.immutable$list = Array;
        t1.$indexSet(0, module, result);
      }
      t1 = A.ConstantMap_ConstantMap$from(t1, t2, t3);
      t2 = A._EnvironmentModule__makeModulesByVariable2(forwarded);
      t3 = A._EnvironmentModule__memberMap2(B.JSArray_methods.get$first(environment._async_environment0$_variables), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure17(), type$.Map_String_Value_2), type$.Value_2);
      t4 = A._EnvironmentModule__memberMap2(B.JSArray_methods.get$first(environment._async_environment0$_variableNodes), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure18(), type$.Map_String_AstNode_2), type$.AstNode_2);
      t5 = type$.Map_String_AsyncCallable_2;
      t6 = type$.AsyncCallable_2;
      t7 = A._EnvironmentModule__memberMap2(B.JSArray_methods.get$first(environment._async_environment0$_functions), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure19(), t5), t6);
      t6 = A._EnvironmentModule__memberMap2(B.JSArray_methods.get$first(environment._async_environment0$_mixins), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure20(), t5), t6);
      t5 = J.get$isNotEmpty$asx(css.get$children(css)) || preModuleComments.get$isNotEmpty(preModuleComments) || B.JSArray_methods.any$1(environment._async_environment0$_allModules, new A._EnvironmentModule__EnvironmentModule_closure21());
      return A._EnvironmentModule$_2(environment, css, t1, extensionStore, t2, t3, t4, t7, t6, t5, !extensionStore.get$isEmpty(extensionStore) || B.JSArray_methods.any$1(environment._async_environment0$_allModules, new A._EnvironmentModule__EnvironmentModule_closure22()));
    },
    _EnvironmentModule__makeModulesByVariable2(forwarded) {
      var modulesByVariable, t1, t2, t3, t4, t5;
      if (forwarded.get$isEmpty(forwarded))
        return B.Map_empty16;
      modulesByVariable = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Module_AsyncCallable_2);
      for (t1 = forwarded.get$iterator(forwarded); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        if (t2 instanceof A._EnvironmentModule2) {
          for (t3 = t2._async_environment0$_modulesByVariable, t3 = t3.get$values(t3), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
            t4 = t3.get$current(t3);
            t5 = t4.get$variables();
            A.setAll0(modulesByVariable, t5.get$keys(t5), t4);
          }
          A.setAll0(modulesByVariable, J.get$keys$z(B.JSArray_methods.get$first(t2._async_environment0$_environment._async_environment0$_variables)), t2);
        } else {
          t3 = t2.get$variables();
          A.setAll0(modulesByVariable, t3.get$keys(t3), t2);
        }
      }
      return modulesByVariable;
    },
    _EnvironmentModule__memberMap2(localMap, otherMaps, $V) {
      var t1, t2, t3;
      localMap = new A.PublicMemberMapView0(localMap, $V._eval$1("PublicMemberMapView0<0>"));
      if (otherMaps.get$isEmpty(otherMaps))
        return localMap;
      t1 = A._setArrayType([], $V._eval$1("JSArray<Map<String,0>>"));
      for (t2 = otherMaps.get$iterator(otherMaps); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        if (t3.get$isNotEmpty(t3))
          t1.push(t3);
      }
      t1.push(localMap);
      if (t1.length === 1)
        return localMap;
      return A.MergedMapView$0(t1, type$.String, $V);
    },
    _EnvironmentModule$_2(_environment, css, preModuleComments, extensionStore, _modulesByVariable, variables, variableNodes, functions, mixins, transitivelyContainsCss, transitivelyContainsExtensions) {
      return new A._EnvironmentModule2(_environment._async_environment0$_allModules, variables, variableNodes, functions, mixins, extensionStore, css, preModuleComments, transitivelyContainsCss, transitivelyContainsExtensions, _environment, _modulesByVariable);
    },
    AsyncEnvironment0: function AsyncEnvironment0(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) {
      var _ = this;
      _._async_environment0$_modules = t0;
      _._async_environment0$_namespaceNodes = t1;
      _._async_environment0$_globalModules = t2;
      _._async_environment0$_importedModules = t3;
      _._async_environment0$_forwardedModules = t4;
      _._async_environment0$_nestedForwardedModules = t5;
      _._async_environment0$_allModules = t6;
      _._async_environment0$_variables = t7;
      _._async_environment0$_variableNodes = t8;
      _._async_environment0$_variableIndices = t9;
      _._async_environment0$_functions = t10;
      _._async_environment0$_functionIndices = t11;
      _._async_environment0$_mixins = t12;
      _._async_environment0$_mixinIndices = t13;
      _._async_environment0$_content = t14;
      _._async_environment0$_inMixin = false;
      _._async_environment0$_inSemiGlobalScope = true;
      _._async_environment0$_lastVariableIndex = _._async_environment0$_lastVariableName = null;
    },
    AsyncEnvironment__getVariableFromGlobalModule_closure0: function AsyncEnvironment__getVariableFromGlobalModule_closure0(t0) {
      this.name = t0;
    },
    AsyncEnvironment_setVariable_closure2: function AsyncEnvironment_setVariable_closure2(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    AsyncEnvironment_setVariable_closure3: function AsyncEnvironment_setVariable_closure3(t0) {
      this.name = t0;
    },
    AsyncEnvironment_setVariable_closure4: function AsyncEnvironment_setVariable_closure4(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    AsyncEnvironment__getFunctionFromGlobalModule_closure0: function AsyncEnvironment__getFunctionFromGlobalModule_closure0(t0) {
      this.name = t0;
    },
    AsyncEnvironment__getMixinFromGlobalModule_closure0: function AsyncEnvironment__getMixinFromGlobalModule_closure0(t0) {
      this.name = t0;
    },
    AsyncEnvironment_toModule_closure0: function AsyncEnvironment_toModule_closure0() {
    },
    AsyncEnvironment_toDummyModule_closure0: function AsyncEnvironment_toDummyModule_closure0() {
    },
    _EnvironmentModule2: function _EnvironmentModule2(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) {
      var _ = this;
      _.upstream = t0;
      _.variables = t1;
      _.variableNodes = t2;
      _.functions = t3;
      _.mixins = t4;
      _.extensionStore = t5;
      _.css = t6;
      _.preModuleComments = t7;
      _.transitivelyContainsCss = t8;
      _.transitivelyContainsExtensions = t9;
      _._async_environment0$_environment = t10;
      _._async_environment0$_modulesByVariable = t11;
    },
    _EnvironmentModule__EnvironmentModule_closure17: function _EnvironmentModule__EnvironmentModule_closure17() {
    },
    _EnvironmentModule__EnvironmentModule_closure18: function _EnvironmentModule__EnvironmentModule_closure18() {
    },
    _EnvironmentModule__EnvironmentModule_closure19: function _EnvironmentModule__EnvironmentModule_closure19() {
    },
    _EnvironmentModule__EnvironmentModule_closure20: function _EnvironmentModule__EnvironmentModule_closure20() {
    },
    _EnvironmentModule__EnvironmentModule_closure21: function _EnvironmentModule__EnvironmentModule_closure21() {
    },
    _EnvironmentModule__EnvironmentModule_closure22: function _EnvironmentModule__EnvironmentModule_closure22() {
    },
    _EvaluateVisitor$2(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t4,
        t1 = type$.Uri,
        t2 = type$.Module_AsyncCallable_2,
        t3 = A._setArrayType([], type$.JSArray_Record_2_String_and_AstNode_2);
      if (nodeImporter == null)
        t4 = importCache == null ? A.AsyncImportCache$none(logger) : importCache;
      else
        t4 = null;
      t1 = new A._EvaluateVisitor2(t4, nodeImporter, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.AsyncCallable_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Configuration_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode_2), logger, A.LinkedHashSet_LinkedHashSet$_empty(type$.Record_2_String_and_SourceSpan), quietDeps, sourceMap, A.AsyncEnvironment$0(), A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.nullable_AstNode_2), t3, B.Configuration_Map_empty_null0);
      t1._EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap2(functions, importCache, logger, nodeImporter, quietDeps, sourceMap);
      return t1;
    },
    _EvaluateVisitor2: function _EvaluateVisitor2(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) {
      var _ = this;
      _._async_evaluate0$_importCache = t0;
      _._async_evaluate0$_nodeImporter = t1;
      _._async_evaluate0$_builtInFunctions = t2;
      _._async_evaluate0$_builtInModules = t3;
      _._async_evaluate0$_modules = t4;
      _._async_evaluate0$_moduleConfigurations = t5;
      _._async_evaluate0$_moduleNodes = t6;
      _._async_evaluate0$_logger = t7;
      _._async_evaluate0$_warningsEmitted = t8;
      _._async_evaluate0$_quietDeps = t9;
      _._async_evaluate0$_sourceMap = t10;
      _._async_evaluate0$_environment = t11;
      _._async_evaluate0$_declarationName = _._async_evaluate0$__parent = _._async_evaluate0$_mediaQuerySources = _._async_evaluate0$_mediaQueries = _._async_evaluate0$_styleRuleIgnoringAtRoot = null;
      _._async_evaluate0$_member = "root stylesheet";
      _._async_evaluate0$_importSpan = _._async_evaluate0$_callableNode = _._async_evaluate0$_currentCallable = null;
      _._async_evaluate0$_inSupportsDeclaration = _._async_evaluate0$_inKeyframes = _._async_evaluate0$_atRootExcludingStyleRule = _._async_evaluate0$_inUnknownAtRule = _._async_evaluate0$_inFunction = false;
      _._async_evaluate0$_loadedUrls = t12;
      _._async_evaluate0$_activeModules = t13;
      _._async_evaluate0$_stack = t14;
      _._async_evaluate0$_importer = null;
      _._async_evaluate0$_inDependency = false;
      _._async_evaluate0$__extensionStore = _._async_evaluate0$_preModuleComments = _._async_evaluate0$_outOfOrderImports = _._async_evaluate0$__endOfImports = _._async_evaluate0$__root = _._async_evaluate0$__stylesheet = null;
      _._async_evaluate0$_configuration = t15;
    },
    _EvaluateVisitor_closure38: function _EvaluateVisitor_closure38(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure39: function _EvaluateVisitor_closure39(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure40: function _EvaluateVisitor_closure40(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure41: function _EvaluateVisitor_closure41(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure42: function _EvaluateVisitor_closure42(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure43: function _EvaluateVisitor_closure43(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure44: function _EvaluateVisitor_closure44(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure45: function _EvaluateVisitor_closure45(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure46: function _EvaluateVisitor_closure46(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure14: function _EvaluateVisitor__closure14(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure47: function _EvaluateVisitor_closure47(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure13: function _EvaluateVisitor__closure13(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure48: function _EvaluateVisitor_closure48(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure49: function _EvaluateVisitor_closure49(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure11: function _EvaluateVisitor__closure11(t0, t1, t2) {
      this.values = t0;
      this.span = t1;
      this.callableNode = t2;
    },
    _EvaluateVisitor__closure12: function _EvaluateVisitor__closure12(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure50: function _EvaluateVisitor_closure50(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_run_closure2: function _EvaluateVisitor_run_closure2(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.importer = t2;
    },
    _EvaluateVisitor_run__closure2: function _EvaluateVisitor_run__closure2(t0, t1, t2) {
      this.$this = t0;
      this.importer = t1;
      this.node = t2;
    },
    _EvaluateVisitor__loadModule_closure5: function _EvaluateVisitor__loadModule_closure5(t0, t1) {
      this._box_1 = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__loadModule_closure6: function _EvaluateVisitor__loadModule_closure6(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.nodeWithSpan = t2;
      _.baseUrl = t3;
      _.namesInErrors = t4;
      _.configuration = t5;
      _.callback = t6;
    },
    _EvaluateVisitor__loadModule__closure5: function _EvaluateVisitor__loadModule__closure5(t0, t1) {
      this.$this = t0;
      this.message = t1;
    },
    _EvaluateVisitor__loadModule__closure6: function _EvaluateVisitor__loadModule__closure6(t0, t1, t2) {
      this._box_0 = t0;
      this.callback = t1;
      this.firstLoad = t2;
    },
    _EvaluateVisitor__execute_closure2: function _EvaluateVisitor__execute_closure2(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.stylesheet = t2;
      _.extensionStore = t3;
      _.configuration = t4;
      _.css = t5;
      _.preModuleComments = t6;
    },
    _EvaluateVisitor__combineCss_closure5: function _EvaluateVisitor__combineCss_closure5() {
    },
    _EvaluateVisitor__combineCss_closure6: function _EvaluateVisitor__combineCss_closure6(t0) {
      this.selectors = t0;
    },
    _EvaluateVisitor__combineCss_visitModule2: function _EvaluateVisitor__combineCss_visitModule2(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.seen = t1;
      _.clone = t2;
      _.css = t3;
      _.imports = t4;
      _.sorted = t5;
    },
    _EvaluateVisitor__extendModules_closure5: function _EvaluateVisitor__extendModules_closure5(t0) {
      this.originalSelectors = t0;
    },
    _EvaluateVisitor__extendModules_closure6: function _EvaluateVisitor__extendModules_closure6() {
    },
    _EvaluateVisitor_visitAtRootRule_closure5: function _EvaluateVisitor_visitAtRootRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitAtRootRule_closure6: function _EvaluateVisitor_visitAtRootRule_closure6(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure17: function _EvaluateVisitor__scopeForAtRoot_closure17(t0, t1, t2) {
      this.$this = t0;
      this.newParent = t1;
      this.node = t2;
    },
    _EvaluateVisitor__scopeForAtRoot_closure18: function _EvaluateVisitor__scopeForAtRoot_closure18(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure19: function _EvaluateVisitor__scopeForAtRoot_closure19(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot__closure2: function _EvaluateVisitor__scopeForAtRoot__closure2(t0, t1) {
      this.innerScope = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure20: function _EvaluateVisitor__scopeForAtRoot_closure20(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure21: function _EvaluateVisitor__scopeForAtRoot_closure21() {
    },
    _EvaluateVisitor__scopeForAtRoot_closure22: function _EvaluateVisitor__scopeForAtRoot_closure22(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor_visitContentRule_closure2: function _EvaluateVisitor_visitContentRule_closure2(t0, t1) {
      this.$this = t0;
      this.content = t1;
    },
    _EvaluateVisitor_visitDeclaration_closure2: function _EvaluateVisitor_visitDeclaration_closure2(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitEachRule_closure8: function _EvaluateVisitor_visitEachRule_closure8(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure9: function _EvaluateVisitor_visitEachRule_closure9(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure10: function _EvaluateVisitor_visitEachRule_closure10(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.list = t1;
      _.setVariables = t2;
      _.node = t3;
    },
    _EvaluateVisitor_visitEachRule__closure2: function _EvaluateVisitor_visitEachRule__closure2(t0, t1, t2) {
      this.$this = t0;
      this.setVariables = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitEachRule___closure2: function _EvaluateVisitor_visitEachRule___closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure8: function _EvaluateVisitor_visitAtRule_closure8(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure9: function _EvaluateVisitor_visitAtRule_closure9(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.children = t2;
    },
    _EvaluateVisitor_visitAtRule__closure2: function _EvaluateVisitor_visitAtRule__closure2(t0, t1) {
      this.$this = t0;
      this.children = t1;
    },
    _EvaluateVisitor_visitAtRule_closure10: function _EvaluateVisitor_visitAtRule_closure10() {
    },
    _EvaluateVisitor_visitForRule_closure14: function _EvaluateVisitor_visitForRule_closure14(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure15: function _EvaluateVisitor_visitForRule_closure15(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure16: function _EvaluateVisitor_visitForRule_closure16(t0) {
      this.fromNumber = t0;
    },
    _EvaluateVisitor_visitForRule_closure17: function _EvaluateVisitor_visitForRule_closure17(t0, t1) {
      this.toNumber = t0;
      this.fromNumber = t1;
    },
    _EvaluateVisitor_visitForRule_closure18: function _EvaluateVisitor_visitForRule_closure18(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.from = t3;
      _.direction = t4;
      _.fromNumber = t5;
    },
    _EvaluateVisitor_visitForRule__closure2: function _EvaluateVisitor_visitForRule__closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitForwardRule_closure5: function _EvaluateVisitor_visitForwardRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForwardRule_closure6: function _EvaluateVisitor_visitForwardRule_closure6(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__registerCommentsForModule_closure2: function _EvaluateVisitor__registerCommentsForModule_closure2() {
    },
    _EvaluateVisitor_visitIfRule_closure2: function _EvaluateVisitor_visitIfRule_closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIfRule__closure2: function _EvaluateVisitor_visitIfRule__closure2(t0, t1) {
      this.$this = t0;
      this.clause = t1;
    },
    _EvaluateVisitor_visitIfRule___closure2: function _EvaluateVisitor_visitIfRule___closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport_closure2: function _EvaluateVisitor__visitDynamicImport_closure2(t0, t1) {
      this.$this = t0;
      this.$import = t1;
    },
    _EvaluateVisitor__visitDynamicImport__closure11: function _EvaluateVisitor__visitDynamicImport__closure11(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport__closure12: function _EvaluateVisitor__visitDynamicImport__closure12() {
    },
    _EvaluateVisitor__visitDynamicImport__closure13: function _EvaluateVisitor__visitDynamicImport__closure13() {
    },
    _EvaluateVisitor__visitDynamicImport__closure14: function _EvaluateVisitor__visitDynamicImport__closure14(t0, t1, t2, t3, t4) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.loadsUserDefinedModules = t2;
      _.environment = t3;
      _.children = t4;
    },
    _EvaluateVisitor__applyMixin_closure9: function _EvaluateVisitor__applyMixin_closure9(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure6: function _EvaluateVisitor__applyMixin__closure6(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin_closure8: function _EvaluateVisitor__applyMixin_closure8(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__applyMixin_closure10: function _EvaluateVisitor__applyMixin_closure10(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.contentCallable = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure5: function _EvaluateVisitor__applyMixin__closure5(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin___closure2: function _EvaluateVisitor__applyMixin___closure2(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin____closure2: function _EvaluateVisitor__applyMixin____closure2(t0, t1) {
      this.$this = t0;
      this.statement = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure8: function _EvaluateVisitor_visitIncludeRule_closure8(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure9: function _EvaluateVisitor_visitIncludeRule_closure9(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIncludeRule_closure10: function _EvaluateVisitor_visitIncludeRule_closure10(t0) {
      this.node = t0;
    },
    _EvaluateVisitor_visitMediaRule_closure8: function _EvaluateVisitor_visitMediaRule_closure8(t0, t1) {
      this.$this = t0;
      this.queries = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure9: function _EvaluateVisitor_visitMediaRule_closure9(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.queries = t2;
      _.mergedSources = t3;
      _.node = t4;
    },
    _EvaluateVisitor_visitMediaRule__closure2: function _EvaluateVisitor_visitMediaRule__closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule___closure2: function _EvaluateVisitor_visitMediaRule___closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure10: function _EvaluateVisitor_visitMediaRule_closure10(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitStyleRule_closure14: function _EvaluateVisitor_visitStyleRule_closure14(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure15: function _EvaluateVisitor_visitStyleRule_closure15() {
    },
    _EvaluateVisitor_visitStyleRule_closure16: function _EvaluateVisitor_visitStyleRule_closure16(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitStyleRule__closure2: function _EvaluateVisitor_visitStyleRule__closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure17: function _EvaluateVisitor_visitStyleRule_closure17() {
    },
    _EvaluateVisitor_visitStyleRule_closure18: function _EvaluateVisitor_visitStyleRule_closure18() {
    },
    _EvaluateVisitor_visitSupportsRule_closure5: function _EvaluateVisitor_visitSupportsRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule__closure2: function _EvaluateVisitor_visitSupportsRule__closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule_closure6: function _EvaluateVisitor_visitSupportsRule_closure6() {
    },
    _EvaluateVisitor__visitSupportsCondition_closure2: function _EvaluateVisitor__visitSupportsCondition_closure2(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure8: function _EvaluateVisitor_visitVariableDeclaration_closure8(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure9: function _EvaluateVisitor_visitVariableDeclaration_closure9(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure10: function _EvaluateVisitor_visitVariableDeclaration_closure10(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.value = t2;
    },
    _EvaluateVisitor_visitUseRule_closure2: function _EvaluateVisitor_visitUseRule_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWarnRule_closure2: function _EvaluateVisitor_visitWarnRule_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule_closure2: function _EvaluateVisitor_visitWhileRule_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule__closure2: function _EvaluateVisitor_visitWhileRule__closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitBinaryOperationExpression_closure2: function _EvaluateVisitor_visitBinaryOperationExpression_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__slash_closure5: function _EvaluateVisitor__slash_closure5(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_closure6: function _EvaluateVisitor__slash_closure6(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_recommendation2: function _EvaluateVisitor__slash_recommendation2() {
    },
    _EvaluateVisitor_visitVariableExpression_closure2: function _EvaluateVisitor_visitVariableExpression_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitUnaryOperationExpression_closure2: function _EvaluateVisitor_visitUnaryOperationExpression_closure2(t0, t1) {
      this.node = t0;
      this.operand = t1;
    },
    _EvaluateVisitor_visitListExpression_closure2: function _EvaluateVisitor_visitListExpression_closure2(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitFunctionExpression_closure8: function _EvaluateVisitor_visitFunctionExpression_closure8(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitFunctionExpression_closure9: function _EvaluateVisitor_visitFunctionExpression_closure9() {
    },
    _EvaluateVisitor_visitFunctionExpression_closure10: function _EvaluateVisitor_visitFunctionExpression_closure10(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor__checkCalculationArguments_check2: function _EvaluateVisitor__checkCalculationArguments_check2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__visitCalculationExpression_closure2: function _EvaluateVisitor__visitCalculationExpression_closure2(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.inLegacySassFunction = t3;
    },
    _EvaluateVisitor__checkAdjacentCalculationValues_closure2: function _EvaluateVisitor__checkAdjacentCalculationValues_closure2(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitInterpolatedFunctionExpression_closure2: function _EvaluateVisitor_visitInterpolatedFunctionExpression_closure2(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.$function = t2;
    },
    _EvaluateVisitor__runUserDefinedCallable_closure2: function _EvaluateVisitor__runUserDefinedCallable_closure2(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.callable = t1;
      _.evaluated = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable__closure2: function _EvaluateVisitor__runUserDefinedCallable__closure2(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable___closure2: function _EvaluateVisitor__runUserDefinedCallable___closure2(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable____closure2: function _EvaluateVisitor__runUserDefinedCallable____closure2() {
    },
    _EvaluateVisitor__runFunctionCallable_closure2: function _EvaluateVisitor__runFunctionCallable_closure2(t0, t1) {
      this.$this = t0;
      this.callable = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure8: function _EvaluateVisitor__runBuiltInCallable_closure8(t0, t1, t2) {
      this._box_0 = t0;
      this.evaluated = t1;
      this.namedSet = t2;
    },
    _EvaluateVisitor__runBuiltInCallable_closure9: function _EvaluateVisitor__runBuiltInCallable_closure9(t0, t1) {
      this._box_0 = t0;
      this.evaluated = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure10: function _EvaluateVisitor__runBuiltInCallable_closure10() {
    },
    _EvaluateVisitor__evaluateArguments_closure11: function _EvaluateVisitor__evaluateArguments_closure11() {
    },
    _EvaluateVisitor__evaluateArguments_closure12: function _EvaluateVisitor__evaluateArguments_closure12(t0, t1) {
      this.$this = t0;
      this.restNodeForSpan = t1;
    },
    _EvaluateVisitor__evaluateArguments_closure13: function _EvaluateVisitor__evaluateArguments_closure13(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.namedNodes = t3;
    },
    _EvaluateVisitor__evaluateArguments_closure14: function _EvaluateVisitor__evaluateArguments_closure14() {
    },
    _EvaluateVisitor__evaluateMacroArguments_closure11: function _EvaluateVisitor__evaluateMacroArguments_closure11(t0) {
      this.restArgs = t0;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure12: function _EvaluateVisitor__evaluateMacroArguments_closure12(t0, t1, t2) {
      this.$this = t0;
      this.restNodeForSpan = t1;
      this.restArgs = t2;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure13: function _EvaluateVisitor__evaluateMacroArguments_closure13(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.restArgs = t3;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure14: function _EvaluateVisitor__evaluateMacroArguments_closure14(t0, t1, t2) {
      this.$this = t0;
      this.keywordRestNodeForSpan = t1;
      this.keywordRestArgs = t2;
    },
    _EvaluateVisitor__addRestMap_closure2: function _EvaluateVisitor__addRestMap_closure2(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.values = t1;
      _.convert = t2;
      _.expressionNode = t3;
      _.map = t4;
      _.nodeWithSpan = t5;
    },
    _EvaluateVisitor__verifyArguments_closure2: function _EvaluateVisitor__verifyArguments_closure2(t0, t1, t2) {
      this.$arguments = t0;
      this.positional = t1;
      this.named = t2;
    },
    _EvaluateVisitor_visitCssAtRule_closure5: function _EvaluateVisitor_visitCssAtRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssAtRule_closure6: function _EvaluateVisitor_visitCssAtRule_closure6() {
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure5: function _EvaluateVisitor_visitCssKeyframeBlock_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure6: function _EvaluateVisitor_visitCssKeyframeBlock_closure6() {
    },
    _EvaluateVisitor_visitCssMediaRule_closure8: function _EvaluateVisitor_visitCssMediaRule_closure8(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure9: function _EvaluateVisitor_visitCssMediaRule_closure9(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.node = t2;
      _.mergedSources = t3;
    },
    _EvaluateVisitor_visitCssMediaRule__closure2: function _EvaluateVisitor_visitCssMediaRule__closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule___closure2: function _EvaluateVisitor_visitCssMediaRule___closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure10: function _EvaluateVisitor_visitCssMediaRule_closure10(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitCssStyleRule_closure8: function _EvaluateVisitor_visitCssStyleRule_closure8(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitCssStyleRule__closure2: function _EvaluateVisitor_visitCssStyleRule__closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssStyleRule_closure9: function _EvaluateVisitor_visitCssStyleRule_closure9() {
    },
    _EvaluateVisitor_visitCssStyleRule_closure10: function _EvaluateVisitor_visitCssStyleRule_closure10(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure5: function _EvaluateVisitor_visitCssSupportsRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule__closure2: function _EvaluateVisitor_visitCssSupportsRule__closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure6: function _EvaluateVisitor_visitCssSupportsRule_closure6() {
    },
    _EvaluateVisitor__performInterpolationHelper_closure2: function _EvaluateVisitor__performInterpolationHelper_closure2(t0) {
      this.interpolation = t0;
    },
    _EvaluateVisitor__serialize_closure2: function _EvaluateVisitor__serialize_closure2(t0, t1) {
      this.value = t0;
      this.quote = t1;
    },
    _EvaluateVisitor__expressionNode_closure2: function _EvaluateVisitor__expressionNode_closure2(t0, t1) {
      this.$this = t0;
      this.expression = t1;
    },
    _EvaluateVisitor__withoutSlash_recommendation2: function _EvaluateVisitor__withoutSlash_recommendation2() {
    },
    _EvaluateVisitor__stackFrame_closure2: function _EvaluateVisitor__stackFrame_closure2(t0) {
      this.$this = t0;
    },
    _ImportedCssVisitor2: function _ImportedCssVisitor2(t0) {
      this._async_evaluate0$_visitor = t0;
    },
    _ImportedCssVisitor_visitCssAtRule_closure2: function _ImportedCssVisitor_visitCssAtRule_closure2() {
    },
    _ImportedCssVisitor_visitCssMediaRule_closure2: function _ImportedCssVisitor_visitCssMediaRule_closure2(t0) {
      this.hasBeenMerged = t0;
    },
    _ImportedCssVisitor_visitCssStyleRule_closure2: function _ImportedCssVisitor_visitCssStyleRule_closure2() {
    },
    _ImportedCssVisitor_visitCssSupportsRule_closure2: function _ImportedCssVisitor_visitCssSupportsRule_closure2() {
    },
    _EvaluationContext2: function _EvaluationContext2(t0, t1) {
      this._async_evaluate0$_visitor = t0;
      this._async_evaluate0$_defaultWarnNodeWithSpan = t1;
    },
    JSToDartAsyncFileImporter: function JSToDartAsyncFileImporter(t0) {
      this._findFileUrl = t0;
    },
    JSToDartAsyncFileImporter_canonicalize_closure: function JSToDartAsyncFileImporter_canonicalize_closure(t0, t1) {
      this.$this = t0;
      this.url = t1;
    },
    AsyncImportCache$(importers, loadPaths, logger, packageConfig) {
      var t1 = type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2,
        t2 = type$.Uri,
        t3 = A.AsyncImportCache__toImporters0(importers, loadPaths, packageConfig);
      return new A.AsyncImportCache0(t3, logger, A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_2_Uri_and_bool_forImport, t1), A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_4_Uri_and_AsyncImporter_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport_2, t1), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.nullable_Stylesheet_2), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.ImporterResult_2));
    },
    AsyncImportCache$none(logger) {
      var t1 = type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2,
        t2 = type$.Uri;
      return new A.AsyncImportCache0(B.List_empty25, logger, A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_2_Uri_and_bool_forImport, t1), A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_4_Uri_and_AsyncImporter_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport_2, t1), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.nullable_Stylesheet_2), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.ImporterResult_2));
    },
    AsyncImportCache__toImporters0(importers, loadPaths, packageConfig) {
      var t1, t2, t3, t4, _i, path, _null = null,
        sassPath = A.getEnvironmentVariable0("SASS_PATH");
      if (A.isBrowser()) {
        t1 = A._setArrayType([], type$.JSArray_AsyncImporter);
        if (importers != null)
          B.JSArray_methods.addAll$1(t1, importers);
        return t1;
      }
      t1 = A._setArrayType([], type$.JSArray_AsyncImporter);
      if (importers != null)
        B.JSArray_methods.addAll$1(t1, importers);
      if (loadPaths != null)
        for (t2 = J.get$iterator$ax(loadPaths); t2.moveNext$0();) {
          t3 = t2.get$current(t2);
          t1.push(new A.FilesystemImporter0($.$get$context().absolute$15(t3, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
        }
      if (sassPath != null) {
        t2 = A.isNodeJs() ? self.process : _null;
        t3 = sassPath.split(J.$eq$(t2 == null ? _null : J.get$platform$x(t2), "win32") ? ";" : ":");
        t4 = t3.length;
        _i = 0;
        for (; _i < t4; ++_i) {
          path = t3[_i];
          t1.push(new A.FilesystemImporter0($.$get$context().absolute$15(path, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
        }
      }
      return t1;
    },
    AsyncImportCache0: function AsyncImportCache0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._async_import_cache0$_importers = t0;
      _._async_import_cache0$_logger = t1;
      _._async_import_cache0$_canonicalizeCache = t2;
      _._async_import_cache0$_relativeCanonicalizeCache = t3;
      _._async_import_cache0$_importCache = t4;
      _._async_import_cache0$_resultsCache = t5;
    },
    AsyncImportCache_canonicalize_closure1: function AsyncImportCache_canonicalize_closure1(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.baseImporter = t1;
      _.baseUrl = t2;
      _.url = t3;
      _.forImport = t4;
    },
    AsyncImportCache_canonicalize_closure2: function AsyncImportCache_canonicalize_closure2(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.baseUrl = t2;
      _.forImport = t3;
    },
    AsyncImportCache__canonicalize_closure1: function AsyncImportCache__canonicalize_closure1(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    AsyncImportCache__canonicalize__closure0: function AsyncImportCache__canonicalize__closure0(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    AsyncImportCache__canonicalize_closure2: function AsyncImportCache__canonicalize_closure2(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    AsyncImportCache_importCanonical_closure0: function AsyncImportCache_importCanonical_closure0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.canonicalUrl = t2;
      _.originalUrl = t3;
      _.quiet = t4;
    },
    AsyncImportCache_humanize_closure3: function AsyncImportCache_humanize_closure3(t0) {
      this.canonicalUrl = t0;
    },
    AsyncImportCache_humanize_closure4: function AsyncImportCache_humanize_closure4() {
    },
    AsyncImportCache_humanize_closure5: function AsyncImportCache_humanize_closure5() {
    },
    AsyncImportCache_humanize_closure6: function AsyncImportCache_humanize_closure6(t0) {
      this.canonicalUrl = t0;
    },
    AtRootQueryParser$0(contents, logger, url) {
      var t1 = A.SpanScanner$(contents, url);
      return new A.AtRootQueryParser0(t1, logger, null);
    },
    AtRootQueryParser0: function AtRootQueryParser0(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._parser0$_interpolationMap = t2;
    },
    AtRootQueryParser_parse_closure0: function AtRootQueryParser_parse_closure0(t0) {
      this.$this = t0;
    },
    AtRootQuery0: function AtRootQuery0(t0, t1, t2, t3) {
      var _ = this;
      _.include = t0;
      _.names = t1;
      _._at_root_query0$_all = t2;
      _._at_root_query0$_rule = t3;
    },
    AtRootRule$0(children, span, query) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.AtRootRule0(query, span, t1, t2);
    },
    AtRootRule0: function AtRootRule0(t0, t1, t2, t3) {
      var _ = this;
      _.query = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    ModifiableCssAtRule$0($name, span, childless, value) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
      return new A.ModifiableCssAtRule0($name, value, childless, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode_2), t1);
    },
    ModifiableCssAtRule0: function ModifiableCssAtRule0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.isChildless = t2;
      _.span = t3;
      _.children = t4;
      _._node$_children = t5;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    AtRule$0($name, span, children, value) {
      var t1 = children == null ? null : A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = t1 == null ? null : B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.AtRule0($name, value, span, t1, t2 === true);
    },
    AtRule0: function AtRule0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    AttributeSelector0: function AttributeSelector0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.op = t1;
      _.value = t2;
      _.modifier = t3;
      _.span = t4;
    },
    AttributeOperator0: function AttributeOperator0(t0, t1) {
      this._attribute0$_text = t0;
      this._name = t1;
    },
    BinaryOperationExpression0: function BinaryOperationExpression0(t0, t1, t2, t3) {
      var _ = this;
      _.operator = t0;
      _.left = t1;
      _.right = t2;
      _.allowsSlash = t3;
    },
    BinaryOperator0: function BinaryOperator0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.operator = t1;
      _.precedence = t2;
      _.isAssociative = t3;
      _._name = t4;
    },
    BooleanExpression0: function BooleanExpression0(t0, t1) {
      this.value = t0;
      this.span = t1;
    },
    booleanClass_closure: function booleanClass_closure() {
    },
    booleanClass__closure: function booleanClass__closure() {
    },
    legacyBooleanClass_closure: function legacyBooleanClass_closure() {
    },
    legacyBooleanClass__closure: function legacyBooleanClass__closure() {
    },
    legacyBooleanClass__closure0: function legacyBooleanClass__closure0() {
    },
    SassBoolean0: function SassBoolean0(t0) {
      this.value = t0;
    },
    Box0: function Box0(t0, t1) {
      this._box0$_inner = t0;
      this.$ti = t1;
    },
    ModifiableBox0: function ModifiableBox0(t0, t1) {
      this.value = t0;
      this.$ti = t1;
    },
    BuiltInCallable$function0($name, $arguments, callback, url) {
      return new A.BuiltInCallable0($name, A._setArrayType([new A._Record_2(A.ScssParser$0("@function " + $name + "(" + $arguments + ") {", null, url).parseArgumentDeclaration$0(), callback)], type$.JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value_2), false);
    },
    BuiltInCallable$mixin0($name, $arguments, callback, acceptsContent, url) {
      return new A.BuiltInCallable0($name, A._setArrayType([new A._Record_2(A.ScssParser$0("@mixin " + $name + "(" + $arguments + ") {", null, url).parseArgumentDeclaration$0(), new A.BuiltInCallable$mixin_closure0(callback))], type$.JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value_2), acceptsContent);
    },
    BuiltInCallable$overloadedFunction0($name, overloads) {
      var t2, t3, t4, t5, t6, args, callback,
        t1 = A._setArrayType([], type$.JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value_2);
      for (t2 = type$.String, t3 = A.MapExtensions_get_pairs0(overloads, t2, type$.Value_Function_List_Value_2), t3 = t3.get$iterator(t3), t4 = "@function " + $name + "(", t5 = type$.VariableDeclaration_2; t3.moveNext$0();) {
        t6 = t3.get$current(t3);
        args = t6._0;
        callback = t6._1;
        t6 = A.SpanScanner$(t4 + args + ") {", null);
        t1.push(new A._Record_2(new A.ScssParser0(A.LinkedHashMap_LinkedHashMap$_empty(t2, t5), t6, B.StderrLogger_false0, null).parseArgumentDeclaration$0(), callback));
      }
      return new A.BuiltInCallable0($name, t1, false);
    },
    BuiltInCallable0: function BuiltInCallable0(t0, t1, t2) {
      this.name = t0;
      this._built_in$_overloads = t1;
      this.acceptsContent = t2;
    },
    BuiltInCallable$mixin_closure0: function BuiltInCallable$mixin_closure0(t0) {
      this.callback = t0;
    },
    BuiltInModule$0($name, functions, mixins, variables, $T) {
      var t1 = A._Uri__Uri(null, $name, null, "sass"),
        t2 = A.BuiltInModule__callableMap0(functions, $T),
        t3 = A.BuiltInModule__callableMap0(mixins, $T),
        t4 = variables == null ? B.Map_empty13 : new A.UnmodifiableMapView(variables, type$.UnmodifiableMapView_String_Value_2);
      return new A.BuiltInModule0(t1, t2, t3, t4, $T._eval$1("BuiltInModule0<0>"));
    },
    BuiltInModule__callableMap0(callables, $T) {
      var t2, _i, callable,
        t1 = type$.String;
      if (callables == null)
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, $T);
      else {
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, $T);
        for (t2 = callables.length, _i = 0; _i < callables.length; callables.length === t2 || (0, A.throwConcurrentModificationError)(callables), ++_i) {
          callable = callables[_i];
          t1.$indexSet(0, J.get$name$x(callable), callable);
        }
        t1 = new A.UnmodifiableMapView(t1, type$.$env_1_1_String._bind$1($T)._eval$1("UnmodifiableMapView<1,2>"));
      }
      return new A.UnmodifiableMapView(t1, type$.$env_1_1_String._bind$1($T)._eval$1("UnmodifiableMapView<1,2>"));
    },
    BuiltInModule0: function BuiltInModule0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.url = t0;
      _.functions = t1;
      _.mixins = t2;
      _.variables = t3;
      _.$ti = t4;
    },
    _assertCalculationValue(arg) {
      var t1;
      $label0$0: {
        if (!(arg instanceof A.SassNumber0))
          t1 = arg instanceof A.SassString0 && !arg._string0$_hasQuotes || arg instanceof A.SassCalculation0 || arg instanceof A.CalculationOperation0 || arg instanceof A.CalculationInterpolation;
        else
          t1 = true;
        if (t1) {
          t1 = null;
          break $label0$0;
        }
        t1 = A.jsThrow0(new self.Error("Argument `" + A.S(arg) + "` must be one of SassNumber, unquoted SassString, SassCalculation, CalculationOperation, CalculationInterpolation"));
      }
      return t1;
    },
    _isValidClampArg(arg) {
      var t1;
      $label0$0: {
        if (!(arg instanceof A.CalculationInterpolation))
          t1 = arg instanceof A.SassString0 && !arg._string0$_hasQuotes;
        else
          t1 = true;
        if (t1) {
          t1 = true;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    calculationClass_closure: function calculationClass_closure() {
    },
    calculationClass__closure: function calculationClass__closure() {
    },
    calculationClass__closure0: function calculationClass__closure0() {
    },
    calculationClass__closure1: function calculationClass__closure1() {
    },
    calculationClass__closure2: function calculationClass__closure2() {
    },
    calculationClass__closure3: function calculationClass__closure3() {
    },
    calculationClass__closure4: function calculationClass__closure4() {
    },
    calculationClass__closure5: function calculationClass__closure5() {
    },
    calculationOperationClass_closure: function calculationOperationClass_closure() {
    },
    calculationOperationClass__closure: function calculationOperationClass__closure() {
    },
    calculationOperationClass___closure: function calculationOperationClass___closure(t0) {
      this.strOperator = t0;
    },
    calculationOperationClass__closure0: function calculationOperationClass__closure0() {
    },
    calculationOperationClass__closure1: function calculationOperationClass__closure1() {
    },
    calculationOperationClass__closure2: function calculationOperationClass__closure2() {
    },
    calculationOperationClass__closure3: function calculationOperationClass__closure3() {
    },
    calculationOperationClass__closure4: function calculationOperationClass__closure4() {
    },
    calculationInterpolationClass_closure: function calculationInterpolationClass_closure() {
    },
    calculationInterpolationClass__closure: function calculationInterpolationClass__closure() {
    },
    calculationInterpolationClass__closure0: function calculationInterpolationClass__closure0() {
    },
    calculationInterpolationClass__closure1: function calculationInterpolationClass__closure1() {
    },
    calculationInterpolationClass__closure2: function calculationInterpolationClass__closure2() {
    },
    SassCalculation_calc0(argument) {
      var value, t1,
        _0_0 = A.SassCalculation__simplify0(argument);
      $label0$0: {
        if (_0_0 instanceof A.SassNumber0) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1) {
          t1 = value;
          break $label0$0;
        }
        if (_0_0 instanceof A.SassCalculation0) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1) {
          t1 = value;
          break $label0$0;
        }
        t1 = new A.SassCalculation0("calc", A.List_List$unmodifiable([_0_0], type$.Object));
        break $label0$0;
      }
      return t1;
    },
    SassCalculation_min0($arguments) {
      var minimum, _i, arg, t2,
        args = A.List_List$unmodifiable(J.map$1$1$ax($arguments, A.calculation0_SassCalculation__simplify$closure(), type$.dynamic), type$.Object),
        t1 = args.length;
      if (t1 === 0)
        throw A.wrapException(A.ArgumentError$("min() must have at least one argument.", null));
      for (minimum = null, _i = 0; _i < t1; ++_i) {
        arg = args[_i];
        if (arg instanceof A.SassNumber0)
          t2 = minimum != null && !minimum.isComparableTo$1(arg);
        else
          t2 = true;
        if (t2) {
          minimum = null;
          break;
        } else if (minimum == null || minimum.greaterThan$1(arg).value)
          minimum = arg;
      }
      if (minimum != null)
        return minimum;
      A.SassCalculation__verifyCompatibleNumbers0(args);
      return new A.SassCalculation0("min", args);
    },
    SassCalculation_max0($arguments) {
      var maximum, _i, arg, t2,
        args = A.List_List$unmodifiable(J.map$1$1$ax($arguments, A.calculation0_SassCalculation__simplify$closure(), type$.dynamic), type$.Object),
        t1 = args.length;
      if (t1 === 0)
        throw A.wrapException(A.ArgumentError$("max() must have at least one argument.", null));
      for (maximum = null, _i = 0; _i < t1; ++_i) {
        arg = args[_i];
        if (arg instanceof A.SassNumber0)
          t2 = maximum != null && !maximum.isComparableTo$1(arg);
        else
          t2 = true;
        if (t2) {
          maximum = null;
          break;
        } else if (maximum == null || maximum.lessThan$1(arg).value)
          maximum = arg;
      }
      if (maximum != null)
        return maximum;
      A.SassCalculation__verifyCompatibleNumbers0(args);
      return new A.SassCalculation0("max", args);
    },
    SassCalculation_hypot0($arguments) {
      var first, subtotal, i, number, value, t2, t3,
        args = A.List_List$unmodifiable(B.JSArray_methods.map$1$1($arguments, A.calculation0_SassCalculation__simplify$closure(), type$.dynamic), type$.Object),
        t1 = args.length;
      if (t1 === 0)
        throw A.wrapException(A.ArgumentError$("hypot() must have at least one argument.", null));
      A.SassCalculation__verifyCompatibleNumbers0(args);
      first = B.JSArray_methods.get$first(args);
      if (!(first instanceof A.SassNumber0) || first.hasUnit$1("%"))
        return new A.SassCalculation0("hypot", args);
      for (subtotal = 0, i = 0; i < t1;) {
        number = args[i];
        if (!(number instanceof A.SassNumber0) || !number.hasCompatibleUnits$1(first))
          return new A.SassCalculation0("hypot", args);
        ++i;
        value = number.convertValueToMatch$3(first, "numbers[" + i + "]", "numbers[1]");
        subtotal += value * value;
      }
      t1 = Math.sqrt(subtotal);
      t2 = J.getInterceptor$x(first);
      t3 = t2.get$numeratorUnits(first);
      return A.SassNumber_SassNumber$withUnits0(t1, t2.get$denominatorUnits(first), t3);
    },
    SassCalculation_abs0(argument) {
      var t1, t2;
      argument = A.SassCalculation__simplify0(argument);
      if (!(argument instanceof A.SassNumber0))
        return new A.SassCalculation0("abs", A._setArrayType([argument], type$.JSArray_Object));
      if (argument.hasUnit$1("%")) {
        t1 = argument.toString$0(0);
        t2 = argument.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, string$.Passinp + t1 + ")\nTo emit a CSS abs() now: abs(#{" + t2 + string$.x7d__Mor, B.Deprecation_la6);
      }
      return A.SassNumber_SassNumber0(Math.abs(argument._number1$_value), null).coerceToMatch$1(argument);
    },
    SassCalculation_exp0(argument) {
      argument = A.SassCalculation__simplify0(argument);
      if (!(argument instanceof A.SassNumber0))
        return new A.SassCalculation0("exp", A._setArrayType([argument], type$.JSArray_Object));
      argument.assertNoUnits$0();
      return A.pow1(A.SassNumber_SassNumber0(2.718281828459045, null), argument);
    },
    SassCalculation_sign0(argument) {
      var _0_2, t1, t2, arg;
      argument = A.SassCalculation__simplify0(argument);
      _0_2 = A._InitializedCell$(new A.SassCalculation_sign_closure0(argument));
      $label0$0: {
        t1 = argument instanceof A.SassNumber0;
        if (t1)
          t2 = isNaN(_0_2._readFinal$0()) || 0 === _0_2._readFinal$0();
        else
          t2 = false;
        if (t2) {
          t1 = argument;
          break $label0$0;
        }
        if (t1) {
          t1 = !argument.hasUnit$1("%");
          arg = argument;
        } else {
          arg = null;
          t1 = false;
        }
        if (t1) {
          t1 = A.SassNumber_SassNumber0(J.get$sign$in(arg._number1$_value), null).coerceToMatch$1(argument);
          break $label0$0;
        }
        t1 = new A.SassCalculation0("sign", A._setArrayType([argument], type$.JSArray_Object));
        break $label0$0;
      }
      return t1;
    },
    SassCalculation_clamp0(min, value, max) {
      var t1, args;
      if (value == null && max != null)
        throw A.wrapException(A.ArgumentError$("If value is null, max must also be null.", null));
      min = A.SassCalculation__simplify0(min);
      value = A.NullableExtension_andThen0(value, A.calculation0_SassCalculation__simplify$closure());
      max = A.NullableExtension_andThen0(max, A.calculation0_SassCalculation__simplify$closure());
      if (min instanceof A.SassNumber0 && value instanceof A.SassNumber0 && max instanceof A.SassNumber0 && min.hasCompatibleUnits$1(value) && min.hasCompatibleUnits$1(max)) {
        if (value.lessThanOrEquals$1(min).value)
          return min;
        if (value.greaterThanOrEquals$1(max).value)
          return max;
        return value;
      }
      t1 = [min];
      if (value != null)
        t1.push(value);
      if (max != null)
        t1.push(max);
      args = A.List_List$unmodifiable(t1, type$.Object);
      A.SassCalculation__verifyCompatibleNumbers0(args);
      A.SassCalculation__verifyLength0(args, 3);
      return new A.SassCalculation0("clamp", args);
    },
    SassCalculation_pow0(base, exponent) {
      var t1 = A._setArrayType([base], type$.JSArray_Object);
      if (exponent != null)
        t1.push(exponent);
      A.SassCalculation__verifyLength0(t1, 2);
      base = A.SassCalculation__simplify0(base);
      exponent = A.NullableExtension_andThen0(exponent, A.calculation0_SassCalculation__simplify$closure());
      if (!(base instanceof A.SassNumber0) || !(exponent instanceof A.SassNumber0))
        return new A.SassCalculation0("pow", t1);
      base.assertNoUnits$0();
      exponent.assertNoUnits$0();
      return A.pow1(base, exponent);
    },
    SassCalculation_log0(number, base) {
      var t1, t2;
      number = A.SassCalculation__simplify0(number);
      base = A.NullableExtension_andThen0(base, A.calculation0_SassCalculation__simplify$closure());
      t1 = A._setArrayType([number], type$.JSArray_Object);
      t2 = base != null;
      if (t2)
        t1.push(base);
      if (number instanceof A.SassNumber0)
        t2 = t2 && !(base instanceof A.SassNumber0);
      else
        t2 = true;
      if (t2)
        return new A.SassCalculation0("log", t1);
      number.assertNoUnits$0();
      if (base instanceof A.SassNumber0) {
        base.assertNoUnits$0();
        return A.log0(number, base);
      }
      return A.log0(number, null);
    },
    SassCalculation_atan20(y, x) {
      var t1;
      y = A.SassCalculation__simplify0(y);
      x = A.NullableExtension_andThen0(x, A.calculation0_SassCalculation__simplify$closure());
      t1 = A._setArrayType([y], type$.JSArray_Object);
      if (x != null)
        t1.push(x);
      A.SassCalculation__verifyLength0(t1, 2);
      A.SassCalculation__verifyCompatibleNumbers0(t1);
      if (!(y instanceof A.SassNumber0) || !(x instanceof A.SassNumber0) || y.hasUnit$1("%") || x.hasUnit$1("%") || !y.hasCompatibleUnits$1(x))
        return new A.SassCalculation0("atan2", t1);
      return A.SassNumber_SassNumber$withUnits0(Math.atan2(y._number1$_value, x.convertValueToMatch$3(y, "x", "y")) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    SassCalculation_rem0(dividend, modulus) {
      var t1, result;
      dividend = A.SassCalculation__simplify0(dividend);
      modulus = A.NullableExtension_andThen0(modulus, A.calculation0_SassCalculation__simplify$closure());
      t1 = A._setArrayType([dividend], type$.JSArray_Object);
      if (modulus != null)
        t1.push(modulus);
      A.SassCalculation__verifyLength0(t1, 2);
      A.SassCalculation__verifyCompatibleNumbers0(t1);
      if (!(dividend instanceof A.SassNumber0) || !(modulus instanceof A.SassNumber0) || !dividend.hasCompatibleUnits$1(modulus))
        return new A.SassCalculation0("rem", t1);
      result = dividend.modulo$1(modulus);
      t1 = modulus._number1$_value;
      if (A.DoubleWithSignedZero_get_signIncludingZero0(t1) !== A.DoubleWithSignedZero_get_signIncludingZero0(dividend._number1$_value)) {
        if (t1 == 1 / 0 || t1 == -1 / 0)
          return dividend;
        if (result._number1$_value === 0)
          return result.unaryMinus$0();
        return result.minus$1(modulus);
      }
      return result;
    },
    SassCalculation_mod0(dividend, modulus) {
      var t1;
      dividend = A.SassCalculation__simplify0(dividend);
      modulus = A.NullableExtension_andThen0(modulus, A.calculation0_SassCalculation__simplify$closure());
      t1 = A._setArrayType([dividend], type$.JSArray_Object);
      if (modulus != null)
        t1.push(modulus);
      A.SassCalculation__verifyLength0(t1, 2);
      A.SassCalculation__verifyCompatibleNumbers0(t1);
      if (!(dividend instanceof A.SassNumber0) || !(modulus instanceof A.SassNumber0) || !dividend.hasCompatibleUnits$1(modulus))
        return new A.SassCalculation0("mod", t1);
      return dividend.modulo$1(modulus);
    },
    SassCalculation_round0(strategyOrNumber, numberOrStep, step) {
      var number, t1, t2, strategy, rest, _null = null, _s5_ = "round",
        _0_0 = new A._Record_3(A.SassCalculation__simplify0(strategyOrNumber), A.NullableExtension_andThen0(numberOrStep, A.calculation0_SassCalculation__simplify$closure()), A.NullableExtension_andThen0(step, A.calculation0_SassCalculation__simplify$closure())),
        _0_1 = A._InitializedCell$(new A.SassCalculation_round_closure9(_0_0)),
        _0_2 = A._InitializedCell$(new A.SassCalculation_round_closure10(_0_0)),
        _0_4 = A._InitializedCell$(new A.SassCalculation_round_closure11(_0_2)),
        _0_5 = A._InitializedCell$(new A.SassCalculation_round_closure12(_0_0)),
        _0_6 = A._InitializedCell$(new A.SassCalculation_round_closure13(_0_5)),
        _0_8 = A._InitializedCell$(new A.SassCalculation_round_closure14(_0_1)),
        _0_10 = A._InitializedCell$(new A.SassCalculation_round_closure15(_0_8)),
        _0_12 = A._InitializedCell$(new A.SassCalculation_round_closure16(_0_8)),
        _0_14 = A._InitializedCell$(new A.SassCalculation_round_closure17(_0_8)),
        _0_16 = A._InitializedCell$(new A.SassCalculation_round_closure18(_0_8));
      if (_0_1._readFinal$0() instanceof A.SassNumber0) {
        number = _0_1._readFinal$0();
        t1 = _0_4._readFinal$0() && _0_6._readFinal$0();
      } else {
        number = _null;
        t1 = false;
      }
      if (t1) {
        t1 = B.JSNumber_methods.round$0(number._number1$_value);
        t2 = number.get$numeratorUnits(number);
        return A.SassNumber_SassNumber$withUnits0(t1, number.get$denominatorUnits(number), t2);
      }
      if (_0_1._readFinal$0() instanceof A.SassNumber0) {
        number = _0_1._readFinal$0();
        if (_0_2._readFinal$0() instanceof A.SassNumber0) {
          step = _0_2._readFinal$0();
          t1 = _0_6._readFinal$0() && !number.hasCompatibleUnits$1(step);
        } else {
          step = _null;
          t1 = false;
        }
      } else {
        step = _null;
        number = step;
        t1 = false;
      }
      if (t1) {
        t1 = type$.JSArray_Object;
        A.SassCalculation__verifyCompatibleNumbers0(A._setArrayType([number, step], t1));
        return new A.SassCalculation0(_s5_, A._setArrayType([number, step], t1));
      }
      if (_0_1._readFinal$0() instanceof A.SassNumber0) {
        number = _0_1._readFinal$0();
        if (_0_2._readFinal$0() instanceof A.SassNumber0) {
          step = _0_2._readFinal$0();
          t1 = _0_6._readFinal$0();
          t1 = t1;
        } else {
          step = _null;
          t1 = false;
        }
      } else {
        step = _null;
        number = step;
        t1 = false;
      }
      if (t1) {
        A.SassCalculation__verifyCompatibleNumbers0(A._setArrayType([number, step], type$.JSArray_Object));
        return A.SassCalculation__roundWithStep0("nearest", number, step);
      }
      if (_0_1._readFinal$0() instanceof A.SassString0)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) {
          strategy = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.SassNumber0) {
            number = _0_2._readFinal$0();
            if (_0_5._readFinal$0() instanceof A.SassNumber0) {
              step = _0_5._readFinal$0();
              t1 = !number.hasCompatibleUnits$1(step);
            } else {
              step = _null;
              t1 = false;
            }
          } else {
            step = _null;
            number = step;
            t1 = false;
          }
        } else {
          step = _null;
          number = step;
          strategy = number;
          t1 = false;
        }
      else {
        step = _null;
        number = step;
        strategy = number;
        t1 = false;
      }
      if (t1) {
        t1 = type$.JSArray_Object;
        A.SassCalculation__verifyCompatibleNumbers0(A._setArrayType([number, step], t1));
        return new A.SassCalculation0(_s5_, A._setArrayType([strategy, number, step], t1));
      }
      if (_0_1._readFinal$0() instanceof A.SassString0)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) {
          strategy = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.SassNumber0) {
            number = _0_2._readFinal$0();
            if (_0_5._readFinal$0() instanceof A.SassNumber0) {
              step = _0_5._readFinal$0();
              t1 = true;
            } else {
              step = _null;
              t1 = false;
            }
          } else {
            step = _null;
            number = step;
            t1 = false;
          }
        } else {
          step = _null;
          number = step;
          strategy = number;
          t1 = false;
        }
      else {
        step = _null;
        number = step;
        strategy = number;
        t1 = false;
      }
      if (t1) {
        A.SassCalculation__verifyCompatibleNumbers0(A._setArrayType([number, step], type$.JSArray_Object));
        return A.SassCalculation__roundWithStep0(strategy._string0$_text, number, step);
      }
      if (_0_1._readFinal$0() instanceof A.SassString0)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) {
          strategy = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.SassString0) {
            rest = _0_2._readFinal$0();
            t1 = _0_6._readFinal$0();
            t1 = t1;
          } else {
            rest = _null;
            t1 = false;
          }
        } else {
          rest = _null;
          strategy = rest;
          t1 = false;
        }
      else {
        rest = _null;
        strategy = rest;
        t1 = false;
      }
      if (t1)
        return new A.SassCalculation0(_s5_, A._setArrayType([strategy, rest], type$.JSArray_Object));
      if (_0_1._readFinal$0() instanceof A.SassString0)
        if (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0())
          t1 = _0_2._readFinal$0() != null && true && _0_6._readFinal$0();
        else
          t1 = false;
      else
        t1 = false;
      if (t1)
        throw A.wrapException(A.SassScriptException$0(string$.If_str, _null));
      if (_0_1._readFinal$0() instanceof A.SassString0)
        t1 = (_0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0()) && _0_4._readFinal$0() && _0_6._readFinal$0();
      else
        t1 = false;
      if (t1)
        throw A.wrapException(A.SassScriptException$0(string$.Number, _null));
      if (_0_1._readFinal$0() instanceof A.SassString0) {
        rest = _0_1._readFinal$0();
        t1 = _0_4._readFinal$0() && _0_6._readFinal$0();
      } else {
        rest = _null;
        t1 = false;
      }
      if (t1)
        return new A.SassCalculation0(_s5_, A._setArrayType([rest], type$.JSArray_Object));
      number = _0_1._readFinal$0();
      if (_0_4._readFinal$0() && _0_6._readFinal$0())
        throw A.wrapException(A.SassScriptException$0("Single argument " + A.S(number) + " expected to be simplifiable.", _null));
      number = _0_1._readFinal$0();
      if (_0_2._readFinal$0() != null) {
        step = _0_2._readFinal$0();
        t1 = true;
      } else {
        step = _null;
        t1 = false;
      }
      t1 = t1 && _0_6._readFinal$0();
      if (t1)
        return new A.SassCalculation0(_s5_, A._setArrayType([number, step], type$.JSArray_Object));
      if (_0_1._readFinal$0() instanceof A.SassString0)
        t1 = _0_10._readFinal$0() || _0_12._readFinal$0() || _0_14._readFinal$0() || _0_16._readFinal$0();
      else
        t1 = false;
      if (!t1)
        t1 = _0_1._readFinal$0() instanceof A.SassString0 && _0_1._readFinal$0().get$isVar();
      else
        t1 = true;
      if (t1) {
        strategy = _0_1._readFinal$0();
        if (_0_2._readFinal$0() != null) {
          number = _0_2._readFinal$0();
          t1 = true;
        } else {
          number = _null;
          t1 = false;
        }
        if (t1)
          if (_0_5._readFinal$0() != null) {
            step = _0_5._readFinal$0();
            t1 = true;
          } else {
            step = _null;
            t1 = false;
          }
        else {
          step = _null;
          t1 = false;
        }
      } else {
        step = _null;
        number = step;
        strategy = number;
        t1 = false;
      }
      if (t1)
        return new A.SassCalculation0(_s5_, A._setArrayType([strategy, number, step], type$.JSArray_Object));
      if (_0_2._readFinal$0() != null && true && _0_5._readFinal$0() != null && true)
        throw A.wrapException(A.SassScriptException$0(A.S(strategyOrNumber) + string$.x20must_b, _null));
      if (_0_4._readFinal$0())
        _0_5._readFinal$0();
      t1 = A.SassScriptException$0("Invalid parameters.", _null);
      throw A.wrapException(t1);
    },
    SassCalculation_operateInternal0(operator, left, right, inLegacySassFunction, simplify) {
      var t1;
      if (!simplify)
        return new A.CalculationOperation0(operator, left, right);
      left = A.SassCalculation__simplify0(left);
      right = A.SassCalculation__simplify0(right);
      if (B.CalculationOperator_IyK0 === operator || B.CalculationOperator_2bx0 === operator) {
        if (left instanceof A.SassNumber0)
          if (right instanceof A.SassNumber0)
            t1 = inLegacySassFunction ? left.isComparableTo$1(right) : left.hasCompatibleUnits$1(right);
          else
            t1 = false;
        else
          t1 = false;
        if (t1)
          return operator === B.CalculationOperator_IyK0 ? left.plus$1(right) : left.minus$1(right);
        A.SassCalculation__verifyCompatibleNumbers0(A._setArrayType([left, right], type$.JSArray_Object));
        if (right instanceof A.SassNumber0) {
          t1 = right._number1$_value;
          t1 = t1 < 0 && !A.fuzzyEquals0(t1, 0);
        } else
          t1 = false;
        if (t1) {
          right = right.times$1(A.SassNumber_SassNumber0(-1, null));
          operator = operator === B.CalculationOperator_IyK0 ? B.CalculationOperator_2bx0 : B.CalculationOperator_IyK0;
        }
        return new A.CalculationOperation0(operator, left, right);
      } else if (left instanceof A.SassNumber0 && right instanceof A.SassNumber0)
        return operator === B.CalculationOperator_jFr0 ? left.times$1(right) : left.dividedBy$1(right);
      else
        return new A.CalculationOperation0(operator, left, right);
    },
    SassCalculation__roundWithStep0(strategy, number, step) {
      var t1, t2, _0_0, _0_2, _0_1, _0_6, _0_8, _0_9, _0_11, _0_13, stepWithNumberUnit;
      if (!A.LinkedHashSet_LinkedHashSet$_literal(["nearest", "up", "down", "to-zero"], type$.String).contains$1(0, strategy))
        throw A.wrapException(A.ArgumentError$(strategy + string$.x20must_b, null));
      t1 = number._number1$_value;
      if (t1 == 1 / 0 || t1 == -1 / 0) {
        t2 = step._number1$_value;
        t2 = t2 == 1 / 0 || t2 == -1 / 0;
      } else
        t2 = false;
      if (!t2) {
        t2 = step._number1$_value;
        t2 = t2 === 0 || isNaN(t1) || isNaN(t2);
      } else
        t2 = true;
      if (t2) {
        t1 = number.get$numeratorUnits(number);
        return A.SassNumber_SassNumber$withUnits0(0 / 0, number.get$denominatorUnits(number), t1);
      }
      if (t1 == 1 / 0 || t1 == -1 / 0)
        return number;
      t2 = step._number1$_value;
      if (t2 == 1 / 0 || t2 == -1 / 0) {
        _0_0 = new A._Record_2(strategy, t1);
        _0_2 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure6(_0_0));
        _0_1 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure7(_0_0));
        _0_6 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure8(_0_1));
        _0_8 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure9(_0_1));
        _0_9 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure10(_0_2));
        _0_11 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure11(_0_1));
        _0_13 = A._InitializedCell$(new A.SassCalculation__roundWithStep_closure12(_0_1));
        $label0$0: {
          if (0 === _0_2._readFinal$0()) {
            t1 = number;
            break $label0$0;
          }
          if ((_0_6._readFinal$0() || _0_8._readFinal$0()) && _0_9._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits0(0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_6._readFinal$0() || _0_8._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits0(-0.0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_11._readFinal$0() && _0_9._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits0(1 / 0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_11._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits0(-0.0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_13._readFinal$0() && _0_2._readFinal$0() < 0) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits0(-1 / 0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          if (_0_13._readFinal$0()) {
            t1 = number.get$numeratorUnits(number);
            t1 = A.SassNumber_SassNumber$withUnits0(0, number.get$denominatorUnits(number), t1);
            break $label0$0;
          }
          t1 = A.throwExpression(A.UnsupportedError$("Invalid argument: " + strategy + "."));
        }
        return t1;
      }
      stepWithNumberUnit = step.convertValueToMatch$1(number);
      $label1$1: {
        if ("nearest" === strategy) {
          t1 = B.JSNumber_methods.round$0(t1 / stepWithNumberUnit);
          t2 = number.get$numeratorUnits(number);
          t2 = A.SassNumber_SassNumber$withUnits0(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
          t1 = t2;
          break $label1$1;
        }
        if ("up" === strategy) {
          t1 /= stepWithNumberUnit;
          t1 = t2 < 0 ? B.JSNumber_methods.floor$0(t1) : B.JSNumber_methods.ceil$0(t1);
          t2 = number.get$numeratorUnits(number);
          t2 = A.SassNumber_SassNumber$withUnits0(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
          t1 = t2;
          break $label1$1;
        }
        if ("down" === strategy) {
          t1 /= stepWithNumberUnit;
          t1 = t2 < 0 ? B.JSNumber_methods.ceil$0(t1) : B.JSNumber_methods.floor$0(t1);
          t2 = number.get$numeratorUnits(number);
          t2 = A.SassNumber_SassNumber$withUnits0(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
          t1 = t2;
          break $label1$1;
        }
        if ("to-zero" === strategy) {
          t2 = t1 / stepWithNumberUnit;
          if (t1 < 0) {
            t1 = B.JSNumber_methods.ceil$0(t2);
            t2 = number.get$numeratorUnits(number);
            t2 = A.SassNumber_SassNumber$withUnits0(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
            t1 = t2;
          } else {
            t1 = B.JSNumber_methods.floor$0(t2);
            t2 = number.get$numeratorUnits(number);
            t2 = A.SassNumber_SassNumber$withUnits0(t1 * stepWithNumberUnit, number.get$denominatorUnits(number), t2);
            t1 = t2;
          }
          break $label1$1;
        }
        t1 = number.get$numeratorUnits(number);
        t1 = A.SassNumber_SassNumber$withUnits0(0 / 0, number.get$denominatorUnits(number), t1);
        break $label1$1;
      }
      return t1;
    },
    SassCalculation__simplify0(arg) {
      var t1, text, t2, value, _null = null,
        _s32_ = " can't be used in a calculation.",
        _0_11 = A._InitializedCell$(new A.SassCalculation__simplify_closure3(arg)),
        _0_12 = A._InitializedCell$(new A.SassCalculation__simplify_closure4(arg)),
        _0_15 = A._InitializedCell$(new A.SassCalculation__simplify_closure5(_0_12)),
        _0_16 = A._InitializedCell$(new A.SassCalculation__simplify_closure6(_0_12));
      $label0$0: {
        if (arg instanceof A.SassNumber0 || arg instanceof A.CalculationOperation0) {
          t1 = arg;
          break $label0$0;
        }
        if (arg instanceof A.CalculationInterpolation) {
          t1 = new A.SassString0("(" + arg._calculation0$_value + ")", false);
          break $label0$0;
        }
        t1 = arg instanceof A.SassString0;
        if (t1 && !arg._string0$_hasQuotes) {
          t1 = arg;
          break $label0$0;
        }
        if (t1)
          A.throwExpression(A.SassScriptException$0("Quoted string " + arg.toString$0(0) + _s32_, _null));
        t1 = arg instanceof A.SassCalculation0;
        if (t1)
          if (_0_11._readFinal$0())
            if (_0_15._readFinal$0())
              if (_0_16._readFinal$0() instanceof A.SassString0)
                if (!_0_16._readFinal$0()._string0$_hasQuotes) {
                  text = _0_16._readFinal$0()._string0$_text;
                  t2 = A.SassCalculation__needsParentheses0(text);
                } else {
                  text = _null;
                  t2 = false;
                }
              else {
                text = _null;
                t2 = false;
              }
            else {
              text = _null;
              t2 = false;
            }
          else {
            text = _null;
            t2 = false;
          }
        else {
          text = _null;
          t2 = false;
        }
        if (t2) {
          t1 = new A.SassString0("(" + A.S(text) + ")", false);
          break $label0$0;
        }
        if (t1)
          if (_0_11._readFinal$0())
            if (_0_15._readFinal$0()) {
              value = _0_16._readFinal$0();
              t2 = true;
            } else {
              value = _null;
              t2 = false;
            }
          else {
            value = _null;
            t2 = false;
          }
        else {
          value = _null;
          t2 = false;
        }
        if (t2) {
          t1 = value;
          break $label0$0;
        }
        if (t1) {
          t1 = arg;
          break $label0$0;
        }
        if (arg instanceof A.Value0)
          A.throwExpression(A.SassScriptException$0("Value " + arg.toString$0(0) + _s32_, _null));
        t1 = A.throwExpression(A.ArgumentError$("Unexpected calculation argument " + A.S(arg) + ".", _null));
      }
      return t1;
    },
    SassCalculation__needsParentheses0(text) {
      var t1, couldBeVar, second, third, fourth, i, t2,
        first = text.charCodeAt(0);
      if (first === 32 || first === 9 || first === 10 || first === 13 || first === 12 || first === 47 || first === 42)
        return true;
      t1 = text.length;
      couldBeVar = t1 >= 4 && A.characterEqualsIgnoreCase0(first, 118);
      if (t1 < 2)
        return false;
      second = text.charCodeAt(1);
      if (second === 32 || second === 9 || second === 10 || second === 13 || second === 12 || second === 47 || second === 42)
        return true;
      couldBeVar = couldBeVar && A.characterEqualsIgnoreCase0(second, 97);
      if (t1 < 3)
        return false;
      third = text.charCodeAt(2);
      if (third === 32 || third === 9 || third === 10 || third === 13 || third === 12 || third === 47 || third === 42)
        return true;
      couldBeVar = couldBeVar && A.characterEqualsIgnoreCase0(third, 114);
      if (t1 < 4)
        return false;
      fourth = text.charCodeAt(3);
      if (couldBeVar && fourth === 40)
        return true;
      if (fourth === 32 || fourth === 9 || fourth === 10 || fourth === 13 || fourth === 12 || fourth === 47 || fourth === 42)
        return true;
      for (i = 4; i < t1; ++i) {
        t2 = text.charCodeAt(i);
        if (t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12 || t2 === 47 || t2 === 42)
          return true;
      }
      return false;
    },
    SassCalculation__verifyCompatibleNumbers0(args) {
      var t1, _i, t2, arg, i, number1, j, number2;
      for (t1 = args.length, _i = 0; t2 = args.length, _i < t2; args.length === t1 || (0, A.throwConcurrentModificationError)(args), ++_i) {
        arg = args[_i];
        if (arg instanceof A.SassNumber0 && arg.get$hasComplexUnits())
          throw A.wrapException(A.SassScriptException$0("Number " + A.S(arg) + " isn't compatible with CSS calculations.", null));
      }
      for (t1 = t2, i = 0; i < t1 - 1; ++i) {
        number1 = args[i];
        if (!(number1 instanceof A.SassNumber0))
          continue;
        for (j = i + 1; t1 = args.length, j < t1; ++j) {
          number2 = args[j];
          if (!(number2 instanceof A.SassNumber0))
            continue;
          if (number1.hasPossiblyCompatibleUnits$1(number2))
            continue;
          throw A.wrapException(A.SassScriptException$0(number1.toString$0(0) + " and " + number2.toString$0(0) + " are incompatible.", null));
        }
      }
    },
    SassCalculation__verifyLength0(args, expectedLength) {
      var t1;
      if (args.length === expectedLength)
        return;
      if (B.JSArray_methods.any$1(args, new A.SassCalculation__verifyLength_closure0()))
        return;
      t1 = args.length;
      throw A.wrapException(A.SassScriptException$0("" + expectedLength + " arguments required, but only " + t1 + " " + A.pluralize0("was", t1, "were") + " passed.", null));
    },
    SassCalculation__singleArgument0($name, argument, mathFunc, forbidUnits) {
      argument = A.SassCalculation__simplify0(argument);
      if (!(argument instanceof A.SassNumber0))
        return new A.SassCalculation0($name, A._setArrayType([argument], type$.JSArray_Object));
      if (forbidUnits)
        argument.assertNoUnits$0();
      return mathFunc.call$1(argument);
    },
    SassCalculation0: function SassCalculation0(t0, t1) {
      this.name = t0;
      this.$arguments = t1;
    },
    SassCalculation_sign_closure0: function SassCalculation_sign_closure0(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure9: function SassCalculation_round_closure9(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure10: function SassCalculation_round_closure10(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure11: function SassCalculation_round_closure11(t0) {
      this._0_2 = t0;
    },
    SassCalculation_round_closure12: function SassCalculation_round_closure12(t0) {
      this._0_0 = t0;
    },
    SassCalculation_round_closure13: function SassCalculation_round_closure13(t0) {
      this._0_5 = t0;
    },
    SassCalculation_round_closure14: function SassCalculation_round_closure14(t0) {
      this._0_1 = t0;
    },
    SassCalculation_round_closure15: function SassCalculation_round_closure15(t0) {
      this._0_8 = t0;
    },
    SassCalculation_round_closure16: function SassCalculation_round_closure16(t0) {
      this._0_8 = t0;
    },
    SassCalculation_round_closure17: function SassCalculation_round_closure17(t0) {
      this._0_8 = t0;
    },
    SassCalculation_round_closure18: function SassCalculation_round_closure18(t0) {
      this._0_8 = t0;
    },
    SassCalculation__roundWithStep_closure7: function SassCalculation__roundWithStep_closure7(t0) {
      this._0_0 = t0;
    },
    SassCalculation__roundWithStep_closure6: function SassCalculation__roundWithStep_closure6(t0) {
      this._0_0 = t0;
    },
    SassCalculation__roundWithStep_closure8: function SassCalculation__roundWithStep_closure8(t0) {
      this._0_1 = t0;
    },
    SassCalculation__roundWithStep_closure9: function SassCalculation__roundWithStep_closure9(t0) {
      this._0_1 = t0;
    },
    SassCalculation__roundWithStep_closure10: function SassCalculation__roundWithStep_closure10(t0) {
      this._0_2 = t0;
    },
    SassCalculation__roundWithStep_closure11: function SassCalculation__roundWithStep_closure11(t0) {
      this._0_1 = t0;
    },
    SassCalculation__roundWithStep_closure12: function SassCalculation__roundWithStep_closure12(t0) {
      this._0_1 = t0;
    },
    SassCalculation__simplify_closure3: function SassCalculation__simplify_closure3(t0) {
      this._0_0 = t0;
    },
    SassCalculation__simplify_closure4: function SassCalculation__simplify_closure4(t0) {
      this._0_0 = t0;
    },
    SassCalculation__simplify_closure5: function SassCalculation__simplify_closure5(t0) {
      this._0_12 = t0;
    },
    SassCalculation__simplify_closure6: function SassCalculation__simplify_closure6(t0) {
      this._0_12 = t0;
    },
    SassCalculation__verifyLength_closure0: function SassCalculation__verifyLength_closure0() {
    },
    CalculationOperation0: function CalculationOperation0(t0, t1, t2) {
      this._calculation0$_operator = t0;
      this._calculation0$_left = t1;
      this._calculation0$_right = t2;
    },
    CalculationOperator0: function CalculationOperator0(t0, t1, t2, t3) {
      var _ = this;
      _.name = t0;
      _.operator = t1;
      _.precedence = t2;
      _._name = t3;
    },
    CalculationInterpolation: function CalculationInterpolation(t0) {
      this._calculation0$_value = t0;
    },
    CallableDeclaration0: function CallableDeclaration0() {
    },
    Chokidar0: function Chokidar0() {
    },
    ChokidarOptions0: function ChokidarOptions0() {
    },
    ChokidarWatcher0: function ChokidarWatcher0() {
    },
    ClassSelector0: function ClassSelector0(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    cloneCssStylesheet0(stylesheet, extensionStore) {
      var _0_0 = extensionStore.clone$0();
      return new A._Record_2(new A._CloneCssVisitor0(_0_0._1)._clone_css$_visitChildren$2(A.ModifiableCssStylesheet$0(stylesheet.get$span(stylesheet)), stylesheet), _0_0._0);
    },
    _CloneCssVisitor0: function _CloneCssVisitor0(t0) {
      this._clone_css$_oldToNewSelectors = t0;
    },
    ColorExpression0: function ColorExpression0(t0, t1) {
      this.value = t0;
      this.span = t1;
    },
    _updateComponents0($arguments, adjust, change, scale) {
      var keywords, alpha, red, green, blue, hue, saturation, lightness, whiteness, blackness, hasRgb, hasSL, hasWB, t2, t3, t4, _null = null,
        t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        argumentList = type$.SassArgumentList_2._as(t1.$index($arguments, 1));
      if (argumentList._list1$_contents.length !== 0)
        throw A.wrapException(A.SassScriptException$0(string$.Only_op, _null));
      argumentList._argument_list$_wereKeywordsAccessed = true;
      keywords = A.LinkedHashMap_LinkedHashMap$of(argumentList._argument_list$_keywords, type$.String, type$.Value_2);
      t1 = new A._updateComponents_getParam0(keywords, scale, change);
      alpha = t1.call$3$checkUnitless("alpha", 1, true);
      red = t1.call$2("red", 255);
      green = t1.call$2("green", 255);
      blue = t1.call$2("blue", 255);
      hue = scale ? _null : A.NullableExtension_andThen0(keywords.remove$1(0, "hue"), new A._updateComponents_closure1());
      saturation = t1.call$3$checkPercent("saturation", 100, true);
      lightness = t1.call$3$checkPercent("lightness", 100, true);
      whiteness = t1.call$3$assertPercent("whiteness", 100, true);
      blackness = t1.call$3$assertPercent("blackness", 100, true);
      t1 = keywords.__js_helper$_length;
      if (t1 !== 0)
        throw A.wrapException(A.SassScriptException$0("No " + A.pluralize0("argument", t1, _null) + " named " + A.toSentence0(keywords.get$keys(keywords).map$1$1(0, new A._updateComponents_closure2(), type$.Object), "or") + ".", _null));
      hasRgb = red != null || green != null || blue != null;
      hasSL = saturation != null || lightness != null;
      hasWB = whiteness != null || blackness != null;
      if (hasRgb)
        t1 = hasSL || hasWB || hue != null;
      else
        t1 = false;
      if (t1)
        throw A.wrapException(A.SassScriptException$0(string$.RGB_pa + (hasWB ? "HWB" : "HSL") + " parameters.", _null));
      if (hasSL && hasWB)
        throw A.wrapException(A.SassScriptException$0(string$.HSL_pa, _null));
      t1 = new A._updateComponents_updateValue0(change, adjust);
      t2 = new A._updateComponents_updateRgb0(t1);
      if (hasRgb) {
        t3 = t2.call$2(color.get$red(color), red);
        t4 = t2.call$2(color.get$green(color), green);
        t2 = t2.call$2(color.get$blue(color), blue);
        return color.changeRgb$4$alpha$blue$green$red(t1.call$3(color._color1$_alpha, alpha, 1), t2, t4, t3);
      } else if (hasWB) {
        if (change)
          t2 = hue;
        else {
          t2 = color.get$hue(color);
          t2 += hue == null ? 0 : hue;
        }
        t3 = t1.call$3(color.get$whiteness(color), whiteness, 100);
        t4 = t1.call$3(color.get$blackness(color), blackness, 100);
        return color.changeHwb$4$alpha$blackness$hue$whiteness(t1.call$3(color._color1$_alpha, alpha, 1), t4, t2, t3);
      } else {
        t2 = hue == null;
        if (!t2 || hasSL) {
          if (change)
            t2 = hue;
          else {
            t3 = color.get$hue(color);
            t3 += t2 ? 0 : hue;
            t2 = t3;
          }
          t3 = t1.call$3(color.get$saturation(color), saturation, 100);
          t4 = t1.call$3(color.get$lightness(color), lightness, 100);
          return color.changeHsl$4$alpha$hue$lightness$saturation(t1.call$3(color._color1$_alpha, alpha, 1), t2, t4, t3);
        } else if (alpha != null)
          return color.changeAlpha$1(t1.call$3(color._color1$_alpha, alpha, 1));
        else
          return color;
      }
    },
    _functionString0($name, $arguments) {
      return new A.SassString0($name + "(" + J.map$1$1$ax($arguments, new A._functionString_closure0(), type$.String).join$1(0, ", ") + ")", false);
    },
    _removedColorFunction0($name, argument, negative) {
      return A.BuiltInCallable$function0($name, "$color, $amount", new A._removedColorFunction_closure0($name, argument, negative), "sass:color");
    },
    _rgb0($name, $arguments) {
      var t2, red, green, blue, t3, t4,
        t1 = J.getInterceptor$asx($arguments),
        alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : null;
      if (!t1.$index($arguments, 0).get$isSpecialNumber())
        if (!t1.$index($arguments, 1).get$isSpecialNumber())
          if (!t1.$index($arguments, 2).get$isSpecialNumber()) {
            t2 = alpha == null ? null : alpha.get$isSpecialNumber();
            t2 = t2 === true;
          } else
            t2 = true;
        else
          t2 = true;
      else
        t2 = true;
      if (t2)
        return A._functionString0($name, $arguments);
      red = t1.$index($arguments, 0).assertNumber$1("red");
      green = t1.$index($arguments, 1).assertNumber$1("green");
      blue = t1.$index($arguments, 2).assertNumber$1("blue");
      t1 = A.fuzzyRound0(A._percentageOrUnitless0(red, 255, "red"));
      t2 = A.fuzzyRound0(A._percentageOrUnitless0(green, 255, "green"));
      t3 = A.fuzzyRound0(A._percentageOrUnitless0(blue, 255, "blue"));
      t4 = A.NullableExtension_andThen0(alpha, new A._rgb_closure0());
      return A.SassColor$rgbInternal0(t1, t2, t3, t4 == null ? 1 : t4, B._ColorFormatEnum_rgbFunction0);
    },
    _rgbTwoArg0($name, $arguments) {
      var t2, color,
        t1 = J.getInterceptor$asx($arguments);
      if (!t1.$index($arguments, 0).get$isVar())
        t2 = !(t1.$index($arguments, 0) instanceof A.SassColor0) && t1.$index($arguments, 1).get$isVar();
      else
        t2 = true;
      if (t2)
        return A._functionString0($name, $arguments);
      else if (t1.$index($arguments, 1).get$isSpecialNumber()) {
        color = t1.$index($arguments, 0).assertColor$1("color");
        return new A.SassString0($name + "(" + color.get$red(color) + ", " + color.get$green(color) + ", " + color.get$blue(color) + ", " + A.serializeValue0(t1.$index($arguments, 1), false, true) + ")", false);
      }
      return t1.$index($arguments, 0).assertColor$1("color").changeAlpha$1(A._percentageOrUnitless0(t1.$index($arguments, 1).assertNumber$1("alpha"), 1, "alpha"));
    },
    _hsl0($name, $arguments) {
      var t2, hue, saturation, lightness, t3,
        _s10_ = "saturation",
        _s9_ = "lightness",
        t1 = J.getInterceptor$asx($arguments),
        alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : null;
      if (!t1.$index($arguments, 0).get$isSpecialNumber())
        if (!t1.$index($arguments, 1).get$isSpecialNumber())
          if (!t1.$index($arguments, 2).get$isSpecialNumber()) {
            t2 = alpha == null ? null : alpha.get$isSpecialNumber();
            t2 = t2 === true;
          } else
            t2 = true;
        else
          t2 = true;
      else
        t2 = true;
      if (t2)
        return A._functionString0($name, $arguments);
      hue = A._angleValue0(t1.$index($arguments, 0), "hue");
      saturation = t1.$index($arguments, 1).assertNumber$1(_s10_);
      lightness = t1.$index($arguments, 2).assertNumber$1(_s9_);
      A._checkPercent0(saturation, _s10_);
      A._checkPercent0(lightness, _s9_);
      t1 = B.JSNumber_methods.clamp$2(saturation._number1$_value, 0, 100);
      t2 = B.JSNumber_methods.clamp$2(lightness._number1$_value, 0, 100);
      t3 = A.NullableExtension_andThen0(alpha, new A._hsl_closure0());
      return A.SassColor$hslInternal0(hue, t1, t2, t3 == null ? 1 : t3, B._ColorFormatEnum_hslFunction0);
    },
    _angleValue0(angleValue, $name) {
      var t1, t2,
        angle = angleValue.assertNumber$1($name);
      if (angle.compatibleWithUnit$1("deg"))
        return angle.coerceValueToUnit$1("deg");
      t1 = angle.toString$0(0);
      t2 = angle.unitSuggestion$1($name);
      A.EvaluationContext_current0().warn$2(0, "$" + $name + ": Passing a unit other than deg (" + t1 + string$.x29x20is_d + t2 + string$.x0a_See_, B.Deprecation_0bn);
      return angle._number1$_value;
    },
    _checkPercent0(number, $name) {
      var t1, t2;
      if (number.hasUnit$1("%"))
        return;
      t1 = number.toString$0(0);
      t2 = number.unitSuggestion$2($name, "%");
      A.EvaluationContext_current0().warn$2(0, "$" + $name + ": Passing a number without unit % (" + t1 + string$.x29x20is_d + t2 + string$.x0a_Morex3a, B.Deprecation_0bn);
    },
    _hwb0($arguments) {
      var t2, t3,
        _s9_ = "whiteness",
        _s9_0 = "blackness",
        t1 = J.getInterceptor$asx($arguments),
        alpha = t1.get$length($arguments) > 3 ? t1.$index($arguments, 3) : null,
        hue = A._angleValue0(t1.$index($arguments, 0), "hue"),
        whiteness = t1.$index($arguments, 1).assertNumber$1(_s9_),
        blackness = t1.$index($arguments, 2).assertNumber$1(_s9_0);
      whiteness.assertUnit$2("%", _s9_);
      blackness.assertUnit$2("%", _s9_0);
      t1 = whiteness.valueInRange$3(0, 100, _s9_);
      t2 = blackness.valueInRange$3(0, 100, _s9_0);
      t3 = A.NullableExtension_andThen0(alpha, new A._hwb_closure0());
      return A.SassColor_SassColor$hwb0(hue, t1, t2, t3 == null ? 1 : t3);
    },
    _parseChannels0($name, argumentNames, channels) {
      var list, t1, channels0, alphaFromSlashList, isCommaSeparated, isBracketed, buffer, _0_4, text, _1_0, _1_2, channel3, alpha, _null = null,
        _s17_ = "$channels must be";
      if (channels.get$isVar())
        return A._functionString0($name, A._setArrayType([channels], type$.JSArray_Value_2));
      if (channels.get$separator(channels) === B.ListSeparator_zg90) {
        list = channels.get$asList();
        t1 = list.length;
        if (t1 !== 2)
          throw A.wrapException(A.SassScriptException$0(string$.Only_2 + t1 + " " + A.pluralize0("was", t1, "were") + " passed.", _null));
        channels0 = list[0];
        alphaFromSlashList = list[1];
        if (!alphaFromSlashList.get$isSpecialNumber())
          alphaFromSlashList.assertNumber$1("alpha");
        if (list[0].get$isVar())
          return A._functionString0($name, A._setArrayType([channels], type$.JSArray_Value_2));
      } else {
        alphaFromSlashList = _null;
        channels0 = channels;
      }
      isCommaSeparated = channels0.get$separator(channels0) === B.ListSeparator_rXA0;
      isBracketed = channels0.get$hasBrackets();
      if (isCommaSeparated || isBracketed) {
        buffer = new A.StringBuffer(_s17_);
        if (isBracketed) {
          t1 = _s17_ + " an unbracketed";
          buffer._contents = t1;
        } else
          t1 = _s17_;
        if (isCommaSeparated) {
          t1 += isBracketed ? "," : " a";
          buffer._contents = t1;
          t1 = buffer._contents = t1 + " space-separated";
        }
        buffer._contents = t1 + " list.";
        throw A.wrapException(A.SassScriptException$0(buffer.toString$0(0), _null));
      }
      list = channels0.get$asList();
      _0_4 = A._InitializedCell$(new A._parseChannels_closure2(list));
      if (list.length >= 2)
        if (_0_4._readFinal$0() instanceof A.SassString0) {
          text = _0_4._readFinal$0()._string0$_text;
          t1 = !_0_4._readFinal$0()._string0$_hasQuotes && A.equalsIgnoreCase0(text, "from");
        } else
          t1 = false;
      else
        t1 = false;
      if (t1)
        return A._functionString0($name, A._setArrayType([channels], type$.JSArray_Value_2));
      t1 = list.length;
      if (t1 > 3)
        throw A.wrapException(A.SassScriptException$0("Only 3 elements allowed, but " + t1 + " were passed.", _null));
      else if (t1 < 3) {
        if (!B.JSArray_methods.any$1(list, new A._parseChannels_closure3()))
          if (list.length !== 0) {
            t1 = B.JSArray_methods.get$last(list);
            if (t1 instanceof A.SassString0)
              if (t1._string0$_hasQuotes) {
                t1 = t1._string0$_text;
                t1 = A.startsWithIgnoreCase0(t1, "var(") && B.JSString_methods.contains$1(t1, "/");
              } else
                t1 = false;
            else
              t1 = false;
          } else
            t1 = false;
        else
          t1 = true;
        if (t1)
          return A._functionString0($name, A._setArrayType([channels], type$.JSArray_Value_2));
        else
          throw A.wrapException(A.SassScriptException$0("Missing element " + argumentNames[list.length] + ".", _null));
      }
      if (alphaFromSlashList != null) {
        t1 = A.List_List$of(list, true, type$.Value_2);
        t1.push(alphaFromSlashList);
        return t1;
      }
      _1_0 = list[2];
      _1_2 = A._InitializedCell$(new A._parseChannels_closure4(_1_0));
      $label0$0: {
        if (_1_0 instanceof A.SassNumber0)
          if (type$.Record_2_nullable_Object_and_nullable_Object._is(_1_2._readFinal$0())) {
            t1 = type$.SassNumber_2;
            channel3 = t1._as(_1_2._readFinal$0()._0);
            alpha = t1._as(_1_2._readFinal$0()._1);
            t1 = true;
          } else {
            alpha = _null;
            channel3 = alpha;
            t1 = false;
          }
        else {
          alpha = _null;
          channel3 = alpha;
          t1 = false;
        }
        if (t1) {
          t1 = A._setArrayType([list[0], list[1], channel3, alpha], type$.JSArray_Value_2);
          break $label0$0;
        }
        if (_1_0 instanceof A.SassString0)
          if (!_1_0._string0$_hasQuotes)
            t1 = B.JSString_methods.contains$1(_1_0._string0$_text, "/");
          else
            t1 = false;
        else
          t1 = false;
        if (t1) {
          t1 = A._functionString0($name, A._setArrayType([channels0], type$.JSArray_Value_2));
          break $label0$0;
        }
        t1 = list;
        break $label0$0;
      }
      return t1;
    },
    _percentageOrUnitless0(number, max, $name) {
      var value;
      if (!number.get$hasUnits())
        value = number._number1$_value;
      else if (number.hasUnit$1("%"))
        value = max * number._number1$_value / 100;
      else
        throw A.wrapException(A.SassScriptException$0("$" + $name + ": Expected " + number.toString$0(0) + ' to have unit "%" or no units.', null));
      return B.JSNumber_methods.clamp$2(value, 0, max);
    },
    _mixColors0(color1, color2, weight) {
      var weightScale, normalizedWeight, t1, t2, alphaDistance, t3, weight1, weight2;
      A._checkPercent0(weight, "weight");
      weightScale = weight.valueInRange$3(0, 100, "weight") / 100;
      normalizedWeight = weightScale * 2 - 1;
      t1 = color1._color1$_alpha;
      t2 = color2._color1$_alpha;
      alphaDistance = t1 - t2;
      t3 = normalizedWeight * alphaDistance;
      weight1 = ((t3 === -1 ? normalizedWeight : (normalizedWeight + alphaDistance) / (1 + t3)) + 1) / 2;
      weight2 = 1 - weight1;
      return A.SassColor$rgb0(A.fuzzyRound0(color1.get$red(color1) * weight1 + color2.get$red(color2) * weight2), A.fuzzyRound0(color1.get$green(color1) * weight1 + color2.get$green(color2) * weight2), A.fuzzyRound0(color1.get$blue(color1) * weight1 + color2.get$blue(color2) * weight2), t1 * weightScale + t2 * (1 - weightScale));
    },
    _opacify0($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color");
      return color.changeAlpha$1(B.JSNumber_methods.clamp$2(color._color1$_alpha + t1.$index($arguments, 1).assertNumber$1("amount").valueInRangeWithUnit$4(0, 1, "amount", ""), 0, 1));
    },
    _transparentize0($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color");
      return color.changeAlpha$1(B.JSNumber_methods.clamp$2(color._color1$_alpha - t1.$index($arguments, 1).assertNumber$1("amount").valueInRangeWithUnit$4(0, 1, "amount", ""), 0, 1));
    },
    _function11($name, $arguments, callback) {
      return A.BuiltInCallable$function0($name, $arguments, callback, "sass:color");
    },
    global_closure32: function global_closure32() {
    },
    global_closure33: function global_closure33() {
    },
    global_closure34: function global_closure34() {
    },
    global_closure35: function global_closure35() {
    },
    global_closure36: function global_closure36() {
    },
    global_closure37: function global_closure37() {
    },
    global_closure38: function global_closure38() {
    },
    global_closure39: function global_closure39() {
    },
    global_closure40: function global_closure40() {
    },
    global_closure41: function global_closure41() {
    },
    global_closure42: function global_closure42() {
    },
    global_closure43: function global_closure43() {
    },
    global_closure44: function global_closure44() {
    },
    global_closure45: function global_closure45() {
    },
    global_closure46: function global_closure46() {
    },
    global_closure47: function global_closure47() {
    },
    global_closure48: function global_closure48() {
    },
    global_closure49: function global_closure49() {
    },
    global_closure50: function global_closure50() {
    },
    global_closure51: function global_closure51() {
    },
    global_closure52: function global_closure52() {
    },
    global_closure53: function global_closure53() {
    },
    global_closure54: function global_closure54() {
    },
    global_closure55: function global_closure55() {
    },
    global_closure56: function global_closure56() {
    },
    global_closure57: function global_closure57() {
    },
    global__closure0: function global__closure0() {
    },
    global_closure58: function global_closure58() {
    },
    module_closure12: function module_closure12() {
    },
    module_closure13: function module_closure13() {
    },
    module_closure14: function module_closure14() {
    },
    module_closure15: function module_closure15() {
    },
    module_closure16: function module_closure16() {
    },
    module_closure17: function module_closure17() {
    },
    module_closure18: function module_closure18() {
    },
    module_closure19: function module_closure19() {
    },
    module__closure4: function module__closure4() {
    },
    module_closure20: function module_closure20() {
    },
    _red_closure0: function _red_closure0() {
    },
    _green_closure0: function _green_closure0() {
    },
    _blue_closure0: function _blue_closure0() {
    },
    _mix_closure0: function _mix_closure0() {
    },
    _hue_closure0: function _hue_closure0() {
    },
    _saturation_closure0: function _saturation_closure0() {
    },
    _lightness_closure0: function _lightness_closure0() {
    },
    _complement_closure0: function _complement_closure0() {
    },
    _adjust_closure0: function _adjust_closure0() {
    },
    _scale_closure0: function _scale_closure0() {
    },
    _change_closure0: function _change_closure0() {
    },
    _ieHexStr_closure0: function _ieHexStr_closure0() {
    },
    _ieHexStr_closure_hexString0: function _ieHexStr_closure_hexString0() {
    },
    _updateComponents_getParam0: function _updateComponents_getParam0(t0, t1, t2) {
      this.keywords = t0;
      this.scale = t1;
      this.change = t2;
    },
    _updateComponents_closure1: function _updateComponents_closure1() {
    },
    _updateComponents_closure2: function _updateComponents_closure2() {
    },
    _updateComponents_updateValue0: function _updateComponents_updateValue0(t0, t1) {
      this.change = t0;
      this.adjust = t1;
    },
    _updateComponents_updateRgb0: function _updateComponents_updateRgb0(t0) {
      this.updateValue = t0;
    },
    _functionString_closure0: function _functionString_closure0() {
    },
    _removedColorFunction_closure0: function _removedColorFunction_closure0(t0, t1, t2) {
      this.name = t0;
      this.argument = t1;
      this.negative = t2;
    },
    _rgb_closure0: function _rgb_closure0() {
    },
    _hsl_closure0: function _hsl_closure0() {
    },
    _hwb_closure0: function _hwb_closure0() {
    },
    _parseChannels_closure2: function _parseChannels_closure2(t0) {
      this._0_0 = t0;
    },
    _parseChannels_closure3: function _parseChannels_closure3() {
    },
    _parseChannels_closure4: function _parseChannels_closure4(t0) {
      this._1_0 = t0;
    },
    colorClass_closure: function colorClass_closure() {
    },
    colorClass__closure: function colorClass__closure() {
    },
    colorClass__closure0: function colorClass__closure0() {
    },
    colorClass__closure1: function colorClass__closure1() {
    },
    colorClass__closure2: function colorClass__closure2() {
    },
    colorClass__closure3: function colorClass__closure3() {
    },
    colorClass__closure4: function colorClass__closure4() {
    },
    colorClass__closure5: function colorClass__closure5() {
    },
    colorClass__closure6: function colorClass__closure6() {
    },
    colorClass__closure7: function colorClass__closure7() {
    },
    colorClass__closure8: function colorClass__closure8() {
    },
    colorClass__closure9: function colorClass__closure9() {
    },
    _Channels: function _Channels() {
    },
    _NodeSassColor: function _NodeSassColor() {
    },
    legacyColorClass_closure: function legacyColorClass_closure() {
    },
    legacyColorClass_closure0: function legacyColorClass_closure0() {
    },
    legacyColorClass_closure1: function legacyColorClass_closure1() {
    },
    legacyColorClass_closure2: function legacyColorClass_closure2() {
    },
    legacyColorClass_closure3: function legacyColorClass_closure3() {
    },
    legacyColorClass_closure4: function legacyColorClass_closure4() {
    },
    legacyColorClass_closure5: function legacyColorClass_closure5() {
    },
    legacyColorClass_closure6: function legacyColorClass_closure6() {
    },
    legacyColorClass_closure7: function legacyColorClass_closure7() {
    },
    SassColor$rgb0(red, green, blue, alpha) {
      var _null = null,
        t1 = new A.SassColor0(red, green, blue, _null, _null, _null, A.fuzzyAssertRange0(A.SassColor__handleNullAlpha0(alpha), 0, 1, "alpha"), _null);
      A.RangeError_checkValueInInterval(t1.get$red(t1), 0, 255, "red");
      A.RangeError_checkValueInInterval(t1.get$green(t1), 0, 255, "green");
      A.RangeError_checkValueInInterval(t1.get$blue(t1), 0, 255, "blue");
      return t1;
    },
    SassColor$rgbInternal0(_red, _green, _blue, alpha, format) {
      var t1 = new A.SassColor0(_red, _green, _blue, null, null, null, A.fuzzyAssertRange0(alpha, 0, 1, "alpha"), format);
      A.RangeError_checkValueInInterval(t1.get$red(t1), 0, 255, "red");
      A.RangeError_checkValueInInterval(t1.get$green(t1), 0, 255, "green");
      A.RangeError_checkValueInInterval(t1.get$blue(t1), 0, 255, "blue");
      return t1;
    },
    SassColor$hsl(hue, saturation, lightness, alpha) {
      var _null = null,
        t1 = A.SassColor__handleNullAlpha0(alpha);
      return new A.SassColor0(_null, _null, _null, B.JSNumber_methods.$mod(hue, 360), A.fuzzyAssertRange0(saturation, 0, 100, "saturation"), A.fuzzyAssertRange0(lightness, 0, 100, "lightness"), A.fuzzyAssertRange0(t1, 0, 1, "alpha"), _null);
    },
    SassColor$hslInternal0(hue, saturation, lightness, alpha, format) {
      return new A.SassColor0(null, null, null, B.JSNumber_methods.$mod(hue, 360), A.fuzzyAssertRange0(saturation, 0, 100, "saturation"), A.fuzzyAssertRange0(lightness, 0, 100, "lightness"), A.fuzzyAssertRange0(alpha, 0, 1, "alpha"), format);
    },
    SassColor_SassColor$hwb0(hue, whiteness, blackness, alpha) {
      var t2, t1 = {},
        scaledHue = B.JSNumber_methods.$mod(hue, 360) / 360,
        scaledWhiteness = t1.scaledWhiteness = A.fuzzyAssertRange0(whiteness, 0, 100, "whiteness") / 100,
        scaledBlackness = A.fuzzyAssertRange0(blackness, 0, 100, "blackness") / 100,
        sum = scaledWhiteness + scaledBlackness;
      if (sum > 1) {
        t2 = t1.scaledWhiteness = scaledWhiteness / sum;
        scaledBlackness /= sum;
      } else
        t2 = scaledWhiteness;
      t2 = new A.SassColor_SassColor$hwb_toRgb0(t1, 1 - t2 - scaledBlackness);
      return A.SassColor$rgb0(t2.call$1(scaledHue + 0.3333333333333333), t2.call$1(scaledHue), t2.call$1(scaledHue - 0.3333333333333333), alpha);
    },
    SassColor__handleNullAlpha0(alpha) {
      if (alpha != null)
        return alpha;
      A.EvaluationContext_current0().warn$2(0, "Passing null for alpha in the JS API is deprecated.\nTo preserve current behavior, pass 1 or undefined instead.\nMore info: https://sass-lang.com/d/null-alpha", B.Deprecation_UZD);
      return 1;
    },
    SassColor__hueToRgb0(m1, m2, hue) {
      var t1;
      if (hue < 0)
        ++hue;
      if (hue > 1)
        --hue;
      $label0$0: {
        if (hue < 0.16666666666666666) {
          t1 = m1 + (m2 - m1) * hue * 6;
          break $label0$0;
        }
        if (hue < 0.5) {
          t1 = m2;
          break $label0$0;
        }
        if (hue < 0.6666666666666666) {
          t1 = m1 + (m2 - m1) * (0.6666666666666666 - hue) * 6;
          break $label0$0;
        }
        t1 = m1;
        break $label0$0;
      }
      return t1;
    },
    SassColor0: function SassColor0(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _._color1$_red = t0;
      _._color1$_green = t1;
      _._color1$_blue = t2;
      _._color1$_hue = t3;
      _._color1$_saturation = t4;
      _._color1$_lightness = t5;
      _._color1$_alpha = t6;
      _.format = t7;
    },
    SassColor_SassColor$hwb_toRgb0: function SassColor_SassColor$hwb_toRgb0(t0, t1) {
      this._box_0 = t0;
      this.factor = t1;
    },
    _ColorFormatEnum0: function _ColorFormatEnum0(t0) {
      this._color1$_name = t0;
    },
    SpanColorFormat0: function SpanColorFormat0(t0) {
      this._color1$_span = t0;
    },
    Combinator0: function Combinator0(t0, t1) {
      this._combinator0$_text = t0;
      this._name = t1;
    },
    ModifiableCssComment0: function ModifiableCssComment0(t0, t1) {
      var _ = this;
      _.text = t0;
      _.span = t1;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    compile0(path, options) {
      var color, ascii, result, error, stackTrace, t1, color0, ascii0, t2, t3, t4, t5, t6, t7, t8, t9, t10, exception, _null = null;
      if (!A.isNodeJs())
        A.jsThrow(new self.Error("The compile() method is only available in Node.js."));
      t1 = options == null;
      color0 = t1 ? _null : J.get$alertColor$x(options);
      color = color0 == null ? A.hasTerminal0() : color0;
      ascii0 = t1 ? _null : J.get$alertAscii$x(options);
      ascii = ascii0 == null ? $._glyphs === B.C_AsciiGlyphSet : ascii0;
      try {
        t2 = t1 ? _null : J.get$loadPaths$x(options);
        t3 = t1 ? _null : J.get$quietDeps$x(options);
        if (t3 == null)
          t3 = false;
        t4 = A._parseOutputStyle0(t1 ? _null : J.get$style$x(options));
        t5 = t1 ? _null : J.get$verbose$x(options);
        if (t5 == null)
          t5 = false;
        t6 = t1 ? _null : J.get$charset$x(options);
        if (t6 == null)
          t6 = true;
        t7 = t1 ? _null : J.get$sourceMap$x(options);
        if (t7 == null)
          t7 = false;
        t8 = t1 ? _null : J.get$logger$x(options);
        t9 = ascii;
        if (t9 == null)
          t9 = $._glyphs === B.C_AsciiGlyphSet;
        t9 = new A.JSToDartLogger(t8, new A.StderrLogger0(color), t9);
        if (t1)
          t8 = _null;
        else {
          t8 = J.get$importers$x(options);
          t8 = t8 == null ? _null : J.map$1$1$ax(t8, A.compile___parseImporter$closure(), type$.Importer);
        }
        t10 = A._parseFunctions0(t1 ? _null : J.get$functions$x(options), false);
        result = A.compile(path, t6, _null, new A.CastList(t10, A._arrayInstanceType(t10)._eval$1("CastList<1,Callable>")), _null, A.ImportCache$0(t8, t2, t9, _null), _null, _null, t9, _null, t3, t7, t4, _null, true, t5);
        t1 = t1 ? _null : J.get$sourceMapIncludeSources$x(options);
        if (t1 == null)
          t1 = false;
        t1 = A._convertResult(result, t1);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwNodeException(error, ascii, color, stackTrace);
        } else
          throw exception;
      }
    },
    compileString0(text, options) {
      var result, error, stackTrace, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, exception, _null = null,
        t1 = options == null,
        color0 = t1 ? _null : J.get$alertColor$x(options),
        color = color0 == null ? A.hasTerminal0() : color0,
        ascii0 = t1 ? _null : J.get$alertAscii$x(options),
        ascii = ascii0 == null ? $._glyphs === B.C_AsciiGlyphSet : ascii0;
      try {
        t2 = A.parseSyntax(t1 ? _null : J.get$syntax$x(options));
        t3 = t1 ? _null : A.NullableExtension_andThen0(J.get$url$x(options), A.utils1__jsToDartUrl$closure());
        t4 = t1 ? _null : J.get$loadPaths$x(options);
        t5 = t1 ? _null : J.get$quietDeps$x(options);
        if (t5 == null)
          t5 = false;
        t6 = A._parseOutputStyle0(t1 ? _null : J.get$style$x(options));
        t7 = t1 ? _null : J.get$verbose$x(options);
        if (t7 == null)
          t7 = false;
        t8 = t1 ? _null : J.get$charset$x(options);
        if (t8 == null)
          t8 = true;
        t9 = t1 ? _null : J.get$sourceMap$x(options);
        if (t9 == null)
          t9 = false;
        t10 = t1 ? _null : J.get$logger$x(options);
        t11 = ascii;
        if (t11 == null)
          t11 = $._glyphs === B.C_AsciiGlyphSet;
        t11 = new A.JSToDartLogger(t10, new A.StderrLogger0(color), t11);
        if (t1)
          t10 = _null;
        else {
          t10 = J.get$importers$x(options);
          t10 = t10 == null ? _null : J.map$1$1$ax(t10, A.compile___parseImporter$closure(), type$.Importer);
        }
        t12 = t1 ? _null : A.NullableExtension_andThen0(J.get$importer$x(options), A.compile___parseImporter$closure());
        if (t12 == null)
          t12 = (t1 ? _null : J.get$url$x(options)) == null ? new A.NoOpImporter0() : _null;
        t13 = A._parseFunctions0(t1 ? _null : J.get$functions$x(options), false);
        result = A.compileString(text, t8, _null, new A.CastList(t13, A._arrayInstanceType(t13)._eval$1("CastList<1,Callable>")), _null, A.ImportCache$0(t10, t4, t11, _null), t12, _null, _null, t11, _null, t5, t9, t6, t2, t3, true, t7);
        t1 = t1 ? _null : J.get$sourceMapIncludeSources$x(options);
        if (t1 == null)
          t1 = false;
        t1 = A._convertResult(result, t1);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwNodeException(error, ascii, color, stackTrace);
        } else
          throw exception;
      }
    },
    compileAsync1(path, options) {
      var t1, color, ascii;
      if (!A.isNodeJs())
        A.jsThrow(new self.Error("The compileAsync() method is only available in Node.js."));
      t1 = options == null;
      color = t1 ? null : J.get$alertColor$x(options);
      if (color == null)
        color = A.hasTerminal0();
      ascii = t1 ? null : J.get$alertAscii$x(options);
      if (ascii == null)
        ascii = $._glyphs === B.C_AsciiGlyphSet;
      return A._wrapAsyncSassExceptions(A.futureToPromise0(new A.compileAsync_closure(path, color, options, ascii).call$0()), ascii, color);
    },
    compileStringAsync1(text, options) {
      var ascii,
        t1 = options == null,
        color = t1 ? null : J.get$alertColor$x(options);
      if (color == null)
        color = A.hasTerminal0();
      ascii = t1 ? null : J.get$alertAscii$x(options);
      if (ascii == null)
        ascii = $._glyphs === B.C_AsciiGlyphSet;
      return A._wrapAsyncSassExceptions(A.futureToPromise0(new A.compileStringAsync_closure(text, options, color, ascii).call$0()), ascii, color);
    },
    _convertResult(result, includeSourceContents) {
      var loadedUrls,
        t1 = result._compile_result$_serialize,
        t2 = t1._1,
        sourceMap = t2 == null ? null : t2.toJson$1$includeSourceContents(includeSourceContents);
      if (type$.Map_String_dynamic._is(sourceMap) && !sourceMap.containsKey$1("sources"))
        sourceMap.$indexSet(0, "sources", A._setArrayType([], type$.JSArray_String));
      loadedUrls = A.toJSArray(result._evaluate._0.map$1$1(0, A.utils1__dartToJSUrl$closure(), type$.nullable_Object));
      t1 = t1._0;
      return sourceMap == null ? {css: t1, loadedUrls: loadedUrls} : {css: t1, sourceMap: A.jsify(sourceMap), loadedUrls: loadedUrls};
    },
    _wrapAsyncSassExceptions(promise, ascii, color) {
      return J.then$2$x(promise, null, A.allowInterop(new A._wrapAsyncSassExceptions_closure(color, ascii)));
    },
    _parseOutputStyle0(style) {
      var t1;
      $label0$0: {
        if (style == null || "expanded" === style) {
          t1 = B.OutputStyle_00;
          break $label0$0;
        }
        if ("compressed" === style) {
          t1 = B.OutputStyle_10;
          break $label0$0;
        }
        t1 = A.jsThrow(new self.Error('Unknown output style "' + A.S(style) + '".'));
      }
      return t1;
    },
    _parseAsyncImporter(importer) {
      var t1, canonicalize, load, _0_0, findFileUrl, t2;
      if (importer == null)
        A.jsThrow(new self.Error("Importers may not be null."));
      type$.JSImporter._as(importer);
      t1 = J.getInterceptor$x(importer);
      canonicalize = t1.get$canonicalize(importer);
      load = t1.get$load(importer);
      _0_0 = t1.get$findFileUrl(importer);
      if (_0_0 != null) {
        findFileUrl = _0_0;
        t2 = true;
      } else {
        findFileUrl = null;
        t2 = false;
      }
      if (t2)
        if (canonicalize != null || load != null)
          A.jsThrow(new self.Error(string$.An_impa));
        else
          return new A.JSToDartAsyncFileImporter(findFileUrl);
      else if (canonicalize == null || load == null)
        A.jsThrow(new self.Error(string$.An_impu));
      else {
        t1 = A._normalizeNonCanonicalSchemes(t1.get$nonCanonicalScheme(importer));
        t1 = t1 == null ? B.Set_empty7 : A.Set_Set$unmodifiable(t1, type$.String);
        t1.forEach$1(0, A.utils2__validateUrlScheme$closure());
        return new A.JSToDartAsyncImporter(canonicalize, load, t1);
      }
    },
    _parseImporter0(importer) {
      var t1, canonicalize, load, _0_0, findFileUrl, t2;
      if (importer == null)
        A.jsThrow(new self.Error("Importers may not be null."));
      type$.JSImporter._as(importer);
      t1 = J.getInterceptor$x(importer);
      canonicalize = t1.get$canonicalize(importer);
      load = t1.get$load(importer);
      _0_0 = t1.get$findFileUrl(importer);
      if (_0_0 != null) {
        findFileUrl = _0_0;
        t2 = true;
      } else {
        findFileUrl = null;
        t2 = false;
      }
      if (t2)
        if (canonicalize != null || load != null)
          A.jsThrow(new self.Error(string$.An_impa));
        else
          return new A.JSToDartFileImporter(findFileUrl);
      else if (canonicalize == null || load == null)
        A.jsThrow(new self.Error(string$.An_impu));
      else {
        t1 = A._normalizeNonCanonicalSchemes(t1.get$nonCanonicalScheme(importer));
        t1 = t1 == null ? B.Set_empty7 : A.Set_Set$unmodifiable(t1, type$.String);
        t1.forEach$1(0, A.utils2__validateUrlScheme$closure());
        return new A.JSToDartImporter(canonicalize, load, t1);
      }
    },
    _normalizeNonCanonicalSchemes(schemes) {
      var scheme, t1, schemes0;
      $label0$0: {
        if (typeof schemes == "string") {
          scheme = schemes;
          t1 = true;
        } else {
          scheme = null;
          t1 = false;
        }
        if (t1) {
          t1 = A._setArrayType([scheme], type$.JSArray_String);
          break $label0$0;
        }
        if (type$.List_dynamic._is(schemes)) {
          schemes0 = schemes;
          t1 = true;
        } else {
          schemes0 = null;
          t1 = false;
        }
        if (t1) {
          t1 = J.cast$1$0$ax(schemes0, type$.String);
          break $label0$0;
        }
        if (schemes == null) {
          t1 = null;
          break $label0$0;
        }
        t1 = A.jsThrow(new self.Error('nonCanonicalScheme must be a string or list of strings, was "' + A.S(schemes) + '"'));
      }
      return t1;
    },
    _simplifyValue(value) {
      var t1, t2, _0_0, _0_1, _0_3, _0_4, _0_5, _0_8, _0_10, first, min, max, args, _null = null;
      $label1$1: {
        if (value instanceof A.SassCalculation0) {
          t1 = value.$arguments;
          t2 = A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Object>");
          _0_0 = new A._Record_2(value.name, A.List_List$of(new A.MappedListIterable(t1, A.compile___simplifyCalcArg$closure(), t2), true, t2._eval$1("ListIterable.E")));
          _0_1 = A._InitializedCell$(new A._simplifyValue_closure(_0_0));
          _0_3 = A._InitializedCell$(new A._simplifyValue_closure0(_0_1));
          _0_4 = A._InitializedCell$(new A._simplifyValue_closure1(_0_0));
          _0_5 = A._InitializedCell$(new A._simplifyValue_closure2(_0_4));
          _0_8 = A._InitializedCell$(new A._simplifyValue_closure3(_0_4));
          _0_10 = A._InitializedCell$(new A._simplifyValue_closure4(_0_1));
          $label0$0: {
            if (_0_3._readFinal$0())
              if (J.$eq$(_0_5._readFinal$0(), 1)) {
                first = _0_8._readFinal$0();
                t1 = true;
              } else {
                first = _null;
                t1 = false;
              }
            else {
              first = _null;
              t1 = false;
            }
            if (t1) {
              type$.Value_2._as(first);
              t1 = first;
              break $label0$0;
            }
            if (_0_3._readFinal$0())
              A.throwExpression(A.ArgumentError$("calc() requires exactly one argument.", _null));
            if (_0_10._readFinal$0())
              if (J.$eq$(_0_5._readFinal$0(), 3)) {
                min = _0_8._readFinal$0();
                value = J.$index$asx(_0_4._readFinal$0(), 1);
                max = J.$index$asx(_0_4._readFinal$0(), 2);
                max = max;
                t1 = true;
              } else {
                max = _null;
                value = max;
                min = value;
                t1 = false;
              }
            else {
              max = _null;
              value = max;
              min = value;
              t1 = false;
            }
            if (t1) {
              t1 = A.SassCalculation_clamp0(min, value, max);
              break $label0$0;
            }
            if (_0_10._readFinal$0())
              A.throwExpression(A.ArgumentError$("clamp() requires exactly 3 arguments.", _null));
            if ("min" === _0_1._readFinal$0()) {
              args = _0_4._readFinal$0();
              t1 = true;
            } else {
              args = _null;
              t1 = false;
            }
            if (t1) {
              t1 = A.SassCalculation_min0(args);
              break $label0$0;
            }
            if ("max" === _0_1._readFinal$0()) {
              args = _0_4._readFinal$0();
              t1 = true;
            } else {
              args = _null;
              t1 = false;
            }
            if (t1) {
              t1 = A.SassCalculation_max0(args);
              break $label0$0;
            }
            t1 = A.throwExpression(A.ArgumentError$('"' + _0_1._readFinal$0() + '" is not a recognized calculation type.', _null));
          }
          break $label1$1;
        }
        t1 = value;
        break $label1$1;
      }
      return t1;
    },
    _simplifyCalcArg(value) {
      var t1;
      $label0$0: {
        if (value instanceof A.SassCalculation0) {
          t1 = A._simplifyValue(value);
          break $label0$0;
        }
        if (value instanceof A.CalculationOperation0) {
          t1 = A.SassCalculation_operateInternal0(value._calculation0$_operator, A._simplifyCalcArg(value._calculation0$_left), A._simplifyCalcArg(value._calculation0$_right), false, true);
          break $label0$0;
        }
        t1 = value;
        break $label0$0;
      }
      return t1;
    },
    _parseFunctions0(functions, asynch) {
      var result;
      if (functions == null)
        return B.List_empty24;
      result = A._setArrayType([], type$.JSArray_AsyncCallable_2);
      A.jsForEach(functions, new A._parseFunctions_closure0(asynch, result));
      return result;
    },
    compileAsync_closure: function compileAsync_closure(t0, t1, t2, t3) {
      var _ = this;
      _.path = t0;
      _.color = t1;
      _.options = t2;
      _.ascii = t3;
    },
    compileAsync__closure: function compileAsync__closure() {
    },
    compileStringAsync_closure: function compileStringAsync_closure(t0, t1, t2, t3) {
      var _ = this;
      _.text = t0;
      _.options = t1;
      _.color = t2;
      _.ascii = t3;
    },
    compileStringAsync__closure: function compileStringAsync__closure() {
    },
    compileStringAsync__closure0: function compileStringAsync__closure0() {
    },
    _wrapAsyncSassExceptions_closure: function _wrapAsyncSassExceptions_closure(t0, t1) {
      this.color = t0;
      this.ascii = t1;
    },
    _simplifyValue_closure: function _simplifyValue_closure(t0) {
      this._0_0 = t0;
    },
    _simplifyValue_closure0: function _simplifyValue_closure0(t0) {
      this._0_1 = t0;
    },
    _simplifyValue_closure1: function _simplifyValue_closure1(t0) {
      this._0_0 = t0;
    },
    _simplifyValue_closure2: function _simplifyValue_closure2(t0) {
      this._0_4 = t0;
    },
    _simplifyValue_closure3: function _simplifyValue_closure3(t0) {
      this._0_4 = t0;
    },
    _simplifyValue_closure4: function _simplifyValue_closure4(t0) {
      this._0_1 = t0;
    },
    _parseFunctions_closure0: function _parseFunctions_closure0(t0, t1) {
      this.asynch = t0;
      this.result = t1;
    },
    _parseFunctions__closure2: function _parseFunctions__closure2(t0, t1) {
      this.callback = t0;
      this.callable = t1;
    },
    _parseFunctions___closure6: function _parseFunctions___closure6(t0, t1) {
      this.callback = t0;
      this.$arguments = t1;
    },
    _parseFunctions__closure3: function _parseFunctions__closure3(t0, t1) {
      this.callback = t0;
      this.callable = t1;
    },
    _parseFunctions___closure5: function _parseFunctions___closure5(t0, t1) {
      this.callback = t0;
      this.$arguments = t1;
    },
    compile(path, charset, fatalDeprecations, functions, futureDeprecations, importCache, indentWidth, lineFeed, logger, nodeImporter, quietDeps, sourceMap, style, syntax, useSpaces, verbose) {
      var t2, t3, t4, t0, stylesheet, result, _null = null,
        t1 = type$.Deprecation_2;
      logger = new A.DeprecationHandlingLogger0(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), logger, A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashSet_LinkedHashSet$_empty(t1), !verbose);
      t1 = nodeImporter == null;
      if (t1)
        t2 = syntax == null || syntax === A.Syntax_forPath0(path);
      else
        t2 = false;
      if (t2) {
        if (importCache == null)
          importCache = A.ImportCache$none(logger);
        t2 = A.absolute(".", _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null);
        t3 = A.isNodeJs() ? self.process : _null;
        if (!J.$eq$(t3 == null ? _null : J.get$platform$x(t3), "win32")) {
          t3 = A.isNodeJs() ? self.process : _null;
          t3 = J.$eq$(t3 == null ? _null : J.get$platform$x(t3), "darwin");
        } else
          t3 = true;
        if (t3) {
          t3 = $.$get$context();
          t4 = A._realCasePath0(A.absolute(t3.normalize$1(path), _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null));
          t0 = t4;
          t4 = t3;
          t3 = t0;
        } else {
          t3 = $.$get$context();
          t4 = t3.canonicalize$1(0, path);
          t0 = t4;
          t4 = t3;
          t3 = t0;
        }
        t4 = importCache.importCanonical$3$originalUrl(new A.FilesystemImporter0(t2), t4.toUri$1(t3), t4.toUri$1(path));
        t4.toString;
        stylesheet = t4;
      } else {
        t2 = A.readFile0(path);
        t3 = syntax == null ? A.Syntax_forPath0(path) : syntax;
        stylesheet = A.Stylesheet_Stylesheet$parse0(t2, t3, logger, $.$get$context().toUri$1(path));
      }
      result = A._compileStylesheet1(stylesheet, logger, importCache, nodeImporter, new A.FilesystemImporter0(A.absolute(".", _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)), functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset);
      logger.summarize$1$js(!t1);
      return result;
    },
    compileString(source, charset, fatalDeprecations, functions, futureDeprecations, importCache, importer, indentWidth, lineFeed, logger, nodeImporter, quietDeps, sourceMap, style, syntax, url, useSpaces, verbose) {
      var stylesheet, result, _null = null,
        t1 = type$.Deprecation_2;
      logger = new A.DeprecationHandlingLogger0(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), logger, A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashSet_LinkedHashSet$_empty(t1), !verbose);
      stylesheet = A.Stylesheet_Stylesheet$parse0(source, syntax == null ? B.Syntax_SCSS_scss0 : syntax, logger, url);
      if (importer == null)
        t1 = A.isBrowser() ? new A.NoOpImporter0() : new A.FilesystemImporter0(A.absolute(".", _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null));
      else
        t1 = importer;
      result = A._compileStylesheet1(stylesheet, logger, importCache, nodeImporter, t1, functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset);
      logger.summarize$1$js(nodeImporter != null);
      return result;
    },
    _compileStylesheet1(stylesheet, logger, importCache, nodeImporter, importer, functions, style, useSpaces, indentWidth, lineFeed, quietDeps, sourceMap, charset) {
      var evaluateResult = A._EvaluateVisitor$1(functions, importCache, logger, nodeImporter, quietDeps, sourceMap).run$2(0, importer, stylesheet),
        serializeResult = A.serialize0(evaluateResult._1, charset, indentWidth, false, lineFeed, sourceMap, style, useSpaces),
        resultSourceMap = serializeResult._1;
      if (resultSourceMap != null && importCache != null)
        A.mapInPlace0(resultSourceMap.urls, new A._compileStylesheet_closure1(stylesheet, importCache));
      return new A.CompileResult0(evaluateResult, serializeResult);
    },
    _compileStylesheet_closure1: function _compileStylesheet_closure1(t0, t1) {
      this.stylesheet = t0;
      this.importCache = t1;
    },
    CompileOptions: function CompileOptions() {
    },
    CompileStringOptions: function CompileStringOptions() {
    },
    NodeCompileResult: function NodeCompileResult() {
    },
    CompileResult0: function CompileResult0(t0, t1) {
      this._evaluate = t0;
      this._compile_result$_serialize = t1;
    },
    ComplexSassNumber0: function ComplexSassNumber0(t0, t1, t2, t3) {
      var _ = this;
      _._complex0$_numeratorUnits = t0;
      _._complex0$_denominatorUnits = t1;
      _._number1$_value = t2;
      _.hashCache = null;
      _.asSlash = t3;
    },
    ComplexSelector$0(leadingCombinators, components, span, lineBreak) {
      var t1 = A.List_List$unmodifiable(leadingCombinators, type$.CssValue_Combinator_2),
        t2 = A.List_List$unmodifiable(components, type$.ComplexSelectorComponent_2);
      if (t1.length === 0 && t2.length === 0)
        A.throwExpression(A.ArgumentError$(string$.leadin, null));
      return new A.ComplexSelector0(t1, t2, lineBreak, span);
    },
    ComplexSelector0: function ComplexSelector0(t0, t1, t2, t3) {
      var _ = this;
      _.leadingCombinators = t0;
      _.components = t1;
      _.lineBreak = t2;
      _._complex$__ComplexSelector_specificity_FI = $;
      _.span = t3;
    },
    ComplexSelector_specificity_closure0: function ComplexSelector_specificity_closure0() {
    },
    ComplexSelector_singleCompound_closure0: function ComplexSelector_singleCompound_closure0(t0) {
      this._0_0 = t0;
    },
    ComplexSelector_withAdditionalCombinators_closure0: function ComplexSelector_withAdditionalCombinators_closure0(t0) {
      this._0_0 = t0;
    },
    ComplexSelector_concatenate_closure0: function ComplexSelector_concatenate_closure0(t0) {
      this._0_0 = t0;
    },
    ComplexSelectorComponent0: function ComplexSelectorComponent0(t0, t1, t2) {
      this.selector = t0;
      this.combinators = t1;
      this.span = t2;
    },
    ComplexSelectorComponent_toString_closure0: function ComplexSelectorComponent_toString_closure0() {
    },
    CompoundSelector$0(components, span) {
      var t1 = A.List_List$unmodifiable(components, type$.SimpleSelector_2);
      if (t1.length === 0)
        A.throwExpression(A.ArgumentError$("components may not be empty.", null));
      return new A.CompoundSelector0(t1, span);
    },
    CompoundSelector0: function CompoundSelector0(t0, t1) {
      this.components = t0;
      this._compound$__CompoundSelector_specificity_FI = $;
      this.span = t1;
    },
    CompoundSelector_specificity_closure0: function CompoundSelector_specificity_closure0() {
    },
    Configuration0: function Configuration0(t0, t1) {
      this._configuration0$_values = t0;
      this._configuration0$__originalConfiguration = t1;
    },
    ExplicitConfiguration0: function ExplicitConfiguration0(t0, t1, t2) {
      this.nodeWithSpan = t0;
      this._configuration0$_values = t1;
      this._configuration0$__originalConfiguration = t2;
    },
    ConfiguredValue0: function ConfiguredValue0(t0, t1, t2) {
      this.value = t0;
      this.configurationSpan = t1;
      this.assignmentNode = t2;
    },
    ConfiguredVariable0: function ConfiguredVariable0(t0, t1, t2, t3) {
      var _ = this;
      _.name = t0;
      _.expression = t1;
      _.isGuarded = t2;
      _.span = t3;
    },
    ContentBlock$0($arguments, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.ContentBlock0("@content", $arguments, span, t1, t2);
    },
    ContentBlock0: function ContentBlock0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.$arguments = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    ContentRule0: function ContentRule0(t0, t1) {
      this.$arguments = t0;
      this.span = t1;
    },
    _disallowedFunctionNames_closure0: function _disallowedFunctionNames_closure0() {
    },
    CssParser0: function CssParser0(t0, t1, t2, t3) {
      var _ = this;
      _._stylesheet0$_isUseAllowed = true;
      _._stylesheet0$_inParentheses = _._stylesheet0$_inStyleRule = _._stylesheet0$_inUnknownAtRule = _._stylesheet0$_inControlDirective = _._stylesheet0$_inContentBlock = _._stylesheet0$_inMixin = false;
      _._stylesheet0$_globalVariables = t0;
      _.lastSilentComment = null;
      _.scanner = t1;
      _.logger = t2;
      _._parser0$_interpolationMap = t3;
    },
    DebugRule0: function DebugRule0(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    ModifiableCssDeclaration$0($name, value, span, parsedAsCustomProperty, valueSpanForMap) {
      var t2,
        t1 = valueSpanForMap == null ? value.span : valueSpanForMap;
      if (parsedAsCustomProperty)
        if (!J.startsWith$1$s($name.value, "--"))
          A.throwExpression(A.ArgumentError$(string$.parsed, null));
        else {
          t2 = value.value;
          if (!(t2 instanceof A.SassString0))
            A.throwExpression(A.ArgumentError$(string$.If_par + value.toString$0(0) + "` of type " + A.getRuntimeTypeOfDartObject(t2).toString$0(0) + ").", null));
        }
      return new A.ModifiableCssDeclaration0($name, value, parsedAsCustomProperty, t1, span);
    },
    ModifiableCssDeclaration0: function ModifiableCssDeclaration0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.parsedAsCustomProperty = t2;
      _.valueSpanForMap = t3;
      _.span = t4;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    Declaration$0($name, value, span) {
      return new A.Declaration0($name, value, span, null, false);
    },
    Declaration$nested0($name, children, span, value) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.Declaration0($name, value, span, t1, t2);
    },
    Declaration0: function Declaration0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.value = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    SupportsDeclaration0: function SupportsDeclaration0(t0, t1, t2) {
      this.name = t0;
      this.value = t1;
      this.span = t2;
    },
    Deprecation0: function Deprecation0(t0, t1, t2) {
      this.id = t0;
      this.isFuture = t1;
      this._name = t2;
    },
    DeprecationHandlingLogger0: function DeprecationHandlingLogger0(t0, t1, t2, t3, t4) {
      var _ = this;
      _._deprecation_handling$_warningCounts = t0;
      _._deprecation_handling$_inner = t1;
      _.fatalDeprecations = t2;
      _.futureDeprecations = t3;
      _.limitRepetition = t4;
    },
    DeprecationHandlingLogger_warnForDeprecation_closure1: function DeprecationHandlingLogger_warnForDeprecation_closure1(t0) {
      this._0_0 = t0;
    },
    DeprecationHandlingLogger_warnForDeprecation_closure2: function DeprecationHandlingLogger_warnForDeprecation_closure2(t0) {
      this._0_0 = t0;
    },
    DeprecationHandlingLogger_summarize_closure1: function DeprecationHandlingLogger_summarize_closure1() {
    },
    DeprecationHandlingLogger_summarize_closure2: function DeprecationHandlingLogger_summarize_closure2() {
    },
    DynamicImport0: function DynamicImport0(t0, t1) {
      this.urlString = t0;
      this.span = t1;
    },
    EachRule$0(variables, list, children, span) {
      var t1 = A.List_List$unmodifiable(variables, type$.String),
        t2 = A.List_List$unmodifiable(children, type$.Statement_2),
        t3 = B.JSArray_methods.any$1(t2, new A.ParentStatement_closure0());
      return new A.EachRule0(t1, list, span, t2, t3);
    },
    EachRule0: function EachRule0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.variables = t0;
      _.list = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    EachRule_toString_closure0: function EachRule_toString_closure0() {
    },
    EmptyExtensionStore0: function EmptyExtensionStore0() {
    },
    Environment$0() {
      var t1 = type$.String,
        t2 = type$.Module_Callable_2,
        t3 = type$.AstNode_2,
        t4 = type$.int,
        t5 = type$.Callable_2,
        t6 = type$.JSArray_Map_String_Callable_2;
      return new A.Environment0(A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), A.LinkedHashMap_LinkedHashMap$_empty(t2, t3), null, null, A._setArrayType([], type$.JSArray_Module_Callable_2), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value_2)], type$.JSArray_Map_String_Value_2), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t3)], type$.JSArray_Map_String_AstNode_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), A._setArrayType([A.LinkedHashMap_LinkedHashMap$_empty(t1, t5)], t6), A.LinkedHashMap_LinkedHashMap$_empty(t1, t4), null);
    },
    Environment$_0(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, _functions, _mixins, _content) {
      var t1 = type$.String,
        t2 = type$.int;
      return new A.Environment0(_modules, _namespaceNodes, _globalModules, _importedModules, _forwardedModules, _nestedForwardedModules, _allModules, _variables, _variableNodes, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _functions, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _mixins, A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), _content);
    },
    _EnvironmentModule__EnvironmentModule1(environment, css, preModuleComments, extensionStore, forwarded) {
      var t1, t2, t3, t4, t5, t6, module, comments, result, t7;
      if (forwarded == null)
        forwarded = B.Set_empty4;
      t1 = type$.dynamic;
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t2 = type$.Module_Callable_2, t3 = type$.List_CssComment_2, t4 = A.MapExtensions_get_pairs0(preModuleComments, t2, t3), t4 = t4.get$iterator(t4), t5 = type$.CssComment_2; t4.moveNext$0();) {
        t6 = t4.get$current(t4);
        module = t6._0;
        comments = t6._1;
        result = A.List_List$from(comments, false, t5);
        result.fixed$length = Array;
        result.immutable$list = Array;
        t1.$indexSet(0, module, result);
      }
      t1 = A.ConstantMap_ConstantMap$from(t1, t2, t3);
      t2 = A._EnvironmentModule__makeModulesByVariable1(forwarded);
      t3 = A._EnvironmentModule__memberMap1(B.JSArray_methods.get$first(environment._environment0$_variables), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure11(), type$.Map_String_Value_2), type$.Value_2);
      t4 = A._EnvironmentModule__memberMap1(B.JSArray_methods.get$first(environment._environment0$_variableNodes), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure12(), type$.Map_String_AstNode_2), type$.AstNode_2);
      t5 = type$.Map_String_Callable_2;
      t6 = type$.Callable_2;
      t7 = A._EnvironmentModule__memberMap1(B.JSArray_methods.get$first(environment._environment0$_functions), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure13(), t5), t6);
      t6 = A._EnvironmentModule__memberMap1(B.JSArray_methods.get$first(environment._environment0$_mixins), forwarded.map$1$1(0, new A._EnvironmentModule__EnvironmentModule_closure14(), t5), t6);
      t5 = J.get$isNotEmpty$asx(css.get$children(css)) || preModuleComments.get$isNotEmpty(preModuleComments) || B.JSArray_methods.any$1(environment._environment0$_allModules, new A._EnvironmentModule__EnvironmentModule_closure15());
      return A._EnvironmentModule$_1(environment, css, t1, extensionStore, t2, t3, t4, t7, t6, t5, !extensionStore.get$isEmpty(extensionStore) || B.JSArray_methods.any$1(environment._environment0$_allModules, new A._EnvironmentModule__EnvironmentModule_closure16()));
    },
    _EnvironmentModule__makeModulesByVariable1(forwarded) {
      var modulesByVariable, t1, t2, t3, t4, t5;
      if (forwarded.get$isEmpty(forwarded))
        return B.Map_empty10;
      modulesByVariable = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Module_Callable_2);
      for (t1 = forwarded.get$iterator(forwarded); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        if (t2 instanceof A._EnvironmentModule1) {
          for (t3 = t2._environment0$_modulesByVariable, t3 = t3.get$values(t3), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
            t4 = t3.get$current(t3);
            t5 = t4.get$variables();
            A.setAll0(modulesByVariable, t5.get$keys(t5), t4);
          }
          A.setAll0(modulesByVariable, J.get$keys$z(B.JSArray_methods.get$first(t2._environment0$_environment._environment0$_variables)), t2);
        } else {
          t3 = t2.get$variables();
          A.setAll0(modulesByVariable, t3.get$keys(t3), t2);
        }
      }
      return modulesByVariable;
    },
    _EnvironmentModule__memberMap1(localMap, otherMaps, $V) {
      var t1, t2, t3;
      localMap = new A.PublicMemberMapView0(localMap, $V._eval$1("PublicMemberMapView0<0>"));
      if (otherMaps.get$isEmpty(otherMaps))
        return localMap;
      t1 = A._setArrayType([], $V._eval$1("JSArray<Map<String,0>>"));
      for (t2 = otherMaps.get$iterator(otherMaps); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        if (t3.get$isNotEmpty(t3))
          t1.push(t3);
      }
      t1.push(localMap);
      if (t1.length === 1)
        return localMap;
      return A.MergedMapView$0(t1, type$.String, $V);
    },
    _EnvironmentModule$_1(_environment, css, preModuleComments, extensionStore, _modulesByVariable, variables, variableNodes, functions, mixins, transitivelyContainsCss, transitivelyContainsExtensions) {
      return new A._EnvironmentModule1(_environment._environment0$_allModules, variables, variableNodes, functions, mixins, extensionStore, css, preModuleComments, transitivelyContainsCss, transitivelyContainsExtensions, _environment, _modulesByVariable);
    },
    Environment0: function Environment0(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) {
      var _ = this;
      _._environment0$_modules = t0;
      _._environment0$_namespaceNodes = t1;
      _._environment0$_globalModules = t2;
      _._environment0$_importedModules = t3;
      _._environment0$_forwardedModules = t4;
      _._environment0$_nestedForwardedModules = t5;
      _._environment0$_allModules = t6;
      _._environment0$_variables = t7;
      _._environment0$_variableNodes = t8;
      _._environment0$_variableIndices = t9;
      _._environment0$_functions = t10;
      _._environment0$_functionIndices = t11;
      _._environment0$_mixins = t12;
      _._environment0$_mixinIndices = t13;
      _._environment0$_content = t14;
      _._environment0$_inMixin = false;
      _._environment0$_inSemiGlobalScope = true;
      _._environment0$_lastVariableIndex = _._environment0$_lastVariableName = null;
    },
    Environment__getVariableFromGlobalModule_closure0: function Environment__getVariableFromGlobalModule_closure0(t0) {
      this.name = t0;
    },
    Environment_setVariable_closure2: function Environment_setVariable_closure2(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    Environment_setVariable_closure3: function Environment_setVariable_closure3(t0) {
      this.name = t0;
    },
    Environment_setVariable_closure4: function Environment_setVariable_closure4(t0, t1) {
      this.$this = t0;
      this.name = t1;
    },
    Environment__getFunctionFromGlobalModule_closure0: function Environment__getFunctionFromGlobalModule_closure0(t0) {
      this.name = t0;
    },
    Environment__getMixinFromGlobalModule_closure0: function Environment__getMixinFromGlobalModule_closure0(t0) {
      this.name = t0;
    },
    Environment_toModule_closure0: function Environment_toModule_closure0() {
    },
    Environment_toDummyModule_closure0: function Environment_toDummyModule_closure0() {
    },
    _EnvironmentModule1: function _EnvironmentModule1(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) {
      var _ = this;
      _.upstream = t0;
      _.variables = t1;
      _.variableNodes = t2;
      _.functions = t3;
      _.mixins = t4;
      _.extensionStore = t5;
      _.css = t6;
      _.preModuleComments = t7;
      _.transitivelyContainsCss = t8;
      _.transitivelyContainsExtensions = t9;
      _._environment0$_environment = t10;
      _._environment0$_modulesByVariable = t11;
    },
    _EnvironmentModule__EnvironmentModule_closure11: function _EnvironmentModule__EnvironmentModule_closure11() {
    },
    _EnvironmentModule__EnvironmentModule_closure12: function _EnvironmentModule__EnvironmentModule_closure12() {
    },
    _EnvironmentModule__EnvironmentModule_closure13: function _EnvironmentModule__EnvironmentModule_closure13() {
    },
    _EnvironmentModule__EnvironmentModule_closure14: function _EnvironmentModule__EnvironmentModule_closure14() {
    },
    _EnvironmentModule__EnvironmentModule_closure15: function _EnvironmentModule__EnvironmentModule_closure15() {
    },
    _EnvironmentModule__EnvironmentModule_closure16: function _EnvironmentModule__EnvironmentModule_closure16() {
    },
    ErrorRule0: function ErrorRule0(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    _EvaluateVisitor$1(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t4,
        t1 = type$.Uri,
        t2 = type$.Module_Callable_2,
        t3 = A._setArrayType([], type$.JSArray_Record_2_String_and_AstNode_2);
      if (nodeImporter == null)
        t4 = importCache == null ? A.ImportCache$none(logger) : importCache;
      else
        t4 = null;
      t1 = new A._EvaluateVisitor1(t4, nodeImporter, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Callable_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Configuration_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode_2), logger, A.LinkedHashSet_LinkedHashSet$_empty(type$.Record_2_String_and_SourceSpan), quietDeps, sourceMap, A.Environment$0(), A.LinkedHashSet_LinkedHashSet$_empty(t1), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.nullable_AstNode_2), t3, B.Configuration_Map_empty_null0);
      t1._EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap1(functions, importCache, logger, nodeImporter, quietDeps, sourceMap);
      return t1;
    },
    _EvaluateVisitor1: function _EvaluateVisitor1(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) {
      var _ = this;
      _._evaluate0$_importCache = t0;
      _._evaluate0$_nodeImporter = t1;
      _._evaluate0$_builtInFunctions = t2;
      _._evaluate0$_builtInModules = t3;
      _._evaluate0$_modules = t4;
      _._evaluate0$_moduleConfigurations = t5;
      _._evaluate0$_moduleNodes = t6;
      _._evaluate0$_logger = t7;
      _._evaluate0$_warningsEmitted = t8;
      _._evaluate0$_quietDeps = t9;
      _._evaluate0$_sourceMap = t10;
      _._evaluate0$_environment = t11;
      _._evaluate0$_declarationName = _._evaluate0$__parent = _._evaluate0$_mediaQuerySources = _._evaluate0$_mediaQueries = _._evaluate0$_styleRuleIgnoringAtRoot = null;
      _._evaluate0$_member = "root stylesheet";
      _._evaluate0$_importSpan = _._evaluate0$_callableNode = _._evaluate0$_currentCallable = null;
      _._evaluate0$_inSupportsDeclaration = _._evaluate0$_inKeyframes = _._evaluate0$_atRootExcludingStyleRule = _._evaluate0$_inUnknownAtRule = _._evaluate0$_inFunction = false;
      _._evaluate0$_loadedUrls = t12;
      _._evaluate0$_activeModules = t13;
      _._evaluate0$_stack = t14;
      _._evaluate0$_importer = null;
      _._evaluate0$_inDependency = false;
      _._evaluate0$__extensionStore = _._evaluate0$_preModuleComments = _._evaluate0$_outOfOrderImports = _._evaluate0$__endOfImports = _._evaluate0$__root = _._evaluate0$__stylesheet = null;
      _._evaluate0$_configuration = t15;
    },
    _EvaluateVisitor_closure25: function _EvaluateVisitor_closure25(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure26: function _EvaluateVisitor_closure26(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure27: function _EvaluateVisitor_closure27(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure28: function _EvaluateVisitor_closure28(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure29: function _EvaluateVisitor_closure29(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure30: function _EvaluateVisitor_closure30(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure31: function _EvaluateVisitor_closure31(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure32: function _EvaluateVisitor_closure32(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure33: function _EvaluateVisitor_closure33(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure10: function _EvaluateVisitor__closure10(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure34: function _EvaluateVisitor_closure34(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure9: function _EvaluateVisitor__closure9(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.module = t2;
    },
    _EvaluateVisitor_closure35: function _EvaluateVisitor_closure35(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure36: function _EvaluateVisitor_closure36(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__closure7: function _EvaluateVisitor__closure7(t0, t1, t2) {
      this.values = t0;
      this.span = t1;
      this.callableNode = t2;
    },
    _EvaluateVisitor__closure8: function _EvaluateVisitor__closure8(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_closure37: function _EvaluateVisitor_closure37(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_run_closure1: function _EvaluateVisitor_run_closure1(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.importer = t2;
    },
    _EvaluateVisitor_run__closure1: function _EvaluateVisitor_run__closure1(t0, t1, t2) {
      this.$this = t0;
      this.importer = t1;
      this.node = t2;
    },
    _EvaluateVisitor__loadModule_closure3: function _EvaluateVisitor__loadModule_closure3(t0, t1) {
      this._box_1 = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__loadModule_closure4: function _EvaluateVisitor__loadModule_closure4(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.nodeWithSpan = t2;
      _.baseUrl = t3;
      _.namesInErrors = t4;
      _.configuration = t5;
      _.callback = t6;
    },
    _EvaluateVisitor__loadModule__closure3: function _EvaluateVisitor__loadModule__closure3(t0, t1) {
      this.$this = t0;
      this.message = t1;
    },
    _EvaluateVisitor__loadModule__closure4: function _EvaluateVisitor__loadModule__closure4(t0, t1, t2) {
      this._box_0 = t0;
      this.callback = t1;
      this.firstLoad = t2;
    },
    _EvaluateVisitor__execute_closure1: function _EvaluateVisitor__execute_closure1(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.stylesheet = t2;
      _.extensionStore = t3;
      _.configuration = t4;
      _.css = t5;
      _.preModuleComments = t6;
    },
    _EvaluateVisitor__combineCss_closure3: function _EvaluateVisitor__combineCss_closure3() {
    },
    _EvaluateVisitor__combineCss_closure4: function _EvaluateVisitor__combineCss_closure4(t0) {
      this.selectors = t0;
    },
    _EvaluateVisitor__combineCss_visitModule1: function _EvaluateVisitor__combineCss_visitModule1(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.seen = t1;
      _.clone = t2;
      _.css = t3;
      _.imports = t4;
      _.sorted = t5;
    },
    _EvaluateVisitor__extendModules_closure3: function _EvaluateVisitor__extendModules_closure3(t0) {
      this.originalSelectors = t0;
    },
    _EvaluateVisitor__extendModules_closure4: function _EvaluateVisitor__extendModules_closure4() {
    },
    _EvaluateVisitor_visitAtRootRule_closure3: function _EvaluateVisitor_visitAtRootRule_closure3(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitAtRootRule_closure4: function _EvaluateVisitor_visitAtRootRule_closure4(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure11: function _EvaluateVisitor__scopeForAtRoot_closure11(t0, t1, t2) {
      this.$this = t0;
      this.newParent = t1;
      this.node = t2;
    },
    _EvaluateVisitor__scopeForAtRoot_closure12: function _EvaluateVisitor__scopeForAtRoot_closure12(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure13: function _EvaluateVisitor__scopeForAtRoot_closure13(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot__closure1: function _EvaluateVisitor__scopeForAtRoot__closure1(t0, t1) {
      this.innerScope = t0;
      this.callback = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure14: function _EvaluateVisitor__scopeForAtRoot_closure14(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor__scopeForAtRoot_closure15: function _EvaluateVisitor__scopeForAtRoot_closure15() {
    },
    _EvaluateVisitor__scopeForAtRoot_closure16: function _EvaluateVisitor__scopeForAtRoot_closure16(t0, t1) {
      this.$this = t0;
      this.innerScope = t1;
    },
    _EvaluateVisitor_visitContentRule_closure1: function _EvaluateVisitor_visitContentRule_closure1(t0, t1) {
      this.$this = t0;
      this.content = t1;
    },
    _EvaluateVisitor_visitDeclaration_closure1: function _EvaluateVisitor_visitDeclaration_closure1(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitEachRule_closure5: function _EvaluateVisitor_visitEachRule_closure5(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure6: function _EvaluateVisitor_visitEachRule_closure6(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.nodeWithSpan = t2;
    },
    _EvaluateVisitor_visitEachRule_closure7: function _EvaluateVisitor_visitEachRule_closure7(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.list = t1;
      _.setVariables = t2;
      _.node = t3;
    },
    _EvaluateVisitor_visitEachRule__closure1: function _EvaluateVisitor_visitEachRule__closure1(t0, t1, t2) {
      this.$this = t0;
      this.setVariables = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitEachRule___closure1: function _EvaluateVisitor_visitEachRule___closure1(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure5: function _EvaluateVisitor_visitAtRule_closure5(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitAtRule_closure6: function _EvaluateVisitor_visitAtRule_closure6(t0, t1, t2) {
      this.$this = t0;
      this.name = t1;
      this.children = t2;
    },
    _EvaluateVisitor_visitAtRule__closure1: function _EvaluateVisitor_visitAtRule__closure1(t0, t1) {
      this.$this = t0;
      this.children = t1;
    },
    _EvaluateVisitor_visitAtRule_closure7: function _EvaluateVisitor_visitAtRule_closure7() {
    },
    _EvaluateVisitor_visitForRule_closure9: function _EvaluateVisitor_visitForRule_closure9(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure10: function _EvaluateVisitor_visitForRule_closure10(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForRule_closure11: function _EvaluateVisitor_visitForRule_closure11(t0) {
      this.fromNumber = t0;
    },
    _EvaluateVisitor_visitForRule_closure12: function _EvaluateVisitor_visitForRule_closure12(t0, t1) {
      this.toNumber = t0;
      this.fromNumber = t1;
    },
    _EvaluateVisitor_visitForRule_closure13: function _EvaluateVisitor_visitForRule_closure13(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.from = t3;
      _.direction = t4;
      _.fromNumber = t5;
    },
    _EvaluateVisitor_visitForRule__closure1: function _EvaluateVisitor_visitForRule__closure1(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitForwardRule_closure3: function _EvaluateVisitor_visitForwardRule_closure3(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitForwardRule_closure4: function _EvaluateVisitor_visitForwardRule_closure4(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__registerCommentsForModule_closure1: function _EvaluateVisitor__registerCommentsForModule_closure1() {
    },
    _EvaluateVisitor_visitIfRule_closure1: function _EvaluateVisitor_visitIfRule_closure1(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIfRule__closure1: function _EvaluateVisitor_visitIfRule__closure1(t0, t1) {
      this.$this = t0;
      this.clause = t1;
    },
    _EvaluateVisitor_visitIfRule___closure1: function _EvaluateVisitor_visitIfRule___closure1(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport_closure1: function _EvaluateVisitor__visitDynamicImport_closure1(t0, t1) {
      this.$this = t0;
      this.$import = t1;
    },
    _EvaluateVisitor__visitDynamicImport__closure7: function _EvaluateVisitor__visitDynamicImport__closure7(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor__visitDynamicImport__closure8: function _EvaluateVisitor__visitDynamicImport__closure8() {
    },
    _EvaluateVisitor__visitDynamicImport__closure9: function _EvaluateVisitor__visitDynamicImport__closure9() {
    },
    _EvaluateVisitor__visitDynamicImport__closure10: function _EvaluateVisitor__visitDynamicImport__closure10(t0, t1, t2, t3, t4) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.loadsUserDefinedModules = t2;
      _.environment = t3;
      _.children = t4;
    },
    _EvaluateVisitor__applyMixin_closure6: function _EvaluateVisitor__applyMixin_closure6(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure4: function _EvaluateVisitor__applyMixin__closure4(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.$arguments = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin_closure5: function _EvaluateVisitor__applyMixin_closure5(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__applyMixin_closure7: function _EvaluateVisitor__applyMixin_closure7(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.contentCallable = t1;
      _.mixin = t2;
      _.nodeWithSpanWithoutContent = t3;
    },
    _EvaluateVisitor__applyMixin__closure3: function _EvaluateVisitor__applyMixin__closure3(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin___closure1: function _EvaluateVisitor__applyMixin___closure1(t0, t1, t2) {
      this.$this = t0;
      this.mixin = t1;
      this.nodeWithSpanWithoutContent = t2;
    },
    _EvaluateVisitor__applyMixin____closure1: function _EvaluateVisitor__applyMixin____closure1(t0, t1) {
      this.$this = t0;
      this.statement = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure5: function _EvaluateVisitor_visitIncludeRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitIncludeRule_closure6: function _EvaluateVisitor_visitIncludeRule_closure6(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitIncludeRule_closure7: function _EvaluateVisitor_visitIncludeRule_closure7(t0) {
      this.node = t0;
    },
    _EvaluateVisitor_visitMediaRule_closure5: function _EvaluateVisitor_visitMediaRule_closure5(t0, t1) {
      this.$this = t0;
      this.queries = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure6: function _EvaluateVisitor_visitMediaRule_closure6(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.queries = t2;
      _.mergedSources = t3;
      _.node = t4;
    },
    _EvaluateVisitor_visitMediaRule__closure1: function _EvaluateVisitor_visitMediaRule__closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule___closure1: function _EvaluateVisitor_visitMediaRule___closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitMediaRule_closure7: function _EvaluateVisitor_visitMediaRule_closure7(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitStyleRule_closure9: function _EvaluateVisitor_visitStyleRule_closure9(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure10: function _EvaluateVisitor_visitStyleRule_closure10() {
    },
    _EvaluateVisitor_visitStyleRule_closure11: function _EvaluateVisitor_visitStyleRule_closure11(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitStyleRule__closure1: function _EvaluateVisitor_visitStyleRule__closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitStyleRule_closure12: function _EvaluateVisitor_visitStyleRule_closure12() {
    },
    _EvaluateVisitor_visitStyleRule_closure13: function _EvaluateVisitor_visitStyleRule_closure13() {
    },
    _EvaluateVisitor_visitSupportsRule_closure3: function _EvaluateVisitor_visitSupportsRule_closure3(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule__closure1: function _EvaluateVisitor_visitSupportsRule__closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitSupportsRule_closure4: function _EvaluateVisitor_visitSupportsRule_closure4() {
    },
    _EvaluateVisitor__visitSupportsCondition_closure1: function _EvaluateVisitor__visitSupportsCondition_closure1(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure5: function _EvaluateVisitor_visitVariableDeclaration_closure5(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure6: function _EvaluateVisitor_visitVariableDeclaration_closure6(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitVariableDeclaration_closure7: function _EvaluateVisitor_visitVariableDeclaration_closure7(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.value = t2;
    },
    _EvaluateVisitor_visitUseRule_closure1: function _EvaluateVisitor_visitUseRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWarnRule_closure1: function _EvaluateVisitor_visitWarnRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule_closure1: function _EvaluateVisitor_visitWhileRule_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitWhileRule__closure1: function _EvaluateVisitor_visitWhileRule__closure1(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitBinaryOperationExpression_closure1: function _EvaluateVisitor_visitBinaryOperationExpression_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__slash_closure3: function _EvaluateVisitor__slash_closure3(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_closure4: function _EvaluateVisitor__slash_closure4(t0) {
      this._1_0 = t0;
    },
    _EvaluateVisitor__slash_recommendation1: function _EvaluateVisitor__slash_recommendation1() {
    },
    _EvaluateVisitor_visitVariableExpression_closure1: function _EvaluateVisitor_visitVariableExpression_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitUnaryOperationExpression_closure1: function _EvaluateVisitor_visitUnaryOperationExpression_closure1(t0, t1) {
      this.node = t0;
      this.operand = t1;
    },
    _EvaluateVisitor_visitListExpression_closure1: function _EvaluateVisitor_visitListExpression_closure1(t0) {
      this.$this = t0;
    },
    _EvaluateVisitor_visitFunctionExpression_closure5: function _EvaluateVisitor_visitFunctionExpression_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitFunctionExpression_closure6: function _EvaluateVisitor_visitFunctionExpression_closure6() {
    },
    _EvaluateVisitor_visitFunctionExpression_closure7: function _EvaluateVisitor_visitFunctionExpression_closure7(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.node = t2;
    },
    _EvaluateVisitor__checkCalculationArguments_check1: function _EvaluateVisitor__checkCalculationArguments_check1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor__visitCalculationExpression_closure1: function _EvaluateVisitor__visitCalculationExpression_closure1(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.node = t2;
      _.inLegacySassFunction = t3;
    },
    _EvaluateVisitor__checkAdjacentCalculationValues_closure1: function _EvaluateVisitor__checkAdjacentCalculationValues_closure1(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitInterpolatedFunctionExpression_closure1: function _EvaluateVisitor_visitInterpolatedFunctionExpression_closure1(t0, t1, t2) {
      this.$this = t0;
      this.node = t1;
      this.$function = t2;
    },
    _EvaluateVisitor__runUserDefinedCallable_closure1: function _EvaluateVisitor__runUserDefinedCallable_closure1(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.callable = t1;
      _.evaluated = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable__closure1: function _EvaluateVisitor__runUserDefinedCallable__closure1(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable___closure1: function _EvaluateVisitor__runUserDefinedCallable___closure1(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.evaluated = t1;
      _.callable = t2;
      _.nodeWithSpan = t3;
      _.run = t4;
      _.V = t5;
    },
    _EvaluateVisitor__runUserDefinedCallable____closure1: function _EvaluateVisitor__runUserDefinedCallable____closure1() {
    },
    _EvaluateVisitor__runFunctionCallable_closure1: function _EvaluateVisitor__runFunctionCallable_closure1(t0, t1) {
      this.$this = t0;
      this.callable = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure5: function _EvaluateVisitor__runBuiltInCallable_closure5(t0, t1, t2) {
      this._box_0 = t0;
      this.evaluated = t1;
      this.namedSet = t2;
    },
    _EvaluateVisitor__runBuiltInCallable_closure6: function _EvaluateVisitor__runBuiltInCallable_closure6(t0, t1) {
      this._box_0 = t0;
      this.evaluated = t1;
    },
    _EvaluateVisitor__runBuiltInCallable_closure7: function _EvaluateVisitor__runBuiltInCallable_closure7() {
    },
    _EvaluateVisitor__evaluateArguments_closure7: function _EvaluateVisitor__evaluateArguments_closure7() {
    },
    _EvaluateVisitor__evaluateArguments_closure8: function _EvaluateVisitor__evaluateArguments_closure8(t0, t1) {
      this.$this = t0;
      this.restNodeForSpan = t1;
    },
    _EvaluateVisitor__evaluateArguments_closure9: function _EvaluateVisitor__evaluateArguments_closure9(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.namedNodes = t3;
    },
    _EvaluateVisitor__evaluateArguments_closure10: function _EvaluateVisitor__evaluateArguments_closure10() {
    },
    _EvaluateVisitor__evaluateMacroArguments_closure7: function _EvaluateVisitor__evaluateMacroArguments_closure7(t0) {
      this.restArgs = t0;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure8: function _EvaluateVisitor__evaluateMacroArguments_closure8(t0, t1, t2) {
      this.$this = t0;
      this.restNodeForSpan = t1;
      this.restArgs = t2;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure9: function _EvaluateVisitor__evaluateMacroArguments_closure9(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.named = t1;
      _.restNodeForSpan = t2;
      _.restArgs = t3;
    },
    _EvaluateVisitor__evaluateMacroArguments_closure10: function _EvaluateVisitor__evaluateMacroArguments_closure10(t0, t1, t2) {
      this.$this = t0;
      this.keywordRestNodeForSpan = t1;
      this.keywordRestArgs = t2;
    },
    _EvaluateVisitor__addRestMap_closure1: function _EvaluateVisitor__addRestMap_closure1(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.values = t1;
      _.convert = t2;
      _.expressionNode = t3;
      _.map = t4;
      _.nodeWithSpan = t5;
    },
    _EvaluateVisitor__verifyArguments_closure1: function _EvaluateVisitor__verifyArguments_closure1(t0, t1, t2) {
      this.$arguments = t0;
      this.positional = t1;
      this.named = t2;
    },
    _EvaluateVisitor_visitCssAtRule_closure3: function _EvaluateVisitor_visitCssAtRule_closure3(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssAtRule_closure4: function _EvaluateVisitor_visitCssAtRule_closure4() {
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure3: function _EvaluateVisitor_visitCssKeyframeBlock_closure3(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssKeyframeBlock_closure4: function _EvaluateVisitor_visitCssKeyframeBlock_closure4() {
    },
    _EvaluateVisitor_visitCssMediaRule_closure5: function _EvaluateVisitor_visitCssMediaRule_closure5(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure6: function _EvaluateVisitor_visitCssMediaRule_closure6(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.mergedQueries = t1;
      _.node = t2;
      _.mergedSources = t3;
    },
    _EvaluateVisitor_visitCssMediaRule__closure1: function _EvaluateVisitor_visitCssMediaRule__closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule___closure1: function _EvaluateVisitor_visitCssMediaRule___closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssMediaRule_closure7: function _EvaluateVisitor_visitCssMediaRule_closure7(t0) {
      this.mergedSources = t0;
    },
    _EvaluateVisitor_visitCssStyleRule_closure5: function _EvaluateVisitor_visitCssStyleRule_closure5(t0, t1, t2) {
      this.$this = t0;
      this.rule = t1;
      this.node = t2;
    },
    _EvaluateVisitor_visitCssStyleRule__closure1: function _EvaluateVisitor_visitCssStyleRule__closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssStyleRule_closure6: function _EvaluateVisitor_visitCssStyleRule_closure6() {
    },
    _EvaluateVisitor_visitCssStyleRule_closure7: function _EvaluateVisitor_visitCssStyleRule_closure7(t0) {
      this._0_0 = t0;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure3: function _EvaluateVisitor_visitCssSupportsRule_closure3(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule__closure1: function _EvaluateVisitor_visitCssSupportsRule__closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _EvaluateVisitor_visitCssSupportsRule_closure4: function _EvaluateVisitor_visitCssSupportsRule_closure4() {
    },
    _EvaluateVisitor__performInterpolationHelper_closure1: function _EvaluateVisitor__performInterpolationHelper_closure1(t0) {
      this.interpolation = t0;
    },
    _EvaluateVisitor__serialize_closure1: function _EvaluateVisitor__serialize_closure1(t0, t1) {
      this.value = t0;
      this.quote = t1;
    },
    _EvaluateVisitor__expressionNode_closure1: function _EvaluateVisitor__expressionNode_closure1(t0, t1) {
      this.$this = t0;
      this.expression = t1;
    },
    _EvaluateVisitor__withoutSlash_recommendation1: function _EvaluateVisitor__withoutSlash_recommendation1() {
    },
    _EvaluateVisitor__stackFrame_closure1: function _EvaluateVisitor__stackFrame_closure1(t0) {
      this.$this = t0;
    },
    _ImportedCssVisitor1: function _ImportedCssVisitor1(t0) {
      this._evaluate0$_visitor = t0;
    },
    _ImportedCssVisitor_visitCssAtRule_closure1: function _ImportedCssVisitor_visitCssAtRule_closure1() {
    },
    _ImportedCssVisitor_visitCssMediaRule_closure1: function _ImportedCssVisitor_visitCssMediaRule_closure1(t0) {
      this.hasBeenMerged = t0;
    },
    _ImportedCssVisitor_visitCssStyleRule_closure1: function _ImportedCssVisitor_visitCssStyleRule_closure1() {
    },
    _ImportedCssVisitor_visitCssSupportsRule_closure1: function _ImportedCssVisitor_visitCssSupportsRule_closure1() {
    },
    _EvaluationContext1: function _EvaluationContext1(t0, t1) {
      this._evaluate0$_visitor = t0;
      this._evaluate0$_defaultWarnNodeWithSpan = t1;
    },
    EveryCssVisitor0: function EveryCssVisitor0() {
    },
    EveryCssVisitor_visitCssAtRule_closure0: function EveryCssVisitor_visitCssAtRule_closure0(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssKeyframeBlock_closure0: function EveryCssVisitor_visitCssKeyframeBlock_closure0(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssMediaRule_closure0: function EveryCssVisitor_visitCssMediaRule_closure0(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssStyleRule_closure0: function EveryCssVisitor_visitCssStyleRule_closure0(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssStylesheet_closure0: function EveryCssVisitor_visitCssStylesheet_closure0(t0) {
      this.$this = t0;
    },
    EveryCssVisitor_visitCssSupportsRule_closure0: function EveryCssVisitor_visitCssSupportsRule_closure0(t0) {
      this.$this = t0;
    },
    throwNodeException(exception, ascii, color, trace) {
      var wasAscii, jsException, t1, trace0;
      trace = trace;
      wasAscii = $._glyphs === B.C_AsciiGlyphSet;
      $._glyphs = ascii ? B.C_AsciiGlyphSet : B.C_UnicodeGlyphSet;
      try {
        t1 = A.callConstructor($.$get$exceptionClass(), [exception, B.JSString_methods.replaceFirst$2(exception.toString$1$color(0, color), "Error: ", "")]);
        jsException = type$._NodeException._as(t1);
        trace0 = A.getTrace0(exception);
        trace = trace0 == null ? trace : trace0;
        if (trace != null)
          A.attachJsStack(jsException, trace);
        A.jsThrow(jsException);
      } finally {
        $._glyphs = wasAscii ? B.C_AsciiGlyphSet : B.C_UnicodeGlyphSet;
      }
    },
    _NodeException: function _NodeException() {
    },
    exceptionClass_closure: function exceptionClass_closure() {
    },
    exceptionClass__closure: function exceptionClass__closure() {
    },
    exceptionClass__closure0: function exceptionClass__closure0() {
    },
    exceptionClass__closure1: function exceptionClass__closure1() {
    },
    SassException$0(message, span, loadedUrls) {
      return new A.SassException0(loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    MultiSpanSassException$0(message, span, primaryLabel, secondarySpans, loadedUrls) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassException0(primaryLabel, t1, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    SassRuntimeException$0(message, span, trace, loadedUrls) {
      return new A.SassRuntimeException0(trace, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    MultiSpanSassRuntimeException$0(message, span, primaryLabel, secondarySpans, trace, loadedUrls) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassRuntimeException0(trace, primaryLabel, t1, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    SassFormatException$0(message, span, loadedUrls) {
      return new A.SassFormatException0(loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    MultiSpanSassFormatException$0(message, span, primaryLabel, secondarySpans, loadedUrls) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassFormatException0(primaryLabel, t1, loadedUrls == null ? B.Set_empty : A.Set_Set$unmodifiable(loadedUrls, type$.Uri), message, span);
    },
    SassScriptException$0(message, argumentName) {
      return new A.SassScriptException0(argumentName == null ? message : "$" + argumentName + ": " + message);
    },
    MultiSpanSassScriptException$0(message, primaryLabel, secondarySpans) {
      var t1 = A.ConstantMap_ConstantMap$from(secondarySpans, type$.FileSpan, type$.String);
      return new A.MultiSpanSassScriptException0(primaryLabel, t1, message);
    },
    SassException0: function SassException0(t0, t1, t2) {
      this.loadedUrls = t0;
      this._span_exception$_message = t1;
      this._span = t2;
    },
    MultiSpanSassException0: function MultiSpanSassException0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.primaryLabel = t0;
      _.secondarySpans = t1;
      _.loadedUrls = t2;
      _._span_exception$_message = t3;
      _._span = t4;
    },
    SassRuntimeException0: function SassRuntimeException0(t0, t1, t2, t3) {
      var _ = this;
      _.trace = t0;
      _.loadedUrls = t1;
      _._span_exception$_message = t2;
      _._span = t3;
    },
    MultiSpanSassRuntimeException0: function MultiSpanSassRuntimeException0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.trace = t0;
      _.primaryLabel = t1;
      _.secondarySpans = t2;
      _.loadedUrls = t3;
      _._span_exception$_message = t4;
      _._span = t5;
    },
    SassFormatException0: function SassFormatException0(t0, t1, t2) {
      this.loadedUrls = t0;
      this._span_exception$_message = t1;
      this._span = t2;
    },
    MultiSpanSassFormatException0: function MultiSpanSassFormatException0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.primaryLabel = t0;
      _.secondarySpans = t1;
      _.loadedUrls = t2;
      _._span_exception$_message = t3;
      _._span = t4;
    },
    SassScriptException0: function SassScriptException0(t0) {
      this.message = t0;
    },
    MultiSpanSassScriptException0: function MultiSpanSassScriptException0(t0, t1, t2) {
      this.primaryLabel = t0;
      this.secondarySpans = t1;
      this.message = t2;
    },
    Exports: function Exports() {
    },
    LoggerNamespace: function LoggerNamespace() {
    },
    _IsCalculationSafeVisitor0: function _IsCalculationSafeVisitor0() {
    },
    _IsCalculationSafeVisitor_visitListExpression_closure0: function _IsCalculationSafeVisitor_visitListExpression_closure0(t0) {
      this.$this = t0;
    },
    expressionToCalc0(expression) {
      var t1 = A._setArrayType([B.C__MakeExpressionCalculationSafe0.visitBinaryOperationExpression$1(expression)], type$.JSArray_Expression_2),
        t2 = expression.get$span(expression),
        t3 = type$.Expression_2;
      return new A.FunctionExpression0(null, "calc", new A.ArgumentInvocation0(A.List_List$unmodifiable(t1, t3), A.ConstantMap_ConstantMap$from(B.Map_empty14, type$.String, t3), null, null, t2), expression.get$span(expression));
    },
    _MakeExpressionCalculationSafe0: function _MakeExpressionCalculationSafe0() {
    },
    __MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor0: function __MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor0() {
    },
    ExtendRule0: function ExtendRule0(t0, t1, t2) {
      this.selector = t0;
      this.isOptional = t1;
      this.span = t2;
    },
    Extension0: function Extension0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.extender = t0;
      _.target = t1;
      _.mediaContext = t2;
      _.isOptional = t3;
      _.span = t4;
    },
    Extender0: function Extender0(t0, t1) {
      this.selector = t0;
      this.isOriginal = t1;
      this._extension$_extension = null;
    },
    ExtensionStore__extendOrReplace0(selector, source, targets, mode, span) {
      var t1, t2, t3, t4, t5, t6, t7, t8, _i, complex, compound, t9, t10, t11, _i0, simple, t12, _i1, t13, t14,
        extender = A.ExtensionStore$_mode0(mode);
      if (!selector.accept$1(B._IsInvisibleVisitor_true0))
        extender._extension_store$_originals.addAll$1(0, selector.components);
      for (t1 = targets.components, t2 = t1.length, t3 = source.components, t4 = t3.length, t5 = type$.ComplexSelector_2, t6 = type$.Extension_2, t7 = type$.SimpleSelector_2, t8 = type$.Map_ComplexSelector_Extension_2, _i = 0; _i < t2; ++_i) {
        complex = t1[_i];
        compound = complex.get$singleCompound();
        if (compound == null)
          throw A.wrapException(A.SassScriptException$0("Can't extend complex selector " + A.S(complex) + ".", null));
        t9 = A.LinkedHashMap_LinkedHashMap$_empty(t7, t8);
        for (t10 = compound.components, t11 = t10.length, _i0 = 0; _i0 < t11; ++_i0) {
          simple = t10[_i0];
          t12 = A.LinkedHashMap_LinkedHashMap$_empty(t5, t6);
          for (_i1 = 0; _i1 < t4; ++_i1) {
            complex = t3[_i1];
            complex.get$specificity();
            t13 = new A.Extender0(complex, false);
            t14 = new A.Extension0(t13, simple, null, true, span);
            t13._extension$_extension = t14;
            t12.$indexSet(0, complex, t14);
          }
          t9.$indexSet(0, simple, t12);
        }
        selector = extender._extension_store$_extendList$2(selector, t9);
      }
      return selector;
    },
    ExtensionStore$0() {
      var t1 = type$.SimpleSelector_2;
      return new A.ExtensionStore0(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Set_ModifiableBox_SelectorList_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Map_ComplexSelector_Extension_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.List_Extension_2), A.LinkedHashMap_LinkedHashMap$_empty(type$.ModifiableBox_SelectorList_2, type$.List_CssMediaQuery_2), new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_SimpleSelector_int_2), new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_ComplexSelector_2), B.ExtendMode_normal_normal0);
    },
    ExtensionStore$_mode0(_mode) {
      var t1 = type$.SimpleSelector_2;
      return new A.ExtensionStore0(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Set_ModifiableBox_SelectorList_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Map_ComplexSelector_Extension_2), A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.List_Extension_2), A.LinkedHashMap_LinkedHashMap$_empty(type$.ModifiableBox_SelectorList_2, type$.List_CssMediaQuery_2), new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_SimpleSelector_int_2), new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_ComplexSelector_2), _mode);
    },
    ExtensionStore0: function ExtensionStore0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._extension_store$_selectors = t0;
      _._extension_store$_extensions = t1;
      _._extension_store$_extensionsByExtender = t2;
      _._extension_store$_mediaContexts = t3;
      _._extension_store$_sourceSpecificity = t4;
      _._extension_store$_originals = t5;
      _._extension_store$_mode = t6;
    },
    ExtensionStore_extensionsWhereTarget_closure0: function ExtensionStore_extensionsWhereTarget_closure0() {
    },
    ExtensionStore__registerSelector_closure1: function ExtensionStore__registerSelector_closure1() {
    },
    ExtensionStore__registerSelector_closure2: function ExtensionStore__registerSelector_closure2(t0) {
      this._0_0 = t0;
    },
    ExtensionStore_addExtension_closure2: function ExtensionStore_addExtension_closure2() {
    },
    ExtensionStore_addExtension_closure3: function ExtensionStore_addExtension_closure3() {
    },
    ExtensionStore_addExtension_closure4: function ExtensionStore_addExtension_closure4(t0) {
      this.complex = t0;
    },
    ExtensionStore__simpleSelectors_closure0: function ExtensionStore__simpleSelectors_closure0(t0) {
      this._0_0 = t0;
    },
    ExtensionStore__extendExistingExtensions_closure1: function ExtensionStore__extendExistingExtensions_closure1() {
    },
    ExtensionStore__extendExistingExtensions_closure2: function ExtensionStore__extendExistingExtensions_closure2() {
    },
    ExtensionStore_addExtensions_closure0: function ExtensionStore_addExtensions_closure0() {
    },
    ExtensionStore__extendComplex_closure0: function ExtensionStore__extendComplex_closure0(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.complex = t2;
    },
    ExtensionStore__extendComplex__closure0: function ExtensionStore__extendComplex__closure0(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.complex = t2;
    },
    ExtensionStore__extendCompound_closure2: function ExtensionStore__extendCompound_closure2() {
    },
    ExtensionStore__extendCompound_closure3: function ExtensionStore__extendCompound_closure3() {
    },
    ExtensionStore__extendCompound_closure4: function ExtensionStore__extendCompound_closure4(t0) {
      this.original = t0;
    },
    ExtensionStore__extendSimple_withoutPseudo0: function ExtensionStore__extendSimple_withoutPseudo0(t0, t1, t2) {
      this.$this = t0;
      this.extensions = t1;
      this.targetsUsed = t2;
    },
    ExtensionStore__extendSimple_closure1: function ExtensionStore__extendSimple_closure1(t0, t1) {
      this.$this = t0;
      this.withoutPseudo = t1;
    },
    ExtensionStore__extendSimple_closure2: function ExtensionStore__extendSimple_closure2() {
    },
    ExtensionStore__extendPseudo_closure4: function ExtensionStore__extendPseudo_closure4() {
    },
    ExtensionStore__extendPseudo_closure5: function ExtensionStore__extendPseudo_closure5() {
    },
    ExtensionStore__extendPseudo_closure6: function ExtensionStore__extendPseudo_closure6() {
    },
    ExtensionStore__extendPseudo_closure7: function ExtensionStore__extendPseudo_closure7(t0) {
      this.pseudo = t0;
    },
    ExtensionStore__extendPseudo_closure8: function ExtensionStore__extendPseudo_closure8(t0, t1) {
      this.pseudo = t0;
      this.selector = t1;
    },
    ExtensionStore__trim_closure1: function ExtensionStore__trim_closure1(t0, t1) {
      this._box_0 = t0;
      this.complex1 = t1;
    },
    ExtensionStore__trim_closure2: function ExtensionStore__trim_closure2(t0, t1) {
      this._box_0 = t0;
      this.complex1 = t1;
    },
    ExtensionStore_clone_closure0: function ExtensionStore_clone_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.newSelectors = t1;
      _.oldToNewSelectors = t2;
      _.newMediaContexts = t3;
    },
    FiberClass: function FiberClass() {
    },
    Fiber: function Fiber() {
    },
    JSToDartFileImporter: function JSToDartFileImporter(t0) {
      this._file0$_findFileUrl = t0;
    },
    JSToDartFileImporter_canonicalize_closure: function JSToDartFileImporter_canonicalize_closure(t0, t1) {
      this.$this = t0;
      this.url = t1;
    },
    FilesystemImporter$(loadPath) {
      var _null = null;
      return new A.FilesystemImporter0(A.absolute(loadPath, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null));
    },
    FilesystemImporter0: function FilesystemImporter0(t0) {
      this._filesystem$_loadPath = t0;
    },
    FilesystemImporter_canonicalize_closure0: function FilesystemImporter_canonicalize_closure0() {
    },
    ForRule$0(variable, from, to, children, span, exclusive) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.ForRule0(variable, from, to, exclusive, span, t1, t2);
    },
    ForRule0: function ForRule0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.variable = t0;
      _.from = t1;
      _.to = t2;
      _.isExclusive = t3;
      _.span = t4;
      _.children = t5;
      _.hasDeclarations = t6;
    },
    ForwardRule0: function ForwardRule0(t0, t1, t2, t3, t4, t5, t6, t7) {
      var _ = this;
      _.url = t0;
      _.shownMixinsAndFunctions = t1;
      _.shownVariables = t2;
      _.hiddenMixinsAndFunctions = t3;
      _.hiddenVariables = t4;
      _.prefix = t5;
      _.configuration = t6;
      _.span = t7;
    },
    ForwardedModuleView_ifNecessary0(inner, rule, $T) {
      var t1;
      if (rule.prefix == null)
        if (rule.shownMixinsAndFunctions == null)
          if (rule.shownVariables == null) {
            t1 = rule.hiddenMixinsAndFunctions;
            if (t1 == null)
              t1 = null;
            else {
              t1 = t1._base;
              t1 = t1.get$isEmpty(t1);
            }
            if (t1 === true) {
              t1 = rule.hiddenVariables;
              if (t1 == null)
                t1 = null;
              else {
                t1 = t1._base;
                t1 = t1.get$isEmpty(t1);
              }
              t1 = t1 === true;
            } else
              t1 = false;
          } else
            t1 = false;
        else
          t1 = false;
      else
        t1 = false;
      if (t1)
        return inner;
      else
        return A.ForwardedModuleView$0(inner, rule, $T);
    },
    ForwardedModuleView$0(_inner, _rule, $T) {
      var t1 = _rule.prefix,
        t2 = _rule.shownVariables,
        t3 = _rule.hiddenVariables,
        t4 = _rule.shownMixinsAndFunctions,
        t5 = _rule.hiddenMixinsAndFunctions;
      return new A.ForwardedModuleView0(_inner, _rule, A.ForwardedModuleView__forwardedMap0(_inner.get$variables(), t1, t2, t3, type$.Value_2), A.ForwardedModuleView__forwardedMap0(_inner.get$variableNodes(), t1, t2, t3, type$.AstNode_2), A.ForwardedModuleView__forwardedMap0(_inner.get$functions(_inner), t1, t4, t5, $T), A.ForwardedModuleView__forwardedMap0(_inner.get$mixins(), t1, t4, t5, $T), $T._eval$1("ForwardedModuleView0<0>"));
    },
    ForwardedModuleView__forwardedMap0(map, prefix, safelist, blocklist, $V) {
      var t2,
        t1 = prefix == null;
      if (t1)
        if (safelist == null)
          if (blocklist != null) {
            t2 = blocklist._base;
            t2 = t2.get$isEmpty(t2);
          } else
            t2 = true;
        else
          t2 = false;
      else
        t2 = false;
      if (t2)
        return map;
      if (!t1)
        map = new A.PrefixedMapView0(map, prefix, $V._eval$1("PrefixedMapView0<0>"));
      if (safelist != null)
        map = new A.LimitedMapView0(map, safelist._base.intersection$1(new A.MapKeySet(map, type$.MapKeySet_nullable_Object)), type$.$env_1_1_String._bind$1($V)._eval$1("LimitedMapView0<1,2>"));
      else {
        if (blocklist != null) {
          t1 = blocklist._base;
          t1 = t1.get$isNotEmpty(t1);
        } else
          t1 = false;
        if (t1)
          map = A.LimitedMapView$blocklist0(map, blocklist, type$.String, $V);
      }
      return map;
    },
    ForwardedModuleView0: function ForwardedModuleView0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._forwarded_view0$_inner = t0;
      _._forwarded_view0$_rule = t1;
      _.variables = t2;
      _.variableNodes = t3;
      _.functions = t4;
      _.mixins = t5;
      _.$ti = t6;
    },
    FunctionExpression0: function FunctionExpression0(t0, t1, t2, t3) {
      var _ = this;
      _.namespace = t0;
      _.originalName = t1;
      _.$arguments = t2;
      _.span = t3;
    },
    JSFunction0: function JSFunction0() {
    },
    SupportsFunction0: function SupportsFunction0(t0, t1, t2) {
      this.name = t0;
      this.$arguments = t1;
      this.span = t2;
    },
    functionClass_closure: function functionClass_closure() {
    },
    functionClass__closure: function functionClass__closure() {
    },
    functionClass__closure0: function functionClass__closure0() {
    },
    SassFunction0: function SassFunction0(t0) {
      this.callable = t0;
    },
    FunctionRule$0($name, $arguments, children, span, comment) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.FunctionRule0($name, $arguments, span, t1, t2);
    },
    FunctionRule0: function FunctionRule0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.name = t0;
      _.$arguments = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    unifyComplex0(complexes, span) {
      var t2, trailingCombinator, leadingCombinator, unifiedBase, t3, _0_6, newLeadingCombinator, t4, base, _1_1, newTrailingCombinator, _i, t5, t6, t7, t8, _null = null,
        t1 = J.getInterceptor$asx(complexes);
      if (t1.get$length(complexes) === 1)
        return complexes;
      for (t2 = t1.get$iterator(complexes), trailingCombinator = _null, leadingCombinator = trailingCombinator, unifiedBase = leadingCombinator; t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        if (t3.accept$1(B.C__IsUselessVisitor0))
          return _null;
        _0_6 = A._InitializedCell$(new A.unifyComplex_closure2(t3));
        t3 = t3.components;
        if (t3.length === 1)
          if (J.get$length$asx(_0_6._readFinal$0()) === 1) {
            newLeadingCombinator = J.$index$asx(_0_6._readFinal$0(), 0);
            t4 = true;
          } else {
            newLeadingCombinator = _null;
            t4 = false;
          }
        else {
          newLeadingCombinator = _null;
          t4 = false;
        }
        if (t4)
          if (leadingCombinator == null)
            leadingCombinator = newLeadingCombinator;
          else if (!leadingCombinator.$eq(0, newLeadingCombinator))
            return _null;
        base = B.JSArray_methods.get$last(t3);
        _1_1 = A._InitializedCell$(new A.unifyComplex_closure3(base));
        if (J.get$length$asx(_1_1._readFinal$0()) === 1) {
          newTrailingCombinator = J.$index$asx(_1_1._readFinal$0(), 0);
          t3 = true;
        } else {
          newTrailingCombinator = _null;
          t3 = false;
        }
        if (t3) {
          if (trailingCombinator != null && !trailingCombinator.$eq(0, newTrailingCombinator))
            return _null;
          trailingCombinator = newTrailingCombinator;
        }
        if (unifiedBase == null)
          unifiedBase = base.selector.components;
        else
          for (t3 = base.selector.components, t4 = t3.length, _i = 0; _i < t4; ++_i) {
            unifiedBase = t3[_i].unify$1(unifiedBase);
            if (unifiedBase == null)
              return _null;
          }
      }
      t2 = type$.JSArray_ComplexSelector_2;
      t3 = A._setArrayType([], t2);
      for (t4 = t1.get$iterator(complexes); t4.moveNext$0();) {
        t5 = t4.get$current(t4);
        t6 = t5.components;
        t7 = t6.length;
        if (t7 > 1) {
          t8 = t5.leadingCombinators;
          t3.push(A.ComplexSelector$0(t8, B.JSArray_methods.take$1(t6, t7 - 1), t5.span, t5.lineBreak));
        }
      }
      t4 = leadingCombinator == null ? B.List_empty14 : A._setArrayType([leadingCombinator], type$.JSArray_CssValue_Combinator_2);
      unifiedBase.toString;
      t5 = A.CompoundSelector$0(unifiedBase, span);
      t6 = trailingCombinator == null ? B.List_empty14 : A._setArrayType([trailingCombinator], type$.JSArray_CssValue_Combinator_2);
      base = A.ComplexSelector$0(t4, A._setArrayType([new A.ComplexSelectorComponent0(t5, A.List_List$unmodifiable(t6, type$.CssValue_Combinator_2), span)], type$.JSArray_ComplexSelectorComponent_2), span, t1.any$1(complexes, new A.unifyComplex_closure4()));
      if (t3.length === 0)
        t1 = A._setArrayType([base], t2);
      else {
        t1 = A.List_List$of(A.IterableExtension_get_exceptLast0(t3), true, type$.ComplexSelector_2);
        t1.push(B.JSArray_methods.get$last(t3).concatenate$2(base, span));
      }
      return A.weave0(t1, span, false);
    },
    unifyCompound0(compound1, compound2) {
      var t1, t2, _i, unified,
        result = compound2.components;
      for (t1 = compound1.components, t2 = t1.length, _i = 0; _i < t2; ++_i, result = unified) {
        unified = t1[_i].unify$1(result);
        if (unified == null)
          return null;
      }
      return A.CompoundSelector$0(result, compound1.span);
    },
    unifyUniversalAndElement0(selector1, selector2) {
      var namespace, $name, t1,
        _0_0 = A._namespaceAndName0(selector1, "selector1"),
        namespace1 = _0_0._0,
        name1 = _0_0._1,
        _1_0 = A._namespaceAndName0(selector2, "selector2"),
        namespace2 = _1_0._0,
        name2 = _1_0._1;
      if (namespace1 == namespace2 || namespace2 === "*")
        namespace = namespace1;
      else {
        if (namespace1 !== "*")
          return null;
        namespace = namespace2;
      }
      if (name1 == name2 || name2 == null)
        $name = name1;
      else {
        if (!(name1 == null || name1 === "*"))
          return null;
        $name = name2;
      }
      t1 = selector1.span;
      return $name == null ? new A.UniversalSelector0(namespace, t1) : new A.TypeSelector0(new A.QualifiedName0($name, namespace), t1);
    },
    _namespaceAndName0(selector, $name) {
      var namespace, t1, name0, _null = null,
        _0_4 = A._InitializedCell$(new A._namespaceAndName_closure0(selector));
      $label0$0: {
        if (selector instanceof A.UniversalSelector0) {
          namespace = selector.namespace;
          t1 = true;
        } else {
          namespace = _null;
          t1 = false;
        }
        if (t1) {
          t1 = new A._Record_2(namespace, _null);
          break $label0$0;
        }
        if (selector instanceof A.TypeSelector0) {
          name0 = _0_4._readFinal$0().name;
          namespace = _0_4._readFinal$0().namespace;
          t1 = true;
        } else {
          namespace = _null;
          name0 = namespace;
          t1 = false;
        }
        if (t1) {
          t1 = new A._Record_2(namespace, name0);
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$value(selector, $name, string$.must_b));
      }
      return t1;
    },
    weave0(complexes, span, forceLineBreak) {
      var complex, t2, prefixes, t3, t4, t5, t6, i, t7, t8, _i, t9, t10, _i0, parentPrefix, t11, t12,
        t1 = J.getInterceptor$asx(complexes);
      if (t1.get$length(complexes) === 1) {
        complex = t1.$index(complexes, 0);
        t2 = true;
      } else {
        complex = null;
        t2 = false;
      }
      if (t2) {
        if (!forceLineBreak || complex.lineBreak)
          return complexes;
        return A._setArrayType([A.ComplexSelector$0(complex.leadingCombinators, complex.components, complex.span, true)], type$.JSArray_ComplexSelector_2);
      }
      t2 = type$.JSArray_ComplexSelector_2;
      prefixes = A._setArrayType([t1.get$first(complexes)], t2);
      for (t1 = t1.skip$1(complexes, 1), t1 = new A.ListIterator(t1, t1.get$length(t1)), t3 = type$.ComplexSelectorComponent_2, t4 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t5 = t1.__internal$_current;
        if (t5 == null)
          t5 = t4._as(t5);
        t6 = t5.components;
        if (t6.length === 1) {
          for (i = 0; i < prefixes.length; ++i)
            prefixes[i] = prefixes[i].concatenate$3$forceLineBreak(t5, span, forceLineBreak);
          continue;
        }
        t7 = A._setArrayType([], t2);
        for (t8 = prefixes.length, _i = 0; _i < prefixes.length; prefixes.length === t8 || (0, A.throwConcurrentModificationError)(prefixes), ++_i) {
          t9 = A._weaveParents0(prefixes[_i], t5, span);
          if (t9 == null)
            t9 = B.List_empty15;
          t10 = t9.length;
          _i0 = 0;
          for (; _i0 < t9.length; t9.length === t10 || (0, A.throwConcurrentModificationError)(t9), ++_i0) {
            parentPrefix = t9[_i0];
            t11 = B.JSArray_methods.get$last(t6);
            t12 = A.List_List$of(parentPrefix.components, true, t3);
            t12.push(t11);
            t11 = parentPrefix.lineBreak || forceLineBreak;
            t7.push(A.ComplexSelector$0(parentPrefix.leadingCombinators, t12, span, t11));
          }
        }
        prefixes = t7;
      }
      return prefixes;
    },
    _weaveParents0(prefix, base, span) {
      var t1, queue1, queue2, trailingCombinators, _0_0, _0_1, _0_3, rootish1, rootish2, rootish, t2, t3, rootish_case_0, rootish_case_1, groups1, groups2, lcs, choices, t4, _i, group, t5, t6, t7, _i0, chunk, t8, t9, _null = null,
        leadingCombinators = A._mergeLeadingCombinators0(prefix.leadingCombinators, base.leadingCombinators);
      if (leadingCombinators == null)
        return _null;
      t1 = type$.ComplexSelectorComponent_2;
      queue1 = A.QueueList_QueueList$from(prefix.components, t1);
      queue2 = A.QueueList_QueueList$from(A.IterableExtension_get_exceptLast0(base.components), t1);
      trailingCombinators = A._mergeTrailingCombinators0(queue1, queue2, span, _null);
      if (trailingCombinators == null)
        return _null;
      $label0$0: {
        _0_0 = new A._Record_2(A._firstIfRootish0(queue1), A._firstIfRootish0(queue2));
        _0_1 = A._InitializedCell$(new A._weaveParents_closure5(_0_0));
        _0_3 = A._InitializedCell$(new A._weaveParents_closure6(_0_0));
        if (_0_1._readFinal$0() != null) {
          rootish1 = _0_1._readFinal$0();
          t1 = true;
        } else {
          rootish1 = _null;
          t1 = false;
        }
        if (t1)
          if (_0_3._readFinal$0() != null) {
            rootish2 = _0_3._readFinal$0();
            t1 = true;
          } else {
            rootish2 = _null;
            t1 = false;
          }
        else {
          rootish2 = _null;
          t1 = false;
        }
        if (t1) {
          rootish = A.unifyCompound0(rootish1.selector, rootish2.selector);
          if (rootish == null)
            return _null;
          t1 = rootish1.combinators;
          t2 = rootish1.span;
          t3 = type$.CssValue_Combinator_2;
          queue1.addFirst$1(new A.ComplexSelectorComponent0(rootish, A.List_List$unmodifiable(t1, t3), t2));
          queue2.addFirst$1(new A.ComplexSelectorComponent0(rootish, A.List_List$unmodifiable(rootish2.combinators, t3), t2));
          break $label0$0;
        }
        if (_0_1._readFinal$0() != null) {
          rootish_case_0 = _0_1._readFinal$0();
          t1 = true;
        } else {
          rootish_case_0 = _null;
          t1 = false;
        }
        if (t1)
          if (_0_3._readFinal$0() == null) {
            t1 = rootish_case_0;
            t2 = true;
          } else {
            t1 = _null;
            t2 = false;
          }
        else {
          t1 = _null;
          t2 = false;
        }
        if (!t2)
          if (_0_1._readFinal$0() == null) {
            if (_0_3._readFinal$0() != null) {
              rootish_case_1 = _0_3._readFinal$0();
              t2 = true;
            } else {
              rootish_case_1 = _null;
              t2 = false;
            }
            if (t2) {
              t1 = rootish_case_1;
              t2 = true;
            } else
              t2 = false;
          } else
            t2 = false;
        else
          t2 = true;
        if (t2) {
          queue1.addFirst$1(t1);
          queue2.addFirst$1(t1);
        }
      }
      groups1 = A._groupSelectors0(queue1);
      groups2 = A._groupSelectors0(queue2);
      t1 = type$.List_ComplexSelectorComponent_2;
      lcs = A.longestCommonSubsequence0(groups2, groups1, new A._weaveParents_closure7(span), t1);
      choices = A._setArrayType([], type$.JSArray_List_Iterable_ComplexSelectorComponent_2);
      for (t2 = lcs.length, t3 = type$.JSArray_Iterable_ComplexSelectorComponent_2, t4 = type$.JSArray_ComplexSelectorComponent_2, _i = 0; _i < lcs.length; lcs.length === t2 || (0, A.throwConcurrentModificationError)(lcs), ++_i) {
        group = lcs[_i];
        t5 = A._setArrayType([], t3);
        for (t6 = A._chunks0(groups1, groups2, new A._weaveParents_closure8(group), t1), t7 = t6.length, _i0 = 0; _i0 < t6.length; t6.length === t7 || (0, A.throwConcurrentModificationError)(t6), ++_i0) {
          chunk = t6[_i0];
          t8 = A._setArrayType([], t4);
          for (t9 = J.get$iterator$ax(chunk); t9.moveNext$0();)
            B.JSArray_methods.addAll$1(t8, t9.get$current(t9));
          t5.push(t8);
        }
        choices.push(t5);
        choices.push(A._setArrayType([group], t3));
        groups1.removeFirst$0();
        groups2.removeFirst$0();
      }
      t2 = A._setArrayType([], t3);
      for (t1 = A._chunks0(groups1, groups2, new A._weaveParents_closure9(), t1), t3 = t1.length, _i = 0; _i < t1.length; t1.length === t3 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        chunk = t1[_i];
        t5 = A._setArrayType([], t4);
        for (t6 = J.get$iterator$ax(chunk); t6.moveNext$0();)
          B.JSArray_methods.addAll$1(t5, t6.get$current(t6));
        t2.push(t5);
      }
      choices.push(t2);
      B.JSArray_methods.addAll$1(choices, trailingCombinators);
      t1 = A._setArrayType([], type$.JSArray_ComplexSelector_2);
      for (t2 = J.get$iterator$ax(A.paths0(new A.WhereIterable(choices, new A._weaveParents_closure10(), type$.WhereIterable_List_Iterable_ComplexSelectorComponent_2), type$.Iterable_ComplexSelectorComponent_2)), t3 = !prefix.lineBreak, t5 = base.lineBreak; t2.moveNext$0();) {
        t6 = t2.get$current(t2);
        t7 = A._setArrayType([], t4);
        for (t6 = J.get$iterator$ax(t6); t6.moveNext$0();)
          B.JSArray_methods.addAll$1(t7, t6.get$current(t6));
        t1.push(A.ComplexSelector$0(leadingCombinators, t7, span, !t3 || t5));
      }
      return t1;
    },
    _firstIfRootish0(queue) {
      var first, t1, t2, _i, simple, t3;
      if (queue.get$length(queue) >= 1) {
        first = queue.$index(0, 0);
        t1 = true;
      } else {
        first = null;
        t1 = false;
      }
      if (t1)
        for (t1 = first.selector.components, t2 = t1.length, _i = 0; _i < t2; ++_i) {
          simple = t1[_i];
          if (simple instanceof A.PseudoSelector0)
            if (simple.isClass)
              t3 = $._rootishPseudoClasses0.contains$1(0, simple.normalizedName);
            else
              t3 = false;
          else
            t3 = false;
          if (t3) {
            queue.removeFirst$0();
            return first;
          }
        }
      return null;
    },
    _mergeLeadingCombinators0(combinators1, combinators2) {
      var t1, t2, combinators, _null = null,
        _0_0 = new A._Record_2(combinators1, combinators2),
        _0_1 = A._InitializedCell$(new A._mergeLeadingCombinators_closure3(_0_0)),
        _0_4 = A._InitializedCell$(new A._mergeLeadingCombinators_closure4(_0_0)),
        _0_7 = A._InitializedCell$(new A._mergeLeadingCombinators_closure5(_0_1)),
        _0_11 = A._InitializedCell$(new A._mergeLeadingCombinators_closure6(_0_4));
      $label0$0: {
        if (_0_1._readFinal$0() == null || _0_4._readFinal$0() == null) {
          t1 = _null;
          break $label0$0;
        }
        t1 = type$.List_CssValue_Combinator_2;
        if (!(t1._is(_0_1._readFinal$0()) && _0_7._readFinal$0() > 1))
          t2 = t1._is(_0_4._readFinal$0()) && _0_11._readFinal$0() > 1;
        else
          t2 = true;
        if (t2) {
          t1 = _null;
          break $label0$0;
        }
        if (t1._is(_0_1._readFinal$0()))
          if (_0_7._readFinal$0() <= 0) {
            combinators = _0_4._readFinal$0();
            t2 = true;
          } else {
            combinators = _null;
            t2 = false;
          }
        else {
          combinators = _null;
          t2 = false;
        }
        if (!t2) {
          combinators = _0_1._readFinal$0();
          t1 = t1._is(_0_4._readFinal$0()) && _0_11._readFinal$0() <= 0;
        } else
          t1 = true;
        if (t1) {
          t1 = combinators;
          break $label0$0;
        }
        t1 = B.C_ListEquality.equals$2(0, combinators1, combinators2) ? combinators1 : _null;
        break $label0$0;
      }
      return t1;
    },
    _mergeTrailingCombinators0(components1, components2, span, result) {
      var _0_1, last, t1, _1_1, t2, t3, _4_0, _4_1, _4_3, _4_4, _4_5, _4_9, _4_6, _4_7, _4_10, component1, component2, t4, t5, choices, _2_0, unified, followingComponents, nextComponents, followingComponents0, next, following, _3_0, siblingComponents_case_0, siblingComponents_case_1, combinator1, combinator2, combinator_case_0, combinatorComponents_case_0, descendantComponents_case_0, combinator_case_1, descendantComponents_case_1, combinatorComponents_case_1, _null = null;
      if (result == null)
        result = A.QueueList$(_null, type$.List_List_ComplexSelectorComponent_2);
      _0_1 = A._InitializedCell$(new A._mergeTrailingCombinators_closure9(components1));
      $label0$0: {
        if (_0_1._readFinal$0() >= 1) {
          last = components1.$index(0, _0_1._readFinal$0() - 1);
          t1 = true;
        } else {
          last = _null;
          t1 = false;
        }
        if (t1) {
          t1 = last.combinators;
          break $label0$0;
        }
        t1 = B.List_empty14;
        break $label0$0;
      }
      _1_1 = A._InitializedCell$(new A._mergeTrailingCombinators_closure10(components2));
      $label1$1: {
        if (_1_1._readFinal$0() >= 1) {
          last = components2.$index(0, _1_1._readFinal$0() - 1);
          t2 = true;
        } else {
          last = _null;
          t2 = false;
        }
        if (t2) {
          t2 = last.combinators;
          break $label1$1;
        }
        t2 = B.List_empty14;
        break $label1$1;
      }
      t3 = t1.length;
      if (t3 === 0 && t2.length === 0)
        return result;
      if (t3 > 1 || t2.length > 1)
        return _null;
      $label2$2: {
        t3 = A.IterableExtension_get_firstOrNull(t1);
        t3 = t3 == null ? _null : t3.value;
        t2 = A.IterableExtension_get_firstOrNull(t2);
        _4_0 = new A._Record_4([t3, t2 == null ? _null : t2.value, components1, components2]);
        _4_1 = A._InitializedCell$(new A._mergeTrailingCombinators_closure11(_4_0));
        _4_3 = A._InitializedCell$(new A._mergeTrailingCombinators_closure12(_4_1));
        _4_4 = A._InitializedCell$(new A._mergeTrailingCombinators_closure13(_4_0));
        _4_5 = A._InitializedCell$(new A._mergeTrailingCombinators_closure14(_4_4));
        _4_9 = A._InitializedCell$(new A._mergeTrailingCombinators_closure15(_4_4));
        _4_6 = A._InitializedCell$(new A._mergeTrailingCombinators_closure16(_4_0));
        _4_7 = A._InitializedCell$(new A._mergeTrailingCombinators_closure17(_4_0));
        _4_10 = A._InitializedCell$(new A._mergeTrailingCombinators_closure18(_4_1));
        if (_4_3._readFinal$0() && _4_5._readFinal$0()) {
          component1 = components1.removeLast$0(0);
          component2 = components2.removeLast$0(0);
          t2 = component1.selector;
          t3 = component2.selector;
          if (A.compoundIsSuperselector0(t2, t3, _null))
            result.addFirst$1(A._setArrayType([A._setArrayType([component2], type$.JSArray_ComplexSelectorComponent_2)], type$.JSArray_List_ComplexSelectorComponent_2));
          else {
            t4 = type$.JSArray_ComplexSelectorComponent_2;
            t5 = type$.JSArray_List_ComplexSelectorComponent_2;
            if (A.compoundIsSuperselector0(t3, t2, _null))
              result.addFirst$1(A._setArrayType([A._setArrayType([component1], t4)], t5));
            else {
              choices = A._setArrayType([A._setArrayType([component1, component2], t4), A._setArrayType([component2, component1], t4)], t5);
              _2_0 = A.unifyCompound0(t2, t3);
              if (_2_0 != null) {
                unified = _2_0;
                t2 = true;
              } else {
                unified = _null;
                t2 = false;
              }
              if (t2)
                choices.push(A._setArrayType([new A.ComplexSelectorComponent0(unified, A.List_List$unmodifiable(A._setArrayType([B.JSArray_methods.get$first(t1)], type$.JSArray_CssValue_Combinator_2), type$.CssValue_Combinator_2), span)], t4));
              result.addFirst$1(choices);
            }
          }
          break $label2$2;
        }
        if (_4_3._readFinal$0())
          if (_4_9._readFinal$0()) {
            followingComponents = _4_6._readFinal$0();
            nextComponents = _4_7._readFinal$0();
            nextComponents = nextComponents;
            t2 = true;
          } else {
            nextComponents = _null;
            followingComponents = nextComponents;
            t2 = false;
          }
        else {
          nextComponents = _null;
          followingComponents = nextComponents;
          t2 = false;
        }
        if (!t2)
          if (_4_10._readFinal$0())
            if (_4_5._readFinal$0()) {
              nextComponents = _4_6._readFinal$0();
              followingComponents0 = _4_7._readFinal$0();
              followingComponents = followingComponents0;
              t2 = true;
            } else
              t2 = false;
          else
            t2 = false;
        else
          t2 = true;
        if (t2) {
          next = nextComponents.removeLast$0(0);
          following = followingComponents.removeLast$0(0);
          t1 = following.selector;
          t2 = next.selector;
          t3 = type$.JSArray_ComplexSelectorComponent_2;
          t4 = type$.JSArray_List_ComplexSelectorComponent_2;
          if (A.compoundIsSuperselector0(t1, t2, _null))
            result.addFirst$1(A._setArrayType([A._setArrayType([next], t3)], t4));
          else {
            t4 = A._setArrayType([A._setArrayType([following, next], t3)], t4);
            _3_0 = A.unifyCompound0(t1, t2);
            if (_3_0 != null) {
              unified = _3_0;
              t1 = true;
            } else {
              unified = _null;
              t1 = false;
            }
            if (t1)
              t4.push(A._setArrayType([new A.ComplexSelectorComponent0(unified, A.List_List$unmodifiable(next.combinators, type$.CssValue_Combinator_2), span)], t3));
            result.addFirst$1(t4);
          }
          break $label2$2;
        }
        if (B.Combinator_Cht0 === _4_1._readFinal$0())
          if (_4_9._readFinal$0() || _4_5._readFinal$0()) {
            siblingComponents_case_0 = _4_7._readFinal$0();
            t2 = siblingComponents_case_0;
            t3 = true;
          } else {
            t2 = _null;
            t3 = false;
          }
        else {
          t2 = _null;
          t3 = false;
        }
        if (!t3)
          if (_4_10._readFinal$0() || _4_3._readFinal$0())
            if (B.Combinator_Cht0 === _4_4._readFinal$0()) {
              siblingComponents_case_1 = _4_6._readFinal$0();
              t2 = siblingComponents_case_1;
              t3 = true;
            } else
              t3 = false;
          else
            t3 = false;
        else
          t3 = true;
        if (t3) {
          result.addFirst$1(A._setArrayType([A._setArrayType([t2.removeLast$0(0)], type$.JSArray_ComplexSelectorComponent_2)], type$.JSArray_List_ComplexSelectorComponent_2));
          break $label2$2;
        }
        if (_4_1._readFinal$0() != null) {
          combinator1 = _4_1._readFinal$0();
          t2 = true;
        } else {
          combinator1 = _null;
          t2 = false;
        }
        if (t2) {
          if (_4_4._readFinal$0() != null) {
            combinator2 = _4_4._readFinal$0();
            t2 = true;
          } else {
            combinator2 = _null;
            t2 = false;
          }
          t2 = t2 && combinator1 == combinator2;
        } else
          t2 = false;
        if (t2) {
          unified = A.unifyCompound0(components1.removeLast$0(0).selector, components2.removeLast$0(0).selector);
          if (unified == null)
            return _null;
          result.addFirst$1(A._setArrayType([A._setArrayType([new A.ComplexSelectorComponent0(unified, A.List_List$unmodifiable(A._setArrayType([B.JSArray_methods.get$first(t1)], type$.JSArray_CssValue_Combinator_2), type$.CssValue_Combinator_2), span)], type$.JSArray_ComplexSelectorComponent_2)], type$.JSArray_List_ComplexSelectorComponent_2));
          break $label2$2;
        }
        if (_4_1._readFinal$0() != null) {
          combinator_case_0 = _4_1._readFinal$0();
          t1 = true;
        } else {
          combinator_case_0 = _null;
          t1 = false;
        }
        if (t1)
          if (_4_4._readFinal$0() == null) {
            combinatorComponents_case_0 = _4_6._readFinal$0();
            descendantComponents_case_0 = _4_7._readFinal$0();
            t1 = descendantComponents_case_0;
            t2 = true;
            t4 = t2;
            t2 = combinatorComponents_case_0;
            t3 = t1;
            t1 = combinator_case_0;
          } else {
            t3 = _null;
            t2 = t3;
            t1 = t2;
            t4 = false;
          }
        else {
          t3 = _null;
          t2 = t3;
          t1 = t2;
          t4 = false;
        }
        if (!t4)
          if (_4_1._readFinal$0() == null) {
            if (_4_4._readFinal$0() != null) {
              combinator_case_1 = _4_4._readFinal$0();
              t4 = true;
            } else {
              combinator_case_1 = _null;
              t4 = false;
            }
            if (t4) {
              descendantComponents_case_1 = _4_6._readFinal$0();
              combinatorComponents_case_1 = _4_7._readFinal$0();
              t1 = combinatorComponents_case_1;
              t2 = true;
              t4 = t2;
              t2 = t1;
              t1 = combinator_case_1;
              t3 = descendantComponents_case_1;
            } else
              t4 = false;
          } else
            t4 = false;
        else
          t4 = true;
        if (t4) {
          if (t1 === B.Combinator_Cht0) {
            t1 = A.IterableExtension_get_lastOrNull(t3);
            t1 = t1 == null ? _null : A.compoundIsSuperselector0(t1.selector, t2.get$last(t2).selector, _null);
            t1 = t1 === true;
          } else
            t1 = false;
          if (t1)
            t3.removeLast$0(0);
          result.addFirst$1(A._setArrayType([A._setArrayType([t2.removeLast$0(0)], type$.JSArray_ComplexSelectorComponent_2)], type$.JSArray_List_ComplexSelectorComponent_2));
          break $label2$2;
        }
        return _null;
      }
      return A._mergeTrailingCombinators0(components1, components2, span, result);
    },
    _mustUnify0(complex1, complex2) {
      var t2, t3, t4,
        t1 = A.LinkedHashSet_LinkedHashSet$_empty(type$.SimpleSelector_2);
      for (t2 = J.get$iterator$ax(complex1); t2.moveNext$0();)
        for (t3 = B.JSArray_methods.get$iterator(t2.get$current(t2).selector.components), t4 = new A.WhereIterator(t3, A.functions0___isUnique$closure()); t4.moveNext$0();)
          t1.add$1(0, t3.get$current(t3));
      if (t1._collection$_length === 0)
        return false;
      return J.any$1$ax(complex2, new A._mustUnify_closure0(t1));
    },
    _isUnique0(simple) {
      var t1;
      if (!(simple instanceof A.IDSelector0))
        t1 = simple instanceof A.PseudoSelector0 && !simple.isClass;
      else
        t1 = true;
      return t1;
    },
    _chunks0(queue1, queue2, done, $T) {
      var chunk2, _0_0, _0_1, _0_4, _0_5, _0_7, chunk, t2,
        t1 = $T._eval$1("JSArray<0>"),
        chunk1 = A._setArrayType([], t1);
      for (; !done.call$1(queue1);)
        chunk1.push(queue1.removeFirst$0());
      chunk2 = A._setArrayType([], t1);
      for (; !done.call$1(queue2);)
        chunk2.push(queue2.removeFirst$0());
      _0_0 = new A._Record_2(chunk1, chunk2);
      _0_1 = A._InitializedCell$(new A._chunks_closure3(_0_0, $T));
      _0_4 = A._InitializedCell$(new A._chunks_closure4(_0_1));
      _0_5 = A._InitializedCell$(new A._chunks_closure5(_0_0, $T));
      _0_7 = A._InitializedCell$(new A._chunks_closure6(_0_5));
      $label0$0: {
        if (_0_4._readFinal$0() && _0_7._readFinal$0()) {
          t1 = A._setArrayType([], $T._eval$1("JSArray<List<0>>"));
          break $label0$0;
        }
        if (_0_4._readFinal$0()) {
          chunk = _0_5._readFinal$0();
          t1 = true;
        } else {
          chunk = null;
          t1 = false;
        }
        if (!t1) {
          chunk = _0_1._readFinal$0();
          t1 = _0_7._readFinal$0();
          t1 = t1;
        } else
          t1 = true;
        if (t1) {
          t1 = A._setArrayType([chunk], $T._eval$1("JSArray<List<0>>"));
          break $label0$0;
        }
        t1 = A.List_List$of(chunk1, true, $T);
        B.JSArray_methods.addAll$1(t1, chunk2);
        t2 = A.List_List$of(chunk2, true, $T);
        B.JSArray_methods.addAll$1(t2, chunk1);
        t2 = A._setArrayType([t1, t2], $T._eval$1("JSArray<List<0>>"));
        t1 = t2;
        break $label0$0;
      }
      return t1;
    },
    paths0(choices, $T) {
      return J.fold$2$ax(choices, A._setArrayType([A._setArrayType([], $T._eval$1("JSArray<0>"))], $T._eval$1("JSArray<List<0>>")), new A.paths_closure0($T));
    },
    _groupSelectors0(complex) {
      var t2, t3, t4,
        groups = A.QueueList$(null, type$.List_ComplexSelectorComponent_2),
        t1 = type$.JSArray_ComplexSelectorComponent_2,
        group = A._setArrayType([], t1);
      for (t2 = new A.ListIterator(complex, complex.get$length(complex)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t4 = t2.__internal$_current;
        if (t4 == null)
          t4 = t3._as(t4);
        group.push(t4);
        if (t4.combinators.length === 0) {
          groups._queue_list$_add$1(group);
          group = A._setArrayType([], t1);
        }
      }
      if (group.length !== 0)
        groups._queue_list$_add$1(group);
      return groups;
    },
    listIsSuperselector0(list1, list2) {
      return B.JSArray_methods.every$1(list2, new A.listIsSuperselector_closure0(list1));
    },
    _complexIsParentSuperselector0(complex1, complex2) {
      var t1, base, t2;
      if (J.get$length$asx(complex1) > J.get$length$asx(complex2))
        return false;
      t1 = $.$get$bogusSpan0();
      base = new A.ComplexSelectorComponent0(A.CompoundSelector$0(A._setArrayType([new A.PlaceholderSelector0("<temp>", t1)], type$.JSArray_SimpleSelector_2), t1), A.List_List$unmodifiable(B.List_empty14, type$.CssValue_Combinator_2), t1);
      t1 = type$.ComplexSelectorComponent_2;
      t2 = A.List_List$of(complex1, true, t1);
      t2.push(base);
      t1 = A.List_List$of(complex2, true, t1);
      t1.push(base);
      return A.complexIsSuperselector0(t2, t1);
    },
    complexIsSuperselector0(complex1, complex2) {
      var t1, t2, t3, i1, i2, previousCombinator, remaining1, t4, remaining2, component1, t5, parents, endOfSubselector, component2, combinator1;
      if (B.JSArray_methods.get$last(complex1).combinators.length !== 0)
        return false;
      if (B.JSArray_methods.get$last(complex2).combinators.length !== 0)
        return false;
      for (t1 = type$.JSArray_ComplexSelectorComponent_2, t2 = A._arrayInstanceType(complex2), t3 = t2._precomputed1, t2 = t2._eval$1("SubListIterable<1>"), i1 = 0, i2 = 0, previousCombinator = null; true; previousCombinator = combinator1) {
        remaining1 = complex1.length - i1;
        t4 = complex2.length;
        remaining2 = t4 - i2;
        if (remaining1 === 0 || remaining2 === 0)
          return false;
        if (remaining1 > remaining2)
          return false;
        component1 = complex1[i1];
        t5 = component1.combinators;
        if (t5.length > 1)
          return false;
        if (remaining1 === 1) {
          parents = B.JSArray_methods.sublist$2(complex2, i2, t4 - 1);
          if (B.JSArray_methods.any$1(parents, new A.complexIsSuperselector_closure1()))
            return false;
          return A.compoundIsSuperselector0(component1.selector, B.JSArray_methods.get$last(complex2).selector, parents);
        }
        for (t4 = component1.selector, endOfSubselector = i2, parents = null; true;) {
          component2 = complex2[endOfSubselector];
          if (component2.combinators.length > 1)
            return false;
          if (A.compoundIsSuperselector0(t4, component2.selector, parents))
            break;
          ++endOfSubselector;
          if (endOfSubselector === complex2.length - 1)
            return false;
          if (parents == null)
            parents = A._setArrayType([], t1);
          parents.push(component2);
        }
        if (!A._compatibleWithPreviousCombinator0(previousCombinator, parents == null ? B.List_empty13 : parents))
          return false;
        component2 = complex2[endOfSubselector];
        combinator1 = A.IterableExtension_get_firstOrNull(t5);
        if (!A._isSupercombinator0(combinator1, A.IterableExtension_get_firstOrNull(component2.combinators)))
          return false;
        ++i1;
        i2 = endOfSubselector + 1;
        if (complex1.length - i1 === 1) {
          t4 = combinator1 == null;
          if (J.$eq$(t4 ? null : combinator1.value, B.Combinator_Htt0)) {
            t4 = complex2.length - 1;
            t5 = new A.SubListIterable(complex2, 0, t4, t2);
            t5.SubListIterable$3(complex2, 0, t4, t3);
            if (!t5.skip$1(0, i2).every$1(0, new A.complexIsSuperselector_closure2(combinator1)))
              return false;
          } else if (!t4)
            if (complex2.length - i2 > 1)
              return false;
        }
      }
    },
    _compatibleWithPreviousCombinator0(previous, parents) {
      if (parents.length === 0)
        return true;
      if (previous == null)
        return true;
      if (previous.value !== B.Combinator_Htt0)
        return false;
      return B.JSArray_methods.every$1(parents, new A._compatibleWithPreviousCombinator_closure0());
    },
    _isSupercombinator0(combinator1, combinator2) {
      var t1, t2;
      if (!J.$eq$(combinator1, combinator2)) {
        t1 = combinator1 == null;
        if (t1)
          t2 = J.$eq$(combinator2 == null ? null : combinator2.value, B.Combinator_Cht0);
        else
          t2 = false;
        if (!t2)
          if (J.$eq$(t1 ? null : combinator1.value, B.Combinator_Htt0))
            t1 = J.$eq$(combinator2 == null ? null : combinator2.value, B.Combinator_4QF0);
          else
            t1 = false;
        else
          t1 = true;
      } else
        t1 = true;
      return t1;
    },
    compoundIsSuperselector0(compound1, compound2, parents) {
      var t2, pseudo1, index1, pseudo2, index2, t3, t4, t5, _i, simple1, _null = null,
        _0_0 = new A._Record_2(A._findPseudoElementIndexed0(compound1), A._findPseudoElementIndexed0(compound2)),
        _0_1 = A._InitializedCell$(new A.compoundIsSuperselector_closure1(_0_0)),
        _0_5 = A._InitializedCell$(new A.compoundIsSuperselector_closure2(_0_0)),
        t1 = type$.Record_2_nullable_Object_and_nullable_Object;
      if (t1._is(_0_1._readFinal$0())) {
        t2 = type$.PseudoSelector_2;
        pseudo1 = t2._as(_0_1._readFinal$0()._0);
        index1 = A._asInt(_0_1._readFinal$0()._1);
        if (t1._is(_0_5._readFinal$0())) {
          pseudo2 = t2._as(_0_5._readFinal$0()._0);
          index2 = A._asInt(_0_5._readFinal$0()._1);
          t1 = true;
        } else {
          index2 = _null;
          pseudo2 = index2;
          t1 = false;
        }
      } else {
        index2 = _null;
        pseudo2 = index2;
        index1 = pseudo2;
        pseudo1 = index1;
        t1 = false;
      }
      if (t1) {
        if (pseudo1.isSuperselector$1(pseudo2)) {
          t1 = compound1.components;
          t2 = type$.int;
          t3 = A._arrayInstanceType(t1)._precomputed1;
          t4 = compound2.components;
          t5 = A._arrayInstanceType(t4)._precomputed1;
          t1 = A._compoundComponentsIsSuperselector0(A.SubListIterable$(t1, 0, A.checkNotNullable(index1, "count", t2), t3), A.SubListIterable$(t4, 0, A.checkNotNullable(index2, "count", t2), t5), parents) && A._compoundComponentsIsSuperselector0(A.SubListIterable$(t1, index1 + 1, _null, t3), A.SubListIterable$(t4, index2 + 1, _null, t5), parents);
        } else
          t1 = false;
        return t1;
      }
      if (!(_0_1._readFinal$0() != null && true))
        t1 = _0_5._readFinal$0() != null && true;
      else
        t1 = true;
      if (t1)
        return false;
      for (t1 = compound1.components, t2 = t1.length, t3 = compound2.components, _i = 0; _i < t2; ++_i) {
        simple1 = t1[_i];
        if (simple1 instanceof A.PseudoSelector0 && simple1.selector != null && true) {
          if (!A._selectorPseudoIsSuperselector0(simple1, compound2, parents))
            return false;
        } else if (!B.JSArray_methods.any$1(t3, simple1.get$isSuperselector()))
          return false;
      }
      return true;
    },
    _findPseudoElementIndexed0(compound) {
      var t1, t2, i, simple;
      for (t1 = compound.components, t2 = t1.length, i = 0; i < t2; ++i) {
        simple = t1[i];
        if (simple instanceof A.PseudoSelector0 && !simple.isClass)
          return new A._Record_2(simple, i);
      }
      return null;
    },
    _compoundComponentsIsSuperselector0(compound1, compound2, parents) {
      var t1;
      if (compound1.get$length(compound1) === 0)
        return true;
      if (compound2.get$length(compound2) === 0)
        compound2 = A._setArrayType([new A.UniversalSelector0("*", $.$get$bogusSpan0())], type$.JSArray_SimpleSelector_2);
      t1 = $.$get$bogusSpan0();
      return A.compoundIsSuperselector0(A.CompoundSelector$0(compound1, t1), A.CompoundSelector$0(compound2, t1), parents);
    },
    _selectorPseudoIsSuperselector0(pseudo1, compound2, parents) {
      var selector1 = pseudo1.selector;
      if (selector1 == null)
        throw A.wrapException(A.ArgumentError$("Selector " + pseudo1.toString$0(0) + " must have a selector argument.", null));
      switch (pseudo1.normalizedName) {
        case "is":
        case "matches":
        case "any":
        case "where":
          return A._selectorPseudoArgs0(compound2, pseudo1.name, true).any$1(0, new A._selectorPseudoIsSuperselector_closure6(selector1)) || B.JSArray_methods.any$1(selector1.components, new A._selectorPseudoIsSuperselector_closure7(parents, compound2));
        case "has":
        case "host":
        case "host-context":
          return A._selectorPseudoArgs0(compound2, pseudo1.name, true).any$1(0, new A._selectorPseudoIsSuperselector_closure8(selector1));
        case "slotted":
          return A._selectorPseudoArgs0(compound2, pseudo1.name, false).any$1(0, new A._selectorPseudoIsSuperselector_closure9(selector1));
        case "not":
          return B.JSArray_methods.every$1(selector1.components, new A._selectorPseudoIsSuperselector_closure10(compound2, pseudo1));
        case "current":
          return A._selectorPseudoArgs0(compound2, pseudo1.name, true).any$1(0, new A._selectorPseudoIsSuperselector_closure11(selector1));
        case "nth-child":
        case "nth-last-child":
          return B.JSArray_methods.any$1(compound2.components, new A._selectorPseudoIsSuperselector_closure12(pseudo1, selector1));
        default:
          throw A.wrapException("unreachable");
      }
    },
    _selectorPseudoArgs0(compound, $name, isClass) {
      var t1 = type$.WhereTypeIterable_PseudoSelector_2;
      return A.IterableNullableExtension_whereNotNull(new A.MappedIterable(new A.WhereIterable(new A.WhereTypeIterable(compound.components, t1), new A._selectorPseudoArgs_closure1(isClass, $name), t1._eval$1("WhereIterable<Iterable.E>")), new A._selectorPseudoArgs_closure2(), t1._eval$1("MappedIterable<Iterable.E,SelectorList0?>")), type$.SelectorList_2);
    },
    unifyComplex_closure2: function unifyComplex_closure2(t0) {
      this._0_0 = t0;
    },
    unifyComplex_closure3: function unifyComplex_closure3(t0) {
      this._1_0 = t0;
    },
    unifyComplex_closure4: function unifyComplex_closure4() {
    },
    _namespaceAndName_closure0: function _namespaceAndName_closure0(t0) {
      this._0_0 = t0;
    },
    _weaveParents_closure5: function _weaveParents_closure5(t0) {
      this._0_0 = t0;
    },
    _weaveParents_closure6: function _weaveParents_closure6(t0) {
      this._0_0 = t0;
    },
    _weaveParents_closure7: function _weaveParents_closure7(t0) {
      this.span = t0;
    },
    _weaveParents_closure8: function _weaveParents_closure8(t0) {
      this.group = t0;
    },
    _weaveParents_closure9: function _weaveParents_closure9() {
    },
    _weaveParents_closure10: function _weaveParents_closure10() {
    },
    _mergeLeadingCombinators_closure3: function _mergeLeadingCombinators_closure3(t0) {
      this._0_0 = t0;
    },
    _mergeLeadingCombinators_closure4: function _mergeLeadingCombinators_closure4(t0) {
      this._0_0 = t0;
    },
    _mergeLeadingCombinators_closure5: function _mergeLeadingCombinators_closure5(t0) {
      this._0_1 = t0;
    },
    _mergeLeadingCombinators_closure6: function _mergeLeadingCombinators_closure6(t0) {
      this._0_4 = t0;
    },
    _mergeTrailingCombinators_closure9: function _mergeTrailingCombinators_closure9(t0) {
      this._0_0 = t0;
    },
    _mergeTrailingCombinators_closure10: function _mergeTrailingCombinators_closure10(t0) {
      this._1_0 = t0;
    },
    _mergeTrailingCombinators_closure11: function _mergeTrailingCombinators_closure11(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure12: function _mergeTrailingCombinators_closure12(t0) {
      this._4_1 = t0;
    },
    _mergeTrailingCombinators_closure13: function _mergeTrailingCombinators_closure13(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure14: function _mergeTrailingCombinators_closure14(t0) {
      this._4_4 = t0;
    },
    _mergeTrailingCombinators_closure16: function _mergeTrailingCombinators_closure16(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure17: function _mergeTrailingCombinators_closure17(t0) {
      this._4_0 = t0;
    },
    _mergeTrailingCombinators_closure15: function _mergeTrailingCombinators_closure15(t0) {
      this._4_4 = t0;
    },
    _mergeTrailingCombinators_closure18: function _mergeTrailingCombinators_closure18(t0) {
      this._4_1 = t0;
    },
    _mustUnify_closure0: function _mustUnify_closure0(t0) {
      this.uniqueSelectors = t0;
    },
    _mustUnify__closure0: function _mustUnify__closure0(t0) {
      this.uniqueSelectors = t0;
    },
    _chunks_closure3: function _chunks_closure3(t0, t1) {
      this._0_0 = t0;
      this.T = t1;
    },
    _chunks_closure4: function _chunks_closure4(t0) {
      this._0_1 = t0;
    },
    _chunks_closure5: function _chunks_closure5(t0, t1) {
      this._0_0 = t0;
      this.T = t1;
    },
    _chunks_closure6: function _chunks_closure6(t0) {
      this._0_5 = t0;
    },
    paths_closure0: function paths_closure0(t0) {
      this.T = t0;
    },
    paths__closure0: function paths__closure0(t0, t1) {
      this.paths = t0;
      this.T = t1;
    },
    paths___closure0: function paths___closure0(t0, t1) {
      this.option = t0;
      this.T = t1;
    },
    listIsSuperselector_closure0: function listIsSuperselector_closure0(t0) {
      this.list1 = t0;
    },
    listIsSuperselector__closure0: function listIsSuperselector__closure0(t0) {
      this.complex1 = t0;
    },
    complexIsSuperselector_closure1: function complexIsSuperselector_closure1() {
    },
    complexIsSuperselector_closure2: function complexIsSuperselector_closure2(t0) {
      this.combinator1 = t0;
    },
    _compatibleWithPreviousCombinator_closure0: function _compatibleWithPreviousCombinator_closure0() {
    },
    compoundIsSuperselector_closure1: function compoundIsSuperselector_closure1(t0) {
      this._0_0 = t0;
    },
    compoundIsSuperselector_closure2: function compoundIsSuperselector_closure2(t0) {
      this._0_0 = t0;
    },
    _selectorPseudoIsSuperselector_closure6: function _selectorPseudoIsSuperselector_closure6(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure7: function _selectorPseudoIsSuperselector_closure7(t0, t1) {
      this.parents = t0;
      this.compound2 = t1;
    },
    _selectorPseudoIsSuperselector_closure8: function _selectorPseudoIsSuperselector_closure8(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure9: function _selectorPseudoIsSuperselector_closure9(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure10: function _selectorPseudoIsSuperselector_closure10(t0, t1) {
      this.compound2 = t0;
      this.pseudo1 = t1;
    },
    _selectorPseudoIsSuperselector__closure0: function _selectorPseudoIsSuperselector__closure0(t0, t1) {
      this.complex = t0;
      this.pseudo1 = t1;
    },
    _selectorPseudoIsSuperselector___closure3: function _selectorPseudoIsSuperselector___closure3(t0) {
      this.simple2 = t0;
    },
    _selectorPseudoIsSuperselector___closure4: function _selectorPseudoIsSuperselector___closure4(t0) {
      this.simple2 = t0;
    },
    _selectorPseudoIsSuperselector___closure2: function _selectorPseudoIsSuperselector___closure2(t0) {
      this._0_0 = t0;
    },
    _selectorPseudoIsSuperselector_closure11: function _selectorPseudoIsSuperselector_closure11(t0) {
      this.selector1 = t0;
    },
    _selectorPseudoIsSuperselector_closure12: function _selectorPseudoIsSuperselector_closure12(t0, t1) {
      this.pseudo1 = t0;
      this.selector1 = t1;
    },
    _selectorPseudoArgs_closure1: function _selectorPseudoArgs_closure1(t0, t1) {
      this.isClass = t0;
      this.name = t1;
    },
    _selectorPseudoArgs_closure2: function _selectorPseudoArgs_closure2() {
    },
    globalFunctions_closure0: function globalFunctions_closure0() {
    },
    IDSelector0: function IDSelector0(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    IDSelector_unify_closure0: function IDSelector_unify_closure0(t0) {
      this.$this = t0;
    },
    IfExpression0: function IfExpression0(t0, t1) {
      this.$arguments = t0;
      this.span = t1;
    },
    IfClause$0(expression, children) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2);
      return new A.IfClause0(expression, t1, B.JSArray_methods.any$1(t1, new A.IfRuleClause$__closure0()));
    },
    ElseClause$0(children) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2);
      return new A.ElseClause0(t1, B.JSArray_methods.any$1(t1, new A.IfRuleClause$__closure0()));
    },
    IfRule0: function IfRule0(t0, t1, t2) {
      this.clauses = t0;
      this.lastClause = t1;
      this.span = t2;
    },
    IfRule_toString_closure0: function IfRule_toString_closure0() {
    },
    IfRuleClause0: function IfRuleClause0() {
    },
    IfRuleClause$__closure0: function IfRuleClause$__closure0() {
    },
    IfRuleClause$___closure0: function IfRuleClause$___closure0() {
    },
    IfClause0: function IfClause0(t0, t1, t2) {
      this.expression = t0;
      this.children = t1;
      this.hasDeclarations = t2;
    },
    ElseClause0: function ElseClause0(t0, t1) {
      this.children = t0;
      this.hasDeclarations = t1;
    },
    jsToDartList(list) {
      return self.immutable.isOrderedMap(list) ? J.toArray$0$x(type$.ImmutableList._as(list)) : type$.List_dynamic._as(list);
    },
    dartMapToImmutableMap(dartMap) {
      var t1, t2, key, value,
        immutableMap = J.asMutable$0$x(new self.immutable.OrderedMap());
      for (t1 = A.MapExtensions_get_pairs0(dartMap, type$.Object, type$.nullable_Object), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        key = t2._0;
        value = t2._1;
        immutableMap = J.$set$2$x(immutableMap, key, value);
      }
      return J.asImmutable$0$x(immutableMap);
    },
    immutableMapToDartMap(immutableMap) {
      var dartMap = A.LinkedHashMap_LinkedHashMap$_empty(type$.Object, type$.nullable_Object);
      J.forEach$1$ax(immutableMap, A.allowInterop(new A.immutableMapToDartMap_closure(dartMap)));
      return dartMap;
    },
    ImmutableList0: function ImmutableList0() {
    },
    ImmutableMap0: function ImmutableMap0() {
    },
    immutableMapToDartMap_closure: function immutableMapToDartMap_closure(t0) {
      this.dartMap = t0;
    },
    NodeImporter__addSassPath(includePaths) {
      return new A._SyncStarIterable(A.NodeImporter__addSassPath$body(includePaths), type$._SyncStarIterable_String);
    },
    NodeImporter__addSassPath$body($async$includePaths) {
      return function() {
        var includePaths = $async$includePaths;
        var $async$goto = 0, $async$handler = 2, $async$currentError, sassPath, t1;
        return function $async$NodeImporter__addSassPath($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                $async$goto = 3;
                return $async$iterator._yieldStar$1(includePaths);
              case 3:
                // after yield
                sassPath = A.getEnvironmentVariable0("SASS_PATH");
                if (sassPath == null) {
                  // goto return
                  $async$goto = 1;
                  break;
                }
                t1 = A.isNodeJs() ? self.process : null;
                $async$goto = 4;
                return $async$iterator._yieldStar$1(A._setArrayType(sassPath.split(J.$eq$(t1 == null ? null : J.get$platform$x(t1), "win32") ? ";" : ":"), type$.JSArray_String));
              case 4:
                // after yield
              case 1:
                // return
                return 0;
              case 2:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    NodeImporter: function NodeImporter(t0, t1, t2) {
      this._implementation$_options = t0;
      this._includePaths = t1;
      this._implementation$_importers = t2;
    },
    NodeImporter_load_closure: function NodeImporter_load_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.forImport = t2;
      _.url = t3;
      _.previousString = t4;
    },
    NodeImporter__tryPath_closure: function NodeImporter__tryPath_closure(t0) {
      this.path = t0;
    },
    NodeImporter__tryPath_closure0: function NodeImporter__tryPath_closure0() {
    },
    NodeImporter__callImporterAsync_closure: function NodeImporter__callImporterAsync_closure(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.forImport = t2;
      _.url = t3;
      _.previousString = t4;
      _.completer = t5;
    },
    ModifiableCssImport0: function ModifiableCssImport0(t0, t1, t2) {
      var _ = this;
      _.url = t0;
      _.modifiers = t1;
      _.span = t2;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    ImportCache$0(importers, loadPaths, logger, packageConfig) {
      var t1 = type$.nullable_Record_3_Importer_and_Uri_and_Uri_originalUrl_2,
        t2 = type$.Uri,
        t3 = A.ImportCache__toImporters0(importers, loadPaths, packageConfig);
      return new A.ImportCache0(t3, logger, A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_2_Uri_and_bool_forImport, t1), A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_4_Uri_and_Importer_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport_2, t1), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.nullable_Stylesheet_2), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.ImporterResult_2));
    },
    ImportCache$none(logger) {
      var t1 = type$.nullable_Record_3_Importer_and_Uri_and_Uri_originalUrl_2,
        t2 = type$.Uri;
      return new A.ImportCache0(B.List_empty23, logger, A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_2_Uri_and_bool_forImport, t1), A.LinkedHashMap_LinkedHashMap$_empty(type$.Record_4_Uri_and_Importer_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport_2, t1), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.nullable_Stylesheet_2), A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.ImporterResult_2));
    },
    ImportCache__toImporters0(importers, loadPaths, packageConfig) {
      var t1, t2, t3, t4, _i, path, _null = null,
        sassPath = A.getEnvironmentVariable0("SASS_PATH");
      if (A.isBrowser()) {
        t1 = A._setArrayType([], type$.JSArray_Importer);
        if (importers != null)
          B.JSArray_methods.addAll$1(t1, importers);
        return t1;
      }
      t1 = A._setArrayType([], type$.JSArray_Importer);
      if (importers != null)
        B.JSArray_methods.addAll$1(t1, importers);
      if (loadPaths != null)
        for (t2 = J.get$iterator$ax(loadPaths); t2.moveNext$0();) {
          t3 = t2.get$current(t2);
          t1.push(new A.FilesystemImporter0($.$get$context().absolute$15(t3, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
        }
      if (sassPath != null) {
        t2 = A.isNodeJs() ? self.process : _null;
        t3 = sassPath.split(J.$eq$(t2 == null ? _null : J.get$platform$x(t2), "win32") ? ";" : ":");
        t4 = t3.length;
        _i = 0;
        for (; _i < t4; ++_i) {
          path = t3[_i];
          t1.push(new A.FilesystemImporter0($.$get$context().absolute$15(path, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null)));
        }
      }
      return t1;
    },
    ImportCache0: function ImportCache0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._import_cache$_importers = t0;
      _._import_cache$_logger = t1;
      _._import_cache$_canonicalizeCache = t2;
      _._import_cache$_relativeCanonicalizeCache = t3;
      _._import_cache$_importCache = t4;
      _._import_cache$_resultsCache = t5;
    },
    ImportCache_canonicalize_closure1: function ImportCache_canonicalize_closure1(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.baseImporter = t1;
      _.baseUrl = t2;
      _.url = t3;
      _.forImport = t4;
    },
    ImportCache_canonicalize_closure2: function ImportCache_canonicalize_closure2(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.url = t1;
      _.baseUrl = t2;
      _.forImport = t3;
    },
    ImportCache__canonicalize_closure1: function ImportCache__canonicalize_closure1(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    ImportCache__canonicalize__closure0: function ImportCache__canonicalize__closure0(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    ImportCache__canonicalize_closure2: function ImportCache__canonicalize_closure2(t0, t1) {
      this.importer = t0;
      this.resolved = t1;
    },
    ImportCache_importCanonical_closure0: function ImportCache_importCanonical_closure0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.importer = t1;
      _.canonicalUrl = t2;
      _.originalUrl = t3;
      _.quiet = t4;
    },
    ImportCache_humanize_closure3: function ImportCache_humanize_closure3(t0) {
      this.canonicalUrl = t0;
    },
    ImportCache_humanize_closure4: function ImportCache_humanize_closure4() {
    },
    ImportCache_humanize_closure5: function ImportCache_humanize_closure5() {
    },
    ImportCache_humanize_closure6: function ImportCache_humanize_closure6(t0) {
      this.canonicalUrl = t0;
    },
    ImportRule0: function ImportRule0(t0, t1) {
      this.imports = t0;
      this.span = t1;
    },
    JSImporter: function JSImporter() {
    },
    CanonicalizeContext: function CanonicalizeContext() {
    },
    JSImporterResult: function JSImporterResult() {
    },
    Importer0: function Importer0() {
    },
    NodeImporterResult0: function NodeImporterResult0() {
    },
    IncludeRule0: function IncludeRule0(t0, t1, t2, t3, t4) {
      var _ = this;
      _.namespace = t0;
      _.name = t1;
      _.$arguments = t2;
      _.content = t3;
      _.span = t4;
    },
    InterpolatedFunctionExpression0: function InterpolatedFunctionExpression0(t0, t1, t2) {
      this.name = t0;
      this.$arguments = t1;
      this.span = t2;
    },
    Interpolation$0(contents, span) {
      var t1 = new A.Interpolation0(A.List_List$unmodifiable(contents, type$.Object), span);
      t1.Interpolation$20(contents, span);
      return t1;
    },
    Interpolation0: function Interpolation0(t0, t1) {
      this.contents = t0;
      this.span = t1;
    },
    Interpolation_asPlain_closure1: function Interpolation_asPlain_closure1(t0) {
      this._0_0 = t0;
    },
    Interpolation_asPlain_closure2: function Interpolation_asPlain_closure2(t0) {
      this._0_0 = t0;
    },
    Interpolation_initialPlain_closure0: function Interpolation_initialPlain_closure0(t0) {
      this._0_0 = t0;
    },
    Interpolation_toString_closure0: function Interpolation_toString_closure0() {
    },
    SupportsInterpolation0: function SupportsInterpolation0(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    InterpolationBuffer0: function InterpolationBuffer0(t0, t1) {
      this._interpolation_buffer0$_text = t0;
      this._interpolation_buffer0$_contents = t1;
    },
    InterpolationBuffer_addInterpolation_closure0: function InterpolationBuffer_addInterpolation_closure0(t0) {
      this._0_0 = t0;
    },
    InterpolationMap$0(_interpolation, targetLocations) {
      var t1 = A.List_List$unmodifiable(targetLocations, type$.SourceLocation),
        t2 = _interpolation.contents.length,
        expectedLocations = Math.max(0, t2 - 1);
      if (t1.length !== expectedLocations)
        A.throwExpression(A.ArgumentError$("InterpolationMap must have " + A.S(expectedLocations) + string$.x20targe + t2 + " components.", null));
      return new A.InterpolationMap0(_interpolation, t1);
    },
    InterpolationMap0: function InterpolationMap0(t0, t1) {
      this._interpolation_map$_interpolation = t0;
      this._interpolation_map$_targetLocations = t1;
    },
    InterpolationMap_mapException_closure0: function InterpolationMap_mapException_closure0() {
    },
    InterpolationMap_mapSpan_closure1: function InterpolationMap_mapSpan_closure1(t0) {
      this._0_0 = t0;
    },
    InterpolationMap_mapSpan_closure2: function InterpolationMap_mapSpan_closure2(t0) {
      this._0_0 = t0;
    },
    _realCasePath0(path) {
      var prefix, _null = null,
        t1 = A.isNodeJs() ? self.process : _null;
      if (!J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "win32")) {
        t1 = A.isNodeJs() ? self.process : _null;
        t1 = J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "darwin");
      } else
        t1 = true;
      if (!t1)
        return path;
      t1 = A.isNodeJs() ? self.process : _null;
      if (J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "win32")) {
        prefix = B.JSString_methods.substring$2(path, 0, $.$get$context().style.rootLength$1(path));
        t1 = prefix.length;
        if (t1 !== 0 && A.CharacterExtension_get_isAlphabetic0(prefix.charCodeAt(0)))
          path = prefix.toUpperCase() + B.JSString_methods.substring$1(path, t1);
      }
      return new A._realCasePath_helper0().call$1(path);
    },
    _realCasePath_helper0: function _realCasePath_helper0() {
    },
    _realCasePath_helper_closure0: function _realCasePath_helper_closure0(t0, t1, t2) {
      this.helper = t0;
      this.dirname = t1;
      this.path = t2;
    },
    _realCasePath_helper__closure0: function _realCasePath_helper__closure0(t0) {
      this.basename = t0;
    },
    printError0(message) {
      var t1,
        process = A.isNodeJs() ? self.process : null;
      if (process != null)
        t1 = true;
      else {
        process = null;
        t1 = false;
      }
      if (t1) {
        t1 = J.get$stderr$x(process);
        J.write$1$x(t1, A.S(message) + "\n");
      } else {
        t1 = self.console;
        J.error$1$x(t1, message);
      }
    },
    readFile0(path) {
      var contents, sourceFile, t1, i;
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("readFile() is only supported on Node.js"));
      contents = A._asString(A._readFile0(path, "utf8"));
      if (!B.JSString_methods.contains$1(contents, "\ufffd"))
        return contents;
      sourceFile = A.SourceFile$fromString(contents, $.$get$context().toUri$1(path));
      for (t1 = contents.length, i = 0; i < t1; ++i) {
        if (contents.charCodeAt(i) !== 65533)
          continue;
        throw A.wrapException(A.SassException$0("Invalid UTF-8.", A.FileLocation$_(sourceFile, i).pointSpan$0(), null));
      }
      return contents;
    },
    _readFile0(path, encoding) {
      return A._systemErrorToFileSystemException0(new A._readFile_closure0(path, encoding));
    },
    fileExists0(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$(string$.fileEx));
      return A._systemErrorToFileSystemException0(new A.fileExists_closure0(path));
    },
    dirExists0(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("dirExists() is only supported on Node.js"));
      return A._systemErrorToFileSystemException0(new A.dirExists_closure0(path));
    },
    listDir0(path) {
      if (!A.isNodeJs())
        throw A.wrapException(A.UnsupportedError$("listDir() is only supported on Node.js"));
      return A._systemErrorToFileSystemException0(new A.listDir_closure0(false, path));
    },
    getEnvironmentVariable0($name) {
      var t1 = A.isNodeJs() ? self.process : null,
        env = t1 == null ? null : J.get$env$x(t1);
      if (env == null)
        t1 = null;
      else
        t1 = A._asStringQ(env[$name]);
      return t1;
    },
    _systemErrorToFileSystemException0(callback) {
      var error, t1, exception, t2;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        error = A.unwrapException(exception);
        if (!type$.JsSystemError._is(error))
          throw exception;
        t1 = error;
        t2 = J.getInterceptor$x(t1);
        throw A.wrapException(new A.FileSystemException0(J.substring$2$s(t2.get$message(t1), (A.S(t2.get$code(t1)) + ": ").length, J.get$length$asx(t2.get$message(t1)) - (", " + A.S(t2.get$syscall(t1)) + " '" + A.S(t2.get$path(t1)) + "'").length), J.get$path$x(error)));
      }
    },
    hasTerminal0() {
      var t1 = A.isNodeJs() ? self.process : null;
      return J.$eq$(t1 == null ? null : J.get$isTTY$x(J.get$stdout$x(t1)), true);
    },
    FileSystemException0: function FileSystemException0(t0, t1) {
      this.message = t0;
      this.path = t1;
    },
    _readFile_closure0: function _readFile_closure0(t0, t1) {
      this.path = t0;
      this.encoding = t1;
    },
    fileExists_closure0: function fileExists_closure0(t0) {
      this.path = t0;
    },
    dirExists_closure0: function dirExists_closure0(t0) {
      this.path = t0;
    },
    listDir_closure0: function listDir_closure0(t0, t1) {
      this.recursive = t0;
      this.path = t1;
    },
    listDir__closure1: function listDir__closure1(t0) {
      this.path = t0;
    },
    listDir__closure2: function listDir__closure2() {
    },
    listDir_closure_list0: function listDir_closure_list0() {
    },
    listDir__list_closure0: function listDir__list_closure0(t0, t1) {
      this.parent = t0;
      this.list = t1;
    },
    main() {
      J.set$compile$x(self.exports, A.allowInteropNamed("sass.compile", A.compile__compile$closure()));
      J.set$compileString$x(self.exports, A.allowInteropNamed("sass.compileString", A.compile__compileString$closure()));
      J.set$compileAsync$x(self.exports, A.allowInteropNamed("sass.compileAsync", A.compile__compileAsync$closure()));
      J.set$compileStringAsync$x(self.exports, A.allowInteropNamed("sass.compileStringAsync", A.compile__compileStringAsync$closure()));
      J.set$Value$x(self.exports, $.$get$valueClass());
      J.set$SassBoolean$x(self.exports, $.$get$booleanClass());
      J.set$SassArgumentList$x(self.exports, $.$get$argumentListClass());
      J.set$SassCalculation$x(self.exports, $.$get$calculationClass());
      J.set$CalculationOperation$x(self.exports, $.$get$calculationOperationClass());
      J.set$CalculationInterpolation$x(self.exports, $.$get$calculationInterpolationClass());
      J.set$SassColor$x(self.exports, $.$get$colorClass());
      J.set$SassFunction$x(self.exports, $.$get$functionClass());
      J.set$SassMixin$x(self.exports, $.$get$mixinClass());
      J.set$SassList$x(self.exports, $.$get$listClass());
      J.set$SassMap$x(self.exports, $.$get$mapClass());
      J.set$SassNumber$x(self.exports, $.$get$numberClass());
      J.set$SassString$x(self.exports, $.$get$stringClass());
      J.set$sassNull$x(self.exports, B.C__SassNull0);
      J.set$sassTrue$x(self.exports, B.SassBoolean_true0);
      J.set$sassFalse$x(self.exports, B.SassBoolean_false0);
      J.set$Exception$x(self.exports, $.$get$exceptionClass());
      J.set$Logger$x(self.exports, {silent: {warn: A.allowInteropNamed("sass.Logger.silent.warn", new A.main_closure()), debug: A.allowInteropNamed("sass.Logger.silent.debug", new A.main_closure0())}});
      J.set$info$x(self.exports, "dart-sass\t1.69.5\t(Sass Compiler)\t[Dart]\ndart2js\t3.1.5\t(Dart Compiler)\t[Dart]");
      A.updateSourceSpanPrototype();
      J.set$render$x(self.exports, A.allowInteropNamed("sass.render", A.legacy__render$closure()));
      J.set$renderSync$x(self.exports, A.allowInteropNamed("sass.renderSync", A.legacy__renderSync$closure()));
      J.set$types$x(self.exports, {Boolean: $.$get$legacyBooleanClass(), Color: $.$get$legacyColorClass(), List: $.$get$legacyListClass(), Map: $.$get$legacyMapClass(), Null: $.$get$legacyNullClass(), Number: $.$get$legacyNumberClass(), String: $.$get$legacyStringClass(), Error: self.Error});
      J.set$NULL$x(self.exports, B.C__SassNull0);
      J.set$TRUE$x(self.exports, B.SassBoolean_true0);
      J.set$FALSE$x(self.exports, B.SassBoolean_false0);
    },
    main_closure: function main_closure() {
    },
    main_closure0: function main_closure0() {
    },
    JSToDartLogger: function JSToDartLogger(t0, t1, t2) {
      this._node = t0;
      this._fallback = t1;
      this._ascii = t2;
    },
    JSToDartLogger_warn_closure: function JSToDartLogger_warn_closure(t0, t1, t2, t3, t4) {
      var _ = this;
      _.$this = t0;
      _.message = t1;
      _.span = t2;
      _.trace = t3;
      _.deprecation = t4;
    },
    JSToDartLogger_debug_closure: function JSToDartLogger_debug_closure(t0, t1, t2) {
      this.$this = t0;
      this.message = t1;
      this.span = t2;
    },
    ModifiableCssKeyframeBlock$0(selector, span) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
      return new A.ModifiableCssKeyframeBlock0(selector, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode_2), t1);
    },
    ModifiableCssKeyframeBlock0: function ModifiableCssKeyframeBlock0(t0, t1, t2, t3) {
      var _ = this;
      _.selector = t0;
      _.span = t1;
      _.children = t2;
      _._node$_children = t3;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    KeyframeSelectorParser$0(contents, interpolationMap, logger) {
      var t1 = A.SpanScanner$(contents, null);
      return new A.KeyframeSelectorParser0(t1, logger, interpolationMap);
    },
    KeyframeSelectorParser0: function KeyframeSelectorParser0(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._parser0$_interpolationMap = t2;
    },
    KeyframeSelectorParser_parse_closure0: function KeyframeSelectorParser_parse_closure0(t0) {
      this.$this = t0;
    },
    LazyFileSpan0: function LazyFileSpan0(t0) {
      this._lazy_file_span0$_builder = t0;
      this._lazy_file_span0$_span = null;
    },
    render(options, callback) {
      var _0_0, fiber, t1;
      if (!A.isNodeJs())
        A.jsThrow(new self.Error("The render() method is only available in Node.js."));
      _0_0 = J.get$fiber$x(options);
      if (_0_0 != null) {
        fiber = _0_0;
        t1 = true;
      } else {
        fiber = null;
        t1 = false;
      }
      if (t1)
        J.run$0$x(fiber.call$1(A.allowInterop(new A.render_closure(callback, options))));
      else
        A._renderAsync(options).then$1$2$onError(0, new A.render_closure0(callback), new A.render_closure1(callback), type$.Null);
    },
    _renderAsync(options) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.RenderResult),
        $async$returnValue, data, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, result, start, t1, file, _0_0;
      var $async$_renderAsync = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              start = new A.DateTime(Date.now(), false);
              t1 = J.getInterceptor$x(options);
              file = A.NullableExtension_andThen0(t1.get$file(options), A.path__absolute$closure());
              _0_0 = t1.get$data(options);
              if (_0_0 != null) {
                data = _0_0;
                t2 = true;
              } else {
                data = null;
                t2 = false;
              }
              $async$goto = t2 ? 3 : 5;
              break;
            case 3:
              // then
              t2 = A._parseImporter(options, start);
              t3 = A._parseFunctions(options, start, true);
              t4 = t1.get$indentedSyntax(options);
              t4 = !J.$eq$(t4, false) && t4 != null ? B.Syntax_Sass_sass0 : null;
              t5 = A._parseOutputStyle(t1.get$outputStyle(options));
              t6 = J.$eq$(t1.get$indentType(options), "tab");
              t7 = A._parseIndentWidth(t1.get$indentWidth(options));
              t8 = A._parseLineFeed(t1.get$linefeed(options));
              t9 = file == null ? "stdin" : $.$get$context().toUri$1(file).toString$0(0);
              t10 = t1.get$quietDeps(options);
              if (t10 == null)
                t10 = false;
              t11 = t1.get$verbose(options);
              if (t11 == null)
                t11 = false;
              t12 = t1.get$charset(options);
              if (t12 == null)
                t12 = true;
              t13 = A._enableSourceMaps(options);
              t1 = t1.get$logger(options);
              t14 = A.hasTerminal0();
              t15 = $._glyphs;
              $async$goto = 6;
              return A._asyncAwait(A.compileStringAsync0(data, t12, t3, null, null, t7, t8, new A.JSToDartLogger(t1, new A.StderrLogger0(t14), t15 === B.C_AsciiGlyphSet), t2, t10, t13, t5, t4, t9, !t6, t11), $async$_renderAsync);
            case 6:
              // returning from await.
              result = $async$result;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$goto = file != null ? 7 : 9;
              break;
            case 7:
              // then
              t2 = A._parseImporter(options, start);
              t3 = A._parseFunctions(options, start, true);
              t4 = t1.get$indentedSyntax(options);
              t4 = !J.$eq$(t4, false) && t4 != null ? B.Syntax_Sass_sass0 : null;
              t5 = A._parseOutputStyle(t1.get$outputStyle(options));
              t6 = J.$eq$(t1.get$indentType(options), "tab");
              t7 = A._parseIndentWidth(t1.get$indentWidth(options));
              t8 = A._parseLineFeed(t1.get$linefeed(options));
              t9 = t1.get$quietDeps(options);
              if (t9 == null)
                t9 = false;
              t10 = t1.get$verbose(options);
              if (t10 == null)
                t10 = false;
              t11 = t1.get$charset(options);
              if (t11 == null)
                t11 = true;
              t12 = A._enableSourceMaps(options);
              t1 = t1.get$logger(options);
              t13 = A.hasTerminal0();
              t14 = $._glyphs;
              $async$goto = 10;
              return A._asyncAwait(A.compileAsync0(file, t11, null, t3, null, null, t7, t8, new A.JSToDartLogger(t1, new A.StderrLogger0(t13), t14 === B.C_AsciiGlyphSet), t2, t9, t12, t5, t4, !t6, t10), $async$_renderAsync);
            case 10:
              // returning from await.
              result = $async$result;
              // goto join
              $async$goto = 8;
              break;
            case 9:
              // else
              throw A.wrapException(A.ArgumentError$(string$.Either, null));
            case 8:
              // join
            case 4:
              // join
              $async$returnValue = A._newRenderResult(options, result, start);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_renderAsync, $async$completer);
    },
    renderSync(options) {
      var start, result, file, data, _0_0, error, stackTrace, error0, stackTrace0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, exception, _null = null;
      if (!A.isNodeJs())
        A.jsThrow(new self.Error("The renderSync() method is only available in Node.js."));
      try {
        start = new A.DateTime(Date.now(), false);
        result = null;
        t1 = J.getInterceptor$x(options);
        file = A.NullableExtension_andThen0(t1.get$file(options), A.path__absolute$closure());
        data = null;
        _0_0 = t1.get$data(options);
        if (_0_0 != null) {
          data = _0_0;
          t2 = true;
        } else
          t2 = false;
        if (t2) {
          t2 = data;
          t3 = A._parseImporter(options, start);
          t4 = A._parseFunctions(options, start, false);
          t5 = t1.get$indentedSyntax(options);
          t5 = !J.$eq$(t5, false) && t5 != null ? B.Syntax_Sass_sass0 : _null;
          t6 = A._parseOutputStyle(t1.get$outputStyle(options));
          t7 = J.$eq$(t1.get$indentType(options), "tab");
          t8 = A._parseIndentWidth(t1.get$indentWidth(options));
          t9 = A._parseLineFeed(t1.get$linefeed(options));
          t10 = file == null ? "stdin" : $.$get$context().toUri$1(file).toString$0(0);
          t11 = t1.get$quietDeps(options);
          if (t11 == null)
            t11 = false;
          t12 = t1.get$verbose(options);
          if (t12 == null)
            t12 = false;
          t13 = t1.get$charset(options);
          if (t13 == null)
            t13 = true;
          t14 = A._enableSourceMaps(options);
          t1 = t1.get$logger(options);
          t15 = A.hasTerminal0();
          t16 = $._glyphs;
          result = A.compileString(t2, t13, _null, new A.CastList(t4, A._arrayInstanceType(t4)._eval$1("CastList<1,Callable>")), _null, _null, _null, t8, t9, new A.JSToDartLogger(t1, new A.StderrLogger0(t15), t16 === B.C_AsciiGlyphSet), t3, t11, t14, t6, t5, t10, !t7, t12);
        } else if (file != null) {
          t2 = A._parseImporter(options, start);
          t3 = A._parseFunctions(options, start, false);
          t4 = t1.get$indentedSyntax(options);
          t4 = !J.$eq$(t4, false) && t4 != null ? B.Syntax_Sass_sass0 : _null;
          t5 = A._parseOutputStyle(t1.get$outputStyle(options));
          t6 = J.$eq$(t1.get$indentType(options), "tab");
          t7 = A._parseIndentWidth(t1.get$indentWidth(options));
          t8 = A._parseLineFeed(t1.get$linefeed(options));
          t9 = t1.get$quietDeps(options);
          if (t9 == null)
            t9 = false;
          t10 = t1.get$verbose(options);
          if (t10 == null)
            t10 = false;
          t11 = t1.get$charset(options);
          if (t11 == null)
            t11 = true;
          t12 = A._enableSourceMaps(options);
          t1 = t1.get$logger(options);
          t13 = A.hasTerminal0();
          t14 = $._glyphs;
          result = A.compile(file, t11, _null, new A.CastList(t3, A._arrayInstanceType(t3)._eval$1("CastList<1,Callable>")), _null, _null, t7, t8, new A.JSToDartLogger(t1, new A.StderrLogger0(t13), t14 === B.C_AsciiGlyphSet), t2, t9, t12, t5, t4, !t6, t10);
        } else {
          t1 = A.ArgumentError$(string$.Either, _null);
          throw A.wrapException(t1);
        }
        t1 = A._newRenderResult(options, result, start);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.jsThrow(A._wrapException(error, stackTrace));
        } else {
          error0 = t1;
          stackTrace0 = A.getTraceFromException(exception);
          t1 = J.toString$0$(error0);
          t2 = A.getTrace0(error0);
          A.jsThrow(A._newRenderError(t1, t2 == null ? stackTrace0 : t2, _null, _null, _null, 3));
        }
      }
    },
    _wrapException(exception, stackTrace) {
      var url, t2, t3, t4, t5,
        t1 = A.SourceSpanException.prototype.get$span.call(exception, exception),
        _0_0 = t1.get$sourceUrl(t1);
      $label0$0: {
        if (_0_0 == null) {
          t1 = "stdin";
          break $label0$0;
        }
        if ("file" === _0_0.get$scheme()) {
          url = _0_0;
          t1 = true;
        } else {
          url = null;
          t1 = false;
        }
        if (t1) {
          t1 = $.$get$context().style.pathFromUri$1(A._parseUri(url));
          break $label0$0;
        }
        t1 = _0_0.toString$0(0);
        break $label0$0;
      }
      t2 = B.JSString_methods.replaceFirst$2(exception.toString$0(0), "Error: ", "");
      t3 = A.getTrace0(exception);
      if (t3 == null)
        t3 = stackTrace;
      t4 = A.SourceSpanException.prototype.get$span.call(exception, exception);
      t4 = t4.get$start(t4);
      t4 = t4.file.getLine$1(t4.offset);
      t5 = A.SourceSpanException.prototype.get$span.call(exception, exception);
      t5 = t5.get$start(t5);
      return A._newRenderError(t2, t3, t5.file.getColumn$1(t5.offset) + 1, t1, t4 + 1, 1);
    },
    _parseFunctions(options, start, asynch) {
      var result,
        functions = J.get$functions$x(options);
      if (functions == null)
        return B.List_empty24;
      result = A._setArrayType([], type$.JSArray_AsyncCallable_2);
      A.jsForEach(functions, new A._parseFunctions_closure(options, start, result, asynch));
      return result;
    },
    _parseImporter(options, start) {
      var t2, importers, t3, contextOptions, _1_0, t4, _box_0 = {},
        t1 = J.getInterceptor$x(options),
        _0_0 = t1.get$importer(options);
      $label0$0: {
        if (_0_0 == null) {
          t2 = A._setArrayType([], type$.JSArray_JSFunction);
          break $label0$0;
        }
        if (type$.List_nullable_Object._is(_0_0)) {
          importers = _0_0;
          t2 = true;
        } else {
          importers = null;
          t2 = false;
        }
        if (t2) {
          t2 = J.cast$1$0$ax(importers, type$.JSFunction);
          break $label0$0;
        }
        t2 = A._setArrayType([type$.JSFunction._as(_0_0)], type$.JSArray_JSFunction);
        break $label0$0;
      }
      t3 = J.getInterceptor$asx(t2);
      contextOptions = t3.get$isNotEmpty(t2) ? A._contextOptions(options, start) : new A.Object();
      _box_0.fiber = null;
      _1_0 = t1.get$fiber(options);
      if (_1_0 != null) {
        _box_0.fiber = _1_0;
        t4 = true;
      } else
        t4 = false;
      if (t4) {
        t2 = t3.map$1$1(t2, new A._parseImporter_closure(_box_0), type$.JSFunction);
        importers = A.List_List$of(t2, true, t2.$ti._eval$1("ListIterable.E"));
      } else
        importers = t2;
      t1 = t1.get$includePaths(options);
      if (t1 == null)
        t1 = [];
      t2 = type$.String;
      return new A.NodeImporter(contextOptions, A.List_List$unmodifiable(A.NodeImporter__addSassPath(A.List_List$from(t1, true, t2)), t2), A.List_List$unmodifiable(J.cast$1$0$ax(importers, type$.dynamic), type$.JSFunction));
    },
    _contextOptions(options, start) {
      var includePaths, t3, t4, t5, t6, t7,
        t1 = J.getInterceptor$x(options),
        t2 = t1.get$includePaths(options);
      if (t2 == null)
        t2 = [];
      includePaths = A.List_List$from(t2, true, type$.String);
      t2 = t1.get$file(options);
      t3 = t1.get$data(options);
      t4 = A._setArrayType([A.current()], type$.JSArray_String);
      B.JSArray_methods.addAll$1(t4, includePaths);
      t5 = A.isNodeJs() ? self.process : null;
      t4 = B.JSArray_methods.join$1(t4, J.$eq$(t5 == null ? null : J.get$platform$x(t5), "win32") ? ";" : ":");
      t5 = J.$eq$(t1.get$indentType(options), "tab") ? 1 : 0;
      t6 = A._parseIndentWidth(t1.get$indentWidth(options));
      if (t6 == null)
        t6 = 2;
      t7 = A._parseLineFeed(t1.get$linefeed(options));
      t1 = t1.get$file(options);
      if (t1 == null)
        t1 = "data";
      return {file: t2, data: t3, includePaths: t4, precision: 10, style: 1, indentType: t5, indentWidth: t6, linefeed: t7.text, result: {stats: {start: start._core$_value, entry: t1}}};
    },
    _parseOutputStyle(style) {
      var t1;
      $label0$0: {
        if (style == null || "expanded" === style) {
          t1 = B.OutputStyle_00;
          break $label0$0;
        }
        if ("compressed" === style) {
          t1 = B.OutputStyle_10;
          break $label0$0;
        }
        t1 = A.jsThrow(new self.Error('Unknown output style "' + A.S(style) + '".'));
      }
      return t1;
    },
    _parseIndentWidth(width) {
      var t1;
      $label0$0: {
        if (width == null) {
          t1 = null;
          break $label0$0;
        }
        if (A._isInt(width)) {
          t1 = width;
          break $label0$0;
        }
        t1 = A.int_parse(J.toString$0$(width), null);
        break $label0$0;
      }
      return t1;
    },
    _parseLineFeed(str) {
      var t1;
      $label0$0: {
        if ("cr" === str) {
          t1 = B.LineFeed_oyU;
          break $label0$0;
        }
        if ("crlf" === str) {
          t1 = B.LineFeed_gg4;
          break $label0$0;
        }
        if ("lfcr" === str) {
          t1 = B.LineFeed_t2a;
          break $label0$0;
        }
        t1 = B.LineFeed_SsD;
        break $label0$0;
      }
      return t1;
    },
    _newRenderResult(options, result, start) {
      var t3, sourceMapOption, sourceMapPath, t4, sourceMapDir, outFile, _0_0, file, t5, sourceMapDirUrl, i, source, t6, buffer, indices, url, t7, t8, _null = null,
        t1 = Date.now(),
        t2 = result._compile_result$_serialize,
        css = t2._0,
        sourceMapBytes = type$.Null._as(self.undefined);
      if (A._enableSourceMaps(options)) {
        t3 = J.getInterceptor$x(options);
        sourceMapOption = t3.get$sourceMap(options);
        if (typeof sourceMapOption == "string")
          sourceMapPath = sourceMapOption;
        else {
          t4 = t3.get$outFile(options);
          t4.toString;
          sourceMapPath = J.$add$ansx(t4, ".map");
        }
        t4 = $.$get$context();
        sourceMapDir = t4.dirname$1(sourceMapPath);
        t2 = t2._1;
        t2.toString;
        t2.sourceRoot = t3.get$sourceMapRoot(options);
        outFile = t3.get$outFile(options);
        if (outFile == null) {
          _0_0 = t3.get$file(options);
          $label0$0: {
            if (_0_0 != null) {
              file = _0_0;
              t5 = true;
            } else {
              file = _null;
              t5 = false;
            }
            if (t5) {
              t5 = t4.toUri$1(t4.withoutExtension$1(file) + ".css").toString$0(0);
              break $label0$0;
            }
            t5 = t2.targetUrl = "stdin.css";
            break $label0$0;
          }
          t2.targetUrl = t5;
        } else
          t2.targetUrl = t4.toUri$1(t4.relative$2$from(outFile, sourceMapDir)).toString$0(0);
        sourceMapDirUrl = t4.toUri$1(sourceMapDir).toString$0(0);
        for (t4 = t2.urls, i = 0; i < t4.length; ++i) {
          source = t4[i];
          if (source === "stdin")
            continue;
          t5 = $.$get$url();
          t6 = t5.style;
          if (t6.rootLength$1(source) <= 0 || t6.isRootRelative$1(source))
            continue;
          t4[i] = t5.relative$2$from(source, sourceMapDirUrl);
        }
        t4 = t3.get$sourceMapContents(options);
        sourceMapBytes = self.Buffer.from(B.C_JsonCodec.encode$2$toEncodable(t2.toJson$1$includeSourceContents(!J.$eq$(t4, false) && t4 != null), _null), "utf8");
        t2 = t3.get$omitSourceMapUrl(options);
        if (!(!J.$eq$(t2, false) && t2 != null)) {
          t2 = t3.get$sourceMapEmbed(options);
          if (!J.$eq$(t2, false) && t2 != null) {
            buffer = new A.StringBuffer("");
            indices = A._setArrayType([-1], type$.JSArray_int);
            A.UriData__writeUri("application/json", _null, _null, buffer, indices);
            indices.push(buffer._contents.length);
            t2 = buffer._contents += ";base64,";
            indices.push(t2.length - 1);
            t2 = B.C_Base64Encoder.startChunkedConversion$1(new A._StringSinkConversionSink(buffer));
            t3 = sourceMapBytes.length;
            A.RangeError_checkValidRange(0, t3, t3);
            t2._convert$_add$4(sourceMapBytes, 0, t3, true);
            t2 = buffer._contents;
            url = new A.UriData(t2.charCodeAt(0) == 0 ? t2 : t2, indices, _null).get$uri();
          } else {
            if (outFile == null)
              t2 = sourceMapPath;
            else {
              t2 = $.$get$context();
              t2 = t2.relative$2$from(sourceMapPath, t2.dirname$1(outFile));
            }
            url = $.$get$context().toUri$1(t2);
          }
          t2 = url.toString$0(0);
          css += "\n\n/*# sourceMappingURL=" + A.stringReplaceAllUnchecked(t2, "*/", "%2A/") + " */";
        }
      }
      t2 = self.Buffer.from(css, "utf8");
      t3 = J.get$file$x(options);
      if (t3 == null)
        t3 = "data";
      t4 = start._core$_value;
      t1 = new A.DateTime(t1, false)._core$_value;
      t5 = B.JSInt_methods._tdivFast$1(A.Duration$(t1 - t4)._duration, 1000);
      t6 = A._setArrayType([], type$.JSArray_String);
      for (t7 = result._evaluate._0, t7 = t7.get$iterator(t7); t7.moveNext$0();) {
        t8 = t7.get$current(t7);
        t6.push(t8.get$scheme() === "file" ? $.$get$context().style.pathFromUri$1(A._parseUri(t8)) : t8.toString$0(0));
      }
      return {css: t2, map: sourceMapBytes, stats: {entry: t3, start: t4, end: t1, duration: t5, includedFiles: t6}};
    },
    _enableSourceMaps(options) {
      var t2,
        t1 = J.getInterceptor$x(options);
      if (typeof t1.get$sourceMap(options) != "string") {
        t2 = t1.get$sourceMap(options);
        t1 = !J.$eq$(t2, false) && t2 != null && t1.get$outFile(options) != null;
      } else
        t1 = true;
      return t1;
    },
    _newRenderError(message, stackTrace, column, file, line, $status) {
      var error = new self.Error(message);
      error.formatted = "Error: " + message;
      if (line != null)
        error.line = line;
      if (column != null)
        error.column = column;
      if (file != null)
        error.file = file;
      error.status = $status;
      A.attachJsStack(error, stackTrace);
      return error;
    },
    render_closure: function render_closure(t0, t1) {
      this.callback = t0;
      this.options = t1;
    },
    render_closure0: function render_closure0(t0) {
      this.callback = t0;
    },
    render_closure1: function render_closure1(t0) {
      this.callback = t0;
    },
    _parseFunctions_closure: function _parseFunctions_closure(t0, t1, t2, t3) {
      var _ = this;
      _.options = t0;
      _.start = t1;
      _.result = t2;
      _.asynch = t3;
    },
    _parseFunctions__closure: function _parseFunctions__closure(t0, t1, t2) {
      this._box_0 = t0;
      this.callback = t1;
      this.context = t2;
    },
    _parseFunctions___closure2: function _parseFunctions___closure2(t0) {
      this.currentFiber = t0;
    },
    _parseFunctions____closure: function _parseFunctions____closure(t0, t1) {
      this.currentFiber = t0;
      this.result = t1;
    },
    _parseFunctions___closure3: function _parseFunctions___closure3(t0, t1, t2) {
      this.callback = t0;
      this.context = t1;
      this.jsArguments = t2;
    },
    _parseFunctions___closure4: function _parseFunctions___closure4(t0) {
      this._box_0 = t0;
    },
    _parseFunctions__closure0: function _parseFunctions__closure0(t0, t1) {
      this.callback = t0;
      this.context = t1;
    },
    _parseFunctions___closure1: function _parseFunctions___closure1(t0, t1, t2) {
      this.callback = t0;
      this.context = t1;
      this.$arguments = t2;
    },
    _parseFunctions__closure1: function _parseFunctions__closure1(t0, t1) {
      this.callback = t0;
      this.context = t1;
    },
    _parseFunctions___closure: function _parseFunctions___closure(t0) {
      this.completer = t0;
    },
    _parseFunctions___closure0: function _parseFunctions___closure0(t0, t1, t2) {
      this.callback = t0;
      this.context = t1;
      this.jsArguments = t2;
    },
    _parseImporter_closure: function _parseImporter_closure(t0) {
      this._box_0 = t0;
    },
    _parseImporter__closure: function _parseImporter__closure(t0, t1) {
      this._box_0 = t0;
      this.importer = t1;
    },
    _parseImporter___closure: function _parseImporter___closure(t0) {
      this.currentFiber = t0;
    },
    _parseImporter____closure: function _parseImporter____closure(t0, t1) {
      this.currentFiber = t0;
      this.result = t1;
    },
    _parseImporter___closure0: function _parseImporter___closure0(t0) {
      this._box_0 = t0;
    },
    LimitedMapView$blocklist0(_map, blocklist, $K, $V) {
      var t2, key,
        t1 = A.LinkedHashSet_LinkedHashSet$_empty($K);
      for (t2 = J.get$iterator$ax(_map.get$keys(_map)); t2.moveNext$0();) {
        key = t2.get$current(t2);
        if (!blocklist.contains$1(0, key))
          t1.add$1(0, key);
      }
      return new A.LimitedMapView0(_map, t1, $K._eval$1("@<0>")._bind$1($V)._eval$1("LimitedMapView0<1,2>"));
    },
    LimitedMapView0: function LimitedMapView0(t0, t1, t2) {
      this._limited_map_view0$_map = t0;
      this._limited_map_view0$_keys = t1;
      this.$ti = t2;
    },
    ListExpression0: function ListExpression0(t0, t1, t2, t3) {
      var _ = this;
      _.contents = t0;
      _.separator = t1;
      _.hasBrackets = t2;
      _.span = t3;
    },
    ListExpression_toString_closure0: function ListExpression_toString_closure0(t0) {
      this.$this = t0;
    },
    ListExpression__elementNeedsParens_closure0: function ListExpression__elementNeedsParens_closure0(t0) {
      this._0_0 = t0;
    },
    _function10($name, $arguments, callback) {
      return A.BuiltInCallable$function0($name, $arguments, callback, "sass:list");
    },
    _length_closure2: function _length_closure2() {
    },
    _nth_closure0: function _nth_closure0() {
    },
    _setNth_closure0: function _setNth_closure0() {
    },
    _join_closure0: function _join_closure0() {
    },
    _join__closure2: function _join__closure2(t0) {
      this._0_0 = t0;
    },
    _join__closure3: function _join__closure3(t0) {
      this._0_1 = t0;
    },
    _join__closure4: function _join__closure4(t0) {
      this._0_0 = t0;
    },
    _append_closure2: function _append_closure2() {
    },
    _zip_closure0: function _zip_closure0() {
    },
    _zip__closure2: function _zip__closure2() {
    },
    _zip__closure3: function _zip__closure3(t0) {
      this._box_0 = t0;
    },
    _zip__closure4: function _zip__closure4(t0) {
      this._box_0 = t0;
    },
    _index_closure2: function _index_closure2() {
    },
    _separator_closure0: function _separator_closure0() {
    },
    _isBracketed_closure0: function _isBracketed_closure0() {
    },
    _slash_closure0: function _slash_closure0() {
    },
    SelectorList$0(components, span) {
      var t1 = A.List_List$unmodifiable(components, type$.ComplexSelector_2);
      if (t1.length === 0)
        A.throwExpression(A.ArgumentError$("components may not be empty.", null));
      return new A.SelectorList0(t1, span);
    },
    SelectorList_SelectorList$parse0(contents, allowParent, allowPlaceholder, interpolationMap, logger) {
      return A.SelectorParser$0(contents, allowParent, allowPlaceholder, interpolationMap, logger, null).parse$0();
    },
    SelectorList0: function SelectorList0(t0, t1) {
      this.components = t0;
      this.span = t1;
    },
    SelectorList_asSassList_closure0: function SelectorList_asSassList_closure0() {
    },
    SelectorList_resolveParentSelectors_closure0: function SelectorList_resolveParentSelectors_closure0(t0, t1, t2) {
      this.$this = t0;
      this.implicitParent = t1;
      this.parent = t2;
    },
    SelectorList_resolveParentSelectors__closure1: function SelectorList_resolveParentSelectors__closure1(t0) {
      this.complex = t0;
    },
    SelectorList_resolveParentSelectors__closure2: function SelectorList_resolveParentSelectors__closure2(t0) {
      this.complex = t0;
    },
    SelectorList__resolveParentSelectorsCompound_closure2: function SelectorList__resolveParentSelectorsCompound_closure2() {
    },
    SelectorList__resolveParentSelectorsCompound_closure3: function SelectorList__resolveParentSelectorsCompound_closure3(t0) {
      this.parent = t0;
    },
    SelectorList__resolveParentSelectorsCompound__closure0: function SelectorList__resolveParentSelectorsCompound__closure0(t0) {
      this._0_0 = t0;
    },
    SelectorList__resolveParentSelectorsCompound_closure4: function SelectorList__resolveParentSelectorsCompound_closure4(t0, t1, t2) {
      this.parentSelector = t0;
      this.resolvedSimples = t1;
      this.component = t2;
    },
    SelectorList_withAdditionalCombinators_closure0: function SelectorList_withAdditionalCombinators_closure0(t0) {
      this.combinators = t0;
    },
    _ParentSelectorVisitor0: function _ParentSelectorVisitor0() {
    },
    __ParentSelectorVisitor_Object_SelectorSearchVisitor0: function __ParentSelectorVisitor_Object_SelectorSearchVisitor0() {
    },
    listClass_closure: function listClass_closure() {
    },
    listClass__closure: function listClass__closure() {
    },
    listClass__closure0: function listClass__closure0() {
    },
    _ConstructorOptions: function _ConstructorOptions() {
    },
    _NodeSassList: function _NodeSassList() {
    },
    legacyListClass_closure: function legacyListClass_closure() {
    },
    legacyListClass__closure: function legacyListClass__closure() {
    },
    legacyListClass_closure0: function legacyListClass_closure0() {
    },
    legacyListClass_closure1: function legacyListClass_closure1() {
    },
    legacyListClass_closure2: function legacyListClass_closure2() {
    },
    legacyListClass_closure3: function legacyListClass_closure3() {
    },
    legacyListClass_closure4: function legacyListClass_closure4() {
    },
    SassList$0(contents, _separator, brackets) {
      var t1 = new A.SassList0(A.List_List$unmodifiable(contents, type$.Value_2), _separator, brackets);
      t1.SassList$3$brackets0(contents, _separator, brackets);
      return t1;
    },
    SassList0: function SassList0(t0, t1, t2) {
      this._list1$_contents = t0;
      this._list1$_separator = t1;
      this._list1$_hasBrackets = t2;
    },
    SassList_isBlank_closure0: function SassList_isBlank_closure0() {
    },
    ListSeparator0: function ListSeparator0(t0, t1, t2) {
      this._list1$_name = t0;
      this.separator = t1;
      this._name = t2;
    },
    JSLogger: function JSLogger() {
    },
    WarnOptions: function WarnOptions() {
    },
    DebugOptions: function DebugOptions() {
    },
    WarnForDeprecation_warnForDeprecation0(_this, deprecation, message, span, trace) {
      var $self, t1;
      if (_this instanceof A.DeprecationHandlingLogger0) {
        $self = _this;
        t1 = true;
      } else {
        $self = null;
        t1 = false;
      }
      if (t1)
        $self.warnForDeprecation$4$span$trace(deprecation, message, span, trace);
      else if (!deprecation.isFuture)
        _this.warn$4$deprecation$span$trace(0, message, true, span, trace);
    },
    _QuietLogger0: function _QuietLogger0() {
    },
    LoudComment0: function LoudComment0(t0) {
      this.text = t0;
    },
    MapExpression0: function MapExpression0(t0, t1) {
      this.pairs = t0;
      this.span = t1;
    },
    _modify0(map, keys, modify, addNesting) {
      var keyIterator = J.get$iterator$ax(keys);
      return keyIterator.moveNext$0() ? new A._modify_modifyNestedMap0(keyIterator, modify, addNesting).call$1(map) : modify.call$1(map);
    },
    _deepMergeImpl0(map1, map2) {
      var t2, t3, result, key, value, _1_0, _1_1, _1_3, resultMap, valueMap, merged, _null = null,
        t1 = map1._map0$_contents;
      if (t1.get$isEmpty(t1))
        return map2;
      t2 = map2._map0$_contents;
      if (t2.get$isEmpty(t2))
        return map1;
      t3 = type$.Value_2;
      result = A.LinkedHashMap_LinkedHashMap$of(t1, t3, t3);
      for (t1 = A.MapExtensions_get_pairs0(t2, t3, t3), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        key = t2._0;
        value = t2._1;
        t2 = result.$index(0, key);
        t2 = t2 == null ? _null : t2.tryMap$0();
        _1_0 = new A._Record_2(t2, value.tryMap$0());
        _1_1 = A._InitializedCell$(new A._deepMergeImpl_closure1(_1_0));
        _1_3 = A._InitializedCell$(new A._deepMergeImpl_closure2(_1_0));
        if (_1_1._readFinal$0() != null) {
          resultMap = _1_1._readFinal$0();
          t2 = true;
        } else {
          resultMap = _null;
          t2 = false;
        }
        if (t2)
          if (_1_3._readFinal$0() != null) {
            valueMap = _1_3._readFinal$0();
            t2 = true;
          } else {
            valueMap = _null;
            t2 = false;
          }
        else {
          valueMap = _null;
          t2 = false;
        }
        if (t2) {
          merged = A._deepMergeImpl0(resultMap, valueMap);
          if (merged === resultMap)
            continue;
          result.$indexSet(0, key, merged);
        } else
          result.$indexSet(0, key, value);
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(result, t3, t3));
    },
    _function9($name, $arguments, callback) {
      return A.BuiltInCallable$function0($name, $arguments, callback, "sass:map");
    },
    _get_closure0: function _get_closure0() {
    },
    _set_closure1: function _set_closure1() {
    },
    _set__closure4: function _set__closure4(t0) {
      this.$arguments = t0;
    },
    _set_closure2: function _set_closure2() {
    },
    _set__closure2: function _set__closure2(t0) {
      this._0_0 = t0;
    },
    _set__closure3: function _set__closure3(t0) {
      this._box_0 = t0;
    },
    _merge_closure1: function _merge_closure1() {
    },
    _merge_closure2: function _merge_closure2() {
    },
    _merge__closure1: function _merge__closure1(t0) {
      this._0_0 = t0;
    },
    _merge__closure2: function _merge__closure2(t0) {
      this.map2 = t0;
    },
    _deepMerge_closure0: function _deepMerge_closure0() {
    },
    _deepRemove_closure0: function _deepRemove_closure0() {
    },
    _deepRemove__closure0: function _deepRemove__closure0(t0) {
      this.keys = t0;
    },
    _remove_closure1: function _remove_closure1() {
    },
    _remove_closure2: function _remove_closure2() {
    },
    _keys_closure0: function _keys_closure0() {
    },
    _values_closure0: function _values_closure0() {
    },
    _hasKey_closure0: function _hasKey_closure0() {
    },
    _modify_modifyNestedMap0: function _modify_modifyNestedMap0(t0, t1, t2) {
      this.keyIterator = t0;
      this.modify = t1;
      this.addNesting = t2;
    },
    _deepMergeImpl_closure1: function _deepMergeImpl_closure1(t0) {
      this._1_0 = t0;
    },
    _deepMergeImpl_closure2: function _deepMergeImpl_closure2(t0) {
      this._1_0 = t0;
    },
    MapExtensions_get_pairs0(_this, $K, $V) {
      return _this.get$entries(_this).map$1$1(0, new A.MapExtensions_get_pairs_closure0($K, $V), $K._eval$1("@<0>")._bind$1($V)._eval$1("+(1,2)"));
    },
    MapExtensions_get_pairs_closure0: function MapExtensions_get_pairs_closure0(t0, t1) {
      this.K = t0;
      this.V = t1;
    },
    mapClass_closure: function mapClass_closure() {
    },
    mapClass__closure: function mapClass__closure() {
    },
    mapClass__closure0: function mapClass__closure0() {
    },
    mapClass__closure1: function mapClass__closure1() {
    },
    _NodeSassMap: function _NodeSassMap() {
    },
    legacyMapClass_closure: function legacyMapClass_closure() {
    },
    legacyMapClass__closure: function legacyMapClass__closure() {
    },
    legacyMapClass__closure0: function legacyMapClass__closure0() {
    },
    legacyMapClass_closure0: function legacyMapClass_closure0() {
    },
    legacyMapClass_closure1: function legacyMapClass_closure1() {
    },
    legacyMapClass_closure2: function legacyMapClass_closure2() {
    },
    legacyMapClass_closure3: function legacyMapClass_closure3() {
    },
    legacyMapClass_closure4: function legacyMapClass_closure4() {
    },
    SassMap0: function SassMap0(t0) {
      this._map0$_contents = t0;
    },
    _singleArgumentMathFunc0($name, mathFunc) {
      return A.BuiltInCallable$function0($name, "$number", new A._singleArgumentMathFunc_closure0(mathFunc), "sass:math");
    },
    _numberFunction0($name, transform) {
      return A.BuiltInCallable$function0($name, "$number", new A._numberFunction_closure0(transform), "sass:math");
    },
    _function8($name, $arguments, callback) {
      return A.BuiltInCallable$function0($name, $arguments, callback, "sass:math");
    },
    global_closure31: function global_closure31() {
    },
    module_closure11: function module_closure11() {
    },
    _ceil_closure0: function _ceil_closure0() {
    },
    _clamp_closure0: function _clamp_closure0() {
    },
    _floor_closure0: function _floor_closure0() {
    },
    _max_closure0: function _max_closure0() {
    },
    _min_closure0: function _min_closure0() {
    },
    _round_closure0: function _round_closure0() {
    },
    _hypot_closure0: function _hypot_closure0() {
    },
    _hypot__closure0: function _hypot__closure0() {
    },
    _log_closure0: function _log_closure0() {
    },
    _pow_closure0: function _pow_closure0() {
    },
    _atan2_closure0: function _atan2_closure0() {
    },
    _compatible_closure0: function _compatible_closure0() {
    },
    _isUnitless_closure0: function _isUnitless_closure0() {
    },
    _unit_closure0: function _unit_closure0() {
    },
    _percentage_closure0: function _percentage_closure0() {
    },
    _randomFunction_closure0: function _randomFunction_closure0() {
    },
    _div_closure0: function _div_closure0() {
    },
    _singleArgumentMathFunc_closure0: function _singleArgumentMathFunc_closure0(t0) {
      this.mathFunc = t0;
    },
    _numberFunction_closure0: function _numberFunction_closure0(t0) {
      this.transform = t0;
    },
    CssMediaQuery_parseList0(contents, interpolationMap, logger) {
      var t1 = A.SpanScanner$(contents, null);
      return new A.MediaQueryParser0(t1, logger, interpolationMap).parse$0();
    },
    CssMediaQuery$type0(type, conditions, modifier) {
      return new A.CssMediaQuery0(modifier, type, true, conditions == null ? B.List_empty : A.List_List$unmodifiable(conditions, type$.String));
    },
    CssMediaQuery$condition0(conditions, conjunction) {
      var t1 = A.List_List$unmodifiable(conditions, type$.String);
      if (t1.length > 1 && conjunction == null)
        A.throwExpression(A.ArgumentError$(string$.If_con, null));
      return new A.CssMediaQuery0(null, null, conjunction !== false, t1);
    },
    CssMediaQuery0: function CssMediaQuery0(t0, t1, t2, t3) {
      var _ = this;
      _.modifier = t0;
      _.type = t1;
      _.conjunction = t2;
      _.conditions = t3;
    },
    _SingletonCssMediaQueryMergeResult0: function _SingletonCssMediaQueryMergeResult0(t0) {
      this._name = t0;
    },
    MediaQuerySuccessfulMergeResult0: function MediaQuerySuccessfulMergeResult0(t0) {
      this.query = t0;
    },
    MediaQueryParser0: function MediaQueryParser0(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._parser0$_interpolationMap = t2;
    },
    MediaQueryParser_parse_closure0: function MediaQueryParser_parse_closure0(t0) {
      this.$this = t0;
    },
    ModifiableCssMediaRule$0(queries, span) {
      var t1 = A.List_List$unmodifiable(queries, type$.CssMediaQuery_2),
        t2 = A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
      if (J.get$isEmpty$asx(queries))
        A.throwExpression(A.ArgumentError$value(queries, "queries", "may not be empty."));
      return new A.ModifiableCssMediaRule0(t1, span, new A.UnmodifiableListView(t2, type$.UnmodifiableListView_ModifiableCssNode_2), t2);
    },
    ModifiableCssMediaRule0: function ModifiableCssMediaRule0(t0, t1, t2, t3) {
      var _ = this;
      _.queries = t0;
      _.span = t1;
      _.children = t2;
      _._node$_children = t3;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    MediaRule$0(query, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.MediaRule0(query, span, t1, t2);
    },
    MediaRule0: function MediaRule0(t0, t1, t2, t3) {
      var _ = this;
      _.query = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    MergedExtension_merge0(left, right) {
      var t2, t3, t4,
        t1 = left.extender.selector;
      if (!t1.$eq(0, right.extender.selector) || !left.target.$eq(0, right.target))
        throw A.wrapException(A.ArgumentError$(left.toString$0(0) + " and " + right.toString$0(0) + " aren't the same extension.", null));
      t2 = left.mediaContext;
      t3 = t2 == null;
      if (!t3) {
        t4 = right.mediaContext;
        t4 = t4 != null && !B.C_ListEquality.equals$2(0, t2, t4);
      } else
        t4 = false;
      if (t4)
        throw A.wrapException(A.SassException$0("From " + left.span.message$1(0, "") + string$.x0aYou_m, right.span, null));
      if (right.isOptional && right.mediaContext == null)
        return left;
      if (left.isOptional && t3)
        return right;
      if (t3)
        t2 = right.mediaContext;
      t1.get$specificity();
      t1 = new A.Extender0(t1, false);
      return t1._extension$_extension = new A.MergedExtension0(left, right, t1, left.target, t2, true, left.span);
    },
    MergedExtension0: function MergedExtension0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.left = t0;
      _.right = t1;
      _.extender = t2;
      _.target = t3;
      _.mediaContext = t4;
      _.isOptional = t5;
      _.span = t6;
    },
    MergedMapView$0(maps, $K, $V) {
      var t1 = $K._eval$1("@<0>")._bind$1($V);
      t1 = new A.MergedMapView0(A.LinkedHashMap_LinkedHashMap$_empty($K, t1._eval$1("Map<1,2>")), t1._eval$1("MergedMapView0<1,2>"));
      t1.MergedMapView$10(maps, $K, $V);
      return t1;
    },
    MergedMapView0: function MergedMapView0(t0, t1) {
      this._merged_map_view$_mapsByKey = t0;
      this.$ti = t1;
    },
    _function12($name, $arguments, callback) {
      return A.BuiltInCallable$function0($name, $arguments, callback, "sass:meta");
    },
    global_closure59: function global_closure59() {
    },
    global_closure60: function global_closure60() {
    },
    global_closure61: function global_closure61() {
    },
    global_closure62: function global_closure62() {
    },
    local_closure2: function local_closure2() {
    },
    local_closure3: function local_closure3() {
    },
    local__closure2: function local__closure2() {
    },
    local_closure4: function local_closure4() {
    },
    local__closure1: function local__closure1(t0) {
      this._0_0 = t0;
    },
    mixinClass_closure: function mixinClass_closure() {
    },
    mixinClass__closure: function mixinClass__closure() {
    },
    mixinClass__closure0: function mixinClass__closure0() {
    },
    SassMixin0: function SassMixin0(t0) {
      this.callable = t0;
    },
    MixinRule$0($name, $arguments, children, span, comment) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.MixinRule0($name, $arguments, span, t1, t2);
    },
    MixinRule0: function MixinRule0(t0, t1, t2, t3, t4) {
      var _ = this;
      _._mixin_rule$__MixinRule_hasContent_FI = $;
      _.name = t0;
      _.$arguments = t1;
      _.span = t2;
      _.children = t3;
      _.hasDeclarations = t4;
    },
    _HasContentVisitor0: function _HasContentVisitor0() {
    },
    __HasContentVisitor_Object_StatementSearchVisitor0: function __HasContentVisitor_Object_StatementSearchVisitor0() {
    },
    ExtendMode0: function ExtendMode0(t0, t1) {
      this.name = t0;
      this._name = t1;
    },
    MultiSpan0: function MultiSpan0(t0, t1, t2) {
      this._multi_span0$_primary = t0;
      this.primaryLabel = t1;
      this.secondarySpans = t2;
    },
    SupportsNegation0: function SupportsNegation0(t0, t1) {
      this.condition = t0;
      this.span = t1;
    },
    NoOpImporter0: function NoOpImporter0() {
    },
    NoSourceMapBuffer0: function NoSourceMapBuffer0(t0) {
      this._no_source_map_buffer0$_buffer = t0;
    },
    _FakeAstNode0: function _FakeAstNode0(t0) {
      this._node0$_callback = t0;
    },
    CssNode0: function CssNode0() {
    },
    CssParentNode0: function CssParentNode0() {
    },
    _IsInvisibleVisitor1: function _IsInvisibleVisitor1(t0, t1) {
      this.includeBogus = t0;
      this.includeComments = t1;
    },
    __IsInvisibleVisitor_Object_EveryCssVisitor0: function __IsInvisibleVisitor_Object_EveryCssVisitor0() {
    },
    ModifiableCssNode0: function ModifiableCssNode0() {
    },
    ModifiableCssNode_hasFollowingSibling_closure0: function ModifiableCssNode_hasFollowingSibling_closure0() {
    },
    ModifiableCssParentNode0: function ModifiableCssParentNode0() {
    },
    NullExpression0: function NullExpression0(t0) {
      this.span = t0;
    },
    legacyNullClass_closure: function legacyNullClass_closure() {
    },
    legacyNullClass__closure: function legacyNullClass__closure() {
    },
    _SassNull0: function _SassNull0() {
    },
    NumberExpression0: function NumberExpression0(t0, t1, t2) {
      this.value = t0;
      this.unit = t1;
      this.span = t2;
    },
    numberClass_closure: function numberClass_closure() {
    },
    numberClass__closure: function numberClass__closure() {
    },
    numberClass__closure0: function numberClass__closure0() {
    },
    numberClass__closure1: function numberClass__closure1() {
    },
    numberClass__closure2: function numberClass__closure2() {
    },
    numberClass__closure3: function numberClass__closure3() {
    },
    numberClass__closure4: function numberClass__closure4() {
    },
    numberClass__closure5: function numberClass__closure5() {
    },
    numberClass__closure6: function numberClass__closure6() {
    },
    numberClass__closure7: function numberClass__closure7() {
    },
    numberClass__closure8: function numberClass__closure8() {
    },
    numberClass__closure9: function numberClass__closure9() {
    },
    numberClass__closure10: function numberClass__closure10() {
    },
    numberClass__closure11: function numberClass__closure11() {
    },
    numberClass__closure12: function numberClass__closure12() {
    },
    numberClass__closure13: function numberClass__closure13() {
    },
    numberClass__closure14: function numberClass__closure14() {
    },
    numberClass__closure15: function numberClass__closure15() {
    },
    numberClass__closure16: function numberClass__closure16() {
    },
    numberClass__closure17: function numberClass__closure17() {
    },
    numberClass__closure18: function numberClass__closure18() {
    },
    numberClass__closure19: function numberClass__closure19() {
    },
    _ConstructorOptions0: function _ConstructorOptions0() {
    },
    _parseNumber(value, unit) {
      var invalidUnit, operands, t1, numerator, denominator, numeratorUnits, denominatorUnits;
      if (unit == null || unit.length === 0)
        return A.SassNumber_SassNumber0(value, null);
      if (!J.contains$1$asx(unit, "*") && !B.JSString_methods.contains$1(unit, "/"))
        return A.SassNumber_SassNumber0(value, unit);
      invalidUnit = new A.ArgumentError(true, unit, "unit", "is invalid.");
      operands = unit.split("/");
      t1 = operands.length;
      if (t1 > 2)
        throw A.wrapException(invalidUnit);
      numerator = operands[0];
      denominator = t1 === 1 ? null : operands[1];
      t1 = type$.JSArray_String;
      numeratorUnits = numerator.length === 0 ? A._setArrayType([], t1) : A._setArrayType(numerator.split("*"), t1);
      if (B.JSArray_methods.any$1(numeratorUnits, new A._parseNumber_closure()))
        throw A.wrapException(invalidUnit);
      denominatorUnits = denominator == null ? A._setArrayType([], t1) : A._setArrayType(denominator.split("*"), t1);
      if (B.JSArray_methods.any$1(denominatorUnits, new A._parseNumber_closure0()))
        throw A.wrapException(invalidUnit);
      return A.SassNumber_SassNumber$withUnits0(value, denominatorUnits, numeratorUnits);
    },
    _NodeSassNumber: function _NodeSassNumber() {
    },
    legacyNumberClass_closure: function legacyNumberClass_closure() {
    },
    legacyNumberClass_closure0: function legacyNumberClass_closure0() {
    },
    legacyNumberClass_closure1: function legacyNumberClass_closure1() {
    },
    legacyNumberClass_closure2: function legacyNumberClass_closure2() {
    },
    legacyNumberClass_closure3: function legacyNumberClass_closure3() {
    },
    _parseNumber_closure: function _parseNumber_closure() {
    },
    _parseNumber_closure0: function _parseNumber_closure0() {
    },
    conversionFactor0(unit1, unit2) {
      var _0_0, innerMap, t1;
      if (unit1 === unit2)
        return 1;
      _0_0 = B.Map_nfuzN.$index(0, unit1);
      if (_0_0 != null) {
        innerMap = _0_0;
        t1 = true;
      } else {
        innerMap = null;
        t1 = false;
      }
      if (t1)
        return innerMap.$index(0, unit2);
      return null;
    },
    SassNumber_SassNumber0(value, unit) {
      return unit == null ? new A.UnitlessSassNumber0(value, null) : new A.SingleUnitSassNumber0(unit, value, null);
    },
    SassNumber_SassNumber$withUnits0(value, denominatorUnits, numeratorUnits) {
      var t1, unit, numerators, denominators, unsimplifiedDenominators, valueDouble, _i, denominator, simplifiedAway, i, factor, _1_0, _1_1, _1_2, _1_7, _null = null,
        _0_0 = new A._Record_2(numeratorUnits, denominatorUnits),
        _0_1 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure9(_0_0)),
        _0_3 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure10(_0_1)),
        _0_4 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure11(_0_1)),
        _0_6 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure12(_0_4)),
        _0_7 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure13(_0_0)),
        _0_8 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure14(_0_7)),
        _0_10 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure15(_0_7));
      if (_0_3._readFinal$0() || _0_6._readFinal$0())
        t1 = _0_8._readFinal$0() || _0_10._readFinal$0();
      else
        t1 = false;
      if (t1)
        return new A.UnitlessSassNumber0(value, _null);
      if (type$.List_String._is(_0_1._readFinal$0()))
        if (J.$eq$(_0_4._readFinal$0(), 1)) {
          unit = J.$index$asx(_0_1._readFinal$0(), 0);
          t1 = _0_8._readFinal$0() || _0_10._readFinal$0();
        } else {
          unit = _null;
          t1 = false;
        }
      else {
        unit = _null;
        t1 = false;
      }
      if (t1)
        return new A.SingleUnitSassNumber0(unit, value, _null);
      if (_0_1._readFinal$0() != null) {
        numerators = _0_1._readFinal$0();
        t1 = true;
      } else {
        numerators = _null;
        t1 = false;
      }
      if (t1)
        t1 = _0_8._readFinal$0() || _0_10._readFinal$0();
      else
        t1 = false;
      if (t1)
        return new A.ComplexSassNumber0(A.List_List$unmodifiable(numerators, type$.String), B.List_empty, value, _null);
      if (_0_3._readFinal$0() || _0_6._readFinal$0())
        if (_0_7._readFinal$0() != null) {
          denominators = _0_7._readFinal$0();
          t1 = true;
        } else {
          denominators = _null;
          t1 = false;
        }
      else {
        denominators = _null;
        t1 = false;
      }
      if (t1)
        return new A.ComplexSassNumber0(B.List_empty, A.List_List$unmodifiable(denominators, type$.String), value, _null);
      numeratorUnits.toString;
      numerators = J.toList$0$ax(numeratorUnits);
      denominatorUnits.toString;
      unsimplifiedDenominators = J.toList$0$ax(denominatorUnits);
      denominators = A._setArrayType([], type$.JSArray_String);
      for (t1 = unsimplifiedDenominators.length, valueDouble = value, _i = 0; _i < unsimplifiedDenominators.length; unsimplifiedDenominators.length === t1 || (0, A.throwConcurrentModificationError)(unsimplifiedDenominators), ++_i) {
        denominator = unsimplifiedDenominators[_i];
        i = 0;
        while (true) {
          if (!(i < numerators.length)) {
            simplifiedAway = false;
            break;
          }
          c$0: {
            factor = A.conversionFactor0(denominator, numerators[i]);
            if (factor == null)
              break c$0;
            valueDouble *= factor;
            B.JSArray_methods.removeAt$1(numerators, i);
            simplifiedAway = true;
            break;
          }
          ++i;
        }
        if (!simplifiedAway)
          denominators.push(denominator);
      }
      _1_0 = new A._Record_2(numerators, denominators);
      _1_1 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure16(_1_0));
      _1_2 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure17(_1_1));
      _1_7 = A._InitializedCell$(new A.SassNumber_SassNumber$withUnits_closure18(_1_0));
      $label0$1: {
        if (_1_2._readFinal$0() <= 0 && _1_7._readFinal$0()) {
          t1 = new A.UnitlessSassNumber0(valueDouble, _null);
          break $label0$1;
        }
        if (J.$eq$(_1_2._readFinal$0(), 1)) {
          unit = J.$index$asx(_1_1._readFinal$0(), 0);
          t1 = _1_7._readFinal$0();
          t1 = t1;
        } else {
          unit = _null;
          t1 = false;
        }
        if (t1) {
          t1 = new A.SingleUnitSassNumber0(unit, valueDouble, _null);
          break $label0$1;
        }
        t1 = type$.String;
        t1 = new A.ComplexSassNumber0(A.List_List$unmodifiable(numerators, t1), A.List_List$unmodifiable(denominators, t1), valueDouble, _null);
        break $label0$1;
      }
      return t1;
    },
    SassNumber0: function SassNumber0() {
    },
    SassNumber_SassNumber$withUnits_closure10: function SassNumber_SassNumber$withUnits_closure10(t0) {
      this._0_1 = t0;
    },
    SassNumber_SassNumber$withUnits_closure9: function SassNumber_SassNumber$withUnits_closure9(t0) {
      this._0_0 = t0;
    },
    SassNumber_SassNumber$withUnits_closure11: function SassNumber_SassNumber$withUnits_closure11(t0) {
      this._0_1 = t0;
    },
    SassNumber_SassNumber$withUnits_closure12: function SassNumber_SassNumber$withUnits_closure12(t0) {
      this._0_4 = t0;
    },
    SassNumber_SassNumber$withUnits_closure14: function SassNumber_SassNumber$withUnits_closure14(t0) {
      this._0_7 = t0;
    },
    SassNumber_SassNumber$withUnits_closure13: function SassNumber_SassNumber$withUnits_closure13(t0) {
      this._0_0 = t0;
    },
    SassNumber_SassNumber$withUnits_closure15: function SassNumber_SassNumber$withUnits_closure15(t0) {
      this._0_7 = t0;
    },
    SassNumber_SassNumber$withUnits_closure16: function SassNumber_SassNumber$withUnits_closure16(t0) {
      this._1_0 = t0;
    },
    SassNumber_SassNumber$withUnits_closure17: function SassNumber_SassNumber$withUnits_closure17(t0) {
      this._1_1 = t0;
    },
    SassNumber_SassNumber$withUnits_closure18: function SassNumber_SassNumber$withUnits_closure18(t0) {
      this._1_0 = t0;
    },
    SassNumber__coerceOrConvertValue_compatibilityException0: function SassNumber__coerceOrConvertValue_compatibilityException0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.$this = t0;
      _.other = t1;
      _.otherName = t2;
      _.otherHasUnits = t3;
      _.name = t4;
      _.newNumerators = t5;
      _.newDenominators = t6;
    },
    SassNumber__coerceOrConvertValue_closure3: function SassNumber__coerceOrConvertValue_closure3(t0, t1) {
      this._box_0 = t0;
      this.newNumerator = t1;
    },
    SassNumber__coerceOrConvertValue_closure4: function SassNumber__coerceOrConvertValue_closure4(t0) {
      this.compatibilityException = t0;
    },
    SassNumber__coerceOrConvertValue_closure5: function SassNumber__coerceOrConvertValue_closure5(t0, t1) {
      this._box_0 = t0;
      this.newDenominator = t1;
    },
    SassNumber__coerceOrConvertValue_closure6: function SassNumber__coerceOrConvertValue_closure6(t0) {
      this.compatibilityException = t0;
    },
    SassNumber_plus_closure0: function SassNumber_plus_closure0() {
    },
    SassNumber_minus_closure0: function SassNumber_minus_closure0() {
    },
    SassNumber_multiplyUnits_closure11: function SassNumber_multiplyUnits_closure11(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure12: function SassNumber_multiplyUnits_closure12(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure13: function SassNumber_multiplyUnits_closure13(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure14: function SassNumber_multiplyUnits_closure14(t0) {
      this._0_3 = t0;
    },
    SassNumber_multiplyUnits_closure15: function SassNumber_multiplyUnits_closure15(t0) {
      this._0_0 = t0;
    },
    SassNumber_multiplyUnits_closure16: function SassNumber_multiplyUnits_closure16(t0) {
      this._0_7 = t0;
    },
    SassNumber_multiplyUnits_closure17: function SassNumber_multiplyUnits_closure17(t0) {
      this._0_1 = t0;
    },
    SassNumber_multiplyUnits_closure18: function SassNumber_multiplyUnits_closure18(t0) {
      this._0_2 = t0;
    },
    SassNumber_multiplyUnits_closure19: function SassNumber_multiplyUnits_closure19(t0, t1) {
      this._box_0 = t0;
      this.numerator = t1;
    },
    SassNumber_multiplyUnits_closure20: function SassNumber_multiplyUnits_closure20(t0, t1) {
      this.newNumerators = t0;
      this.numerator = t1;
    },
    SassNumber_multiplyUnits_closure21: function SassNumber_multiplyUnits_closure21(t0, t1) {
      this._box_0 = t0;
      this.numerator = t1;
    },
    SassNumber_multiplyUnits_closure22: function SassNumber_multiplyUnits_closure22(t0, t1) {
      this.newNumerators = t0;
      this.numerator = t1;
    },
    SassNumber__areAnyConvertible_closure0: function SassNumber__areAnyConvertible_closure0(t0) {
      this.units2 = t0;
    },
    SassNumber__unitString_closure3: function SassNumber__unitString_closure3(t0) {
      this._0_0 = t0;
    },
    SassNumber__unitString_closure4: function SassNumber__unitString_closure4(t0) {
      this._0_0 = t0;
    },
    SassNumber__unitString_closure5: function SassNumber__unitString_closure5(t0) {
      this._0_5 = t0;
    },
    SassNumber__unitString_closure6: function SassNumber__unitString_closure6(t0) {
      this._0_6 = t0;
    },
    SassNumber__canonicalizeUnitList_closure0: function SassNumber__canonicalizeUnitList_closure0() {
    },
    SassNumber__canonicalMultiplier_closure0: function SassNumber__canonicalMultiplier_closure0(t0) {
      this.$this = t0;
    },
    SassNumber_unitSuggestion_closure1: function SassNumber_unitSuggestion_closure1() {
    },
    SassNumber_unitSuggestion_closure2: function SassNumber_unitSuggestion_closure2() {
    },
    SupportsOperation$0(left, right, operator, span) {
      var lowerOperator = operator.toLowerCase();
      if (lowerOperator !== "and" && lowerOperator !== "or")
        A.throwExpression(A.ArgumentError$value(operator, "operator", 'may only be "and" or "or".'));
      return new A.SupportsOperation0(left, right, operator, span);
    },
    SupportsOperation0: function SupportsOperation0(t0, t1, t2, t3) {
      var _ = this;
      _.left = t0;
      _.right = t1;
      _.operator = t2;
      _.span = t3;
    },
    ParentSelector0: function ParentSelector0(t0, t1) {
      this.suffix = t0;
      this.span = t1;
    },
    ParentStatement0: function ParentStatement0() {
    },
    ParentStatement_closure0: function ParentStatement_closure0() {
    },
    ParentStatement__closure0: function ParentStatement__closure0() {
    },
    ParenthesizedExpression0: function ParenthesizedExpression0(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    Parser_isIdentifier0(text) {
      var t1, t2, exception, logger = null;
      try {
        t1 = logger;
        t2 = A.SpanScanner$(text, null);
        new A.Parser1(t2, t1 == null ? B.StderrLogger_false0 : t1, null)._parser0$_parseIdentifier$0();
        return true;
      } catch (exception) {
        if (type$.SassFormatException_2._is(A.unwrapException(exception)))
          return false;
        else
          throw exception;
      }
    },
    Parser1: function Parser1(t0, t1, t2) {
      this.scanner = t0;
      this.logger = t1;
      this._parser0$_interpolationMap = t2;
    },
    Parser__parseIdentifier_closure0: function Parser__parseIdentifier_closure0(t0) {
      this.$this = t0;
    },
    Parser_escape_closure0: function Parser_escape_closure0() {
    },
    Parser_scanIdentChar_matches0: function Parser_scanIdentChar_matches0(t0, t1) {
      this.caseSensitive = t0;
      this.char = t1;
    },
    Parser_spanFrom_closure0: function Parser_spanFrom_closure0(t0, t1) {
      this.$this = t0;
      this.span = t1;
    },
    PlaceholderSelector0: function PlaceholderSelector0(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    PlainCssCallable0: function PlainCssCallable0(t0) {
      this.name = t0;
    },
    PrefixedMapView0: function PrefixedMapView0(t0, t1, t2) {
      this._prefixed_map_view0$_map = t0;
      this._prefixed_map_view0$_prefix = t1;
      this.$ti = t2;
    },
    _PrefixedKeys0: function _PrefixedKeys0(t0) {
      this._prefixed_map_view0$_view = t0;
    },
    _PrefixedKeys_iterator_closure0: function _PrefixedKeys_iterator_closure0(t0) {
      this.$this = t0;
    },
    PseudoSelector$0($name, span, argument, element, selector) {
      var t1 = !element,
        t2 = t1 && !A.PseudoSelector__isFakePseudoElement0($name);
      return new A.PseudoSelector0($name, A.unvendor0($name), t2, t1, argument, selector, span);
    },
    PseudoSelector__isFakePseudoElement0($name) {
      switch ($name.charCodeAt(0)) {
        case 97:
        case 65:
          return A.equalsIgnoreCase0($name, "after");
        case 98:
        case 66:
          return A.equalsIgnoreCase0($name, "before");
        case 102:
        case 70:
          return A.equalsIgnoreCase0($name, "first-line") || A.equalsIgnoreCase0($name, "first-letter");
        default:
          return false;
      }
    },
    PseudoSelector0: function PseudoSelector0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _.name = t0;
      _.normalizedName = t1;
      _.isClass = t2;
      _.isSyntacticClass = t3;
      _.argument = t4;
      _.selector = t5;
      _._pseudo$__PseudoSelector_specificity_FI = $;
      _.span = t6;
    },
    PseudoSelector_specificity_closure0: function PseudoSelector_specificity_closure0(t0) {
      this.$this = t0;
    },
    PseudoSelector_specificity__closure1: function PseudoSelector_specificity__closure1() {
    },
    PseudoSelector_specificity__closure2: function PseudoSelector_specificity__closure2() {
    },
    PseudoSelector_unify_closure0: function PseudoSelector_unify_closure0() {
    },
    PublicMemberMapView0: function PublicMemberMapView0(t0, t1) {
      this._public_member_map_view0$_inner = t0;
      this.$ti = t1;
    },
    QualifiedName0: function QualifiedName0(t0, t1) {
      this.name = t0;
      this.namespace = t1;
    },
    createJSClass($name, $constructor) {
      return type$.JSClass._as(A.allowInteropCaptureThisNamed($name, $constructor));
    },
    JSClassExtension_injectSuperclass(_this, superclass) {
      var t1 = J.getInterceptor$x(superclass),
        t2 = J.getInterceptor$x(_this);
      self.Object.setPrototypeOf(t1.get$$prototype(superclass), J.get$$prototype$x(type$.JSClass._as(self.Object.getPrototypeOf(t2.get$$prototype(_this)).constructor)));
      self.Object.setPrototypeOf(t2.get$$prototype(_this), self.Object.create(t1.get$$prototype(superclass)));
    },
    JSClassExtension_setCustomInspect(_this, inspect) {
      if (self.util == null)
        return;
      J.get$$prototype$x(_this)[self.util.inspect.custom] = A.allowInteropCaptureThis(new A.JSClassExtension_setCustomInspect_closure(inspect));
    },
    JSClassExtension_get_defineStaticMethod(_this) {
      return new A.JSClassExtension_get_defineStaticMethod_closure(_this);
    },
    JSClassExtension_get_defineMethod(_this) {
      return new A.JSClassExtension_get_defineMethod_closure(_this);
    },
    JSClassExtension_defineMethods(_this, methods) {
      methods.forEach$1(0, A.JSClassExtension_get_defineMethod(_this));
    },
    JSClassExtension_get_defineGetter(_this) {
      return new A.JSClassExtension_get_defineGetter_closure(_this);
    },
    JSClass0: function JSClass0() {
    },
    JSClassExtension_setCustomInspect_closure: function JSClassExtension_setCustomInspect_closure(t0) {
      this.inspect = t0;
    },
    JSClassExtension_get_defineStaticMethod_closure: function JSClassExtension_get_defineStaticMethod_closure(t0) {
      this._this = t0;
    },
    JSClassExtension_get_defineMethod_closure: function JSClassExtension_get_defineMethod_closure(t0) {
      this._this = t0;
    },
    JSClassExtension_get_defineGetter_closure: function JSClassExtension_get_defineGetter_closure(t0) {
      this._this = t0;
    },
    RenderContext0: function RenderContext0() {
    },
    RenderContextOptions0: function RenderContextOptions0() {
    },
    RenderContextResult0: function RenderContextResult0() {
    },
    RenderContextResultStats0: function RenderContextResultStats0() {
    },
    RenderOptions: function RenderOptions() {
    },
    RenderResult: function RenderResult() {
    },
    RenderResultStats: function RenderResultStats() {
    },
    ReplaceExpressionVisitor0: function ReplaceExpressionVisitor0() {
    },
    ReplaceExpressionVisitor_visitListExpression_closure0: function ReplaceExpressionVisitor_visitListExpression_closure0(t0) {
      this.$this = t0;
    },
    ReplaceExpressionVisitor_visitArgumentInvocation_closure0: function ReplaceExpressionVisitor_visitArgumentInvocation_closure0(t0) {
      this.$this = t0;
    },
    ReplaceExpressionVisitor_visitInterpolation_closure0: function ReplaceExpressionVisitor_visitInterpolation_closure0(t0) {
      this.$this = t0;
    },
    ImporterResult$(contents, sourceMapUrl, syntax) {
      if ((sourceMapUrl == null ? null : sourceMapUrl.get$scheme()) === "")
        A.throwExpression(A.ArgumentError$value(sourceMapUrl, "sourceMapUrl", "must be absolute"));
      return new A.ImporterResult0(contents, sourceMapUrl, syntax);
    },
    ImporterResult0: function ImporterResult0(t0, t1, t2) {
      this.contents = t0;
      this._result$_sourceMapUrl = t1;
      this.syntax = t2;
    },
    ReturnRule0: function ReturnRule0(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    SassParser0: function SassParser0(t0, t1, t2, t3) {
      var _ = this;
      _._sass0$_currentIndentation = 0;
      _._sass0$_spaces = _._sass0$_nextIndentationEnd = _._sass0$_nextIndentation = null;
      _._stylesheet0$_isUseAllowed = true;
      _._stylesheet0$_inParentheses = _._stylesheet0$_inStyleRule = _._stylesheet0$_inUnknownAtRule = _._stylesheet0$_inControlDirective = _._stylesheet0$_inContentBlock = _._stylesheet0$_inMixin = false;
      _._stylesheet0$_globalVariables = t0;
      _.lastSilentComment = null;
      _.scanner = t1;
      _.logger = t2;
      _._parser0$_interpolationMap = t3;
    },
    SassParser_styleRuleSelector_closure0: function SassParser_styleRuleSelector_closure0() {
    },
    SassParser_children_closure0: function SassParser_children_closure0(t0, t1, t2) {
      this.$this = t0;
      this.child = t1;
      this.children = t2;
    },
    SassParser__peekIndentation_closure1: function SassParser__peekIndentation_closure1() {
    },
    SassParser__peekIndentation_closure2: function SassParser__peekIndentation_closure2() {
    },
    _translateReturnValue(val) {
      if (val instanceof A._Future)
        return A.futureToPromise(val, type$.dynamic);
      else
        return val;
    },
    main2() {
      new Uint8Array(0);
      A.main();
      J.set$cli_pkg_main_0_$x(self.exports, A._wrapMain(A.sass__main$closure()));
    },
    _wrapMain(main) {
      if (type$.dynamic_Function._is(main))
        return A.allowInterop(new A._wrapMain_closure(main));
      else
        return A.allowInterop(new A._wrapMain_closure0(main));
    },
    _Exports: function _Exports() {
    },
    _wrapMain_closure: function _wrapMain_closure(t0) {
      this.main = t0;
    },
    _wrapMain_closure0: function _wrapMain_closure0(t0) {
      this.main = t0;
    },
    ScssParser$0(contents, logger, url) {
      var t1 = A.SpanScanner$(contents, url),
        t2 = logger == null ? B.StderrLogger_false0 : logger;
      return new A.ScssParser0(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.VariableDeclaration_2), t1, t2, null);
    },
    ScssParser0: function ScssParser0(t0, t1, t2, t3) {
      var _ = this;
      _._stylesheet0$_isUseAllowed = true;
      _._stylesheet0$_inParentheses = _._stylesheet0$_inStyleRule = _._stylesheet0$_inUnknownAtRule = _._stylesheet0$_inControlDirective = _._stylesheet0$_inContentBlock = _._stylesheet0$_inMixin = false;
      _._stylesheet0$_globalVariables = t0;
      _.lastSilentComment = null;
      _.scanner = t1;
      _.logger = t2;
      _._parser0$_interpolationMap = t3;
    },
    Selector0: function Selector0() {
    },
    _IsInvisibleVisitor2: function _IsInvisibleVisitor2(t0) {
      this.includeBogus = t0;
    },
    _IsBogusVisitor0: function _IsBogusVisitor0(t0) {
      this.includeLeadingCombinator = t0;
    },
    _IsBogusVisitor_visitComplexSelector_closure0: function _IsBogusVisitor_visitComplexSelector_closure0(t0) {
      this.$this = t0;
    },
    _IsUselessVisitor0: function _IsUselessVisitor0() {
    },
    _IsUselessVisitor_visitComplexSelector_closure0: function _IsUselessVisitor_visitComplexSelector_closure0(t0) {
      this.$this = t0;
    },
    __IsBogusVisitor_Object_AnySelectorVisitor0: function __IsBogusVisitor_Object_AnySelectorVisitor0() {
    },
    __IsInvisibleVisitor_Object_AnySelectorVisitor0: function __IsInvisibleVisitor_Object_AnySelectorVisitor0() {
    },
    __IsUselessVisitor_Object_AnySelectorVisitor0: function __IsUselessVisitor_Object_AnySelectorVisitor0() {
    },
    SelectorExpression0: function SelectorExpression0(t0) {
      this.span = t0;
    },
    _prependParent0(compound) {
      var t1, type, rest, _null = null,
        span = A.EvaluationContext_current0().get$currentCallableSpan(),
        _0_0 = compound.components,
        _0_3 = A._InitializedCell$(new A._prependParent_closure1(_0_0)),
        _0_4 = A._InitializedCell$(new A._prependParent_closure2(_0_0));
      $label0$0: {
        if (_0_3._readFinal$0() && _0_4._readFinal$0() instanceof A.UniversalSelector0) {
          t1 = _null;
          break $label0$0;
        }
        if (_0_3._readFinal$0())
          if (_0_4._readFinal$0() instanceof A.TypeSelector0)
            t1 = _0_4._readFinal$0().name.namespace != null;
          else
            t1 = false;
        else
          t1 = false;
        if (t1) {
          t1 = _null;
          break $label0$0;
        }
        if (_0_3._readFinal$0())
          if (_0_4._readFinal$0() instanceof A.TypeSelector0) {
            type = _0_4._readFinal$0();
            rest = B.JSArray_methods.sublist$1(_0_0, 1);
            t1 = true;
          } else {
            rest = _null;
            type = rest;
            t1 = false;
          }
        else {
          rest = _null;
          type = rest;
          t1 = false;
        }
        if (t1) {
          t1 = A._setArrayType([new A.ParentSelector0(type.name.name, span)], type$.JSArray_SimpleSelector_2);
          B.JSArray_methods.addAll$1(t1, rest);
          t1 = A.CompoundSelector$0(t1, span);
          break $label0$0;
        }
        t1 = A._setArrayType([new A.ParentSelector0(_null, span)], type$.JSArray_SimpleSelector_2);
        B.JSArray_methods.addAll$1(t1, _0_0);
        t1 = A.CompoundSelector$0(t1, span);
        break $label0$0;
      }
      return t1;
    },
    _function7($name, $arguments, callback) {
      return A.BuiltInCallable$function0($name, $arguments, callback, "sass:selector");
    },
    _nest_closure0: function _nest_closure0() {
    },
    _nest__closure1: function _nest__closure1(t0) {
      this._box_0 = t0;
    },
    _nest__closure2: function _nest__closure2() {
    },
    _append_closure1: function _append_closure1() {
    },
    _append__closure1: function _append__closure1() {
    },
    _append__closure2: function _append__closure2(t0) {
      this.span = t0;
    },
    _append___closure0: function _append___closure0(t0, t1) {
      this.parent = t0;
      this.span = t1;
    },
    _extend_closure0: function _extend_closure0() {
    },
    _replace_closure0: function _replace_closure0() {
    },
    _unify_closure0: function _unify_closure0() {
    },
    _isSuperselector_closure0: function _isSuperselector_closure0() {
    },
    _simpleSelectors_closure0: function _simpleSelectors_closure0() {
    },
    _simpleSelectors__closure0: function _simpleSelectors__closure0() {
    },
    _parse_closure0: function _parse_closure0() {
    },
    _prependParent_closure1: function _prependParent_closure1(t0) {
      this._0_0 = t0;
    },
    _prependParent_closure2: function _prependParent_closure2(t0) {
      this._0_0 = t0;
    },
    SelectorParser$0(contents, allowParent, allowPlaceholder, interpolationMap, logger, url) {
      var t1 = A.SpanScanner$(contents, url);
      return new A.SelectorParser0(allowParent, allowPlaceholder, t1, logger == null ? B.StderrLogger_false0 : logger, interpolationMap);
    },
    SelectorParser0: function SelectorParser0(t0, t1, t2, t3, t4) {
      var _ = this;
      _._selector$_allowParent = t0;
      _._selector$_allowPlaceholder = t1;
      _.scanner = t2;
      _.logger = t3;
      _._parser0$_interpolationMap = t4;
    },
    SelectorParser_parse_closure0: function SelectorParser_parse_closure0(t0) {
      this.$this = t0;
    },
    SelectorParser_parseCompoundSelector_closure0: function SelectorParser_parseCompoundSelector_closure0(t0) {
      this.$this = t0;
    },
    SelectorSearchVisitor0: function SelectorSearchVisitor0() {
    },
    SelectorSearchVisitor_visitComplexSelector_closure0: function SelectorSearchVisitor_visitComplexSelector_closure0(t0) {
      this.$this = t0;
    },
    SelectorSearchVisitor_visitCompoundSelector_closure0: function SelectorSearchVisitor_visitCompoundSelector_closure0(t0) {
      this.$this = t0;
    },
    serialize0(node, charset, indentWidth, inspect, lineFeed, sourceMap, style, useSpaces) {
      var t1, css, t2, prefix,
        visitor = A._SerializeVisitor$0(indentWidth == null ? 2 : indentWidth, inspect, lineFeed, true, sourceMap, style, useSpaces);
      node.accept$1(visitor);
      t1 = visitor._serialize0$_buffer;
      css = t1.toString$0(0);
      if (charset) {
        t2 = new A.CodeUnits(css);
        t2 = t2.any$1(t2, new A.serialize_closure0());
      } else
        t2 = false;
      if (t2)
        prefix = style === B.OutputStyle_10 ? "\ufeff" : '@charset "UTF-8";\n';
      else
        prefix = "";
      t1 = sourceMap ? t1.buildSourceMap$1$prefix(prefix) : null;
      return new A._Record_2_sourceMap(prefix + css, t1);
    },
    serializeValue0(value, inspect, quote) {
      var visitor = A._SerializeVisitor$0(null, inspect, null, quote, false, null, true);
      value.accept$1(visitor);
      return visitor._serialize0$_buffer.toString$0(0);
    },
    serializeSelector0(selector, inspect) {
      var visitor = A._SerializeVisitor$0(null, true, null, true, false, null, true);
      selector.accept$1(visitor);
      return visitor._serialize0$_buffer.toString$0(0);
    },
    _SerializeVisitor$0(indentWidth, inspect, lineFeed, quote, sourceMap, style, useSpaces) {
      var t1 = sourceMap ? new A.SourceMapBuffer0(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Entry)) : new A.NoSourceMapBuffer0(new A.StringBuffer("")),
        t2 = style == null ? B.OutputStyle_00 : style,
        t3 = useSpaces ? 32 : 9,
        t4 = indentWidth == null ? 2 : indentWidth,
        t5 = lineFeed == null ? B.LineFeed_SsD : lineFeed;
      A.RangeError_checkValueInInterval(t4, 0, 10, "indentWidth");
      return new A._SerializeVisitor0(t1, t2, inspect, quote, t3, t4, t5);
    },
    serialize_closure0: function serialize_closure0() {
    },
    _SerializeVisitor0: function _SerializeVisitor0(t0, t1, t2, t3, t4, t5, t6) {
      var _ = this;
      _._serialize0$_buffer = t0;
      _._serialize0$_indentation = 0;
      _._serialize0$_style = t1;
      _._serialize0$_inspect = t2;
      _._serialize0$_quote = t3;
      _._serialize0$_indentCharacter = t4;
      _._serialize0$_indentWidth = t5;
      _._lineFeed = t6;
    },
    _SerializeVisitor_visitCssComment_closure0: function _SerializeVisitor_visitCssComment_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssAtRule_closure0: function _SerializeVisitor_visitCssAtRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssMediaRule_closure0: function _SerializeVisitor_visitCssMediaRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssImport_closure0: function _SerializeVisitor_visitCssImport_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssImport__closure0: function _SerializeVisitor_visitCssImport__closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssKeyframeBlock_closure0: function _SerializeVisitor_visitCssKeyframeBlock_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssStyleRule_closure0: function _SerializeVisitor_visitCssStyleRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssSupportsRule_closure0: function _SerializeVisitor_visitCssSupportsRule_closure0(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssDeclaration_closure1: function _SerializeVisitor_visitCssDeclaration_closure1(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor_visitCssDeclaration_closure2: function _SerializeVisitor_visitCssDeclaration_closure2(t0, t1) {
      this.$this = t0;
      this.node = t1;
    },
    _SerializeVisitor__writeCalculationValue_closure0: function _SerializeVisitor__writeCalculationValue_closure0(t0) {
      this._2_0 = t0;
    },
    _SerializeVisitor_visitList_closure2: function _SerializeVisitor_visitList_closure2() {
    },
    _SerializeVisitor_visitList_closure3: function _SerializeVisitor_visitList_closure3(t0, t1) {
      this.$this = t0;
      this.value = t1;
    },
    _SerializeVisitor_visitList_closure4: function _SerializeVisitor_visitList_closure4(t0) {
      this.$this = t0;
    },
    _SerializeVisitor_visitMap_closure0: function _SerializeVisitor_visitMap_closure0(t0) {
      this.$this = t0;
    },
    _SerializeVisitor__visitQuotedString_closure1: function _SerializeVisitor__visitQuotedString_closure1(t0) {
      this._1_0 = t0;
    },
    _SerializeVisitor__visitQuotedString_closure2: function _SerializeVisitor__visitQuotedString_closure2(t0) {
      this._1_0 = t0;
    },
    _SerializeVisitor_visitSelectorList_closure0: function _SerializeVisitor_visitSelectorList_closure0() {
    },
    _SerializeVisitor_visitPseudoSelector_closure0: function _SerializeVisitor_visitPseudoSelector_closure0(t0) {
      this._0_0 = t0;
    },
    _SerializeVisitor__write_closure0: function _SerializeVisitor__write_closure0(t0, t1) {
      this.$this = t0;
      this.value = t1;
    },
    _SerializeVisitor__visitChildren_closure1: function _SerializeVisitor__visitChildren_closure1(t0, t1) {
      this.$this = t0;
      this.child = t1;
    },
    _SerializeVisitor__visitChildren_closure2: function _SerializeVisitor__visitChildren_closure2(t0, t1) {
      this.$this = t0;
      this.child = t1;
    },
    OutputStyle0: function OutputStyle0(t0) {
      this._name = t0;
    },
    LineFeed0: function LineFeed0(t0, t1, t2) {
      this.name = t0;
      this.text = t1;
      this._name = t2;
    },
    ShadowedModuleView_ifNecessary0(inner, functions, mixins, variables, $T) {
      return A.ShadowedModuleView__needsBlocklist0(inner.get$variables(), variables) || A.ShadowedModuleView__needsBlocklist0(inner.get$functions(inner), functions) || A.ShadowedModuleView__needsBlocklist0(inner.get$mixins(), mixins) ? new A.ShadowedModuleView0(inner, A.ShadowedModuleView__shadowedMap0(inner.get$variables(), variables, type$.Value_2), A.ShadowedModuleView__shadowedMap0(inner.get$variableNodes(), variables, type$.AstNode_2), A.ShadowedModuleView__shadowedMap0(inner.get$functions(inner), functions, $T), A.ShadowedModuleView__shadowedMap0(inner.get$mixins(), mixins, $T), $T._eval$1("ShadowedModuleView0<0>")) : null;
    },
    ShadowedModuleView__shadowedMap0(map, blocklist, $V) {
      var t1 = A.ShadowedModuleView__needsBlocklist0(map, blocklist);
      return !t1 ? map : A.LimitedMapView$blocklist0(map, blocklist, type$.String, $V);
    },
    ShadowedModuleView__needsBlocklist0(map, blocklist) {
      return map.get$isNotEmpty(map) && blocklist.any$1(0, map.get$containsKey());
    },
    ShadowedModuleView0: function ShadowedModuleView0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._shadowed_view0$_inner = t0;
      _.variables = t1;
      _.variableNodes = t2;
      _.functions = t3;
      _.mixins = t4;
      _.$ti = t5;
    },
    SilentComment0: function SilentComment0(t0, t1) {
      this.text = t0;
      this.span = t1;
    },
    SimpleSelector0: function SimpleSelector0() {
    },
    SimpleSelector_isSuperselector_closure0: function SimpleSelector_isSuperselector_closure0(t0) {
      this.$this = t0;
    },
    SimpleSelector_isSuperselector__closure0: function SimpleSelector_isSuperselector__closure0(t0) {
      this.$this = t0;
    },
    SingleUnitSassNumber0: function SingleUnitSassNumber0(t0, t1, t2) {
      var _ = this;
      _._single_unit$_unit = t0;
      _._number1$_value = t1;
      _.hashCache = null;
      _.asSlash = t2;
    },
    SingleUnitSassNumber__coerceToUnit_closure0: function SingleUnitSassNumber__coerceToUnit_closure0(t0, t1) {
      this.$this = t0;
      this.unit = t1;
    },
    SingleUnitSassNumber__coerceValueToUnit_closure0: function SingleUnitSassNumber__coerceValueToUnit_closure0(t0) {
      this.$this = t0;
    },
    SingleUnitSassNumber_multiplyUnits_closure1: function SingleUnitSassNumber_multiplyUnits_closure1(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    SingleUnitSassNumber_multiplyUnits_closure2: function SingleUnitSassNumber_multiplyUnits_closure2(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    SourceMapBuffer0: function SourceMapBuffer0(t0, t1) {
      var _ = this;
      _._source_map_buffer0$_buffer = t0;
      _._source_map_buffer0$_entries = t1;
      _._source_map_buffer0$_column = _._source_map_buffer0$_line = 0;
      _._source_map_buffer0$_inSpan = false;
    },
    SourceMapBuffer_buildSourceMap_closure0: function SourceMapBuffer_buildSourceMap_closure0(t0, t1) {
      this._box_0 = t0;
      this.prefixLength = t1;
    },
    updateSourceSpanPrototype() {
      var t3, t4, _i, t5,
        span = A.SourceFile$fromString("", null).span$1(0, 0),
        t1 = type$.SourceSpan,
        t2 = type$.String;
      for (t1 = [span, new A.MultiSpan0(span, "", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_empty(t1, t2), t1, t2))], t3 = type$.JSClass, t4 = type$.Function, _i = 0; _i < 2; ++_i) {
        t5 = t3._as(t1[_i].constructor);
        A.LinkedHashMap_LinkedHashMap$_literal(["start", new A.updateSourceSpanPrototype_closure(), "end", new A.updateSourceSpanPrototype_closure0(), "url", new A.updateSourceSpanPrototype_closure1(), "text", new A.updateSourceSpanPrototype_closure2(), "context", new A.updateSourceSpanPrototype_closure3()], t2, t4).forEach$1(0, A.JSClassExtension_get_defineGetter(t5));
      }
      t1 = t3._as(A.FileLocation$_(span.file, span._file$_start).constructor);
      A.LinkedHashMap_LinkedHashMap$_literal(["line", new A.updateSourceSpanPrototype_closure4(), "column", new A.updateSourceSpanPrototype_closure5()], t2, t4).forEach$1(0, A.JSClassExtension_get_defineGetter(t1));
    },
    updateSourceSpanPrototype_closure: function updateSourceSpanPrototype_closure() {
    },
    updateSourceSpanPrototype_closure0: function updateSourceSpanPrototype_closure0() {
    },
    updateSourceSpanPrototype_closure1: function updateSourceSpanPrototype_closure1() {
    },
    updateSourceSpanPrototype_closure2: function updateSourceSpanPrototype_closure2() {
    },
    updateSourceSpanPrototype_closure3: function updateSourceSpanPrototype_closure3() {
    },
    updateSourceSpanPrototype_closure4: function updateSourceSpanPrototype_closure4() {
    },
    updateSourceSpanPrototype_closure5: function updateSourceSpanPrototype_closure5() {
    },
    StatementSearchVisitor0: function StatementSearchVisitor0() {
    },
    StatementSearchVisitor_visitIfRule_closure1: function StatementSearchVisitor_visitIfRule_closure1(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitIfRule__closure2: function StatementSearchVisitor_visitIfRule__closure2(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitIfRule_closure2: function StatementSearchVisitor_visitIfRule_closure2(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitIfRule__closure1: function StatementSearchVisitor_visitIfRule__closure1(t0) {
      this.$this = t0;
    },
    StatementSearchVisitor_visitChildren_closure0: function StatementSearchVisitor_visitChildren_closure0(t0) {
      this.$this = t0;
    },
    StaticImport0: function StaticImport0(t0, t1, t2) {
      this.url = t0;
      this.modifiers = t1;
      this.span = t2;
    },
    StderrLogger0: function StderrLogger0(t0) {
      this.color = t0;
    },
    StringExpression_quoteText0(text) {
      var t1,
        quote = A.StringExpression__bestQuote0(A._setArrayType([text], type$.JSArray_String)),
        buffer = new A.StringBuffer("");
      buffer._contents = "" + A.Primitives_stringFromCharCode(quote);
      A.StringExpression__quoteInnerText0(text, quote, buffer, true);
      t1 = buffer._contents += A.Primitives_stringFromCharCode(quote);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    StringExpression__quoteInnerText0(text, quote, buffer, $static) {
      var t1, t2, i, _1_0, _0_0, t3, t4;
      for (t1 = text.length, t2 = t1 - 1, i = 0; i < t1; ++i) {
        _1_0 = text.charCodeAt(i);
        if (_1_0 === 10 || _1_0 === 13 || _1_0 === 12) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(97);
          if (i !== t2) {
            _0_0 = text.charCodeAt(i + 1);
            if (!(_0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12))
              if (!(_0_0 >= 48 && _0_0 <= 57))
                if (!(_0_0 >= 97 && _0_0 <= 102))
                  t3 = _0_0 >= 65 && _0_0 <= 70;
                else
                  t3 = true;
              else
                t3 = true;
            else
              t3 = true;
            if (t3)
              buffer.writeCharCode$1(32);
          }
          continue;
        }
        if (92 === _1_0) {
          t3 = _1_0;
          t4 = true;
        } else {
          t3 = null;
          t4 = false;
        }
        if (!t4) {
          if (_1_0 === quote) {
            t3 = _1_0;
            t4 = true;
          } else
            t4 = false;
          if (!t4)
            if (35 === _1_0)
              if ($static)
                if (i < t2)
                  if (text.charCodeAt(i + 1) === 123) {
                    t3 = _1_0;
                    t4 = true;
                  } else
                    t4 = false;
                else
                  t4 = false;
              else
                t4 = false;
            else
              t4 = false;
          else
            t4 = true;
        } else
          t4 = true;
        if (t4) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(t3);
          continue;
        }
        buffer.writeCharCode$1(_1_0);
      }
    },
    StringExpression__bestQuote0(strings) {
      var t1, containsDoubleQuote, t2, t3, t4;
      for (t1 = J.get$iterator$ax(strings), containsDoubleQuote = false; t1.moveNext$0();)
        for (t2 = new A.CodeUnits(t1.get$current(t1)), t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
          t4 = t2.__internal$_current;
          if (t4 == null)
            t4 = t3._as(t4);
          if (t4 === 39)
            return 34;
          if (t4 === 34)
            containsDoubleQuote = true;
        }
      return containsDoubleQuote ? 39 : 34;
    },
    StringExpression0: function StringExpression0(t0, t1) {
      this.text = t0;
      this.hasQuotes = t1;
    },
    _codepointForIndex0(index, lengthInCodepoints, allowNegative) {
      var result;
      if (index === 0)
        return 0;
      if (index > 0)
        return Math.min(index - 1, lengthInCodepoints);
      result = lengthInCodepoints + index;
      if (result < 0 && !allowNegative)
        return 0;
      return result;
    },
    _function6($name, $arguments, callback) {
      return A.BuiltInCallable$function0($name, $arguments, callback, "sass:string");
    },
    module_closure10: function module_closure10() {
    },
    module__closure2: function module__closure2(t0) {
      this.string = t0;
    },
    module__closure3: function module__closure3(t0) {
      this.string = t0;
    },
    _unquote_closure0: function _unquote_closure0() {
    },
    _quote_closure0: function _quote_closure0() {
    },
    _length_closure1: function _length_closure1() {
    },
    _insert_closure0: function _insert_closure0() {
    },
    _index_closure1: function _index_closure1() {
    },
    _slice_closure0: function _slice_closure0() {
    },
    _toUpperCase_closure0: function _toUpperCase_closure0() {
    },
    _toLowerCase_closure0: function _toLowerCase_closure0() {
    },
    _uniqueId_closure0: function _uniqueId_closure0() {
    },
    stringClass_closure: function stringClass_closure() {
    },
    stringClass__closure: function stringClass__closure() {
    },
    stringClass__closure0: function stringClass__closure0() {
    },
    stringClass__closure1: function stringClass__closure1() {
    },
    stringClass__closure2: function stringClass__closure2() {
    },
    stringClass__closure3: function stringClass__closure3() {
    },
    _ConstructorOptions1: function _ConstructorOptions1() {
    },
    _NodeSassString: function _NodeSassString() {
    },
    legacyStringClass_closure: function legacyStringClass_closure() {
    },
    legacyStringClass_closure0: function legacyStringClass_closure0() {
    },
    legacyStringClass_closure1: function legacyStringClass_closure1() {
    },
    SassString$0(_text, quotes) {
      return new A.SassString0(_text, quotes);
    },
    SassString0: function SassString0(t0, t1) {
      var _ = this;
      _._string0$_text = t0;
      _._string0$_hasQuotes = t1;
      _._string0$__SassString__sassLength_FI = $;
      _._string0$_hashCache = null;
    },
    ModifiableCssStyleRule$0(_selector, span, originalSelector) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
      return new A.ModifiableCssStyleRule0(_selector, originalSelector, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode_2), t1);
    },
    ModifiableCssStyleRule0: function ModifiableCssStyleRule0(t0, t1, t2, t3, t4) {
      var _ = this;
      _._style_rule0$_selector = t0;
      _.originalSelector = t1;
      _.span = t2;
      _.children = t3;
      _._node$_children = t4;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    StyleRule$0(selector, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.StyleRule0(selector, span, t1, t2);
    },
    StyleRule0: function StyleRule0(t0, t1, t2, t3) {
      var _ = this;
      _.selector = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    CssStylesheet0: function CssStylesheet0(t0, t1) {
      this.children = t0;
      this.span = t1;
    },
    ModifiableCssStylesheet$0(span) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
      return new A.ModifiableCssStylesheet0(span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode_2), t1);
    },
    ModifiableCssStylesheet0: function ModifiableCssStylesheet0(t0, t1, t2) {
      var _ = this;
      _.span = t0;
      _.children = t1;
      _._node$_children = t2;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    StylesheetParser0: function StylesheetParser0() {
    },
    StylesheetParser_parse_closure0: function StylesheetParser_parse_closure0(t0) {
      this.$this = t0;
    },
    StylesheetParser_parse__closure1: function StylesheetParser_parse__closure1(t0) {
      this.$this = t0;
    },
    StylesheetParser_parse__closure2: function StylesheetParser_parse__closure2() {
    },
    StylesheetParser_parseArgumentDeclaration_closure0: function StylesheetParser_parseArgumentDeclaration_closure0(t0) {
      this.$this = t0;
    },
    StylesheetParser__parseSingleProduction_closure0: function StylesheetParser__parseSingleProduction_closure0(t0, t1, t2) {
      this.$this = t0;
      this.production = t1;
      this.T = t2;
    },
    StylesheetParser_parseSignature_closure: function StylesheetParser_parseSignature_closure(t0, t1) {
      this.$this = t0;
      this.requireParens = t1;
    },
    StylesheetParser__statement_closure0: function StylesheetParser__statement_closure0(t0) {
      this.$this = t0;
    },
    StylesheetParser_variableDeclarationWithoutNamespace_closure1: function StylesheetParser_variableDeclarationWithoutNamespace_closure1(t0, t1) {
      this.$this = t0;
      this.start = t1;
    },
    StylesheetParser_variableDeclarationWithoutNamespace_closure2: function StylesheetParser_variableDeclarationWithoutNamespace_closure2(t0) {
      this.declaration = t0;
    },
    StylesheetParser__declarationOrBuffer_closure1: function StylesheetParser__declarationOrBuffer_closure1(t0) {
      this.name = t0;
    },
    StylesheetParser__declarationOrBuffer_closure2: function StylesheetParser__declarationOrBuffer_closure2(t0, t1) {
      this._box_0 = t0;
      this.name = t1;
    },
    StylesheetParser__styleRule_closure0: function StylesheetParser__styleRule_closure0(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.wasInStyleRule = t2;
      _.start = t3;
    },
    StylesheetParser__propertyOrVariableDeclaration_closure1: function StylesheetParser__propertyOrVariableDeclaration_closure1(t0) {
      this._box_0 = t0;
    },
    StylesheetParser__propertyOrVariableDeclaration_closure2: function StylesheetParser__propertyOrVariableDeclaration_closure2(t0, t1) {
      this._box_0 = t0;
      this.value = t1;
    },
    StylesheetParser__atRootRule_closure1: function StylesheetParser__atRootRule_closure1(t0) {
      this.query = t0;
    },
    StylesheetParser__atRootRule_closure2: function StylesheetParser__atRootRule_closure2() {
    },
    StylesheetParser__eachRule_closure0: function StylesheetParser__eachRule_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.wasInControlDirective = t1;
      _.variables = t2;
      _.list = t3;
    },
    StylesheetParser__functionRule_closure0: function StylesheetParser__functionRule_closure0(t0, t1, t2) {
      this.name = t0;
      this.$arguments = t1;
      this.precedingComment = t2;
    },
    StylesheetParser__forRule_closure1: function StylesheetParser__forRule_closure1(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    StylesheetParser__forRule_closure2: function StylesheetParser__forRule_closure2(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.wasInControlDirective = t2;
      _.variable = t3;
      _.from = t4;
      _.to = t5;
    },
    StylesheetParser__memberList_closure0: function StylesheetParser__memberList_closure0(t0, t1, t2) {
      this.$this = t0;
      this.variables = t1;
      this.identifiers = t2;
    },
    StylesheetParser__includeRule_closure0: function StylesheetParser__includeRule_closure0(t0) {
      this.contentArguments_ = t0;
    },
    StylesheetParser_mediaRule_closure0: function StylesheetParser_mediaRule_closure0(t0) {
      this.query = t0;
    },
    StylesheetParser__mixinRule_closure0: function StylesheetParser__mixinRule_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.$this = t0;
      _.name = t1;
      _.$arguments = t2;
      _.precedingComment = t3;
    },
    StylesheetParser_mozDocumentRule_closure0: function StylesheetParser_mozDocumentRule_closure0(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.name = t2;
      _.value = t3;
    },
    StylesheetParser_supportsRule_closure0: function StylesheetParser_supportsRule_closure0(t0) {
      this.condition = t0;
    },
    StylesheetParser__whileRule_closure0: function StylesheetParser__whileRule_closure0(t0, t1, t2) {
      this.$this = t0;
      this.wasInControlDirective = t1;
      this.condition = t2;
    },
    StylesheetParser_unknownAtRule_closure0: function StylesheetParser_unknownAtRule_closure0(t0, t1) {
      this._box_0 = t0;
      this.name = t1;
    },
    StylesheetParser__expression_resetState0: function StylesheetParser__expression_resetState0(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.start = t2;
    },
    StylesheetParser__expression_resolveOneOperation0: function StylesheetParser__expression_resolveOneOperation0(t0, t1) {
      this._box_0 = t0;
      this.$this = t1;
    },
    StylesheetParser__expression_resolveOperations0: function StylesheetParser__expression_resolveOperations0(t0, t1) {
      this._box_0 = t0;
      this.resolveOneOperation = t1;
    },
    StylesheetParser__expression_addSingleExpression0: function StylesheetParser__expression_addSingleExpression0(t0, t1, t2, t3) {
      var _ = this;
      _._box_0 = t0;
      _.$this = t1;
      _.resetState = t2;
      _.resolveOperations = t3;
    },
    StylesheetParser__expression_addOperator0: function StylesheetParser__expression_addOperator0(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.resolveOneOperation = t2;
    },
    StylesheetParser__expression_resolveSpaceExpressions0: function StylesheetParser__expression_resolveSpaceExpressions0(t0, t1, t2) {
      this._box_0 = t0;
      this.$this = t1;
      this.resolveOperations = t2;
    },
    StylesheetParser__expression_closure2: function StylesheetParser__expression_closure2(t0) {
      this._3_0 = t0;
    },
    StylesheetParser__expression_closure3: function StylesheetParser__expression_closure3(t0) {
      this._3_0 = t0;
    },
    StylesheetParser__expression_closure4: function StylesheetParser__expression_closure4(t0) {
      this._3_0 = t0;
    },
    StylesheetParser_expressionUntilComma_closure0: function StylesheetParser_expressionUntilComma_closure0(t0) {
      this.$this = t0;
    },
    StylesheetParser__isHexColor_closure1: function StylesheetParser__isHexColor_closure1(t0) {
      this._0_0 = t0;
    },
    StylesheetParser__isHexColor_closure2: function StylesheetParser__isHexColor_closure2() {
    },
    StylesheetParser__unicodeRange_closure1: function StylesheetParser__unicodeRange_closure1() {
    },
    StylesheetParser__unicodeRange_closure2: function StylesheetParser__unicodeRange_closure2() {
    },
    StylesheetParser_identifierLike_closure1: function StylesheetParser_identifierLike_closure1(t0) {
      this._2_0 = t0;
    },
    StylesheetParser_identifierLike_closure2: function StylesheetParser_identifierLike_closure2(t0) {
      this._2_0 = t0;
    },
    StylesheetParser_namespacedExpression_closure0: function StylesheetParser_namespacedExpression_closure0(t0, t1) {
      this.$this = t0;
      this.start = t1;
    },
    StylesheetParser_trySpecialFunction_closure0: function StylesheetParser_trySpecialFunction_closure0() {
    },
    StylesheetParser__tryUrlContents_closure0: function StylesheetParser__tryUrlContents_closure0(t0) {
      this._0_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure4: function StylesheetParser__interpolatedDeclarationValue_closure4(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure5: function StylesheetParser__interpolatedDeclarationValue_closure5(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure6: function StylesheetParser__interpolatedDeclarationValue_closure6(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure7: function StylesheetParser__interpolatedDeclarationValue_closure7(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__interpolatedDeclarationValue_closure8: function StylesheetParser__interpolatedDeclarationValue_closure8(t0) {
      this._1_0 = t0;
    },
    StylesheetParser__expressionUntilComparison_closure0: function StylesheetParser__expressionUntilComparison_closure0(t0) {
      this.$this = t0;
    },
    StylesheetParser__supportsConditionInParens_closure0: function StylesheetParser__supportsConditionInParens_closure0(t0) {
      this._0_0 = t0;
    },
    StylesheetParser__publicIdentifier_closure0: function StylesheetParser__publicIdentifier_closure0(t0, t1) {
      this.$this = t0;
      this.start = t1;
    },
    Stylesheet$internal0(children, span, plainCss) {
      var t1 = A._setArrayType([], type$.JSArray_UseRule_2),
        t2 = A._setArrayType([], type$.JSArray_ForwardRule_2),
        t3 = A.List_List$unmodifiable(children, type$.Statement_2),
        t4 = B.JSArray_methods.any$1(t3, new A.ParentStatement_closure0());
      t1 = new A.Stylesheet0(span, plainCss, t1, t2, t3, t4);
      t1.Stylesheet$internal$3$plainCss0(children, span, plainCss);
      return t1;
    },
    Stylesheet_Stylesheet$parse0(contents, syntax, logger, url) {
      var error, stackTrace, url0, t1, exception, t2;
      try {
        switch (syntax) {
          case B.Syntax_Sass_sass0:
            t1 = A.SpanScanner$(contents, url);
            t1 = new A.SassParser0(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.VariableDeclaration_2), t1, logger, null).parse$0();
            return t1;
          case B.Syntax_SCSS_scss0:
            t1 = A.ScssParser$0(contents, logger, url).parse$0();
            return t1;
          case B.Syntax_CSS_css0:
            t1 = A.SpanScanner$(contents, url);
            t1 = new A.CssParser0(A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.VariableDeclaration_2), t1, logger, null).parse$0();
            return t1;
          default:
            t1 = A.ArgumentError$("Unknown syntax " + syntax.toString$0(0) + ".", null);
            throw A.wrapException(t1);
        }
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error;
          t2 = J.getInterceptor$z(t1);
          t1 = A.SourceSpanException.prototype.get$span.call(t2, t1);
          url0 = t1.get$sourceUrl(t1);
          if (url0 == null || J.toString$0$(url0) === "stdin")
            throw exception;
          t1 = type$.Uri;
          throw A.wrapException(A.throwWithTrace0(error.withLoadedUrls$1(A.Set_Set$unmodifiable(A.LinkedHashSet_LinkedHashSet$_literal([url0], t1), t1)), error, stackTrace));
        } else
          throw exception;
      }
    },
    Stylesheet0: function Stylesheet0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.span = t0;
      _.plainCss = t1;
      _._stylesheet1$_uses = t2;
      _._stylesheet1$_forwards = t3;
      _.children = t4;
      _.hasDeclarations = t5;
    },
    SupportsExpression0: function SupportsExpression0(t0) {
      this.condition = t0;
    },
    ModifiableCssSupportsRule$0(condition, span) {
      var t1 = A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
      return new A.ModifiableCssSupportsRule0(condition, span, new A.UnmodifiableListView(t1, type$.UnmodifiableListView_ModifiableCssNode_2), t1);
    },
    ModifiableCssSupportsRule0: function ModifiableCssSupportsRule0(t0, t1, t2, t3) {
      var _ = this;
      _.condition = t0;
      _.span = t1;
      _.children = t2;
      _._node$_children = t3;
      _._node$_indexInParent = _._node$_parent = null;
      _.isGroupEnd = false;
    },
    SupportsRule$0(condition, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.SupportsRule0(condition, span, t1, t2);
    },
    SupportsRule0: function SupportsRule0(t0, t1, t2, t3) {
      var _ = this;
      _.condition = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    JSToDartImporter: function JSToDartImporter(t0, t1, t2) {
      this._sync$_canonicalize = t0;
      this._sync$_load = t1;
      this._sync$_nonCanonicalSchemes = t2;
    },
    JSToDartImporter_canonicalize_closure: function JSToDartImporter_canonicalize_closure(t0, t1) {
      this.$this = t0;
      this.url = t1;
    },
    JSToDartImporter_load_closure: function JSToDartImporter_load_closure(t0, t1) {
      this.$this = t0;
      this.url = t1;
    },
    Syntax_forPath0(path) {
      var t1,
        _0_0 = A.ParsedPath_ParsedPath$parse(path, $.$get$context().style)._splitExtension$1(1)[1];
      $label0$0: {
        if (".sass" === _0_0) {
          t1 = B.Syntax_Sass_sass0;
          break $label0$0;
        }
        if (".css" === _0_0) {
          t1 = B.Syntax_CSS_css0;
          break $label0$0;
        }
        t1 = B.Syntax_SCSS_scss0;
        break $label0$0;
      }
      return t1;
    },
    Syntax0: function Syntax0(t0, t1) {
      this._syntax0$_name = t0;
      this._name = t1;
    },
    TypeSelector0: function TypeSelector0(t0, t1) {
      this.name = t0;
      this.span = t1;
    },
    Types: function Types() {
    },
    UnaryOperationExpression0: function UnaryOperationExpression0(t0, t1, t2) {
      this.operator = t0;
      this.operand = t1;
      this.span = t2;
    },
    UnaryOperator0: function UnaryOperator0(t0, t1, t2) {
      this.name = t0;
      this.operator = t1;
      this._name = t2;
    },
    UnitlessSassNumber0: function UnitlessSassNumber0(t0, t1) {
      this._number1$_value = t0;
      this.hashCache = null;
      this.asSlash = t1;
    },
    UniversalSelector0: function UniversalSelector0(t0, t1) {
      this.namespace = t0;
      this.span = t1;
    },
    UniversalSelector_unify_closure1: function UniversalSelector_unify_closure1(t0) {
      this._0_0 = t0;
    },
    UniversalSelector_unify_closure2: function UniversalSelector_unify_closure2(t0) {
      this._0_0 = t0;
    },
    UnprefixedMapView0: function UnprefixedMapView0(t0, t1, t2) {
      this._unprefixed_map_view0$_map = t0;
      this._unprefixed_map_view0$_prefix = t1;
      this.$ti = t2;
    },
    _UnprefixedKeys0: function _UnprefixedKeys0(t0) {
      this._unprefixed_map_view0$_view = t0;
    },
    _UnprefixedKeys_iterator_closure1: function _UnprefixedKeys_iterator_closure1(t0) {
      this.$this = t0;
    },
    _UnprefixedKeys_iterator_closure2: function _UnprefixedKeys_iterator_closure2(t0) {
      this.$this = t0;
    },
    JSUrl0: function JSUrl0() {
    },
    UseRule0: function UseRule0(t0, t1, t2, t3) {
      var _ = this;
      _.url = t0;
      _.namespace = t1;
      _.configuration = t2;
      _.span = t3;
    },
    UserDefinedCallable0: function UserDefinedCallable0(t0, t1, t2, t3) {
      var _ = this;
      _.declaration = t0;
      _.environment = t1;
      _.inDependency = t2;
      _.$ti = t3;
    },
    fromImport0() {
      var t1 = A._asBoolQ($.Zone__current.$index(0, B.Symbol__inImportRule));
      return t1 === true;
    },
    containingUrl() {
      var t1, url,
        _0_0 = $.Zone__current.$index(0, B.Symbol__containingUrl);
      $label0$0: {
        if (_0_0 == null)
          A.throwExpression(A.StateError$("containingUrl may only be accessed within a call to canonicalize()."));
        if (B.Symbol__none.$eq(0, _0_0)) {
          t1 = null;
          break $label0$0;
        }
        if (type$.Uri._is(_0_0)) {
          url = _0_0;
          t1 = true;
        } else {
          url = null;
          t1 = false;
        }
        if (t1) {
          t1 = url;
          break $label0$0;
        }
        t1 = A.throwExpression(A.StateError$("Unexpected Zone.current[#_containingUrl] value " + A.S(_0_0) + "."));
      }
      return t1;
    },
    withContainingUrl0(url, callback, $T) {
      var t1 = url == null ? B.Symbol__none : url,
        t2 = type$.nullable_Object;
      return A.runZoned(callback, A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__containingUrl, t1], t2, t2), $T);
    },
    resolveImportPath0(path) {
      var t1,
        extension = A.ParsedPath_ParsedPath$parse(path, $.$get$context().style)._splitExtension$1(1)[1];
      if (extension === ".sass" || extension === ".scss" || extension === ".css") {
        t1 = A.fromImport0() ? new A.resolveImportPath_closure1(path, extension).call$0() : null;
        return t1 == null ? A._exactlyOne0(A._tryPath0(path)) : t1;
      }
      t1 = A.fromImport0() ? new A.resolveImportPath_closure2(path).call$0() : null;
      if (t1 == null)
        t1 = A._exactlyOne0(A._tryPathWithExtensions0(path));
      return t1 == null ? A._tryPathAsDirectory0(path) : t1;
    },
    _tryPathWithExtensions0(path) {
      var result = A._tryPath0(path + ".sass");
      B.JSArray_methods.addAll$1(result, A._tryPath0(path + ".scss"));
      return result.length !== 0 ? result : A._tryPath0(path + ".css");
    },
    _tryPath0(path) {
      var t1 = $.$get$context(),
        partial = A.join(t1.dirname$1(path), "_" + A.ParsedPath_ParsedPath$parse(path, t1.style).get$basename(), null);
      t1 = A._setArrayType([], type$.JSArray_String);
      if (A.fileExists0(partial))
        t1.push(partial);
      if (A.fileExists0(path))
        t1.push(path);
      return t1;
    },
    _tryPathAsDirectory0(path) {
      var t1;
      if (!A.dirExists0(path))
        return null;
      t1 = A.fromImport0() ? new A._tryPathAsDirectory_closure0(path).call$0() : null;
      return t1 == null ? A._exactlyOne0(A._tryPathWithExtensions0(A.join(path, "index", null))) : t1;
    },
    _exactlyOne0(paths) {
      var t1, path,
        _0_1 = A._InitializedCell$(new A._exactlyOne_closure1(paths));
      $label0$0: {
        if (_0_1._readFinal$0() <= 0) {
          t1 = null;
          break $label0$0;
        }
        if (J.$eq$(_0_1._readFinal$0(), 1)) {
          path = paths[0];
          t1 = true;
        } else {
          path = null;
          t1 = false;
        }
        if (t1) {
          t1 = path;
          break $label0$0;
        }
        t1 = A.throwExpression(string$.It_s_n + B.JSArray_methods.map$1$1(paths, new A._exactlyOne_closure2(), type$.String).join$1(0, "\n"));
      }
      return t1;
    },
    resolveImportPath_closure1: function resolveImportPath_closure1(t0, t1) {
      this.path = t0;
      this.extension = t1;
    },
    resolveImportPath_closure2: function resolveImportPath_closure2(t0) {
      this.path = t0;
    },
    _tryPathAsDirectory_closure0: function _tryPathAsDirectory_closure0(t0) {
      this.path = t0;
    },
    _exactlyOne_closure1: function _exactlyOne_closure1(t0) {
      this._0_0 = t0;
    },
    _exactlyOne_closure2: function _exactlyOne_closure2() {
    },
    jsThrow(error) {
      return type$.Never._as($.$get$_jsThrow().call$1(error));
    },
    attachJsStack(error, trace) {
      var traceString = trace.toString$0(0),
        firstRealLine = B.JSString_methods.indexOf$1(traceString, "\n    at");
      if (firstRealLine !== -1)
        traceString = B.JSString_methods.substring$1(traceString, firstRealLine + 1);
      error.stack = "Error: " + A.S(J.get$message$x(error)) + "\n" + traceString;
    },
    jsForEach(object, callback) {
      var t1, t2;
      for (t1 = J.get$iterator$ax(self.Object.keys(object)); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        callback.call$2(t2, object[t2]);
      }
    },
    jsType(value) {
      var typeOf = A._asString(new self.Function("value", "return typeof value").call$1(value));
      return typeOf !== "object" ? typeOf : A._asString(new self.Function("value", '    if (value && value.constructor && value.constructor.name) {\n      return value.constructor.name;\n    }\n    return "object";\n  ').call$1(value));
    },
    defineGetter(object, $name, get, value) {
      self.Object.defineProperty(object, $name, get == null ? {value: value, enumerable: false} : {get: A.allowInteropCaptureThis(get), enumerable: false});
    },
    allowInteropNamed($name, $function) {
      $function = A.allowInterop($function);
      A.defineGetter($function, "name", null, $name);
      A._hideDartProperties($function);
      return $function;
    },
    allowInteropCaptureThisNamed($name, $function) {
      $function = A.allowInteropCaptureThis($function);
      A.defineGetter($function, "name", null, $name);
      A._hideDartProperties($function);
      return $function;
    },
    _hideDartProperties(object) {
      var t1, t2, t3, t4;
      for (t1 = J.cast$1$0$ax(self.Object.getOwnPropertyNames(object), type$.String), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        if (B.JSString_methods.startsWith$1(t3, "_")) {
          t4 = {value: object[t3], enumerable: false};
          self.Object.defineProperty(object, t3, t4);
        }
      }
    },
    futureToPromise0(future) {
      return new self.Promise(A.allowInterop(new A.futureToPromise_closure0(future)));
    },
    jsToDartUrl(url) {
      return A.Uri_parse(J.toString$0$(url));
    },
    dartToJSUrl(url) {
      return new self.URL(url.toString$0(0));
    },
    toJSArray(iterable) {
      var t1, t2,
        array = new self.Array();
      for (t1 = J.get$iterator$ax(iterable), t2 = J.getInterceptor$x(array); t1.moveNext$0();)
        t2.push$1(array, t1.get$current(t1));
      return array;
    },
    objectToMap(object) {
      var map = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.nullable_Object);
      A.jsForEach(object, new A.objectToMap_closure(map));
      return map;
    },
    jsToDartSeparator(separator) {
      var t1;
      $label0$0: {
        if (" " === separator) {
          t1 = B.ListSeparator_EVt0;
          break $label0$0;
        }
        if ("," === separator) {
          t1 = B.ListSeparator_rXA0;
          break $label0$0;
        }
        if ("/" === separator) {
          t1 = B.ListSeparator_zg90;
          break $label0$0;
        }
        if (separator == null) {
          t1 = B.ListSeparator_undecided_null_undecided0;
          break $label0$0;
        }
        t1 = A.jsThrow(new self.Error('Unknown separator "' + separator + '".'));
      }
      return t1;
    },
    parseSyntax(syntax) {
      var t1;
      $label0$0: {
        if (syntax == null || "scss" === syntax) {
          t1 = B.Syntax_SCSS_scss0;
          break $label0$0;
        }
        if ("indented" === syntax) {
          t1 = B.Syntax_Sass_sass0;
          break $label0$0;
        }
        if ("css" === syntax) {
          t1 = B.Syntax_CSS_css0;
          break $label0$0;
        }
        t1 = A.jsThrow(new self.Error('Unknown syntax "' + A.S(syntax) + '".'));
      }
      return t1;
    },
    _PropertyDescriptor0: function _PropertyDescriptor0() {
    },
    futureToPromise_closure0: function futureToPromise_closure0(t0) {
      this.future = t0;
    },
    futureToPromise__closure0: function futureToPromise__closure0(t0) {
      this.resolve = t0;
    },
    futureToPromise__closure1: function futureToPromise__closure1(t0) {
      this.reject = t0;
    },
    objectToMap_closure: function objectToMap_closure(t0) {
      this.map = t0;
    },
    toSentence0(iter, conjunction) {
      if (iter.get$length(iter) === 1)
        return J.toString$0$(iter.get$first(iter));
      return A.IterableExtension_get_exceptLast0(iter).join$1(0, ", ") + (" " + conjunction + " " + A.S(iter.get$last(iter)));
    },
    indent0(string, indentation) {
      return new A.MappedListIterable(A._setArrayType(string.split("\n"), type$.JSArray_String), new A.indent_closure0(indentation), type$.MappedListIterable_String_String).join$1(0, "\n");
    },
    pluralize0($name, number, plural) {
      if (number === 1)
        return $name;
      if (plural != null)
        return plural;
      return $name + "s";
    },
    trimAscii0(string, excludeEscape) {
      var t1,
        start = A._firstNonWhitespace0(string);
      if (start == null)
        t1 = "";
      else {
        t1 = A._lastNonWhitespace0(string, true);
        t1.toString;
        t1 = B.JSString_methods.substring$2(string, start, t1 + 1);
      }
      return t1;
    },
    trimAsciiRight0(string, excludeEscape) {
      var end = A._lastNonWhitespace0(string, excludeEscape);
      return end == null ? "" : B.JSString_methods.substring$2(string, 0, end + 1);
    },
    _firstNonWhitespace0(string) {
      var t1, i, t2;
      for (t1 = string.length, i = 0; i < t1; ++i) {
        t2 = string.charCodeAt(i);
        if (!(t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12))
          return i;
      }
      return null;
    },
    _lastNonWhitespace0(string, excludeEscape) {
      var i, i0, codeUnit;
      for (i = string.length - 1, i0 = i; i0 >= 0; --i0) {
        codeUnit = string.charCodeAt(i0);
        if (!(codeUnit === 32 || codeUnit === 9 || codeUnit === 10 || codeUnit === 13 || codeUnit === 12))
          if (excludeEscape && i0 !== 0 && i0 !== i && codeUnit === 92)
            return i0 + 1;
          else
            return i0;
      }
      return null;
    },
    isPublic0(member) {
      var start = member.charCodeAt(0);
      return start !== 45 && start !== 95;
    },
    flattenVertically0(iterable, $T) {
      var result,
        t1 = iterable.$ti._eval$1("@<ListIterable.E>")._bind$1($T._eval$1("QueueList<0>"))._eval$1("MappedListIterable<1,2>"),
        queues = A.List_List$of(new A.MappedListIterable(iterable, new A.flattenVertically_closure1($T), t1), true, t1._eval$1("ListIterable.E"));
      if (queues.length === 1)
        return B.JSArray_methods.get$first(queues);
      result = A._setArrayType([], $T._eval$1("JSArray<0>"));
      for (; queues.length !== 0;) {
        if (!!queues.fixed$length)
          A.throwExpression(A.UnsupportedError$("removeWhere"));
        B.JSArray_methods._removeWhere$2(queues, new A.flattenVertically_closure2(result, $T), true);
      }
      return result;
    },
    codepointIndexToCodeUnitIndex0(string, codepointIndex) {
      var codeUnitIndex, i, codeUnitIndex0;
      for (codeUnitIndex = 0, i = 0; i < codepointIndex; ++i) {
        codeUnitIndex0 = codeUnitIndex + 1;
        codeUnitIndex = string.charCodeAt(codeUnitIndex) >>> 10 === 54 ? codeUnitIndex0 + 1 : codeUnitIndex0;
      }
      return codeUnitIndex;
    },
    codeUnitIndexToCodepointIndex0(string, codeUnitIndex) {
      var codepointIndex, i;
      for (codepointIndex = 0, i = 0; i < codeUnitIndex; i = (string.charCodeAt(i) >>> 10 === 54 ? i + 1 : i) + 1)
        ++codepointIndex;
      return codepointIndex;
    },
    frameForSpan0(span, member, url) {
      var t2, t3,
        t1 = url == null ? span.get$sourceUrl(span) : url;
      if (t1 == null)
        t1 = $.$get$_noSourceUrl0();
      t2 = span.get$start(span);
      t2 = t2.file.getLine$1(t2.offset);
      t3 = span.get$start(span);
      return new A.Frame(t1, t2 + 1, t3.file.getColumn$1(t3.offset) + 1, member);
    },
    declarationName0(span) {
      var text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(span.file._decodedChars, span._file$_start, span._end), 0, null);
      return A.trimAsciiRight0(B.JSString_methods.substring$2(text, 0, B.JSString_methods.indexOf$1(text, ":")), false);
    },
    unvendor0($name) {
      var i,
        t1 = $name.length;
      if (t1 < 2)
        return $name;
      if ($name.charCodeAt(0) !== 45)
        return $name;
      if ($name.charCodeAt(1) === 45)
        return $name;
      for (i = 2; i < t1; ++i)
        if ($name.charCodeAt(i) === 45)
          return B.JSString_methods.substring$1($name, i + 1);
      return $name;
    },
    equalsIgnoreCase0(string1, string2) {
      var t1, i;
      if (string1 === string2)
        return true;
      if (string1 == null || false)
        return false;
      t1 = string1.length;
      if (t1 !== string2.length)
        return false;
      for (i = 0; i < t1; ++i)
        if (!A.characterEqualsIgnoreCase0(string1.charCodeAt(i), string2.charCodeAt(i)))
          return false;
      return true;
    },
    startsWithIgnoreCase0(string, prefix) {
      var i,
        t1 = prefix.length;
      if (string.length < t1)
        return false;
      for (i = 0; i < t1; ++i)
        if (!A.characterEqualsIgnoreCase0(string.charCodeAt(i), prefix.charCodeAt(i)))
          return false;
      return true;
    },
    mapInPlace0(list, $function) {
      var i;
      for (i = 0; i < list.length; ++i)
        list[i] = $function.call$1(list[i]);
    },
    longestCommonSubsequence0(list1, list2, select, $T) {
      var t1, _i, selections, i, i0, j, selection, j0,
        _length = list1.get$length(list1) + 1,
        lengths = J.JSArray_JSArray$allocateFixed(_length, type$.List_int);
      for (t1 = type$.int, _i = 0; _i < _length; ++_i)
        lengths[_i] = A.List_List$filled(((list2._queue_list$_tail - list2._queue_list$_head & J.get$length$asx(list2._queue_list$_table) - 1) >>> 0) + 1, 0, false, t1);
      _length = list1.get$length(list1);
      selections = J.JSArray_JSArray$allocateFixed(_length, $T._eval$1("List<0?>"));
      for (t1 = $T._eval$1("0?"), _i = 0; _i < _length; ++_i)
        selections[_i] = A.List_List$filled((list2._queue_list$_tail - list2._queue_list$_head & J.get$length$asx(list2._queue_list$_table) - 1) >>> 0, null, false, t1);
      for (i = 0; i < (list1._queue_list$_tail - list1._queue_list$_head & J.get$length$asx(list1._queue_list$_table) - 1) >>> 0; i = i0)
        for (i0 = i + 1, j = 0; j < (list2._queue_list$_tail - list2._queue_list$_head & J.get$length$asx(list2._queue_list$_table) - 1) >>> 0; j = j0) {
          selection = select.call$2(list1.$index(0, i), list2.$index(0, j));
          selections[i][j] = selection;
          t1 = lengths[i0];
          j0 = j + 1;
          t1[j0] = selection == null ? Math.max(t1[j], lengths[i][j0]) : lengths[i][j] + 1;
        }
      return new A.longestCommonSubsequence_backtrack0(selections, lengths, $T).call$2(list1.get$length(list1) - 1, list2.get$length(list2) - 1);
    },
    removeFirstWhere0(list, test, orElse) {
      var i;
      for (i = 0; i < list.length; ++i) {
        if (!test.call$1(list[i]))
          continue;
        B.JSArray_methods.removeAt$1(list, i);
        return;
      }
      orElse.call$0();
    },
    mapAddAll20(destination, source, K1, K2, $V) {
      source.forEach$1(0, new A.mapAddAll2_closure0(destination, K1, K2, $V));
    },
    setAll0(map, keys, value) {
      var t1;
      for (t1 = J.get$iterator$ax(keys); t1.moveNext$0();)
        map.$indexSet(0, t1.get$current(t1), value);
    },
    rotateSlice0(list, start, end) {
      var i, next,
        element = list.$index(0, end - 1);
      for (i = start; i < end; ++i, element = next) {
        next = list.$index(0, i);
        list.$indexSet(0, i, element);
      }
    },
    mapAsync0(iterable, callback, $E, $F) {
      return A.mapAsync$body0(iterable, callback, $E, $F, $F._eval$1("Iterable<0>"));
    },
    mapAsync$body0(iterable, callback, $E, $F, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, t2, _i, t1, $async$temp1;
      var $async$mapAsync0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = A._setArrayType([], $F._eval$1("JSArray<0>"));
              t2 = iterable.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$temp1 = t1;
              $async$goto = 6;
              return A._asyncAwait(callback.call$1(iterable[_i]), $async$mapAsync0);
            case 6:
              // returning from await.
              $async$temp1.push($async$result);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$mapAsync0, $async$completer);
    },
    putIfAbsentAsync0(map, key, ifAbsent, $K, $V) {
      return A.putIfAbsentAsync$body0(map, key, ifAbsent, $K, $V, $V);
    },
    putIfAbsentAsync$body0(map, key, ifAbsent, $K, $V, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, t1, value;
      var $async$putIfAbsentAsync0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (map.containsKey$1(key)) {
                t1 = map.$index(0, key);
                $async$returnValue = t1 == null ? $V._as(t1) : t1;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 3;
              return A._asyncAwait(ifAbsent.call$0(), $async$putIfAbsentAsync0);
            case 3:
              // returning from await.
              value = $async$result;
              map.$indexSet(0, key, value);
              $async$returnValue = value;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$putIfAbsentAsync0, $async$completer);
    },
    copyMapOfMap0(map, K1, K2, $V) {
      var t3, key, child,
        t1 = K2._eval$1("@<0>")._bind$1($V)._eval$1("Map<1,2>"),
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(K1, t1);
      for (t1 = A.MapExtensions_get_pairs0(map, K1, t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        key = t3._0;
        child = t3._1;
        t3 = A.LinkedHashMap_LinkedHashMap(null, null, null, K2, $V);
        t3.addAll$1(0, child);
        t2.$indexSet(0, key, t3);
      }
      return t2;
    },
    copyMapOfList0(map, $K, $E) {
      var t3, key, list,
        t1 = $E._eval$1("List<0>"),
        t2 = A.LinkedHashMap_LinkedHashMap$_empty($K, t1);
      for (t1 = A.MapExtensions_get_pairs0(map, $K, t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        key = t3._0;
        list = t3._1;
        t2.$indexSet(0, key, J.toList$0$ax(list));
      }
      return t2;
    },
    consumeEscapedCharacter0(scanner) {
      var _1_0, value, i, next, t1;
      scanner.expectChar$1(92);
      _1_0 = scanner.peekChar$0();
      if (_1_0 == null)
        return 65533;
      if (_1_0 === 10 || _1_0 === 13 || _1_0 === 12)
        scanner.error$1(0, "Expected escape sequence.");
      if (A.CharacterExtension_get_isHex0(_1_0)) {
        for (value = 0, i = 0; i < 6; ++i) {
          next = scanner.peekChar$0();
          if (next != null) {
            if (!(next >= 48 && next <= 57))
              if (!(next >= 97 && next <= 102))
                t1 = next >= 65 && next <= 70;
              else
                t1 = true;
            else
              t1 = true;
            t1 = !t1;
          } else
            t1 = true;
          if (t1)
            break;
          value = (value << 4 >>> 0) + A.asHex0(scanner.readChar$0());
        }
        t1 = scanner.peekChar$0();
        if (t1 === 32 || t1 === 9 || t1 === 10 || t1 === 13 || t1 === 12)
          scanner.readChar$0();
        $label0$1: {
          if (0 !== value)
            t1 = value >= 55296 && value <= 57343 || value >= 1114111;
          else
            t1 = true;
          if (t1) {
            t1 = 65533;
            break $label0$1;
          }
          t1 = value;
          break $label0$1;
        }
        return t1;
      }
      return scanner.readChar$0();
    },
    throwWithTrace0(error, originalError, trace) {
      var t1 = A.getTrace0(originalError);
      A.attachTrace0(error, t1 == null ? trace : t1);
      throw A.wrapException(error);
    },
    attachTrace0(error, trace) {
      var t1;
      if (typeof error == "string" || typeof error == "number" || A._isBool(error))
        return;
      if (trace.toString$0(0).length === 0)
        return;
      t1 = $.$get$_traces0();
      A.Expando__checkType(error);
      if (t1._jsWeakMap.get(error) == null)
        t1.$indexSet(0, error, trace);
    },
    getTrace0(error) {
      var t1;
      if (typeof error == "string" || typeof error == "number" || A._isBool(error))
        t1 = null;
      else {
        t1 = $.$get$_traces0();
        A.Expando__checkType(error);
        t1 = t1._jsWeakMap.get(error);
      }
      return t1;
    },
    parseSignature(signature, requireParens) {
      var error, stackTrace, t1, exception, t2;
      try {
        t1 = A.ScssParser$0(signature, null, null).parseSignature$1$requireParens(requireParens);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassFormatException_2._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error._span_exception$_message;
          t2 = J.get$span$z(error);
          A.throwWithTrace0(new A.SassFormatException0(B.Set_empty, 'Invalid signature "' + signature + '": ' + t1, t2), error, stackTrace);
        } else
          throw exception;
      }
    },
    indent_closure0: function indent_closure0(t0) {
      this.indentation = t0;
    },
    flattenVertically_closure1: function flattenVertically_closure1(t0) {
      this.T = t0;
    },
    flattenVertically_closure2: function flattenVertically_closure2(t0, t1) {
      this.result = t0;
      this.T = t1;
    },
    longestCommonSubsequence_backtrack0: function longestCommonSubsequence_backtrack0(t0, t1, t2) {
      this.selections = t0;
      this.lengths = t1;
      this.T = t2;
    },
    mapAddAll2_closure0: function mapAddAll2_closure0(t0, t1, t2, t3) {
      var _ = this;
      _.destination = t0;
      _.K1 = t1;
      _.K2 = t2;
      _.V = t3;
    },
    CssValue0: function CssValue0(t0, t1, t2) {
      this.value = t0;
      this.span = t1;
      this.$ti = t2;
    },
    ValueExpression0: function ValueExpression0(t0, t1) {
      this.value = t0;
      this.span = t1;
    },
    valueClass_closure: function valueClass_closure() {
    },
    valueClass__closure: function valueClass__closure() {
    },
    valueClass__closure0: function valueClass__closure0() {
    },
    valueClass__closure1: function valueClass__closure1() {
    },
    valueClass__closure2: function valueClass__closure2() {
    },
    valueClass__closure3: function valueClass__closure3() {
    },
    valueClass__closure4: function valueClass__closure4() {
    },
    valueClass__closure5: function valueClass__closure5() {
    },
    valueClass__closure6: function valueClass__closure6() {
    },
    valueClass__closure7: function valueClass__closure7() {
    },
    valueClass__closure8: function valueClass__closure8() {
    },
    valueClass__closure9: function valueClass__closure9() {
    },
    valueClass__closure10: function valueClass__closure10() {
    },
    valueClass__closure11: function valueClass__closure11() {
    },
    valueClass__closure12: function valueClass__closure12() {
    },
    valueClass__closure13: function valueClass__closure13() {
    },
    valueClass__closure14: function valueClass__closure14() {
    },
    valueClass__closure15: function valueClass__closure15() {
    },
    valueClass__closure16: function valueClass__closure16() {
    },
    valueClass__closure17: function valueClass__closure17() {
    },
    valueClass__closure18: function valueClass__closure18() {
    },
    SassApiValue_assertSelector0(_this, allowParent, $name) {
      var error, stackTrace, t1, exception,
        string = _this._value$_selectorString$1($name);
      try {
        t1 = A.SelectorList_SelectorList$parse0(string, allowParent, true, null, null);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassFormatException_2._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = B.JSString_methods.replaceFirst$2(J.toString$0$(error), "Error: ", "");
          A.throwWithTrace0(new A.SassScriptException0($name == null ? t1 : "$" + $name + ": " + t1), error, stackTrace);
        } else
          throw exception;
      }
    },
    SassApiValue_assertCompoundSelector0(_this, $name) {
      var error, stackTrace, t1, exception,
        allowParent = false,
        string = _this._value$_selectorString$1($name);
      try {
        t1 = A.SelectorParser$0(string, allowParent, true, null, null, null).parseCompoundSelector$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassFormatException_2._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = B.JSString_methods.replaceFirst$2(J.toString$0$(error), "Error: ", "");
          A.throwWithTrace0(new A.SassScriptException0("$" + $name + ": " + t1), error, stackTrace);
        } else
          throw exception;
      }
    },
    Value0: function Value0() {
    },
    VariableExpression0: function VariableExpression0(t0, t1, t2) {
      this.namespace = t0;
      this.name = t1;
      this.span = t2;
    },
    VariableDeclaration$0($name, expression, span, comment, global, guarded, namespace) {
      if (namespace != null && global)
        A.throwExpression(A.ArgumentError$(string$.Other_, null));
      return new A.VariableDeclaration0(namespace, $name, expression, guarded, global, span);
    },
    VariableDeclaration0: function VariableDeclaration0(t0, t1, t2, t3, t4, t5) {
      var _ = this;
      _.namespace = t0;
      _.name = t1;
      _.expression = t2;
      _.isGuarded = t3;
      _.isGlobal = t4;
      _.span = t5;
    },
    WarnRule0: function WarnRule0(t0, t1) {
      this.expression = t0;
      this.span = t1;
    },
    WhileRule$0(condition, children, span) {
      var t1 = A.List_List$unmodifiable(children, type$.Statement_2),
        t2 = B.JSArray_methods.any$1(t1, new A.ParentStatement_closure0());
      return new A.WhileRule0(condition, span, t1, t2);
    },
    WhileRule0: function WhileRule0(t0, t1, t2, t3) {
      var _ = this;
      _.condition = t0;
      _.span = t1;
      _.children = t2;
      _.hasDeclarations = t3;
    },
    AsyncCallable_AsyncCallable$fromSignature(signature, callback, requireParens) {
      var _0_0 = A.parseSignature(signature, requireParens);
      return new A.AsyncBuiltInCallable0(_0_0._0, _0_0._1, callback, false);
    },
    Callable_Callable$fromSignature(signature, callback, requireParens) {
      var _0_0 = A.parseSignature(signature, requireParens);
      return new A.BuiltInCallable0(_0_0._0, A._setArrayType([new A._Record_2(_0_0._1, callback)], type$.JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value_2), false);
    },
    printString(string) {
      if (typeof dartPrint == "function") {
        dartPrint(string);
        return;
      }
      if (typeof console == "object" && typeof console.log != "undefined") {
        console.log(string);
        return;
      }
      if (typeof print == "function") {
        print(string);
        return;
      }
      throw "Unable to print message: " + String(string);
    },
    mergeMaps(map1, map2, $K, $V) {
      var result = A.LinkedHashMap_LinkedHashMap$of(map1, $K, $V);
      result.addAll$1(0, map2);
      return result;
    },
    groupBy(values, key, $S, $T) {
      var t1, t2, _i, element, t3, t4,
        map = A.LinkedHashMap_LinkedHashMap$_empty($T, $S._eval$1("List<0>"));
      for (t1 = values.length, t2 = $S._eval$1("JSArray<0>"), _i = 0; _i < values.length; values.length === t1 || (0, A.throwConcurrentModificationError)(values), ++_i) {
        element = values[_i];
        t3 = key.call$1(element);
        t4 = map.$index(0, t3);
        if (t4 == null) {
          t4 = A._setArrayType([], t2);
          map.$indexSet(0, t3, t4);
          t3 = t4;
        } else
          t3 = t4;
        J.add$1$ax(t3, element);
      }
      return map;
    },
    minBy(values, orderBy) {
      var t1, t2, minValue, minOrderBy, element, elementOrderBy;
      for (t1 = new A.MappedIterator(J.get$iterator$ax(values.__internal$_iterable), values._f), t2 = A._instanceType(t1)._rest[1], minValue = null, minOrderBy = null; t1.moveNext$0();) {
        element = t1.__internal$_current;
        if (element == null)
          element = t2._as(element);
        elementOrderBy = orderBy.call$1(element);
        if (minOrderBy == null || A.defaultCompare(elementOrderBy, minOrderBy) < 0) {
          minOrderBy = elementOrderBy;
          minValue = element;
        }
      }
      return minValue;
    },
    IterableExtension_firstWhereOrNull(_this, test) {
      var t1, element;
      for (t1 = J.get$iterator$ax(_this); t1.moveNext$0();) {
        element = t1.get$current(t1);
        if (test.call$1(element))
          return element;
      }
      return null;
    },
    IterableExtension_get_firstOrNull(_this) {
      var iterator = J.get$iterator$ax(_this);
      if (iterator.moveNext$0())
        return iterator.get$current(iterator);
      return null;
    },
    IterableExtension_get_lastOrNull(_this) {
      if (_this.get$length(_this) === 0)
        return null;
      return _this.get$last(_this);
    },
    IterableExtension_get_singleOrNull(_this) {
      var result,
        iterator = J.get$iterator$ax(_this);
      if (iterator.moveNext$0()) {
        result = iterator.get$current(iterator);
        if (!iterator.moveNext$0())
          return result;
      }
      return null;
    },
    IterableNullableExtension_whereNotNull(_this, $T) {
      return new A._SyncStarIterable(A.IterableNullableExtension_whereNotNull$body(_this, $T), $T._eval$1("_SyncStarIterable<0>"));
    },
    IterableNullableExtension_whereNotNull$body($async$_this, $async$$T) {
      return function() {
        var _this = $async$_this,
          $T = $async$$T;
        var $async$goto = 0, $async$handler = 1, $async$currentError, t1, element;
        return function $async$IterableNullableExtension_whereNotNull($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = J.get$iterator$ax(_this);
              case 2:
                // for condition
                if (!t1.moveNext$0()) {
                  // goto after for
                  $async$goto = 3;
                  break;
                }
                element = t1.get$current(t1);
                $async$goto = element != null ? 4 : 5;
                break;
              case 4:
                // then
                $async$goto = 6;
                return $async$iterator._async$_current = element, 1;
              case 6:
                // after yield
              case 5:
                // join
                // goto for condition
                $async$goto = 2;
                break;
              case 3:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    IterableIntegerExtension_get_maxOrNull(_this) {
      var value, t1, newValue,
        iterator = new A.ListIterator(_this, _this.get$length(_this));
      if (iterator.moveNext$0()) {
        value = iterator.__internal$_current;
        if (value == null)
          value = A._instanceType(iterator)._precomputed1._as(value);
        for (t1 = A._instanceType(iterator)._precomputed1; iterator.moveNext$0();) {
          newValue = iterator.__internal$_current;
          if (newValue == null)
            newValue = t1._as(newValue);
          if (newValue > value)
            value = newValue;
        }
        return value;
      }
      return null;
    },
    IterableIntegerExtension_get_max(_this) {
      var t1 = A.IterableIntegerExtension_get_maxOrNull(_this);
      return t1 == null ? A.throwExpression(A.StateError$("No element")) : t1;
    },
    IterableIntegerExtension_get_sum(_this) {
      var t1, t2, result, t3;
      for (t1 = new A.MappedIterator(J.get$iterator$ax(_this.__internal$_iterable), _this._f), t2 = A._instanceType(t1)._rest[1], result = 0; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        result += t3 == null ? t2._as(t3) : t3;
      }
      return result;
    },
    ListExtensions_mapIndexed(_this, convert, $E, $R) {
      return new A._SyncStarIterable(A.ListExtensions_mapIndexed$body(_this, convert, $E, $R), $R._eval$1("_SyncStarIterable<0>"));
    },
    ListExtensions_mapIndexed$body($async$_this, $async$convert, $async$$E, $async$$R) {
      return function() {
        var _this = $async$_this,
          convert = $async$convert,
          $E = $async$$E,
          $R = $async$$R;
        var $async$goto = 0, $async$handler = 1, $async$currentError, t1, index;
        return function $async$ListExtensions_mapIndexed($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = _this.length, index = 0;
              case 2:
                // for condition
                if (!(index < t1)) {
                  // goto after for
                  $async$goto = 4;
                  break;
                }
                $async$goto = 5;
                return $async$iterator._async$_current = convert.call$2(index, _this[index]), 1;
              case 5:
                // after yield
              case 3:
                // for update
                ++index;
                // goto for condition
                $async$goto = 2;
                break;
              case 4:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    ListExtensions_elementAtOrNull(_this, index) {
      var t1 = J.getInterceptor$asx(_this);
      return index < t1.get$length(_this) ? t1.$index(_this, index) : null;
    },
    defaultCompare(value1, value2) {
      return J.compareTo$1$ns(type$.Comparable_nullable_Object._as(value1), value2);
    },
    current() {
      var exception, t1, path, lastIndex, uri = null;
      try {
        uri = A.Uri_base();
      } catch (exception) {
        if (type$.Exception._is(A.unwrapException(exception))) {
          t1 = $._current;
          if (t1 != null)
            return t1;
          throw exception;
        } else
          throw exception;
      }
      if (J.$eq$(uri, $._currentUriBase)) {
        t1 = $._current;
        t1.toString;
        return t1;
      }
      $._currentUriBase = uri;
      if ($.$get$Style_platform() === $.$get$Style_url())
        t1 = $._current = uri.resolve$1(".").toString$0(0);
      else {
        path = uri.toFilePath$0();
        lastIndex = path.length - 1;
        t1 = $._current = lastIndex === 0 ? path : B.JSString_methods.substring$2(path, 0, lastIndex);
      }
      return t1;
    },
    absolute(part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15) {
      return $.$get$context().absolute$15(part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15);
    },
    join(part1, part2, part3) {
      var _null = null;
      return $.$get$context().join$16(0, part1, part2, part3, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null);
    },
    prettyUri(uri) {
      return $.$get$context().prettyUri$1(uri);
    },
    isAlphabetic(char) {
      var t1;
      if (!(char >= 65 && char <= 90))
        t1 = char >= 97 && char <= 122;
      else
        t1 = true;
      return t1;
    },
    isDriveLetter(path, index) {
      var t1 = path.length,
        t2 = index + 2;
      if (t1 < t2)
        return false;
      if (!A.isAlphabetic(path.charCodeAt(index)))
        return false;
      if (path.charCodeAt(index + 1) !== 58)
        return false;
      if (t1 === t2)
        return true;
      return path.charCodeAt(t2) === 47;
    },
    main0(args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.dynamic),
        t1;
      var $async$main0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              A.printError("sass --embedded is unavailable in pure JS mode.");
              t1 = A.isNodeJs() ? self.process : null;
              if (t1 != null)
                J.set$exitCode$x(t1, 1);
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$main0, $async$completer);
    },
    EvaluationContext_current() {
      var context, t1,
        _0_0 = $.Zone__current.$index(0, B.Symbol__evaluationContext);
      if (type$.EvaluationContext._is(_0_0)) {
        context = _0_0;
        t1 = true;
      } else {
        context = null;
        t1 = false;
      }
      if (t1)
        return context;
      else
        throw A.wrapException(A.StateError$(string$.No_Sass));
    },
    repl(options) {
      return A.repl$body(options);
    },
    repl$body(options) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$handler = 1, $async$currentError, $async$next = [], repl, logger, evaluator, line, declaration, error, stackTrace, t4, t5, t6, t7, t8, line0, toZone, exception, t1, t2, t3, repl0;
      var $async$repl = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = A._setArrayType([], type$.JSArray_String);
              t2 = B.JSString_methods.$mul(" ", 3);
              t3 = $.$get$alwaysValid();
              repl0 = new A.Repl(">> ", t2, t3, t1);
              repl0.__Repl__adapter_A = new A.ReplAdapter(repl0);
              repl = repl0;
              t1 = options._options;
              logger = new A.TrackingLogger(A._asBool(t1.$index(0, "quiet")) ? $.$get$Logger_quiet() : new A.StderrLogger(options.get$color()));
              t2 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
              evaluator = new A.Evaluator(A._EvaluateVisitor$(null, A.ImportCache$(type$.List_String._as(t1.$index(0, "load-path")), logger), logger, null, false, false), new A.FilesystemImporter(t2));
              t2 = repl.__Repl__adapter_A;
              t2 === $ && A.throwUnnamedLateFieldNI();
              t2 = new A._StreamIterator(A.checkNotNullable(t2.runAsync$0(), "stream", type$.Object));
              $async$handler = 2;
              t1 = type$.Expression, t3 = type$.String, t4 = type$.VariableDeclaration;
            case 5:
              // for condition
              $async$goto = 7;
              return A._asyncAwait(t2.moveNext$0(), $async$repl);
            case 7:
              // returning from await.
              if (!$async$result) {
                // goto after for
                $async$goto = 6;
                break;
              }
              line = t2.get$current(t2);
              if (J.trim$0$s(line).length === 0) {
                // goto for condition
                $async$goto = 5;
                break;
              }
              try {
                if (J.startsWith$1$s(line, "@")) {
                  t5 = evaluator;
                  t6 = logger;
                  t7 = A.SpanScanner$(line, null);
                  if (t6 == null)
                    t6 = B.StderrLogger_false;
                  t6 = new A.ScssParser(A.LinkedHashMap_LinkedHashMap$_empty(t3, t4), t7, t6, null).parseUseRule$0();
                  t5._visitor.runStatement$2(t5._importer, t6);
                  // goto for condition
                  $async$goto = 5;
                  break;
                }
                t5 = A.SpanScanner$(line, null);
                if (new A.Parser(t5, B.StderrLogger_false, null)._isVariableDeclarationLike$0()) {
                  t5 = logger;
                  t6 = A.SpanScanner$(line, null);
                  if (t5 == null)
                    t5 = B.StderrLogger_false;
                  declaration = new A.ScssParser(A.LinkedHashMap_LinkedHashMap$_empty(t3, t4), t6, t5, null).parseVariableDeclaration$0();
                  t5 = evaluator;
                  t5._visitor.runStatement$2(t5._importer, declaration);
                  t5 = evaluator;
                  t6 = declaration.name;
                  t7 = declaration.span;
                  t8 = declaration.namespace;
                  line0 = t5._visitor.runExpression$2(t5._importer, new A.VariableExpression(t8, t6, t7)).toString$0(0);
                  toZone = $.printToZone;
                  if (toZone == null)
                    A.printString(line0);
                  else
                    toZone.call$1(line0);
                } else {
                  t5 = evaluator;
                  t6 = logger;
                  t7 = A.SpanScanner$(line, null);
                  if (t6 == null)
                    t6 = B.StderrLogger_false;
                  t6 = new A.ScssParser(A.LinkedHashMap_LinkedHashMap$_empty(t3, t4), t7, t6, null);
                  t6 = t6._parseSingleProduction$1$1(t6.get$_expression(), t1);
                  line0 = t5._visitor.runExpression$2(t5._importer, t6).toString$0(0);
                  toZone = $.printToZone;
                  if (toZone == null)
                    A.printString(line0);
                  else
                    toZone.call$1(line0);
                }
              } catch (exception) {
                t5 = A.unwrapException(exception);
                if (t5 instanceof A.SassException) {
                  error = t5;
                  stackTrace = A.getTraceFromException(exception);
                  t5 = error;
                  t6 = typeof t5 != "string";
                  if (!t6 || typeof t5 == "number" || A._isBool(t5))
                    t5 = null;
                  else {
                    t7 = $.$get$_traces();
                    if (A._isBool(t5) || typeof t5 == "number" || !t6 || t5 instanceof A._Record)
                      A.Expando__badExpandoKey(t5);
                    t5 = t7._jsWeakMap.get(t5);
                  }
                  if (t5 == null)
                    t5 = stackTrace;
                  A._logError(error, t5, line, repl, options, logger);
                } else
                  throw exception;
              }
              // goto for condition
              $async$goto = 5;
              break;
            case 6:
              // after for
              $async$next.push(4);
              // goto finally
              $async$goto = 3;
              break;
            case 2:
              // uncaught
              $async$next = [1];
            case 3:
              // finally
              $async$handler = 1;
              $async$goto = 8;
              return A._asyncAwait(t2.cancel$0(), $async$repl);
            case 8:
              // returning from await.
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 4:
              // after finally
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$repl, $async$completer);
    },
    _logError(error, stackTrace, line, repl, options, logger) {
      var t2, spacesBeforeError, t3,
        t1 = A.SourceSpanException.prototype.get$span.call(error, error);
      if (t1.get$sourceUrl(t1) == null)
        if (!A._asBool(options._options.$index(0, "quiet")))
          t1 = logger._emittedDebug || logger._emittedWarning;
        else
          t1 = false;
      else
        t1 = true;
      if (t1) {
        A.print(error.toString$1$color(0, options.get$color()));
        return;
      }
      t1 = options.get$color() ? "" + "\x1b[31m" : "";
      t2 = A.SourceSpanException.prototype.get$span.call(error, error);
      t2 = t2.get$start(t2);
      spacesBeforeError = repl.prompt.length + t2.file.getColumn$1(t2.offset);
      if (options.get$color()) {
        t2 = A.SourceSpanException.prototype.get$span.call(error, error);
        t2 = t2.get$start(t2);
        t2 = t2.file.getColumn$1(t2.offset) < line.length;
      } else
        t2 = false;
      if (t2)
        t1 = t1 + ("\x1b[1F\x1b[" + spacesBeforeError + "C") + (A.SourceSpanException.prototype.get$span.call(error, error).get$text() + "\n");
      t2 = B.JSString_methods.$mul(" ", spacesBeforeError);
      t3 = A.SourceSpanException.prototype.get$span.call(error, error);
      t3 = t1 + t2 + (B.JSString_methods.$mul("^", Math.max(1, t3.get$length(t3))) + "\n");
      t1 = options.get$color() ? t3 + "\x1b[0m" : t3;
      t1 += "Error: " + error._span_exception$_message + "\n";
      if (A._asBool(options._options.$index(0, "trace")))
        t1 += A.Trace_Trace$from(stackTrace).get$terse().toString$0(0);
      A.print(B.JSString_methods.trimRight$0(t1.charCodeAt(0) == 0 ? t1 : t1));
    },
    CharacterExtension_get_isAlphabetic(_this) {
      var t1;
      if (!(_this >= 97 && _this <= 122))
        t1 = _this >= 65 && _this <= 90;
      else
        t1 = true;
      return t1;
    },
    CharacterExtension_get_isHex(_this) {
      var t1;
      if (!(_this >= 48 && _this <= 57))
        if (!(_this >= 97 && _this <= 102))
          t1 = _this >= 65 && _this <= 70;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    asHex(character) {
      var t1;
      $label0$0: {
        if (character <= 57) {
          t1 = character - 48;
          break $label0$0;
        }
        if (character <= 70) {
          t1 = 10 + character - 65;
          break $label0$0;
        }
        t1 = 10 + character - 97;
        break $label0$0;
      }
      return t1;
    },
    hexCharFor(number) {
      return number < 10 ? 48 + number : 87 + number;
    },
    opposite(character) {
      var t1;
      $label0$0: {
        if (40 === character) {
          t1 = 41;
          break $label0$0;
        }
        if (123 === character) {
          t1 = 125;
          break $label0$0;
        }
        if (91 === character) {
          t1 = 93;
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$('"' + A.String_String$fromCharCode(character) + "\" isn't a brace-like character.", null));
      }
      return t1;
    },
    characterEqualsIgnoreCase(character1, character2) {
      var upperCase1;
      if (character1 === character2)
        return true;
      if ((character1 ^ character2) >>> 0 !== 32)
        return false;
      upperCase1 = (character1 & 4294967263) >>> 0;
      return upperCase1 >= 65 && upperCase1 <= 90;
    },
    IterableExtension_search(_this, callback) {
      var t1, _0_0, value, t2;
      for (t1 = J.get$iterator$ax(_this); t1.moveNext$0();) {
        _0_0 = callback.call$1(t1.get$current(t1));
        if (_0_0 != null) {
          value = _0_0;
          t2 = true;
        } else {
          value = null;
          t2 = false;
        }
        if (t2)
          return value;
      }
      return null;
    },
    IterableExtension_get_exceptLast(_this) {
      var t1 = J.getInterceptor$asx(_this),
        size = t1.get$length(_this) - 1;
      if (size < 0)
        throw A.wrapException(A.StateError$("Iterable may not be empty"));
      return t1.take$1(_this, size);
    },
    NullableExtension_andThen(_this, fn) {
      return _this == null ? null : fn.call$1(_this);
    },
    SetExtension_removeNull(_this, $T) {
      _this.remove$1(0, null);
      return A.Set_castFrom(_this, _this.get$_newSimilarSet(), A._instanceType(_this)._precomputed1, $T);
    },
    fuzzyEquals(number1, number2) {
      var t1;
      if (number1 === number2)
        return true;
      if (Math.abs(number1 - number2) <= $.$get$_epsilon()) {
        t1 = $.$get$_inverseEpsilon();
        t1 = B.JSNumber_methods.round$0(number1 * t1) === B.JSNumber_methods.round$0(number2 * t1);
      } else
        t1 = false;
      return t1;
    },
    fuzzyHashCode(number) {
      if (!isFinite(number))
        return B.JSNumber_methods.get$hashCode(number);
      return B.JSInt_methods.get$hashCode(B.JSNumber_methods.round$0(number * $.$get$_inverseEpsilon()));
    },
    fuzzyLessThan(number1, number2) {
      return number1 < number2 && !A.fuzzyEquals(number1, number2);
    },
    fuzzyLessThanOrEquals(number1, number2) {
      return number1 < number2 || A.fuzzyEquals(number1, number2);
    },
    fuzzyGreaterThan(number1, number2) {
      return number1 > number2 && !A.fuzzyEquals(number1, number2);
    },
    fuzzyGreaterThanOrEquals(number1, number2) {
      return number1 > number2 || A.fuzzyEquals(number1, number2);
    },
    fuzzyAsInt(number) {
      var rounded;
      if (number == 1 / 0 || number == -1 / 0 || isNaN(number))
        return null;
      rounded = B.JSNumber_methods.round$0(number);
      return A.fuzzyEquals(number, rounded) ? rounded : null;
    },
    fuzzyRound(number) {
      var t1;
      if (number > 0) {
        t1 = B.JSNumber_methods.$mod(number, 1);
        return t1 < 0.5 && !A.fuzzyEquals(t1, 0.5) ? B.JSNumber_methods.floor$0(number) : B.JSNumber_methods.ceil$0(number);
      } else {
        t1 = B.JSNumber_methods.$mod(number, 1);
        return t1 < 0.5 || A.fuzzyEquals(t1, 0.5) ? B.JSNumber_methods.floor$0(number) : B.JSNumber_methods.ceil$0(number);
      }
    },
    fuzzyCheckRange(number, min, max) {
      if (A.fuzzyEquals(number, min))
        return min;
      if (A.fuzzyEquals(number, max))
        return max;
      if (number > min && number < max)
        return number;
      return null;
    },
    fuzzyAssertRange(number, min, max, $name) {
      var result = A.fuzzyCheckRange(number, min, max);
      if (result != null)
        return result;
      throw A.wrapException(A.RangeError$range(number, min, max, $name, "must be between " + min + " and " + max));
    },
    moduloLikeSass(num1, num2) {
      var result;
      if (num1 == 1 / 0 || num1 == -1 / 0)
        return 0 / 0;
      if (num2 == 1 / 0 || num2 == -1 / 0)
        return A.DoubleWithSignedZero_get_signIncludingZero(num1) === J.get$sign$in(num2) ? num1 : 0 / 0;
      if (num2 > 0)
        return B.JSNumber_methods.$mod(num1, num2);
      if (num2 === 0)
        return 0 / 0;
      result = B.JSNumber_methods.$mod(num1, num2);
      return result === 0 ? 0 : result + num2;
    },
    sqrt(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber(Math.sqrt(number._number$_value), null);
    },
    sin(number) {
      return A.SassNumber_SassNumber(Math.sin(number.coerceValueToUnit$2("rad", "number")), null);
    },
    cos(number) {
      return A.SassNumber_SassNumber(Math.cos(number.coerceValueToUnit$2("rad", "number")), null);
    },
    tan(number) {
      return A.SassNumber_SassNumber(Math.tan(number.coerceValueToUnit$2("rad", "number")), null);
    },
    atan(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber$withUnits(Math.atan(number._number$_value) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    asin(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber$withUnits(Math.asin(number._number$_value) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    acos(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber$withUnits(Math.acos(number._number$_value) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    log(number, base) {
      if (base != null)
        return A.SassNumber_SassNumber(Math.log(number._number$_value) / Math.log(base._number$_value), null);
      return A.SassNumber_SassNumber(Math.log(number._number$_value), null);
    },
    pow0(base, exponent) {
      base.assertNoUnits$1("base");
      exponent.assertNoUnits$1("exponent");
      return A.SassNumber_SassNumber(Math.pow(base._number$_value, exponent._number$_value), null);
    },
    DoubleWithSignedZero_get_signIncludingZero(_this) {
      if (_this === -0.0)
        return -1;
      if (_this === 0)
        return 1;
      return J.get$sign$in(_this);
    },
    SpanExtensions_trimLeft(_this) {
      var t5,
        t1 = _this._file$_start,
        t2 = _this._end,
        t3 = _this.file._decodedChars,
        t4 = t3.length,
        start = 0;
      while (true) {
        t5 = A.String_String$fromCharCodes(new Uint32Array(t3.subarray(t1, A._checkValidRange(t1, t2, t4))), 0, null).charCodeAt(start);
        if (!(t5 === 32 || t5 === 9 || t5 === 10 || t5 === 13 || t5 === 12))
          break;
        ++start;
      }
      return A.FileSpanExtension_subspan(_this, start, null);
    },
    SpanExtensions_trimRight(_this) {
      var t1,
        end = _this.get$text().length - 1;
      while (true) {
        t1 = _this.get$text().charCodeAt(end);
        if (!(t1 === 32 || t1 === 9 || t1 === 10 || t1 === 13 || t1 === 12))
          break;
        --end;
      }
      return A.FileSpanExtension_subspan(_this, 0, end + 1);
    },
    encodeVlq(value) {
      var res, signBit, digit, t1;
      if (value < $.$get$minInt32() || value > $.$get$maxInt32())
        throw A.wrapException(A.ArgumentError$("expected 32 bit int, got: " + value, null));
      res = A._setArrayType([], type$.JSArray_String);
      if (value < 0) {
        value = -value;
        signBit = 1;
      } else
        signBit = 0;
      value = value << 1 | signBit;
      do {
        digit = value & 31;
        value = value >>> 5;
        t1 = value > 0;
        res.push(string$.ABCDEF[t1 ? digit | 32 : digit]);
      } while (t1);
      return res;
    },
    isAllTheSame(iter) {
      var firstValue, t1, t2, value;
      if (iter.get$length(iter) === 0)
        return true;
      firstValue = iter.get$first(iter);
      for (t1 = A.SubListIterable$(iter, 1, null, iter.$ti._eval$1("ListIterable.E")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        value = t1.__internal$_current;
        if (!J.$eq$(value == null ? t2._as(value) : value, firstValue))
          return false;
      }
      return true;
    },
    replaceFirstNull(list, element) {
      var index = B.JSArray_methods.indexOf$1(list, null);
      if (index < 0)
        throw A.wrapException(A.ArgumentError$(A.S(list) + " contains no null elements.", null));
      list[index] = element;
    },
    replaceWithNull(list, element) {
      var index = B.JSArray_methods.indexOf$1(list, element);
      if (index < 0)
        throw A.wrapException(A.ArgumentError$(A.S(list) + " contains no elements matching " + element.toString$0(0) + ".", null));
      list[index] = null;
    },
    countCodeUnits(string, codeUnit) {
      var t1, t2, count, t3;
      for (t1 = new A.CodeUnits(string), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1, count = 0; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if ((t3 == null ? t2._as(t3) : t3) === codeUnit)
          ++count;
      }
      return count;
    },
    findLineStart(context, text, column) {
      var beginningOfLine, index, lineStart;
      if (text.length === 0)
        for (beginningOfLine = 0; true;) {
          index = B.JSString_methods.indexOf$2(context, "\n", beginningOfLine);
          if (index === -1)
            return context.length - beginningOfLine >= column ? beginningOfLine : null;
          if (index - beginningOfLine >= column)
            return beginningOfLine;
          beginningOfLine = index + 1;
        }
      index = B.JSString_methods.indexOf$1(context, text);
      for (; index !== -1;) {
        lineStart = index === 0 ? 0 : B.JSString_methods.lastIndexOf$2(context, "\n", index - 1) + 1;
        if (column === index - lineStart)
          return lineStart;
        index = B.JSString_methods.indexOf$2(context, text, index + 1);
      }
      return null;
    },
    validateErrorArgs(string, match, position, $length) {
      var t2,
        t1 = position != null;
      if (t1)
        if (position < 0)
          throw A.wrapException(A.RangeError$("position must be greater than or equal to 0."));
        else if (position > string.length)
          throw A.wrapException(A.RangeError$("position must be less than or equal to the string length."));
      t2 = $length != null;
      if (t2 && $length < 0)
        throw A.wrapException(A.RangeError$("length must be greater than or equal to 0."));
      if (t1 && t2 && position + $length > string.length)
        throw A.wrapException(A.RangeError$("position plus length must not go beyond the end of the string."));
    },
    CharacterExtension_get_isAlphabetic0(_this) {
      var t1;
      if (!(_this >= 97 && _this <= 122))
        t1 = _this >= 65 && _this <= 90;
      else
        t1 = true;
      return t1;
    },
    CharacterExtension_get_isHex0(_this) {
      var t1;
      if (!(_this >= 48 && _this <= 57))
        if (!(_this >= 97 && _this <= 102))
          t1 = _this >= 65 && _this <= 70;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    asHex0(character) {
      var t1;
      $label0$0: {
        if (character <= 57) {
          t1 = character - 48;
          break $label0$0;
        }
        if (character <= 70) {
          t1 = 10 + character - 65;
          break $label0$0;
        }
        t1 = 10 + character - 97;
        break $label0$0;
      }
      return t1;
    },
    hexCharFor0(number) {
      return number < 10 ? 48 + number : 87 + number;
    },
    opposite0(character) {
      var t1;
      $label0$0: {
        if (40 === character) {
          t1 = 41;
          break $label0$0;
        }
        if (123 === character) {
          t1 = 125;
          break $label0$0;
        }
        if (91 === character) {
          t1 = 93;
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$('"' + A.String_String$fromCharCode(character) + "\" isn't a brace-like character.", null));
      }
      return t1;
    },
    characterEqualsIgnoreCase0(character1, character2) {
      var upperCase1;
      if (character1 === character2)
        return true;
      if ((character1 ^ character2) >>> 0 !== 32)
        return false;
      upperCase1 = (character1 & 4294967263) >>> 0;
      return upperCase1 >= 65 && upperCase1 <= 90;
    },
    EvaluationContext_current0() {
      var context, t1,
        _0_0 = $.Zone__current.$index(0, B.Symbol__evaluationContext);
      if (type$.EvaluationContext_2._is(_0_0)) {
        context = _0_0;
        t1 = true;
      } else {
        context = null;
        t1 = false;
      }
      if (t1)
        return context;
      else
        throw A.wrapException(A.StateError$(string$.No_Sass));
    },
    IterableExtension_search0(_this, callback) {
      var t1, _0_0, value, t2;
      for (t1 = J.get$iterator$ax(_this); t1.moveNext$0();) {
        _0_0 = callback.call$1(t1.get$current(t1));
        if (_0_0 != null) {
          value = _0_0;
          t2 = true;
        } else {
          value = null;
          t2 = false;
        }
        if (t2)
          return value;
      }
      return null;
    },
    IterableExtension_get_exceptLast0(_this) {
      var t1 = J.getInterceptor$asx(_this),
        size = t1.get$length(_this) - 1;
      if (size < 0)
        throw A.wrapException(A.StateError$("Iterable may not be empty"));
      return t1.take$1(_this, size);
    },
    NullableExtension_andThen0(_this, fn) {
      return _this == null ? null : fn.call$1(_this);
    },
    fuzzyEquals0(number1, number2) {
      var t1;
      if (number1 === number2)
        return true;
      if (Math.abs(number1 - number2) <= $.$get$_epsilon0()) {
        t1 = $.$get$_inverseEpsilon0();
        t1 = B.JSNumber_methods.round$0(number1 * t1) === B.JSNumber_methods.round$0(number2 * t1);
      } else
        t1 = false;
      return t1;
    },
    fuzzyHashCode0(number) {
      if (!isFinite(number))
        return B.JSNumber_methods.get$hashCode(number);
      return B.JSInt_methods.get$hashCode(B.JSNumber_methods.round$0(number * $.$get$_inverseEpsilon0()));
    },
    fuzzyLessThan0(number1, number2) {
      return number1 < number2 && !A.fuzzyEquals0(number1, number2);
    },
    fuzzyLessThanOrEquals0(number1, number2) {
      return number1 < number2 || A.fuzzyEquals0(number1, number2);
    },
    fuzzyGreaterThan0(number1, number2) {
      return number1 > number2 && !A.fuzzyEquals0(number1, number2);
    },
    fuzzyGreaterThanOrEquals0(number1, number2) {
      return number1 > number2 || A.fuzzyEquals0(number1, number2);
    },
    fuzzyIsInt(number) {
      if (number == 1 / 0 || number == -1 / 0 || isNaN(number))
        return false;
      return A.fuzzyEquals0(number, B.JSNumber_methods.round$0(number));
    },
    fuzzyAsInt0(number) {
      var rounded;
      if (number == 1 / 0 || number == -1 / 0 || isNaN(number))
        return null;
      rounded = B.JSNumber_methods.round$0(number);
      return A.fuzzyEquals0(number, rounded) ? rounded : null;
    },
    fuzzyRound0(number) {
      var t1;
      if (number > 0) {
        t1 = B.JSNumber_methods.$mod(number, 1);
        return t1 < 0.5 && !A.fuzzyEquals0(t1, 0.5) ? B.JSNumber_methods.floor$0(number) : B.JSNumber_methods.ceil$0(number);
      } else {
        t1 = B.JSNumber_methods.$mod(number, 1);
        return t1 < 0.5 || A.fuzzyEquals0(t1, 0.5) ? B.JSNumber_methods.floor$0(number) : B.JSNumber_methods.ceil$0(number);
      }
    },
    fuzzyCheckRange0(number, min, max) {
      if (A.fuzzyEquals0(number, min))
        return min;
      if (A.fuzzyEquals0(number, max))
        return max;
      if (number > min && number < max)
        return number;
      return null;
    },
    fuzzyAssertRange0(number, min, max, $name) {
      var result = A.fuzzyCheckRange0(number, min, max);
      if (result != null)
        return result;
      throw A.wrapException(A.RangeError$range(number, min, max, $name, "must be between " + min + " and " + max));
    },
    moduloLikeSass0(num1, num2) {
      var result;
      if (num1 == 1 / 0 || num1 == -1 / 0)
        return 0 / 0;
      if (num2 == 1 / 0 || num2 == -1 / 0)
        return A.DoubleWithSignedZero_get_signIncludingZero0(num1) === J.get$sign$in(num2) ? num1 : 0 / 0;
      if (num2 > 0)
        return B.JSNumber_methods.$mod(num1, num2);
      if (num2 === 0)
        return 0 / 0;
      result = B.JSNumber_methods.$mod(num1, num2);
      return result === 0 ? 0 : result + num2;
    },
    sqrt0(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber0(Math.sqrt(number._number1$_value), null);
    },
    sin0(number) {
      return A.SassNumber_SassNumber0(Math.sin(number.coerceValueToUnit$2("rad", "number")), null);
    },
    cos0(number) {
      return A.SassNumber_SassNumber0(Math.cos(number.coerceValueToUnit$2("rad", "number")), null);
    },
    tan0(number) {
      return A.SassNumber_SassNumber0(Math.tan(number.coerceValueToUnit$2("rad", "number")), null);
    },
    atan0(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber$withUnits0(Math.atan(number._number1$_value) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    asin0(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber$withUnits0(Math.asin(number._number1$_value) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    acos0(number) {
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber$withUnits0(Math.acos(number._number1$_value) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    log0(number, base) {
      if (base != null)
        return A.SassNumber_SassNumber0(Math.log(number._number1$_value) / Math.log(base._number1$_value), null);
      return A.SassNumber_SassNumber0(Math.log(number._number1$_value), null);
    },
    pow1(base, exponent) {
      base.assertNoUnits$1("base");
      exponent.assertNoUnits$1("exponent");
      return A.SassNumber_SassNumber0(Math.pow(base._number1$_value, exponent._number1$_value), null);
    },
    DoubleWithSignedZero_get_signIncludingZero0(_this) {
      if (_this === -0.0)
        return -1;
      if (_this === 0)
        return 1;
      return J.get$sign$in(_this);
    },
    main1(args) {
      return A.main$body(args);
    },
    main$body(args) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$handler = 2, $async$currentError, options, graph, error, error0, stackTrace, buffer, rest, t1, t2, t3, exception, $async$exception, $async$temp1;
      var $async$main1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (args.length >= 1)
                if ("--embedded" === args[0]) {
                  rest = B.JSArray_methods.sublist$1(args, 1);
                  t1 = true;
                } else {
                  rest = null;
                  t1 = false;
                }
              else {
                rest = null;
                t1 = false;
              }
              if (t1) {
                A.main0(rest);
                // goto return
                $async$goto = 1;
                break;
              }
              options = null;
              $async$handler = 4;
              options = A.ExecutableOptions_ExecutableOptions$parse(args);
              t1 = options._options;
              $._glyphs = !(t1.wasParsed$1("unicode") ? A._asBool(t1.$index(0, "unicode")) : $._glyphs !== B.C_AsciiGlyphSet) ? B.C_AsciiGlyphSet : B.C_UnicodeGlyphSet;
              $async$goto = A._asBool(options._options.$index(0, "version")) ? 7 : 8;
              break;
            case 7:
              // then
              $async$temp1 = A;
              $async$goto = 9;
              return A._asyncAwait(A._loadVersion(), $async$main1);
            case 9:
              // returning from await.
              $async$temp1.print($async$result);
              t1 = A.isNodeJs() ? self.process : null;
              if (t1 != null)
                J.set$exitCode$x(t1, 0);
              // goto return
              $async$goto = 1;
              break;
            case 8:
              // join
              $async$goto = options.get$interactive() ? 10 : 11;
              break;
            case 10:
              // then
              $async$goto = 12;
              return A._asyncAwait(A.repl(options), $async$main1);
            case 12:
              // returning from await.
              // goto return
              $async$goto = 1;
              break;
            case 11:
              // join
              t1 = type$.List_String._as(options._options.$index(0, "load-path"));
              t2 = options;
              t2 = A._asBool(t2._options.$index(0, "quiet")) ? $.$get$Logger_quiet() : new A.StderrLogger(t2.get$color());
              t3 = type$.Uri;
              graph = new A.StylesheetGraph(A.LinkedHashMap_LinkedHashMap$_empty(t3, type$.StylesheetNode), A.ImportCache$(t1, new A.DeprecationHandlingLogger(A.LinkedHashMap_LinkedHashMap$_empty(type$.Deprecation, type$.int), t2, options.get$fatalDeprecations(), options.get$futureDeprecations(), false)), A.LinkedHashMap_LinkedHashMap$_empty(t3, type$.DateTime));
              $async$goto = A._asBool(options._options.$index(0, "watch")) ? 13 : 14;
              break;
            case 13:
              // then
              $async$goto = 15;
              return A._asyncAwait(A.watch(options, graph), $async$main1);
            case 15:
              // returning from await.
              // goto return
              $async$goto = 1;
              break;
            case 14:
              // join
              t1 = options;
              t2 = options;
              t2._ensureSources$0();
              t2 = t2._sourcesToDestinations;
              t2.toString;
              $async$goto = 16;
              return A._asyncAwait(A.compileStylesheets(t1, graph, t2, A._asBool(options._options.$index(0, "update"))), $async$main1);
            case 16:
              // returning from await.
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.UsageException) {
                error = t1;
                A.print(error.message + "\n");
                A.print("Usage: sass <input.scss> [output.css]\n       sass <input.scss>:<output.css> <input/>:<output/> <dir/>\n");
                t1 = $.$get$ExecutableOptions__parser();
                A.print(new A._Usage(t1._optionsAndSeparators, new A.StringBuffer(""), t1.usageLineLength).generate$0());
                t1 = A.isNodeJs() ? self.process : null;
                if (t1 != null)
                  J.set$exitCode$x(t1, 64);
              } else {
                error0 = t1;
                stackTrace = A.getTraceFromException($async$exception);
                buffer = new A.StringBuffer("");
                t1 = options;
                t1 = t1 == null ? null : t1.get$color();
                if (t1 === true)
                  buffer._contents += "\x1b[31m\x1b[1m";
                buffer._contents += "Unexpected exception:";
                t1 = options;
                t1 = t1 == null ? null : t1.get$color();
                if (t1 === true)
                  buffer._contents += "\x1b[0m";
                buffer._contents += "\n";
                buffer._contents += A.S(error0) + "\n";
                buffer._contents += "\n";
                buffer._contents += "\n";
                t1 = A.getTrace(error0);
                buffer._contents += B.JSString_methods.trimRight$0(A.Trace_Trace$from(t1 == null ? stackTrace : t1).get$terse().toString$0(0));
                A.printError(buffer);
                t1 = A.isNodeJs() ? self.process : null;
                if (t1 != null)
                  J.set$exitCode$x(t1, 255);
              }
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$main1, $async$completer);
    },
    _loadVersion() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue;
      var $async$_loadVersion = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = "1.69.5 compiled with dart2js 3.1.5";
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_loadVersion, $async$completer);
    },
    SpanExtensions_trimLeft0(_this) {
      var t5,
        t1 = _this._file$_start,
        t2 = _this._end,
        t3 = _this.file._decodedChars,
        t4 = t3.length,
        start = 0;
      while (true) {
        t5 = A.String_String$fromCharCodes(new Uint32Array(t3.subarray(t1, A._checkValidRange(t1, t2, t4))), 0, null).charCodeAt(start);
        if (!(t5 === 32 || t5 === 9 || t5 === 10 || t5 === 13 || t5 === 12))
          break;
        ++start;
      }
      return A.FileSpanExtension_subspan(_this, start, null);
    },
    SpanExtensions_trimRight0(_this) {
      var t1,
        end = _this.get$text().length - 1;
      while (true) {
        t1 = _this.get$text().charCodeAt(end);
        if (!(t1 === 32 || t1 === 9 || t1 === 10 || t1 === 13 || t1 === 12))
          break;
        --end;
      }
      return A.FileSpanExtension_subspan(_this, 0, end + 1);
    },
    validateUrlScheme(scheme) {
      var t1 = $.$get$_urlSchemeRegExp();
      if (!t1._nativeRegExp.test(scheme))
        A.jsThrow(new self.Error('"' + scheme + '" isn\'t a valid URL scheme (for example "file").'));
    },
    unwrapValue(object) {
      var value;
      if (object != null) {
        if (object instanceof A.Value0)
          return object;
        value = object.dartValue;
        if (value != null && value instanceof A.Value0)
          return value;
        if (object instanceof self.Error)
          throw A.wrapException(object);
      }
      throw A.wrapException(A.S(object) + " must be a Sass value type.");
    },
    wrapValue(value) {
      var t1;
      $label0$0: {
        if (value instanceof A.SassColor0) {
          t1 = A.callConstructor($.$get$legacyColorClass(), [null, null, null, null, value]);
          break $label0$0;
        }
        if (value instanceof A.SassList0) {
          t1 = A.callConstructor($.$get$legacyListClass(), [null, null, value]);
          break $label0$0;
        }
        if (value instanceof A.SassMap0) {
          t1 = A.callConstructor($.$get$legacyMapClass(), [null, value]);
          break $label0$0;
        }
        if (value instanceof A.SassNumber0) {
          t1 = A.callConstructor($.$get$legacyNumberClass(), [null, null, value]);
          break $label0$0;
        }
        if (value instanceof A.SassString0) {
          t1 = A.callConstructor($.$get$legacyStringClass(), [null, value]);
          break $label0$0;
        }
        t1 = value;
        break $label0$0;
      }
      return t1;
    }
  },
  J = {
    makeDispatchRecord(interceptor, proto, extension, indexability) {
      return {i: interceptor, p: proto, e: extension, x: indexability};
    },
    getNativeInterceptor(object) {
      var proto, objectProto, $constructor, interceptor, t1,
        record = object[init.dispatchPropertyName];
      if (record == null)
        if ($.initNativeDispatchFlag == null) {
          A.initNativeDispatch();
          record = object[init.dispatchPropertyName];
        }
      if (record != null) {
        proto = record.p;
        if (false === proto)
          return record.i;
        if (true === proto)
          return object;
        objectProto = Object.getPrototypeOf(object);
        if (proto === objectProto)
          return record.i;
        if (record.e === objectProto)
          throw A.wrapException(A.UnimplementedError$("Return interceptor for " + A.S(proto(object, record))));
      }
      $constructor = object.constructor;
      if ($constructor == null)
        interceptor = null;
      else {
        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
        if (t1 == null)
          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
        interceptor = $constructor[t1];
      }
      if (interceptor != null)
        return interceptor;
      interceptor = A.lookupAndCacheInterceptor(object);
      if (interceptor != null)
        return interceptor;
      if (typeof object == "function")
        return B.JavaScriptFunction_methods;
      proto = Object.getPrototypeOf(object);
      if (proto == null)
        return B.PlainJavaScriptObject_methods;
      if (proto === Object.prototype)
        return B.PlainJavaScriptObject_methods;
      if (typeof $constructor == "function") {
        t1 = $._JS_INTEROP_INTERCEPTOR_TAG;
        if (t1 == null)
          t1 = $._JS_INTEROP_INTERCEPTOR_TAG = init.getIsolateTag("_$dart_js");
        Object.defineProperty($constructor, t1, {value: B.UnknownJavaScriptObject_methods, enumerable: false, writable: true, configurable: true});
        return B.UnknownJavaScriptObject_methods;
      }
      return B.UnknownJavaScriptObject_methods;
    },
    JSArray_JSArray$fixed($length, $E) {
      if ($length < 0 || $length > 4294967295)
        throw A.wrapException(A.RangeError$range($length, 0, 4294967295, "length", null));
      return J.JSArray_JSArray$markFixed(new Array($length), $E);
    },
    JSArray_JSArray$allocateFixed($length, $E) {
      if ($length > 4294967295)
        throw A.wrapException(A.RangeError$range($length, 0, 4294967295, "length", null));
      return J.JSArray_JSArray$markFixed(new Array($length), $E);
    },
    JSArray_JSArray$growable($length, $E) {
      if ($length < 0)
        throw A.wrapException(A.ArgumentError$("Length must be a non-negative integer: " + $length, null));
      return A._setArrayType(new Array($length), $E._eval$1("JSArray<0>"));
    },
    JSArray_JSArray$allocateGrowable($length, $E) {
      if ($length < 0)
        throw A.wrapException(A.ArgumentError$("Length must be a non-negative integer: " + $length, null));
      return A._setArrayType(new Array($length), $E._eval$1("JSArray<0>"));
    },
    JSArray_JSArray$markFixed(allocation, $E) {
      return J.JSArray_markFixedList(A._setArrayType(allocation, $E._eval$1("JSArray<0>")));
    },
    JSArray_markFixedList(list) {
      list.fixed$length = Array;
      return list;
    },
    JSArray_markUnmodifiableList(list) {
      list.fixed$length = Array;
      list.immutable$list = Array;
      return list;
    },
    JSArray__compareAny(a, b) {
      return J.compareTo$1$ns(a, b);
    },
    JSString__isWhitespace(codeUnit) {
      if (codeUnit < 256)
        switch (codeUnit) {
          case 9:
          case 10:
          case 11:
          case 12:
          case 13:
          case 32:
          case 133:
          case 160:
            return true;
          default:
            return false;
        }
      switch (codeUnit) {
        case 5760:
        case 8192:
        case 8193:
        case 8194:
        case 8195:
        case 8196:
        case 8197:
        case 8198:
        case 8199:
        case 8200:
        case 8201:
        case 8202:
        case 8232:
        case 8233:
        case 8239:
        case 8287:
        case 12288:
        case 65279:
          return true;
        default:
          return false;
      }
    },
    JSString__skipLeadingWhitespace(string, index) {
      var t1, codeUnit;
      for (t1 = string.length; index < t1;) {
        codeUnit = string.charCodeAt(index);
        if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
          break;
        ++index;
      }
      return index;
    },
    JSString__skipTrailingWhitespace(string, index) {
      var index0, codeUnit;
      for (; index > 0; index = index0) {
        index0 = index - 1;
        codeUnit = string.charCodeAt(index0);
        if (codeUnit !== 32 && codeUnit !== 13 && !J.JSString__isWhitespace(codeUnit))
          break;
      }
      return index;
    },
    getInterceptor$(receiver) {
      if (typeof receiver == "number") {
        if (Math.floor(receiver) == receiver)
          return J.JSInt.prototype;
        return J.JSNumNotInt.prototype;
      }
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return J.JSNull.prototype;
      if (typeof receiver == "boolean")
        return J.JSBool.prototype;
      if (Array.isArray(receiver))
        return J.JSArray.prototype;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$ansx(receiver) {
      if (typeof receiver == "number")
        return J.JSNumber.prototype;
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return receiver;
      if (Array.isArray(receiver))
        return J.JSArray.prototype;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$asx(receiver) {
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return receiver;
      if (Array.isArray(receiver))
        return J.JSArray.prototype;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$ax(receiver) {
      if (receiver == null)
        return receiver;
      if (Array.isArray(receiver))
        return J.JSArray.prototype;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$in(receiver) {
      if (typeof receiver == "number") {
        if (Math.floor(receiver) == receiver)
          return J.JSInt.prototype;
        return J.JSNumNotInt.prototype;
      }
      if (receiver == null)
        return receiver;
      if (!(receiver instanceof A.Object))
        return J.UnknownJavaScriptObject.prototype;
      return receiver;
    },
    getInterceptor$n(receiver) {
      if (typeof receiver == "number")
        return J.JSNumber.prototype;
      if (receiver == null)
        return receiver;
      if (!(receiver instanceof A.Object))
        return J.UnknownJavaScriptObject.prototype;
      return receiver;
    },
    getInterceptor$ns(receiver) {
      if (typeof receiver == "number")
        return J.JSNumber.prototype;
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return receiver;
      if (!(receiver instanceof A.Object))
        return J.UnknownJavaScriptObject.prototype;
      return receiver;
    },
    getInterceptor$s(receiver) {
      if (typeof receiver == "string")
        return J.JSString.prototype;
      if (receiver == null)
        return receiver;
      if (!(receiver instanceof A.Object))
        return J.UnknownJavaScriptObject.prototype;
      return receiver;
    },
    getInterceptor$x(receiver) {
      if (receiver == null)
        return receiver;
      if (typeof receiver != "object") {
        if (typeof receiver == "function")
          return J.JavaScriptFunction.prototype;
        return receiver;
      }
      if (receiver instanceof A.Object)
        return receiver;
      return J.getNativeInterceptor(receiver);
    },
    getInterceptor$z(receiver) {
      if (receiver == null)
        return receiver;
      if (!(receiver instanceof A.Object))
        return J.UnknownJavaScriptObject.prototype;
      return receiver;
    },
    set$CalculationInterpolation$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$CalculationInterpolation(receiver, value);
    },
    set$CalculationOperation$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$CalculationOperation(receiver, value);
    },
    set$Exception$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$Exception(receiver, value);
    },
    set$FALSE$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$FALSE(receiver, value);
    },
    set$Logger$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$Logger(receiver, value);
    },
    set$NULL$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$NULL(receiver, value);
    },
    set$SassArgumentList$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassArgumentList(receiver, value);
    },
    set$SassBoolean$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassBoolean(receiver, value);
    },
    set$SassCalculation$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassCalculation(receiver, value);
    },
    set$SassColor$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassColor(receiver, value);
    },
    set$SassFunction$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassFunction(receiver, value);
    },
    set$SassList$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassList(receiver, value);
    },
    set$SassMap$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassMap(receiver, value);
    },
    set$SassMixin$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassMixin(receiver, value);
    },
    set$SassNumber$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassNumber(receiver, value);
    },
    set$SassString$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$SassString(receiver, value);
    },
    set$TRUE$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$TRUE(receiver, value);
    },
    set$Value$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$Value(receiver, value);
    },
    set$cli_pkg_main_0_$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$cli_pkg_main_0_(receiver, value);
    },
    set$compile$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$compile(receiver, value);
    },
    set$compileAsync$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$compileAsync(receiver, value);
    },
    set$compileString$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$compileString(receiver, value);
    },
    set$compileStringAsync$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$compileStringAsync(receiver, value);
    },
    set$context$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$context(receiver, value);
    },
    set$dartValue$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$dartValue(receiver, value);
    },
    set$exitCode$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$exitCode(receiver, value);
    },
    set$info$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$info(receiver, value);
    },
    set$length$asx(receiver, value) {
      return J.getInterceptor$asx(receiver).set$length(receiver, value);
    },
    set$render$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$render(receiver, value);
    },
    set$renderSync$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$renderSync(receiver, value);
    },
    set$sassFalse$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$sassFalse(receiver, value);
    },
    set$sassNull$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$sassNull(receiver, value);
    },
    set$sassTrue$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$sassTrue(receiver, value);
    },
    set$types$x(receiver, value) {
      return J.getInterceptor$x(receiver).set$types(receiver, value);
    },
    get$$prototype$x(receiver) {
      return J.getInterceptor$x(receiver).get$$prototype(receiver);
    },
    get$_dartException$x(receiver) {
      return J.getInterceptor$x(receiver).get$_dartException(receiver);
    },
    get$alertAscii$x(receiver) {
      return J.getInterceptor$x(receiver).get$alertAscii(receiver);
    },
    get$alertColor$x(receiver) {
      return J.getInterceptor$x(receiver).get$alertColor(receiver);
    },
    get$blue$x(receiver) {
      return J.getInterceptor$x(receiver).get$blue(receiver);
    },
    get$brackets$x(receiver) {
      return J.getInterceptor$x(receiver).get$brackets(receiver);
    },
    get$charset$x(receiver) {
      return J.getInterceptor$x(receiver).get$charset(receiver);
    },
    get$code$x(receiver) {
      return J.getInterceptor$x(receiver).get$code(receiver);
    },
    get$current$x(receiver) {
      return J.getInterceptor$x(receiver).get$current(receiver);
    },
    get$dartValue$x(receiver) {
      return J.getInterceptor$x(receiver).get$dartValue(receiver);
    },
    get$debug$x(receiver) {
      return J.getInterceptor$x(receiver).get$debug(receiver);
    },
    get$denominatorUnits$x(receiver) {
      return J.getInterceptor$x(receiver).get$denominatorUnits(receiver);
    },
    get$end$z(receiver) {
      return J.getInterceptor$z(receiver).get$end(receiver);
    },
    get$env$x(receiver) {
      return J.getInterceptor$x(receiver).get$env(receiver);
    },
    get$exitCode$x(receiver) {
      return J.getInterceptor$x(receiver).get$exitCode(receiver);
    },
    get$fiber$x(receiver) {
      return J.getInterceptor$x(receiver).get$fiber(receiver);
    },
    get$file$x(receiver) {
      return J.getInterceptor$x(receiver).get$file(receiver);
    },
    get$first$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$first(receiver);
    },
    get$functions$x(receiver) {
      return J.getInterceptor$x(receiver).get$functions(receiver);
    },
    get$green$x(receiver) {
      return J.getInterceptor$x(receiver).get$green(receiver);
    },
    get$hashCode$(receiver) {
      return J.getInterceptor$(receiver).get$hashCode(receiver);
    },
    get$importer$x(receiver) {
      return J.getInterceptor$x(receiver).get$importer(receiver);
    },
    get$importers$x(receiver) {
      return J.getInterceptor$x(receiver).get$importers(receiver);
    },
    get$isEmpty$asx(receiver) {
      return J.getInterceptor$asx(receiver).get$isEmpty(receiver);
    },
    get$isNotEmpty$asx(receiver) {
      return J.getInterceptor$asx(receiver).get$isNotEmpty(receiver);
    },
    get$isTTY$x(receiver) {
      return J.getInterceptor$x(receiver).get$isTTY(receiver);
    },
    get$iterator$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$iterator(receiver);
    },
    get$keys$z(receiver) {
      return J.getInterceptor$z(receiver).get$keys(receiver);
    },
    get$last$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$last(receiver);
    },
    get$length$asx(receiver) {
      return J.getInterceptor$asx(receiver).get$length(receiver);
    },
    get$loadPaths$x(receiver) {
      return J.getInterceptor$x(receiver).get$loadPaths(receiver);
    },
    get$logger$x(receiver) {
      return J.getInterceptor$x(receiver).get$logger(receiver);
    },
    get$message$x(receiver) {
      return J.getInterceptor$x(receiver).get$message(receiver);
    },
    get$mtime$x(receiver) {
      return J.getInterceptor$x(receiver).get$mtime(receiver);
    },
    get$name$x(receiver) {
      return J.getInterceptor$x(receiver).get$name(receiver);
    },
    get$numeratorUnits$x(receiver) {
      return J.getInterceptor$x(receiver).get$numeratorUnits(receiver);
    },
    get$options$x(receiver) {
      return J.getInterceptor$x(receiver).get$options(receiver);
    },
    get$parent$z(receiver) {
      return J.getInterceptor$z(receiver).get$parent(receiver);
    },
    get$path$x(receiver) {
      return J.getInterceptor$x(receiver).get$path(receiver);
    },
    get$platform$x(receiver) {
      return J.getInterceptor$x(receiver).get$platform(receiver);
    },
    get$quietDeps$x(receiver) {
      return J.getInterceptor$x(receiver).get$quietDeps(receiver);
    },
    get$quotes$x(receiver) {
      return J.getInterceptor$x(receiver).get$quotes(receiver);
    },
    get$red$x(receiver) {
      return J.getInterceptor$x(receiver).get$red(receiver);
    },
    get$release$x(receiver) {
      return J.getInterceptor$x(receiver).get$release(receiver);
    },
    get$reversed$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$reversed(receiver);
    },
    get$runtimeType$(receiver) {
      return J.getInterceptor$(receiver).get$runtimeType(receiver);
    },
    get$separator$x(receiver) {
      return J.getInterceptor$x(receiver).get$separator(receiver);
    },
    get$sign$in(receiver) {
      if (typeof receiver === "number")
        return receiver > 0 ? 1 : receiver < 0 ? -1 : receiver;
      return J.getInterceptor$in(receiver).get$sign(receiver);
    },
    get$single$ax(receiver) {
      return J.getInterceptor$ax(receiver).get$single(receiver);
    },
    get$sourceMap$x(receiver) {
      return J.getInterceptor$x(receiver).get$sourceMap(receiver);
    },
    get$sourceMapIncludeSources$x(receiver) {
      return J.getInterceptor$x(receiver).get$sourceMapIncludeSources(receiver);
    },
    get$span$z(receiver) {
      return J.getInterceptor$z(receiver).get$span(receiver);
    },
    get$stderr$x(receiver) {
      return J.getInterceptor$x(receiver).get$stderr(receiver);
    },
    get$stdout$x(receiver) {
      return J.getInterceptor$x(receiver).get$stdout(receiver);
    },
    get$style$x(receiver) {
      return J.getInterceptor$x(receiver).get$style(receiver);
    },
    get$syntax$x(receiver) {
      return J.getInterceptor$x(receiver).get$syntax(receiver);
    },
    get$trace$z(receiver) {
      return J.getInterceptor$z(receiver).get$trace(receiver);
    },
    get$url$x(receiver) {
      return J.getInterceptor$x(receiver).get$url(receiver);
    },
    get$verbose$x(receiver) {
      return J.getInterceptor$x(receiver).get$verbose(receiver);
    },
    get$warn$x(receiver) {
      return J.getInterceptor$x(receiver).get$warn(receiver);
    },
    $add$ansx(receiver, a0) {
      if (typeof receiver == "number" && typeof a0 == "number")
        return receiver + a0;
      return J.getInterceptor$ansx(receiver).$add(receiver, a0);
    },
    $eq$(receiver, a0) {
      if (receiver == null)
        return a0 == null;
      if (typeof receiver != "object")
        return a0 != null && receiver === a0;
      return J.getInterceptor$(receiver).$eq(receiver, a0);
    },
    $index$asx(receiver, a0) {
      if (typeof a0 === "number")
        if (Array.isArray(receiver) || typeof receiver == "string" || A.isJsIndexable(receiver, receiver[init.dispatchPropertyName]))
          if (a0 >>> 0 === a0 && a0 < receiver.length)
            return receiver[a0];
      return J.getInterceptor$asx(receiver).$index(receiver, a0);
    },
    $indexSet$ax(receiver, a0, a1) {
      if (typeof a0 === "number")
        if ((Array.isArray(receiver) || A.isJsIndexable(receiver, receiver[init.dispatchPropertyName])) && !receiver.immutable$list && a0 >>> 0 === a0 && a0 < receiver.length)
          return receiver[a0] = a1;
      return J.getInterceptor$ax(receiver).$indexSet(receiver, a0, a1);
    },
    $set$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).$set$2(receiver, a0, a1);
    },
    add$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).add$1(receiver, a0);
    },
    addAll$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).addAll$1(receiver, a0);
    },
    allMatches$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).allMatches$1(receiver, a0);
    },
    allMatches$2$s(receiver, a0, a1) {
      return J.getInterceptor$s(receiver).allMatches$2(receiver, a0, a1);
    },
    any$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).any$1(receiver, a0);
    },
    apply$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).apply$2(receiver, a0, a1);
    },
    asImmutable$0$x(receiver) {
      return J.getInterceptor$x(receiver).asImmutable$0(receiver);
    },
    asMutable$0$x(receiver) {
      return J.getInterceptor$x(receiver).asMutable$0(receiver);
    },
    canonicalize$4$baseImporter$baseUrl$forImport$x(receiver, a0, a1, a2, a3) {
      return J.getInterceptor$x(receiver).canonicalize$4$baseImporter$baseUrl$forImport(receiver, a0, a1, a2, a3);
    },
    cast$1$0$ax(receiver, $T1) {
      return J.getInterceptor$ax(receiver).cast$1$0(receiver, $T1);
    },
    close$0$x(receiver) {
      return J.getInterceptor$x(receiver).close$0(receiver);
    },
    codeUnitAt$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).codeUnitAt$1(receiver, a0);
    },
    compareTo$1$ns(receiver, a0) {
      return J.getInterceptor$ns(receiver).compareTo$1(receiver, a0);
    },
    contains$1$asx(receiver, a0) {
      return J.getInterceptor$asx(receiver).contains$1(receiver, a0);
    },
    createInterface$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).createInterface$1(receiver, a0);
    },
    elementAt$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).elementAt$1(receiver, a0);
    },
    endsWith$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).endsWith$1(receiver, a0);
    },
    error$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).error$1(receiver, a0);
    },
    every$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).every$1(receiver, a0);
    },
    existsSync$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).existsSync$1(receiver, a0);
    },
    expand$1$1$ax(receiver, a0, $T1) {
      return J.getInterceptor$ax(receiver).expand$1$1(receiver, a0, $T1);
    },
    fillRange$3$ax(receiver, a0, a1, a2) {
      return J.getInterceptor$ax(receiver).fillRange$3(receiver, a0, a1, a2);
    },
    fold$2$ax(receiver, a0, a1) {
      return J.getInterceptor$ax(receiver).fold$2(receiver, a0, a1);
    },
    forEach$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).forEach$1(receiver, a0);
    },
    getRange$2$ax(receiver, a0, a1) {
      return J.getInterceptor$ax(receiver).getRange$2(receiver, a0, a1);
    },
    getTime$0$x(receiver) {
      return J.getInterceptor$x(receiver).getTime$0(receiver);
    },
    isDirectory$0$x(receiver) {
      return J.getInterceptor$x(receiver).isDirectory$0(receiver);
    },
    isFile$0$x(receiver) {
      return J.getInterceptor$x(receiver).isFile$0(receiver);
    },
    join$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).join$1(receiver, a0);
    },
    listen$1$z(receiver, a0) {
      return J.getInterceptor$z(receiver).listen$1(receiver, a0);
    },
    log$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).log$1(receiver, a0);
    },
    map$1$1$ax(receiver, a0, $T1) {
      return J.getInterceptor$ax(receiver).map$1$1(receiver, a0, $T1);
    },
    matchAsPrefix$2$s(receiver, a0, a1) {
      return J.getInterceptor$s(receiver).matchAsPrefix$2(receiver, a0, a1);
    },
    mkdirSync$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).mkdirSync$1(receiver, a0);
    },
    noSuchMethod$1$(receiver, a0) {
      return J.getInterceptor$(receiver).noSuchMethod$1(receiver, a0);
    },
    on$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).on$2(receiver, a0, a1);
    },
    readFileSync$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).readFileSync$2(receiver, a0, a1);
    },
    readdirSync$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).readdirSync$1(receiver, a0);
    },
    remove$1$z(receiver, a0) {
      return J.getInterceptor$z(receiver).remove$1(receiver, a0);
    },
    removeRange$2$ax(receiver, a0, a1) {
      return J.getInterceptor$ax(receiver).removeRange$2(receiver, a0, a1);
    },
    run$0$x(receiver) {
      return J.getInterceptor$x(receiver).run$0(receiver);
    },
    run$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).run$1(receiver, a0);
    },
    setRange$4$ax(receiver, a0, a1, a2, a3) {
      return J.getInterceptor$ax(receiver).setRange$4(receiver, a0, a1, a2, a3);
    },
    skip$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).skip$1(receiver, a0);
    },
    sort$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).sort$1(receiver, a0);
    },
    startsWith$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).startsWith$1(receiver, a0);
    },
    statSync$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).statSync$1(receiver, a0);
    },
    sublist$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).sublist$1(receiver, a0);
    },
    substring$1$s(receiver, a0) {
      return J.getInterceptor$s(receiver).substring$1(receiver, a0);
    },
    substring$2$s(receiver, a0, a1) {
      return J.getInterceptor$s(receiver).substring$2(receiver, a0, a1);
    },
    take$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).take$1(receiver, a0);
    },
    then$1$1$x(receiver, a0, $T1) {
      return J.getInterceptor$x(receiver).then$1$1(receiver, a0, $T1);
    },
    then$1$2$onError$x(receiver, a0, a1, $T1) {
      return J.getInterceptor$x(receiver).then$1$2$onError(receiver, a0, a1, $T1);
    },
    then$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).then$2(receiver, a0, a1);
    },
    toArray$0$x(receiver) {
      return J.getInterceptor$x(receiver).toArray$0(receiver);
    },
    toList$0$ax(receiver) {
      return J.getInterceptor$ax(receiver).toList$0(receiver);
    },
    toList$1$growable$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).toList$1$growable(receiver, a0);
    },
    toRadixString$1$n(receiver, a0) {
      return J.getInterceptor$n(receiver).toRadixString$1(receiver, a0);
    },
    toSet$0$ax(receiver) {
      return J.getInterceptor$ax(receiver).toSet$0(receiver);
    },
    toString$0$(receiver) {
      return J.getInterceptor$(receiver).toString$0(receiver);
    },
    toString$1$color$(receiver, a0) {
      return J.getInterceptor$(receiver).toString$1$color(receiver, a0);
    },
    trim$0$s(receiver) {
      return J.getInterceptor$s(receiver).trim$0(receiver);
    },
    unlinkSync$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).unlinkSync$1(receiver, a0);
    },
    watch$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).watch$2(receiver, a0, a1);
    },
    where$1$ax(receiver, a0) {
      return J.getInterceptor$ax(receiver).where$1(receiver, a0);
    },
    write$1$x(receiver, a0) {
      return J.getInterceptor$x(receiver).write$1(receiver, a0);
    },
    writeFileSync$2$x(receiver, a0, a1) {
      return J.getInterceptor$x(receiver).writeFileSync$2(receiver, a0, a1);
    },
    yield$0$x(receiver) {
      return J.getInterceptor$x(receiver).yield$0(receiver);
    },
    Interceptor: function Interceptor() {
    },
    JSBool: function JSBool() {
    },
    JSNull: function JSNull() {
    },
    JavaScriptObject: function JavaScriptObject() {
    },
    LegacyJavaScriptObject: function LegacyJavaScriptObject() {
    },
    PlainJavaScriptObject: function PlainJavaScriptObject() {
    },
    UnknownJavaScriptObject: function UnknownJavaScriptObject() {
    },
    JavaScriptFunction: function JavaScriptFunction() {
    },
    JSArray: function JSArray(t0) {
      this.$ti = t0;
    },
    JSUnmodifiableArray: function JSUnmodifiableArray(t0) {
      this.$ti = t0;
    },
    ArrayIterator: function ArrayIterator(t0, t1) {
      var _ = this;
      _._iterable = t0;
      _._length = t1;
      _._index = 0;
      _._current = null;
    },
    JSNumber: function JSNumber() {
    },
    JSInt: function JSInt() {
    },
    JSNumNotInt: function JSNumNotInt() {
    },
    JSString: function JSString() {
    }
  },
  B = {};
  var holders = [A, J, B];
  var $ = {};
  A.JS_CONST.prototype = {};
  J.Interceptor.prototype = {
    $eq(receiver, other) {
      return receiver === other;
    },
    get$hashCode(receiver) {
      return A.Primitives_objectHashCode(receiver);
    },
    toString$0(receiver) {
      return "Instance of '" + A.Primitives_objectTypeName(receiver) + "'";
    },
    noSuchMethod$1(receiver, invocation) {
      throw A.wrapException(A.NoSuchMethodError_NoSuchMethodError$withInvocation(receiver, invocation));
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(A._instanceTypeFromConstructor(this));
    }
  };
  J.JSBool.prototype = {
    toString$0(receiver) {
      return String(receiver);
    },
    get$hashCode(receiver) {
      return receiver ? 519018 : 218159;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.bool);
    },
    $isTrustedGetRuntimeType: 1,
    $isbool: 1
  };
  J.JSNull.prototype = {
    $eq(receiver, other) {
      return null == other;
    },
    toString$0(receiver) {
      return "null";
    },
    get$hashCode(receiver) {
      return 0;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.Null);
    },
    $isTrustedGetRuntimeType: 1,
    $isNull: 1
  };
  J.JavaScriptObject.prototype = {};
  J.LegacyJavaScriptObject.prototype = {
    get$hashCode(receiver) {
      return 0;
    },
    toString$0(receiver) {
      return String(receiver);
    },
    $isPromise: 1,
    $isJsSystemError: 1,
    $isImmutableList: 1,
    $is_Channels: 1,
    $is_NodeSassColor: 1,
    $isCompileOptions: 1,
    $isCompileStringOptions: 1,
    $isNodeCompileResult: 1,
    $is_NodeException: 1,
    $isFiber: 1,
    $isJSFunction0: 1,
    $isImmutableList0: 1,
    $isImmutableMap0: 1,
    $isJSImporter: 1,
    $isJSImporterResult: 1,
    $isNodeImporterResult0: 1,
    $is_ConstructorOptions: 1,
    $is_NodeSassList: 1,
    $isWarnOptions: 1,
    $isDebugOptions: 1,
    $is_NodeSassMap: 1,
    $is_ConstructorOptions0: 1,
    $is_NodeSassNumber: 1,
    $isJSClass0: 1,
    $isRenderContextOptions0: 1,
    $isRenderOptions: 1,
    $isRenderResult: 1,
    $is_ConstructorOptions1: 1,
    $is_NodeSassString: 1,
    $isJSUrl0: 1,
    get$isTTY(obj) {
      return obj.isTTY;
    },
    get$write(obj) {
      return obj.write;
    },
    write$1(receiver, p0) {
      return receiver.write(p0);
    },
    createInterface$1(receiver, p0) {
      return receiver.createInterface(p0);
    },
    on$2(receiver, p0, p1) {
      return receiver.on(p0, p1);
    },
    get$close(obj) {
      return obj.close;
    },
    close$0(receiver) {
      return receiver.close();
    },
    setPrompt$1(receiver, p0) {
      return receiver.setPrompt(p0);
    },
    get$length(obj) {
      return obj.length;
    },
    toString$0(receiver) {
      return receiver.toString();
    },
    get$debug(obj) {
      return obj.debug;
    },
    debug$2(receiver, p0, p1) {
      return receiver.debug(p0, p1);
    },
    get$error(obj) {
      return obj.error;
    },
    error$1(receiver, p0) {
      return receiver.error(p0);
    },
    error$2(receiver, p0, p1) {
      return receiver.error(p0, p1);
    },
    log$1(receiver, p0) {
      return receiver.log(p0);
    },
    get$warn(obj) {
      return obj.warn;
    },
    warn$1(receiver, p0) {
      return receiver.warn(p0);
    },
    warn$2(receiver, p0, p1) {
      return receiver.warn(p0, p1);
    },
    existsSync$1(receiver, p0) {
      return receiver.existsSync(p0);
    },
    mkdirSync$1(receiver, p0) {
      return receiver.mkdirSync(p0);
    },
    readdirSync$1(receiver, p0) {
      return receiver.readdirSync(p0);
    },
    readFileSync$2(receiver, p0, p1) {
      return receiver.readFileSync(p0, p1);
    },
    statSync$1(receiver, p0) {
      return receiver.statSync(p0);
    },
    unlinkSync$1(receiver, p0) {
      return receiver.unlinkSync(p0);
    },
    watch$2(receiver, p0, p1) {
      return receiver.watch(p0, p1);
    },
    writeFileSync$2(receiver, p0, p1) {
      return receiver.writeFileSync(p0, p1);
    },
    get$path(obj) {
      return obj.path;
    },
    isDirectory$0(receiver) {
      return receiver.isDirectory();
    },
    isFile$0(receiver) {
      return receiver.isFile();
    },
    get$mtime(obj) {
      return obj.mtime;
    },
    then$1$1(receiver, p0) {
      return receiver.then(p0);
    },
    then$2(receiver, p0, p1) {
      return receiver.then(p0, p1);
    },
    getTime$0(receiver) {
      return receiver.getTime();
    },
    get$message(obj) {
      return obj.message;
    },
    message$1(receiver, p0) {
      return receiver.message(p0);
    },
    get$code(obj) {
      return obj.code;
    },
    get$syscall(obj) {
      return obj.syscall;
    },
    get$env(obj) {
      return obj.env;
    },
    get$exitCode(obj) {
      return obj.exitCode;
    },
    set$exitCode(obj, v) {
      return obj.exitCode = v;
    },
    get$platform(obj) {
      return obj.platform;
    },
    get$release(obj) {
      return obj.release;
    },
    get$stderr(obj) {
      return obj.stderr;
    },
    get$stdin(obj) {
      return obj.stdin;
    },
    get$stdout(obj) {
      return obj.stdout;
    },
    get$name(obj) {
      return obj.name;
    },
    push$1(receiver, p0) {
      return receiver.push(p0);
    },
    call$0(receiver) {
      return receiver.call();
    },
    call$1(receiver, p0) {
      return receiver.call(p0);
    },
    call$2(receiver, p0, p1) {
      return receiver.call(p0, p1);
    },
    call$3$1(receiver, p0) {
      return receiver.call(p0);
    },
    call$2$1(receiver, p0) {
      return receiver.call(p0);
    },
    call$1$1(receiver, p0) {
      return receiver.call(p0);
    },
    call$3(receiver, p0, p1, p2) {
      return receiver.call(p0, p1, p2);
    },
    call$3$3(receiver, p0, p1, p2) {
      return receiver.call(p0, p1, p2);
    },
    call$2$2(receiver, p0, p1) {
      return receiver.call(p0, p1);
    },
    call$2$0(receiver) {
      return receiver.call();
    },
    call$1$0(receiver) {
      return receiver.call();
    },
    call$1$2(receiver, p0, p1) {
      return receiver.call(p0, p1);
    },
    call$2$3(receiver, p0, p1, p2) {
      return receiver.call(p0, p1, p2);
    },
    apply$2(receiver, p0, p1) {
      return receiver.apply(p0, p1);
    },
    toArray$0(receiver) {
      return receiver.toArray();
    },
    asMutable$0(receiver) {
      return receiver.asMutable();
    },
    asImmutable$0(receiver) {
      return receiver.asImmutable();
    },
    $set$2(receiver, p0, p1) {
      return receiver.set(p0, p1);
    },
    forEach$1(receiver, p0) {
      return receiver.forEach(p0);
    },
    get$file(obj) {
      return obj.file;
    },
    get$contents(obj) {
      return obj.contents;
    },
    get$options(obj) {
      return obj.options;
    },
    get$data(obj) {
      return obj.data;
    },
    get$includePaths(obj) {
      return obj.includePaths;
    },
    get$style(obj) {
      return obj.style;
    },
    get$indentType(obj) {
      return obj.indentType;
    },
    get$indentWidth(obj) {
      return obj.indentWidth;
    },
    get$linefeed(obj) {
      return obj.linefeed;
    },
    set$context(obj, v) {
      return obj.context = v;
    },
    get$$prototype(obj) {
      return obj.prototype;
    },
    get$red(obj) {
      return obj.red;
    },
    get$green(obj) {
      return obj.green;
    },
    get$blue(obj) {
      return obj.blue;
    },
    get$hue(obj) {
      return obj.hue;
    },
    get$saturation(obj) {
      return obj.saturation;
    },
    get$lightness(obj) {
      return obj.lightness;
    },
    get$whiteness(obj) {
      return obj.whiteness;
    },
    get$blackness(obj) {
      return obj.blackness;
    },
    get$alpha(obj) {
      return obj.alpha;
    },
    get$dartValue(obj) {
      return obj.dartValue;
    },
    set$dartValue(obj, v) {
      return obj.dartValue = v;
    },
    get$alertAscii(obj) {
      return obj.alertAscii;
    },
    get$alertColor(obj) {
      return obj.alertColor;
    },
    get$loadPaths(obj) {
      return obj.loadPaths;
    },
    get$quietDeps(obj) {
      return obj.quietDeps;
    },
    get$verbose(obj) {
      return obj.verbose;
    },
    get$charset(obj) {
      return obj.charset;
    },
    get$sourceMap(obj) {
      return obj.sourceMap;
    },
    get$sourceMapIncludeSources(obj) {
      return obj.sourceMapIncludeSources;
    },
    get$logger(obj) {
      return obj.logger;
    },
    get$importers(obj) {
      return obj.importers;
    },
    get$functions(obj) {
      return obj.functions;
    },
    get$syntax(obj) {
      return obj.syntax;
    },
    get$url(obj) {
      return obj.url;
    },
    get$importer(obj) {
      return obj.importer;
    },
    get$_dartException(obj) {
      return obj._dartException;
    },
    set$renderSync(obj, v) {
      return obj.renderSync = v;
    },
    set$compileString(obj, v) {
      return obj.compileString = v;
    },
    set$compileStringAsync(obj, v) {
      return obj.compileStringAsync = v;
    },
    set$compile(obj, v) {
      return obj.compile = v;
    },
    set$compileAsync(obj, v) {
      return obj.compileAsync = v;
    },
    set$info(obj, v) {
      return obj.info = v;
    },
    set$Exception(obj, v) {
      return obj.Exception = v;
    },
    set$Logger(obj, v) {
      return obj.Logger = v;
    },
    set$Value(obj, v) {
      return obj.Value = v;
    },
    set$SassArgumentList(obj, v) {
      return obj.SassArgumentList = v;
    },
    set$SassCalculation(obj, v) {
      return obj.SassCalculation = v;
    },
    set$CalculationOperation(obj, v) {
      return obj.CalculationOperation = v;
    },
    set$CalculationInterpolation(obj, v) {
      return obj.CalculationInterpolation = v;
    },
    set$SassBoolean(obj, v) {
      return obj.SassBoolean = v;
    },
    set$SassColor(obj, v) {
      return obj.SassColor = v;
    },
    set$SassFunction(obj, v) {
      return obj.SassFunction = v;
    },
    set$SassMixin(obj, v) {
      return obj.SassMixin = v;
    },
    set$SassList(obj, v) {
      return obj.SassList = v;
    },
    set$SassMap(obj, v) {
      return obj.SassMap = v;
    },
    set$SassNumber(obj, v) {
      return obj.SassNumber = v;
    },
    set$SassString(obj, v) {
      return obj.SassString = v;
    },
    set$sassNull(obj, v) {
      return obj.sassNull = v;
    },
    set$sassTrue(obj, v) {
      return obj.sassTrue = v;
    },
    set$sassFalse(obj, v) {
      return obj.sassFalse = v;
    },
    set$render(obj, v) {
      return obj.render = v;
    },
    set$types(obj, v) {
      return obj.types = v;
    },
    set$NULL(obj, v) {
      return obj.NULL = v;
    },
    set$TRUE(obj, v) {
      return obj.TRUE = v;
    },
    set$FALSE(obj, v) {
      return obj.FALSE = v;
    },
    get$current(obj) {
      return obj.current;
    },
    yield$0(receiver) {
      return receiver.yield();
    },
    run$1$1(receiver, p0) {
      return receiver.run(p0);
    },
    run$1(receiver, p0) {
      return receiver.run(p0);
    },
    run$0(receiver) {
      return receiver.run();
    },
    get$canonicalize(obj) {
      return obj.canonicalize;
    },
    canonicalize$1(receiver, p0) {
      return receiver.canonicalize(p0);
    },
    get$load(obj) {
      return obj.load;
    },
    load$1(receiver, p0) {
      return receiver.load(p0);
    },
    get$findFileUrl(obj) {
      return obj.findFileUrl;
    },
    get$nonCanonicalScheme(obj) {
      return obj.nonCanonicalScheme;
    },
    get$sourceMapUrl(obj) {
      return obj.sourceMapUrl;
    },
    get$separator(obj) {
      return obj.separator;
    },
    get$brackets(obj) {
      return obj.brackets;
    },
    get$numeratorUnits(obj) {
      return obj.numeratorUnits;
    },
    get$denominatorUnits(obj) {
      return obj.denominatorUnits;
    },
    get$indentedSyntax(obj) {
      return obj.indentedSyntax;
    },
    get$omitSourceMapUrl(obj) {
      return obj.omitSourceMapUrl;
    },
    get$outFile(obj) {
      return obj.outFile;
    },
    get$outputStyle(obj) {
      return obj.outputStyle;
    },
    get$fiber(obj) {
      return obj.fiber;
    },
    get$sourceMapContents(obj) {
      return obj.sourceMapContents;
    },
    get$sourceMapEmbed(obj) {
      return obj.sourceMapEmbed;
    },
    get$sourceMapRoot(obj) {
      return obj.sourceMapRoot;
    },
    set$cli_pkg_main_0_(obj, v) {
      return obj.cli_pkg_main_0_ = v;
    },
    get$quotes(obj) {
      return obj.quotes;
    }
  };
  J.PlainJavaScriptObject.prototype = {};
  J.UnknownJavaScriptObject.prototype = {};
  J.JavaScriptFunction.prototype = {
    toString$0(receiver) {
      var dartClosure = receiver[$.$get$DART_CLOSURE_PROPERTY_NAME()];
      if (dartClosure == null)
        return this.super$LegacyJavaScriptObject$toString(receiver);
      return "JavaScript function for " + A.S(J.toString$0$(dartClosure));
    },
    $isFunction: 1
  };
  J.JSArray.prototype = {
    cast$1$0(receiver, $R) {
      return new A.CastList(receiver, A._arrayInstanceType(receiver)._eval$1("@<1>")._bind$1($R)._eval$1("CastList<1,2>"));
    },
    add$1(receiver, value) {
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("add"));
      receiver.push(value);
    },
    removeAt$1(receiver, index) {
      var t1;
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("removeAt"));
      t1 = receiver.length;
      if (index >= t1)
        throw A.wrapException(A.RangeError$value(index, null, null));
      return receiver.splice(index, 1)[0];
    },
    insert$2(receiver, index, value) {
      var t1;
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("insert"));
      t1 = receiver.length;
      if (index > t1)
        throw A.wrapException(A.RangeError$value(index, null, null));
      receiver.splice(index, 0, value);
    },
    insertAll$2(receiver, index, iterable) {
      var insertionLength, end;
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("insertAll"));
      A.RangeError_checkValueInInterval(index, 0, receiver.length, "index");
      if (!type$.EfficientLengthIterable_dynamic._is(iterable))
        iterable = J.toList$0$ax(iterable);
      insertionLength = J.get$length$asx(iterable);
      receiver.length = receiver.length + insertionLength;
      end = index + insertionLength;
      this.setRange$4(receiver, end, receiver.length, receiver, index);
      this.setRange$3(receiver, index, end, iterable);
    },
    removeLast$0(receiver) {
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("removeLast"));
      if (receiver.length === 0)
        throw A.wrapException(A.diagnoseIndexError(receiver, -1));
      return receiver.pop();
    },
    _removeWhere$2(receiver, test, removeMatching) {
      var i, element, t1, retained = [],
        end = receiver.length;
      for (i = 0; i < end; ++i) {
        element = receiver[i];
        if (!test.call$1(element))
          retained.push(element);
        if (receiver.length !== end)
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      t1 = retained.length;
      if (t1 === end)
        return;
      this.set$length(receiver, t1);
      for (i = 0; i < retained.length; ++i)
        receiver[i] = retained[i];
    },
    where$1(receiver, f) {
      return new A.WhereIterable(receiver, f, A._arrayInstanceType(receiver)._eval$1("WhereIterable<1>"));
    },
    expand$1$1(receiver, f, $T) {
      return new A.ExpandIterable(receiver, f, A._arrayInstanceType(receiver)._eval$1("@<1>")._bind$1($T)._eval$1("ExpandIterable<1,2>"));
    },
    addAll$1(receiver, collection) {
      var t1;
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("addAll"));
      if (Array.isArray(collection)) {
        this._addAllFromArray$1(receiver, collection);
        return;
      }
      for (t1 = J.get$iterator$ax(collection); t1.moveNext$0();)
        receiver.push(t1.get$current(t1));
    },
    _addAllFromArray$1(receiver, array) {
      var i,
        len = array.length;
      if (len === 0)
        return;
      if (receiver === array)
        throw A.wrapException(A.ConcurrentModificationError$(receiver));
      for (i = 0; i < len; ++i)
        receiver.push(array[i]);
    },
    clear$0(receiver) {
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("clear"));
      receiver.length = 0;
    },
    map$1$1(receiver, f, $T) {
      return new A.MappedListIterable(receiver, f, A._arrayInstanceType(receiver)._eval$1("@<1>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
    },
    join$1(receiver, separator) {
      var i,
        list = A.List_List$filled(receiver.length, "", false, type$.String);
      for (i = 0; i < receiver.length; ++i)
        list[i] = A.S(receiver[i]);
      return list.join(separator);
    },
    join$0($receiver) {
      return this.join$1($receiver, "");
    },
    take$1(receiver, n) {
      return A.SubListIterable$(receiver, 0, A.checkNotNullable(n, "count", type$.int), A._arrayInstanceType(receiver)._precomputed1);
    },
    skip$1(receiver, n) {
      return A.SubListIterable$(receiver, n, null, A._arrayInstanceType(receiver)._precomputed1);
    },
    fold$1$2(receiver, initialValue, combine) {
      var value, i,
        $length = receiver.length;
      for (value = initialValue, i = 0; i < $length; ++i) {
        value = combine.call$2(value, receiver[i]);
        if (receiver.length !== $length)
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      return value;
    },
    fold$2($receiver, initialValue, combine) {
      return this.fold$1$2($receiver, initialValue, combine, type$.dynamic);
    },
    elementAt$1(receiver, index) {
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      var end0 = receiver.length;
      if (start > end0)
        throw A.wrapException(A.RangeError$range(start, 0, end0, "start", null));
      if (end == null)
        end = end0;
      else if (end < start || end > end0)
        throw A.wrapException(A.RangeError$range(end, start, end0, "end", null));
      if (start === end)
        return A._setArrayType([], A._arrayInstanceType(receiver));
      return A._setArrayType(receiver.slice(start, end), A._arrayInstanceType(receiver));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    getRange$2(receiver, start, end) {
      A.RangeError_checkValidRange(start, end, receiver.length);
      return A.SubListIterable$(receiver, start, end, A._arrayInstanceType(receiver)._precomputed1);
    },
    get$first(receiver) {
      if (receiver.length > 0)
        return receiver[0];
      throw A.wrapException(A.IterableElementError_noElement());
    },
    get$last(receiver) {
      var t1 = receiver.length;
      if (t1 > 0)
        return receiver[t1 - 1];
      throw A.wrapException(A.IterableElementError_noElement());
    },
    get$single(receiver) {
      var t1 = receiver.length;
      if (t1 === 1)
        return receiver[0];
      if (t1 === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      throw A.wrapException(A.IterableElementError_tooMany());
    },
    removeRange$2(receiver, start, end) {
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("removeRange"));
      A.RangeError_checkValidRange(start, end, receiver.length);
      receiver.splice(start, end - start);
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      var $length, otherList, otherStart, t1, i;
      if (!!receiver.immutable$list)
        A.throwExpression(A.UnsupportedError$("setRange"));
      A.RangeError_checkValidRange(start, end, receiver.length);
      $length = end - start;
      if ($length === 0)
        return;
      A.RangeError_checkNotNegative(skipCount, "skipCount");
      if (type$.List_dynamic._is(iterable)) {
        otherList = iterable;
        otherStart = skipCount;
      } else {
        otherList = J.skip$1$ax(iterable, skipCount).toList$1$growable(0, false);
        otherStart = 0;
      }
      t1 = J.getInterceptor$asx(otherList);
      if (otherStart + $length > t1.get$length(otherList))
        throw A.wrapException(A.IterableElementError_tooFew());
      if (otherStart < start)
        for (i = $length - 1; i >= 0; --i)
          receiver[start + i] = t1.$index(otherList, otherStart + i);
      else
        for (i = 0; i < $length; ++i)
          receiver[start + i] = t1.$index(otherList, otherStart + i);
    },
    setRange$3($receiver, start, end, iterable) {
      return this.setRange$4($receiver, start, end, iterable, 0);
    },
    fillRange$3(receiver, start, end, fillValue) {
      var i;
      if (!!receiver.immutable$list)
        A.throwExpression(A.UnsupportedError$("fill range"));
      A.RangeError_checkValidRange(start, end, receiver.length);
      A._arrayInstanceType(receiver)._precomputed1._as(fillValue);
      for (i = start; i < end; ++i)
        receiver[i] = fillValue;
    },
    any$1(receiver, test) {
      var i,
        end = receiver.length;
      for (i = 0; i < end; ++i) {
        if (test.call$1(receiver[i]))
          return true;
        if (receiver.length !== end)
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      return false;
    },
    every$1(receiver, test) {
      var i,
        end = receiver.length;
      for (i = 0; i < end; ++i) {
        if (!test.call$1(receiver[i]))
          return false;
        if (receiver.length !== end)
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      return true;
    },
    get$reversed(receiver) {
      return new A.ReversedListIterable(receiver, A._arrayInstanceType(receiver)._eval$1("ReversedListIterable<1>"));
    },
    sort$1(receiver, compare) {
      if (!!receiver.immutable$list)
        A.throwExpression(A.UnsupportedError$("sort"));
      A.Sort_sort(receiver, compare == null ? J._interceptors_JSArray__compareAny$closure() : compare);
    },
    sort$0($receiver) {
      return this.sort$1($receiver, null);
    },
    indexOf$1(receiver, element) {
      var i,
        $length = receiver.length;
      if (0 >= $length)
        return -1;
      for (i = 0; i < $length; ++i)
        if (J.$eq$(receiver[i], element))
          return i;
      return -1;
    },
    contains$1(receiver, other) {
      var i;
      for (i = 0; i < receiver.length; ++i)
        if (J.$eq$(receiver[i], other))
          return true;
      return false;
    },
    get$isEmpty(receiver) {
      return receiver.length === 0;
    },
    get$isNotEmpty(receiver) {
      return receiver.length !== 0;
    },
    toString$0(receiver) {
      return A.Iterable_iterableToFullString(receiver, "[", "]");
    },
    toList$1$growable(receiver, growable) {
      var t1 = A._setArrayType(receiver.slice(0), A._arrayInstanceType(receiver));
      return t1;
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    toSet$0(receiver) {
      return A.LinkedHashSet_LinkedHashSet$from(receiver, A._arrayInstanceType(receiver)._precomputed1);
    },
    get$iterator(receiver) {
      return new J.ArrayIterator(receiver, receiver.length);
    },
    get$hashCode(receiver) {
      return A.Primitives_objectHashCode(receiver);
    },
    get$length(receiver) {
      return receiver.length;
    },
    set$length(receiver, newLength) {
      if (!!receiver.fixed$length)
        A.throwExpression(A.UnsupportedError$("set length"));
      if (newLength < 0)
        throw A.wrapException(A.RangeError$range(newLength, 0, null, "newLength", null));
      if (newLength > receiver.length)
        A._arrayInstanceType(receiver)._precomputed1._as(null);
      receiver.length = newLength;
    },
    $index(receiver, index) {
      if (!(index >= 0 && index < receiver.length))
        throw A.wrapException(A.diagnoseIndexError(receiver, index));
      return receiver[index];
    },
    $indexSet(receiver, index, value) {
      if (!!receiver.immutable$list)
        A.throwExpression(A.UnsupportedError$("indexed set"));
      if (!(index >= 0 && index < receiver.length))
        throw A.wrapException(A.diagnoseIndexError(receiver, index));
      receiver[index] = value;
    },
    $add(receiver, other) {
      var t1 = A.List_List$of(receiver, true, A._arrayInstanceType(receiver)._precomputed1);
      this.addAll$1(t1, other);
      return t1;
    },
    indexWhere$1(receiver, test) {
      var i;
      if (0 >= receiver.length)
        return -1;
      for (i = 0; i < receiver.length; ++i)
        if (test.call$1(receiver[i]))
          return i;
      return -1;
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  J.JSUnmodifiableArray.prototype = {};
  J.ArrayIterator.prototype = {
    get$current(_) {
      var t1 = this._current;
      return t1 == null ? A._instanceType(this)._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var t2, _this = this,
        t1 = _this._iterable,
        $length = t1.length;
      if (_this._length !== $length)
        throw A.wrapException(A.throwConcurrentModificationError(t1));
      t2 = _this._index;
      if (t2 >= $length) {
        _this._current = null;
        return false;
      }
      _this._current = t1[t2];
      _this._index = t2 + 1;
      return true;
    }
  };
  J.JSNumber.prototype = {
    compareTo$1(receiver, b) {
      var bIsNegative;
      if (receiver < b)
        return -1;
      else if (receiver > b)
        return 1;
      else if (receiver === b) {
        if (receiver === 0) {
          bIsNegative = this.get$isNegative(b);
          if (this.get$isNegative(receiver) === bIsNegative)
            return 0;
          if (this.get$isNegative(receiver))
            return -1;
          return 1;
        }
        return 0;
      } else if (isNaN(receiver)) {
        if (isNaN(b))
          return 0;
        return 1;
      } else
        return -1;
    },
    get$isNegative(receiver) {
      return receiver === 0 ? 1 / receiver < 0 : receiver < 0;
    },
    get$sign(receiver) {
      var t1;
      if (receiver > 0)
        t1 = 1;
      else
        t1 = receiver < 0 ? -1 : receiver;
      return t1;
    },
    ceil$0(receiver) {
      var truncated, d;
      if (receiver >= 0) {
        if (receiver <= 2147483647) {
          truncated = receiver | 0;
          return receiver === truncated ? truncated : truncated + 1;
        }
      } else if (receiver >= -2147483648)
        return receiver | 0;
      d = Math.ceil(receiver);
      if (isFinite(d))
        return d;
      throw A.wrapException(A.UnsupportedError$("" + receiver + ".ceil()"));
    },
    floor$0(receiver) {
      var truncated, d;
      if (receiver >= 0) {
        if (receiver <= 2147483647)
          return receiver | 0;
      } else if (receiver >= -2147483648) {
        truncated = receiver | 0;
        return receiver === truncated ? truncated : truncated - 1;
      }
      d = Math.floor(receiver);
      if (isFinite(d))
        return d;
      throw A.wrapException(A.UnsupportedError$("" + receiver + ".floor()"));
    },
    round$0(receiver) {
      if (receiver > 0) {
        if (receiver !== 1 / 0)
          return Math.round(receiver);
      } else if (receiver > -1 / 0)
        return 0 - Math.round(0 - receiver);
      throw A.wrapException(A.UnsupportedError$("" + receiver + ".round()"));
    },
    clamp$2(receiver, lowerLimit, upperLimit) {
      if (B.JSInt_methods.compareTo$1(lowerLimit, upperLimit) > 0)
        throw A.wrapException(A.argumentErrorValue(lowerLimit));
      if (this.compareTo$1(receiver, lowerLimit) < 0)
        return lowerLimit;
      if (this.compareTo$1(receiver, upperLimit) > 0)
        return upperLimit;
      return receiver;
    },
    toRadixString$1(receiver, radix) {
      var result, match, exponent, t1;
      if (radix < 2 || radix > 36)
        throw A.wrapException(A.RangeError$range(radix, 2, 36, "radix", null));
      result = receiver.toString(radix);
      if (result.charCodeAt(result.length - 1) !== 41)
        return result;
      match = /^([\da-z]+)(?:\.([\da-z]+))?\(e\+(\d+)\)$/.exec(result);
      if (match == null)
        A.throwExpression(A.UnsupportedError$("Unexpected toString result: " + result));
      result = match[1];
      exponent = +match[3];
      t1 = match[2];
      if (t1 != null) {
        result += t1;
        exponent -= t1.length;
      }
      return result + B.JSString_methods.$mul("0", exponent);
    },
    toString$0(receiver) {
      if (receiver === 0 && 1 / receiver < 0)
        return "-0.0";
      else
        return "" + receiver;
    },
    get$hashCode(receiver) {
      var absolute, floorLog2, factor, scaled,
        intValue = receiver | 0;
      if (receiver === intValue)
        return intValue & 536870911;
      absolute = Math.abs(receiver);
      floorLog2 = Math.log(absolute) / 0.6931471805599453 | 0;
      factor = Math.pow(2, floorLog2);
      scaled = absolute < 1 ? absolute / factor : factor / absolute;
      return ((scaled * 9007199254740992 | 0) + (scaled * 3542243181176521 | 0)) * 599197 + floorLog2 * 1259 & 536870911;
    },
    $mod(receiver, other) {
      var result = receiver % other;
      if (result === 0)
        return 0;
      if (result > 0)
        return result;
      if (other < 0)
        return result - other;
      else
        return result + other;
    },
    $tdiv(receiver, other) {
      if ((receiver | 0) === receiver)
        if (other >= 1 || other < -1)
          return receiver / other | 0;
      return this._tdivSlow$1(receiver, other);
    },
    _tdivFast$1(receiver, other) {
      return (receiver | 0) === receiver ? receiver / other | 0 : this._tdivSlow$1(receiver, other);
    },
    _tdivSlow$1(receiver, other) {
      var quotient = receiver / other;
      if (quotient >= -2147483648 && quotient <= 2147483647)
        return quotient | 0;
      if (quotient > 0) {
        if (quotient !== 1 / 0)
          return Math.floor(quotient);
      } else if (quotient > -1 / 0)
        return Math.ceil(quotient);
      throw A.wrapException(A.UnsupportedError$("Result of truncating division is " + A.S(quotient) + ": " + A.S(receiver) + " ~/ " + other));
    },
    _shrOtherPositive$1(receiver, other) {
      var t1;
      if (receiver > 0)
        t1 = this._shrBothPositive$1(receiver, other);
      else {
        t1 = other > 31 ? 31 : other;
        t1 = receiver >> t1 >>> 0;
      }
      return t1;
    },
    _shrReceiverPositive$1(receiver, other) {
      if (0 > other)
        throw A.wrapException(A.argumentErrorValue(other));
      return this._shrBothPositive$1(receiver, other);
    },
    _shrBothPositive$1(receiver, other) {
      return other > 31 ? 0 : receiver >>> other;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.num);
    },
    $isComparable: 1,
    $isdouble: 1,
    $isnum: 1
  };
  J.JSInt.prototype = {
    get$sign(receiver) {
      var t1;
      if (receiver > 0)
        t1 = 1;
      else
        t1 = receiver < 0 ? -1 : receiver;
      return t1;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.int);
    },
    $isTrustedGetRuntimeType: 1,
    $isint: 1
  };
  J.JSNumNotInt.prototype = {
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.double);
    },
    $isTrustedGetRuntimeType: 1
  };
  J.JSString.prototype = {
    codeUnitAt$1(receiver, index) {
      if (index < 0)
        throw A.wrapException(A.diagnoseIndexError(receiver, index));
      if (index >= receiver.length)
        A.throwExpression(A.diagnoseIndexError(receiver, index));
      return receiver.charCodeAt(index);
    },
    allMatches$2(receiver, string, start) {
      var t1 = string.length;
      if (start > t1)
        throw A.wrapException(A.RangeError$range(start, 0, t1, null, null));
      return new A._StringAllMatchesIterable(string, receiver, start);
    },
    allMatches$1($receiver, string) {
      return this.allMatches$2($receiver, string, 0);
    },
    matchAsPrefix$2(receiver, string, start) {
      var t1, i, _null = null;
      if (start < 0 || start > string.length)
        throw A.wrapException(A.RangeError$range(start, 0, string.length, _null, _null));
      t1 = receiver.length;
      if (start + t1 > string.length)
        return _null;
      for (i = 0; i < t1; ++i)
        if (string.charCodeAt(start + i) !== receiver.charCodeAt(i))
          return _null;
      return new A.StringMatch(start, receiver);
    },
    $add(receiver, other) {
      return receiver + other;
    },
    endsWith$1(receiver, other) {
      var otherLength = other.length,
        t1 = receiver.length;
      if (otherLength > t1)
        return false;
      return other === this.substring$1(receiver, t1 - otherLength);
    },
    replaceFirst$2(receiver, from, to) {
      A.RangeError_checkValueInInterval(0, 0, receiver.length, "startIndex");
      return A.stringReplaceFirstUnchecked(receiver, from, to, 0);
    },
    split$1(receiver, pattern) {
      if (typeof pattern == "string")
        return A._setArrayType(receiver.split(pattern), type$.JSArray_String);
      else if (pattern instanceof A.JSSyntaxRegExp && pattern.get$_nativeAnchoredVersion().exec("").length - 2 === 0)
        return A._setArrayType(receiver.split(pattern._nativeRegExp), type$.JSArray_String);
      else
        return this._defaultSplit$1(receiver, pattern);
    },
    replaceRange$3(receiver, start, end, replacement) {
      var e = A.RangeError_checkValidRange(start, end, receiver.length);
      return A.stringReplaceRangeUnchecked(receiver, start, e, replacement);
    },
    _defaultSplit$1(receiver, pattern) {
      var t1, start, $length, match, matchStart, matchEnd,
        result = A._setArrayType([], type$.JSArray_String);
      for (t1 = J.allMatches$1$s(pattern, receiver), t1 = t1.get$iterator(t1), start = 0, $length = 1; t1.moveNext$0();) {
        match = t1.get$current(t1);
        matchStart = match.get$start(match);
        matchEnd = match.get$end(match);
        $length = matchEnd - matchStart;
        if ($length === 0 && start === matchStart)
          continue;
        result.push(this.substring$2(receiver, start, matchStart));
        start = matchEnd;
      }
      if (start < receiver.length || $length > 0)
        result.push(this.substring$1(receiver, start));
      return result;
    },
    startsWith$2(receiver, pattern, index) {
      var endIndex;
      if (index < 0 || index > receiver.length)
        throw A.wrapException(A.RangeError$range(index, 0, receiver.length, null, null));
      if (typeof pattern == "string") {
        endIndex = index + pattern.length;
        if (endIndex > receiver.length)
          return false;
        return pattern === receiver.substring(index, endIndex);
      }
      return J.matchAsPrefix$2$s(pattern, receiver, index) != null;
    },
    startsWith$1($receiver, pattern) {
      return this.startsWith$2($receiver, pattern, 0);
    },
    substring$2(receiver, start, end) {
      return receiver.substring(start, A.RangeError_checkValidRange(start, end, receiver.length));
    },
    substring$1($receiver, start) {
      return this.substring$2($receiver, start, null);
    },
    trim$0(receiver) {
      var startIndex, t1, endIndex0,
        result = receiver.trim(),
        endIndex = result.length;
      if (endIndex === 0)
        return result;
      if (result.charCodeAt(0) === 133) {
        startIndex = J.JSString__skipLeadingWhitespace(result, 1);
        if (startIndex === endIndex)
          return "";
      } else
        startIndex = 0;
      t1 = endIndex - 1;
      endIndex0 = result.charCodeAt(t1) === 133 ? J.JSString__skipTrailingWhitespace(result, t1) : endIndex;
      if (startIndex === 0 && endIndex0 === endIndex)
        return result;
      return result.substring(startIndex, endIndex0);
    },
    trimLeft$0(receiver) {
      var result, startIndex;
      if (typeof receiver.trimLeft != "undefined") {
        result = receiver.trimLeft();
        if (result.length === 0)
          return result;
        startIndex = result.charCodeAt(0) === 133 ? J.JSString__skipLeadingWhitespace(result, 1) : 0;
      } else {
        startIndex = J.JSString__skipLeadingWhitespace(receiver, 0);
        result = receiver;
      }
      if (startIndex === 0)
        return result;
      if (startIndex === result.length)
        return "";
      return result.substring(startIndex);
    },
    trimRight$0(receiver) {
      var result, endIndex, t1;
      if (typeof receiver.trimRight != "undefined") {
        result = receiver.trimRight();
        endIndex = result.length;
        if (endIndex === 0)
          return result;
        t1 = endIndex - 1;
        if (result.charCodeAt(t1) === 133)
          endIndex = J.JSString__skipTrailingWhitespace(result, t1);
      } else {
        endIndex = J.JSString__skipTrailingWhitespace(receiver, receiver.length);
        result = receiver;
      }
      if (endIndex === result.length)
        return result;
      if (endIndex === 0)
        return "";
      return result.substring(0, endIndex);
    },
    $mul(receiver, times) {
      var s, result;
      if (0 >= times)
        return "";
      if (times === 1 || receiver.length === 0)
        return receiver;
      if (times !== times >>> 0)
        throw A.wrapException(B.C_OutOfMemoryError);
      for (s = receiver, result = ""; true;) {
        if ((times & 1) === 1)
          result = s + result;
        times = times >>> 1;
        if (times === 0)
          break;
        s += s;
      }
      return result;
    },
    padLeft$2(receiver, width, padding) {
      var delta = width - receiver.length;
      if (delta <= 0)
        return receiver;
      return this.$mul(padding, delta) + receiver;
    },
    padRight$1(receiver, width) {
      var delta = width - receiver.length;
      if (delta <= 0)
        return receiver;
      return receiver + this.$mul(" ", delta);
    },
    indexOf$2(receiver, pattern, start) {
      var t1;
      if (start < 0 || start > receiver.length)
        throw A.wrapException(A.RangeError$range(start, 0, receiver.length, null, null));
      t1 = receiver.indexOf(pattern, start);
      return t1;
    },
    indexOf$1($receiver, pattern) {
      return this.indexOf$2($receiver, pattern, 0);
    },
    lastIndexOf$2(receiver, pattern, start) {
      var t1, t2, i;
      if (start == null)
        start = receiver.length;
      else if (start < 0 || start > receiver.length)
        throw A.wrapException(A.RangeError$range(start, 0, receiver.length, null, null));
      if (typeof pattern == "string") {
        t1 = pattern.length;
        t2 = receiver.length;
        if (start + t1 > t2)
          start = t2 - t1;
        return receiver.lastIndexOf(pattern, start);
      }
      for (t1 = J.getInterceptor$s(pattern), i = start; i >= 0; --i)
        if (t1.matchAsPrefix$2(pattern, receiver, i) != null)
          return i;
      return -1;
    },
    lastIndexOf$1($receiver, pattern) {
      return this.lastIndexOf$2($receiver, pattern, null);
    },
    contains$2(receiver, other, startIndex) {
      var t1 = receiver.length;
      if (startIndex > t1)
        throw A.wrapException(A.RangeError$range(startIndex, 0, t1, null, null));
      return A.stringContainsUnchecked(receiver, other, startIndex);
    },
    contains$1($receiver, other) {
      return this.contains$2($receiver, other, 0);
    },
    compareTo$1(receiver, other) {
      var t1;
      if (receiver === other)
        t1 = 0;
      else
        t1 = receiver < other ? -1 : 1;
      return t1;
    },
    toString$0(receiver) {
      return receiver;
    },
    get$hashCode(receiver) {
      var t1, hash, i;
      for (t1 = receiver.length, hash = 0, i = 0; i < t1; ++i) {
        hash = hash + receiver.charCodeAt(i) & 536870911;
        hash = hash + ((hash & 524287) << 10) & 536870911;
        hash ^= hash >> 6;
      }
      hash = hash + ((hash & 67108863) << 3) & 536870911;
      hash ^= hash >> 11;
      return hash + ((hash & 16383) << 15) & 536870911;
    },
    get$runtimeType(receiver) {
      return A.createRuntimeType(type$.String);
    },
    get$length(receiver) {
      return receiver.length;
    },
    $isTrustedGetRuntimeType: 1,
    $isComparable: 1,
    $isString: 1
  };
  A._CastIterableBase.prototype = {
    get$iterator(_) {
      var t1 = A._instanceType(this);
      return new A.CastIterator(J.get$iterator$ax(this.get$_source()), t1._eval$1("@<1>")._bind$1(t1._rest[1])._eval$1("CastIterator<1,2>"));
    },
    get$length(_) {
      return J.get$length$asx(this.get$_source());
    },
    get$isEmpty(_) {
      return J.get$isEmpty$asx(this.get$_source());
    },
    get$isNotEmpty(_) {
      return J.get$isNotEmpty$asx(this.get$_source());
    },
    skip$1(_, count) {
      var t1 = A._instanceType(this);
      return A.CastIterable_CastIterable(J.skip$1$ax(this.get$_source(), count), t1._precomputed1, t1._rest[1]);
    },
    take$1(_, count) {
      var t1 = A._instanceType(this);
      return A.CastIterable_CastIterable(J.take$1$ax(this.get$_source(), count), t1._precomputed1, t1._rest[1]);
    },
    elementAt$1(_, index) {
      return A._instanceType(this)._rest[1]._as(J.elementAt$1$ax(this.get$_source(), index));
    },
    get$first(_) {
      return A._instanceType(this)._rest[1]._as(J.get$first$ax(this.get$_source()));
    },
    get$last(_) {
      return A._instanceType(this)._rest[1]._as(J.get$last$ax(this.get$_source()));
    },
    get$single(_) {
      return A._instanceType(this)._rest[1]._as(J.get$single$ax(this.get$_source()));
    },
    contains$1(_, other) {
      return J.contains$1$asx(this.get$_source(), other);
    },
    toString$0(_) {
      return J.toString$0$(this.get$_source());
    }
  };
  A.CastIterator.prototype = {
    moveNext$0() {
      return this._source.moveNext$0();
    },
    get$current(_) {
      var t1 = this._source;
      return this.$ti._rest[1]._as(t1.get$current(t1));
    }
  };
  A.CastIterable.prototype = {
    get$_source() {
      return this._source;
    }
  };
  A._EfficientLengthCastIterable.prototype = {$isEfficientLengthIterable: 1};
  A._CastListBase.prototype = {
    $index(_, index) {
      return this.$ti._rest[1]._as(J.$index$asx(this._source, index));
    },
    $indexSet(_, index, value) {
      J.$indexSet$ax(this._source, index, this.$ti._precomputed1._as(value));
    },
    set$length(_, $length) {
      J.set$length$asx(this._source, $length);
    },
    add$1(_, value) {
      J.add$1$ax(this._source, this.$ti._precomputed1._as(value));
    },
    addAll$1(_, values) {
      var t1 = this.$ti;
      J.addAll$1$ax(this._source, A.CastIterable_CastIterable(values, t1._rest[1], t1._precomputed1));
    },
    sort$1(_, compare) {
      var t1 = compare == null ? null : new A._CastListBase_sort_closure(this, compare);
      J.sort$1$ax(this._source, t1);
    },
    getRange$2(_, start, end) {
      var t1 = this.$ti;
      return A.CastIterable_CastIterable(J.getRange$2$ax(this._source, start, end), t1._precomputed1, t1._rest[1]);
    },
    setRange$4(_, start, end, iterable, skipCount) {
      var t1 = this.$ti;
      J.setRange$4$ax(this._source, start, end, A.CastIterable_CastIterable(iterable, t1._rest[1], t1._precomputed1), skipCount);
    },
    removeRange$2(_, start, end) {
      J.removeRange$2$ax(this._source, start, end);
    },
    fillRange$3(_, start, end, fillValue) {
      J.fillRange$3$ax(this._source, start, end, this.$ti._precomputed1._as(fillValue));
    },
    $isEfficientLengthIterable: 1,
    $isList: 1
  };
  A._CastListBase_sort_closure.prototype = {
    call$2(v1, v2) {
      var t1 = this.$this.$ti._rest[1];
      return this.compare.call$2(t1._as(v1), t1._as(v2));
    },
    $signature() {
      return this.$this.$ti._eval$1("int(1,1)");
    }
  };
  A.CastList.prototype = {
    cast$1$0(_, $R) {
      return new A.CastList(this._source, this.$ti._eval$1("@<1>")._bind$1($R)._eval$1("CastList<1,2>"));
    },
    get$_source() {
      return this._source;
    }
  };
  A.CastSet.prototype = {
    add$1(_, value) {
      return this._source.add$1(0, this.$ti._precomputed1._as(value));
    },
    addAll$1(_, elements) {
      var t1 = this.$ti;
      this._source.addAll$1(0, A.CastIterable_CastIterable(elements, t1._rest[1], t1._precomputed1));
    },
    difference$1(other) {
      var t1, _this = this;
      if (_this._emptySet != null)
        return _this._conditionalAdd$2(other, false);
      t1 = _this.$ti;
      return new A.CastSet(_this._source.difference$1(other), null, t1._eval$1("@<1>")._bind$1(t1._rest[1])._eval$1("CastSet<1,2>"));
    },
    _conditionalAdd$2(other, otherContains) {
      var t3, castElement,
        emptySet = this._emptySet,
        t1 = this.$ti,
        t2 = t1._rest[1],
        result = emptySet == null ? A.LinkedHashSet_LinkedHashSet(t2) : emptySet.call$1$0(t2);
      for (t2 = this._source, t2 = t2.get$iterator(t2), t3 = other._source, t1 = t1._rest[1]; t2.moveNext$0();) {
        castElement = t1._as(t2.get$current(t2));
        if (otherContains === t3.contains$1(0, castElement))
          result.add$1(0, castElement);
      }
      return result;
    },
    toSet$0(_) {
      var emptySet = this._emptySet,
        t1 = this.$ti._rest[1],
        result = emptySet == null ? A.LinkedHashSet_LinkedHashSet(t1) : emptySet.call$1$0(t1);
      result.addAll$1(0, this);
      return result;
    },
    $isEfficientLengthIterable: 1,
    $isSet: 1,
    get$_source() {
      return this._source;
    }
  };
  A.CastMap.prototype = {
    cast$2$0(_, RK, RV) {
      var t1 = this.$ti;
      return new A.CastMap(this._source, t1._eval$1("@<1>")._bind$1(t1._rest[1])._bind$1(RK)._bind$1(RV)._eval$1("CastMap<1,2,3,4>"));
    },
    containsKey$1(key) {
      return this._source.containsKey$1(key);
    },
    $index(_, key) {
      return this.$ti._eval$1("4?")._as(this._source.$index(0, key));
    },
    $indexSet(_, key, value) {
      var t1 = this.$ti;
      this._source.$indexSet(0, t1._precomputed1._as(key), t1._rest[1]._as(value));
    },
    addAll$1(_, other) {
      var t1 = this.$ti;
      this._source.addAll$1(0, new A.CastMap(other, t1._eval$1("@<3>")._bind$1(t1._rest[3])._bind$1(t1._precomputed1)._bind$1(t1._rest[1])._eval$1("CastMap<1,2,3,4>")));
    },
    remove$1(_, key) {
      return this.$ti._eval$1("4?")._as(this._source.remove$1(0, key));
    },
    forEach$1(_, f) {
      this._source.forEach$1(0, new A.CastMap_forEach_closure(this, f));
    },
    get$keys(_) {
      var t1 = this._source,
        t2 = this.$ti;
      return A.CastIterable_CastIterable(t1.get$keys(t1), t2._precomputed1, t2._rest[2]);
    },
    get$values(_) {
      var t1 = this._source,
        t2 = this.$ti;
      return A.CastIterable_CastIterable(t1.get$values(t1), t2._rest[1], t2._rest[3]);
    },
    get$length(_) {
      var t1 = this._source;
      return t1.get$length(t1);
    },
    get$isEmpty(_) {
      var t1 = this._source;
      return t1.get$isEmpty(t1);
    },
    get$isNotEmpty(_) {
      var t1 = this._source;
      return t1.get$isNotEmpty(t1);
    },
    get$entries(_) {
      var t1 = this._source;
      return t1.get$entries(t1).map$1$1(0, new A.CastMap_entries_closure(this), this.$ti._eval$1("MapEntry<3,4>"));
    }
  };
  A.CastMap_forEach_closure.prototype = {
    call$2(key, value) {
      var t1 = this.$this.$ti;
      this.f.call$2(t1._rest[2]._as(key), t1._rest[3]._as(value));
    },
    $signature() {
      return this.$this.$ti._eval$1("~(1,2)");
    }
  };
  A.CastMap_entries_closure.prototype = {
    call$1(e) {
      var t1 = this.$this.$ti,
        t2 = t1._rest[3];
      return new A.MapEntry(t1._rest[2]._as(e.key), t2._as(e.value), t1._eval$1("@<3>")._bind$1(t2)._eval$1("MapEntry<1,2>"));
    },
    $signature() {
      return this.$this.$ti._eval$1("MapEntry<3,4>(MapEntry<1,2>)");
    }
  };
  A.LateError.prototype = {
    toString$0(_) {
      return "LateInitializationError: " + this._message;
    }
  };
  A.CodeUnits.prototype = {
    get$length(_) {
      return this._string.length;
    },
    $index(_, i) {
      return this._string.charCodeAt(i);
    }
  };
  A.nullFuture_closure.prototype = {
    call$0() {
      return A.Future_Future$value(null, type$.Null);
    },
    $signature: 4
  };
  A.SentinelValue.prototype = {};
  A.EfficientLengthIterable.prototype = {};
  A.ListIterable.prototype = {
    get$iterator(_) {
      return new A.ListIterator(this, this.get$length(this));
    },
    get$isEmpty(_) {
      return this.get$length(this) === 0;
    },
    get$first(_) {
      if (this.get$length(this) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return this.elementAt$1(0, 0);
    },
    get$last(_) {
      var _this = this;
      if (_this.get$length(_this) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return _this.elementAt$1(0, _this.get$length(_this) - 1);
    },
    get$single(_) {
      var _this = this;
      if (_this.get$length(_this) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      if (_this.get$length(_this) > 1)
        throw A.wrapException(A.IterableElementError_tooMany());
      return _this.elementAt$1(0, 0);
    },
    contains$1(_, element) {
      var i, _this = this,
        $length = _this.get$length(_this);
      for (i = 0; i < $length; ++i) {
        if (J.$eq$(_this.elementAt$1(0, i), element))
          return true;
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return false;
    },
    every$1(_, test) {
      var i, _this = this,
        $length = _this.get$length(_this);
      for (i = 0; i < $length; ++i) {
        if (!test.call$1(_this.elementAt$1(0, i)))
          return false;
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return true;
    },
    any$1(_, test) {
      var i, _this = this,
        $length = _this.get$length(_this);
      for (i = 0; i < $length; ++i) {
        if (test.call$1(_this.elementAt$1(0, i)))
          return true;
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return false;
    },
    join$1(_, separator) {
      var first, t1, i, _this = this,
        $length = _this.get$length(_this);
      if (separator.length !== 0) {
        if ($length === 0)
          return "";
        first = A.S(_this.elementAt$1(0, 0));
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
        for (t1 = first, i = 1; i < $length; ++i) {
          t1 = t1 + separator + A.S(_this.elementAt$1(0, i));
          if ($length !== _this.get$length(_this))
            throw A.wrapException(A.ConcurrentModificationError$(_this));
        }
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      } else {
        for (i = 0, t1 = ""; i < $length; ++i) {
          t1 += A.S(_this.elementAt$1(0, i));
          if ($length !== _this.get$length(_this))
            throw A.wrapException(A.ConcurrentModificationError$(_this));
        }
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      }
    },
    join$0($receiver) {
      return this.join$1($receiver, "");
    },
    where$1(_, test) {
      return this.super$Iterable$where(0, test);
    },
    map$1$1(_, toElement, $T) {
      return new A.MappedListIterable(this, toElement, A._instanceType(this)._eval$1("@<ListIterable.E>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
    },
    reduce$1(_, combine) {
      var value, i, _this = this,
        $length = _this.get$length(_this);
      if ($length === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      value = _this.elementAt$1(0, 0);
      for (i = 1; i < $length; ++i) {
        value = combine.call$2(value, _this.elementAt$1(0, i));
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return value;
    },
    fold$1$2(_, initialValue, combine) {
      var value, i, _this = this,
        $length = _this.get$length(_this);
      for (value = initialValue, i = 0; i < $length; ++i) {
        value = combine.call$2(value, _this.elementAt$1(0, i));
        if ($length !== _this.get$length(_this))
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return value;
    },
    fold$2($receiver, initialValue, combine) {
      return this.fold$1$2($receiver, initialValue, combine, type$.dynamic);
    },
    skip$1(_, count) {
      return A.SubListIterable$(this, count, null, A._instanceType(this)._eval$1("ListIterable.E"));
    },
    take$1(_, count) {
      return A.SubListIterable$(this, 0, A.checkNotNullable(count, "count", type$.int), A._instanceType(this)._eval$1("ListIterable.E"));
    },
    toList$1$growable(_, growable) {
      return A.List_List$of(this, true, A._instanceType(this)._eval$1("ListIterable.E"));
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    toSet$0(_) {
      var i, _this = this,
        result = A.LinkedHashSet_LinkedHashSet(A._instanceType(_this)._eval$1("ListIterable.E"));
      for (i = 0; i < _this.get$length(_this); ++i)
        result.add$1(0, _this.elementAt$1(0, i));
      return result;
    }
  };
  A.SubListIterable.prototype = {
    SubListIterable$3(_iterable, _start, _endOrLength, $E) {
      var endOrLength,
        t1 = this.__internal$_start;
      A.RangeError_checkNotNegative(t1, "start");
      endOrLength = this._endOrLength;
      if (endOrLength != null) {
        A.RangeError_checkNotNegative(endOrLength, "end");
        if (t1 > endOrLength)
          throw A.wrapException(A.RangeError$range(t1, 0, endOrLength, "start", null));
      }
    },
    get$_endIndex() {
      var $length = J.get$length$asx(this.__internal$_iterable),
        endOrLength = this._endOrLength;
      if (endOrLength == null || endOrLength > $length)
        return $length;
      return endOrLength;
    },
    get$_startIndex() {
      var $length = J.get$length$asx(this.__internal$_iterable),
        t1 = this.__internal$_start;
      if (t1 > $length)
        return $length;
      return t1;
    },
    get$length(_) {
      var endOrLength,
        $length = J.get$length$asx(this.__internal$_iterable),
        t1 = this.__internal$_start;
      if (t1 >= $length)
        return 0;
      endOrLength = this._endOrLength;
      if (endOrLength == null || endOrLength >= $length)
        return $length - t1;
      return endOrLength - t1;
    },
    elementAt$1(_, index) {
      var _this = this,
        realIndex = _this.get$_startIndex() + index;
      if (index < 0 || realIndex >= _this.get$_endIndex())
        throw A.wrapException(A.IndexError$withLength(index, _this.get$length(_this), _this, null, "index"));
      return J.elementAt$1$ax(_this.__internal$_iterable, realIndex);
    },
    skip$1(_, count) {
      var newStart, endOrLength, _this = this;
      A.RangeError_checkNotNegative(count, "count");
      newStart = _this.__internal$_start + count;
      endOrLength = _this._endOrLength;
      if (endOrLength != null && newStart >= endOrLength)
        return new A.EmptyIterable(_this.$ti._eval$1("EmptyIterable<1>"));
      return A.SubListIterable$(_this.__internal$_iterable, newStart, endOrLength, _this.$ti._precomputed1);
    },
    take$1(_, count) {
      var endOrLength, t1, newEnd, _this = this;
      A.RangeError_checkNotNegative(count, "count");
      endOrLength = _this._endOrLength;
      t1 = _this.__internal$_start;
      newEnd = t1 + count;
      if (endOrLength == null)
        return A.SubListIterable$(_this.__internal$_iterable, t1, newEnd, _this.$ti._precomputed1);
      else {
        if (endOrLength < newEnd)
          return _this;
        return A.SubListIterable$(_this.__internal$_iterable, t1, newEnd, _this.$ti._precomputed1);
      }
    },
    toList$1$growable(_, growable) {
      var $length, result, i, _this = this,
        start = _this.__internal$_start,
        t1 = _this.__internal$_iterable,
        t2 = J.getInterceptor$asx(t1),
        end = t2.get$length(t1),
        endOrLength = _this._endOrLength;
      if (endOrLength != null && endOrLength < end)
        end = endOrLength;
      $length = end - start;
      if ($length <= 0) {
        t1 = _this.$ti._precomputed1;
        return growable ? J.JSArray_JSArray$growable(0, t1) : J.JSArray_JSArray$fixed(0, t1);
      }
      result = A.List_List$filled($length, t2.elementAt$1(t1, start), growable, _this.$ti._precomputed1);
      for (i = 1; i < $length; ++i) {
        result[i] = t2.elementAt$1(t1, start + i);
        if (t2.get$length(t1) < end)
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
      return result;
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    }
  };
  A.ListIterator.prototype = {
    get$current(_) {
      var t1 = this.__internal$_current;
      return t1 == null ? A._instanceType(this)._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var t3, _this = this,
        t1 = _this.__internal$_iterable,
        t2 = J.getInterceptor$asx(t1),
        $length = t2.get$length(t1);
      if (_this.__internal$_length !== $length)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      t3 = _this.__internal$_index;
      if (t3 >= $length) {
        _this.__internal$_current = null;
        return false;
      }
      _this.__internal$_current = t2.elementAt$1(t1, t3);
      ++_this.__internal$_index;
      return true;
    }
  };
  A.MappedIterable.prototype = {
    get$iterator(_) {
      return new A.MappedIterator(J.get$iterator$ax(this.__internal$_iterable), this._f);
    },
    get$length(_) {
      return J.get$length$asx(this.__internal$_iterable);
    },
    get$isEmpty(_) {
      return J.get$isEmpty$asx(this.__internal$_iterable);
    },
    get$first(_) {
      return this._f.call$1(J.get$first$ax(this.__internal$_iterable));
    },
    get$last(_) {
      return this._f.call$1(J.get$last$ax(this.__internal$_iterable));
    },
    get$single(_) {
      return this._f.call$1(J.get$single$ax(this.__internal$_iterable));
    },
    elementAt$1(_, index) {
      return this._f.call$1(J.elementAt$1$ax(this.__internal$_iterable, index));
    }
  };
  A.EfficientLengthMappedIterable.prototype = {$isEfficientLengthIterable: 1};
  A.MappedIterator.prototype = {
    moveNext$0() {
      var _this = this,
        t1 = _this._iterator;
      if (t1.moveNext$0()) {
        _this.__internal$_current = _this._f.call$1(t1.get$current(t1));
        return true;
      }
      _this.__internal$_current = null;
      return false;
    },
    get$current(_) {
      var t1 = this.__internal$_current;
      return t1 == null ? A._instanceType(this)._rest[1]._as(t1) : t1;
    }
  };
  A.MappedListIterable.prototype = {
    get$length(_) {
      return J.get$length$asx(this._source);
    },
    elementAt$1(_, index) {
      return this._f.call$1(J.elementAt$1$ax(this._source, index));
    }
  };
  A.WhereIterable.prototype = {
    get$iterator(_) {
      return new A.WhereIterator(J.get$iterator$ax(this.__internal$_iterable), this._f);
    },
    map$1$1(_, toElement, $T) {
      return new A.MappedIterable(this, toElement, this.$ti._eval$1("@<1>")._bind$1($T)._eval$1("MappedIterable<1,2>"));
    }
  };
  A.WhereIterator.prototype = {
    moveNext$0() {
      var t1, t2;
      for (t1 = this._iterator, t2 = this._f; t1.moveNext$0();)
        if (t2.call$1(t1.get$current(t1)))
          return true;
      return false;
    },
    get$current(_) {
      var t1 = this._iterator;
      return t1.get$current(t1);
    }
  };
  A.ExpandIterable.prototype = {
    get$iterator(_) {
      return new A.ExpandIterator(J.get$iterator$ax(this.__internal$_iterable), this._f, B.C_EmptyIterator);
    }
  };
  A.ExpandIterator.prototype = {
    get$current(_) {
      var t1 = this.__internal$_current;
      return t1 == null ? A._instanceType(this)._rest[1]._as(t1) : t1;
    },
    moveNext$0() {
      var t2, t3, _this = this,
        t1 = _this._currentExpansion;
      if (t1 == null)
        return false;
      for (t2 = _this._iterator, t3 = _this._f; !t1.moveNext$0();) {
        _this.__internal$_current = null;
        if (t2.moveNext$0()) {
          _this._currentExpansion = null;
          t1 = J.get$iterator$ax(t3.call$1(t2.get$current(t2)));
          _this._currentExpansion = t1;
        } else
          return false;
      }
      t1 = _this._currentExpansion;
      _this.__internal$_current = t1.get$current(t1);
      return true;
    }
  };
  A.TakeIterable.prototype = {
    get$iterator(_) {
      return new A.TakeIterator(J.get$iterator$ax(this.__internal$_iterable), this._takeCount);
    }
  };
  A.EfficientLengthTakeIterable.prototype = {
    get$length(_) {
      var iterableLength = J.get$length$asx(this.__internal$_iterable),
        t1 = this._takeCount;
      if (iterableLength > t1)
        return t1;
      return iterableLength;
    },
    $isEfficientLengthIterable: 1
  };
  A.TakeIterator.prototype = {
    moveNext$0() {
      if (--this._remaining >= 0)
        return this._iterator.moveNext$0();
      this._remaining = -1;
      return false;
    },
    get$current(_) {
      var t1;
      if (this._remaining < 0) {
        A._instanceType(this)._precomputed1._as(null);
        return null;
      }
      t1 = this._iterator;
      return t1.get$current(t1);
    }
  };
  A.SkipIterable.prototype = {
    skip$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count");
      A.RangeError_checkNotNegative(count, "count");
      return new A.SkipIterable(this.__internal$_iterable, this._skipCount + count, A._instanceType(this)._eval$1("SkipIterable<1>"));
    },
    get$iterator(_) {
      return new A.SkipIterator(J.get$iterator$ax(this.__internal$_iterable), this._skipCount);
    }
  };
  A.EfficientLengthSkipIterable.prototype = {
    get$length(_) {
      var $length = J.get$length$asx(this.__internal$_iterable) - this._skipCount;
      if ($length >= 0)
        return $length;
      return 0;
    },
    skip$1(_, count) {
      A.ArgumentError_checkNotNull(count, "count");
      A.RangeError_checkNotNegative(count, "count");
      return new A.EfficientLengthSkipIterable(this.__internal$_iterable, this._skipCount + count, this.$ti);
    },
    $isEfficientLengthIterable: 1
  };
  A.SkipIterator.prototype = {
    moveNext$0() {
      var t1, i;
      for (t1 = this._iterator, i = 0; i < this._skipCount; ++i)
        t1.moveNext$0();
      this._skipCount = 0;
      return t1.moveNext$0();
    },
    get$current(_) {
      var t1 = this._iterator;
      return t1.get$current(t1);
    }
  };
  A.SkipWhileIterable.prototype = {
    get$iterator(_) {
      return new A.SkipWhileIterator(J.get$iterator$ax(this.__internal$_iterable), this._f);
    }
  };
  A.SkipWhileIterator.prototype = {
    moveNext$0() {
      var t1, t2, _this = this;
      if (!_this._hasSkipped) {
        _this._hasSkipped = true;
        for (t1 = _this._iterator, t2 = _this._f; t1.moveNext$0();)
          if (!t2.call$1(t1.get$current(t1)))
            return true;
      }
      return _this._iterator.moveNext$0();
    },
    get$current(_) {
      var t1 = this._iterator;
      return t1.get$current(t1);
    }
  };
  A.EmptyIterable.prototype = {
    get$iterator(_) {
      return B.C_EmptyIterator;
    },
    get$isEmpty(_) {
      return true;
    },
    get$length(_) {
      return 0;
    },
    get$first(_) {
      throw A.wrapException(A.IterableElementError_noElement());
    },
    get$last(_) {
      throw A.wrapException(A.IterableElementError_noElement());
    },
    get$single(_) {
      throw A.wrapException(A.IterableElementError_noElement());
    },
    elementAt$1(_, index) {
      throw A.wrapException(A.RangeError$range(index, 0, 0, "index", null));
    },
    contains$1(_, element) {
      return false;
    },
    every$1(_, test) {
      return true;
    },
    join$1(_, separator) {
      return "";
    },
    where$1(_, test) {
      return this;
    },
    map$1$1(_, toElement, $T) {
      return new A.EmptyIterable($T._eval$1("EmptyIterable<0>"));
    },
    skip$1(_, count) {
      A.RangeError_checkNotNegative(count, "count");
      return this;
    },
    take$1(_, count) {
      A.RangeError_checkNotNegative(count, "count");
      return this;
    },
    toList$1$growable(_, growable) {
      var t1 = J.JSArray_JSArray$growable(0, this.$ti._precomputed1);
      return t1;
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    toSet$0(_) {
      return A.LinkedHashSet_LinkedHashSet(this.$ti._precomputed1);
    }
  };
  A.EmptyIterator.prototype = {
    moveNext$0() {
      return false;
    },
    get$current(_) {
      throw A.wrapException(A.IterableElementError_noElement());
    }
  };
  A.FollowedByIterable.prototype = {
    get$iterator(_) {
      return new A.FollowedByIterator(J.get$iterator$ax(this.__internal$_first), this._second);
    },
    get$length(_) {
      var t1 = this._second;
      return J.get$length$asx(this.__internal$_first) + t1.get$length(t1);
    },
    get$isEmpty(_) {
      var t1;
      if (J.get$isEmpty$asx(this.__internal$_first)) {
        t1 = this._second;
        t1 = t1.get$isEmpty(t1);
      } else
        t1 = false;
      return t1;
    },
    get$isNotEmpty(_) {
      var t1;
      if (!J.get$isNotEmpty$asx(this.__internal$_first)) {
        t1 = this._second;
        t1 = t1.get$isNotEmpty(t1);
      } else
        t1 = true;
      return t1;
    },
    contains$1(_, value) {
      var t1;
      if (!J.contains$1$asx(this.__internal$_first, value)) {
        t1 = this._second;
        t1 = t1.contains$1(t1, value);
      } else
        t1 = true;
      return t1;
    },
    get$first(_) {
      var t1,
        iterator = J.get$iterator$ax(this.__internal$_first);
      if (iterator.moveNext$0())
        return iterator.get$current(iterator);
      t1 = this._second;
      return t1.get$first(t1);
    },
    get$last(_) {
      var last,
        t1 = this._second,
        iterator = t1.get$iterator(t1);
      if (iterator.moveNext$0()) {
        last = iterator.get$current(iterator);
        for (; iterator.moveNext$0();)
          last = iterator.get$current(iterator);
        return last;
      }
      return J.get$last$ax(this.__internal$_first);
    }
  };
  A.EfficientLengthFollowedByIterable.prototype = {
    elementAt$1(_, index) {
      var t1 = this.__internal$_first,
        t2 = J.getInterceptor$asx(t1),
        firstLength = t2.get$length(t1);
      if (index < firstLength)
        return t2.elementAt$1(t1, index);
      t1 = this._second;
      return t1.elementAt$1(t1, index - firstLength);
    },
    get$first(_) {
      var t1 = this.__internal$_first,
        t2 = J.getInterceptor$asx(t1);
      if (t2.get$isNotEmpty(t1))
        return t2.get$first(t1);
      t1 = this._second;
      return t1.get$first(t1);
    },
    get$last(_) {
      var t1 = this._second;
      if (t1.get$isNotEmpty(t1))
        return t1.get$last(t1);
      return J.get$last$ax(this.__internal$_first);
    },
    $isEfficientLengthIterable: 1
  };
  A.FollowedByIterator.prototype = {
    moveNext$0() {
      var t1, _this = this;
      if (_this._currentIterator.moveNext$0())
        return true;
      t1 = _this._nextIterable;
      if (t1 != null) {
        t1 = t1.get$iterator(t1);
        _this._currentIterator = t1;
        _this._nextIterable = null;
        return t1.moveNext$0();
      }
      return false;
    },
    get$current(_) {
      var t1 = this._currentIterator;
      return t1.get$current(t1);
    }
  };
  A.WhereTypeIterable.prototype = {
    get$iterator(_) {
      return new A.WhereTypeIterator(J.get$iterator$ax(this._source), this.$ti._eval$1("WhereTypeIterator<1>"));
    }
  };
  A.WhereTypeIterator.prototype = {
    moveNext$0() {
      var t1, t2;
      for (t1 = this._source, t2 = this.$ti._precomputed1; t1.moveNext$0();)
        if (t2._is(t1.get$current(t1)))
          return true;
      return false;
    },
    get$current(_) {
      var t1 = this._source;
      return this.$ti._precomputed1._as(t1.get$current(t1));
    }
  };
  A.FixedLengthListMixin.prototype = {
    set$length(receiver, newLength) {
      throw A.wrapException(A.UnsupportedError$("Cannot change the length of a fixed-length list"));
    },
    add$1(receiver, value) {
      throw A.wrapException(A.UnsupportedError$("Cannot add to a fixed-length list"));
    },
    addAll$1(receiver, iterable) {
      throw A.wrapException(A.UnsupportedError$("Cannot add to a fixed-length list"));
    },
    removeRange$2(receiver, start, end) {
      throw A.wrapException(A.UnsupportedError$("Cannot remove from a fixed-length list"));
    }
  };
  A.UnmodifiableListMixin.prototype = {
    $indexSet(_, index, value) {
      throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list"));
    },
    set$length(_, newLength) {
      throw A.wrapException(A.UnsupportedError$("Cannot change the length of an unmodifiable list"));
    },
    add$1(_, value) {
      throw A.wrapException(A.UnsupportedError$("Cannot add to an unmodifiable list"));
    },
    addAll$1(_, iterable) {
      throw A.wrapException(A.UnsupportedError$("Cannot add to an unmodifiable list"));
    },
    sort$1(_, compare) {
      throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list"));
    },
    setRange$4(_, start, end, iterable, skipCount) {
      throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list"));
    },
    removeRange$2(_, start, end) {
      throw A.wrapException(A.UnsupportedError$("Cannot remove from an unmodifiable list"));
    },
    fillRange$3(_, start, end, fillValue) {
      throw A.wrapException(A.UnsupportedError$("Cannot modify an unmodifiable list"));
    }
  };
  A.UnmodifiableListBase.prototype = {};
  A.ReversedListIterable.prototype = {
    get$length(_) {
      return J.get$length$asx(this._source);
    },
    elementAt$1(_, index) {
      var t1 = this._source,
        t2 = J.getInterceptor$asx(t1);
      return t2.elementAt$1(t1, t2.get$length(t1) - 1 - index);
    }
  };
  A.Symbol.prototype = {
    get$hashCode(_) {
      var hash = this._hashCode;
      if (hash != null)
        return hash;
      hash = 664597 * B.JSString_methods.get$hashCode(this.__internal$_name) & 536870911;
      this._hashCode = hash;
      return hash;
    },
    toString$0(_) {
      return 'Symbol("' + this.__internal$_name + '")';
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.Symbol && this.__internal$_name === other.__internal$_name;
    },
    $isSymbol0: 1
  };
  A.__CastListBase__CastIterableBase_ListMixin.prototype = {};
  A._Record_2.prototype = {$recipe: "+(1,2)", $shape: 1};
  A._Record_2_forImport.prototype = {$recipe: "+forImport(1,2)", $shape: 2};
  A._Record_2_imports_modules.prototype = {$recipe: "+imports,modules(1,2)", $shape: 4};
  A._Record_2_loadedUrls_stylesheet.prototype = {$recipe: "+loadedUrls,stylesheet(1,2)", $shape: 5};
  A._Record_2_sourceMap.prototype = {$recipe: "+sourceMap(1,2)", $shape: 3};
  A._Record_3.prototype = {$recipe: "+(1,2,3)", $shape: 6};
  A._Record_3_importer_isDependency.prototype = {$recipe: "+importer,isDependency(1,2,3)", $shape: 8};
  A._Record_3_originalUrl.prototype = {$recipe: "+originalUrl(1,2,3)", $shape: 7};
  A._Record_4.prototype = {$recipe: "+(1,2,3,4)", $shape: 9};
  A._Record_4_baseImporter_baseUrl_forImport.prototype = {$recipe: "+baseImporter,baseUrl,forImport(1,2,3,4)", $shape: 10};
  A._Record_5_named_namedNodes_positional_positionalNodes_separator.prototype = {$recipe: "+named,namedNodes,positional,positionalNodes,separator(1,2,3,4,5)", $shape: 11};
  A.ConstantMapView.prototype = {};
  A.ConstantMap.prototype = {
    cast$2$0(_, RK, RV) {
      var t1 = A._instanceType(this);
      return A.Map_castFrom(this, t1._precomputed1, t1._rest[1], RK, RV);
    },
    get$isEmpty(_) {
      return this.get$length(this) === 0;
    },
    get$isNotEmpty(_) {
      return this.get$length(this) !== 0;
    },
    toString$0(_) {
      return A.MapBase_mapToString(this);
    },
    $indexSet(_, key, value) {
      A.ConstantMap__throwUnmodifiable();
    },
    remove$1(_, key) {
      A.ConstantMap__throwUnmodifiable();
    },
    addAll$1(_, other) {
      A.ConstantMap__throwUnmodifiable();
    },
    get$entries(_) {
      return new A._SyncStarIterable(this.entries$body$ConstantMap(0), A._instanceType(this)._eval$1("_SyncStarIterable<MapEntry<1,2>>"));
    },
    entries$body$ConstantMap($async$_) {
      var $async$self = this;
      return function() {
        var _ = $async$_;
        var $async$goto = 0, $async$handler = 1, $async$currentError, t1, t2, key;
        return function $async$get$entries($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = $async$self.get$keys($async$self), t1 = t1.get$iterator(t1), t2 = A._instanceType($async$self), t2 = t2._eval$1("@<1>")._bind$1(t2._rest[1])._eval$1("MapEntry<1,2>");
              case 2:
                // for condition
                if (!t1.moveNext$0()) {
                  // goto after for
                  $async$goto = 3;
                  break;
                }
                key = t1.get$current(t1);
                $async$goto = 4;
                return $async$iterator._async$_current = new A.MapEntry(key, $async$self.$index(0, key), t2), 1;
              case 4:
                // after yield
                // goto for condition
                $async$goto = 2;
                break;
              case 3:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    $isMap: 1
  };
  A.ConstantStringMap.prototype = {
    get$length(_) {
      return this._values.length;
    },
    get$_keys() {
      var keys = this.$keys;
      if (keys == null) {
        keys = Object.keys(this._jsIndex);
        this.$keys = keys;
      }
      return keys;
    },
    containsKey$1(key) {
      if (typeof key != "string")
        return false;
      if ("__proto__" === key)
        return false;
      return this._jsIndex.hasOwnProperty(key);
    },
    $index(_, key) {
      if (!this.containsKey$1(key))
        return null;
      return this._values[this._jsIndex[key]];
    },
    forEach$1(_, f) {
      var t1, i,
        keys = this.get$_keys(),
        values = this._values;
      for (t1 = keys.length, i = 0; i < t1; ++i)
        f.call$2(keys[i], values[i]);
    },
    get$keys(_) {
      return new A._KeysOrValues(this.get$_keys(), this.$ti._eval$1("_KeysOrValues<1>"));
    },
    get$values(_) {
      return new A._KeysOrValues(this._values, this.$ti._eval$1("_KeysOrValues<2>"));
    }
  };
  A._KeysOrValues.prototype = {
    get$length(_) {
      return this._elements.length;
    },
    get$isEmpty(_) {
      return 0 === this._elements.length;
    },
    get$isNotEmpty(_) {
      return 0 !== this._elements.length;
    },
    get$iterator(_) {
      var t1 = this._elements;
      return new A._KeysOrValuesOrElementsIterator(t1, t1.length);
    }
  };
  A._KeysOrValuesOrElementsIterator.prototype = {
    get$current(_) {
      var t1 = this.__js_helper$_current;
      return t1 == null ? A._instanceType(this)._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var _this = this,
        t1 = _this.__js_helper$_index;
      if (t1 >= _this.__js_helper$_length) {
        _this.__js_helper$_current = null;
        return false;
      }
      _this.__js_helper$_current = _this._elements[t1];
      _this.__js_helper$_index = t1 + 1;
      return true;
    }
  };
  A.ConstantSet.prototype = {
    add$1(_, value) {
      A.ConstantSet__throwUnmodifiable();
    },
    addAll$1(_, elements) {
      A.ConstantSet__throwUnmodifiable();
    },
    remove$1(_, value) {
      A.ConstantSet__throwUnmodifiable();
    }
  };
  A.ConstantStringSet.prototype = {
    get$length(_) {
      return this.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this.__js_helper$_length === 0;
    },
    get$isNotEmpty(_) {
      return this.__js_helper$_length !== 0;
    },
    get$iterator(_) {
      var t1,
        keys = this.$keys;
      if (keys == null) {
        keys = Object.keys(this._jsIndex);
        this.$keys = keys;
      }
      t1 = keys;
      return new A._KeysOrValuesOrElementsIterator(t1, t1.length);
    },
    contains$1(_, key) {
      if (typeof key != "string")
        return false;
      if ("__proto__" === key)
        return false;
      return this._jsIndex.hasOwnProperty(key);
    },
    toSet$0(_) {
      return A.LinkedHashSet_LinkedHashSet$of(this, this.$ti._precomputed1);
    }
  };
  A.GeneralConstantSet.prototype = {
    get$length(_) {
      return this._elements.length;
    },
    get$isEmpty(_) {
      return this._elements.length === 0;
    },
    get$isNotEmpty(_) {
      return this._elements.length !== 0;
    },
    get$iterator(_) {
      var t1 = this._elements;
      return new A._KeysOrValuesOrElementsIterator(t1, t1.length);
    },
    _getMap$0() {
      var t1, t2, _i, key, _this = this,
        backingMap = _this.$map;
      if (backingMap == null) {
        t1 = _this.$ti;
        backingMap = new A.JsConstantLinkedHashMap(t1._eval$1("@<1>")._bind$1(t1._precomputed1)._eval$1("JsConstantLinkedHashMap<1,2>"));
        for (t1 = _this._elements, t2 = t1.length, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
          key = t1[_i];
          backingMap.$indexSet(0, key, key);
        }
        _this.$map = backingMap;
      }
      return backingMap;
    },
    contains$1(_, key) {
      return this._getMap$0().containsKey$1(key);
    },
    toSet$0(_) {
      return A.LinkedHashSet_LinkedHashSet$of(this, this.$ti._precomputed1);
    }
  };
  A.Instantiation.prototype = {
    Instantiation$1(_genericClosure) {
      if (false)
        {}
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.Instantiation && this._genericClosure.$eq(0, other._genericClosure) && A.getRuntimeTypeOfClosure(this) === A.getRuntimeTypeOfClosure(other);
    },
    get$hashCode(_) {
      return A.Object_hash(this._genericClosure, A.getRuntimeTypeOfClosure(this), B.C_SentinelValue, B.C_SentinelValue);
    },
    toString$0(_) {
      var t1 = B.JSArray_methods.join$1(this.get$_types(), ", ");
      return this._genericClosure.toString$0(0) + " with " + ("<" + t1 + ">");
    }
  };
  A.Instantiation1.prototype = {
    get$_types() {
      return [A.createRuntimeType(this.$ti._precomputed1)];
    },
    call$0() {
      return this._genericClosure.call$1$0(this.$ti._rest[0]);
    },
    call$2(a0, a1) {
      return this._genericClosure.call$1$2(a0, a1, this.$ti._rest[0]);
    },
    call$3(a0, a1, a2) {
      return this._genericClosure.call$1$3(a0, a1, a2, this.$ti._rest[0]);
    },
    call$4(a0, a1, a2, a3) {
      return this._genericClosure.call$1$4(a0, a1, a2, a3, this.$ti._rest[0]);
    },
    $signature() {
      return A.instantiatedGenericFunctionType(A.closureFunctionType(this._genericClosure), this.$ti);
    }
  };
  A.JSInvocationMirror.prototype = {
    get$memberName() {
      var t1 = this.__js_helper$_memberName;
      if (t1 instanceof A.Symbol)
        return t1;
      return this.__js_helper$_memberName = new A.Symbol(t1);
    },
    get$positionalArguments() {
      var t1, t2, argumentCount, list, index, _this = this;
      if (_this.__js_helper$_kind === 1)
        return B.List_empty6;
      t1 = _this._arguments;
      t2 = J.getInterceptor$asx(t1);
      argumentCount = t2.get$length(t1) - J.get$length$asx(_this._namedArgumentNames) - _this._typeArgumentCount;
      if (argumentCount === 0)
        return B.List_empty6;
      list = [];
      for (index = 0; index < argumentCount; ++index)
        list.push(t2.$index(t1, index));
      return J.JSArray_markUnmodifiableList(list);
    },
    get$namedArguments() {
      var t1, t2, namedArgumentCount, t3, t4, namedArgumentsStartIndex, map, i, _this = this;
      if (_this.__js_helper$_kind !== 0)
        return B.Map_empty3;
      t1 = _this._namedArgumentNames;
      t2 = J.getInterceptor$asx(t1);
      namedArgumentCount = t2.get$length(t1);
      t3 = _this._arguments;
      t4 = J.getInterceptor$asx(t3);
      namedArgumentsStartIndex = t4.get$length(t3) - namedArgumentCount - _this._typeArgumentCount;
      if (namedArgumentCount === 0)
        return B.Map_empty3;
      map = new A.JsLinkedHashMap(type$.JsLinkedHashMap_Symbol_dynamic);
      for (i = 0; i < namedArgumentCount; ++i)
        map.$indexSet(0, new A.Symbol(t2.$index(t1, i)), t4.$index(t3, namedArgumentsStartIndex + i));
      return new A.ConstantMapView(map, type$.ConstantMapView_Symbol_dynamic);
    }
  };
  A.Primitives_functionNoSuchMethod_closure.prototype = {
    call$2($name, argument) {
      var t1 = this._box_0;
      t1.names = t1.names + "$" + $name;
      this.namedArgumentList.push($name);
      this.$arguments.push(argument);
      ++t1.argumentCount;
    },
    $signature: 208
  };
  A.TypeErrorDecoder.prototype = {
    matchTypeError$1(message) {
      var result, t1, _this = this,
        match = new RegExp(_this._pattern).exec(message);
      if (match == null)
        return null;
      result = Object.create(null);
      t1 = _this._arguments;
      if (t1 !== -1)
        result.arguments = match[t1 + 1];
      t1 = _this._argumentsExpr;
      if (t1 !== -1)
        result.argumentsExpr = match[t1 + 1];
      t1 = _this._expr;
      if (t1 !== -1)
        result.expr = match[t1 + 1];
      t1 = _this._method;
      if (t1 !== -1)
        result.method = match[t1 + 1];
      t1 = _this._receiver;
      if (t1 !== -1)
        result.receiver = match[t1 + 1];
      return result;
    }
  };
  A.NullError.prototype = {
    toString$0(_) {
      var t1 = this._method;
      if (t1 == null)
        return "NoSuchMethodError: " + this.__js_helper$_message;
      return "NoSuchMethodError: method not found: '" + t1 + "' on null";
    }
  };
  A.JsNoSuchMethodError.prototype = {
    toString$0(_) {
      var t2, _this = this,
        _s38_ = "NoSuchMethodError: method not found: '",
        t1 = _this._method;
      if (t1 == null)
        return "NoSuchMethodError: " + _this.__js_helper$_message;
      t2 = _this._receiver;
      if (t2 == null)
        return _s38_ + t1 + "' (" + _this.__js_helper$_message + ")";
      return _s38_ + t1 + "' on '" + t2 + "' (" + _this.__js_helper$_message + ")";
    }
  };
  A.UnknownJsTypeError.prototype = {
    toString$0(_) {
      var t1 = this.__js_helper$_message;
      return t1.length === 0 ? "Error" : "Error: " + t1;
    }
  };
  A.NullThrownFromJavaScriptException.prototype = {
    toString$0(_) {
      return "Throw of null ('" + (this._irritant === null ? "null" : "undefined") + "' from JavaScript)";
    },
    $isException: 1
  };
  A.ExceptionAndStackTrace.prototype = {};
  A._StackTrace.prototype = {
    toString$0(_) {
      var trace,
        t1 = this._trace;
      if (t1 != null)
        return t1;
      t1 = this._exception;
      trace = t1 !== null && typeof t1 === "object" ? t1.stack : null;
      return this._trace = trace == null ? "" : trace;
    },
    $isStackTrace: 1
  };
  A.Closure.prototype = {
    toString$0(_) {
      var $constructor = this.constructor,
        $name = $constructor == null ? null : $constructor.name;
      return "Closure '" + A.unminifyOrTag($name == null ? "unknown" : $name) + "'";
    },
    $isFunction: 1,
    get$$call() {
      return this;
    },
    "call*": "call$1",
    $requiredArgCount: 1,
    $defaultValues: null
  };
  A.Closure0Args.prototype = {"call*": "call$0", $requiredArgCount: 0};
  A.Closure2Args.prototype = {"call*": "call$2", $requiredArgCount: 2};
  A.TearOffClosure.prototype = {};
  A.StaticClosure.prototype = {
    toString$0(_) {
      var $name = this.$static_name;
      if ($name == null)
        return "Closure of unknown static method";
      return "Closure '" + A.unminifyOrTag($name) + "'";
    }
  };
  A.BoundClosure.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      if (this === other)
        return true;
      if (!(other instanceof A.BoundClosure))
        return false;
      return this.$_target === other.$_target && this._receiver === other._receiver;
    },
    get$hashCode(_) {
      return (A.objectHashCode(this._receiver) ^ A.Primitives_objectHashCode(this.$_target)) >>> 0;
    },
    toString$0(_) {
      return "Closure '" + this.$_name + "' of " + ("Instance of '" + A.Primitives_objectTypeName(this._receiver) + "'");
    }
  };
  A._CyclicInitializationError.prototype = {
    toString$0(_) {
      return "Reading static variable '" + this.variableName + "' during its initialization";
    }
  };
  A.RuntimeError.prototype = {
    toString$0(_) {
      return "RuntimeError: " + this.message;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A._Required.prototype = {};
  A.JsLinkedHashMap.prototype = {
    get$length(_) {
      return this.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this.__js_helper$_length === 0;
    },
    get$isNotEmpty(_) {
      return this.__js_helper$_length !== 0;
    },
    get$keys(_) {
      return new A.LinkedHashMapKeyIterable(this, A._instanceType(this)._eval$1("LinkedHashMapKeyIterable<1>"));
    },
    get$values(_) {
      var t1 = A._instanceType(this);
      return A.MappedIterable_MappedIterable(new A.LinkedHashMapKeyIterable(this, t1._eval$1("LinkedHashMapKeyIterable<1>")), new A.JsLinkedHashMap_values_closure(this), t1._precomputed1, t1._rest[1]);
    },
    containsKey$1(key) {
      var strings, nums;
      if (typeof key == "string") {
        strings = this._strings;
        if (strings == null)
          return false;
        return strings[key] != null;
      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
        nums = this._nums;
        if (nums == null)
          return false;
        return nums[key] != null;
      } else
        return this.internalContainsKey$1(key);
    },
    internalContainsKey$1(key) {
      var rest = this.__js_helper$_rest;
      if (rest == null)
        return false;
      return this.internalFindBucketIndex$2(rest[this.internalComputeHashCode$1(key)], key) >= 0;
    },
    addAll$1(_, other) {
      other.forEach$1(0, new A.JsLinkedHashMap_addAll_closure(this));
    },
    $index(_, key) {
      var strings, cell, t1, nums, _null = null;
      if (typeof key == "string") {
        strings = this._strings;
        if (strings == null)
          return _null;
        cell = strings[key];
        t1 = cell == null ? _null : cell.hashMapCellValue;
        return t1;
      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
        nums = this._nums;
        if (nums == null)
          return _null;
        cell = nums[key];
        t1 = cell == null ? _null : cell.hashMapCellValue;
        return t1;
      } else
        return this.internalGet$1(key);
    },
    internalGet$1(key) {
      var bucket, index,
        rest = this.__js_helper$_rest;
      if (rest == null)
        return null;
      bucket = rest[this.internalComputeHashCode$1(key)];
      index = this.internalFindBucketIndex$2(bucket, key);
      if (index < 0)
        return null;
      return bucket[index].hashMapCellValue;
    },
    $indexSet(_, key, value) {
      var strings, nums, _this = this;
      if (typeof key == "string") {
        strings = _this._strings;
        _this._addHashTableEntry$3(strings == null ? _this._strings = _this._newHashTable$0() : strings, key, value);
      } else if (typeof key == "number" && (key & 0x3fffffff) === key) {
        nums = _this._nums;
        _this._addHashTableEntry$3(nums == null ? _this._nums = _this._newHashTable$0() : nums, key, value);
      } else
        _this.internalSet$2(key, value);
    },
    internalSet$2(key, value) {
      var hash, bucket, index, _this = this,
        rest = _this.__js_helper$_rest;
      if (rest == null)
        rest = _this.__js_helper$_rest = _this._newHashTable$0();
      hash = _this.internalComputeHashCode$1(key);
      bucket = rest[hash];
      if (bucket == null)
        rest[hash] = [_this._newLinkedCell$2(key, value)];
      else {
        index = _this.internalFindBucketIndex$2(bucket, key);
        if (index >= 0)
          bucket[index].hashMapCellValue = value;
        else
          bucket.push(_this._newLinkedCell$2(key, value));
      }
    },
    putIfAbsent$2(key, ifAbsent) {
      var t1, value, _this = this;
      if (_this.containsKey$1(key)) {
        t1 = _this.$index(0, key);
        return t1 == null ? A._instanceType(_this)._rest[1]._as(t1) : t1;
      }
      value = ifAbsent.call$0();
      _this.$indexSet(0, key, value);
      return value;
    },
    remove$1(_, key) {
      var _this = this;
      if (typeof key == "string")
        return _this.__js_helper$_removeHashTableEntry$2(_this._strings, key);
      else if (typeof key == "number" && (key & 0x3fffffff) === key)
        return _this.__js_helper$_removeHashTableEntry$2(_this._nums, key);
      else
        return _this.internalRemove$1(key);
    },
    internalRemove$1(key) {
      var hash, bucket, index, cell, _this = this,
        rest = _this.__js_helper$_rest;
      if (rest == null)
        return null;
      hash = _this.internalComputeHashCode$1(key);
      bucket = rest[hash];
      index = _this.internalFindBucketIndex$2(bucket, key);
      if (index < 0)
        return null;
      cell = bucket.splice(index, 1)[0];
      _this.__js_helper$_unlinkCell$1(cell);
      if (bucket.length === 0)
        delete rest[hash];
      return cell.hashMapCellValue;
    },
    clear$0(_) {
      var _this = this;
      if (_this.__js_helper$_length > 0) {
        _this._strings = _this._nums = _this.__js_helper$_rest = _this._first = _this._last = null;
        _this.__js_helper$_length = 0;
        _this._modified$0();
      }
    },
    forEach$1(_, action) {
      var _this = this,
        cell = _this._first,
        modifications = _this._modifications;
      for (; cell != null;) {
        action.call$2(cell.hashMapCellKey, cell.hashMapCellValue);
        if (modifications !== _this._modifications)
          throw A.wrapException(A.ConcurrentModificationError$(_this));
        cell = cell._next;
      }
    },
    _addHashTableEntry$3(table, key, value) {
      var cell = table[key];
      if (cell == null)
        table[key] = this._newLinkedCell$2(key, value);
      else
        cell.hashMapCellValue = value;
    },
    __js_helper$_removeHashTableEntry$2(table, key) {
      var cell;
      if (table == null)
        return null;
      cell = table[key];
      if (cell == null)
        return null;
      this.__js_helper$_unlinkCell$1(cell);
      delete table[key];
      return cell.hashMapCellValue;
    },
    _modified$0() {
      this._modifications = this._modifications + 1 & 1073741823;
    },
    _newLinkedCell$2(key, value) {
      var t1, _this = this,
        cell = new A.LinkedHashMapCell(key, value);
      if (_this._first == null)
        _this._first = _this._last = cell;
      else {
        t1 = _this._last;
        t1.toString;
        cell._previous = t1;
        _this._last = t1._next = cell;
      }
      ++_this.__js_helper$_length;
      _this._modified$0();
      return cell;
    },
    __js_helper$_unlinkCell$1(cell) {
      var _this = this,
        previous = cell._previous,
        next = cell._next;
      if (previous == null)
        _this._first = next;
      else
        previous._next = next;
      if (next == null)
        _this._last = previous;
      else
        next._previous = previous;
      --_this.__js_helper$_length;
      _this._modified$0();
    },
    internalComputeHashCode$1(key) {
      return J.get$hashCode$(key) & 1073741823;
    },
    internalFindBucketIndex$2(bucket, key) {
      var $length, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; ++i)
        if (J.$eq$(bucket[i].hashMapCellKey, key))
          return i;
      return -1;
    },
    toString$0(_) {
      return A.MapBase_mapToString(this);
    },
    _newHashTable$0() {
      var table = Object.create(null);
      table["<non-identifier-key>"] = table;
      delete table["<non-identifier-key>"];
      return table;
    }
  };
  A.JsLinkedHashMap_values_closure.prototype = {
    call$1(each) {
      var t1 = this.$this,
        t2 = t1.$index(0, each);
      return t2 == null ? A._instanceType(t1)._rest[1]._as(t2) : t2;
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("2(1)");
    }
  };
  A.JsLinkedHashMap_addAll_closure.prototype = {
    call$2(key, value) {
      this.$this.$indexSet(0, key, value);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(1,2)");
    }
  };
  A.LinkedHashMapCell.prototype = {};
  A.LinkedHashMapKeyIterable.prototype = {
    get$length(_) {
      return this.__js_helper$_map.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this.__js_helper$_map.__js_helper$_length === 0;
    },
    get$iterator(_) {
      var t1 = this.__js_helper$_map,
        t2 = new A.LinkedHashMapKeyIterator(t1, t1._modifications);
      t2._cell = t1._first;
      return t2;
    },
    contains$1(_, element) {
      return this.__js_helper$_map.containsKey$1(element);
    }
  };
  A.LinkedHashMapKeyIterator.prototype = {
    get$current(_) {
      return this.__js_helper$_current;
    },
    moveNext$0() {
      var cell, _this = this,
        t1 = _this.__js_helper$_map;
      if (_this._modifications !== t1._modifications)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      cell = _this._cell;
      if (cell == null) {
        _this.__js_helper$_current = null;
        return false;
      } else {
        _this.__js_helper$_current = cell.hashMapCellKey;
        _this._cell = cell._next;
        return true;
      }
    }
  };
  A.JsIdentityLinkedHashMap.prototype = {
    internalComputeHashCode$1(key) {
      return A.objectHashCode(key) & 1073741823;
    },
    internalFindBucketIndex$2(bucket, key) {
      var $length, i, t1;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; ++i) {
        t1 = bucket[i].hashMapCellKey;
        if (t1 == null ? key == null : t1 === key)
          return i;
      }
      return -1;
    }
  };
  A.JsConstantLinkedHashMap.prototype = {
    internalComputeHashCode$1(key) {
      return A.constantHashCode(key) & 1073741823;
    },
    internalFindBucketIndex$2(bucket, key) {
      var $length, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; ++i)
        if (J.$eq$(bucket[i].hashMapCellKey, key))
          return i;
      return -1;
    }
  };
  A.initHooks_closure.prototype = {
    call$1(o) {
      return this.getTag(o);
    },
    $signature: 88
  };
  A.initHooks_closure0.prototype = {
    call$2(o, tag) {
      return this.getUnknownTag(o, tag);
    },
    $signature: 434
  };
  A.initHooks_closure1.prototype = {
    call$1(tag) {
      return this.prototypeForTag(tag);
    },
    $signature: 327
  };
  A._Record.prototype = {
    toString$0(_) {
      return this._toString$1(false);
    },
    _toString$1(safe) {
      var t2, separator, i, key, value,
        keys = this._fieldKeys$0(),
        values = this._getFieldValues$0(),
        t1 = (safe ? "" + "Record " : "") + "(";
      for (t2 = keys.length, separator = "", i = 0; i < t2; ++i, separator = ", ") {
        t1 += separator;
        key = keys[i];
        if (typeof key == "string")
          t1 = t1 + key + ": ";
        value = values[i];
        t1 = safe ? t1 + A.Primitives_safeToString(value) : t1 + A.S(value);
      }
      t1 += ")";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _fieldKeys$0() {
      var t1,
        shapeTag = this.$shape;
      for (; $._Record__computedFieldKeys.length <= shapeTag;)
        $._Record__computedFieldKeys.push(null);
      t1 = $._Record__computedFieldKeys[shapeTag];
      if (t1 == null) {
        t1 = this._computeFieldKeys$0();
        $._Record__computedFieldKeys[shapeTag] = t1;
      }
      return t1;
    },
    _computeFieldKeys$0() {
      var i, names, last,
        recipe = this.$recipe,
        position = recipe.indexOf("("),
        joinedNames = recipe.substring(1, position),
        fields = recipe.substring(position),
        arity = fields === "()" ? 0 : fields.replace(/[^,]/g, "").length + 1,
        t1 = type$.Object,
        result = J.JSArray_JSArray$allocateGrowable(arity, t1);
      for (i = 0; i < arity; ++i)
        result[i] = i;
      if (joinedNames !== "") {
        names = joinedNames.split(",");
        i = names.length;
        for (last = arity; i > 0;) {
          --last;
          --i;
          result[last] = names[i];
        }
      }
      return A.List_List$unmodifiable(result, t1);
    }
  };
  A._Record2.prototype = {
    _getFieldValues$0() {
      return [this._0, this._1];
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A._Record2 && this.$shape === other.$shape && J.$eq$(this._0, other._0) && J.$eq$(this._1, other._1);
    },
    get$hashCode(_) {
      return A.Object_hash(this.$shape, this._0, this._1, B.C_SentinelValue);
    }
  };
  A._Record3.prototype = {
    _getFieldValues$0() {
      return [this._0, this._1, this._2];
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A._Record3 && _this.$shape === other.$shape && J.$eq$(_this._0, other._0) && J.$eq$(_this._1, other._1) && J.$eq$(_this._2, other._2);
    },
    get$hashCode(_) {
      var _this = this;
      return A.Object_hash(_this.$shape, _this._0, _this._1, _this._2);
    }
  };
  A._RecordN.prototype = {
    _getFieldValues$0() {
      return this._values;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A._RecordN && this.$shape === other.$shape && A._RecordN__equalValues(this._values, other._values);
    },
    get$hashCode(_) {
      return A.Object_hash(this.$shape, A.Object_hashAll(this._values), B.C_SentinelValue, B.C_SentinelValue);
    }
  };
  A.JSSyntaxRegExp.prototype = {
    toString$0(_) {
      return "RegExp/" + this.pattern + "/" + this._nativeRegExp.flags;
    },
    get$_nativeGlobalVersion() {
      var _this = this,
        t1 = _this._nativeGlobalRegExp;
      if (t1 != null)
        return t1;
      t1 = _this._nativeRegExp;
      return _this._nativeGlobalRegExp = A.JSSyntaxRegExp_makeNative(_this.pattern, t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, true);
    },
    get$_nativeAnchoredVersion() {
      var _this = this,
        t1 = _this._nativeAnchoredRegExp;
      if (t1 != null)
        return t1;
      t1 = _this._nativeRegExp;
      return _this._nativeAnchoredRegExp = A.JSSyntaxRegExp_makeNative(_this.pattern + "|()", t1.multiline, !t1.ignoreCase, t1.unicode, t1.dotAll, true);
    },
    firstMatch$1(string) {
      var m = this._nativeRegExp.exec(string);
      if (m == null)
        return null;
      return new A._MatchImplementation(m);
    },
    allMatches$2(_, string, start) {
      var t1 = string.length;
      if (start > t1)
        throw A.wrapException(A.RangeError$range(start, 0, t1, null, null));
      return new A._AllMatchesIterable(this, string, start);
    },
    allMatches$1($receiver, string) {
      return this.allMatches$2($receiver, string, 0);
    },
    _execGlobal$2(string, start) {
      var match,
        regexp = this.get$_nativeGlobalVersion();
      regexp.lastIndex = start;
      match = regexp.exec(string);
      if (match == null)
        return null;
      return new A._MatchImplementation(match);
    },
    _execAnchored$2(string, start) {
      var match,
        regexp = this.get$_nativeAnchoredVersion();
      regexp.lastIndex = start;
      match = regexp.exec(string);
      if (match == null)
        return null;
      if (match.pop() != null)
        return null;
      return new A._MatchImplementation(match);
    },
    matchAsPrefix$2(_, string, start) {
      if (start < 0 || start > string.length)
        throw A.wrapException(A.RangeError$range(start, 0, string.length, null, null));
      return this._execAnchored$2(string, start);
    }
  };
  A._MatchImplementation.prototype = {
    get$start(_) {
      return this._match.index;
    },
    get$end(_) {
      var t1 = this._match;
      return t1.index + t1[0].length;
    },
    $isMatch: 1,
    $isRegExpMatch: 1
  };
  A._AllMatchesIterable.prototype = {
    get$iterator(_) {
      return new A._AllMatchesIterator(this._re, this.__js_helper$_string, this._start);
    }
  };
  A._AllMatchesIterator.prototype = {
    get$current(_) {
      var t1 = this.__js_helper$_current;
      return t1 == null ? type$.RegExpMatch._as(t1) : t1;
    },
    moveNext$0() {
      var t1, t2, t3, match, nextIndex, _this = this,
        string = _this.__js_helper$_string;
      if (string == null)
        return false;
      t1 = _this._nextIndex;
      t2 = string.length;
      if (t1 <= t2) {
        t3 = _this._regExp;
        match = t3._execGlobal$2(string, t1);
        if (match != null) {
          _this.__js_helper$_current = match;
          nextIndex = match.get$end(match);
          if (match._match.index === nextIndex) {
            if (t3._nativeRegExp.unicode) {
              t1 = _this._nextIndex;
              t3 = t1 + 1;
              if (t3 < t2) {
                t1 = string.charCodeAt(t1);
                if (t1 >= 55296 && t1 <= 56319) {
                  t1 = string.charCodeAt(t3);
                  t1 = t1 >= 56320 && t1 <= 57343;
                } else
                  t1 = false;
              } else
                t1 = false;
            } else
              t1 = false;
            nextIndex = (t1 ? nextIndex + 1 : nextIndex) + 1;
          }
          _this._nextIndex = nextIndex;
          return true;
        }
      }
      _this.__js_helper$_string = _this.__js_helper$_current = null;
      return false;
    }
  };
  A.StringMatch.prototype = {
    get$end(_) {
      return this.start + this.pattern.length;
    },
    $isMatch: 1,
    get$start(receiver) {
      return this.start;
    }
  };
  A._StringAllMatchesIterable.prototype = {
    get$iterator(_) {
      return new A._StringAllMatchesIterator(this._input, this._pattern, this.__js_helper$_index);
    },
    get$first(_) {
      var t1 = this._pattern,
        index = this._input.indexOf(t1, this.__js_helper$_index);
      if (index >= 0)
        return new A.StringMatch(index, t1);
      throw A.wrapException(A.IterableElementError_noElement());
    }
  };
  A._StringAllMatchesIterator.prototype = {
    moveNext$0() {
      var index, end, _this = this,
        t1 = _this.__js_helper$_index,
        t2 = _this._pattern,
        t3 = t2.length,
        t4 = _this._input,
        t5 = t4.length;
      if (t1 + t3 > t5) {
        _this.__js_helper$_current = null;
        return false;
      }
      index = t4.indexOf(t2, t1);
      if (index < 0) {
        _this.__js_helper$_index = t5 + 1;
        _this.__js_helper$_current = null;
        return false;
      }
      end = index + t3;
      _this.__js_helper$_current = new A.StringMatch(index, t2);
      _this.__js_helper$_index = end === _this.__js_helper$_index ? end + 1 : end;
      return true;
    },
    get$current(_) {
      var t1 = this.__js_helper$_current;
      t1.toString;
      return t1;
    }
  };
  A._Cell.prototype = {
    readLocal$1$0() {
      var t1 = this._value;
      if (t1 === this)
        A.throwExpression(new A.LateError("Local '" + this.__late_helper$_name + "' has not been initialized."));
      return t1;
    },
    readLocal$0() {
      return this.readLocal$1$0(type$.dynamic);
    },
    _readLocal$0() {
      var t1 = this._value;
      if (t1 === this)
        throw A.wrapException(new A.LateError("Local '" + this.__late_helper$_name + "' has not been initialized."));
      return t1;
    }
  };
  A._InitializedCell.prototype = {
    readFinal$1$0() {
      var result, _this = this,
        t1 = _this._value;
      if (t1 === _this) {
        result = _this._initializer.call$0();
        if (_this._value !== _this)
          A.throwExpression(new A.LateError(string$.Local_));
        _this._value = result;
        t1 = result;
      }
      return t1;
    },
    readFinal$0() {
      return this.readFinal$1$0(type$.dynamic);
    },
    _readFinal$0() {
      var result, _this = this,
        t1 = _this._value;
      if (t1 === _this) {
        result = _this._initializer.call$0();
        if (_this._value !== _this)
          throw A.wrapException(new A.LateError(string$.Local_));
        _this._value = result;
        t1 = result;
      }
      return t1;
    }
  };
  A.NativeByteBuffer.prototype = {
    get$runtimeType(receiver) {
      return B.Type_ByteBuffer_RkP;
    },
    $isTrustedGetRuntimeType: 1,
    $isByteBuffer: 1
  };
  A.NativeTypedData.prototype = {
    _invalidPosition$3(receiver, position, $length, $name) {
      var t1 = A.RangeError$range(position, 0, $length, $name, null);
      throw A.wrapException(t1);
    },
    _checkPosition$3(receiver, position, $length, $name) {
      if (position >>> 0 !== position || position > $length)
        this._invalidPosition$3(receiver, position, $length, $name);
    }
  };
  A.NativeByteData.prototype = {
    get$runtimeType(receiver) {
      return B.Type_ByteData_zNC;
    },
    $isTrustedGetRuntimeType: 1,
    $isByteData: 1
  };
  A.NativeTypedArray.prototype = {
    get$length(receiver) {
      return receiver.length;
    },
    _setRangeFast$4(receiver, start, end, source, skipCount) {
      var count, sourceLength,
        targetLength = receiver.length;
      this._checkPosition$3(receiver, start, targetLength, "start");
      this._checkPosition$3(receiver, end, targetLength, "end");
      if (start > end)
        throw A.wrapException(A.RangeError$range(start, 0, end, null, null));
      count = end - start;
      if (skipCount < 0)
        throw A.wrapException(A.ArgumentError$(skipCount, null));
      sourceLength = source.length;
      if (sourceLength - skipCount < count)
        throw A.wrapException(A.StateError$("Not enough elements"));
      if (skipCount !== 0 || sourceLength !== count)
        source = source.subarray(skipCount, skipCount + count);
      receiver.set(source, start);
    },
    $isJavaScriptIndexingBehavior: 1
  };
  A.NativeTypedArrayOfDouble.prototype = {
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    $indexSet(receiver, index, value) {
      A._checkValidIndex(index, receiver, receiver.length);
      receiver[index] = value;
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      if (type$.NativeTypedArrayOfDouble._is(iterable)) {
        this._setRangeFast$4(receiver, start, end, iterable, skipCount);
        return;
      }
      this.super$ListBase$setRange(receiver, start, end, iterable, skipCount);
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  A.NativeTypedArrayOfInt.prototype = {
    $indexSet(receiver, index, value) {
      A._checkValidIndex(index, receiver, receiver.length);
      receiver[index] = value;
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      if (type$.NativeTypedArrayOfInt._is(iterable)) {
        this._setRangeFast$4(receiver, start, end, iterable, skipCount);
        return;
      }
      this.super$ListBase$setRange(receiver, start, end, iterable, skipCount);
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  A.NativeFloat32List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Float32List_LB7;
    },
    sublist$2(receiver, start, end) {
      return new Float32Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isFloat32List: 1
  };
  A.NativeFloat64List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Float64List_LB7;
    },
    sublist$2(receiver, start, end) {
      return new Float64Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isFloat64List: 1
  };
  A.NativeInt16List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Int16List_uXf;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Int16Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isInt16List: 1
  };
  A.NativeInt32List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Int32List_O50;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Int32Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isInt32List: 1
  };
  A.NativeInt8List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Int8List_ekJ;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Int8Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isInt8List: 1
  };
  A.NativeUint16List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint16List_2bx;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint16Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isUint16List: 1
  };
  A.NativeUint32List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint32List_2bx;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint32Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isUint32List: 1
  };
  A.NativeUint8ClampedList.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint8ClampedList_Jik;
    },
    get$length(receiver) {
      return receiver.length;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint8ClampedArray(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isUint8ClampedList: 1
  };
  A.NativeUint8List.prototype = {
    get$runtimeType(receiver) {
      return B.Type_Uint8List_WLA;
    },
    get$length(receiver) {
      return receiver.length;
    },
    $index(receiver, index) {
      A._checkValidIndex(index, receiver, receiver.length);
      return receiver[index];
    },
    sublist$2(receiver, start, end) {
      return new Uint8Array(receiver.subarray(start, A._checkValidRange(start, end, receiver.length)));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    $isTrustedGetRuntimeType: 1,
    $isNativeUint8List: 1,
    $isUint8List: 1
  };
  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.prototype = {};
  A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.prototype = {};
  A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.prototype = {};
  A.Rti.prototype = {
    _eval$1(recipe) {
      return A._Universe_evalInEnvironment(init.typeUniverse, this, recipe);
    },
    _bind$1(typeOrTuple) {
      return A._Universe_bind(init.typeUniverse, this, typeOrTuple);
    }
  };
  A._FunctionParameters.prototype = {};
  A._Type.prototype = {
    toString$0(_) {
      return A._rtiToString(this._rti, null);
    }
  };
  A._Error.prototype = {
    toString$0(_) {
      return this.__rti$_message;
    }
  };
  A._TypeError.prototype = {
    get$message(_) {
      return this.__rti$_message;
    },
    $isTypeError: 1
  };
  A._AsyncRun__initializeScheduleImmediate_internalCallback.prototype = {
    call$1(_) {
      var t1 = this._box_0,
        f = t1.storedCallback;
      t1.storedCallback = null;
      f.call$0();
    },
    $signature: 68
  };
  A._AsyncRun__initializeScheduleImmediate_closure.prototype = {
    call$1(callback) {
      var t1, t2;
      this._box_0.storedCallback = callback;
      t1 = this.div;
      t2 = this.span;
      t1.firstChild ? t1.removeChild(t2) : t1.appendChild(t2);
    },
    $signature: 39
  };
  A._AsyncRun__scheduleImmediateJsOverride_internalCallback.prototype = {
    call$0() {
      this.callback.call$0();
    },
    $signature: 2
  };
  A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback.prototype = {
    call$0() {
      this.callback.call$0();
    },
    $signature: 2
  };
  A._TimerImpl.prototype = {
    _TimerImpl$2(milliseconds, callback) {
      if (self.setTimeout != null)
        this._handle = self.setTimeout(A.convertDartClosureToJS(new A._TimerImpl_internalCallback(this, callback), 0), milliseconds);
      else
        throw A.wrapException(A.UnsupportedError$("`setTimeout()` not found."));
    },
    _TimerImpl$periodic$2(milliseconds, callback) {
      if (self.setTimeout != null)
        this._handle = self.setInterval(A.convertDartClosureToJS(new A._TimerImpl$periodic_closure(this, milliseconds, Date.now(), callback), 0), milliseconds);
      else
        throw A.wrapException(A.UnsupportedError$("Periodic timer."));
    },
    cancel$0() {
      if (self.setTimeout != null) {
        var t1 = this._handle;
        if (t1 == null)
          return;
        if (this._once)
          self.clearTimeout(t1);
        else
          self.clearInterval(t1);
        this._handle = null;
      } else
        throw A.wrapException(A.UnsupportedError$("Canceling a timer."));
    }
  };
  A._TimerImpl_internalCallback.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._handle = null;
      t1._tick = 1;
      this.callback.call$0();
    },
    $signature: 0
  };
  A._TimerImpl$periodic_closure.prototype = {
    call$0() {
      var duration, _this = this,
        t1 = _this.$this,
        tick = t1._tick + 1,
        t2 = _this.milliseconds;
      if (t2 > 0) {
        duration = Date.now() - _this.start;
        if (duration > (tick + 1) * t2)
          tick = B.JSInt_methods.$tdiv(duration, t2);
      }
      t1._tick = tick;
      _this.callback.call$1(t1);
    },
    $signature: 2
  };
  A._AsyncAwaitCompleter.prototype = {
    complete$1(value) {
      var t1, _this = this;
      if (value == null)
        value = _this.$ti._precomputed1._as(value);
      if (!_this.isSync)
        _this._future._asyncComplete$1(value);
      else {
        t1 = _this._future;
        if (_this.$ti._eval$1("Future<1>")._is(value))
          t1._chainFuture$1(value);
        else
          t1._completeWithValue$1(value);
      }
    },
    completeError$2(e, st) {
      var t1 = this._future;
      if (this.isSync)
        t1._completeError$2(e, st);
      else
        t1._asyncCompleteError$2(e, st);
    }
  };
  A._awaitOnObject_closure.prototype = {
    call$1(result) {
      return this.bodyFunction.call$2(0, result);
    },
    $signature: 127
  };
  A._awaitOnObject_closure0.prototype = {
    call$2(error, stackTrace) {
      this.bodyFunction.call$2(1, new A.ExceptionAndStackTrace(error, stackTrace));
    },
    $signature: 436
  };
  A._wrapJsFunctionForAsync_closure.prototype = {
    call$2(errorCode, result) {
      this.$protected(errorCode, result);
    },
    $signature: 476
  };
  A._SyncStarIterator.prototype = {
    get$current(_) {
      return this._async$_current;
    },
    _resumeBody$2(errorCode, errorValue) {
      var body, t1, exception;
      errorCode = errorCode;
      errorValue = errorValue;
      body = this._body;
      for (; true;)
        try {
          t1 = body(this, errorCode, errorValue);
          return t1;
        } catch (exception) {
          errorValue = exception;
          errorCode = 1;
        }
    },
    moveNext$0() {
      var nestedIterator, exception, value, suspendedBodies, _this = this, errorValue = null, errorCode = 0;
      for (; true;) {
        nestedIterator = _this._nestedIterator;
        if (nestedIterator != null)
          try {
            if (nestedIterator.moveNext$0()) {
              _this._async$_current = J.get$current$x(nestedIterator);
              return true;
            } else
              _this._nestedIterator = null;
          } catch (exception) {
            errorValue = exception;
            errorCode = 1;
            _this._nestedIterator = null;
          }
        value = _this._resumeBody$2(errorCode, errorValue);
        if (1 === value)
          return true;
        if (0 === value) {
          _this._async$_current = null;
          suspendedBodies = _this._suspendedBodies;
          if (suspendedBodies == null || suspendedBodies.length === 0) {
            _this._body = A._SyncStarIterator__terminatedBody;
            return false;
          }
          _this._body = suspendedBodies.pop();
          errorCode = 0;
          errorValue = null;
          continue;
        }
        if (2 === value) {
          errorCode = 0;
          errorValue = null;
          continue;
        }
        if (3 === value) {
          errorValue = _this._datum;
          _this._datum = null;
          suspendedBodies = _this._suspendedBodies;
          if (suspendedBodies == null || suspendedBodies.length === 0) {
            _this._async$_current = null;
            _this._body = A._SyncStarIterator__terminatedBody;
            throw errorValue;
            return false;
          }
          _this._body = suspendedBodies.pop();
          errorCode = 1;
          continue;
        }
        throw A.wrapException(A.StateError$("sync*"));
      }
      return false;
    },
    _yieldStar$1(iterable) {
      var t1, t2, _this = this;
      if (iterable instanceof A._SyncStarIterable) {
        t1 = iterable._outerHelper();
        t2 = _this._suspendedBodies;
        if (t2 == null)
          t2 = _this._suspendedBodies = [];
        t2.push(_this._body);
        _this._body = t1;
        return 2;
      } else {
        _this._nestedIterator = J.get$iterator$ax(iterable);
        return 2;
      }
    }
  };
  A._SyncStarIterable.prototype = {
    get$iterator(_) {
      return new A._SyncStarIterator(this._outerHelper());
    }
  };
  A.AsyncError.prototype = {
    toString$0(_) {
      return A.S(this.error);
    },
    $isError: 1,
    get$stackTrace() {
      return this.stackTrace;
    }
  };
  A.Future_wait_handleError.prototype = {
    call$2(theError, theStackTrace) {
      var _this = this,
        t1 = _this._box_0,
        t2 = --t1.remaining;
      if (t1.values != null) {
        t1.values = null;
        if (t1.remaining === 0 || _this.eagerError)
          _this._future._completeError$2(theError, theStackTrace);
        else {
          _this.error._value = theError;
          _this.stackTrace._value = theStackTrace;
        }
      } else if (t2 === 0 && !_this.eagerError)
        _this._future._completeError$2(_this.error._readLocal$0(), _this.stackTrace._readLocal$0());
    },
    $signature: 71
  };
  A.Future_wait_closure.prototype = {
    call$1(value) {
      var valueList, _this = this,
        t1 = _this._box_0;
      --t1.remaining;
      valueList = t1.values;
      if (valueList != null) {
        J.$indexSet$ax(valueList, _this.pos, value);
        if (t1.remaining === 0)
          _this._future._completeWithValue$1(A.List_List$from(valueList, true, _this.T));
      } else if (t1.remaining === 0 && !_this.eagerError)
        _this._future._completeError$2(_this.error._readLocal$0(), _this.stackTrace._readLocal$0());
    },
    $signature() {
      return this.T._eval$1("Null(0)");
    }
  };
  A._Completer.prototype = {
    completeError$2(error, stackTrace) {
      var replacement;
      A.checkNotNullable(error, "error", type$.Object);
      if ((this.future._state & 30) !== 0)
        throw A.wrapException(A.StateError$("Future already completed"));
      replacement = $.Zone__current.errorCallback$2(error, stackTrace);
      if (replacement != null) {
        error = replacement.error;
        stackTrace = replacement.stackTrace;
      } else if (stackTrace == null)
        stackTrace = A.AsyncError_defaultStackTrace(error);
      this._completeError$2(error, stackTrace);
    },
    completeError$1(error) {
      return this.completeError$2(error, null);
    }
  };
  A._AsyncCompleter.prototype = {
    complete$1(value) {
      var t1 = this.future;
      if ((t1._state & 30) !== 0)
        throw A.wrapException(A.StateError$("Future already completed"));
      t1._asyncComplete$1(value);
    },
    complete$0() {
      return this.complete$1(null);
    },
    _completeError$2(error, stackTrace) {
      this.future._asyncCompleteError$2(error, stackTrace);
    }
  };
  A._SyncCompleter.prototype = {
    complete$1(value) {
      var t1 = this.future;
      if ((t1._state & 30) !== 0)
        throw A.wrapException(A.StateError$("Future already completed"));
      t1._complete$1(value);
    },
    _completeError$2(error, stackTrace) {
      this.future._completeError$2(error, stackTrace);
    }
  };
  A._FutureListener.prototype = {
    matchesErrorTest$1(asyncError) {
      if ((this.state & 15) !== 6)
        return true;
      return this.result._zone.runUnary$2$2(this.callback, asyncError.error, type$.bool, type$.Object);
    },
    handleError$1(asyncError) {
      var exception,
        errorCallback = this.errorCallback,
        result = null,
        t1 = type$.dynamic,
        t2 = type$.Object,
        t3 = asyncError.error,
        t4 = this.result._zone;
      if (type$.dynamic_Function_Object_StackTrace._is(errorCallback))
        result = t4.runBinary$3$3(errorCallback, t3, asyncError.stackTrace, t1, t2, type$.StackTrace);
      else
        result = t4.runUnary$2$2(errorCallback, t3, t1, t2);
      try {
        t1 = result;
        return t1;
      } catch (exception) {
        if (type$.TypeError._is(A.unwrapException(exception))) {
          if ((this.state & 1) !== 0)
            throw A.wrapException(A.ArgumentError$("The error handler of Future.then must return a value of the returned future's type", "onError"));
          throw A.wrapException(A.ArgumentError$("The error handler of Future.catchError must return a value of the future's type", "onError"));
        } else
          throw exception;
      }
    }
  };
  A._Future.prototype = {
    _setChained$1(source) {
      this._state = this._state & 1 | 4;
      this._resultOrListeners = source;
    },
    then$1$2$onError(_, f, onError, $R) {
      var result, t1,
        currentZone = $.Zone__current;
      if (currentZone === B.C__RootZone) {
        if (onError != null && !type$.dynamic_Function_Object_StackTrace._is(onError) && !type$.dynamic_Function_Object._is(onError))
          throw A.wrapException(A.ArgumentError$value(onError, "onError", string$.Error_));
      } else {
        f = currentZone.registerUnaryCallback$2$1(f, $R._eval$1("0/"), this.$ti._precomputed1);
        if (onError != null)
          onError = A._registerErrorHandler(onError, currentZone);
      }
      result = new A._Future($.Zone__current, $R._eval$1("_Future<0>"));
      t1 = onError == null ? 1 : 3;
      this._addListener$1(new A._FutureListener(result, t1, f, onError, this.$ti._eval$1("@<1>")._bind$1($R)._eval$1("_FutureListener<1,2>")));
      return result;
    },
    then$1$1($receiver, f, $R) {
      return this.then$1$2$onError($receiver, f, null, $R);
    },
    _thenAwait$1$2(f, onError, $E) {
      var result = new A._Future($.Zone__current, $E._eval$1("_Future<0>"));
      this._addListener$1(new A._FutureListener(result, 3, f, onError, this.$ti._eval$1("@<1>")._bind$1($E)._eval$1("_FutureListener<1,2>")));
      return result;
    },
    whenComplete$1(action) {
      var t1 = this.$ti,
        t2 = $.Zone__current,
        result = new A._Future(t2, t1);
      if (t2 !== B.C__RootZone)
        action = t2.registerCallback$1$1(action, type$.dynamic);
      this._addListener$1(new A._FutureListener(result, 8, action, null, t1._eval$1("@<1>")._bind$1(t1._precomputed1)._eval$1("_FutureListener<1,2>")));
      return result;
    },
    _setErrorObject$1(error) {
      this._state = this._state & 1 | 16;
      this._resultOrListeners = error;
    },
    _cloneResult$1(source) {
      this._state = source._state & 30 | this._state & 1;
      this._resultOrListeners = source._resultOrListeners;
    },
    _addListener$1(listener) {
      var _this = this,
        t1 = _this._state;
      if (t1 <= 3) {
        listener._nextListener = _this._resultOrListeners;
        _this._resultOrListeners = listener;
      } else {
        if ((t1 & 4) !== 0) {
          t1 = _this._resultOrListeners;
          if ((t1._state & 24) === 0) {
            t1._addListener$1(listener);
            return;
          }
          _this._cloneResult$1(t1);
        }
        _this._zone.scheduleMicrotask$1(new A._Future__addListener_closure(_this, listener));
      }
    },
    _prependListeners$1(listeners) {
      var t1, existingListeners, next, cursor, next0, _this = this, _box_0 = {};
      _box_0.listeners = listeners;
      if (listeners == null)
        return;
      t1 = _this._state;
      if (t1 <= 3) {
        existingListeners = _this._resultOrListeners;
        _this._resultOrListeners = listeners;
        if (existingListeners != null) {
          next = listeners._nextListener;
          for (cursor = listeners; next != null; cursor = next, next = next0)
            next0 = next._nextListener;
          cursor._nextListener = existingListeners;
        }
      } else {
        if ((t1 & 4) !== 0) {
          t1 = _this._resultOrListeners;
          if ((t1._state & 24) === 0) {
            t1._prependListeners$1(listeners);
            return;
          }
          _this._cloneResult$1(t1);
        }
        _box_0.listeners = _this._reverseListeners$1(listeners);
        _this._zone.scheduleMicrotask$1(new A._Future__prependListeners_closure(_box_0, _this));
      }
    },
    _removeListeners$0() {
      var current = this._resultOrListeners;
      this._resultOrListeners = null;
      return this._reverseListeners$1(current);
    },
    _reverseListeners$1(listeners) {
      var current, prev, next;
      for (current = listeners, prev = null; current != null; prev = current, current = next) {
        next = current._nextListener;
        current._nextListener = prev;
      }
      return prev;
    },
    _chainForeignFuture$1(source) {
      var e, s, exception, _this = this;
      _this._state ^= 2;
      try {
        source.then$1$2$onError(0, new A._Future__chainForeignFuture_closure(_this), new A._Future__chainForeignFuture_closure0(_this), type$.Null);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        A.scheduleMicrotask(new A._Future__chainForeignFuture_closure1(_this, e, s));
      }
    },
    _complete$1(value) {
      var listeners, _this = this,
        t1 = _this.$ti;
      if (t1._eval$1("Future<1>")._is(value))
        if (t1._is(value))
          A._Future__chainCoreFutureSync(value, _this);
        else
          _this._chainForeignFuture$1(value);
      else {
        listeners = _this._removeListeners$0();
        _this._state = 8;
        _this._resultOrListeners = value;
        A._Future__propagateToListeners(_this, listeners);
      }
    },
    _completeWithValue$1(value) {
      var _this = this,
        listeners = _this._removeListeners$0();
      _this._state = 8;
      _this._resultOrListeners = value;
      A._Future__propagateToListeners(_this, listeners);
    },
    _completeError$2(error, stackTrace) {
      var listeners = this._removeListeners$0();
      this._setErrorObject$1(A.AsyncError$(error, stackTrace));
      A._Future__propagateToListeners(this, listeners);
    },
    _asyncComplete$1(value) {
      if (this.$ti._eval$1("Future<1>")._is(value)) {
        this._chainFuture$1(value);
        return;
      }
      this._asyncCompleteWithValue$1(value);
    },
    _asyncCompleteWithValue$1(value) {
      this._state ^= 2;
      this._zone.scheduleMicrotask$1(new A._Future__asyncCompleteWithValue_closure(this, value));
    },
    _chainFuture$1(value) {
      if (this.$ti._is(value)) {
        A._Future__chainCoreFutureAsync(value, this);
        return;
      }
      this._chainForeignFuture$1(value);
    },
    _asyncCompleteError$2(error, stackTrace) {
      this._state ^= 2;
      this._zone.scheduleMicrotask$1(new A._Future__asyncCompleteError_closure(this, error, stackTrace));
    },
    $isFuture: 1
  };
  A._Future__addListener_closure.prototype = {
    call$0() {
      A._Future__propagateToListeners(this.$this, this.listener);
    },
    $signature: 0
  };
  A._Future__prependListeners_closure.prototype = {
    call$0() {
      A._Future__propagateToListeners(this.$this, this._box_0.listeners);
    },
    $signature: 0
  };
  A._Future__chainForeignFuture_closure.prototype = {
    call$1(value) {
      var error, stackTrace, exception,
        t1 = this.$this;
      t1._state ^= 2;
      try {
        t1._completeWithValue$1(t1.$ti._precomputed1._as(value));
      } catch (exception) {
        error = A.unwrapException(exception);
        stackTrace = A.getTraceFromException(exception);
        t1._completeError$2(error, stackTrace);
      }
    },
    $signature: 68
  };
  A._Future__chainForeignFuture_closure0.prototype = {
    call$2(error, stackTrace) {
      this.$this._completeError$2(error, stackTrace);
    },
    $signature: 62
  };
  A._Future__chainForeignFuture_closure1.prototype = {
    call$0() {
      this.$this._completeError$2(this.e, this.s);
    },
    $signature: 0
  };
  A._Future__chainCoreFutureAsync_closure.prototype = {
    call$0() {
      A._Future__chainCoreFutureSync(this._box_0.source, this.target);
    },
    $signature: 0
  };
  A._Future__asyncCompleteWithValue_closure.prototype = {
    call$0() {
      this.$this._completeWithValue$1(this.value);
    },
    $signature: 0
  };
  A._Future__asyncCompleteError_closure.prototype = {
    call$0() {
      this.$this._completeError$2(this.error, this.stackTrace);
    },
    $signature: 0
  };
  A._Future__propagateToListeners_handleWhenCompleteCallback.prototype = {
    call$0() {
      var e, s, t1, exception, t2, originalSource, _this = this, completeResult = null;
      try {
        t1 = _this._box_0.listener;
        completeResult = t1.result._zone.run$1$1(0, t1.callback, type$.dynamic);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = _this.hasError && _this._box_1.source._resultOrListeners.error === e;
        t2 = _this._box_0;
        if (t1)
          t2.listenerValueOrError = _this._box_1.source._resultOrListeners;
        else
          t2.listenerValueOrError = A.AsyncError$(e, s);
        t2.listenerHasError = true;
        return;
      }
      if (completeResult instanceof A._Future && (completeResult._state & 24) !== 0) {
        if ((completeResult._state & 16) !== 0) {
          t1 = _this._box_0;
          t1.listenerValueOrError = completeResult._resultOrListeners;
          t1.listenerHasError = true;
        }
        return;
      }
      if (completeResult instanceof A._Future) {
        originalSource = _this._box_1.source;
        t1 = _this._box_0;
        t1.listenerValueOrError = J.then$1$1$x(completeResult, new A._Future__propagateToListeners_handleWhenCompleteCallback_closure(originalSource), type$.dynamic);
        t1.listenerHasError = false;
      }
    },
    $signature: 0
  };
  A._Future__propagateToListeners_handleWhenCompleteCallback_closure.prototype = {
    call$1(_) {
      return this.originalSource;
    },
    $signature: 455
  };
  A._Future__propagateToListeners_handleValueCallback.prototype = {
    call$0() {
      var e, s, t1, t2, t3, exception;
      try {
        t1 = this._box_0;
        t2 = t1.listener;
        t3 = t2.$ti;
        t1.listenerValueOrError = t2.result._zone.runUnary$2$2(t2.callback, this.sourceResult, t3._eval$1("2/"), t3._precomputed1);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = this._box_0;
        t1.listenerValueOrError = A.AsyncError$(e, s);
        t1.listenerHasError = true;
      }
    },
    $signature: 0
  };
  A._Future__propagateToListeners_handleError.prototype = {
    call$0() {
      var asyncError, e, s, t1, exception, t2, _this = this;
      try {
        asyncError = _this._box_1.source._resultOrListeners;
        t1 = _this._box_0;
        if (t1.listener.matchesErrorTest$1(asyncError) && t1.listener.errorCallback != null) {
          t1.listenerValueOrError = t1.listener.handleError$1(asyncError);
          t1.listenerHasError = false;
        }
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        t1 = _this._box_1.source._resultOrListeners;
        t2 = _this._box_0;
        if (t1.error === e)
          t2.listenerValueOrError = t1;
        else
          t2.listenerValueOrError = A.AsyncError$(e, s);
        t2.listenerHasError = true;
      }
    },
    $signature: 0
  };
  A._AsyncCallbackEntry.prototype = {};
  A.Stream.prototype = {
    get$isBroadcast() {
      return false;
    },
    get$length(_) {
      var t1 = {},
        future = new A._Future($.Zone__current, type$._Future_int);
      t1.count = 0;
      this.listen$4$cancelOnError$onDone$onError(0, new A.Stream_length_closure(t1, this), true, new A.Stream_length_closure0(t1, future), future.get$_completeError());
      return future;
    }
  };
  A.Stream_Stream$fromFuture_closure.prototype = {
    call$1(value) {
      var t1 = this.controller;
      t1._async$_add$1(value);
      t1._closeUnchecked$0();
    },
    $signature() {
      return this.T._eval$1("Null(0)");
    }
  };
  A.Stream_Stream$fromFuture_closure0.prototype = {
    call$2(error, stackTrace) {
      var t1 = this.controller;
      t1._addError$2(error, stackTrace);
      t1._closeUnchecked$0();
    },
    $signature: 466
  };
  A.Stream_length_closure.prototype = {
    call$1(_) {
      ++this._box_0.count;
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(Stream.T)");
    }
  };
  A.Stream_length_closure0.prototype = {
    call$0() {
      this.future._complete$1(this._box_0.count);
    },
    $signature: 0
  };
  A._StreamController.prototype = {
    get$stream() {
      return new A._ControllerStream(this, A._instanceType(this)._eval$1("_ControllerStream<1>"));
    },
    get$_pendingEvents() {
      if ((this._state & 8) === 0)
        return this._varData;
      return this._varData.varData;
    },
    _ensurePendingEvents$0() {
      var events, state, _this = this;
      if ((_this._state & 8) === 0) {
        events = _this._varData;
        return events == null ? _this._varData = new A._PendingEvents() : events;
      }
      state = _this._varData;
      events = state.varData;
      return events == null ? state.varData = new A._PendingEvents() : events;
    },
    get$_subscription() {
      var varData = this._varData;
      return (this._state & 8) !== 0 ? varData.varData : varData;
    },
    _badEventState$0() {
      if ((this._state & 4) !== 0)
        return new A.StateError("Cannot add event after closing");
      return new A.StateError("Cannot add event while adding a stream");
    },
    addStream$2$cancelOnError(source, cancelOnError) {
      var t2, t3, t4, _this = this,
        t1 = _this._state;
      if (t1 >= 4)
        throw A.wrapException(_this._badEventState$0());
      if ((t1 & 2) !== 0) {
        t1 = new A._Future($.Zone__current, type$._Future_dynamic);
        t1._asyncComplete$1(null);
        return t1;
      }
      t1 = _this._varData;
      t2 = cancelOnError === true;
      t3 = new A._Future($.Zone__current, type$._Future_dynamic);
      t4 = t2 ? A._AddStreamState_makeErrorHandler(_this) : _this.get$_addError();
      t4 = source.listen$4$cancelOnError$onDone$onError(0, _this.get$_async$_add(), t2, _this.get$_close(), t4);
      t2 = _this._state;
      if ((t2 & 1) !== 0 ? (_this.get$_subscription()._state & 4) !== 0 : (t2 & 2) === 0)
        t4.pause$0(0);
      _this._varData = new A._StreamControllerAddStreamState(t1, t3, t4);
      _this._state |= 8;
      return t3;
    },
    _ensureDoneFuture$0() {
      var t1 = this._doneFuture;
      if (t1 == null)
        t1 = this._doneFuture = (this._state & 2) !== 0 ? $.$get$Future__nullFuture() : new A._Future($.Zone__current, type$._Future_void);
      return t1;
    },
    add$1(_, value) {
      if (this._state >= 4)
        throw A.wrapException(this._badEventState$0());
      this._async$_add$1(value);
    },
    addError$2(error, stackTrace) {
      var replacement;
      A.checkNotNullable(error, "error", type$.Object);
      if (this._state >= 4)
        throw A.wrapException(this._badEventState$0());
      replacement = $.Zone__current.errorCallback$2(error, stackTrace);
      if (replacement != null) {
        error = replacement.error;
        stackTrace = replacement.stackTrace;
      } else if (stackTrace == null)
        stackTrace = A.AsyncError_defaultStackTrace(error);
      this._addError$2(error, stackTrace);
    },
    addError$1(error) {
      return this.addError$2(error, null);
    },
    close$0(_) {
      var _this = this,
        t1 = _this._state;
      if ((t1 & 4) !== 0)
        return _this._ensureDoneFuture$0();
      if (t1 >= 4)
        throw A.wrapException(_this._badEventState$0());
      _this._closeUnchecked$0();
      return _this._ensureDoneFuture$0();
    },
    _closeUnchecked$0() {
      var t1 = this._state |= 4;
      if ((t1 & 1) !== 0)
        this._sendDone$0();
      else if ((t1 & 3) === 0)
        this._ensurePendingEvents$0().add$1(0, B.C__DelayedDone);
    },
    _async$_add$1(value) {
      var t1 = this._state;
      if ((t1 & 1) !== 0)
        this._sendData$1(value);
      else if ((t1 & 3) === 0)
        this._ensurePendingEvents$0().add$1(0, new A._DelayedData(value));
    },
    _addError$2(error, stackTrace) {
      var t1 = this._state;
      if ((t1 & 1) !== 0)
        this._sendError$2(error, stackTrace);
      else if ((t1 & 3) === 0)
        this._ensurePendingEvents$0().add$1(0, new A._DelayedError(error, stackTrace));
    },
    _close$0() {
      var addState = this._varData;
      this._varData = addState.varData;
      this._state &= 4294967287;
      addState.addStreamFuture._asyncComplete$1(null);
    },
    _subscribe$4(onData, onError, onDone, cancelOnError) {
      var subscription, pendingEvents, t1, addState, _this = this;
      if ((_this._state & 3) !== 0)
        throw A.wrapException(A.StateError$("Stream has already been listened to."));
      subscription = A._ControllerSubscription$(_this, onData, onError, onDone, cancelOnError, A._instanceType(_this)._precomputed1);
      pendingEvents = _this.get$_pendingEvents();
      t1 = _this._state |= 1;
      if ((t1 & 8) !== 0) {
        addState = _this._varData;
        addState.varData = subscription;
        addState.addSubscription.resume$0(0);
      } else
        _this._varData = subscription;
      subscription._setPendingEvents$1(pendingEvents);
      subscription._guardCallback$1(new A._StreamController__subscribe_closure(_this));
      return subscription;
    },
    _recordCancel$1(subscription) {
      var onCancel, cancelResult, e, s, exception, result0, t1, _this = this, result = null;
      if ((_this._state & 8) !== 0)
        result = _this._varData.cancel$0();
      _this._varData = null;
      _this._state = _this._state & 4294967286 | 2;
      onCancel = _this.onCancel;
      if (onCancel != null)
        if (result == null)
          try {
            cancelResult = onCancel.call$0();
            if (cancelResult instanceof A._Future)
              result = cancelResult;
          } catch (exception) {
            e = A.unwrapException(exception);
            s = A.getTraceFromException(exception);
            result0 = new A._Future($.Zone__current, type$._Future_void);
            result0._asyncCompleteError$2(e, s);
            result = result0;
          }
        else
          result = result.whenComplete$1(onCancel);
      t1 = new A._StreamController__recordCancel_complete(_this);
      if (result != null)
        result = result.whenComplete$1(t1);
      else
        t1.call$0();
      return result;
    },
    _recordPause$1(subscription) {
      if ((this._state & 8) !== 0)
        this._varData.addSubscription.pause$0(0);
      A._runGuarded(this.onPause);
    },
    _recordResume$1(subscription) {
      if ((this._state & 8) !== 0)
        this._varData.addSubscription.resume$0(0);
      A._runGuarded(this.onResume);
    },
    $isEventSink: 1,
    set$onPause(val) {
      return this.onPause = val;
    },
    set$onResume(val) {
      return this.onResume = val;
    },
    set$onCancel(val) {
      return this.onCancel = val;
    }
  };
  A._StreamController__subscribe_closure.prototype = {
    call$0() {
      A._runGuarded(this.$this.onListen);
    },
    $signature: 0
  };
  A._StreamController__recordCancel_complete.prototype = {
    call$0() {
      var doneFuture = this.$this._doneFuture;
      if (doneFuture != null && (doneFuture._state & 30) === 0)
        doneFuture._asyncComplete$1(null);
    },
    $signature: 0
  };
  A._SyncStreamControllerDispatch.prototype = {
    _sendData$1(data) {
      this.get$_subscription()._async$_add$1(data);
    },
    _sendError$2(error, stackTrace) {
      this.get$_subscription()._addError$2(error, stackTrace);
    },
    _sendDone$0() {
      this.get$_subscription()._close$0();
    }
  };
  A._AsyncStreamControllerDispatch.prototype = {
    _sendData$1(data) {
      this.get$_subscription()._addPending$1(new A._DelayedData(data));
    },
    _sendError$2(error, stackTrace) {
      this.get$_subscription()._addPending$1(new A._DelayedError(error, stackTrace));
    },
    _sendDone$0() {
      this.get$_subscription()._addPending$1(B.C__DelayedDone);
    }
  };
  A._AsyncStreamController.prototype = {};
  A._SyncStreamController.prototype = {};
  A._ControllerStream.prototype = {
    get$hashCode(_) {
      return (A.Primitives_objectHashCode(this._controller) ^ 892482866) >>> 0;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      if (this === other)
        return true;
      return other instanceof A._ControllerStream && other._controller === this._controller;
    }
  };
  A._ControllerSubscription.prototype = {
    _async$_onCancel$0() {
      return this._controller._recordCancel$1(this);
    },
    _async$_onPause$0() {
      this._controller._recordPause$1(this);
    },
    _async$_onResume$0() {
      this._controller._recordResume$1(this);
    }
  };
  A._AddStreamState.prototype = {
    cancel$0() {
      var cancel = this.addSubscription.cancel$0();
      return cancel.whenComplete$1(new A._AddStreamState_cancel_closure(this));
    }
  };
  A._AddStreamState_makeErrorHandler_closure.prototype = {
    call$2(e, s) {
      var t1 = this.controller;
      t1._addError$2(e, s);
      t1._close$0();
    },
    $signature: 62
  };
  A._AddStreamState_cancel_closure.prototype = {
    call$0() {
      this.$this.addStreamFuture._asyncComplete$1(null);
    },
    $signature: 2
  };
  A._StreamControllerAddStreamState.prototype = {};
  A._BufferingStreamSubscription.prototype = {
    _setPendingEvents$1(pendingEvents) {
      var _this = this;
      if (pendingEvents == null)
        return;
      _this._pending = pendingEvents;
      if (pendingEvents.lastPendingEvent != null) {
        _this._state = (_this._state | 64) >>> 0;
        pendingEvents.schedule$1(_this);
      }
    },
    pause$1(_, resumeSignal) {
      var t2, t3, _this = this,
        t1 = _this._state;
      if ((t1 & 8) !== 0)
        return;
      t2 = (t1 + 128 | 4) >>> 0;
      _this._state = t2;
      if (t1 < 128) {
        t3 = _this._pending;
        if (t3 != null)
          if (t3._state === 1)
            t3._state = 3;
      }
      if ((t1 & 4) === 0 && (t2 & 32) === 0)
        _this._guardCallback$1(_this.get$_async$_onPause());
    },
    pause$0($receiver) {
      return this.pause$1($receiver, null);
    },
    resume$0(_) {
      var _this = this,
        t1 = _this._state;
      if ((t1 & 8) !== 0)
        return;
      if (t1 >= 128) {
        t1 = _this._state = t1 - 128;
        if (t1 < 128)
          if ((t1 & 64) !== 0 && _this._pending.lastPendingEvent != null)
            _this._pending.schedule$1(_this);
          else {
            t1 = (t1 & 4294967291) >>> 0;
            _this._state = t1;
            if ((t1 & 32) === 0)
              _this._guardCallback$1(_this.get$_async$_onResume());
          }
      }
    },
    cancel$0() {
      var _this = this,
        t1 = (_this._state & 4294967279) >>> 0;
      _this._state = t1;
      if ((t1 & 8) === 0)
        _this._cancel$0();
      t1 = _this._cancelFuture;
      return t1 == null ? $.$get$Future__nullFuture() : t1;
    },
    _cancel$0() {
      var t2, _this = this,
        t1 = _this._state = (_this._state | 8) >>> 0;
      if ((t1 & 64) !== 0) {
        t2 = _this._pending;
        if (t2._state === 1)
          t2._state = 3;
      }
      if ((t1 & 32) === 0)
        _this._pending = null;
      _this._cancelFuture = _this._async$_onCancel$0();
    },
    _async$_add$1(data) {
      var t1 = this._state;
      if ((t1 & 8) !== 0)
        return;
      if (t1 < 32)
        this._sendData$1(data);
      else
        this._addPending$1(new A._DelayedData(data));
    },
    _addError$2(error, stackTrace) {
      var t1 = this._state;
      if ((t1 & 8) !== 0)
        return;
      if (t1 < 32)
        this._sendError$2(error, stackTrace);
      else
        this._addPending$1(new A._DelayedError(error, stackTrace));
    },
    _close$0() {
      var _this = this,
        t1 = _this._state;
      if ((t1 & 8) !== 0)
        return;
      t1 = (t1 | 2) >>> 0;
      _this._state = t1;
      if (t1 < 32)
        _this._sendDone$0();
      else
        _this._addPending$1(B.C__DelayedDone);
    },
    _async$_onPause$0() {
    },
    _async$_onResume$0() {
    },
    _async$_onCancel$0() {
      return null;
    },
    _addPending$1($event) {
      var t1, _this = this,
        pending = _this._pending;
      if (pending == null)
        pending = _this._pending = new A._PendingEvents();
      pending.add$1(0, $event);
      t1 = _this._state;
      if ((t1 & 64) === 0) {
        t1 = (t1 | 64) >>> 0;
        _this._state = t1;
        if (t1 < 128)
          pending.schedule$1(_this);
      }
    },
    _sendData$1(data) {
      var _this = this,
        t1 = _this._state;
      _this._state = (t1 | 32) >>> 0;
      _this._zone.runUnaryGuarded$1$2(_this._onData, data, A._instanceType(_this)._eval$1("_BufferingStreamSubscription.T"));
      _this._state = (_this._state & 4294967263) >>> 0;
      _this._checkState$1((t1 & 4) !== 0);
    },
    _sendError$2(error, stackTrace) {
      var cancelFuture, _this = this,
        t1 = _this._state,
        t2 = new A._BufferingStreamSubscription__sendError_sendError(_this, error, stackTrace);
      if ((t1 & 1) !== 0) {
        _this._state = (t1 | 16) >>> 0;
        _this._cancel$0();
        cancelFuture = _this._cancelFuture;
        if (cancelFuture != null && cancelFuture !== $.$get$Future__nullFuture())
          cancelFuture.whenComplete$1(t2);
        else
          t2.call$0();
      } else {
        t2.call$0();
        _this._checkState$1((t1 & 4) !== 0);
      }
    },
    _sendDone$0() {
      var cancelFuture, _this = this,
        t1 = new A._BufferingStreamSubscription__sendDone_sendDone(_this);
      _this._cancel$0();
      _this._state = (_this._state | 16) >>> 0;
      cancelFuture = _this._cancelFuture;
      if (cancelFuture != null && cancelFuture !== $.$get$Future__nullFuture())
        cancelFuture.whenComplete$1(t1);
      else
        t1.call$0();
    },
    _guardCallback$1(callback) {
      var _this = this,
        t1 = _this._state;
      _this._state = (t1 | 32) >>> 0;
      callback.call$0();
      _this._state = (_this._state & 4294967263) >>> 0;
      _this._checkState$1((t1 & 4) !== 0);
    },
    _checkState$1(wasInputPaused) {
      var t2, isInputPaused, _this = this,
        t1 = _this._state;
      if ((t1 & 64) !== 0 && _this._pending.lastPendingEvent == null) {
        t1 = _this._state = (t1 & 4294967231) >>> 0;
        if ((t1 & 4) !== 0)
          if (t1 < 128) {
            t2 = _this._pending;
            t2 = t2 == null ? null : t2.lastPendingEvent == null;
            t2 = t2 !== false;
          } else
            t2 = false;
        else
          t2 = false;
        if (t2) {
          t1 = (t1 & 4294967291) >>> 0;
          _this._state = t1;
        }
      }
      for (; true; wasInputPaused = isInputPaused) {
        if ((t1 & 8) !== 0) {
          _this._pending = null;
          return;
        }
        isInputPaused = (t1 & 4) !== 0;
        if (wasInputPaused === isInputPaused)
          break;
        _this._state = (t1 ^ 32) >>> 0;
        if (isInputPaused)
          _this._async$_onPause$0();
        else
          _this._async$_onResume$0();
        t1 = (_this._state & 4294967263) >>> 0;
        _this._state = t1;
      }
      if ((t1 & 64) !== 0 && t1 < 128)
        _this._pending.schedule$1(_this);
    },
    $isStreamSubscription: 1
  };
  A._BufferingStreamSubscription__sendError_sendError.prototype = {
    call$0() {
      var onError, t3, t4,
        t1 = this.$this,
        t2 = t1._state;
      if ((t2 & 8) !== 0 && (t2 & 16) === 0)
        return;
      t1._state = (t2 | 32) >>> 0;
      onError = t1._onError;
      t2 = this.error;
      t3 = type$.Object;
      t4 = t1._zone;
      if (type$.void_Function_Object_StackTrace._is(onError))
        t4.runBinaryGuarded$2$3(onError, t2, this.stackTrace, t3, type$.StackTrace);
      else
        t4.runUnaryGuarded$1$2(onError, t2, t3);
      t1._state = (t1._state & 4294967263) >>> 0;
    },
    $signature: 0
  };
  A._BufferingStreamSubscription__sendDone_sendDone.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._state;
      if ((t2 & 16) === 0)
        return;
      t1._state = (t2 | 42) >>> 0;
      t1._zone.runGuarded$1(t1._onDone);
      t1._state = (t1._state & 4294967263) >>> 0;
    },
    $signature: 0
  };
  A._StreamImpl.prototype = {
    listen$4$cancelOnError$onDone$onError(_, onData, cancelOnError, onDone, onError) {
      return this._controller._subscribe$4(onData, onError, onDone, cancelOnError === true);
    },
    listen$1($receiver, onData) {
      return this.listen$4$cancelOnError$onDone$onError($receiver, onData, null, null, null);
    },
    listen$3$onDone$onError($receiver, onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError($receiver, onData, null, onDone, onError);
    }
  };
  A._DelayedEvent.prototype = {
    get$next() {
      return this.next;
    },
    set$next(val) {
      return this.next = val;
    }
  };
  A._DelayedData.prototype = {
    perform$1(dispatch) {
      dispatch._sendData$1(this.value);
    }
  };
  A._DelayedError.prototype = {
    perform$1(dispatch) {
      dispatch._sendError$2(this.error, this.stackTrace);
    }
  };
  A._DelayedDone.prototype = {
    perform$1(dispatch) {
      dispatch._sendDone$0();
    },
    get$next() {
      return null;
    },
    set$next(_) {
      throw A.wrapException(A.StateError$("No events after a done."));
    }
  };
  A._PendingEvents.prototype = {
    schedule$1(dispatch) {
      var _this = this,
        t1 = _this._state;
      if (t1 === 1)
        return;
      if (t1 >= 1) {
        _this._state = 1;
        return;
      }
      A.scheduleMicrotask(new A._PendingEvents_schedule_closure(_this, dispatch));
      _this._state = 1;
    },
    add$1(_, $event) {
      var _this = this,
        lastEvent = _this.lastPendingEvent;
      if (lastEvent == null)
        _this.firstPendingEvent = _this.lastPendingEvent = $event;
      else {
        lastEvent.set$next($event);
        _this.lastPendingEvent = $event;
      }
    }
  };
  A._PendingEvents_schedule_closure.prototype = {
    call$0() {
      var $event, nextEvent,
        t1 = this.$this,
        oldState = t1._state;
      t1._state = 0;
      if (oldState === 3)
        return;
      $event = t1.firstPendingEvent;
      nextEvent = $event.get$next();
      t1.firstPendingEvent = nextEvent;
      if (nextEvent == null)
        t1.lastPendingEvent = null;
      $event.perform$1(this.dispatch);
    },
    $signature: 0
  };
  A._StreamIterator.prototype = {
    get$current(_) {
      if (this._async$_hasValue)
        return this._stateData;
      return null;
    },
    moveNext$0() {
      var future, _this = this,
        subscription = _this._subscription;
      if (subscription != null) {
        if (_this._async$_hasValue) {
          future = new A._Future($.Zone__current, type$._Future_bool);
          _this._stateData = future;
          _this._async$_hasValue = false;
          subscription.resume$0(0);
          return future;
        }
        throw A.wrapException(A.StateError$("Already waiting for next."));
      }
      return _this._initializeOrDone$0();
    },
    _initializeOrDone$0() {
      var future, subscription, _this = this,
        stateData = _this._stateData;
      if (stateData != null) {
        future = new A._Future($.Zone__current, type$._Future_bool);
        _this._stateData = future;
        subscription = stateData.listen$4$cancelOnError$onDone$onError(0, _this.get$_onData(), true, _this.get$_onDone(), _this.get$_onError());
        if (_this._stateData != null)
          _this._subscription = subscription;
        return future;
      }
      return $.$get$Future__falseFuture();
    },
    cancel$0() {
      var _this = this,
        subscription = _this._subscription,
        stateData = _this._stateData;
      _this._stateData = null;
      if (subscription != null) {
        _this._subscription = null;
        if (!_this._async$_hasValue)
          stateData._asyncComplete$1(false);
        else
          _this._async$_hasValue = false;
        return subscription.cancel$0();
      }
      return $.$get$Future__nullFuture();
    },
    _onData$1(data) {
      var moveNextFuture, t1, _this = this;
      if (_this._subscription == null)
        return;
      moveNextFuture = _this._stateData;
      _this._stateData = data;
      _this._async$_hasValue = true;
      moveNextFuture._complete$1(true);
      if (_this._async$_hasValue) {
        t1 = _this._subscription;
        if (t1 != null)
          t1.pause$0(0);
      }
    },
    _onError$2(error, stackTrace) {
      var _this = this,
        subscription = _this._subscription,
        moveNextFuture = _this._stateData;
      _this._stateData = _this._subscription = null;
      if (subscription != null)
        moveNextFuture._completeError$2(error, stackTrace);
      else
        moveNextFuture._asyncCompleteError$2(error, stackTrace);
    },
    _onDone$0() {
      var _this = this,
        subscription = _this._subscription,
        moveNextFuture = _this._stateData;
      _this._stateData = _this._subscription = null;
      if (subscription != null)
        moveNextFuture._completeWithValue$1(false);
      else
        moveNextFuture._asyncCompleteWithValue$1(false);
    }
  };
  A._ForwardingStream.prototype = {
    get$isBroadcast() {
      return this._async$_source.get$isBroadcast();
    },
    listen$4$cancelOnError$onDone$onError(_, onData, cancelOnError, onDone, onError) {
      var t1 = this.$ti,
        t2 = t1._rest[1],
        t3 = $.Zone__current,
        t4 = cancelOnError === true ? 1 : 0,
        t5 = A._BufferingStreamSubscription__registerDataHandler(t3, onData, t2),
        t6 = A._BufferingStreamSubscription__registerErrorHandler(t3, onError),
        t7 = onDone == null ? A.async___nullDoneHandler$closure() : onDone;
      t2 = new A._ForwardingStreamSubscription(this, t5, t6, t3.registerCallback$1$1(t7, type$.void), t3, t4, t1._eval$1("@<1>")._bind$1(t2)._eval$1("_ForwardingStreamSubscription<1,2>"));
      t2._subscription = this._async$_source.listen$3$onDone$onError(0, t2.get$_handleData(), t2.get$_handleDone(), t2.get$_handleError());
      return t2;
    },
    listen$1($receiver, onData) {
      return this.listen$4$cancelOnError$onDone$onError($receiver, onData, null, null, null);
    },
    listen$3$onDone$onError($receiver, onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError($receiver, onData, null, onDone, onError);
    }
  };
  A._ForwardingStreamSubscription.prototype = {
    _async$_add$1(data) {
      if ((this._state & 2) !== 0)
        return;
      this.super$_BufferingStreamSubscription$_add(data);
    },
    _addError$2(error, stackTrace) {
      if ((this._state & 2) !== 0)
        return;
      this.super$_BufferingStreamSubscription$_addError(error, stackTrace);
    },
    _async$_onPause$0() {
      var t1 = this._subscription;
      if (t1 != null)
        t1.pause$0(0);
    },
    _async$_onResume$0() {
      var t1 = this._subscription;
      if (t1 != null)
        t1.resume$0(0);
    },
    _async$_onCancel$0() {
      var subscription = this._subscription;
      if (subscription != null) {
        this._subscription = null;
        return subscription.cancel$0();
      }
      return null;
    },
    _handleData$1(data) {
      this._stream._handleData$2(data, this);
    },
    _handleError$2(error, stackTrace) {
      this._addError$2(error, stackTrace);
    },
    _handleDone$0() {
      this._close$0();
    }
  };
  A._ExpandStream.prototype = {
    _handleData$2(inputEvent, sink) {
      var value, e, s, t1, exception, error, stackTrace, replacement;
      try {
        for (t1 = J.get$iterator$ax(this._expand.call$1(inputEvent)); t1.moveNext$0();) {
          value = t1.get$current(t1);
          sink._async$_add$1(value);
        }
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        error = e;
        stackTrace = s;
        replacement = $.Zone__current.errorCallback$2(error, stackTrace);
        if (replacement != null) {
          error = replacement.error;
          stackTrace = replacement.stackTrace;
        }
        sink._addError$2(error, stackTrace);
      }
    }
  };
  A._ZoneFunction.prototype = {};
  A._ZoneSpecification.prototype = {$isZoneSpecification: 1};
  A._ZoneDelegate.prototype = {$isZoneDelegate: 1};
  A._Zone.prototype = {
    _processUncaughtError$3(zone, error, stackTrace) {
      var handler, parentDelegate, parentZone, currentZone, e, s, t1, exception,
        implementation = this.get$_handleUncaughtError(),
        implZone = implementation.zone;
      if (implZone === B.C__RootZone) {
        A._rootHandleError(error, stackTrace);
        return;
      }
      handler = implementation.$function;
      parentDelegate = implZone.get$_parentDelegate();
      t1 = J.get$parent$z(implZone);
      t1.toString;
      parentZone = t1;
      currentZone = $.Zone__current;
      try {
        $.Zone__current = parentZone;
        handler.call$5(implZone, parentDelegate, zone, error, stackTrace);
        $.Zone__current = currentZone;
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        $.Zone__current = currentZone;
        t1 = error === e ? stackTrace : s;
        parentZone._processUncaughtError$3(implZone, e, t1);
      }
    },
    $isZone: 1
  };
  A._CustomZone.prototype = {
    get$_delegate() {
      var t1 = this._delegateCache;
      return t1 == null ? this._delegateCache = new A._ZoneDelegate(this) : t1;
    },
    get$_parentDelegate() {
      return this.parent.get$_delegate();
    },
    get$errorZone() {
      return this._handleUncaughtError.zone;
    },
    runGuarded$1(f) {
      var e, s, exception;
      try {
        this.run$1$1(0, f, type$.void);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        this._processUncaughtError$3(this, e, s);
      }
    },
    runUnaryGuarded$1$2(f, arg, $T) {
      var e, s, exception;
      try {
        this.runUnary$2$2(f, arg, type$.void, $T);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        this._processUncaughtError$3(this, e, s);
      }
    },
    runBinaryGuarded$2$3(f, arg1, arg2, T1, T2) {
      var e, s, exception;
      try {
        this.runBinary$3$3(f, arg1, arg2, type$.void, T1, T2);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        this._processUncaughtError$3(this, e, s);
      }
    },
    bindCallback$1$1(f, $R) {
      return new A._CustomZone_bindCallback_closure(this, this.registerCallback$1$1(f, $R), $R);
    },
    bindUnaryCallback$2$1(f, $R, $T) {
      return new A._CustomZone_bindUnaryCallback_closure(this, this.registerUnaryCallback$2$1(f, $R, $T), $T, $R);
    },
    bindCallbackGuarded$1(f) {
      return new A._CustomZone_bindCallbackGuarded_closure(this, this.registerCallback$1$1(f, type$.void));
    },
    $index(_, key) {
      var value,
        t1 = this._async$_map,
        result = t1.$index(0, key);
      if (result != null || t1.containsKey$1(key))
        return result;
      value = this.parent.$index(0, key);
      if (value != null)
        t1.$indexSet(0, key, value);
      return value;
    },
    handleUncaughtError$2(error, stackTrace) {
      this._processUncaughtError$3(this, error, stackTrace);
    },
    fork$2$specification$zoneValues(specification, zoneValues) {
      var implementation = this._fork,
        t1 = implementation.zone;
      return implementation.$function.call$5(t1, t1.get$_parentDelegate(), this, specification, zoneValues);
    },
    run$1$1(_, f) {
      var implementation = this._run,
        t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, f);
    },
    runUnary$2$2(f, arg) {
      var implementation = this._runUnary,
        t1 = implementation.zone;
      return implementation.$function.call$5(t1, t1.get$_parentDelegate(), this, f, arg);
    },
    runBinary$3$3(f, arg1, arg2) {
      var implementation = this._runBinary,
        t1 = implementation.zone;
      return implementation.$function.call$6(t1, t1.get$_parentDelegate(), this, f, arg1, arg2);
    },
    registerCallback$1$1(callback) {
      var implementation = this._registerCallback,
        t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, callback);
    },
    registerUnaryCallback$2$1(callback) {
      var implementation = this._registerUnaryCallback,
        t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, callback);
    },
    registerBinaryCallback$3$1(callback) {
      var implementation = this._registerBinaryCallback,
        t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, callback);
    },
    errorCallback$2(error, stackTrace) {
      var implementation, implementationZone;
      A.checkNotNullable(error, "error", type$.Object);
      implementation = this._errorCallback;
      implementationZone = implementation.zone;
      if (implementationZone === B.C__RootZone)
        return null;
      return implementation.$function.call$5(implementationZone, implementationZone.get$_parentDelegate(), this, error, stackTrace);
    },
    scheduleMicrotask$1(f) {
      var implementation = this._scheduleMicrotask,
        t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, f);
    },
    createTimer$2(duration, f) {
      var implementation = this._createTimer,
        t1 = implementation.zone;
      return implementation.$function.call$5(t1, t1.get$_parentDelegate(), this, duration, f);
    },
    print$1(line) {
      var implementation = this._print,
        t1 = implementation.zone;
      return implementation.$function.call$4(t1, t1.get$_parentDelegate(), this, line);
    },
    get$_run() {
      return this._run;
    },
    get$_runUnary() {
      return this._runUnary;
    },
    get$_runBinary() {
      return this._runBinary;
    },
    get$_registerCallback() {
      return this._registerCallback;
    },
    get$_registerUnaryCallback() {
      return this._registerUnaryCallback;
    },
    get$_registerBinaryCallback() {
      return this._registerBinaryCallback;
    },
    get$_errorCallback() {
      return this._errorCallback;
    },
    get$_scheduleMicrotask() {
      return this._scheduleMicrotask;
    },
    get$_createTimer() {
      return this._createTimer;
    },
    get$_createPeriodicTimer() {
      return this._createPeriodicTimer;
    },
    get$_print() {
      return this._print;
    },
    get$_fork() {
      return this._fork;
    },
    get$_handleUncaughtError() {
      return this._handleUncaughtError;
    },
    get$parent(receiver) {
      return this.parent;
    },
    get$_async$_map() {
      return this._async$_map;
    }
  };
  A._CustomZone_bindCallback_closure.prototype = {
    call$0() {
      return this.$this.run$1$1(0, this.registered, this.R);
    },
    $signature() {
      return this.R._eval$1("0()");
    }
  };
  A._CustomZone_bindUnaryCallback_closure.prototype = {
    call$1(arg) {
      var _this = this;
      return _this.$this.runUnary$2$2(_this.registered, arg, _this.R, _this.T);
    },
    $signature() {
      return this.R._eval$1("@<0>")._bind$1(this.T)._eval$1("1(2)");
    }
  };
  A._CustomZone_bindCallbackGuarded_closure.prototype = {
    call$0() {
      return this.$this.runGuarded$1(this.registered);
    },
    $signature: 0
  };
  A._rootHandleError_closure.prototype = {
    call$0() {
      A.Error_throwWithStackTrace(this.error, this.stackTrace);
    },
    $signature: 0
  };
  A._RootZone.prototype = {
    get$_run() {
      return B._ZoneFunction__RootZone__rootRun;
    },
    get$_runUnary() {
      return B._ZoneFunction__RootZone__rootRunUnary;
    },
    get$_runBinary() {
      return B._ZoneFunction__RootZone__rootRunBinary;
    },
    get$_registerCallback() {
      return B._ZoneFunction__RootZone__rootRegisterCallback;
    },
    get$_registerUnaryCallback() {
      return B._ZoneFunction_Eeh;
    },
    get$_registerBinaryCallback() {
      return B._ZoneFunction_7G2;
    },
    get$_errorCallback() {
      return B._ZoneFunction__RootZone__rootErrorCallback;
    },
    get$_scheduleMicrotask() {
      return B._ZoneFunction__RootZone__rootScheduleMicrotask;
    },
    get$_createTimer() {
      return B._ZoneFunction__RootZone__rootCreateTimer;
    },
    get$_createPeriodicTimer() {
      return B._ZoneFunction_3bB;
    },
    get$_print() {
      return B._ZoneFunction__RootZone__rootPrint;
    },
    get$_fork() {
      return B._ZoneFunction__RootZone__rootFork;
    },
    get$_handleUncaughtError() {
      return B._ZoneFunction_NMc;
    },
    get$parent(_) {
      return null;
    },
    get$_async$_map() {
      return $.$get$_RootZone__rootMap();
    },
    get$_delegate() {
      var t1 = $._RootZone__rootDelegate;
      return t1 == null ? $._RootZone__rootDelegate = new A._ZoneDelegate(this) : t1;
    },
    get$_parentDelegate() {
      var t1 = $._RootZone__rootDelegate;
      return t1 == null ? $._RootZone__rootDelegate = new A._ZoneDelegate(this) : t1;
    },
    get$errorZone() {
      return this;
    },
    runGuarded$1(f) {
      var e, s, exception;
      try {
        if (B.C__RootZone === $.Zone__current) {
          f.call$0();
          return;
        }
        A._rootRun(null, null, this, f);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        A._rootHandleError(e, s);
      }
    },
    runUnaryGuarded$1$2(f, arg) {
      var e, s, exception;
      try {
        if (B.C__RootZone === $.Zone__current) {
          f.call$1(arg);
          return;
        }
        A._rootRunUnary(null, null, this, f, arg);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        A._rootHandleError(e, s);
      }
    },
    runBinaryGuarded$2$3(f, arg1, arg2) {
      var e, s, exception;
      try {
        if (B.C__RootZone === $.Zone__current) {
          f.call$2(arg1, arg2);
          return;
        }
        A._rootRunBinary(null, null, this, f, arg1, arg2);
      } catch (exception) {
        e = A.unwrapException(exception);
        s = A.getTraceFromException(exception);
        A._rootHandleError(e, s);
      }
    },
    bindCallback$1$1(f, $R) {
      return new A._RootZone_bindCallback_closure(this, f, $R);
    },
    bindUnaryCallback$2$1(f, $R, $T) {
      return new A._RootZone_bindUnaryCallback_closure(this, f, $T, $R);
    },
    bindCallbackGuarded$1(f) {
      return new A._RootZone_bindCallbackGuarded_closure(this, f);
    },
    $index(_, key) {
      return null;
    },
    handleUncaughtError$2(error, stackTrace) {
      A._rootHandleError(error, stackTrace);
    },
    fork$2$specification$zoneValues(specification, zoneValues) {
      return A._rootFork(null, null, this, specification, zoneValues);
    },
    run$1$1(_, f) {
      if ($.Zone__current === B.C__RootZone)
        return f.call$0();
      return A._rootRun(null, null, this, f);
    },
    runUnary$2$2(f, arg) {
      if ($.Zone__current === B.C__RootZone)
        return f.call$1(arg);
      return A._rootRunUnary(null, null, this, f, arg);
    },
    runBinary$3$3(f, arg1, arg2) {
      if ($.Zone__current === B.C__RootZone)
        return f.call$2(arg1, arg2);
      return A._rootRunBinary(null, null, this, f, arg1, arg2);
    },
    registerCallback$1$1(f) {
      return f;
    },
    registerUnaryCallback$2$1(f) {
      return f;
    },
    registerBinaryCallback$3$1(f) {
      return f;
    },
    errorCallback$2(error, stackTrace) {
      return null;
    },
    scheduleMicrotask$1(f) {
      A._rootScheduleMicrotask(null, null, this, f);
    },
    createTimer$2(duration, f) {
      return A.Timer__createTimer(duration, f);
    },
    print$1(line) {
      A.printString(line);
    }
  };
  A._RootZone_bindCallback_closure.prototype = {
    call$0() {
      return this.$this.run$1$1(0, this.f, this.R);
    },
    $signature() {
      return this.R._eval$1("0()");
    }
  };
  A._RootZone_bindUnaryCallback_closure.prototype = {
    call$1(arg) {
      var _this = this;
      return _this.$this.runUnary$2$2(_this.f, arg, _this.R, _this.T);
    },
    $signature() {
      return this.R._eval$1("@<0>")._bind$1(this.T)._eval$1("1(2)");
    }
  };
  A._RootZone_bindCallbackGuarded_closure.prototype = {
    call$0() {
      return this.$this.runGuarded$1(this.f);
    },
    $signature: 0
  };
  A._HashMap.prototype = {
    get$length(_) {
      return this._collection$_length;
    },
    get$isEmpty(_) {
      return this._collection$_length === 0;
    },
    get$isNotEmpty(_) {
      return this._collection$_length !== 0;
    },
    get$keys(_) {
      return new A._HashMapKeyIterable(this, A._instanceType(this)._eval$1("_HashMapKeyIterable<1>"));
    },
    get$values(_) {
      var t1 = A._instanceType(this);
      return A.MappedIterable_MappedIterable(new A._HashMapKeyIterable(this, t1._eval$1("_HashMapKeyIterable<1>")), new A._HashMap_values_closure(this), t1._precomputed1, t1._rest[1]);
    },
    containsKey$1(key) {
      var strings, nums;
      if (typeof key == "string" && key !== "__proto__") {
        strings = this._collection$_strings;
        return strings == null ? false : strings[key] != null;
      } else if (typeof key == "number" && (key & 1073741823) === key) {
        nums = this._collection$_nums;
        return nums == null ? false : nums[key] != null;
      } else
        return this._containsKey$1(key);
    },
    _containsKey$1(key) {
      var rest = this._collection$_rest;
      if (rest == null)
        return false;
      return this._findBucketIndex$2(this._getBucket$2(rest, key), key) >= 0;
    },
    addAll$1(_, other) {
      other.forEach$1(0, new A._HashMap_addAll_closure(this));
    },
    $index(_, key) {
      var strings, t1, nums;
      if (typeof key == "string" && key !== "__proto__") {
        strings = this._collection$_strings;
        t1 = strings == null ? null : A._HashMap__getTableEntry(strings, key);
        return t1;
      } else if (typeof key == "number" && (key & 1073741823) === key) {
        nums = this._collection$_nums;
        t1 = nums == null ? null : A._HashMap__getTableEntry(nums, key);
        return t1;
      } else
        return this._get$1(key);
    },
    _get$1(key) {
      var bucket, index,
        rest = this._collection$_rest;
      if (rest == null)
        return null;
      bucket = this._getBucket$2(rest, key);
      index = this._findBucketIndex$2(bucket, key);
      return index < 0 ? null : bucket[index + 1];
    },
    $indexSet(_, key, value) {
      var strings, nums, _this = this;
      if (typeof key == "string" && key !== "__proto__") {
        strings = _this._collection$_strings;
        _this._collection$_addHashTableEntry$3(strings == null ? _this._collection$_strings = A._HashMap__newHashTable() : strings, key, value);
      } else if (typeof key == "number" && (key & 1073741823) === key) {
        nums = _this._collection$_nums;
        _this._collection$_addHashTableEntry$3(nums == null ? _this._collection$_nums = A._HashMap__newHashTable() : nums, key, value);
      } else
        _this._set$2(key, value);
    },
    _set$2(key, value) {
      var hash, bucket, index, _this = this,
        rest = _this._collection$_rest;
      if (rest == null)
        rest = _this._collection$_rest = A._HashMap__newHashTable();
      hash = _this._computeHashCode$1(key);
      bucket = rest[hash];
      if (bucket == null) {
        A._HashMap__setTableEntry(rest, hash, [key, value]);
        ++_this._collection$_length;
        _this._collection$_keys = null;
      } else {
        index = _this._findBucketIndex$2(bucket, key);
        if (index >= 0)
          bucket[index + 1] = value;
        else {
          bucket.push(key, value);
          ++_this._collection$_length;
          _this._collection$_keys = null;
        }
      }
    },
    remove$1(_, key) {
      var _this = this;
      if (typeof key == "string" && key !== "__proto__")
        return _this._removeHashTableEntry$2(_this._collection$_strings, key);
      else if (typeof key == "number" && (key & 1073741823) === key)
        return _this._removeHashTableEntry$2(_this._collection$_nums, key);
      else
        return _this._remove$1(key);
    },
    _remove$1(key) {
      var hash, bucket, index, result, _this = this,
        rest = _this._collection$_rest;
      if (rest == null)
        return null;
      hash = _this._computeHashCode$1(key);
      bucket = rest[hash];
      index = _this._findBucketIndex$2(bucket, key);
      if (index < 0)
        return null;
      --_this._collection$_length;
      _this._collection$_keys = null;
      result = bucket.splice(index, 2)[1];
      if (0 === bucket.length)
        delete rest[hash];
      return result;
    },
    forEach$1(_, action) {
      var $length, t1, i, key, t2, _this = this,
        keys = _this._computeKeys$0();
      for ($length = keys.length, t1 = A._instanceType(_this)._rest[1], i = 0; i < $length; ++i) {
        key = keys[i];
        t2 = _this.$index(0, key);
        action.call$2(key, t2 == null ? t1._as(t2) : t2);
        if (keys !== _this._collection$_keys)
          throw A.wrapException(A.ConcurrentModificationError$(_this));
      }
    },
    _computeKeys$0() {
      var strings, names, entries, index, i, nums, rest, bucket, $length, i0, _this = this,
        result = _this._collection$_keys;
      if (result != null)
        return result;
      result = A.List_List$filled(_this._collection$_length, null, false, type$.dynamic);
      strings = _this._collection$_strings;
      if (strings != null) {
        names = Object.getOwnPropertyNames(strings);
        entries = names.length;
        for (index = 0, i = 0; i < entries; ++i) {
          result[index] = names[i];
          ++index;
        }
      } else
        index = 0;
      nums = _this._collection$_nums;
      if (nums != null) {
        names = Object.getOwnPropertyNames(nums);
        entries = names.length;
        for (i = 0; i < entries; ++i) {
          result[index] = +names[i];
          ++index;
        }
      }
      rest = _this._collection$_rest;
      if (rest != null) {
        names = Object.getOwnPropertyNames(rest);
        entries = names.length;
        for (i = 0; i < entries; ++i) {
          bucket = rest[names[i]];
          $length = bucket.length;
          for (i0 = 0; i0 < $length; i0 += 2) {
            result[index] = bucket[i0];
            ++index;
          }
        }
      }
      return _this._collection$_keys = result;
    },
    _collection$_addHashTableEntry$3(table, key, value) {
      if (table[key] == null) {
        ++this._collection$_length;
        this._collection$_keys = null;
      }
      A._HashMap__setTableEntry(table, key, value);
    },
    _removeHashTableEntry$2(table, key) {
      var value;
      if (table != null && table[key] != null) {
        value = A._HashMap__getTableEntry(table, key);
        delete table[key];
        --this._collection$_length;
        this._collection$_keys = null;
        return value;
      } else
        return null;
    },
    _computeHashCode$1(key) {
      return J.get$hashCode$(key) & 1073741823;
    },
    _getBucket$2(table, key) {
      return table[this._computeHashCode$1(key)];
    },
    _findBucketIndex$2(bucket, key) {
      var $length, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; i += 2)
        if (J.$eq$(bucket[i], key))
          return i;
      return -1;
    }
  };
  A._HashMap_values_closure.prototype = {
    call$1(each) {
      var t1 = this.$this,
        t2 = t1.$index(0, each);
      return t2 == null ? A._instanceType(t1)._rest[1]._as(t2) : t2;
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("2(1)");
    }
  };
  A._HashMap_addAll_closure.prototype = {
    call$2(key, value) {
      this.$this.$indexSet(0, key, value);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(1,2)");
    }
  };
  A._IdentityHashMap.prototype = {
    _computeHashCode$1(key) {
      return A.objectHashCode(key) & 1073741823;
    },
    _findBucketIndex$2(bucket, key) {
      var $length, i, t1;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; i += 2) {
        t1 = bucket[i];
        if (t1 == null ? key == null : t1 === key)
          return i;
      }
      return -1;
    }
  };
  A._HashMapKeyIterable.prototype = {
    get$length(_) {
      return this._map._collection$_length;
    },
    get$isEmpty(_) {
      return this._map._collection$_length === 0;
    },
    get$isNotEmpty(_) {
      return this._map._collection$_length !== 0;
    },
    get$iterator(_) {
      var t1 = this._map;
      return new A._HashMapKeyIterator(t1, t1._computeKeys$0());
    },
    contains$1(_, element) {
      return this._map.containsKey$1(element);
    }
  };
  A._HashMapKeyIterator.prototype = {
    get$current(_) {
      var t1 = this._collection$_current;
      return t1 == null ? A._instanceType(this)._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var _this = this,
        keys = _this._collection$_keys,
        offset = _this._offset,
        t1 = _this._map;
      if (keys !== t1._collection$_keys)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      else if (offset >= keys.length) {
        _this._collection$_current = null;
        return false;
      } else {
        _this._collection$_current = keys[offset];
        _this._offset = offset + 1;
        return true;
      }
    }
  };
  A._LinkedCustomHashMap.prototype = {
    $index(_, key) {
      if (!this._validKey.call$1(key))
        return null;
      return this.super$JsLinkedHashMap$internalGet(key);
    },
    $indexSet(_, key, value) {
      this.super$JsLinkedHashMap$internalSet(key, value);
    },
    containsKey$1(key) {
      if (!this._validKey.call$1(key))
        return false;
      return this.super$JsLinkedHashMap$internalContainsKey(key);
    },
    remove$1(_, key) {
      if (!this._validKey.call$1(key))
        return null;
      return this.super$JsLinkedHashMap$internalRemove(key);
    },
    internalComputeHashCode$1(key) {
      return this._hashCode.call$1(key) & 1073741823;
    },
    internalFindBucketIndex$2(bucket, key) {
      var $length, t1, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (t1 = this._equals, i = 0; i < $length; ++i)
        if (t1.call$2(bucket[i].hashMapCellKey, key))
          return i;
      return -1;
    }
  };
  A._LinkedCustomHashMap_closure.prototype = {
    call$1(v) {
      return this.K._is(v);
    },
    $signature: 122
  };
  A._LinkedHashSet.prototype = {
    _newSet$0() {
      return new A._LinkedHashSet(A._instanceType(this)._eval$1("_LinkedHashSet<1>"));
    },
    _newSimilarSet$1$0($R) {
      return new A._LinkedHashSet($R._eval$1("_LinkedHashSet<0>"));
    },
    _newSimilarSet$0() {
      return this._newSimilarSet$1$0(type$.dynamic);
    },
    get$iterator(_) {
      var t1 = new A._LinkedHashSetIterator(this, this._collection$_modifications);
      t1._collection$_cell = this._collection$_first;
      return t1;
    },
    get$length(_) {
      return this._collection$_length;
    },
    get$isEmpty(_) {
      return this._collection$_length === 0;
    },
    get$isNotEmpty(_) {
      return this._collection$_length !== 0;
    },
    contains$1(_, object) {
      var strings, nums;
      if (typeof object == "string" && object !== "__proto__") {
        strings = this._collection$_strings;
        if (strings == null)
          return false;
        return strings[object] != null;
      } else if (typeof object == "number" && (object & 1073741823) === object) {
        nums = this._collection$_nums;
        if (nums == null)
          return false;
        return nums[object] != null;
      } else
        return this._contains$1(object);
    },
    _contains$1(object) {
      var rest = this._collection$_rest;
      if (rest == null)
        return false;
      return this._findBucketIndex$2(rest[this._computeHashCode$1(object)], object) >= 0;
    },
    get$first(_) {
      var first = this._collection$_first;
      if (first == null)
        throw A.wrapException(A.StateError$("No elements"));
      return first._element;
    },
    get$last(_) {
      var last = this._collection$_last;
      if (last == null)
        throw A.wrapException(A.StateError$("No elements"));
      return last._element;
    },
    add$1(_, element) {
      var strings, nums, _this = this;
      if (typeof element == "string" && element !== "__proto__") {
        strings = _this._collection$_strings;
        return _this._collection$_addHashTableEntry$2(strings == null ? _this._collection$_strings = A._LinkedHashSet__newHashTable() : strings, element);
      } else if (typeof element == "number" && (element & 1073741823) === element) {
        nums = _this._collection$_nums;
        return _this._collection$_addHashTableEntry$2(nums == null ? _this._collection$_nums = A._LinkedHashSet__newHashTable() : nums, element);
      } else
        return _this._add$1(element);
    },
    _add$1(element) {
      var hash, bucket, _this = this,
        rest = _this._collection$_rest;
      if (rest == null)
        rest = _this._collection$_rest = A._LinkedHashSet__newHashTable();
      hash = _this._computeHashCode$1(element);
      bucket = rest[hash];
      if (bucket == null)
        rest[hash] = [_this._collection$_newLinkedCell$1(element)];
      else {
        if (_this._findBucketIndex$2(bucket, element) >= 0)
          return false;
        bucket.push(_this._collection$_newLinkedCell$1(element));
      }
      return true;
    },
    remove$1(_, object) {
      var _this = this;
      if (typeof object == "string" && object !== "__proto__")
        return _this._removeHashTableEntry$2(_this._collection$_strings, object);
      else if (typeof object == "number" && (object & 1073741823) === object)
        return _this._removeHashTableEntry$2(_this._collection$_nums, object);
      else
        return _this._remove$1(object);
    },
    _remove$1(object) {
      var hash, bucket, index, cell, _this = this,
        rest = _this._collection$_rest;
      if (rest == null)
        return false;
      hash = _this._computeHashCode$1(object);
      bucket = rest[hash];
      index = _this._findBucketIndex$2(bucket, object);
      if (index < 0)
        return false;
      cell = bucket.splice(index, 1)[0];
      if (0 === bucket.length)
        delete rest[hash];
      _this._unlinkCell$1(cell);
      return true;
    },
    _collection$_addHashTableEntry$2(table, element) {
      if (table[element] != null)
        return false;
      table[element] = this._collection$_newLinkedCell$1(element);
      return true;
    },
    _removeHashTableEntry$2(table, element) {
      var cell;
      if (table == null)
        return false;
      cell = table[element];
      if (cell == null)
        return false;
      this._unlinkCell$1(cell);
      delete table[element];
      return true;
    },
    _collection$_modified$0() {
      this._collection$_modifications = this._collection$_modifications + 1 & 1073741823;
    },
    _collection$_newLinkedCell$1(element) {
      var t1, _this = this,
        cell = new A._LinkedHashSetCell(element);
      if (_this._collection$_first == null)
        _this._collection$_first = _this._collection$_last = cell;
      else {
        t1 = _this._collection$_last;
        t1.toString;
        cell._collection$_previous = t1;
        _this._collection$_last = t1._collection$_next = cell;
      }
      ++_this._collection$_length;
      _this._collection$_modified$0();
      return cell;
    },
    _unlinkCell$1(cell) {
      var _this = this,
        previous = cell._collection$_previous,
        next = cell._collection$_next;
      if (previous == null)
        _this._collection$_first = next;
      else
        previous._collection$_next = next;
      if (next == null)
        _this._collection$_last = previous;
      else
        next._collection$_previous = previous;
      --_this._collection$_length;
      _this._collection$_modified$0();
    },
    _computeHashCode$1(element) {
      return J.get$hashCode$(element) & 1073741823;
    },
    _findBucketIndex$2(bucket, element) {
      var $length, i;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; ++i)
        if (J.$eq$(bucket[i]._element, element))
          return i;
      return -1;
    }
  };
  A._LinkedIdentityHashSet.prototype = {
    _newSet$0() {
      return new A._LinkedIdentityHashSet(this.$ti);
    },
    _newSimilarSet$1$0($R) {
      return new A._LinkedIdentityHashSet($R._eval$1("_LinkedIdentityHashSet<0>"));
    },
    _newSimilarSet$0() {
      return this._newSimilarSet$1$0(type$.dynamic);
    },
    _computeHashCode$1(key) {
      return A.objectHashCode(key) & 1073741823;
    },
    _findBucketIndex$2(bucket, element) {
      var $length, i, t1;
      if (bucket == null)
        return -1;
      $length = bucket.length;
      for (i = 0; i < $length; ++i) {
        t1 = bucket[i]._element;
        if (t1 == null ? element == null : t1 === element)
          return i;
      }
      return -1;
    }
  };
  A._LinkedHashSetCell.prototype = {};
  A._LinkedHashSetIterator.prototype = {
    get$current(_) {
      var t1 = this._collection$_current;
      return t1 == null ? A._instanceType(this)._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var _this = this,
        cell = _this._collection$_cell,
        t1 = _this._set;
      if (_this._collection$_modifications !== t1._collection$_modifications)
        throw A.wrapException(A.ConcurrentModificationError$(t1));
      else if (cell == null) {
        _this._collection$_current = null;
        return false;
      } else {
        _this._collection$_current = cell._element;
        _this._collection$_cell = cell._collection$_next;
        return true;
      }
    }
  };
  A.UnmodifiableListView.prototype = {
    cast$1$0(_, $R) {
      return new A.UnmodifiableListView(J.cast$1$0$ax(this._collection$_source, $R), $R._eval$1("UnmodifiableListView<0>"));
    },
    get$length(_) {
      return J.get$length$asx(this._collection$_source);
    },
    $index(_, index) {
      return J.elementAt$1$ax(this._collection$_source, index);
    }
  };
  A.HashMap_HashMap$from_closure.prototype = {
    call$2(k, v) {
      this.result.$indexSet(0, this.K._as(k), this.V._as(v));
    },
    $signature: 256
  };
  A.LinkedHashMap_LinkedHashMap$from_closure.prototype = {
    call$2(k, v) {
      this.result.$indexSet(0, this.K._as(k), this.V._as(v));
    },
    $signature: 256
  };
  A.ListBase.prototype = {
    get$iterator(receiver) {
      return new A.ListIterator(receiver, this.get$length(receiver));
    },
    elementAt$1(receiver, index) {
      return this.$index(receiver, index);
    },
    forEach$1(receiver, action) {
      var i,
        $length = this.get$length(receiver);
      for (i = 0; i < $length; ++i) {
        action.call$1(this.$index(receiver, i));
        if ($length !== this.get$length(receiver))
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
    },
    get$isEmpty(receiver) {
      return this.get$length(receiver) === 0;
    },
    get$isNotEmpty(receiver) {
      return !this.get$isEmpty(receiver);
    },
    get$first(receiver) {
      if (this.get$length(receiver) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return this.$index(receiver, 0);
    },
    get$last(receiver) {
      if (this.get$length(receiver) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      return this.$index(receiver, this.get$length(receiver) - 1);
    },
    get$single(receiver) {
      if (this.get$length(receiver) === 0)
        throw A.wrapException(A.IterableElementError_noElement());
      if (this.get$length(receiver) > 1)
        throw A.wrapException(A.IterableElementError_tooMany());
      return this.$index(receiver, 0);
    },
    contains$1(receiver, element) {
      var i,
        $length = this.get$length(receiver);
      for (i = 0; i < $length; ++i) {
        if (J.$eq$(this.$index(receiver, i), element))
          return true;
        if ($length !== this.get$length(receiver))
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      return false;
    },
    every$1(receiver, test) {
      var i,
        $length = this.get$length(receiver);
      for (i = 0; i < $length; ++i) {
        if (!test.call$1(this.$index(receiver, i)))
          return false;
        if ($length !== this.get$length(receiver))
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      return true;
    },
    any$1(receiver, test) {
      var i,
        $length = this.get$length(receiver);
      for (i = 0; i < $length; ++i) {
        if (test.call$1(this.$index(receiver, i)))
          return true;
        if ($length !== this.get$length(receiver))
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      return false;
    },
    lastWhere$2$orElse(receiver, test, orElse) {
      var i, element,
        $length = this.get$length(receiver);
      for (i = $length - 1; i >= 0; --i) {
        element = this.$index(receiver, i);
        if (test.call$1(element))
          return element;
        if ($length !== this.get$length(receiver))
          throw A.wrapException(A.ConcurrentModificationError$(receiver));
      }
      if (orElse != null)
        return orElse.call$0();
      throw A.wrapException(A.IterableElementError_noElement());
    },
    join$1(receiver, separator) {
      var t1;
      if (this.get$length(receiver) === 0)
        return "";
      t1 = A.StringBuffer__writeAll("", receiver, separator);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    where$1(receiver, test) {
      return new A.WhereIterable(receiver, test, A.instanceType(receiver)._eval$1("WhereIterable<ListBase.E>"));
    },
    map$1$1(receiver, f, $T) {
      return new A.MappedListIterable(receiver, f, A.instanceType(receiver)._eval$1("@<ListBase.E>")._bind$1($T)._eval$1("MappedListIterable<1,2>"));
    },
    expand$1$1(receiver, f, $T) {
      return new A.ExpandIterable(receiver, f, A.instanceType(receiver)._eval$1("@<ListBase.E>")._bind$1($T)._eval$1("ExpandIterable<1,2>"));
    },
    skip$1(receiver, count) {
      return A.SubListIterable$(receiver, count, null, A.instanceType(receiver)._eval$1("ListBase.E"));
    },
    take$1(receiver, count) {
      return A.SubListIterable$(receiver, 0, A.checkNotNullable(count, "count", type$.int), A.instanceType(receiver)._eval$1("ListBase.E"));
    },
    toList$1$growable(receiver, growable) {
      var t1, first, result, i, _this = this;
      if (_this.get$isEmpty(receiver)) {
        t1 = J.JSArray_JSArray$growable(0, A.instanceType(receiver)._eval$1("ListBase.E"));
        return t1;
      }
      first = _this.$index(receiver, 0);
      result = A.List_List$filled(_this.get$length(receiver), first, true, A.instanceType(receiver)._eval$1("ListBase.E"));
      for (i = 1; i < _this.get$length(receiver); ++i)
        result[i] = _this.$index(receiver, i);
      return result;
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    toSet$0(receiver) {
      var i,
        result = A.LinkedHashSet_LinkedHashSet(A.instanceType(receiver)._eval$1("ListBase.E"));
      for (i = 0; i < this.get$length(receiver); ++i)
        result.add$1(0, this.$index(receiver, i));
      return result;
    },
    add$1(receiver, element) {
      var t1 = this.get$length(receiver);
      this.set$length(receiver, t1 + 1);
      this.$indexSet(receiver, t1, element);
    },
    addAll$1(receiver, iterable) {
      var t1,
        i = this.get$length(receiver);
      for (t1 = iterable.get$iterator(iterable); t1.moveNext$0();) {
        this.add$1(receiver, t1.get$current(t1));
        ++i;
      }
    },
    _closeGap$2(receiver, start, end) {
      var i, _this = this,
        $length = _this.get$length(receiver),
        size = end - start;
      for (i = end; i < $length; ++i)
        _this.$indexSet(receiver, i - size, _this.$index(receiver, i));
      _this.set$length(receiver, $length - size);
    },
    cast$1$0(receiver, $R) {
      return new A.CastList(receiver, A.instanceType(receiver)._eval$1("@<ListBase.E>")._bind$1($R)._eval$1("CastList<1,2>"));
    },
    sort$1(receiver, compare) {
      A.Sort_sort(receiver, compare == null ? A.collection_ListBase__compareAny$closure() : compare);
    },
    sublist$2(receiver, start, end) {
      var listLength = this.get$length(receiver);
      A.RangeError_checkValidRange(start, listLength, listLength);
      return A.List_List$from(this.getRange$2(receiver, start, listLength), true, A.instanceType(receiver)._eval$1("ListBase.E"));
    },
    sublist$1($receiver, start) {
      return this.sublist$2($receiver, start, null);
    },
    getRange$2(receiver, start, end) {
      A.RangeError_checkValidRange(start, end, this.get$length(receiver));
      return A.SubListIterable$(receiver, start, end, A.instanceType(receiver)._eval$1("ListBase.E"));
    },
    removeRange$2(receiver, start, end) {
      A.RangeError_checkValidRange(start, end, this.get$length(receiver));
      if (end > start)
        this._closeGap$2(receiver, start, end);
    },
    fillRange$3(receiver, start, end, fill) {
      var i,
        value = fill == null ? A.instanceType(receiver)._eval$1("ListBase.E")._as(fill) : fill;
      A.RangeError_checkValidRange(start, end, this.get$length(receiver));
      for (i = start; i < end; ++i)
        this.$indexSet(receiver, i, value);
    },
    setRange$4(receiver, start, end, iterable, skipCount) {
      var $length, otherStart, otherList, t1, i;
      A.RangeError_checkValidRange(start, end, this.get$length(receiver));
      $length = end - start;
      if ($length === 0)
        return;
      A.RangeError_checkNotNegative(skipCount, "skipCount");
      if (A.instanceType(receiver)._eval$1("List<ListBase.E>")._is(iterable)) {
        otherStart = skipCount;
        otherList = iterable;
      } else {
        otherList = J.skip$1$ax(iterable, skipCount).toList$1$growable(0, false);
        otherStart = 0;
      }
      t1 = J.getInterceptor$asx(otherList);
      if (otherStart + $length > t1.get$length(otherList))
        throw A.wrapException(A.IterableElementError_tooFew());
      if (otherStart < start)
        for (i = $length - 1; i >= 0; --i)
          this.$indexSet(receiver, start + i, t1.$index(otherList, otherStart + i));
      else
        for (i = 0; i < $length; ++i)
          this.$indexSet(receiver, start + i, t1.$index(otherList, otherStart + i));
    },
    get$reversed(receiver) {
      return new A.ReversedListIterable(receiver, A.instanceType(receiver)._eval$1("ReversedListIterable<ListBase.E>"));
    },
    toString$0(receiver) {
      return A.Iterable_iterableToFullString(receiver, "[", "]");
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isList: 1
  };
  A.MapBase.prototype = {
    cast$2$0(_, RK, RV) {
      var t1 = A._instanceType(this);
      return A.Map_castFrom(this, t1._eval$1("MapBase.K"), t1._eval$1("MapBase.V"), RK, RV);
    },
    forEach$1(_, action) {
      var t1, t2, key, t3, _this = this;
      for (t1 = J.get$iterator$ax(_this.get$keys(_this)), t2 = A._instanceType(_this)._eval$1("MapBase.V"); t1.moveNext$0();) {
        key = t1.get$current(t1);
        t3 = _this.$index(0, key);
        action.call$2(key, t3 == null ? t2._as(t3) : t3);
      }
    },
    addAll$1(_, other) {
      other.forEach$1(0, new A.MapBase_addAll_closure(this));
    },
    get$entries(_) {
      var _this = this;
      return J.map$1$1$ax(_this.get$keys(_this), new A.MapBase_entries_closure(_this), A._instanceType(_this)._eval$1("MapEntry<MapBase.K,MapBase.V>"));
    },
    removeWhere$1(_, test) {
      var t2, key, t3, _i, _this = this,
        t1 = A._instanceType(_this),
        keysToRemove = A._setArrayType([], t1._eval$1("JSArray<MapBase.K>"));
      for (t2 = J.get$iterator$ax(_this.get$keys(_this)), t1 = t1._eval$1("MapBase.V"); t2.moveNext$0();) {
        key = t2.get$current(t2);
        t3 = _this.$index(0, key);
        if (test.call$2(key, t3 == null ? t1._as(t3) : t3))
          keysToRemove.push(key);
      }
      for (t1 = keysToRemove.length, _i = 0; _i < keysToRemove.length; keysToRemove.length === t1 || (0, A.throwConcurrentModificationError)(keysToRemove), ++_i)
        _this.remove$1(0, keysToRemove[_i]);
    },
    containsKey$1(key) {
      return J.contains$1$asx(this.get$keys(this), key);
    },
    get$length(_) {
      return J.get$length$asx(this.get$keys(this));
    },
    get$isEmpty(_) {
      return J.get$isEmpty$asx(this.get$keys(this));
    },
    get$isNotEmpty(_) {
      return J.get$isNotEmpty$asx(this.get$keys(this));
    },
    get$values(_) {
      var t1 = A._instanceType(this);
      return new A._MapBaseValueIterable(this, t1._eval$1("@<MapBase.K>")._bind$1(t1._eval$1("MapBase.V"))._eval$1("_MapBaseValueIterable<1,2>"));
    },
    toString$0(_) {
      return A.MapBase_mapToString(this);
    },
    $isMap: 1
  };
  A.MapBase_addAll_closure.prototype = {
    call$2(key, value) {
      this.$this.$indexSet(0, key, value);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("~(MapBase.K,MapBase.V)");
    }
  };
  A.MapBase_entries_closure.prototype = {
    call$1(key) {
      var t1 = this.$this,
        t2 = t1.$index(0, key);
      if (t2 == null)
        t2 = A._instanceType(t1)._eval$1("MapBase.V")._as(t2);
      t1 = A._instanceType(t1);
      return new A.MapEntry(key, t2, t1._eval$1("@<MapBase.K>")._bind$1(t1._eval$1("MapBase.V"))._eval$1("MapEntry<1,2>"));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("MapEntry<MapBase.K,MapBase.V>(MapBase.K)");
    }
  };
  A.MapBase_mapToString_closure.prototype = {
    call$2(k, v) {
      var t2,
        t1 = this._box_0;
      if (!t1.first)
        this.result._contents += ", ";
      t1.first = false;
      t1 = this.result;
      t2 = t1._contents += A.S(k);
      t1._contents = t2 + ": ";
      t1._contents += A.S(v);
    },
    $signature: 291
  };
  A.UnmodifiableMapBase.prototype = {};
  A._MapBaseValueIterable.prototype = {
    get$length(_) {
      var t1 = this._map;
      return t1.get$length(t1);
    },
    get$isEmpty(_) {
      var t1 = this._map;
      return t1.get$isEmpty(t1);
    },
    get$isNotEmpty(_) {
      var t1 = this._map;
      return t1.get$isNotEmpty(t1);
    },
    get$first(_) {
      var t1 = this._map;
      t1 = t1.$index(0, J.get$first$ax(t1.get$keys(t1)));
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    get$single(_) {
      var t1 = this._map;
      t1 = t1.$index(0, J.get$single$ax(t1.get$keys(t1)));
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    get$last(_) {
      var t1 = this._map;
      t1 = t1.$index(0, J.get$last$ax(t1.get$keys(t1)));
      return t1 == null ? this.$ti._rest[1]._as(t1) : t1;
    },
    get$iterator(_) {
      var t1 = this._map;
      return new A._MapBaseValueIterator(J.get$iterator$ax(t1.get$keys(t1)), t1);
    }
  };
  A._MapBaseValueIterator.prototype = {
    moveNext$0() {
      var _this = this,
        t1 = _this._collection$_keys;
      if (t1.moveNext$0()) {
        _this._collection$_current = _this._map.$index(0, t1.get$current(t1));
        return true;
      }
      _this._collection$_current = null;
      return false;
    },
    get$current(_) {
      var t1 = this._collection$_current;
      return t1 == null ? A._instanceType(this)._rest[1]._as(t1) : t1;
    }
  };
  A._UnmodifiableMapMixin.prototype = {
    $indexSet(_, key, value) {
      throw A.wrapException(A.UnsupportedError$("Cannot modify unmodifiable map"));
    },
    addAll$1(_, other) {
      throw A.wrapException(A.UnsupportedError$("Cannot modify unmodifiable map"));
    },
    remove$1(_, key) {
      throw A.wrapException(A.UnsupportedError$("Cannot modify unmodifiable map"));
    }
  };
  A.MapView.prototype = {
    cast$2$0(_, RK, RV) {
      return this._map.cast$2$0(0, RK, RV);
    },
    $index(_, key) {
      return this._map.$index(0, key);
    },
    $indexSet(_, key, value) {
      this._map.$indexSet(0, key, value);
    },
    addAll$1(_, other) {
      this._map.addAll$1(0, other);
    },
    containsKey$1(key) {
      return this._map.containsKey$1(key);
    },
    forEach$1(_, action) {
      this._map.forEach$1(0, action);
    },
    get$isEmpty(_) {
      var t1 = this._map;
      return t1.get$isEmpty(t1);
    },
    get$isNotEmpty(_) {
      var t1 = this._map;
      return t1.get$isNotEmpty(t1);
    },
    get$length(_) {
      var t1 = this._map;
      return t1.get$length(t1);
    },
    get$keys(_) {
      var t1 = this._map;
      return t1.get$keys(t1);
    },
    remove$1(_, key) {
      return this._map.remove$1(0, key);
    },
    toString$0(_) {
      return this._map.toString$0(0);
    },
    get$values(_) {
      var t1 = this._map;
      return t1.get$values(t1);
    },
    get$entries(_) {
      var t1 = this._map;
      return t1.get$entries(t1);
    },
    $isMap: 1
  };
  A.UnmodifiableMapView.prototype = {
    cast$2$0(_, RK, RV) {
      return new A.UnmodifiableMapView(this._map.cast$2$0(0, RK, RV), RK._eval$1("@<0>")._bind$1(RV)._eval$1("UnmodifiableMapView<1,2>"));
    }
  };
  A.ListQueue.prototype = {
    get$iterator(_) {
      var _this = this;
      return new A._ListQueueIterator(_this, _this._tail, _this._modificationCount, _this._head);
    },
    get$isEmpty(_) {
      return this._head === this._tail;
    },
    get$length(_) {
      return (this._tail - this._head & this._table.length - 1) >>> 0;
    },
    get$first(_) {
      var _this = this,
        t1 = _this._head;
      if (t1 === _this._tail)
        throw A.wrapException(A.IterableElementError_noElement());
      t1 = _this._table[t1];
      return t1 == null ? _this.$ti._precomputed1._as(t1) : t1;
    },
    get$last(_) {
      var _this = this,
        t1 = _this._head,
        t2 = _this._tail;
      if (t1 === t2)
        throw A.wrapException(A.IterableElementError_noElement());
      t1 = _this._table;
      t1 = t1[(t2 - 1 & t1.length - 1) >>> 0];
      return t1 == null ? _this.$ti._precomputed1._as(t1) : t1;
    },
    get$single(_) {
      var t1, _this = this;
      if (_this._head === _this._tail)
        throw A.wrapException(A.IterableElementError_noElement());
      if (_this.get$length(_this) > 1)
        throw A.wrapException(A.IterableElementError_tooMany());
      t1 = _this._table[_this._head];
      return t1 == null ? _this.$ti._precomputed1._as(t1) : t1;
    },
    elementAt$1(_, index) {
      var t1, _this = this;
      A.IndexError_check(index, _this.get$length(_this), _this, null, null);
      t1 = _this._table;
      t1 = t1[(_this._head + index & t1.length - 1) >>> 0];
      return t1 == null ? _this.$ti._precomputed1._as(t1) : t1;
    },
    toList$1$growable(_, growable) {
      var t1, list, t2, t3, i, t4, _this = this,
        mask = _this._table.length - 1,
        $length = (_this._tail - _this._head & mask) >>> 0;
      if ($length === 0) {
        t1 = J.JSArray_JSArray$growable(0, _this.$ti._precomputed1);
        return t1;
      }
      t1 = _this.$ti._precomputed1;
      list = A.List_List$filled($length, _this.get$first(_this), true, t1);
      for (t2 = _this._table, t3 = _this._head, i = 0; i < $length; ++i) {
        t4 = t2[(t3 + i & mask) >>> 0];
        list[i] = t4 == null ? t1._as(t4) : t4;
      }
      return list;
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    addAll$1(_, elements) {
      var addCount, $length, t2, t3, t4, newTable, endSpace, preSpace, _i, _this = this,
        t1 = _this.$ti;
      if (t1._eval$1("List<1>")._is(elements)) {
        addCount = elements.length;
        $length = _this.get$length(_this);
        t2 = $length + addCount;
        t3 = _this._table;
        t4 = t3.length;
        if (t2 >= t4) {
          newTable = A.List_List$filled(A.ListQueue__nextPowerOf2(t2 + (t2 >>> 1)), null, false, t1._eval$1("1?"));
          _this._tail = _this._collection$_writeToList$1(newTable);
          _this._table = newTable;
          _this._head = 0;
          B.JSArray_methods.setRange$4(newTable, $length, t2, elements, 0);
          _this._tail += addCount;
        } else {
          t1 = _this._tail;
          endSpace = t4 - t1;
          if (addCount < endSpace) {
            B.JSArray_methods.setRange$4(t3, t1, t1 + addCount, elements, 0);
            _this._tail += addCount;
          } else {
            preSpace = addCount - endSpace;
            B.JSArray_methods.setRange$4(t3, t1, t1 + endSpace, elements, 0);
            B.JSArray_methods.setRange$4(_this._table, 0, preSpace, elements, endSpace);
            _this._tail = preSpace;
          }
        }
        ++_this._modificationCount;
      } else
        for (t1 = elements.length, _i = 0; _i < elements.length; elements.length === t1 || (0, A.throwConcurrentModificationError)(elements), ++_i)
          _this._add$1(elements[_i]);
    },
    clear$0(_) {
      var t2, t3, _this = this,
        i = _this._head,
        t1 = _this._tail;
      if (i !== t1) {
        for (t2 = _this._table, t3 = t2.length - 1; i !== t1; i = (i + 1 & t3) >>> 0)
          t2[i] = null;
        _this._head = _this._tail = 0;
        ++_this._modificationCount;
      }
    },
    toString$0(_) {
      return A.Iterable_iterableToFullString(this, "{", "}");
    },
    addFirst$1(value) {
      var _this = this,
        t1 = _this._head,
        t2 = _this._table;
      t1 = _this._head = (t1 - 1 & t2.length - 1) >>> 0;
      t2[t1] = value;
      if (t1 === _this._tail)
        _this._grow$0();
      ++_this._modificationCount;
    },
    removeFirst$0() {
      var t2, result, _this = this,
        t1 = _this._head;
      if (t1 === _this._tail)
        throw A.wrapException(A.IterableElementError_noElement());
      ++_this._modificationCount;
      t2 = _this._table;
      result = t2[t1];
      if (result == null)
        result = _this.$ti._precomputed1._as(result);
      t2[t1] = null;
      _this._head = (t1 + 1 & t2.length - 1) >>> 0;
      return result;
    },
    _add$1(element) {
      var _this = this,
        t1 = _this._table,
        t2 = _this._tail;
      t1[t2] = element;
      t1 = (t2 + 1 & t1.length - 1) >>> 0;
      _this._tail = t1;
      if (_this._head === t1)
        _this._grow$0();
      ++_this._modificationCount;
    },
    _grow$0() {
      var _this = this,
        newTable = A.List_List$filled(_this._table.length * 2, null, false, _this.$ti._eval$1("1?")),
        t1 = _this._table,
        t2 = _this._head,
        split = t1.length - t2;
      B.JSArray_methods.setRange$4(newTable, 0, split, t1, t2);
      B.JSArray_methods.setRange$4(newTable, split, split + _this._head, _this._table, 0);
      _this._head = 0;
      _this._tail = _this._table.length;
      _this._table = newTable;
    },
    _collection$_writeToList$1(target) {
      var $length, firstPartSize, _this = this,
        t1 = _this._head,
        t2 = _this._tail,
        t3 = _this._table;
      if (t1 <= t2) {
        $length = t2 - t1;
        B.JSArray_methods.setRange$4(target, 0, $length, t3, t1);
        return $length;
      } else {
        firstPartSize = t3.length - t1;
        B.JSArray_methods.setRange$4(target, 0, firstPartSize, t3, t1);
        B.JSArray_methods.setRange$4(target, firstPartSize, firstPartSize + _this._tail, _this._table, 0);
        return _this._tail + firstPartSize;
      }
    },
    $isQueue: 1
  };
  A._ListQueueIterator.prototype = {
    get$current(_) {
      var t1 = this._collection$_current;
      return t1 == null ? A._instanceType(this)._precomputed1._as(t1) : t1;
    },
    moveNext$0() {
      var t2, _this = this,
        t1 = _this._queue;
      if (_this._modificationCount !== t1._modificationCount)
        A.throwExpression(A.ConcurrentModificationError$(t1));
      t2 = _this._collection$_position;
      if (t2 === _this._collection$_end) {
        _this._collection$_current = null;
        return false;
      }
      t1 = t1._table;
      _this._collection$_current = t1[t2];
      _this._collection$_position = (t2 + 1 & t1.length - 1) >>> 0;
      return true;
    }
  };
  A.SetBase.prototype = {
    get$isEmpty(_) {
      return this.get$length(this) === 0;
    },
    get$isNotEmpty(_) {
      return this.get$length(this) !== 0;
    },
    addAll$1(_, elements) {
      var t1;
      for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
        this.add$1(0, t1.get$current(t1));
    },
    removeAll$1(elements) {
      var t1;
      for (t1 = J.get$iterator$ax(elements); t1.moveNext$0();)
        this.remove$1(0, t1.get$current(t1));
    },
    difference$1(other) {
      var t1, t2, element,
        result = this.toSet$0(0);
      for (t1 = this.get$iterator(this), t2 = other._source; t1.moveNext$0();) {
        element = t1.get$current(t1);
        if (t2.contains$1(0, element))
          result.remove$1(0, element);
      }
      return result;
    },
    toList$1$growable(_, growable) {
      return A.List_List$of(this, true, A._instanceType(this)._precomputed1);
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    map$1$1(_, f, $T) {
      return new A.EfficientLengthMappedIterable(this, f, A._instanceType(this)._eval$1("@<1>")._bind$1($T)._eval$1("EfficientLengthMappedIterable<1,2>"));
    },
    get$single(_) {
      var it, _this = this;
      if (_this.get$length(_this) > 1)
        throw A.wrapException(A.IterableElementError_tooMany());
      it = _this.get$iterator(_this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      return it.get$current(it);
    },
    toString$0(_) {
      return A.Iterable_iterableToFullString(this, "{", "}");
    },
    where$1(_, f) {
      return new A.WhereIterable(this, f, A._instanceType(this)._eval$1("WhereIterable<1>"));
    },
    forEach$1(_, f) {
      var t1;
      for (t1 = this.get$iterator(this); t1.moveNext$0();)
        f.call$1(t1.get$current(t1));
    },
    any$1(_, test) {
      var t1;
      for (t1 = this.get$iterator(this); t1.moveNext$0();)
        if (test.call$1(t1.get$current(t1)))
          return true;
      return false;
    },
    take$1(_, n) {
      return A.TakeIterable_TakeIterable(this, n, A._instanceType(this)._precomputed1);
    },
    skip$1(_, n) {
      return A.SkipIterable_SkipIterable(this, n, A._instanceType(this)._precomputed1);
    },
    get$first(_) {
      var it = this.get$iterator(this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      return it.get$current(it);
    },
    get$last(_) {
      var result,
        it = this.get$iterator(this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      do
        result = it.get$current(it);
      while (it.moveNext$0());
      return result;
    },
    elementAt$1(_, index) {
      var iterator, skipCount;
      A.RangeError_checkNotNegative(index, "index");
      iterator = this.get$iterator(this);
      for (skipCount = index; iterator.moveNext$0();) {
        if (skipCount === 0)
          return iterator.get$current(iterator);
        --skipCount;
      }
      throw A.wrapException(A.IndexError$withLength(index, index - skipCount, this, null, "index"));
    },
    $isEfficientLengthIterable: 1,
    $isIterable: 1,
    $isSet: 1
  };
  A._SetBase.prototype = {
    difference$1(other) {
      var t1, t2, t3, element,
        result = this._newSet$0();
      for (t1 = A._LinkedHashSetIterator$(this, this._collection$_modifications), t2 = other._source, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        element = t1._collection$_current;
        if (element == null)
          element = t3._as(element);
        if (!t2.contains$1(0, element))
          result.add$1(0, element);
      }
      return result;
    },
    intersection$1(other) {
      var t1, t2, t3, element,
        result = this._newSet$0();
      for (t1 = A._LinkedHashSetIterator$(this, this._collection$_modifications), t2 = other._baseMap, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        element = t1._collection$_current;
        if (element == null)
          element = t3._as(element);
        if (t2.containsKey$1(element))
          result.add$1(0, element);
      }
      return result;
    },
    toSet$0(_) {
      var t1 = this._newSet$0();
      t1.addAll$1(0, this);
      return t1;
    }
  };
  A._UnmodifiableSetMixin.prototype = {
    add$1(_, value) {
      return A._UnmodifiableSetMixin__throwUnmodifiable();
    },
    addAll$1(_, elements) {
      return A._UnmodifiableSetMixin__throwUnmodifiable();
    },
    remove$1(_, value) {
      return A._UnmodifiableSetMixin__throwUnmodifiable();
    }
  };
  A.UnmodifiableSetView.prototype = {
    contains$1(_, element) {
      return this._collection$_source.contains$1(0, element);
    },
    get$length(_) {
      return this._collection$_source._collection$_length;
    },
    get$iterator(_) {
      var t1 = this._collection$_source;
      return A._LinkedHashSetIterator$(t1, t1._collection$_modifications);
    },
    toSet$0(_) {
      return this._collection$_source.toSet$0(0);
    }
  };
  A._UnmodifiableMapView_MapView__UnmodifiableMapMixin.prototype = {};
  A._UnmodifiableSetView_SetBase__UnmodifiableSetMixin.prototype = {};
  A.Utf8Decoder__decoder_closure.prototype = {
    call$0() {
      var t1, exception;
      try {
        t1 = new TextDecoder("utf-8", {fatal: true});
        return t1;
      } catch (exception) {
      }
      return null;
    },
    $signature: 58
  };
  A.Utf8Decoder__decoderNonfatal_closure.prototype = {
    call$0() {
      var t1, exception;
      try {
        t1 = new TextDecoder("utf-8", {fatal: false});
        return t1;
      } catch (exception) {
      }
      return null;
    },
    $signature: 58
  };
  A.AsciiCodec.prototype = {
    encode$1(source) {
      return B.AsciiEncoder_127.convert$1(source);
    },
    get$encoder() {
      return B.AsciiEncoder_127;
    }
  };
  A._UnicodeSubsetEncoder.prototype = {
    convert$1(string) {
      var t1, i, codeUnit,
        $length = A.RangeError_checkValidRange(0, null, string.length) - 0,
        result = new Uint8Array($length);
      for (t1 = ~this._subsetMask, i = 0; i < $length; ++i) {
        codeUnit = string.charCodeAt(i);
        if ((codeUnit & t1) !== 0)
          throw A.wrapException(A.ArgumentError$value(string, "string", "Contains invalid characters."));
        result[i] = codeUnit;
      }
      return result;
    }
  };
  A.AsciiEncoder.prototype = {};
  A.Base64Codec.prototype = {
    get$encoder() {
      return B.C_Base64Encoder;
    },
    normalize$3(source, start, end) {
      var inverseAlphabet, i, sliceStart, buffer, firstPadding, firstPaddingSourceIndex, paddingCount, i0, char, i1, digit1, digit2, char0, value, t1, t2, endLength, $length,
        _s31_ = "Invalid base64 encoding length ";
      end = A.RangeError_checkValidRange(start, end, source.length);
      inverseAlphabet = $.$get$_Base64Decoder__inverseAlphabet();
      for (i = start, sliceStart = i, buffer = null, firstPadding = -1, firstPaddingSourceIndex = -1, paddingCount = 0; i < end; i = i0) {
        i0 = i + 1;
        char = source.charCodeAt(i);
        if (char === 37) {
          i1 = i0 + 2;
          if (i1 <= end) {
            digit1 = A.hexDigitValue(source.charCodeAt(i0));
            digit2 = A.hexDigitValue(source.charCodeAt(i0 + 1));
            char0 = digit1 * 16 + digit2 - (digit2 & 256);
            if (char0 === 37)
              char0 = -1;
            i0 = i1;
          } else
            char0 = -1;
        } else
          char0 = char;
        if (0 <= char0 && char0 <= 127) {
          value = inverseAlphabet[char0];
          if (value >= 0) {
            char0 = string$.ABCDEF.charCodeAt(value);
            if (char0 === char)
              continue;
            char = char0;
          } else {
            if (value === -1) {
              if (firstPadding < 0) {
                t1 = buffer == null ? null : buffer._contents.length;
                if (t1 == null)
                  t1 = 0;
                firstPadding = t1 + (i - sliceStart);
                firstPaddingSourceIndex = i;
              }
              ++paddingCount;
              if (char === 61)
                continue;
            }
            char = char0;
          }
          if (value !== -2) {
            if (buffer == null) {
              buffer = new A.StringBuffer("");
              t1 = buffer;
            } else
              t1 = buffer;
            t1._contents += B.JSString_methods.substring$2(source, sliceStart, i);
            t1._contents += A.Primitives_stringFromCharCode(char);
            sliceStart = i0;
            continue;
          }
        }
        throw A.wrapException(A.FormatException$("Invalid base64 data", source, i));
      }
      if (buffer != null) {
        t1 = buffer._contents += B.JSString_methods.substring$2(source, sliceStart, end);
        t2 = t1.length;
        if (firstPadding >= 0)
          A.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, t2);
        else {
          endLength = B.JSInt_methods.$mod(t2 - 1, 4) + 1;
          if (endLength === 1)
            throw A.wrapException(A.FormatException$(_s31_, source, end));
          for (; endLength < 4;) {
            t1 += "=";
            buffer._contents = t1;
            ++endLength;
          }
        }
        t1 = buffer._contents;
        return B.JSString_methods.replaceRange$3(source, start, end, t1.charCodeAt(0) == 0 ? t1 : t1);
      }
      $length = end - start;
      if (firstPadding >= 0)
        A.Base64Codec__checkPadding(source, firstPaddingSourceIndex, end, firstPadding, paddingCount, $length);
      else {
        endLength = B.JSInt_methods.$mod($length, 4);
        if (endLength === 1)
          throw A.wrapException(A.FormatException$(_s31_, source, end));
        if (endLength > 1)
          source = B.JSString_methods.replaceRange$3(source, end, end, endLength === 2 ? "==" : "=");
      }
      return source;
    }
  };
  A.Base64Encoder.prototype = {
    convert$1(input) {
      var t1 = J.getInterceptor$asx(input);
      if (t1.get$isEmpty(input))
        return "";
      t1 = new A._Base64Encoder(string$.ABCDEF).encode$4(input, 0, t1.get$length(input), true);
      t1.toString;
      return A.String_String$fromCharCodes(t1, 0, null);
    },
    startChunkedConversion$1(sink) {
      return new A._Utf8Base64EncoderSink(new A._Utf8StringSinkAdapter(new A._Utf8Decoder(false), sink, sink._stringSink), new A._Base64Encoder(string$.ABCDEF));
    }
  };
  A._Base64Encoder.prototype = {
    createBuffer$1(bufferLength) {
      return new Uint8Array(bufferLength);
    },
    encode$4(bytes, start, end, isLast) {
      var output, _this = this,
        byteCount = (_this._convert$_state & 3) + (end - start),
        fullChunks = B.JSInt_methods._tdivFast$1(byteCount, 3),
        bufferLength = fullChunks * 4;
      if (isLast && byteCount - fullChunks * 3 > 0)
        bufferLength += 4;
      output = _this.createBuffer$1(bufferLength);
      _this._convert$_state = A._Base64Encoder_encodeChunk(_this._alphabet, bytes, start, end, isLast, output, 0, _this._convert$_state);
      if (bufferLength > 0)
        return output;
      return null;
    }
  };
  A._Base64EncoderSink.prototype = {};
  A._Utf8Base64EncoderSink.prototype = {
    _convert$_add$4(source, start, end, isLast) {
      var buffer = this._encoder.encode$4(source, start, end, isLast);
      if (buffer != null)
        this._sink.addSlice$4(buffer, 0, buffer.length, isLast);
    }
  };
  A.ByteConversionSink.prototype = {};
  A.Codec.prototype = {
    encode$1(input) {
      return this.get$encoder().convert$1(input);
    }
  };
  A.Converter.prototype = {};
  A.Encoding.prototype = {};
  A.JsonUnsupportedObjectError.prototype = {
    toString$0(_) {
      var safeString = A.Error_safeToString(this.unsupportedObject);
      return (this.cause != null ? "Converting object to an encodable object failed:" : "Converting object did not return an encodable object:") + " " + safeString;
    }
  };
  A.JsonCyclicError.prototype = {
    toString$0(_) {
      return "Cyclic error in JSON stringify";
    }
  };
  A.JsonCodec.prototype = {
    encode$2$toEncodable(value, toEncodable) {
      var t1 = A._JsonStringStringifier_stringify(value, this.get$encoder()._toEncodable, null);
      return t1;
    },
    get$encoder() {
      return B.JsonEncoder_null;
    }
  };
  A.JsonEncoder.prototype = {
    convert$1(object) {
      var t1,
        output = new A.StringBuffer(""),
        stringifier = A._JsonStringStringifier$(output, this._toEncodable);
      stringifier.writeObject$1(object);
      t1 = output._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A._JsonStringifier.prototype = {
    writeStringContent$1(s) {
      var offset, i, charCode, t1, t2, _this = this,
        $length = s.length;
      for (offset = 0, i = 0; i < $length; ++i) {
        charCode = s.charCodeAt(i);
        if (charCode > 92) {
          if (charCode >= 55296) {
            t1 = charCode & 64512;
            if (t1 === 55296) {
              t2 = i + 1;
              t2 = !(t2 < $length && (s.charCodeAt(t2) & 64512) === 56320);
            } else
              t2 = false;
            if (!t2)
              if (t1 === 56320) {
                t1 = i - 1;
                t1 = !(t1 >= 0 && (s.charCodeAt(t1) & 64512) === 55296);
              } else
                t1 = false;
            else
              t1 = true;
            if (t1) {
              if (i > offset)
                _this.writeStringSlice$3(s, offset, i);
              offset = i + 1;
              _this.writeCharCode$1(92);
              _this.writeCharCode$1(117);
              _this.writeCharCode$1(100);
              t1 = charCode >>> 8 & 15;
              _this.writeCharCode$1(t1 < 10 ? 48 + t1 : 87 + t1);
              t1 = charCode >>> 4 & 15;
              _this.writeCharCode$1(t1 < 10 ? 48 + t1 : 87 + t1);
              t1 = charCode & 15;
              _this.writeCharCode$1(t1 < 10 ? 48 + t1 : 87 + t1);
            }
          }
          continue;
        }
        if (charCode < 32) {
          if (i > offset)
            _this.writeStringSlice$3(s, offset, i);
          offset = i + 1;
          _this.writeCharCode$1(92);
          switch (charCode) {
            case 8:
              _this.writeCharCode$1(98);
              break;
            case 9:
              _this.writeCharCode$1(116);
              break;
            case 10:
              _this.writeCharCode$1(110);
              break;
            case 12:
              _this.writeCharCode$1(102);
              break;
            case 13:
              _this.writeCharCode$1(114);
              break;
            default:
              _this.writeCharCode$1(117);
              _this.writeCharCode$1(48);
              _this.writeCharCode$1(48);
              t1 = charCode >>> 4 & 15;
              _this.writeCharCode$1(t1 < 10 ? 48 + t1 : 87 + t1);
              t1 = charCode & 15;
              _this.writeCharCode$1(t1 < 10 ? 48 + t1 : 87 + t1);
              break;
          }
        } else if (charCode === 34 || charCode === 92) {
          if (i > offset)
            _this.writeStringSlice$3(s, offset, i);
          offset = i + 1;
          _this.writeCharCode$1(92);
          _this.writeCharCode$1(charCode);
        }
      }
      if (offset === 0)
        _this.writeString$1(s);
      else if (offset < $length)
        _this.writeStringSlice$3(s, offset, $length);
    },
    _checkCycle$1(object) {
      var t1, t2, i, t3;
      for (t1 = this._seen, t2 = t1.length, i = 0; i < t2; ++i) {
        t3 = t1[i];
        if (object == null ? t3 == null : object === t3)
          throw A.wrapException(new A.JsonCyclicError(object, null));
      }
      t1.push(object);
    },
    writeObject$1(object) {
      var customJson, e, t1, exception, _this = this;
      if (_this.writeJsonValue$1(object))
        return;
      _this._checkCycle$1(object);
      try {
        customJson = _this._toEncodable.call$1(object);
        if (!_this.writeJsonValue$1(customJson)) {
          t1 = A.JsonUnsupportedObjectError$(object, null, _this.get$_partialResult());
          throw A.wrapException(t1);
        }
        _this._seen.pop();
      } catch (exception) {
        e = A.unwrapException(exception);
        t1 = A.JsonUnsupportedObjectError$(object, e, _this.get$_partialResult());
        throw A.wrapException(t1);
      }
    },
    writeJsonValue$1(object) {
      var success, _this = this;
      if (typeof object == "number") {
        if (!isFinite(object))
          return false;
        _this.writeNumber$1(object);
        return true;
      } else if (object === true) {
        _this.writeString$1("true");
        return true;
      } else if (object === false) {
        _this.writeString$1("false");
        return true;
      } else if (object == null) {
        _this.writeString$1("null");
        return true;
      } else if (typeof object == "string") {
        _this.writeString$1('"');
        _this.writeStringContent$1(object);
        _this.writeString$1('"');
        return true;
      } else if (type$.List_dynamic._is(object)) {
        _this._checkCycle$1(object);
        _this.writeList$1(object);
        _this._seen.pop();
        return true;
      } else if (type$.Map_dynamic_dynamic._is(object)) {
        _this._checkCycle$1(object);
        success = _this.writeMap$1(object);
        _this._seen.pop();
        return success;
      } else
        return false;
    },
    writeList$1(list) {
      var t1, i, _this = this;
      _this.writeString$1("[");
      t1 = J.getInterceptor$asx(list);
      if (t1.get$isNotEmpty(list)) {
        _this.writeObject$1(t1.$index(list, 0));
        for (i = 1; i < t1.get$length(list); ++i) {
          _this.writeString$1(",");
          _this.writeObject$1(t1.$index(list, i));
        }
      }
      _this.writeString$1("]");
    },
    writeMap$1(map) {
      var t1, keyValueList, i, separator, _this = this, _box_0 = {};
      if (map.get$isEmpty(map)) {
        _this.writeString$1("{}");
        return true;
      }
      t1 = map.get$length(map) * 2;
      keyValueList = A.List_List$filled(t1, null, false, type$.nullable_Object);
      i = _box_0.i = 0;
      _box_0.allStringKeys = true;
      map.forEach$1(0, new A._JsonStringifier_writeMap_closure(_box_0, keyValueList));
      if (!_box_0.allStringKeys)
        return false;
      _this.writeString$1("{");
      for (separator = '"'; i < t1; i += 2, separator = ',"') {
        _this.writeString$1(separator);
        _this.writeStringContent$1(A._asString(keyValueList[i]));
        _this.writeString$1('":');
        _this.writeObject$1(keyValueList[i + 1]);
      }
      _this.writeString$1("}");
      return true;
    }
  };
  A._JsonStringifier_writeMap_closure.prototype = {
    call$2(key, value) {
      var t1, t2, t3, i;
      if (typeof key != "string")
        this._box_0.allStringKeys = false;
      t1 = this.keyValueList;
      t2 = this._box_0;
      t3 = t2.i;
      i = t2.i = t3 + 1;
      t1[t3] = key;
      t2.i = i + 1;
      t1[i] = value;
    },
    $signature: 291
  };
  A._JsonStringStringifier.prototype = {
    get$_partialResult() {
      var t1 = this._sink._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    writeNumber$1(number) {
      this._sink._contents += B.JSNumber_methods.toString$0(number);
    },
    writeString$1(string) {
      this._sink._contents += string;
    },
    writeStringSlice$3(string, start, end) {
      this._sink._contents += B.JSString_methods.substring$2(string, start, end);
    },
    writeCharCode$1(charCode) {
      this._sink._contents += A.Primitives_stringFromCharCode(charCode);
    }
  };
  A.StringConversionSink.prototype = {};
  A._StringSinkConversionSink.prototype = {
    close$0(_) {
    }
  };
  A._StringCallbackSink.prototype = {
    close$0(_) {
      var t1 = this._stringSink,
        t2 = t1._contents;
      t1._contents = "";
      this._convert$_callback.call$1(t2.charCodeAt(0) == 0 ? t2 : t2);
    },
    asUtf8Sink$1(allowMalformed) {
      return new A._Utf8StringSinkAdapter(new A._Utf8Decoder(allowMalformed), this, this._stringSink);
    }
  };
  A._Utf8StringSinkAdapter.prototype = {
    close$0(_) {
      this._decoder.flush$1(this._stringSink);
      this._sink.close$0(0);
    },
    add$1(_, chunk) {
      this.addSlice$4(chunk, 0, J.get$length$asx(chunk), false);
    },
    addSlice$4(codeUnits, startIndex, endIndex, isLast) {
      this._stringSink._contents += this._decoder.convertGeneral$4(codeUnits, startIndex, endIndex, false);
      if (isLast)
        this.close$0(0);
    }
  };
  A.Utf8Codec.prototype = {
    get$encoder() {
      return B.C_Utf8Encoder;
    }
  };
  A.Utf8Encoder.prototype = {
    convert$1(string) {
      var t1, encoder,
        end = A.RangeError_checkValidRange(0, null, string.length),
        $length = end - 0;
      if ($length === 0)
        return new Uint8Array(0);
      t1 = new Uint8Array($length * 3);
      encoder = new A._Utf8Encoder(t1);
      if (encoder._fillBuffer$3(string, 0, end) !== end)
        encoder._writeReplacementCharacter$0();
      return B.NativeUint8List_methods.sublist$2(t1, 0, encoder._bufferIndex);
    }
  };
  A._Utf8Encoder.prototype = {
    _writeReplacementCharacter$0() {
      var _this = this,
        t1 = _this._buffer,
        t2 = _this._bufferIndex,
        t3 = _this._bufferIndex = t2 + 1;
      t1[t2] = 239;
      t2 = _this._bufferIndex = t3 + 1;
      t1[t3] = 191;
      _this._bufferIndex = t2 + 1;
      t1[t2] = 189;
    },
    _writeSurrogate$2(leadingSurrogate, nextCodeUnit) {
      var rune, t1, t2, t3, _this = this;
      if ((nextCodeUnit & 64512) === 56320) {
        rune = 65536 + ((leadingSurrogate & 1023) << 10) | nextCodeUnit & 1023;
        t1 = _this._buffer;
        t2 = _this._bufferIndex;
        t3 = _this._bufferIndex = t2 + 1;
        t1[t2] = rune >>> 18 | 240;
        t2 = _this._bufferIndex = t3 + 1;
        t1[t3] = rune >>> 12 & 63 | 128;
        t3 = _this._bufferIndex = t2 + 1;
        t1[t2] = rune >>> 6 & 63 | 128;
        _this._bufferIndex = t3 + 1;
        t1[t3] = rune & 63 | 128;
        return true;
      } else {
        _this._writeReplacementCharacter$0();
        return false;
      }
    },
    _fillBuffer$3(str, start, end) {
      var t1, t2, stringIndex, codeUnit, t3, stringIndex0, t4, _this = this;
      if (start !== end && (str.charCodeAt(end - 1) & 64512) === 55296)
        --end;
      for (t1 = _this._buffer, t2 = t1.length, stringIndex = start; stringIndex < end; ++stringIndex) {
        codeUnit = str.charCodeAt(stringIndex);
        if (codeUnit <= 127) {
          t3 = _this._bufferIndex;
          if (t3 >= t2)
            break;
          _this._bufferIndex = t3 + 1;
          t1[t3] = codeUnit;
        } else {
          t3 = codeUnit & 64512;
          if (t3 === 55296) {
            if (_this._bufferIndex + 4 > t2)
              break;
            stringIndex0 = stringIndex + 1;
            if (_this._writeSurrogate$2(codeUnit, str.charCodeAt(stringIndex0)))
              stringIndex = stringIndex0;
          } else if (t3 === 56320) {
            if (_this._bufferIndex + 3 > t2)
              break;
            _this._writeReplacementCharacter$0();
          } else if (codeUnit <= 2047) {
            t3 = _this._bufferIndex;
            t4 = t3 + 1;
            if (t4 >= t2)
              break;
            _this._bufferIndex = t4;
            t1[t3] = codeUnit >>> 6 | 192;
            _this._bufferIndex = t4 + 1;
            t1[t4] = codeUnit & 63 | 128;
          } else {
            t3 = _this._bufferIndex;
            if (t3 + 2 >= t2)
              break;
            t4 = _this._bufferIndex = t3 + 1;
            t1[t3] = codeUnit >>> 12 | 224;
            t3 = _this._bufferIndex = t4 + 1;
            t1[t4] = codeUnit >>> 6 & 63 | 128;
            _this._bufferIndex = t3 + 1;
            t1[t3] = codeUnit & 63 | 128;
          }
        }
      }
      return stringIndex;
    }
  };
  A.Utf8Decoder.prototype = {
    convert$1(codeUnits) {
      var t1 = this._allowMalformed,
        result = A.Utf8Decoder__convertIntercepted(t1, codeUnits, 0, null);
      if (result != null)
        return result;
      return new A._Utf8Decoder(t1).convertGeneral$4(codeUnits, 0, null, true);
    }
  };
  A._Utf8Decoder.prototype = {
    convertGeneral$4(codeUnits, start, maybeEnd, single) {
      var bytes, errorOffset, result, t1, message, _this = this,
        end = A.RangeError_checkValidRange(start, maybeEnd, J.get$length$asx(codeUnits));
      if (start === end)
        return "";
      if (type$.Uint8List._is(codeUnits)) {
        bytes = codeUnits;
        errorOffset = 0;
      } else {
        bytes = A._Utf8Decoder__makeUint8List(codeUnits, start, end);
        end -= start;
        errorOffset = start;
        start = 0;
      }
      result = _this._convertRecursive$4(bytes, start, end, single);
      t1 = _this._convert$_state;
      if ((t1 & 1) !== 0) {
        message = A._Utf8Decoder_errorDescription(t1);
        _this._convert$_state = 0;
        throw A.wrapException(A.FormatException$(message, codeUnits, errorOffset + _this._charOrIndex));
      }
      return result;
    },
    _convertRecursive$4(bytes, start, end, single) {
      var mid, s1, _this = this;
      if (end - start > 1000) {
        mid = B.JSInt_methods._tdivFast$1(start + end, 2);
        s1 = _this._convertRecursive$4(bytes, start, mid, false);
        if ((_this._convert$_state & 1) !== 0)
          return s1;
        return s1 + _this._convertRecursive$4(bytes, mid, end, single);
      }
      return _this.decodeGeneral$4(bytes, start, end, single);
    },
    flush$1(sink) {
      var state = this._convert$_state;
      this._convert$_state = 0;
      if (state <= 32)
        return;
      if (this.allowMalformed)
        sink._contents += A.Primitives_stringFromCharCode(65533);
      else
        throw A.wrapException(A.FormatException$(A._Utf8Decoder_errorDescription(77), null, null));
    },
    decodeGeneral$4(bytes, start, end, single) {
      var t1, type, t2, i0, markEnd, i1, m, _this = this, _65533 = 65533,
        state = _this._convert$_state,
        char = _this._charOrIndex,
        buffer = new A.StringBuffer(""),
        i = start + 1,
        byte = bytes[start];
      $label0$0:
        for (t1 = _this.allowMalformed; true;) {
          for (; true; i = i0) {
            type = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE".charCodeAt(byte) & 31;
            char = state <= 32 ? byte & 61694 >>> type : (byte & 63 | char << 6) >>> 0;
            state = " \x000:XECCCCCN:lDb \x000:XECCCCCNvlDb \x000:XECCCCCN:lDb AAAAA\x00\x00\x00\x00\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\x800AAAAA\x00\x00\x00\x00 AAAAA".charCodeAt(state + type);
            if (state === 0) {
              buffer._contents += A.Primitives_stringFromCharCode(char);
              if (i === end)
                break $label0$0;
              break;
            } else if ((state & 1) !== 0) {
              if (t1)
                switch (state) {
                  case 69:
                  case 67:
                    buffer._contents += A.Primitives_stringFromCharCode(_65533);
                    break;
                  case 65:
                    buffer._contents += A.Primitives_stringFromCharCode(_65533);
                    --i;
                    break;
                  default:
                    t2 = buffer._contents += A.Primitives_stringFromCharCode(_65533);
                    buffer._contents = t2 + A.Primitives_stringFromCharCode(_65533);
                    break;
                }
              else {
                _this._convert$_state = state;
                _this._charOrIndex = i - 1;
                return "";
              }
              state = 0;
            }
            if (i === end)
              break $label0$0;
            i0 = i + 1;
            byte = bytes[i];
          }
          i0 = i + 1;
          byte = bytes[i];
          if (byte < 128) {
            while (true) {
              if (!(i0 < end)) {
                markEnd = end;
                break;
              }
              i1 = i0 + 1;
              byte = bytes[i0];
              if (byte >= 128) {
                markEnd = i1 - 1;
                i0 = i1;
                break;
              }
              i0 = i1;
            }
            if (markEnd - i < 20)
              for (m = i; m < markEnd; ++m)
                buffer._contents += A.Primitives_stringFromCharCode(bytes[m]);
            else
              buffer._contents += A.String_String$fromCharCodes(bytes, i, markEnd);
            if (markEnd === end)
              break $label0$0;
            i = i0;
          } else
            i = i0;
        }
      if (single && state > 32)
        if (t1)
          buffer._contents += A.Primitives_stringFromCharCode(_65533);
        else {
          _this._convert$_state = 77;
          _this._charOrIndex = end;
          return "";
        }
      _this._convert$_state = state;
      _this._charOrIndex = char;
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A.NoSuchMethodError_toString_closure.prototype = {
    call$2(key, value) {
      var t1 = this.sb,
        t2 = this._box_0,
        t3 = t1._contents += t2.comma;
      t3 += key.__internal$_name;
      t1._contents = t3;
      t1._contents = t3 + ": ";
      t1._contents += A.Error_safeToString(value);
      t2.comma = ", ";
    },
    $signature: 547
  };
  A.DateTime.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.DateTime && this._core$_value === other._core$_value && true;
    },
    compareTo$1(_, other) {
      return B.JSInt_methods.compareTo$1(this._core$_value, other._core$_value);
    },
    get$hashCode(_) {
      var t1 = this._core$_value;
      return (t1 ^ B.JSInt_methods._shrOtherPositive$1(t1, 30)) & 1073741823;
    },
    toString$0(_) {
      var _this = this,
        y = A.DateTime__fourDigits(A.Primitives_getYear(_this)),
        m = A.DateTime__twoDigits(A.Primitives_getMonth(_this)),
        d = A.DateTime__twoDigits(A.Primitives_getDay(_this)),
        h = A.DateTime__twoDigits(A.Primitives_getHours(_this)),
        min = A.DateTime__twoDigits(A.Primitives_getMinutes(_this)),
        sec = A.DateTime__twoDigits(A.Primitives_getSeconds(_this)),
        ms = A.DateTime__threeDigits(A.Primitives_getMilliseconds(_this));
      return y + "-" + m + "-" + d + " " + h + ":" + min + ":" + sec + "." + ms;
    },
    $isComparable: 1
  };
  A.Duration.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.Duration && this._duration === other._duration;
    },
    get$hashCode(_) {
      return B.JSInt_methods.get$hashCode(this._duration);
    },
    compareTo$1(_, other) {
      return B.JSInt_methods.compareTo$1(this._duration, other._duration);
    },
    toString$0(_) {
      var sign, minutes, minutesPadding, seconds, secondsPadding,
        microseconds = this._duration,
        hours = B.JSInt_methods._tdivFast$1(microseconds, 3600000000),
        microseconds0 = microseconds % 3600000000;
      if (microseconds < 0) {
        hours = 0 - hours;
        microseconds = 0 - microseconds0;
        sign = "-";
      } else {
        microseconds = microseconds0;
        sign = "";
      }
      minutes = B.JSInt_methods._tdivFast$1(microseconds, 60000000);
      microseconds %= 60000000;
      minutesPadding = minutes < 10 ? "0" : "";
      seconds = B.JSInt_methods._tdivFast$1(microseconds, 1000000);
      secondsPadding = seconds < 10 ? "0" : "";
      return sign + hours + ":" + minutesPadding + minutes + ":" + secondsPadding + seconds + "." + B.JSString_methods.padLeft$2(B.JSInt_methods.toString$0(microseconds % 1000000), 6, "0");
    },
    $isComparable: 1
  };
  A._Enum.prototype = {
    toString$0(_) {
      return this._enumToString$0();
    }
  };
  A.Error.prototype = {
    get$stackTrace() {
      return A.getTraceFromException(this.$thrownJsError);
    }
  };
  A.AssertionError.prototype = {
    toString$0(_) {
      var t1 = this.message;
      if (t1 != null)
        return "Assertion failed: " + A.Error_safeToString(t1);
      return "Assertion failed";
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A.TypeError.prototype = {};
  A.ArgumentError.prototype = {
    get$_errorName() {
      return "Invalid argument" + (!this._hasValue ? "(s)" : "");
    },
    get$_errorExplanation() {
      return "";
    },
    toString$0(_) {
      var _this = this,
        $name = _this.name,
        nameString = $name == null ? "" : " (" + $name + ")",
        message = _this.message,
        messageString = message == null ? "" : ": " + A.S(message),
        prefix = _this.get$_errorName() + nameString + messageString;
      if (!_this._hasValue)
        return prefix;
      return prefix + _this.get$_errorExplanation() + ": " + A.Error_safeToString(_this.get$invalidValue());
    },
    get$invalidValue() {
      return this.invalidValue;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A.RangeError.prototype = {
    get$invalidValue() {
      return this.invalidValue;
    },
    get$_errorName() {
      return "RangeError";
    },
    get$_errorExplanation() {
      var explanation,
        start = this.start,
        end = this.end;
      if (start == null)
        explanation = end != null ? ": Not less than or equal to " + A.S(end) : "";
      else if (end == null)
        explanation = ": Not greater than or equal to " + A.S(start);
      else if (end > start)
        explanation = ": Not in inclusive range " + A.S(start) + ".." + A.S(end);
      else
        explanation = end < start ? ": Valid value range is empty" : ": Only valid value is " + A.S(start);
      return explanation;
    }
  };
  A.IndexError.prototype = {
    get$invalidValue() {
      return this.invalidValue;
    },
    get$_errorName() {
      return "RangeError";
    },
    get$_errorExplanation() {
      if (this.invalidValue < 0)
        return ": index must not be negative";
      var t1 = this.length;
      if (t1 === 0)
        return ": no indices are valid";
      return ": index should be less than " + t1;
    },
    $isRangeError: 1,
    get$length(receiver) {
      return this.length;
    }
  };
  A.NoSuchMethodError.prototype = {
    toString$0(_) {
      var $arguments, t1, _i, t2, t3, argument, receiverText, actualParameters, _this = this, _box_0 = {},
        sb = new A.StringBuffer("");
      _box_0.comma = "";
      $arguments = _this._core$_arguments;
      for (t1 = $arguments.length, _i = 0, t2 = "", t3 = ""; _i < t1; ++_i, t3 = ", ") {
        argument = $arguments[_i];
        sb._contents = t2 + t3;
        t2 = sb._contents += A.Error_safeToString(argument);
        _box_0.comma = ", ";
      }
      _this._namedArguments.forEach$1(0, new A.NoSuchMethodError_toString_closure(_box_0, sb));
      receiverText = A.Error_safeToString(_this._core$_receiver);
      actualParameters = sb.toString$0(0);
      return "NoSuchMethodError: method not found: '" + _this._memberName.__internal$_name + "'\nReceiver: " + receiverText + "\nArguments: [" + actualParameters + "]";
    }
  };
  A.UnsupportedError.prototype = {
    toString$0(_) {
      return "Unsupported operation: " + this.message;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A.UnimplementedError.prototype = {
    toString$0(_) {
      return "UnimplementedError: " + this.message;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A.StateError.prototype = {
    toString$0(_) {
      return "Bad state: " + this.message;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A.ConcurrentModificationError.prototype = {
    toString$0(_) {
      var t1 = this.modifiedObject;
      if (t1 == null)
        return "Concurrent modification during iteration.";
      return "Concurrent modification during iteration: " + A.Error_safeToString(t1) + ".";
    }
  };
  A.OutOfMemoryError.prototype = {
    toString$0(_) {
      return "Out of Memory";
    },
    get$stackTrace() {
      return null;
    },
    $isError: 1
  };
  A.StackOverflowError.prototype = {
    toString$0(_) {
      return "Stack Overflow";
    },
    get$stackTrace() {
      return null;
    },
    $isError: 1
  };
  A._Exception.prototype = {
    toString$0(_) {
      return "Exception: " + this.message;
    },
    $isException: 1,
    get$message(receiver) {
      return this.message;
    }
  };
  A.FormatException.prototype = {
    toString$0(_) {
      var t1, lineNum, lineStart, previousCharWasCR, i, char, lineEnd, end, start, prefix, postfix,
        message = this.message,
        report = "" !== message ? "FormatException: " + message : "FormatException",
        offset = this.offset,
        source = this.source;
      if (typeof source == "string") {
        if (offset != null)
          t1 = offset < 0 || offset > source.length;
        else
          t1 = false;
        if (t1)
          offset = null;
        if (offset == null) {
          if (source.length > 78)
            source = B.JSString_methods.substring$2(source, 0, 75) + "...";
          return report + "\n" + source;
        }
        for (lineNum = 1, lineStart = 0, previousCharWasCR = false, i = 0; i < offset; ++i) {
          char = source.charCodeAt(i);
          if (char === 10) {
            if (lineStart !== i || !previousCharWasCR)
              ++lineNum;
            lineStart = i + 1;
            previousCharWasCR = false;
          } else if (char === 13) {
            ++lineNum;
            lineStart = i + 1;
            previousCharWasCR = true;
          }
        }
        report = lineNum > 1 ? report + (" (at line " + lineNum + ", character " + (offset - lineStart + 1) + ")\n") : report + (" (at character " + (offset + 1) + ")\n");
        lineEnd = source.length;
        for (i = offset; i < lineEnd; ++i) {
          char = source.charCodeAt(i);
          if (char === 10 || char === 13) {
            lineEnd = i;
            break;
          }
        }
        if (lineEnd - lineStart > 78)
          if (offset - lineStart < 75) {
            end = lineStart + 75;
            start = lineStart;
            prefix = "";
            postfix = "...";
          } else {
            if (lineEnd - offset < 75) {
              start = lineEnd - 75;
              end = lineEnd;
              postfix = "";
            } else {
              start = offset - 36;
              end = offset + 36;
              postfix = "...";
            }
            prefix = "...";
          }
        else {
          end = lineEnd;
          start = lineStart;
          prefix = "";
          postfix = "";
        }
        return report + prefix + B.JSString_methods.substring$2(source, start, end) + postfix + "\n" + B.JSString_methods.$mul(" ", offset - start + prefix.length) + "^\n";
      } else
        return offset != null ? report + (" (at offset " + A.S(offset) + ")") : report;
    },
    $isException: 1,
    get$message(receiver) {
      return this.message;
    }
  };
  A.Iterable.prototype = {
    cast$1$0(_, $R) {
      return A.CastIterable_CastIterable(this, A._instanceType(this)._eval$1("Iterable.E"), $R);
    },
    followedBy$1(_, other) {
      var _this = this,
        t1 = A._instanceType(_this);
      if (t1._eval$1("EfficientLengthIterable<Iterable.E>")._is(_this))
        return A.FollowedByIterable_FollowedByIterable$firstEfficient(_this, other, t1._eval$1("Iterable.E"));
      return new A.FollowedByIterable(_this, other, t1._eval$1("FollowedByIterable<Iterable.E>"));
    },
    map$1$1(_, toElement, $T) {
      return A.MappedIterable_MappedIterable(this, toElement, A._instanceType(this)._eval$1("Iterable.E"), $T);
    },
    where$1(_, test) {
      return new A.WhereIterable(this, test, A._instanceType(this)._eval$1("WhereIterable<Iterable.E>"));
    },
    expand$1$1(_, toElements, $T) {
      return new A.ExpandIterable(this, toElements, A._instanceType(this)._eval$1("@<Iterable.E>")._bind$1($T)._eval$1("ExpandIterable<1,2>"));
    },
    contains$1(_, element) {
      var t1;
      for (t1 = this.get$iterator(this); t1.moveNext$0();)
        if (J.$eq$(t1.get$current(t1), element))
          return true;
      return false;
    },
    forEach$1(_, action) {
      var t1;
      for (t1 = this.get$iterator(this); t1.moveNext$0();)
        action.call$1(t1.get$current(t1));
    },
    fold$1$2(_, initialValue, combine) {
      var t1, value;
      for (t1 = this.get$iterator(this), value = initialValue; t1.moveNext$0();)
        value = combine.call$2(value, t1.get$current(t1));
      return value;
    },
    fold$2($receiver, initialValue, combine) {
      return this.fold$1$2($receiver, initialValue, combine, type$.dynamic);
    },
    join$1(_, separator) {
      var first, t1,
        iterator = this.get$iterator(this);
      if (!iterator.moveNext$0())
        return "";
      first = J.toString$0$(iterator.get$current(iterator));
      if (!iterator.moveNext$0())
        return first;
      if (separator.length === 0) {
        t1 = first;
        do
          t1 += A.S(J.toString$0$(iterator.get$current(iterator)));
        while (iterator.moveNext$0());
      } else {
        t1 = first;
        do
          t1 = t1 + separator + A.S(J.toString$0$(iterator.get$current(iterator)));
        while (iterator.moveNext$0());
      }
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    any$1(_, test) {
      var t1;
      for (t1 = this.get$iterator(this); t1.moveNext$0();)
        if (test.call$1(t1.get$current(t1)))
          return true;
      return false;
    },
    toList$1$growable(_, growable) {
      return A.List_List$of(this, growable, A._instanceType(this)._eval$1("Iterable.E"));
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    toSet$0(_) {
      return A.LinkedHashSet_LinkedHashSet$of(this, A._instanceType(this)._eval$1("Iterable.E"));
    },
    get$length(_) {
      var count,
        it = this.get$iterator(this);
      for (count = 0; it.moveNext$0();)
        ++count;
      return count;
    },
    get$isEmpty(_) {
      return !this.get$iterator(this).moveNext$0();
    },
    get$isNotEmpty(_) {
      return !this.get$isEmpty(this);
    },
    take$1(_, count) {
      return A.TakeIterable_TakeIterable(this, count, A._instanceType(this)._eval$1("Iterable.E"));
    },
    skip$1(_, count) {
      return A.SkipIterable_SkipIterable(this, count, A._instanceType(this)._eval$1("Iterable.E"));
    },
    skipWhile$1(_, test) {
      return new A.SkipWhileIterable(this, test, A._instanceType(this)._eval$1("SkipWhileIterable<Iterable.E>"));
    },
    get$first(_) {
      var it = this.get$iterator(this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      return it.get$current(it);
    },
    get$last(_) {
      var result,
        it = this.get$iterator(this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      do
        result = it.get$current(it);
      while (it.moveNext$0());
      return result;
    },
    get$single(_) {
      var result,
        it = this.get$iterator(this);
      if (!it.moveNext$0())
        throw A.wrapException(A.IterableElementError_noElement());
      result = it.get$current(it);
      if (it.moveNext$0())
        throw A.wrapException(A.IterableElementError_tooMany());
      return result;
    },
    elementAt$1(_, index) {
      var iterator, skipCount;
      A.RangeError_checkNotNegative(index, "index");
      iterator = this.get$iterator(this);
      for (skipCount = index; iterator.moveNext$0();) {
        if (skipCount === 0)
          return iterator.get$current(iterator);
        --skipCount;
      }
      throw A.wrapException(A.IndexError$withLength(index, index - skipCount, this, null, "index"));
    },
    toString$0(_) {
      return A.Iterable_iterableToShortString(this, "(", ")");
    }
  };
  A._GeneratorIterable.prototype = {
    elementAt$1(_, index) {
      A.IndexError_check(index, this.length, this, null, null);
      return this._generator.call$1(index);
    },
    get$length(receiver) {
      return this.length;
    }
  };
  A.MapEntry.prototype = {
    toString$0(_) {
      return "MapEntry(" + A.S(this.key) + ": " + A.S(this.value) + ")";
    }
  };
  A.Null.prototype = {
    get$hashCode(_) {
      return A.Object.prototype.get$hashCode.call(this, this);
    },
    toString$0(_) {
      return "null";
    }
  };
  A.Object.prototype = {$isObject: 1,
    $eq(_, other) {
      return this === other;
    },
    get$hashCode(_) {
      return A.Primitives_objectHashCode(this);
    },
    toString$0(_) {
      return "Instance of '" + A.Primitives_objectTypeName(this) + "'";
    },
    noSuchMethod$1(_, invocation) {
      throw A.wrapException(A.NoSuchMethodError_NoSuchMethodError$withInvocation(this, invocation));
    },
    get$runtimeType(_) {
      return A.getRuntimeTypeOfDartObject(this);
    },
    toString() {
      return this.toString$0(this);
    }
  };
  A._StringStackTrace.prototype = {
    toString$0(_) {
      return this._stackTrace;
    },
    $isStackTrace: 1
  };
  A.Runes.prototype = {
    get$iterator(_) {
      return new A.RuneIterator(this.string);
    },
    get$last(_) {
      var code, previousCode,
        t1 = this.string,
        t2 = t1.length;
      if (t2 === 0)
        throw A.wrapException(A.StateError$("No elements."));
      code = t1.charCodeAt(t2 - 1);
      if ((code & 64512) === 56320 && t2 > 1) {
        previousCode = t1.charCodeAt(t2 - 2);
        if ((previousCode & 64512) === 55296)
          return A._combineSurrogatePair(previousCode, code);
      }
      return code;
    }
  };
  A.RuneIterator.prototype = {
    get$current(_) {
      return this._currentCodePoint;
    },
    moveNext$0() {
      var codeUnit, nextPosition, nextCodeUnit, _this = this,
        t1 = _this._position = _this._nextPosition,
        t2 = _this.string,
        t3 = t2.length;
      if (t1 === t3) {
        _this._currentCodePoint = -1;
        return false;
      }
      codeUnit = t2.charCodeAt(t1);
      nextPosition = t1 + 1;
      if ((codeUnit & 64512) === 55296 && nextPosition < t3) {
        nextCodeUnit = t2.charCodeAt(nextPosition);
        if ((nextCodeUnit & 64512) === 56320) {
          _this._nextPosition = nextPosition + 1;
          _this._currentCodePoint = A._combineSurrogatePair(codeUnit, nextCodeUnit);
          return true;
        }
      }
      _this._nextPosition = nextPosition;
      _this._currentCodePoint = codeUnit;
      return true;
    }
  };
  A.StringBuffer.prototype = {
    get$length(_) {
      return this._contents.length;
    },
    write$1(_, obj) {
      this._contents += A.S(obj);
    },
    writeCharCode$1(charCode) {
      this._contents += A.Primitives_stringFromCharCode(charCode);
    },
    toString$0(_) {
      var t1 = this._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A.Uri__parseIPv4Address_error.prototype = {
    call$2(msg, position) {
      throw A.wrapException(A.FormatException$("Illegal IPv4 address, " + msg, this.host, position));
    },
    $signature: 311
  };
  A.Uri_parseIPv6Address_error.prototype = {
    call$2(msg, position) {
      throw A.wrapException(A.FormatException$("Illegal IPv6 address, " + msg, this.host, position));
    },
    $signature: 313
  };
  A.Uri_parseIPv6Address_parseHex.prototype = {
    call$2(start, end) {
      var value;
      if (end - start > 4)
        this.error.call$2("an IPv6 part can only contain a maximum of 4 hex digits", start);
      value = A.int_parse(B.JSString_methods.substring$2(this.host, start, end), 16);
      if (value < 0 || value > 65535)
        this.error.call$2("each part must be in the range of `0x0..0xFFFF`", start);
      return value;
    },
    $signature: 314
  };
  A._Uri.prototype = {
    get$_text() {
      var t1, t2, t3, t4, _this = this,
        value = _this.___Uri__text_FI;
      if (value === $) {
        t1 = _this.scheme;
        t2 = t1.length !== 0 ? "" + t1 + ":" : "";
        t3 = _this._host;
        t4 = t3 == null;
        if (!t4 || t1 === "file") {
          t1 = t2 + "//";
          t2 = _this._userInfo;
          if (t2.length !== 0)
            t1 = t1 + t2 + "@";
          if (!t4)
            t1 += t3;
          t2 = _this._port;
          if (t2 != null)
            t1 = t1 + ":" + A.S(t2);
        } else
          t1 = t2;
        t1 += _this.path;
        t2 = _this._query;
        if (t2 != null)
          t1 = t1 + "?" + t2;
        t2 = _this._fragment;
        if (t2 != null)
          t1 = t1 + "#" + t2;
        value !== $ && A.throwUnnamedLateFieldADI();
        value = _this.___Uri__text_FI = t1.charCodeAt(0) == 0 ? t1 : t1;
      }
      return value;
    },
    get$pathSegments() {
      var pathToSplit, result, _this = this,
        value = _this.___Uri_pathSegments_FI;
      if (value === $) {
        pathToSplit = _this.path;
        if (pathToSplit.length !== 0 && pathToSplit.charCodeAt(0) === 47)
          pathToSplit = B.JSString_methods.substring$1(pathToSplit, 1);
        result = pathToSplit.length === 0 ? B.List_empty : A.List_List$unmodifiable(new A.MappedListIterable(A._setArrayType(pathToSplit.split("/"), type$.JSArray_String), A.core_Uri_decodeComponent$closure(), type$.MappedListIterable_String_dynamic), type$.String);
        _this.___Uri_pathSegments_FI !== $ && A.throwUnnamedLateFieldADI();
        value = _this.___Uri_pathSegments_FI = result;
      }
      return value;
    },
    get$hashCode(_) {
      var result, _this = this,
        value = _this.___Uri_hashCode_FI;
      if (value === $) {
        result = B.JSString_methods.get$hashCode(_this.get$_text());
        _this.___Uri_hashCode_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.___Uri_hashCode_FI = result;
        value = result;
      }
      return value;
    },
    get$userInfo() {
      return this._userInfo;
    },
    get$host() {
      var host = this._host;
      if (host == null)
        return "";
      if (B.JSString_methods.startsWith$1(host, "["))
        return B.JSString_methods.substring$2(host, 1, host.length - 1);
      return host;
    },
    get$port(_) {
      var t1 = this._port;
      return t1 == null ? A._Uri__defaultPort(this.scheme) : t1;
    },
    get$query() {
      var t1 = this._query;
      return t1 == null ? "" : t1;
    },
    get$fragment() {
      var t1 = this._fragment;
      return t1 == null ? "" : t1;
    },
    isScheme$1(scheme) {
      var thisScheme = this.scheme;
      if (scheme.length !== thisScheme.length)
        return false;
      return A._caseInsensitiveCompareStart(scheme, thisScheme, 0) >= 0;
    },
    _mergePaths$2(base, reference) {
      var backCount, refStart, baseEnd, newEnd, delta, t1;
      for (backCount = 0, refStart = 0; B.JSString_methods.startsWith$2(reference, "../", refStart);) {
        refStart += 3;
        ++backCount;
      }
      baseEnd = B.JSString_methods.lastIndexOf$1(base, "/");
      while (true) {
        if (!(baseEnd > 0 && backCount > 0))
          break;
        newEnd = B.JSString_methods.lastIndexOf$2(base, "/", baseEnd - 1);
        if (newEnd < 0)
          break;
        delta = baseEnd - newEnd;
        t1 = delta !== 2;
        if (!t1 || delta === 3)
          if (base.charCodeAt(newEnd + 1) === 46)
            t1 = !t1 || base.charCodeAt(newEnd + 2) === 46;
          else
            t1 = false;
        else
          t1 = false;
        if (t1)
          break;
        --backCount;
        baseEnd = newEnd;
      }
      return B.JSString_methods.replaceRange$3(base, baseEnd + 1, null, B.JSString_methods.substring$1(reference, refStart - 3 * backCount));
    },
    resolve$1(reference) {
      return this.resolveUri$1(A.Uri_parse(reference));
    },
    resolveUri$1(reference) {
      var targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, packageNameEnd, packageName, mergedPath, t1, _this = this, _null = null;
      if (reference.get$scheme().length !== 0) {
        targetScheme = reference.get$scheme();
        if (reference.get$hasAuthority()) {
          targetUserInfo = reference.get$userInfo();
          targetHost = reference.get$host();
          targetPort = reference.get$hasPort() ? reference.get$port(reference) : _null;
        } else {
          targetPort = _null;
          targetHost = targetPort;
          targetUserInfo = "";
        }
        targetPath = A._Uri__removeDotSegments(reference.get$path(reference));
        targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
      } else {
        targetScheme = _this.scheme;
        if (reference.get$hasAuthority()) {
          targetUserInfo = reference.get$userInfo();
          targetHost = reference.get$host();
          targetPort = A._Uri__makePort(reference.get$hasPort() ? reference.get$port(reference) : _null, targetScheme);
          targetPath = A._Uri__removeDotSegments(reference.get$path(reference));
          targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
        } else {
          targetUserInfo = _this._userInfo;
          targetHost = _this._host;
          targetPort = _this._port;
          targetPath = _this.path;
          if (reference.get$path(reference) === "")
            targetQuery = reference.get$hasQuery() ? reference.get$query() : _this._query;
          else {
            packageNameEnd = A._Uri__packageNameEnd(_this, targetPath);
            if (packageNameEnd > 0) {
              packageName = B.JSString_methods.substring$2(targetPath, 0, packageNameEnd);
              targetPath = reference.get$hasAbsolutePath() ? packageName + A._Uri__removeDotSegments(reference.get$path(reference)) : packageName + A._Uri__removeDotSegments(_this._mergePaths$2(B.JSString_methods.substring$1(targetPath, packageName.length), reference.get$path(reference)));
            } else if (reference.get$hasAbsolutePath())
              targetPath = A._Uri__removeDotSegments(reference.get$path(reference));
            else if (targetPath.length === 0)
              if (targetHost == null)
                targetPath = targetScheme.length === 0 ? reference.get$path(reference) : A._Uri__removeDotSegments(reference.get$path(reference));
              else
                targetPath = A._Uri__removeDotSegments("/" + reference.get$path(reference));
            else {
              mergedPath = _this._mergePaths$2(targetPath, reference.get$path(reference));
              t1 = targetScheme.length === 0;
              if (!t1 || targetHost != null || B.JSString_methods.startsWith$1(targetPath, "/"))
                targetPath = A._Uri__removeDotSegments(mergedPath);
              else
                targetPath = A._Uri__normalizeRelativePath(mergedPath, !t1 || targetHost != null);
            }
            targetQuery = reference.get$hasQuery() ? reference.get$query() : _null;
          }
        }
      }
      return A._Uri$_internal(targetScheme, targetUserInfo, targetHost, targetPort, targetPath, targetQuery, reference.get$hasFragment() ? reference.get$fragment() : _null);
    },
    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$hasAbsolutePath() {
      return B.JSString_methods.startsWith$1(this.path, "/");
    },
    toFilePath$0() {
      var pathSegments, _this = this,
        t1 = _this.scheme;
      if (t1 !== "" && t1 !== "file")
        throw A.wrapException(A.UnsupportedError$("Cannot extract a file path from a " + t1 + " URI"));
      t1 = _this._query;
      if ((t1 == null ? "" : t1) !== "")
        throw A.wrapException(A.UnsupportedError$(string$.Cannotfq));
      t1 = _this._fragment;
      if ((t1 == null ? "" : t1) !== "")
        throw A.wrapException(A.UnsupportedError$(string$.Cannotff));
      t1 = $.$get$_Uri__isWindowsCached();
      if (t1)
        t1 = A._Uri__toWindowsFilePath(_this);
      else {
        if (_this._host != null && _this.get$host() !== "")
          A.throwExpression(A.UnsupportedError$(string$.Cannotn));
        pathSegments = _this.get$pathSegments();
        A._Uri__checkNonWindowsPathReservedCharacters(pathSegments, false);
        t1 = A.StringBuffer__writeAll(B.JSString_methods.startsWith$1(_this.path, "/") ? "" + "/" : "", pathSegments, "/");
        t1 = t1.charCodeAt(0) == 0 ? t1 : t1;
      }
      return t1;
    },
    toString$0(_) {
      return this.get$_text();
    },
    $eq(_, other) {
      var t1, t2, _this = this;
      if (other == null)
        return false;
      if (_this === other)
        return true;
      if (type$.Uri._is(other))
        if (_this.scheme === other.get$scheme())
          if (_this._host != null === other.get$hasAuthority())
            if (_this._userInfo === other.get$userInfo())
              if (_this.get$host() === other.get$host())
                if (_this.get$port(_this) === other.get$port(other))
                  if (_this.path === other.get$path(other)) {
                    t1 = _this._query;
                    t2 = t1 == null;
                    if (!t2 === other.get$hasQuery()) {
                      if (t2)
                        t1 = "";
                      if (t1 === other.get$query()) {
                        t1 = _this._fragment;
                        t2 = t1 == null;
                        if (!t2 === other.get$hasFragment()) {
                          if (t2)
                            t1 = "";
                          t1 = t1 === other.get$fragment();
                        } else
                          t1 = false;
                      } else
                        t1 = false;
                    } else
                      t1 = false;
                  } else
                    t1 = false;
                else
                  t1 = false;
              else
                t1 = false;
            else
              t1 = false;
          else
            t1 = false;
        else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    $isUri: 1,
    get$scheme() {
      return this.scheme;
    },
    get$path(receiver) {
      return this.path;
    }
  };
  A._Uri__makePath_closure.prototype = {
    call$1(s) {
      return A._Uri__uriEncode(B.List_XRg0, s, B.C_Utf8Codec, false);
    },
    $signature: 7
  };
  A.UriData.prototype = {
    get$uri() {
      var t2, queryIndex, end, query, _this = this, _null = null,
        t1 = _this._uriCache;
      if (t1 == null) {
        t1 = _this._text;
        t2 = _this._separatorIndices[0] + 1;
        queryIndex = B.JSString_methods.indexOf$2(t1, "?", t2);
        end = t1.length;
        if (queryIndex >= 0) {
          query = A._Uri__normalizeOrSubstring(t1, queryIndex + 1, end, B.List_oFp, false, false);
          end = queryIndex;
        } else
          query = _null;
        t1 = _this._uriCache = new A._DataUri("data", "", _null, _null, A._Uri__normalizeOrSubstring(t1, t2, end, B.List_XRg, false, false), query, _null);
      }
      return t1;
    },
    toString$0(_) {
      var t1 = this._text;
      return this._separatorIndices[0] === -1 ? "data:" + t1 : t1;
    }
  };
  A._createTables_build.prototype = {
    call$2(state, defaultTransition) {
      var t1 = this.tables[state];
      B.NativeUint8List_methods.fillRange$3(t1, 0, 96, defaultTransition);
      return t1;
    },
    $signature: 330
  };
  A._createTables_setChars.prototype = {
    call$3(target, chars, transition) {
      var t1, i;
      for (t1 = chars.length, i = 0; i < t1; ++i)
        target[chars.charCodeAt(i) ^ 96] = transition;
    },
    $signature: 183
  };
  A._createTables_setRange.prototype = {
    call$3(target, range, transition) {
      var i, n;
      for (i = range.charCodeAt(0), n = range.charCodeAt(1); i <= n; ++i)
        target[(i ^ 96) >>> 0] = transition;
    },
    $signature: 183
  };
  A._SimpleUri.prototype = {
    get$hasAuthority() {
      return this._hostStart > 0;
    },
    get$hasPort() {
      return this._hostStart > 0 && this._portStart + 1 < this._pathStart;
    },
    get$hasQuery() {
      return this._queryStart < this._fragmentStart;
    },
    get$hasFragment() {
      return this._fragmentStart < this._uri.length;
    },
    get$hasAbsolutePath() {
      return B.JSString_methods.startsWith$2(this._uri, "/", this._pathStart);
    },
    get$scheme() {
      var t1 = this._schemeCache;
      return t1 == null ? this._schemeCache = this._computeScheme$0() : t1;
    },
    _computeScheme$0() {
      var t2, _this = this,
        t1 = _this._schemeEnd;
      if (t1 <= 0)
        return "";
      t2 = t1 === 4;
      if (t2 && B.JSString_methods.startsWith$1(_this._uri, "http"))
        return "http";
      if (t1 === 5 && B.JSString_methods.startsWith$1(_this._uri, "https"))
        return "https";
      if (t2 && B.JSString_methods.startsWith$1(_this._uri, "file"))
        return "file";
      if (t1 === 7 && B.JSString_methods.startsWith$1(_this._uri, "package"))
        return "package";
      return B.JSString_methods.substring$2(_this._uri, 0, t1);
    },
    get$userInfo() {
      var t1 = this._hostStart,
        t2 = this._schemeEnd + 3;
      return t1 > t2 ? B.JSString_methods.substring$2(this._uri, t2, t1 - 1) : "";
    },
    get$host() {
      var t1 = this._hostStart;
      return t1 > 0 ? B.JSString_methods.substring$2(this._uri, t1, this._portStart) : "";
    },
    get$port(_) {
      var t1, _this = this;
      if (_this.get$hasPort())
        return A.int_parse(B.JSString_methods.substring$2(_this._uri, _this._portStart + 1, _this._pathStart), null);
      t1 = _this._schemeEnd;
      if (t1 === 4 && B.JSString_methods.startsWith$1(_this._uri, "http"))
        return 80;
      if (t1 === 5 && B.JSString_methods.startsWith$1(_this._uri, "https"))
        return 443;
      return 0;
    },
    get$path(_) {
      return B.JSString_methods.substring$2(this._uri, this._pathStart, this._queryStart);
    },
    get$query() {
      var t1 = this._queryStart,
        t2 = this._fragmentStart;
      return t1 < t2 ? B.JSString_methods.substring$2(this._uri, t1 + 1, t2) : "";
    },
    get$fragment() {
      var t1 = this._fragmentStart,
        t2 = this._uri;
      return t1 < t2.length ? B.JSString_methods.substring$1(t2, t1 + 1) : "";
    },
    get$pathSegments() {
      var parts, i,
        start = this._pathStart,
        end = this._queryStart,
        t1 = this._uri;
      if (B.JSString_methods.startsWith$2(t1, "/", start))
        ++start;
      if (start === end)
        return B.List_empty;
      parts = A._setArrayType([], type$.JSArray_String);
      for (i = start; i < end; ++i)
        if (t1.charCodeAt(i) === 47) {
          parts.push(B.JSString_methods.substring$2(t1, start, i));
          start = i + 1;
        }
      parts.push(B.JSString_methods.substring$2(t1, start, end));
      return A.List_List$unmodifiable(parts, type$.String);
    },
    _isPort$1(port) {
      var portDigitStart = this._portStart + 1;
      return portDigitStart + port.length === this._pathStart && B.JSString_methods.startsWith$2(this._uri, port, portDigitStart);
    },
    removeFragment$0() {
      var _this = this,
        t1 = _this._fragmentStart,
        t2 = _this._uri;
      if (t1 >= t2.length)
        return _this;
      return new A._SimpleUri(B.JSString_methods.substring$2(t2, 0, t1), _this._schemeEnd, _this._hostStart, _this._portStart, _this._pathStart, _this._queryStart, t1, _this._schemeCache);
    },
    resolve$1(reference) {
      return this.resolveUri$1(A.Uri_parse(reference));
    },
    resolveUri$1(reference) {
      if (reference instanceof A._SimpleUri)
        return this._simpleMerge$2(this, reference);
      return this._toNonSimple$0().resolveUri$1(reference);
    },
    _simpleMerge$2(base, ref) {
      var t2, t3, t4, isSimple, delta, refStart, basePathStart, packageNameEnd, basePathStart0, baseStart, baseEnd, baseUri, baseStart0, backCount, refStart0, insert,
        t1 = ref._schemeEnd;
      if (t1 > 0)
        return ref;
      t2 = ref._hostStart;
      if (t2 > 0) {
        t3 = base._schemeEnd;
        if (t3 <= 0)
          return ref;
        t4 = t3 === 4;
        if (t4 && B.JSString_methods.startsWith$1(base._uri, "file"))
          isSimple = ref._pathStart !== ref._queryStart;
        else if (t4 && B.JSString_methods.startsWith$1(base._uri, "http"))
          isSimple = !ref._isPort$1("80");
        else
          isSimple = !(t3 === 5 && B.JSString_methods.startsWith$1(base._uri, "https")) || !ref._isPort$1("443");
        if (isSimple) {
          delta = t3 + 1;
          return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, delta) + B.JSString_methods.substring$1(ref._uri, t1 + 1), t3, t2 + delta, ref._portStart + delta, ref._pathStart + delta, ref._queryStart + delta, ref._fragmentStart + delta, base._schemeCache);
        } else
          return this._toNonSimple$0().resolveUri$1(ref);
      }
      refStart = ref._pathStart;
      t1 = ref._queryStart;
      if (refStart === t1) {
        t2 = ref._fragmentStart;
        if (t1 < t2) {
          t3 = base._queryStart;
          delta = t3 - t1;
          return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, t3) + B.JSString_methods.substring$1(ref._uri, t1), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, t1 + delta, t2 + delta, base._schemeCache);
        }
        t1 = ref._uri;
        if (t2 < t1.length) {
          t3 = base._fragmentStart;
          return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, t3) + B.JSString_methods.substring$1(t1, t2), base._schemeEnd, base._hostStart, base._portStart, base._pathStart, base._queryStart, t2 + (t3 - t2), base._schemeCache);
        }
        return base.removeFragment$0();
      }
      t2 = ref._uri;
      if (B.JSString_methods.startsWith$2(t2, "/", refStart)) {
        basePathStart = base._pathStart;
        packageNameEnd = A._SimpleUri__packageNameEnd(this);
        basePathStart0 = packageNameEnd > 0 ? packageNameEnd : basePathStart;
        delta = basePathStart0 - refStart;
        return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, basePathStart0) + B.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, basePathStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
      }
      baseStart = base._pathStart;
      baseEnd = base._queryStart;
      if (baseStart === baseEnd && base._hostStart > 0) {
        for (; B.JSString_methods.startsWith$2(t2, "../", refStart);)
          refStart += 3;
        delta = baseStart - refStart + 1;
        return new A._SimpleUri(B.JSString_methods.substring$2(base._uri, 0, baseStart) + "/" + B.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
      }
      baseUri = base._uri;
      packageNameEnd = A._SimpleUri__packageNameEnd(this);
      if (packageNameEnd >= 0)
        baseStart0 = packageNameEnd;
      else
        for (baseStart0 = baseStart; B.JSString_methods.startsWith$2(baseUri, "../", baseStart0);)
          baseStart0 += 3;
      backCount = 0;
      while (true) {
        refStart0 = refStart + 3;
        if (!(refStart0 <= t1 && B.JSString_methods.startsWith$2(t2, "../", refStart)))
          break;
        ++backCount;
        refStart = refStart0;
      }
      for (insert = ""; baseEnd > baseStart0;) {
        --baseEnd;
        if (baseUri.charCodeAt(baseEnd) === 47) {
          if (backCount === 0) {
            insert = "/";
            break;
          }
          --backCount;
          insert = "/";
        }
      }
      if (baseEnd === baseStart0 && base._schemeEnd <= 0 && !B.JSString_methods.startsWith$2(baseUri, "/", baseStart)) {
        refStart -= backCount * 3;
        insert = "";
      }
      delta = baseEnd - refStart + insert.length;
      return new A._SimpleUri(B.JSString_methods.substring$2(baseUri, 0, baseEnd) + insert + B.JSString_methods.substring$1(t2, refStart), base._schemeEnd, base._hostStart, base._portStart, baseStart, t1 + delta, ref._fragmentStart + delta, base._schemeCache);
    },
    toFilePath$0() {
      var t2, t3, _this = this,
        t1 = _this._schemeEnd;
      if (t1 >= 0) {
        t2 = !(t1 === 4 && B.JSString_methods.startsWith$1(_this._uri, "file"));
        t1 = t2;
      } else
        t1 = false;
      if (t1)
        throw A.wrapException(A.UnsupportedError$("Cannot extract a file path from a " + _this.get$scheme() + " URI"));
      t1 = _this._queryStart;
      t2 = _this._uri;
      if (t1 < t2.length) {
        if (t1 < _this._fragmentStart)
          throw A.wrapException(A.UnsupportedError$(string$.Cannotfq));
        throw A.wrapException(A.UnsupportedError$(string$.Cannotff));
      }
      t3 = $.$get$_Uri__isWindowsCached();
      if (t3)
        t1 = A._Uri__toWindowsFilePath(_this);
      else {
        if (_this._hostStart < _this._portStart)
          A.throwExpression(A.UnsupportedError$(string$.Cannotn));
        t1 = B.JSString_methods.substring$2(t2, _this._pathStart, t1);
      }
      return t1;
    },
    get$hashCode(_) {
      var t1 = this._hashCodeCache;
      return t1 == null ? this._hashCodeCache = B.JSString_methods.get$hashCode(this._uri) : t1;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      if (this === other)
        return true;
      return type$.Uri._is(other) && this._uri === other.toString$0(0);
    },
    _toNonSimple$0() {
      var _this = this, _null = null,
        t1 = _this.get$scheme(),
        t2 = _this.get$userInfo(),
        t3 = _this._hostStart > 0 ? _this.get$host() : _null,
        t4 = _this.get$hasPort() ? _this.get$port(_this) : _null,
        t5 = _this._uri,
        t6 = _this._queryStart,
        t7 = B.JSString_methods.substring$2(t5, _this._pathStart, t6),
        t8 = _this._fragmentStart;
      t6 = t6 < t8 ? _this.get$query() : _null;
      return A._Uri$_internal(t1, t2, t3, t4, t7, t6, t8 < t5.length ? _this.get$fragment() : _null);
    },
    toString$0(_) {
      return this._uri;
    },
    $isUri: 1
  };
  A._DataUri.prototype = {};
  A.Expando.prototype = {
    $indexSet(_, object, value) {
      if (object instanceof A._Record)
        A.Expando__badExpandoKey(object);
      this._jsWeakMap.set(object, value);
    },
    toString$0(_) {
      return "Expando:null";
    }
  };
  A.jsify__convert.prototype = {
    call$1(o) {
      var t1, convertedMap, key, convertedList;
      if (A._noJsifyRequired(o))
        return o;
      t1 = this._convertedObjects;
      if (t1.containsKey$1(o))
        return t1.$index(0, o);
      if (type$.Map_of_nullable_Object_and_nullable_Object._is(o)) {
        convertedMap = {};
        t1.$indexSet(0, o, convertedMap);
        for (t1 = J.get$iterator$ax(o.get$keys(o)); t1.moveNext$0();) {
          key = t1.get$current(t1);
          convertedMap[key] = this.call$1(o.$index(0, key));
        }
        return convertedMap;
      } else if (type$.Iterable_nullable_Object._is(o)) {
        convertedList = [];
        t1.$indexSet(0, o, convertedList);
        B.JSArray_methods.addAll$1(convertedList, J.map$1$1$ax(o, this, type$.dynamic));
        return convertedList;
      } else
        return o;
    },
    $signature: 338
  };
  A._JSRandom.prototype = {
    nextInt$1(max) {
      if (max <= 0 || max > 4294967296)
        throw A.wrapException(A.RangeError$("max must be in range 0 < max \u2264 2^32, was " + max));
      return Math.random() * max >>> 0;
    },
    nextDouble$0() {
      return Math.random();
    }
  };
  A.ArgParser.prototype = {
    addFlag$6$abbr$defaultsTo$help$hide$negatable($name, abbr, defaultsTo, help, hide, negatable) {
      var _null = null;
      this._addOption$12$aliases$hide$negatable($name, abbr, help, _null, _null, _null, defaultsTo, _null, B.OptionType_nMZ, B.List_empty, hide, negatable);
    },
    addFlag$2$hide($name, hide) {
      return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, false, null, hide, true);
    },
    addFlag$2$help($name, help) {
      return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, false, help, false, true);
    },
    addFlag$3$defaultsTo$help($name, defaultsTo, help) {
      return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, defaultsTo, help, false, true);
    },
    addFlag$3$help$negatable($name, help, negatable) {
      return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, null, false, help, false, negatable);
    },
    addFlag$3$abbr$help($name, abbr, help) {
      return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, abbr, false, help, false, true);
    },
    addFlag$4$abbr$help$negatable($name, abbr, help, negatable) {
      return this.addFlag$6$abbr$defaultsTo$help$hide$negatable($name, abbr, false, help, false, negatable);
    },
    addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp($name, abbr, allowed, defaultsTo, help, hide, valueHelp) {
      this._addOption$12$aliases$hide$mandatory($name, abbr, help, valueHelp, allowed, null, defaultsTo, null, B.OptionType_YwU, B.List_empty, hide, false);
    },
    addOption$2$hide($name, hide) {
      return this.addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp($name, null, null, null, null, hide, null);
    },
    addOption$6$abbr$allowed$defaultsTo$help$valueHelp($name, abbr, allowed, defaultsTo, help, valueHelp) {
      return this.addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp($name, abbr, allowed, defaultsTo, help, false, valueHelp);
    },
    addOption$4$allowed$defaultsTo$help($name, allowed, defaultsTo, help) {
      return this.addOption$7$abbr$allowed$defaultsTo$help$hide$valueHelp($name, null, allowed, defaultsTo, help, false, null);
    },
    addMultiOption$6$abbr$allowedHelp$help$splitCommas$valueHelp($name, abbr, allowedHelp, help, splitCommas, valueHelp) {
      var t1 = A._setArrayType([], type$.JSArray_String);
      this._addOption$12$aliases$hide$splitCommas($name, abbr, help, valueHelp, null, allowedHelp, t1, null, B.OptionType_qyr, B.List_empty, false, splitCommas);
    },
    addMultiOption$5$abbr$help$splitCommas$valueHelp($name, abbr, help, splitCommas, valueHelp) {
      return this.addMultiOption$6$abbr$allowedHelp$help$splitCommas$valueHelp($name, abbr, null, help, splitCommas, valueHelp);
    },
    addMultiOption$3$allowedHelp$help($name, allowedHelp, help) {
      return this.addMultiOption$6$abbr$allowedHelp$help$splitCommas$valueHelp($name, null, allowedHelp, help, true, null);
    },
    _addOption$14$aliases$hide$mandatory$negatable$splitCommas($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, aliases, hide, mandatory, negatable, splitCommas) {
      var existing, t2, t3, option, _i, _this = this, _null = null,
        t1 = A._setArrayType([$name], type$.JSArray_String);
      B.JSArray_methods.addAll$1(t1, aliases);
      if (B.JSArray_methods.any$1(t1, new A.ArgParser__addOption_closure(_this)))
        throw A.wrapException(A.ArgumentError$('Duplicate option or alias "' + $name + '".', _null));
      t1 = abbr != null;
      if (t1) {
        existing = _this.findByAbbreviation$1(abbr);
        if (existing != null)
          throw A.wrapException(A.ArgumentError$('Abbreviation "' + abbr + '" is already used by "' + existing.name + '".', _null));
      }
      t2 = allowed == null ? _null : A.List_List$unmodifiable(allowed, type$.String);
      if (allowedHelp == null)
        t3 = _null;
      else {
        t3 = type$.String;
        t3 = A.ConstantMap_ConstantMap$from(allowedHelp, t3, t3);
      }
      option = new A.Option($name, abbr, help, valueHelp, t2, t3, defaultsTo, negatable, callback, type, splitCommas == null ? type === B.OptionType_qyr : splitCommas, false, hide);
      if ($name.length === 0)
        A.throwExpression(A.ArgumentError$("Name cannot be empty.", _null));
      else if (B.JSString_methods.startsWith$1($name, "-"))
        A.throwExpression(A.ArgumentError$("Name " + $name + ' cannot start with "-".', _null));
      t2 = $.$get$Option__invalidChars()._nativeRegExp;
      if (t2.test($name))
        A.throwExpression(A.ArgumentError$('Name "' + $name + '" contains invalid characters.', _null));
      if (t1) {
        if (abbr.length !== 1)
          A.throwExpression(A.ArgumentError$("Abbreviation must be null or have length 1.", _null));
        else if (abbr === "-")
          A.throwExpression(A.ArgumentError$('Abbreviation cannot be "-".', _null));
        if (t2.test(abbr))
          A.throwExpression(A.ArgumentError$("Abbreviation is an invalid character.", _null));
      }
      _this._arg_parser$_options.$indexSet(0, $name, option);
      _this._optionsAndSeparators.push(option);
      for (t1 = _this._aliases, _i = 0; false; ++_i)
        t1.$indexSet(0, aliases[_i], $name);
    },
    _addOption$12$aliases$hide$splitCommas($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, aliases, hide, splitCommas) {
      return this._addOption$14$aliases$hide$mandatory$negatable$splitCommas($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, aliases, hide, false, false, splitCommas);
    },
    _addOption$12$aliases$hide$mandatory($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, aliases, hide, mandatory) {
      return this._addOption$14$aliases$hide$mandatory$negatable$splitCommas($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, aliases, hide, mandatory, false, null);
    },
    _addOption$12$aliases$hide$negatable($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, aliases, hide, negatable) {
      return this._addOption$14$aliases$hide$mandatory$negatable$splitCommas($name, abbr, help, valueHelp, allowed, allowedHelp, defaultsTo, callback, type, aliases, hide, false, negatable, null);
    },
    findByAbbreviation$1(abbr) {
      var t1, t2;
      for (t1 = this.options._map, t1 = t1.get$values(t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        if (t2.abbr === abbr)
          return t2;
      }
      return null;
    },
    findByNameOrAlias$1($name) {
      var t1 = this._aliases.$index(0, $name);
      if (t1 == null)
        t1 = $name;
      return this.options._map.$index(0, t1);
    }
  };
  A.ArgParser__addOption_closure.prototype = {
    call$1($name) {
      return this.$this.findByNameOrAlias$1($name) != null;
    },
    $signature: 10
  };
  A.ArgParserException.prototype = {};
  A.ArgResults.prototype = {
    $index(_, $name) {
      var t1 = this._parser.options._map;
      if (!t1.containsKey$1($name))
        throw A.wrapException(A.ArgumentError$('Could not find an option named "' + $name + '".', null));
      t1 = t1.$index(0, $name);
      t1.toString;
      return t1.valueOrDefault$1(this._parsed.$index(0, $name));
    },
    wasParsed$1($name) {
      if (!this._parser.options._map.containsKey$1($name))
        throw A.wrapException(A.ArgumentError$('Could not find an option named "' + $name + '".', null));
      return this._parsed.containsKey$1($name);
    }
  };
  A.Option.prototype = {
    valueOrDefault$1(value) {
      var t1;
      if (value != null)
        return value;
      if (this.type === B.OptionType_qyr) {
        t1 = this.defaultsTo;
        return t1 == null ? A._setArrayType([], type$.JSArray_String) : t1;
      }
      return this.defaultsTo;
    }
  };
  A.OptionType.prototype = {};
  A.Parser0.prototype = {
    parse$0() {
      var commandResults, commandName, commandParser, error, t1, t3, t4, t5, t6, t7, t8, command, exception, _this = this,
        t2 = _this._args;
      t2.toList$0(0);
      commandResults = null;
      for (t3 = _this._parser$_rest, t4 = _this._grammar, t5 = t4.commands, t6 = t2.$ti._precomputed1; !t2.get$isEmpty(t2);) {
        t7 = t2._head;
        if (t7 === t2._tail)
          A.throwExpression(A.IterableElementError_noElement());
        t7 = t2._table[t7];
        t8 = t7 == null;
        if ((t8 ? t6._as(t7) : t7) === "--") {
          t2.removeFirst$0();
          break;
        }
        if (t8)
          t7 = t6._as(t7);
        command = t5._map.$index(0, t7);
        if (command != null) {
          if (t3.length !== 0)
            A.throwExpression(A.ArgParserException$("Cannot specify arguments before a command.", null));
          commandName = t2.removeFirst$0();
          t5 = type$.JSArray_String;
          t6 = A._setArrayType([], t5);
          B.JSArray_methods.addAll$1(t6, t3);
          commandParser = new A.Parser0(commandName, _this, command, t2, t6, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.dynamic));
          try {
            commandResults = commandParser.parse$0();
          } catch (exception) {
            t2 = A.unwrapException(exception);
            if (t2 instanceof A.ArgParserException) {
              error = t2;
              t2 = error.message;
              t1 = A._setArrayType([commandName], t5);
              J.addAll$1$ax(t1, error.commands);
              throw A.wrapException(A.ArgParserException$(t2, t1));
            } else
              throw exception;
          }
          B.JSArray_methods.clear$0(t3);
          break;
        }
        if (_this._parseSoloOption$0())
          continue;
        if (_this._parseAbbreviation$1(_this))
          continue;
        if (_this._parseLongOption$0())
          continue;
        t3.push(t2.removeFirst$0());
      }
      t4.options._map.forEach$1(0, new A.Parser_parse_closure(_this));
      B.JSArray_methods.addAll$1(t3, t2);
      t2.clear$0(0);
      return new A.ArgResults(t4, _this._results, _this._commandName, new A.UnmodifiableListView(t3, type$.UnmodifiableListView_String));
    },
    _readNextArgAsValue$1(option) {
      var t1 = this._args;
      if (t1.get$isEmpty(t1))
        A.throwExpression(A.ArgParserException$('Missing argument for "' + option.name + '".', null));
      this._setOption$3(this._results, option, t1.get$first(t1));
      t1.removeFirst$0();
    },
    _parseSoloOption$0() {
      var opt,
        t1 = this._args;
      if (t1.get$first(t1).length !== 2)
        return false;
      if (!B.JSString_methods.startsWith$1(t1.get$first(t1), "-"))
        return false;
      opt = t1.get$first(t1)[1];
      if (!A._isLetterOrDigit(opt.charCodeAt(0)))
        return false;
      this._handleSoloOption$1(opt);
      return true;
    },
    _handleSoloOption$1(opt) {
      var t1, _this = this,
        option = _this._grammar.findByAbbreviation$1(opt);
      if (option == null) {
        t1 = _this._parser$_parent;
        if (t1 == null)
          A.throwExpression(A.ArgParserException$('Could not find an option or flag "-' + opt + '".', null));
        t1._handleSoloOption$1(opt);
        return true;
      }
      _this._args.removeFirst$0();
      if (option.type === B.OptionType_nMZ)
        _this._results.$indexSet(0, option.name, true);
      else
        _this._readNextArgAsValue$1(option);
      return true;
    },
    _parseAbbreviation$1(innermostCommand) {
      var t2, index, t3, t4, lettersAndDigits, rest,
        t1 = this._args;
      if (t1.get$first(t1).length < 2)
        return false;
      if (!B.JSString_methods.startsWith$1(t1.get$first(t1), "-"))
        return false;
      t2 = t1.$ti._precomputed1;
      index = 1;
      while (true) {
        t3 = t1._head;
        if (t3 === t1._tail)
          A.throwExpression(A.IterableElementError_noElement());
        t3 = t1._table[t3];
        t4 = t3 == null;
        if (index < (t4 ? t2._as(t3) : t3).length) {
          t3 = (t4 ? t2._as(t3) : t3).charCodeAt(index);
          if (!(t3 >= 65 && t3 <= 90))
            if (!(t3 >= 97 && t3 <= 122))
              t3 = t3 >= 48 && t3 <= 57;
            else
              t3 = true;
          else
            t3 = true;
        } else
          t3 = false;
        if (!t3)
          break;
        ++index;
      }
      if (index === 1)
        return false;
      lettersAndDigits = B.JSString_methods.substring$2(t1.get$first(t1), 1, index);
      rest = B.JSString_methods.substring$1(t1.get$first(t1), index);
      if (B.JSString_methods.contains$1(rest, "\n") || B.JSString_methods.contains$1(rest, "\r"))
        return false;
      this._handleAbbreviation$3(lettersAndDigits, rest, innermostCommand);
      return true;
    },
    _handleAbbreviation$3(lettersAndDigits, rest, innermostCommand) {
      var t1, i, i0, _this = this,
        c = B.JSString_methods.substring$2(lettersAndDigits, 0, 1),
        first = _this._grammar.findByAbbreviation$1(c);
      if (first == null) {
        t1 = _this._parser$_parent;
        if (t1 == null)
          A.throwExpression(A.ArgParserException$(string$.Could_ + c + '".', null));
        t1._handleAbbreviation$3(lettersAndDigits, rest, innermostCommand);
        return true;
      } else if (first.type !== B.OptionType_nMZ)
        _this._setOption$3(_this._results, first, B.JSString_methods.substring$1(lettersAndDigits, 1) + rest);
      else {
        t1 = B.JSString_methods.substring$1(lettersAndDigits, 1);
        if (rest !== "")
          A.throwExpression(A.ArgParserException$('Option "-' + c + '" is a flag and cannot handle value "' + t1 + rest + '".', null));
        for (t1 = lettersAndDigits.length, i = 0; i < t1; i = i0) {
          i0 = i + 1;
          innermostCommand._parseShortFlag$1(B.JSString_methods.substring$2(lettersAndDigits, i, i0));
        }
      }
      _this._args.removeFirst$0();
      return true;
    },
    _parseShortFlag$1(c) {
      var t1,
        option = this._grammar.findByAbbreviation$1(c);
      if (option == null) {
        t1 = this._parser$_parent;
        if (t1 == null)
          A.throwExpression(A.ArgParserException$(string$.Could_ + c + '".', null));
        t1._parseShortFlag$1(c);
        return;
      }
      if (option.type !== B.OptionType_nMZ)
        A.throwExpression(A.ArgParserException$('Option "-' + c + '" must be a flag to be in a collapsed "-".', null));
      this._results.$indexSet(0, option.name, true);
    },
    _parseLongOption$0() {
      var index, t2, $name, t3, i, t4, t5, value,
        t1 = this._args;
      if (!B.JSString_methods.startsWith$1(t1.get$first(t1), "--"))
        return false;
      index = B.JSString_methods.indexOf$1(t1.get$first(t1), "=");
      t2 = index === -1;
      $name = t2 ? B.JSString_methods.substring$1(t1.get$first(t1), 2) : B.JSString_methods.substring$2(t1.get$first(t1), 2, index);
      for (t3 = $name.length, i = 0; i !== t3; ++i) {
        t4 = $name.charCodeAt(i);
        if (!(t4 >= 65 && t4 <= 90))
          if (!(t4 >= 97 && t4 <= 122))
            t5 = t4 >= 48 && t4 <= 57;
          else
            t5 = true;
        else
          t5 = true;
        if (!(t5 || t4 === 45 || t4 === 95))
          return false;
      }
      value = t2 ? null : B.JSString_methods.substring$1(t1.get$first(t1), index + 1);
      if (value != null)
        t1 = B.JSString_methods.contains$1(value, "\n") || B.JSString_methods.contains$1(value, "\r");
      else
        t1 = false;
      if (t1)
        return false;
      this._handleLongOption$2($name, value);
      return true;
    },
    _handleLongOption$2($name, value) {
      var _this = this, _null = null,
        _s32_ = 'Could not find an option named "',
        t1 = _this._grammar,
        option = t1.findByNameOrAlias$1($name);
      if (option != null) {
        _this._args.removeFirst$0();
        if (option.type === B.OptionType_nMZ) {
          if (value != null)
            A.throwExpression(A.ArgParserException$('Flag option "' + $name + '" should not be given a value.', _null));
          _this._results.$indexSet(0, option.name, true);
        } else if (value != null)
          _this._setOption$3(_this._results, option, value);
        else
          _this._readNextArgAsValue$1(option);
      } else if (B.JSString_methods.startsWith$1($name, "no-")) {
        option = t1.findByNameOrAlias$1(B.JSString_methods.substring$1($name, 3));
        if (option == null) {
          t1 = _this._parser$_parent;
          if (t1 == null)
            A.throwExpression(A.ArgParserException$(_s32_ + $name + '".', _null));
          t1._handleLongOption$2($name, value);
          return true;
        }
        _this._args.removeFirst$0();
        if (option.type !== B.OptionType_nMZ)
          A.throwExpression(A.ArgParserException$('Cannot negate non-flag option "' + $name + '".', _null));
        if (!option.negatable)
          A.throwExpression(A.ArgParserException$('Cannot negate option "' + $name + '".', _null));
        _this._results.$indexSet(0, option.name, false);
      } else {
        t1 = _this._parser$_parent;
        if (t1 == null)
          A.throwExpression(A.ArgParserException$(_s32_ + $name + '".', _null));
        t1._handleLongOption$2($name, value);
        return true;
      }
      return true;
    },
    _setOption$3(results, option, value) {
      var list, t1, t2, t3, _i, element;
      if (option.type !== B.OptionType_qyr) {
        this._validateAllowed$2(option, value);
        results.$indexSet(0, option.name, value);
        return;
      }
      list = type$.List_dynamic._as(results.putIfAbsent$2(option.name, new A.Parser__setOption_closure()));
      if (option.splitCommas)
        for (t1 = value.split(","), t2 = t1.length, t3 = J.getInterceptor$ax(list), _i = 0; _i < t2; ++_i) {
          element = t1[_i];
          this._validateAllowed$2(option, element);
          t3.add$1(list, element);
        }
      else {
        this._validateAllowed$2(option, value);
        J.add$1$ax(list, value);
      }
    },
    _validateAllowed$2(option, value) {
      var t1 = option.allowed;
      if (t1 == null)
        return;
      if (!B.JSArray_methods.contains$1(t1, value))
        A.throwExpression(A.ArgParserException$('"' + value + '" is not an allowed value for option "' + option.name + '".', null));
    }
  };
  A.Parser_parse_closure.prototype = {
    call$2($name, option) {
      var parsedOption = this.$this._results.$index(0, $name),
        callback = option.callback;
      if (callback == null)
        return;
      callback.call$1(option.valueOrDefault$1(parsedOption));
    },
    $signature: 367
  };
  A.Parser__setOption_closure.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_String);
    },
    $signature: 26
  };
  A._Usage.prototype = {
    get$_columnWidths() {
      var result, _this = this,
        value = _this.___Usage__columnWidths_FI;
      if (value === $) {
        result = _this._calculateColumnWidths$0();
        _this.___Usage__columnWidths_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.___Usage__columnWidths_FI = result;
        value = result;
      }
      return value;
    },
    generate$0() {
      var t1, t2, t3, t4, _i, optionOrSeparator, t5, _this = this;
      for (t1 = _this._usage$_optionsAndSeparators, t2 = t1.length, t3 = type$.Option, t4 = _this._usage$_buffer, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        optionOrSeparator = t1[_i];
        if (typeof optionOrSeparator == "string") {
          t5 = t4._contents;
          t4._contents = (t5.length !== 0 ? t4._contents = t5 + "\n\n" : t5) + optionOrSeparator;
          _this._newlinesNeeded = 1;
          continue;
        }
        t3._as(optionOrSeparator);
        if (optionOrSeparator.hide)
          continue;
        _this._writeOption$1(optionOrSeparator);
      }
      t1 = t4._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _writeOption$1(option) {
      var allowedNames, t2, t3, t4, _i, $name, t5, _this = this,
        t1 = option.abbr;
      _this._write$2(0, t1 == null ? "" : "-" + t1 + ", ");
      t1 = _this._longOption$1(option);
      _this._write$2(1, t1);
      t1 = option.help;
      if (t1 != null)
        _this._write$2(2, t1);
      t1 = option.allowedHelp;
      if (t1 != null) {
        allowedNames = J.toList$0$ax(t1.get$keys(t1));
        B.JSArray_methods.sort$0(allowedNames);
        _this._newline$0();
        for (t2 = allowedNames.length, t3 = option.defaultsTo, t4 = type$.List_dynamic._is(t3), _i = 0; _i < allowedNames.length; allowedNames.length === t2 || (0, A.throwConcurrentModificationError)(allowedNames), ++_i) {
          $name = allowedNames[_i];
          t5 = (t4 ? B.JSArray_methods.contains$1(t3, $name) : t3 === $name) ? " (default)" : "";
          _this._write$2(1, "      [" + $name + "]" + t5);
          t5 = t1.$index(0, $name);
          t5.toString;
          _this._write$2(2, t5);
        }
        _this._newline$0();
      } else if (option.allowed != null)
        _this._write$2(2, _this._buildAllowedList$1(option));
      else {
        t1 = option.type;
        if (t1 === B.OptionType_nMZ) {
          if (option.defaultsTo === true)
            _this._write$2(2, "(defaults to on)");
        } else if (t1 === B.OptionType_qyr) {
          t1 = option.defaultsTo;
          if (t1 != null && type$.Iterable_dynamic._as(t1).length !== 0) {
            type$.List_dynamic._as(t1);
            _this._write$2(2, "(defaults to " + new A.MappedListIterable(t1, new A._Usage__writeOption_closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$1(0, ", ") + ")");
          }
        } else {
          t1 = option.defaultsTo;
          if (t1 != null)
            _this._write$2(2, '(defaults to "' + A.S(t1) + '")');
        }
      }
    },
    _longOption$1(option) {
      var t1 = option.name,
        result = option.negatable ? "--[no-]" + t1 : "--" + t1;
      t1 = option.valueHelp;
      return t1 != null ? result + ("=<" + t1 + ">") : result;
    },
    _calculateColumnWidths$0() {
      var t1, t2, t3, abbr, title, _i, option, t4, t5, t6, t7, t8;
      for (t1 = this._usage$_optionsAndSeparators, t2 = t1.length, t3 = type$.List_dynamic, abbr = 0, title = 0, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        option = t1[_i];
        if (!(option instanceof A.Option))
          continue;
        if (option.hide)
          continue;
        t4 = option.abbr;
        abbr = Math.max(abbr, (t4 == null ? "" : "-" + t4 + ", ").length);
        t4 = this._longOption$1(option);
        title = Math.max(title, t4.length);
        t4 = option.allowedHelp;
        if (t4 != null)
          for (t4 = J.get$iterator$ax(t4.get$keys(t4)), t5 = option.defaultsTo, t6 = t3._is(t5); t4.moveNext$0();) {
            t7 = t4.get$current(t4);
            t8 = (t6 ? B.JSArray_methods.contains$1(t5, t7) : t5 === t7) ? " (default)" : "";
            title = Math.max(title, ("      [" + t7 + "]" + t8).length);
          }
      }
      return A._setArrayType([abbr, title + 4], type$.JSArray_int);
    },
    _newline$0() {
      ++this._newlinesNeeded;
      this._currentColumn = 0;
    },
    _write$2(column, text) {
      var t1, _i,
        lines = A._setArrayType(text.split("\n"), type$.JSArray_String);
      this.get$_columnWidths();
      while (true) {
        if (!(lines.length !== 0 && J.trim$0$s(B.JSArray_methods.get$first(lines)) === ""))
          break;
        B.JSArray_methods.removeAt$1(lines, 0);
      }
      while (true) {
        if (!(lines.length !== 0 && J.trim$0$s(B.JSArray_methods.get$last(lines)) === ""))
          break;
        lines.pop();
      }
      for (t1 = lines.length, _i = 0; _i < lines.length; lines.length === t1 || (0, A.throwConcurrentModificationError)(lines), ++_i)
        this._writeLine$2(column, lines[_i]);
    },
    _writeLine$2(column, text) {
      var t1, t2, _this = this;
      for (t1 = _this._usage$_buffer; t2 = _this._newlinesNeeded, t2 > 0;) {
        t1._contents += "\n";
        _this._newlinesNeeded = t2 - 1;
      }
      for (; t2 = _this._currentColumn, t2 !== column;) {
        if (t2 < 2)
          t1._contents += B.JSString_methods.$mul(" ", _this.get$_columnWidths()[_this._currentColumn]);
        else
          t1._contents += "\n";
        _this._currentColumn = (_this._currentColumn + 1) % 3;
      }
      _this.get$_columnWidths();
      if (column < 2)
        t1._contents += B.JSString_methods.padRight$1(text, _this.get$_columnWidths()[column]);
      else
        t1._contents += text;
      _this._currentColumn = (_this._currentColumn + 1) % 3;
      if (column === 2)
        ++_this._newlinesNeeded;
    },
    _buildAllowedList$1(option) {
      var t2, t3, first, _i, allowed,
        t1 = option.defaultsTo,
        isDefault = type$.List_dynamic._is(t1) ? B.JSArray_methods.get$contains(t1) : new A._Usage__buildAllowedList_closure(option);
      t1 = "" + "[";
      for (t2 = option.allowed, t3 = t2.length, first = true, _i = 0; _i < t3; ++_i, first = false) {
        allowed = t2[_i];
        if (!first)
          t1 += ", ";
        t1 += A.S(allowed);
        if (isDefault.call$1(allowed))
          t1 += " (default)";
      }
      t1 += "]";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A._Usage__writeOption_closure.prototype = {
    call$1(value) {
      return '"' + A.S(value) + '"';
    },
    $signature: 101
  };
  A._Usage__buildAllowedList_closure.prototype = {
    call$1(value) {
      return value === this.option.defaultsTo;
    },
    $signature: 122
  };
  A.ErrorResult.prototype = {
    complete$1(completer) {
      completer.completeError$2(this.error, this.stackTrace);
    },
    get$hashCode(_) {
      return (J.get$hashCode$(this.error) ^ A.Primitives_objectHashCode(this.stackTrace) ^ 492929599) >>> 0;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ErrorResult && J.$eq$(this.error, other.error) && this.stackTrace === other.stackTrace;
    },
    $isResult: 1
  };
  A.ValueResult.prototype = {
    complete$1(completer) {
      completer.complete$1(this.value);
    },
    get$hashCode(_) {
      return (J.get$hashCode$(this.value) ^ 842997089) >>> 0;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ValueResult && J.$eq$(this.value, other.value);
    },
    $isResult: 1
  };
  A.StreamCompleter.prototype = {
    setSourceStream$1(sourceStream) {
      var t1 = this._stream_completer$_stream;
      if (t1._sourceStream != null)
        throw A.wrapException(A.StateError$("Source stream already set"));
      t1._sourceStream = sourceStream;
      if (t1._stream_completer$_controller != null)
        t1._linkStreamToController$0();
    },
    setError$2(error, stackTrace) {
      var t1 = this.$ti._precomputed1;
      this.setSourceStream$1(A.Stream_Stream$fromFuture(A.Future_Future$error(error, stackTrace, t1), t1));
    },
    setError$1(error) {
      return this.setError$2(error, null);
    }
  };
  A._CompleterStream.prototype = {
    listen$4$cancelOnError$onDone$onError(_, onData, cancelOnError, onDone, onError) {
      var sourceStream, t1, _this = this, _null = null;
      if (_this._stream_completer$_controller == null) {
        sourceStream = _this._sourceStream;
        if (sourceStream != null && !sourceStream.get$isBroadcast())
          return sourceStream.listen$4$cancelOnError$onDone$onError(0, onData, cancelOnError, onDone, onError);
        if (_this._stream_completer$_controller == null)
          _this._stream_completer$_controller = A.StreamController_StreamController(_null, _null, _null, _null, true, _this.$ti._precomputed1);
        if (_this._sourceStream != null)
          _this._linkStreamToController$0();
      }
      t1 = _this._stream_completer$_controller;
      t1.toString;
      return new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>")).listen$4$cancelOnError$onDone$onError(0, onData, cancelOnError, onDone, onError);
    },
    listen$1($receiver, onData) {
      return this.listen$4$cancelOnError$onDone$onError($receiver, onData, null, null, null);
    },
    listen$3$onDone$onError($receiver, onData, onDone, onError) {
      return this.listen$4$cancelOnError$onDone$onError($receiver, onData, null, onDone, onError);
    },
    _linkStreamToController$0() {
      var t2,
        t1 = this._stream_completer$_controller;
      t1.toString;
      t2 = this._sourceStream;
      t2.toString;
      t1.addStream$2$cancelOnError(t2, false).whenComplete$1(t1.get$close(t1));
    }
  };
  A.StreamGroup.prototype = {
    add$1(_, stream) {
      var t1, _this = this;
      if (_this._closed)
        throw A.wrapException(A.StateError$("Can't add a Stream to a closed StreamGroup."));
      t1 = _this._stream_group$_state;
      if (t1 === B._StreamGroupState_dormant)
        _this._subscriptions.putIfAbsent$2(stream, new A.StreamGroup_add_closure());
      else if (t1 === B._StreamGroupState_canceled)
        return stream.listen$1(0, null).cancel$0();
      else
        _this._subscriptions.putIfAbsent$2(stream, new A.StreamGroup_add_closure0(_this, stream));
      return null;
    },
    remove$1(_, stream) {
      var t1 = this._subscriptions,
        subscription = t1.remove$1(0, stream),
        future = subscription == null ? null : subscription.cancel$0();
      if (t1.__js_helper$_length === 0)
        if (this._closed) {
          t1 = this.__StreamGroup__controller_A;
          t1 === $ && A.throwUnnamedLateFieldNI();
          A.scheduleMicrotask(t1.get$close(t1));
        }
      return future;
    },
    _onListen$0() {
      var stream, t1, t2, t3, _i, entry, exception, onError, _this = this;
      _this._stream_group$_state = B._StreamGroupState_listening;
      for (t1 = _this._subscriptions, t2 = A.List_List$of(t1.get$entries(t1), true, _this.$ti._eval$1("MapEntry<Stream<1>,StreamSubscription<1>?>")), t3 = t2.length, _i = 0; _i < t3; ++_i) {
        entry = t2[_i];
        if (entry.value != null)
          continue;
        stream = entry.key;
        try {
          t1.$indexSet(0, stream, _this._listenToStream$1(stream));
        } catch (exception) {
          t1 = _this._onCancel$0();
          if (t1 != null) {
            onError = new A.StreamGroup__onListen_closure();
            t2 = t1.$ti;
            t3 = $.Zone__current;
            if (t3 !== B.C__RootZone)
              onError = A._registerErrorHandler(onError, t3);
            t1._addListener$1(new A._FutureListener(new A._Future(t3, t2), 2, null, onError, t2._eval$1("@<1>")._bind$1(t2._precomputed1)._eval$1("_FutureListener<1,2>")));
          }
          throw exception;
        }
      }
    },
    _onPause$0() {
      var t1, t2, t3;
      this._stream_group$_state = B._StreamGroupState_paused;
      for (t1 = this._subscriptions, t1 = t1.get$values(t1), t1 = new A.MappedIterator(J.get$iterator$ax(t1.__internal$_iterable), t1._f), t2 = A._instanceType(t1)._rest[1]; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        (t3 == null ? t2._as(t3) : t3).pause$0(0);
      }
    },
    _onResume$0() {
      var t1, t2, t3;
      this._stream_group$_state = B._StreamGroupState_listening;
      for (t1 = this._subscriptions, t1 = t1.get$values(t1), t1 = new A.MappedIterator(J.get$iterator$ax(t1.__internal$_iterable), t1._f), t2 = A._instanceType(t1)._rest[1]; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        (t3 == null ? t2._as(t3) : t3).resume$0(0);
      }
    },
    _onCancel$0() {
      var t1, t2, futures;
      this._stream_group$_state = B._StreamGroupState_canceled;
      t1 = this._subscriptions;
      t2 = A.IterableNullableExtension_whereNotNull(t1.get$entries(t1).map$1$1(0, new A.StreamGroup__onCancel_closure(this), type$.nullable_Future_void), type$.Future_void);
      futures = A.List_List$of(t2, true, t2.$ti._eval$1("Iterable.E"));
      t1.clear$0(0);
      return futures.length === 0 ? null : A.Future_wait(futures, false, type$.void);
    },
    _listenToStream$1(stream) {
      var subscription,
        t1 = this.__StreamGroup__controller_A;
      t1 === $ && A.throwUnnamedLateFieldNI();
      subscription = stream.listen$3$onDone$onError(0, t1.get$add(t1), new A.StreamGroup__listenToStream_closure(this, stream), t1.get$addError());
      if (this._stream_group$_state === B._StreamGroupState_paused)
        subscription.pause$0(0);
      return subscription;
    }
  };
  A.StreamGroup_add_closure.prototype = {
    call$0() {
      return null;
    },
    $signature: 2
  };
  A.StreamGroup_add_closure0.prototype = {
    call$0() {
      return this.$this._listenToStream$1(this.stream);
    },
    $signature() {
      return this.$this.$ti._eval$1("StreamSubscription<1>()");
    }
  };
  A.StreamGroup__onListen_closure.prototype = {
    call$1(_) {
    },
    $signature: 68
  };
  A.StreamGroup__onCancel_closure.prototype = {
    call$1(entry) {
      var t1, exception,
        subscription = entry.value;
      try {
        if (subscription != null) {
          t1 = subscription.cancel$0();
          return t1;
        }
        t1 = J.listen$1$z(entry.key, null).cancel$0();
        return t1;
      } catch (exception) {
        return null;
      }
    },
    $signature() {
      return this.$this.$ti._eval$1("Future<~>?(MapEntry<Stream<1>,StreamSubscription<1>?>)");
    }
  };
  A.StreamGroup__listenToStream_closure.prototype = {
    call$0() {
      return this.$this.remove$1(0, this.stream);
    },
    $signature: 0
  };
  A._StreamGroupState.prototype = {
    toString$0(_) {
      return this.name;
    }
  };
  A.StreamQueue.prototype = {
    _updateRequests$0() {
      var t1, t2, t3, t4, _this = this;
      for (t1 = _this._requestQueue, t2 = _this._eventQueue, t3 = t1.$ti._precomputed1; !t1.get$isEmpty(t1);) {
        t4 = t1._head;
        if (t4 === t1._tail)
          A.throwExpression(A.IterableElementError_noElement());
        t4 = t1._table[t4];
        if (t4 == null)
          t4 = t3._as(t4);
        if (t4.update$2(t2, _this._isDone))
          t1.removeFirst$0();
        else
          return;
      }
      if (!_this._isDone)
        _this._stream_queue$_subscription.pause$0(0);
    },
    _ensureListening$0() {
      var t1, _this = this;
      if (_this._isDone)
        return;
      t1 = _this._stream_queue$_subscription;
      if (t1 == null)
        _this._stream_queue$_subscription = _this._stream_queue$_source.listen$3$onDone$onError(0, new A.StreamQueue__ensureListening_closure(_this), new A.StreamQueue__ensureListening_closure0(_this), new A.StreamQueue__ensureListening_closure1(_this));
      else
        t1.resume$0(0);
    },
    _addResult$1(result) {
      ++this._eventsReceived;
      this._eventQueue._queue_list$_add$1(result);
      this._updateRequests$0();
    },
    _addRequest$1(request) {
      var _this = this,
        t1 = _this._requestQueue;
      if (t1._head === t1._tail) {
        if (request.update$2(_this._eventQueue, _this._isDone))
          return;
        _this._ensureListening$0();
      }
      t1._add$1(request);
    }
  };
  A.StreamQueue__ensureListening_closure.prototype = {
    call$1(data) {
      var t1 = this.$this;
      t1._addResult$1(new A.ValueResult(data, t1.$ti._eval$1("ValueResult<1>")));
    },
    $signature() {
      return this.$this.$ti._eval$1("~(1)");
    }
  };
  A.StreamQueue__ensureListening_closure1.prototype = {
    call$2(error, stackTrace) {
      this.$this._addResult$1(new A.ErrorResult(error, stackTrace));
    },
    $signature: 62
  };
  A.StreamQueue__ensureListening_closure0.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._stream_queue$_subscription = null;
      t1._isDone = true;
      t1._updateRequests$0();
    },
    $signature: 0
  };
  A._NextRequest.prototype = {
    update$2(events, isDone) {
      if (!events.get$isEmpty(events)) {
        events.removeFirst$0().complete$1(this._completer);
        return true;
      }
      if (isDone) {
        this._completer.completeError$2(new A.StateError("No elements"), A.StackTrace_current());
        return true;
      }
      return false;
    },
    $is_EventRequest: 1
  };
  A._isStrictMode_closure.prototype = {
    call$0() {
      var exception;
      try {
        "".name = null;
        return false;
      } catch (exception) {
        return true;
      }
    },
    $signature: 1
  };
  A.Repl.prototype = {};
  A.alwaysValid_closure.prototype = {
    call$1(text) {
      return true;
    },
    $signature: 10
  };
  A.ReplAdapter.prototype = {
    runAsync$0() {
      var rl, runController, _this = this, t1 = {},
        t2 = J.get$isTTY$x(self.process.stdin),
        output = (t2 == null ? false : t2) ? self.process.stdout : null;
      t2 = _this.repl.prompt;
      rl = J.createInterface$1$x($.$get$readline(), {input: self.process.stdin, output: output, prompt: t2});
      _this.rl = rl;
      t1.statement = "";
      t1.prompt = t2;
      runController = A._Cell$();
      runController._value = A.StreamController_StreamController(_this.get$exit(_this), new A.ReplAdapter_runAsync_closure(t1, _this, rl, runController), null, null, false, type$.String);
      return runController._readLocal$0().get$stream();
    },
    exit$0(_) {
      var t1 = this.rl;
      if (t1 != null)
        J.close$0$x(t1);
      this.rl = null;
    }
  };
  A.ReplAdapter_runAsync_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$handler = 1, $async$currentError, $async$self = this, lineController, lineQueue, line, error, stackTrace, t1, t2, t3, t4, $prompt, prompt0, t5, t6, t7, t8, t9, line0, toZone, statement, exception, $async$exception;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 3;
              lineController = A.StreamController_StreamController(null, null, null, null, false, type$.String);
              t1 = lineController;
              t2 = A.QueueList$(null, type$.Result_String);
              t3 = A.ListQueue$(type$._EventRequest_dynamic);
              lineQueue = new A.StreamQueue(new A._ControllerStream(t1, A.instanceType(t1)._eval$1("_ControllerStream<1>")), t2, t3, type$.StreamQueue_String);
              t1 = $async$self.rl;
              t2 = J.getInterceptor$x(t1);
              t2.on$2(t1, "line", A.allowInterop(new A.ReplAdapter_runAsync__closure(lineController)));
              t3 = $async$self._box_0, t4 = $async$self.$this.repl, $prompt = t4.continuation, prompt0 = t4.prompt, t5 = $async$self.runController, t6 = t5.__late_helper$_name;
            case 6:
              // for condition
              // trivial condition
              t7 = J.get$isTTY$x(self.process.stdin);
              if (t7 == null ? false : t7)
                J.write$1$x(self.process.stdout, t3.prompt);
              t7 = lineQueue;
              t8 = A.instanceType(t7);
              t9 = new A._Future($.Zone__current, t8._eval$1("_Future<1>"));
              t7._addRequest$1(new A._NextRequest(new A._AsyncCompleter(t9, t8._eval$1("_AsyncCompleter<1>")), t8._eval$1("_NextRequest<1>")));
              $async$goto = 8;
              return A._asyncAwait(t9, $async$call$0);
            case 8:
              // returning from await.
              line = $async$result;
              t7 = J.get$isTTY$x(self.process.stdin);
              if (!(t7 == null ? false : t7)) {
                line0 = t3.prompt + A.S(line);
                toZone = $.printToZone;
                if (toZone == null)
                  A.printString(line0);
                else
                  toZone.call$1(line0);
              }
              statement = B.JSString_methods.$add(t3.statement, line);
              t3.statement = statement;
              if (t4.validator.call$1(statement)) {
                t7 = t5._value;
                if (t7 === t5)
                  A.throwExpression(A.LateError$localNI(t6));
                J.add$1$ax(t7, t3.statement);
                t3.statement = "";
                t3.prompt = prompt0;
                t2.setPrompt$1(t1, prompt0);
              } else {
                t3.statement += "\n";
                t3.prompt = $prompt;
                t2.setPrompt$1(t1, $prompt);
              }
              // goto for condition
              $async$goto = 6;
              break;
            case 7:
              // after for
              $async$handler = 1;
              // goto after finally
              $async$goto = 5;
              break;
            case 3:
              // catch
              $async$handler = 2;
              $async$exception = $async$currentError;
              error = A.unwrapException($async$exception);
              stackTrace = A.getTraceFromException($async$exception);
              t1 = $async$self.runController;
              t1._readLocal$0().addError$2(error, stackTrace);
              $async$goto = 9;
              return A._asyncAwait($async$self.$this.exit$0(0), $async$call$0);
            case 9:
              // returning from await.
              J.close$0$x(t1._readLocal$0());
              // goto after finally
              $async$goto = 5;
              break;
            case 2:
              // uncaught
              // goto rethrow
              $async$goto = 1;
              break;
            case 5:
              // after finally
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A.ReplAdapter_runAsync__closure.prototype = {
    call$1(value) {
      return this.lineController.add$1(0, A._asString(value));
    },
    $signature: 127
  };
  A.Stdin.prototype = {};
  A.Stdout.prototype = {};
  A.ReadlineModule.prototype = {};
  A.ReadlineOptions.prototype = {};
  A.ReadlineInterface.prototype = {};
  A.EmptyUnmodifiableSet.prototype = {
    get$iterator(_) {
      return B.C_EmptyIterator;
    },
    get$length(_) {
      return 0;
    },
    contains$1(_, element) {
      return false;
    },
    toSet$0(_) {
      return A.LinkedHashSet_LinkedHashSet$_empty(this.$ti._precomputed1);
    },
    $isEfficientLengthIterable: 1,
    $isSet: 1
  };
  A._EmptyUnmodifiableSet_IterableBase_UnmodifiableSetMixin.prototype = {};
  A.DefaultEquality.prototype = {};
  A.IterableEquality.prototype = {
    equals$2(_, elements1, elements2) {
      var it1, it2, hasNext;
      if (elements1 === elements2)
        return true;
      it1 = J.get$iterator$ax(elements1);
      it2 = J.get$iterator$ax(elements2);
      for (; true;) {
        hasNext = it1.moveNext$0();
        if (hasNext !== it2.moveNext$0())
          return false;
        if (!hasNext)
          return true;
        if (!J.$eq$(it1.get$current(it1), it2.get$current(it2)))
          return false;
      }
    },
    hash$1(elements) {
      var t1, hash, _i;
      for (t1 = elements.length, hash = 0, _i = 0; _i < elements.length; elements.length === t1 || (0, A.throwConcurrentModificationError)(elements), ++_i) {
        hash = hash + J.get$hashCode$(elements[_i]) & 2147483647;
        hash = hash + (hash << 10 >>> 0) & 2147483647;
        hash ^= hash >>> 6;
      }
      hash = hash + (hash << 3 >>> 0) & 2147483647;
      hash ^= hash >>> 11;
      return hash + (hash << 15 >>> 0) & 2147483647;
    }
  };
  A.ListEquality.prototype = {
    equals$2(_, list1, list2) {
      var t1, $length, t2, i;
      if (list1 == null ? list2 == null : list1 === list2)
        return true;
      if (list1 == null || list2 == null)
        return false;
      t1 = J.getInterceptor$asx(list1);
      $length = t1.get$length(list1);
      t2 = J.getInterceptor$asx(list2);
      if ($length !== t2.get$length(list2))
        return false;
      for (i = 0; i < $length; ++i)
        if (!J.$eq$(t1.$index(list1, i), t2.$index(list2, i)))
          return false;
      return true;
    },
    hash$1(list) {
      var hash, i;
      for (hash = 0, i = 0; i < list.length; ++i) {
        hash = hash + J.get$hashCode$(list[i]) & 2147483647;
        hash = hash + (hash << 10 >>> 0) & 2147483647;
        hash ^= hash >>> 6;
      }
      hash = hash + (hash << 3 >>> 0) & 2147483647;
      hash ^= hash >>> 11;
      return hash + (hash << 15 >>> 0) & 2147483647;
    }
  };
  A._MapEntry.prototype = {
    get$hashCode(_) {
      return 3 * J.get$hashCode$(this.key) + 7 * J.get$hashCode$(this.value) & 2147483647;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A._MapEntry && J.$eq$(this.key, other.key) && J.$eq$(this.value, other.value);
    }
  };
  A.MapEquality.prototype = {
    equals$2(_, map1, map2) {
      var equalElementCounts, t1, key, entry, count;
      if (map1 === map2)
        return true;
      if (map1.get$length(map1) !== map2.get$length(map2))
        return false;
      equalElementCounts = A.HashMap_HashMap(type$._MapEntry, type$.int);
      for (t1 = J.get$iterator$ax(map1.get$keys(map1)); t1.moveNext$0();) {
        key = t1.get$current(t1);
        entry = new A._MapEntry(this, key, map1.$index(0, key));
        count = equalElementCounts.$index(0, entry);
        equalElementCounts.$indexSet(0, entry, (count == null ? 0 : count) + 1);
      }
      for (t1 = J.get$iterator$ax(map2.get$keys(map2)); t1.moveNext$0();) {
        key = t1.get$current(t1);
        entry = new A._MapEntry(this, key, map2.$index(0, key));
        count = equalElementCounts.$index(0, entry);
        if (count == null || count === 0)
          return false;
        equalElementCounts.$indexSet(0, entry, count - 1);
      }
      return true;
    },
    hash$1(map) {
      var t1, t2, hash, key, keyHash, t3;
      for (t1 = J.get$iterator$ax(map.get$keys(map)), t2 = A._instanceType(this)._rest[1], hash = 0; t1.moveNext$0();) {
        key = t1.get$current(t1);
        keyHash = J.get$hashCode$(key);
        t3 = map.$index(0, key);
        hash = hash + 3 * keyHash + 7 * J.get$hashCode$(t3 == null ? t2._as(t3) : t3) & 2147483647;
      }
      hash = hash + (hash << 3 >>> 0) & 2147483647;
      hash ^= hash >>> 11;
      return hash + (hash << 15 >>> 0) & 2147483647;
    }
  };
  A.QueueList.prototype = {
    add$1(_, element) {
      this._queue_list$_add$1(element);
    },
    addAll$1(_, iterable) {
      var addCount, $length, t1, endSpace, t2, preSpace, _this = this;
      if (type$.List_dynamic._is(iterable)) {
        addCount = J.get$length$asx(iterable);
        $length = _this.get$length(_this);
        t1 = $length + addCount;
        if (t1 >= J.get$length$asx(_this._queue_list$_table)) {
          _this._preGrow$1(t1);
          J.setRange$4$ax(_this._queue_list$_table, $length, t1, iterable, 0);
          _this.set$_queue_list$_tail(_this.get$_queue_list$_tail() + addCount);
        } else {
          endSpace = J.get$length$asx(_this._queue_list$_table) - _this.get$_queue_list$_tail();
          t1 = _this._queue_list$_table;
          t2 = J.getInterceptor$ax(t1);
          if (addCount < endSpace) {
            t2.setRange$4(t1, _this.get$_queue_list$_tail(), _this.get$_queue_list$_tail() + addCount, iterable, 0);
            _this.set$_queue_list$_tail(_this.get$_queue_list$_tail() + addCount);
          } else {
            preSpace = addCount - endSpace;
            t2.setRange$4(t1, _this.get$_queue_list$_tail(), _this.get$_queue_list$_tail() + endSpace, iterable, 0);
            J.setRange$4$ax(_this._queue_list$_table, 0, preSpace, iterable, endSpace);
            _this.set$_queue_list$_tail(preSpace);
          }
        }
      } else
        for (t1 = J.get$iterator$ax(iterable); t1.moveNext$0();)
          _this._queue_list$_add$1(t1.get$current(t1));
    },
    cast$1$0(_, $T) {
      return new A._CastQueueList(this, J.cast$1$0$ax(this._queue_list$_table, $T), -1, -1, A._instanceType(this)._eval$1("@<QueueList.E>")._bind$1($T)._eval$1("_CastQueueList<1,2>"));
    },
    toString$0(_) {
      return A.Iterable_iterableToFullString(this, "{", "}");
    },
    addFirst$1(element) {
      var _this = this;
      _this.set$_queue_list$_head((_this.get$_queue_list$_head() - 1 & J.get$length$asx(_this._queue_list$_table) - 1) >>> 0);
      J.$indexSet$ax(_this._queue_list$_table, _this.get$_queue_list$_head(), element);
      if (_this.get$_queue_list$_head() === _this.get$_queue_list$_tail())
        _this._queue_list$_grow$0();
    },
    removeFirst$0() {
      var result, _this = this;
      if (_this.get$_queue_list$_head() === _this.get$_queue_list$_tail())
        throw A.wrapException(A.StateError$("No element"));
      result = J.$index$asx(_this._queue_list$_table, _this.get$_queue_list$_head());
      if (result == null)
        result = A._instanceType(_this)._eval$1("QueueList.E")._as(result);
      J.$indexSet$ax(_this._queue_list$_table, _this.get$_queue_list$_head(), null);
      _this.set$_queue_list$_head((_this.get$_queue_list$_head() + 1 & J.get$length$asx(_this._queue_list$_table) - 1) >>> 0);
      return result;
    },
    removeLast$0(_) {
      var result, _this = this;
      if (_this.get$_queue_list$_head() === _this.get$_queue_list$_tail())
        throw A.wrapException(A.StateError$("No element"));
      _this.set$_queue_list$_tail((_this.get$_queue_list$_tail() - 1 & J.get$length$asx(_this._queue_list$_table) - 1) >>> 0);
      result = J.$index$asx(_this._queue_list$_table, _this.get$_queue_list$_tail());
      if (result == null)
        result = A._instanceType(_this)._eval$1("QueueList.E")._as(result);
      J.$indexSet$ax(_this._queue_list$_table, _this.get$_queue_list$_tail(), null);
      return result;
    },
    get$length(_) {
      return (this.get$_queue_list$_tail() - this.get$_queue_list$_head() & J.get$length$asx(this._queue_list$_table) - 1) >>> 0;
    },
    set$length(_, value) {
      var delta, newTail, t1, t2, _this = this;
      if (value < 0)
        throw A.wrapException(A.RangeError$("Length " + value + " may not be negative."));
      if (value > _this.get$length(_this) && !A._instanceType(_this)._eval$1("QueueList.E")._is(null))
        throw A.wrapException(A.UnsupportedError$("The length can only be increased when the element type is nullable, but the current element type is `" + A.createRuntimeType(A._instanceType(_this)._eval$1("QueueList.E")).toString$0(0) + "`."));
      delta = value - _this.get$length(_this);
      if (delta >= 0) {
        if (J.get$length$asx(_this._queue_list$_table) <= value)
          _this._preGrow$1(value);
        _this.set$_queue_list$_tail((_this.get$_queue_list$_tail() + delta & J.get$length$asx(_this._queue_list$_table) - 1) >>> 0);
        return;
      }
      newTail = _this.get$_queue_list$_tail() + delta;
      t1 = _this._queue_list$_table;
      if (newTail >= 0)
        J.fillRange$3$ax(t1, newTail, _this.get$_queue_list$_tail(), null);
      else {
        newTail += J.get$length$asx(t1);
        J.fillRange$3$ax(_this._queue_list$_table, 0, _this.get$_queue_list$_tail(), null);
        t1 = _this._queue_list$_table;
        t2 = J.getInterceptor$asx(t1);
        t2.fillRange$3(t1, newTail, t2.get$length(t1), null);
      }
      _this.set$_queue_list$_tail(newTail);
    },
    $index(_, index) {
      var t1, _this = this;
      if (index < 0 || index >= _this.get$length(_this))
        throw A.wrapException(A.RangeError$("Index " + index + " must be in the range [0.." + _this.get$length(_this) + ")."));
      t1 = J.$index$asx(_this._queue_list$_table, (_this.get$_queue_list$_head() + index & J.get$length$asx(_this._queue_list$_table) - 1) >>> 0);
      return t1 == null ? A._instanceType(_this)._eval$1("QueueList.E")._as(t1) : t1;
    },
    $indexSet(_, index, value) {
      var _this = this;
      if (index < 0 || index >= _this.get$length(_this))
        throw A.wrapException(A.RangeError$("Index " + index + " must be in the range [0.." + _this.get$length(_this) + ")."));
      J.$indexSet$ax(_this._queue_list$_table, (_this.get$_queue_list$_head() + index & J.get$length$asx(_this._queue_list$_table) - 1) >>> 0, value);
    },
    _queue_list$_add$1(element) {
      var _this = this;
      J.$indexSet$ax(_this._queue_list$_table, _this.get$_queue_list$_tail(), element);
      _this.set$_queue_list$_tail((_this.get$_queue_list$_tail() + 1 & J.get$length$asx(_this._queue_list$_table) - 1) >>> 0);
      if (_this.get$_queue_list$_head() === _this.get$_queue_list$_tail())
        _this._queue_list$_grow$0();
    },
    _queue_list$_grow$0() {
      var _this = this,
        newTable = A.List_List$filled(J.get$length$asx(_this._queue_list$_table) * 2, null, false, A._instanceType(_this)._eval$1("QueueList.E?")),
        split = J.get$length$asx(_this._queue_list$_table) - _this.get$_queue_list$_head();
      B.JSArray_methods.setRange$4(newTable, 0, split, _this._queue_list$_table, _this.get$_queue_list$_head());
      B.JSArray_methods.setRange$4(newTable, split, split + _this.get$_queue_list$_head(), _this._queue_list$_table, 0);
      _this.set$_queue_list$_head(0);
      _this.set$_queue_list$_tail(J.get$length$asx(_this._queue_list$_table));
      _this._queue_list$_table = newTable;
    },
    _writeToList$1(target) {
      var $length, firstPartSize, _this = this;
      if (_this.get$_queue_list$_head() <= _this.get$_queue_list$_tail()) {
        $length = _this.get$_queue_list$_tail() - _this.get$_queue_list$_head();
        B.JSArray_methods.setRange$4(target, 0, $length, _this._queue_list$_table, _this.get$_queue_list$_head());
        return $length;
      } else {
        firstPartSize = J.get$length$asx(_this._queue_list$_table) - _this.get$_queue_list$_head();
        B.JSArray_methods.setRange$4(target, 0, firstPartSize, _this._queue_list$_table, _this.get$_queue_list$_head());
        B.JSArray_methods.setRange$4(target, firstPartSize, firstPartSize + _this.get$_queue_list$_tail(), _this._queue_list$_table, 0);
        return _this.get$_queue_list$_tail() + firstPartSize;
      }
    },
    _preGrow$1(newElementCount) {
      var _this = this,
        newTable = A.List_List$filled(A.QueueList__nextPowerOf2(newElementCount + B.JSInt_methods._shrOtherPositive$1(newElementCount, 1)), null, false, A._instanceType(_this)._eval$1("QueueList.E?"));
      _this.set$_queue_list$_tail(_this._writeToList$1(newTable));
      _this._queue_list$_table = newTable;
      _this.set$_queue_list$_head(0);
    },
    $isEfficientLengthIterable: 1,
    $isQueue: 1,
    $isIterable: 1,
    $isList: 1,
    get$_queue_list$_head() {
      return this._queue_list$_head;
    },
    get$_queue_list$_tail() {
      return this._queue_list$_tail;
    },
    set$_queue_list$_head(val) {
      return this._queue_list$_head = val;
    },
    set$_queue_list$_tail(val) {
      return this._queue_list$_tail = val;
    }
  };
  A._CastQueueList.prototype = {
    get$_queue_list$_head() {
      return this._queue_list$_delegate.get$_queue_list$_head();
    },
    set$_queue_list$_head(value) {
      this._queue_list$_delegate.set$_queue_list$_head(value);
    },
    get$_queue_list$_tail() {
      return this._queue_list$_delegate.get$_queue_list$_tail();
    },
    set$_queue_list$_tail(value) {
      this._queue_list$_delegate.set$_queue_list$_tail(value);
    }
  };
  A._QueueList_Object_ListMixin.prototype = {};
  A.UnionSet.prototype = {
    get$length(_) {
      var t1 = this.get$_union_set$_iterable();
      t1 = t1.get$length(t1);
      return t1;
    },
    get$iterator(_) {
      var t1 = this.get$_union_set$_iterable();
      return t1.get$iterator(t1);
    },
    get$_union_set$_iterable() {
      var t1 = this._sets,
        t2 = this.$ti._precomputed1,
        t3 = A._instanceType(t1)._eval$1("@<1>")._bind$1(t2)._eval$1("ExpandIterable<1,2>");
      t2 = A.LinkedHashSet_LinkedHashSet$_empty(t2);
      return new A.WhereIterable(new A.ExpandIterable(t1, new A.UnionSet__iterable_closure(this), t3), t2.get$add(t2), t3._eval$1("WhereIterable<Iterable.E>"));
    },
    contains$1(_, element) {
      return this._sets.any$1(0, new A.UnionSet_contains_closure(this, element));
    },
    toSet$0(_) {
      var t2, t3, t4,
        t1 = A.LinkedHashSet_LinkedHashSet$_empty(this.$ti._precomputed1);
      for (t2 = this._sets, t2 = A._LinkedHashSetIterator$(t2, t2._collection$_modifications), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t4 = t2._collection$_current;
        t1.addAll$1(0, t4 == null ? t3._as(t4) : t4);
      }
      return t1;
    }
  };
  A.UnionSet__iterable_closure.prototype = {
    call$1(set) {
      return set;
    },
    $signature() {
      return this.$this.$ti._eval$1("Set<1>(Set<1>)");
    }
  };
  A.UnionSet_contains_closure.prototype = {
    call$1(set) {
      return set.contains$1(0, this.element);
    },
    $signature() {
      return this.$this.$ti._eval$1("bool(Set<1>)");
    }
  };
  A._UnionSet_SetBase_UnmodifiableSetMixin.prototype = {};
  A.UnmodifiableSetView0.prototype = {};
  A.UnmodifiableSetMixin.prototype = {
    add$1(_, value) {
      return A.UnmodifiableSetMixin__throw();
    },
    addAll$1(_, elements) {
      return A.UnmodifiableSetMixin__throw();
    },
    remove$1(_, value) {
      return A.UnmodifiableSetMixin__throw();
    }
  };
  A._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin.prototype = {};
  A._DelegatingIterableBase.prototype = {
    contains$1(_, element) {
      return J.contains$1$asx(this.get$_base(), element);
    },
    elementAt$1(_, index) {
      return J.elementAt$1$ax(this.get$_base(), index);
    },
    get$first(_) {
      return J.get$first$ax(this.get$_base());
    },
    get$isEmpty(_) {
      return J.get$isEmpty$asx(this.get$_base());
    },
    get$isNotEmpty(_) {
      return J.get$isNotEmpty$asx(this.get$_base());
    },
    get$iterator(_) {
      return J.get$iterator$ax(this.get$_base());
    },
    get$last(_) {
      return J.get$last$ax(this.get$_base());
    },
    get$length(_) {
      return J.get$length$asx(this.get$_base());
    },
    map$1$1(_, f, $T) {
      return J.map$1$1$ax(this.get$_base(), f, $T);
    },
    get$single(_) {
      return J.get$single$ax(this.get$_base());
    },
    skip$1(_, n) {
      return J.skip$1$ax(this.get$_base(), n);
    },
    take$1(_, n) {
      return J.take$1$ax(this.get$_base(), n);
    },
    toList$1$growable(_, growable) {
      return J.toList$1$growable$ax(this.get$_base(), true);
    },
    toList$0($receiver) {
      return this.toList$1$growable($receiver, true);
    },
    toSet$0(_) {
      return J.toSet$0$ax(this.get$_base());
    },
    where$1(_, test) {
      return J.where$1$ax(this.get$_base(), test);
    },
    toString$0(_) {
      return J.toString$0$(this.get$_base());
    },
    $isIterable: 1
  };
  A.DelegatingSet.prototype = {
    add$1(_, value) {
      return this._base.add$1(0, value);
    },
    addAll$1(_, elements) {
      this._base.addAll$1(0, elements);
    },
    toSet$0(_) {
      return new A.DelegatingSet(this._base.toSet$0(0), A._instanceType(this)._eval$1("DelegatingSet<1>"));
    },
    $isEfficientLengthIterable: 1,
    $isSet: 1,
    get$_base() {
      return this._base;
    }
  };
  A.MapKeySet.prototype = {
    get$_base() {
      var t1 = this._baseMap;
      return t1.get$keys(t1);
    },
    contains$1(_, element) {
      return this._baseMap.containsKey$1(element);
    },
    get$isEmpty(_) {
      var t1 = this._baseMap;
      return t1.get$isEmpty(t1);
    },
    get$isNotEmpty(_) {
      var t1 = this._baseMap;
      return t1.get$isNotEmpty(t1);
    },
    get$length(_) {
      var t1 = this._baseMap;
      return t1.get$length(t1);
    },
    toString$0(_) {
      return A.Iterable_iterableToFullString(this, "{", "}");
    },
    difference$1(other) {
      return J.where$1$ax(this.get$_base(), new A.MapKeySet_difference_closure(this, other)).toSet$0(0);
    },
    $isEfficientLengthIterable: 1,
    $isSet: 1
  };
  A.MapKeySet_difference_closure.prototype = {
    call$1(element) {
      return !this.other._source.contains$1(0, element);
    },
    $signature() {
      return this.$this.$ti._eval$1("bool(1)");
    }
  };
  A._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin.prototype = {};
  A.BufferModule.prototype = {};
  A.BufferConstants.prototype = {};
  A.Buffer.prototype = {};
  A.ConsoleModule.prototype = {};
  A.Console.prototype = {};
  A.EventEmitter.prototype = {};
  A.FS.prototype = {};
  A.FSConstants.prototype = {};
  A.FSWatcher.prototype = {};
  A.ReadStream.prototype = {};
  A.ReadStreamOptions.prototype = {};
  A.WriteStream.prototype = {};
  A.WriteStreamOptions.prototype = {};
  A.FileOptions.prototype = {};
  A.StatOptions.prototype = {};
  A.MkdirOptions.prototype = {};
  A.RmdirOptions.prototype = {};
  A.WatchOptions.prototype = {};
  A.WatchFileOptions.prototype = {};
  A.Stats.prototype = {};
  A.Promise.prototype = {};
  A.Date.prototype = {};
  A.JsError.prototype = {};
  A.Atomics.prototype = {};
  A.Modules.prototype = {};
  A.Module.prototype = {};
  A.Net.prototype = {};
  A.Socket.prototype = {};
  A.NetAddress.prototype = {};
  A.NetServer.prototype = {};
  A.NodeJsError.prototype = {};
  A.JsAssertionError.prototype = {};
  A.JsRangeError.prototype = {};
  A.JsReferenceError.prototype = {};
  A.JsSyntaxError.prototype = {};
  A.JsTypeError.prototype = {};
  A.JsSystemError.prototype = {};
  A.Process.prototype = {};
  A.CPUUsage.prototype = {};
  A.Release.prototype = {};
  A.StreamModule.prototype = {};
  A.Readable.prototype = {};
  A.Writable.prototype = {};
  A.Duplex.prototype = {};
  A.Transform.prototype = {};
  A.WritableOptions.prototype = {};
  A.ReadableOptions.prototype = {};
  A.Immediate.prototype = {};
  A.Timeout.prototype = {};
  A.TTY.prototype = {};
  A.TTYReadStream.prototype = {};
  A.TTYWriteStream.prototype = {};
  A.Util.prototype = {};
  A.promiseToFuture_closure.prototype = {
    call$1(value) {
      this.completer.complete$1(value);
    },
    $signature: 68
  };
  A.promiseToFuture_closure0.prototype = {
    call$1(error) {
      this.completer.completeError$1(error);
    },
    $signature: 68
  };
  A.futureToPromise_closure.prototype = {
    call$2(resolve, reject) {
      this.future.then$1$2$onError(0, new A.futureToPromise__closure(resolve, this.T), reject, type$.dynamic);
    },
    $signature: 470
  };
  A.futureToPromise__closure.prototype = {
    call$1(result) {
      return this.resolve.call$1(result);
    },
    $signature() {
      return this.T._eval$1("@(0)");
    }
  };
  A.Context.prototype = {
    absolute$15(part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15) {
      var t1;
      A._validateArgList("absolute", A._setArrayType([part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15], type$.JSArray_nullable_String));
      if (part2 == null) {
        t1 = this.style;
        t1 = t1.rootLength$1(part1) > 0 && !t1.isRootRelative$1(part1);
      } else
        t1 = false;
      if (t1)
        return part1;
      t1 = this._context$_current;
      return this.join$16(0, t1 == null ? A.current() : t1, part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15);
    },
    absolute$1(part1) {
      return this.absolute$15(part1, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
    },
    dirname$1(path) {
      var t1, t2,
        parsed = A.ParsedPath_ParsedPath$parse(path, this.style);
      parsed.removeTrailingSeparators$0();
      t1 = parsed.parts;
      t2 = t1.length;
      if (t2 === 0) {
        t1 = parsed.root;
        return t1 == null ? "." : t1;
      }
      if (t2 === 1) {
        t1 = parsed.root;
        return t1 == null ? "." : t1;
      }
      B.JSArray_methods.removeLast$0(t1);
      parsed.separators.pop();
      parsed.removeTrailingSeparators$0();
      return parsed.toString$0(0);
    },
    join$16(_, part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15, part16) {
      var parts = A._setArrayType([part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14, part15, part16], type$.JSArray_nullable_String);
      A._validateArgList("join", parts);
      return this.joinAll$1(new A.WhereTypeIterable(parts, type$.WhereTypeIterable_String));
    },
    join$2($receiver, part1, part2) {
      return this.join$16($receiver, part1, part2, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
    },
    joinAll$1(parts) {
      var t1, t2, t3, needsSeparator, isAbsoluteAndNotRootRelative, t4, t5, parsed, path;
      for (t1 = parts.get$iterator(parts), t2 = new A.WhereIterator(t1, new A.Context_joinAll_closure()), t3 = this.style, needsSeparator = false, isAbsoluteAndNotRootRelative = false, t4 = ""; t2.moveNext$0();) {
        t5 = t1.get$current(t1);
        if (t3.isRootRelative$1(t5) && isAbsoluteAndNotRootRelative) {
          parsed = A.ParsedPath_ParsedPath$parse(t5, t3);
          path = t4.charCodeAt(0) == 0 ? t4 : t4;
          t4 = B.JSString_methods.substring$2(path, 0, t3.rootLength$2$withDrive(path, true));
          parsed.root = t4;
          if (t3.needsSeparator$1(t4))
            parsed.separators[0] = t3.get$separator(t3);
          t4 = "" + parsed.toString$0(0);
        } else if (t3.rootLength$1(t5) > 0) {
          isAbsoluteAndNotRootRelative = !t3.isRootRelative$1(t5);
          t4 = "" + t5;
        } else {
          if (!(t5.length !== 0 && t3.containsSeparator$1(t5[0])))
            if (needsSeparator)
              t4 += t3.get$separator(t3);
          t4 += t5;
        }
        needsSeparator = t3.needsSeparator$1(t5);
      }
      return t4.charCodeAt(0) == 0 ? t4 : t4;
    },
    split$1(_, path) {
      var parsed = A.ParsedPath_ParsedPath$parse(path, this.style),
        t1 = parsed.parts,
        t2 = A._arrayInstanceType(t1)._eval$1("WhereIterable<1>");
      t2 = A.List_List$of(new A.WhereIterable(t1, new A.Context_split_closure(), t2), true, t2._eval$1("Iterable.E"));
      parsed.parts = t2;
      t1 = parsed.root;
      if (t1 != null)
        B.JSArray_methods.insert$2(t2, 0, t1);
      return parsed.parts;
    },
    canonicalize$1(_, path) {
      var t1, parsed;
      path = this.absolute$1(path);
      t1 = this.style;
      if (t1 !== $.$get$Style_windows() && !this._needsNormalization$1(path))
        return path;
      parsed = A.ParsedPath_ParsedPath$parse(path, t1);
      parsed.normalize$1$canonicalize(true);
      return parsed.toString$0(0);
    },
    normalize$1(path) {
      var parsed;
      if (!this._needsNormalization$1(path))
        return path;
      parsed = A.ParsedPath_ParsedPath$parse(path, this.style);
      parsed.normalize$0();
      return parsed.toString$0(0);
    },
    _needsNormalization$1(path) {
      var i, start, previous, t2, t3, previousPrevious, codeUnit, t4,
        t1 = this.style,
        root = t1.rootLength$1(path);
      if (root !== 0) {
        if (t1 === $.$get$Style_windows())
          for (i = 0; i < root; ++i)
            if (path.charCodeAt(i) === 47)
              return true;
        start = root;
        previous = 47;
      } else {
        start = 0;
        previous = null;
      }
      for (t2 = new A.CodeUnits(path)._string, t3 = t2.length, i = start, previousPrevious = null; i < t3; ++i, previousPrevious = previous, previous = codeUnit) {
        codeUnit = t2.charCodeAt(i);
        if (t1.isSeparator$1(codeUnit)) {
          if (t1 === $.$get$Style_windows() && codeUnit === 47)
            return true;
          if (previous != null && t1.isSeparator$1(previous))
            return true;
          if (previous === 46)
            t4 = previousPrevious == null || previousPrevious === 46 || t1.isSeparator$1(previousPrevious);
          else
            t4 = false;
          if (t4)
            return true;
        }
      }
      if (previous == null)
        return true;
      if (t1.isSeparator$1(previous))
        return true;
      if (previous === 46)
        t1 = previousPrevious == null || t1.isSeparator$1(previousPrevious) || previousPrevious === 46;
      else
        t1 = false;
      if (t1)
        return true;
      return false;
    },
    relative$2$from(path, from) {
      var fromParsed, pathParsed, t2, t3, _this = this,
        _s26_ = 'Unable to find a path to "',
        t1 = from == null;
      if (t1 && _this.style.rootLength$1(path) <= 0)
        return _this.normalize$1(path);
      if (t1) {
        t1 = _this._context$_current;
        from = t1 == null ? A.current() : t1;
      } else
        from = _this.absolute$1(from);
      t1 = _this.style;
      if (t1.rootLength$1(from) <= 0 && t1.rootLength$1(path) > 0)
        return _this.normalize$1(path);
      if (t1.rootLength$1(path) <= 0 || t1.isRootRelative$1(path))
        path = _this.absolute$1(path);
      if (t1.rootLength$1(path) <= 0 && t1.rootLength$1(from) > 0)
        throw A.wrapException(A.PathException$(_s26_ + path + '" from "' + from + '".'));
      fromParsed = A.ParsedPath_ParsedPath$parse(from, t1);
      fromParsed.normalize$0();
      pathParsed = A.ParsedPath_ParsedPath$parse(path, t1);
      pathParsed.normalize$0();
      t2 = fromParsed.parts;
      if (t2.length !== 0 && J.$eq$(t2[0], "."))
        return pathParsed.toString$0(0);
      t2 = fromParsed.root;
      t3 = pathParsed.root;
      if (t2 != t3)
        t2 = t2 == null || t3 == null || !t1.pathsEqual$2(t2, t3);
      else
        t2 = false;
      if (t2)
        return pathParsed.toString$0(0);
      while (true) {
        t2 = fromParsed.parts;
        if (t2.length !== 0) {
          t3 = pathParsed.parts;
          t2 = t3.length !== 0 && t1.pathsEqual$2(t2[0], t3[0]);
        } else
          t2 = false;
        if (!t2)
          break;
        B.JSArray_methods.removeAt$1(fromParsed.parts, 0);
        B.JSArray_methods.removeAt$1(fromParsed.separators, 1);
        B.JSArray_methods.removeAt$1(pathParsed.parts, 0);
        B.JSArray_methods.removeAt$1(pathParsed.separators, 1);
      }
      t2 = fromParsed.parts;
      if (t2.length !== 0 && J.$eq$(t2[0], ".."))
        throw A.wrapException(A.PathException$(_s26_ + path + '" from "' + from + '".'));
      t2 = type$.String;
      B.JSArray_methods.insertAll$2(pathParsed.parts, 0, A.List_List$filled(fromParsed.parts.length, "..", false, t2));
      t3 = pathParsed.separators;
      t3[0] = "";
      B.JSArray_methods.insertAll$2(t3, 1, A.List_List$filled(fromParsed.parts.length, t1.get$separator(t1), false, t2));
      t1 = pathParsed.parts;
      t2 = t1.length;
      if (t2 === 0)
        return ".";
      if (t2 > 1 && J.$eq$(B.JSArray_methods.get$last(t1), ".")) {
        B.JSArray_methods.removeLast$0(pathParsed.parts);
        t1 = pathParsed.separators;
        t1.pop();
        t1.pop();
        t1.push("");
      }
      pathParsed.root = "";
      pathParsed.removeTrailingSeparators$0();
      return pathParsed.toString$0(0);
    },
    relative$1(path) {
      return this.relative$2$from(path, null);
    },
    _isWithinOrEquals$2($parent, child) {
      var relative, t1, parentIsAbsolute, childIsAbsolute, childIsRootRelative, parentIsRootRelative, result, exception, _this = this;
      $parent = $parent;
      child = child;
      t1 = _this.style;
      parentIsAbsolute = t1.rootLength$1($parent) > 0;
      childIsAbsolute = t1.rootLength$1(child) > 0;
      if (parentIsAbsolute && !childIsAbsolute) {
        child = _this.absolute$1(child);
        if (t1.isRootRelative$1($parent))
          $parent = _this.absolute$1($parent);
      } else if (childIsAbsolute && !parentIsAbsolute) {
        $parent = _this.absolute$1($parent);
        if (t1.isRootRelative$1(child))
          child = _this.absolute$1(child);
      } else if (childIsAbsolute && parentIsAbsolute) {
        childIsRootRelative = t1.isRootRelative$1(child);
        parentIsRootRelative = t1.isRootRelative$1($parent);
        if (childIsRootRelative && !parentIsRootRelative)
          child = _this.absolute$1(child);
        else if (parentIsRootRelative && !childIsRootRelative)
          $parent = _this.absolute$1($parent);
      }
      result = _this._isWithinOrEqualsFast$2($parent, child);
      if (result !== B._PathRelation_inconclusive)
        return result;
      relative = null;
      try {
        relative = _this.relative$2$from(child, $parent);
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.PathException)
          return B._PathRelation_different;
        else
          throw exception;
      }
      if (t1.rootLength$1(relative) > 0)
        return B._PathRelation_different;
      if (J.$eq$(relative, "."))
        return B._PathRelation_equal;
      if (J.$eq$(relative, ".."))
        return B._PathRelation_different;
      return J.get$length$asx(relative) >= 3 && J.startsWith$1$s(relative, "..") && t1.isSeparator$1(J.codeUnitAt$1$s(relative, 2)) ? B._PathRelation_different : B._PathRelation_within;
    },
    _isWithinOrEqualsFast$2($parent, child) {
      var t1, parentRootLength, childRootLength, i, t2, t3, childIndex, parentIndex, lastCodeUnit, lastParentSeparator, parentCodeUnit, childCodeUnit, parentIndex0, direction, _this = this;
      if ($parent === ".")
        $parent = "";
      t1 = _this.style;
      parentRootLength = t1.rootLength$1($parent);
      childRootLength = t1.rootLength$1(child);
      if (parentRootLength !== childRootLength)
        return B._PathRelation_different;
      for (i = 0; i < parentRootLength; ++i)
        if (!t1.codeUnitsEqual$2($parent.charCodeAt(i), child.charCodeAt(i)))
          return B._PathRelation_different;
      t2 = child.length;
      t3 = $parent.length;
      childIndex = childRootLength;
      parentIndex = parentRootLength;
      lastCodeUnit = 47;
      lastParentSeparator = null;
      while (true) {
        if (!(parentIndex < t3 && childIndex < t2))
          break;
        c$0: {
          parentCodeUnit = $parent.charCodeAt(parentIndex);
          childCodeUnit = child.charCodeAt(childIndex);
          if (t1.codeUnitsEqual$2(parentCodeUnit, childCodeUnit)) {
            if (t1.isSeparator$1(parentCodeUnit))
              lastParentSeparator = parentIndex;
            ++parentIndex;
            ++childIndex;
            lastCodeUnit = parentCodeUnit;
            break c$0;
          }
          if (t1.isSeparator$1(parentCodeUnit) && t1.isSeparator$1(lastCodeUnit)) {
            parentIndex0 = parentIndex + 1;
            lastParentSeparator = parentIndex;
            parentIndex = parentIndex0;
            break c$0;
          } else if (t1.isSeparator$1(childCodeUnit) && t1.isSeparator$1(lastCodeUnit)) {
            ++childIndex;
            break c$0;
          }
          if (parentCodeUnit === 46 && t1.isSeparator$1(lastCodeUnit)) {
            ++parentIndex;
            if (parentIndex === t3)
              break;
            parentCodeUnit = $parent.charCodeAt(parentIndex);
            if (t1.isSeparator$1(parentCodeUnit)) {
              parentIndex0 = parentIndex + 1;
              lastParentSeparator = parentIndex;
              parentIndex = parentIndex0;
              break c$0;
            }
            if (parentCodeUnit === 46) {
              ++parentIndex;
              if (parentIndex === t3 || t1.isSeparator$1($parent.charCodeAt(parentIndex)))
                return B._PathRelation_inconclusive;
            }
          }
          if (childCodeUnit === 46 && t1.isSeparator$1(lastCodeUnit)) {
            ++childIndex;
            if (childIndex === t2)
              break;
            childCodeUnit = child.charCodeAt(childIndex);
            if (t1.isSeparator$1(childCodeUnit)) {
              ++childIndex;
              break c$0;
            }
            if (childCodeUnit === 46) {
              ++childIndex;
              if (childIndex === t2 || t1.isSeparator$1(child.charCodeAt(childIndex)))
                return B._PathRelation_inconclusive;
            }
          }
          if (_this._pathDirection$2(child, childIndex) !== B._PathDirection_988)
            return B._PathRelation_inconclusive;
          if (_this._pathDirection$2($parent, parentIndex) !== B._PathDirection_988)
            return B._PathRelation_inconclusive;
          return B._PathRelation_different;
        }
      }
      if (childIndex === t2) {
        if (parentIndex === t3 || t1.isSeparator$1($parent.charCodeAt(parentIndex)))
          lastParentSeparator = parentIndex;
        else if (lastParentSeparator == null)
          lastParentSeparator = Math.max(0, parentRootLength - 1);
        direction = _this._pathDirection$2($parent, lastParentSeparator);
        if (direction === B._PathDirection_8Gl)
          return B._PathRelation_equal;
        return direction === B._PathDirection_ZGD ? B._PathRelation_inconclusive : B._PathRelation_different;
      }
      direction = _this._pathDirection$2(child, childIndex);
      if (direction === B._PathDirection_8Gl)
        return B._PathRelation_equal;
      if (direction === B._PathDirection_ZGD)
        return B._PathRelation_inconclusive;
      return t1.isSeparator$1(child.charCodeAt(childIndex)) || t1.isSeparator$1(lastCodeUnit) ? B._PathRelation_within : B._PathRelation_different;
    },
    _pathDirection$2(path, index) {
      var t1, t2, i, depth, reachedRoot, i0, t3;
      for (t1 = path.length, t2 = this.style, i = index, depth = 0, reachedRoot = false; i < t1;) {
        while (true) {
          if (!(i < t1 && t2.isSeparator$1(path.charCodeAt(i))))
            break;
          ++i;
        }
        if (i === t1)
          break;
        i0 = i;
        while (true) {
          if (!(i0 < t1 && !t2.isSeparator$1(path.charCodeAt(i0))))
            break;
          ++i0;
        }
        t3 = i0 - i;
        if (!(t3 === 1 && path.charCodeAt(i) === 46))
          if (t3 === 2 && path.charCodeAt(i) === 46 && path.charCodeAt(i + 1) === 46) {
            --depth;
            if (depth < 0)
              break;
            if (depth === 0)
              reachedRoot = true;
          } else
            ++depth;
        if (i0 === t1)
          break;
        i = i0 + 1;
      }
      if (depth < 0)
        return B._PathDirection_ZGD;
      if (depth === 0)
        return B._PathDirection_8Gl;
      if (reachedRoot)
        return B._PathDirection_FIw;
      return B._PathDirection_988;
    },
    hash$1(path) {
      var result, parsed, t1, _this = this;
      path = _this.absolute$1(path);
      result = _this._hashFast$1(path);
      if (result != null)
        return result;
      parsed = A.ParsedPath_ParsedPath$parse(path, _this.style);
      parsed.normalize$0();
      t1 = _this._hashFast$1(parsed.toString$0(0));
      t1.toString;
      return t1;
    },
    _hashFast$1(path) {
      var t1, t2, hash, beginning, wasSeparator, i, codeUnit, t3, next;
      for (t1 = path.length, t2 = this.style, hash = 4603, beginning = true, wasSeparator = true, i = 0; i < t1; ++i) {
        codeUnit = t2.canonicalizeCodeUnit$1(path.charCodeAt(i));
        if (t2.isSeparator$1(codeUnit)) {
          wasSeparator = true;
          continue;
        }
        if (codeUnit === 46 && wasSeparator) {
          t3 = i + 1;
          if (t3 === t1)
            break;
          next = path.charCodeAt(t3);
          if (t2.isSeparator$1(next))
            continue;
          if (!beginning)
            if (next === 46) {
              t3 = i + 2;
              t3 = t3 === t1 || t2.isSeparator$1(path.charCodeAt(t3));
            } else
              t3 = false;
          else
            t3 = false;
          if (t3)
            return null;
        }
        hash = ((hash & 67108863) * 33 ^ codeUnit) >>> 0;
        beginning = false;
        wasSeparator = false;
      }
      return hash;
    },
    withoutExtension$1(path) {
      var i,
        parsed = A.ParsedPath_ParsedPath$parse(path, this.style);
      for (i = parsed.parts.length - 1; i >= 0; --i)
        if (J.get$length$asx(parsed.parts[i]) !== 0) {
          parsed.parts[i] = parsed._splitExtension$0()[0];
          break;
        }
      return parsed.toString$0(0);
    },
    toUri$1(path) {
      var t2,
        t1 = this.style;
      if (t1.rootLength$1(path) <= 0)
        return t1.relativePathToUri$1(path);
      else {
        t2 = this._context$_current;
        return t1.absolutePathToUri$1(this.join$2(0, t2 == null ? A.current() : t2, path));
      }
    },
    prettyUri$1(uri) {
      var path, rel, _this = this,
        typedUri = A._parseUri(uri);
      if (typedUri.get$scheme() === "file" && _this.style === $.$get$Style_url())
        return typedUri.toString$0(0);
      else if (typedUri.get$scheme() !== "file" && typedUri.get$scheme() !== "" && _this.style !== $.$get$Style_url())
        return typedUri.toString$0(0);
      path = _this.normalize$1(_this.style.pathFromUri$1(A._parseUri(typedUri)));
      rel = _this.relative$1(path);
      return _this.split$1(0, rel).length > _this.split$1(0, path).length ? path : rel;
    }
  };
  A.Context_joinAll_closure.prototype = {
    call$1(part) {
      return part !== "";
    },
    $signature: 10
  };
  A.Context_split_closure.prototype = {
    call$1(part) {
      return part.length !== 0;
    },
    $signature: 10
  };
  A._validateArgList_closure.prototype = {
    call$1(arg) {
      return arg == null ? "null" : '"' + arg + '"';
    },
    $signature: 473
  };
  A._PathDirection.prototype = {
    toString$0(_) {
      return this.name;
    }
  };
  A._PathRelation.prototype = {
    toString$0(_) {
      return this.name;
    }
  };
  A.InternalStyle.prototype = {
    getRoot$1(path) {
      var $length = this.rootLength$1(path);
      if ($length > 0)
        return B.JSString_methods.substring$2(path, 0, $length);
      return this.isRootRelative$1(path) ? path[0] : null;
    },
    relativePathToUri$1(path) {
      var segments, _null = null,
        t1 = path.length;
      if (t1 === 0)
        return A._Uri__Uri(_null, _null, _null, _null);
      segments = A.Context_Context(this).split$1(0, path);
      if (this.isSeparator$1(path.charCodeAt(t1 - 1)))
        B.JSArray_methods.add$1(segments, "");
      return A._Uri__Uri(_null, _null, segments, _null);
    },
    codeUnitsEqual$2(codeUnit1, codeUnit2) {
      return codeUnit1 === codeUnit2;
    },
    pathsEqual$2(path1, path2) {
      return path1 === path2;
    },
    canonicalizeCodeUnit$1(codeUnit) {
      return codeUnit;
    },
    canonicalizePart$1(part) {
      return part;
    }
  };
  A.ParsedPath.prototype = {
    get$basename() {
      var _this = this,
        t1 = type$.String,
        copy = new A.ParsedPath(_this.style, _this.root, _this.isRootRelative, A.List_List$from(_this.parts, true, t1), A.List_List$from(_this.separators, true, t1));
      copy.removeTrailingSeparators$0();
      t1 = copy.parts;
      if (t1.length === 0) {
        t1 = _this.root;
        return t1 == null ? "" : t1;
      }
      return B.JSArray_methods.get$last(t1);
    },
    get$hasTrailingSeparator() {
      var t1 = this.parts;
      if (t1.length !== 0)
        t1 = J.$eq$(B.JSArray_methods.get$last(t1), "") || !J.$eq$(B.JSArray_methods.get$last(this.separators), "");
      else
        t1 = false;
      return t1;
    },
    removeTrailingSeparators$0() {
      var t1, t2, _this = this;
      while (true) {
        t1 = _this.parts;
        if (!(t1.length !== 0 && J.$eq$(B.JSArray_methods.get$last(t1), "")))
          break;
        B.JSArray_methods.removeLast$0(_this.parts);
        _this.separators.pop();
      }
      t1 = _this.separators;
      t2 = t1.length;
      if (t2 !== 0)
        t1[t2 - 1] = "";
    },
    normalize$1$canonicalize(canonicalize) {
      var t1, t2, t3, leadingDoubles, _i, part, t4, _this = this,
        newParts = A._setArrayType([], type$.JSArray_String);
      for (t1 = _this.parts, t2 = t1.length, t3 = _this.style, leadingDoubles = 0, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        part = t1[_i];
        t4 = J.getInterceptor$(part);
        if (!(t4.$eq(part, ".") || t4.$eq(part, "")))
          if (t4.$eq(part, ".."))
            if (newParts.length !== 0)
              newParts.pop();
            else
              ++leadingDoubles;
          else
            newParts.push(canonicalize ? t3.canonicalizePart$1(part) : part);
      }
      if (_this.root == null)
        B.JSArray_methods.insertAll$2(newParts, 0, A.List_List$filled(leadingDoubles, "..", false, type$.String));
      if (newParts.length === 0 && _this.root == null)
        newParts.push(".");
      _this.parts = newParts;
      _this.separators = A.List_List$filled(newParts.length + 1, t3.get$separator(t3), true, type$.String);
      t1 = _this.root;
      if (t1 == null || newParts.length === 0 || !t3.needsSeparator$1(t1))
        _this.separators[0] = "";
      t1 = _this.root;
      if (t1 != null && t3 === $.$get$Style_windows()) {
        if (canonicalize)
          t1 = _this.root = t1.toLowerCase();
        t1.toString;
        _this.root = A.stringReplaceAllUnchecked(t1, "/", "\\");
      }
      _this.removeTrailingSeparators$0();
    },
    normalize$0() {
      return this.normalize$1$canonicalize(false);
    },
    toString$0(_) {
      var i, _this = this,
        t1 = _this.root;
      t1 = t1 != null ? "" + t1 : "";
      for (i = 0; i < _this.parts.length; ++i)
        t1 = t1 + A.S(_this.separators[i]) + A.S(_this.parts[i]);
      t1 += A.S(B.JSArray_methods.get$last(_this.separators));
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _kthLastIndexOf$3(path, character, k) {
      var index, count, leftMostIndexedCharacter;
      for (index = path.length - 1, count = 0, leftMostIndexedCharacter = 0; index >= 0; --index)
        if (path[index] === character) {
          ++count;
          if (count === k)
            return index;
          leftMostIndexedCharacter = index;
        }
      return leftMostIndexedCharacter;
    },
    _splitExtension$1(level) {
      var t1, file, lastDot;
      if (level <= 0)
        throw A.wrapException(A.RangeError$value(level, "level", "level's value must be greater than 0"));
      t1 = this.parts;
      t1 = new A.CastList(t1, A._arrayInstanceType(t1)._eval$1("CastList<1,String?>"));
      file = t1.lastWhere$2$orElse(t1, new A.ParsedPath__splitExtension_closure(), new A.ParsedPath__splitExtension_closure0());
      if (file == null)
        return A._setArrayType(["", ""], type$.JSArray_String);
      if (file === "..")
        return A._setArrayType(["..", ""], type$.JSArray_String);
      lastDot = this._kthLastIndexOf$3(file, ".", level);
      if (lastDot <= 0)
        return A._setArrayType([file, ""], type$.JSArray_String);
      return A._setArrayType([B.JSString_methods.substring$2(file, 0, lastDot), B.JSString_methods.substring$1(file, lastDot)], type$.JSArray_String);
    },
    _splitExtension$0() {
      return this._splitExtension$1(1);
    }
  };
  A.ParsedPath__splitExtension_closure.prototype = {
    call$1(p) {
      return p !== "";
    },
    $signature: 171
  };
  A.ParsedPath__splitExtension_closure0.prototype = {
    call$0() {
      return null;
    },
    $signature: 2
  };
  A.PathException.prototype = {
    toString$0(_) {
      return "PathException: " + this.message;
    },
    $isException: 1,
    get$message(receiver) {
      return this.message;
    }
  };
  A.PathMap.prototype = {};
  A.PathMap__create_closure.prototype = {
    call$2(path1, path2) {
      if (path1 == null)
        return path2 == null;
      if (path2 == null)
        return false;
      return this._box_0.context._isWithinOrEquals$2(path1, path2) === B._PathRelation_equal;
    },
    $signature: 495
  };
  A.PathMap__create_closure0.prototype = {
    call$1(path) {
      return path == null ? 0 : this._box_0.context.hash$1(path);
    },
    $signature: 534
  };
  A.PathMap__create_closure1.prototype = {
    call$1(path) {
      return typeof path == "string" || path == null;
    },
    $signature: 122
  };
  A.Style.prototype = {
    toString$0(_) {
      return this.get$name(this);
    }
  };
  A.PosixStyle.prototype = {
    containsSeparator$1(path) {
      return B.JSString_methods.contains$1(path, "/");
    },
    isSeparator$1(codeUnit) {
      return codeUnit === 47;
    },
    needsSeparator$1(path) {
      var t1 = path.length;
      return t1 !== 0 && path.charCodeAt(t1 - 1) !== 47;
    },
    rootLength$2$withDrive(path, withDrive) {
      if (path.length !== 0 && path.charCodeAt(0) === 47)
        return 1;
      return 0;
    },
    rootLength$1(path) {
      return this.rootLength$2$withDrive(path, false);
    },
    isRootRelative$1(path) {
      return false;
    },
    pathFromUri$1(uri) {
      var t1;
      if (uri.get$scheme() === "" || uri.get$scheme() === "file") {
        t1 = uri.get$path(uri);
        return A._Uri__uriDecode(t1, 0, t1.length, B.C_Utf8Codec, false);
      }
      throw A.wrapException(A.ArgumentError$("Uri " + uri.toString$0(0) + " must have scheme 'file:'.", null));
    },
    absolutePathToUri$1(path) {
      var parsed = A.ParsedPath_ParsedPath$parse(path, this),
        t1 = parsed.parts;
      if (t1.length === 0)
        B.JSArray_methods.addAll$1(t1, A._setArrayType(["", ""], type$.JSArray_String));
      else if (parsed.get$hasTrailingSeparator())
        B.JSArray_methods.add$1(parsed.parts, "");
      return A._Uri__Uri(null, null, parsed.parts, "file");
    },
    get$name() {
      return "posix";
    },
    get$separator() {
      return "/";
    }
  };
  A.UrlStyle.prototype = {
    containsSeparator$1(path) {
      return B.JSString_methods.contains$1(path, "/");
    },
    isSeparator$1(codeUnit) {
      return codeUnit === 47;
    },
    needsSeparator$1(path) {
      var t1 = path.length;
      if (t1 === 0)
        return false;
      if (path.charCodeAt(t1 - 1) !== 47)
        return true;
      return B.JSString_methods.endsWith$1(path, "://") && this.rootLength$1(path) === t1;
    },
    rootLength$2$withDrive(path, withDrive) {
      var i, codeUnit, index, t2,
        t1 = path.length;
      if (t1 === 0)
        return 0;
      if (path.charCodeAt(0) === 47)
        return 1;
      for (i = 0; i < t1; ++i) {
        codeUnit = path.charCodeAt(i);
        if (codeUnit === 47)
          return 0;
        if (codeUnit === 58) {
          if (i === 0)
            return 0;
          index = B.JSString_methods.indexOf$2(path, "/", B.JSString_methods.startsWith$2(path, "//", i + 1) ? i + 3 : i);
          if (index <= 0)
            return t1;
          if (!withDrive || t1 < index + 3)
            return index;
          if (!B.JSString_methods.startsWith$1(path, "file://"))
            return index;
          if (!A.isDriveLetter(path, index + 1))
            return index;
          t2 = index + 3;
          return t1 === t2 ? t2 : index + 4;
        }
      }
      return 0;
    },
    rootLength$1(path) {
      return this.rootLength$2$withDrive(path, false);
    },
    isRootRelative$1(path) {
      return path.length !== 0 && path.charCodeAt(0) === 47;
    },
    pathFromUri$1(uri) {
      return uri.toString$0(0);
    },
    relativePathToUri$1(path) {
      return A.Uri_parse(path);
    },
    absolutePathToUri$1(path) {
      return A.Uri_parse(path);
    },
    get$name() {
      return "url";
    },
    get$separator() {
      return "/";
    }
  };
  A.WindowsStyle.prototype = {
    containsSeparator$1(path) {
      return B.JSString_methods.contains$1(path, "/");
    },
    isSeparator$1(codeUnit) {
      return codeUnit === 47 || codeUnit === 92;
    },
    needsSeparator$1(path) {
      var t1 = path.length;
      if (t1 === 0)
        return false;
      t1 = path.charCodeAt(t1 - 1);
      return !(t1 === 47 || t1 === 92);
    },
    rootLength$2$withDrive(path, withDrive) {
      var index,
        t1 = path.length;
      if (t1 === 0)
        return 0;
      if (path.charCodeAt(0) === 47)
        return 1;
      if (path.charCodeAt(0) === 92) {
        if (t1 < 2 || path.charCodeAt(1) !== 92)
          return 1;
        index = B.JSString_methods.indexOf$2(path, "\\", 2);
        if (index > 0) {
          index = B.JSString_methods.indexOf$2(path, "\\", index + 1);
          if (index > 0)
            return index;
        }
        return t1;
      }
      if (t1 < 3)
        return 0;
      if (!A.isAlphabetic(path.charCodeAt(0)))
        return 0;
      if (path.charCodeAt(1) !== 58)
        return 0;
      t1 = path.charCodeAt(2);
      if (!(t1 === 47 || t1 === 92))
        return 0;
      return 3;
    },
    rootLength$1(path) {
      return this.rootLength$2$withDrive(path, false);
    },
    isRootRelative$1(path) {
      return this.rootLength$1(path) === 1;
    },
    pathFromUri$1(uri) {
      var path, t1;
      if (uri.get$scheme() !== "" && uri.get$scheme() !== "file")
        throw A.wrapException(A.ArgumentError$("Uri " + uri.toString$0(0) + " must have scheme 'file:'.", null));
      path = uri.get$path(uri);
      if (uri.get$host() === "") {
        if (path.length >= 3 && B.JSString_methods.startsWith$1(path, "/") && A.isDriveLetter(path, 1))
          path = B.JSString_methods.replaceFirst$2(path, "/", "");
      } else
        path = "\\\\" + uri.get$host() + path;
      t1 = A.stringReplaceAllUnchecked(path, "/", "\\");
      return A._Uri__uriDecode(t1, 0, t1.length, B.C_Utf8Codec, false);
    },
    absolutePathToUri$1(path) {
      var rootParts, t2,
        parsed = A.ParsedPath_ParsedPath$parse(path, this),
        t1 = parsed.root;
      t1.toString;
      if (B.JSString_methods.startsWith$1(t1, "\\\\")) {
        rootParts = new A.WhereIterable(A._setArrayType(t1.split("\\"), type$.JSArray_String), new A.WindowsStyle_absolutePathToUri_closure(), type$.WhereIterable_String);
        B.JSArray_methods.insert$2(parsed.parts, 0, rootParts.get$last(rootParts));
        if (parsed.get$hasTrailingSeparator())
          B.JSArray_methods.add$1(parsed.parts, "");
        return A._Uri__Uri(rootParts.get$first(rootParts), null, parsed.parts, "file");
      } else {
        if (parsed.parts.length === 0 || parsed.get$hasTrailingSeparator())
          B.JSArray_methods.add$1(parsed.parts, "");
        t1 = parsed.parts;
        t2 = parsed.root;
        t2.toString;
        t2 = A.stringReplaceAllUnchecked(t2, "/", "");
        B.JSArray_methods.insert$2(t1, 0, A.stringReplaceAllUnchecked(t2, "\\", ""));
        return A._Uri__Uri(null, null, parsed.parts, "file");
      }
    },
    codeUnitsEqual$2(codeUnit1, codeUnit2) {
      var upperCase1;
      if (codeUnit1 === codeUnit2)
        return true;
      if (codeUnit1 === 47)
        return codeUnit2 === 92;
      if (codeUnit1 === 92)
        return codeUnit2 === 47;
      if ((codeUnit1 ^ codeUnit2) !== 32)
        return false;
      upperCase1 = codeUnit1 | 32;
      return upperCase1 >= 97 && upperCase1 <= 122;
    },
    pathsEqual$2(path1, path2) {
      var t1, i;
      if (path1 === path2)
        return true;
      t1 = path1.length;
      if (t1 !== path2.length)
        return false;
      for (i = 0; i < t1; ++i)
        if (!this.codeUnitsEqual$2(path1.charCodeAt(i), path2.charCodeAt(i)))
          return false;
      return true;
    },
    canonicalizeCodeUnit$1(codeUnit) {
      if (codeUnit === 47)
        return 92;
      if (codeUnit < 65)
        return codeUnit;
      if (codeUnit > 90)
        return codeUnit;
      return codeUnit | 32;
    },
    canonicalizePart$1(part) {
      return part.toLowerCase();
    },
    get$name() {
      return "windows";
    },
    get$separator() {
      return "\\";
    }
  };
  A.WindowsStyle_absolutePathToUri_closure.prototype = {
    call$1(part) {
      return part !== "";
    },
    $signature: 10
  };
  A.Version.prototype = {
    get$min() {
      return this;
    },
    get$max() {
      return this;
    },
    get$includeMin() {
      return true;
    },
    get$includeMax() {
      return true;
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A.Version && _this.major === other.major && _this.minor === other.minor && _this.patch === other.patch && B.C_IterableEquality.equals$2(0, _this.preRelease, other.preRelease) && B.C_IterableEquality.equals$2(0, _this.build, other.build);
    },
    get$hashCode(_) {
      var _this = this;
      return (_this.major ^ _this.minor ^ _this.patch ^ B.C_IterableEquality.hash$1(_this.preRelease) ^ B.C_IterableEquality.hash$1(_this.build)) >>> 0;
    },
    compareTo$1(_, other) {
      var t1, t2, t3, comparison, _this = this;
      if (other instanceof A.Version) {
        t1 = _this.major;
        t2 = other.major;
        if (t1 !== t2)
          return B.JSInt_methods.compareTo$1(t1, t2);
        t1 = _this.minor;
        t2 = other.minor;
        if (t1 !== t2)
          return B.JSInt_methods.compareTo$1(t1, t2);
        t1 = _this.patch;
        t2 = other.patch;
        if (t1 !== t2)
          return B.JSInt_methods.compareTo$1(t1, t2);
        t1 = _this.preRelease;
        t2 = t1.length === 0;
        if (t2 && other.preRelease.length !== 0)
          return 1;
        t3 = other.preRelease;
        if (t3.length === 0 && !t2)
          return -1;
        comparison = _this._compareLists$2(t1, t3);
        if (comparison !== 0)
          return comparison;
        t1 = _this.build;
        t2 = t1.length === 0;
        if (t2 && other.build.length !== 0)
          return -1;
        t3 = other.build;
        if (t3.length === 0 && !t2)
          return 1;
        return _this._compareLists$2(t1, t3);
      } else
        return -other.compareTo$1(0, _this);
    },
    toString$0(_) {
      return this._version$_text;
    },
    _compareLists$2(a, b) {
      var i, t1, t2, aPart, bPart;
      for (i = 0; t1 = a.length, t2 = b.length, i < Math.max(t1, t2); ++i) {
        aPart = i < t1 ? a[i] : null;
        bPart = i < t2 ? b[i] : null;
        if (J.$eq$(aPart, bPart))
          continue;
        if (aPart == null)
          return -1;
        if (bPart == null)
          return 1;
        if (typeof aPart == "number")
          if (typeof bPart == "number")
            return B.JSNumber_methods.compareTo$1(aPart, bPart);
          else
            return -1;
        else if (typeof bPart == "number")
          return 1;
        else {
          A._asString(aPart);
          A._asString(bPart);
          if (aPart === bPart)
            t1 = 0;
          else
            t1 = aPart < bPart ? -1 : 1;
          return t1;
        }
      }
      return 0;
    },
    $isComparable: 1,
    $isVersionRange: 1
  };
  A.Version__splitParts_closure.prototype = {
    call$1(part) {
      var t1 = A.Primitives_parseInt(part, null);
      return t1 == null ? part : t1;
    },
    $signature: 535
  };
  A.VersionRange.prototype = {
    $eq(_, other) {
      var t1;
      if (other == null)
        return false;
      if (!type$.VersionRange._is(other))
        return false;
      if (this.min == other.get$min())
        if (J.$eq$(this.max, other.get$max()))
          if (!other.get$includeMin()) {
            other.get$includeMax();
            t1 = true;
          } else
            t1 = false;
        else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    get$hashCode(_) {
      var t1 = B.JSNull_methods.get$hashCode(this.min),
        t2 = J.get$hashCode$(this.max);
      return (t1 ^ t2 * 3 ^ 1090795 ^ 3633126) >>> 0;
    },
    allows$1(other) {
      var t1 = this.max;
      if (t1 != null)
        if (other.compareTo$1(0, t1) > 0)
          return false;
      return true;
    },
    compareTo$1(_, other) {
      if (other.get$min() == null)
        return this._compareMax$1(other);
      return -1;
    },
    _compareMax$1(other) {
      var t2, result,
        t1 = this.max;
      if (t1 == null) {
        if (other.get$max() == null)
          return 0;
        return 1;
      } else if (other.get$max() == null)
        return -1;
      t2 = other.get$max();
      t2.toString;
      result = t1.compareTo$1(0, t2);
      if (result !== 0)
        return result;
      other.get$includeMax();
      return 0;
    },
    toString$0(_) {
      var t2,
        max = this.max,
        t1 = max == null;
      if (!t1)
        t2 = "" + "<=" + max.toString$0(0);
      else
        t2 = "";
      t1 = t1 ? t2 + "any" : t2;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isComparable: 1,
    get$min() {
      return this.min;
    },
    get$max() {
      return this.max;
    },
    get$includeMin() {
      return this.includeMin;
    },
    get$includeMax() {
      return this.includeMax;
    }
  };
  A.CssMediaQuery.prototype = {
    merge$1(other) {
      var t1, ourModifier, t2, t3, ourType, t4, theirModifier, t5, t6, theirType, t7, t8, negativeConditions, conditions, type, modifier, fewerConditions, fewerConditions0, moreConditions, _this = this, _null = null, _s3_ = "all";
      if (!_this.conjunction || !other.conjunction)
        return B._SingletonCssMediaQueryMergeResult_1;
      t1 = _this.modifier;
      ourModifier = t1 == null ? _null : t1.toLowerCase();
      t2 = _this.type;
      t3 = t2 == null;
      ourType = t3 ? _null : t2.toLowerCase();
      t4 = other.modifier;
      theirModifier = t4 == null ? _null : t4.toLowerCase();
      t5 = other.type;
      t6 = t5 == null;
      theirType = t6 ? _null : t5.toLowerCase();
      t7 = ourType == null;
      if (t7 && theirType == null) {
        t1 = A.List_List$of(_this.conditions, true, type$.String);
        B.JSArray_methods.addAll$1(t1, other.conditions);
        return new A.MediaQuerySuccessfulMergeResult(A.CssMediaQuery$condition(t1, true));
      }
      t8 = ourModifier === "not";
      if (t8 !== (theirModifier === "not")) {
        if (ourType == theirType) {
          negativeConditions = t8 ? _this.conditions : other.conditions;
          if (B.JSArray_methods.every$1(negativeConditions, B.JSArray_methods.get$contains(t8 ? other.conditions : _this.conditions)))
            return B._SingletonCssMediaQueryMergeResult_0;
          else
            return B._SingletonCssMediaQueryMergeResult_1;
        } else if (t3 || A.equalsIgnoreCase(t2, _s3_) || t6 || A.equalsIgnoreCase(t5, _s3_))
          return B._SingletonCssMediaQueryMergeResult_1;
        if (t8) {
          conditions = other.conditions;
          type = theirType;
          modifier = theirModifier;
        } else {
          conditions = _this.conditions;
          type = ourType;
          modifier = ourModifier;
        }
      } else if (t8) {
        if (ourType != theirType)
          return B._SingletonCssMediaQueryMergeResult_1;
        fewerConditions = _this.conditions;
        fewerConditions0 = other.conditions;
        t3 = fewerConditions.length > fewerConditions0.length;
        moreConditions = t3 ? fewerConditions : fewerConditions0;
        if (t3)
          fewerConditions = fewerConditions0;
        if (!B.JSArray_methods.every$1(fewerConditions, B.JSArray_methods.get$contains(moreConditions)))
          return B._SingletonCssMediaQueryMergeResult_1;
        conditions = moreConditions;
        type = ourType;
        modifier = ourModifier;
      } else if (t3 || A.equalsIgnoreCase(t2, _s3_)) {
        type = (t6 || A.equalsIgnoreCase(t5, _s3_)) && t7 ? _null : theirType;
        t3 = A.List_List$of(_this.conditions, true, type$.String);
        B.JSArray_methods.addAll$1(t3, other.conditions);
        conditions = t3;
        modifier = theirModifier;
      } else {
        if (t6 || A.equalsIgnoreCase(t5, _s3_)) {
          t3 = A.List_List$of(_this.conditions, true, type$.String);
          B.JSArray_methods.addAll$1(t3, other.conditions);
          conditions = t3;
          modifier = ourModifier;
        } else {
          if (ourType != theirType)
            return B._SingletonCssMediaQueryMergeResult_0;
          else {
            modifier = ourModifier == null ? theirModifier : ourModifier;
            t3 = A.List_List$of(_this.conditions, true, type$.String);
            B.JSArray_methods.addAll$1(t3, other.conditions);
          }
          conditions = t3;
        }
        type = ourType;
      }
      t2 = type == ourType ? t2 : t5;
      return new A.MediaQuerySuccessfulMergeResult(A.CssMediaQuery$type(t2, conditions, modifier == ourModifier ? t1 : t4));
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.CssMediaQuery && other.modifier == this.modifier && other.type == this.type && B.C_ListEquality.equals$2(0, other.conditions, this.conditions);
    },
    get$hashCode(_) {
      return J.get$hashCode$(this.modifier) ^ J.get$hashCode$(this.type) ^ B.C_ListEquality0.hash$1(this.conditions);
    },
    toString$0(_) {
      var t2, _this = this,
        t1 = _this.modifier;
      t1 = t1 != null ? "" + (t1 + " ") : "";
      t2 = _this.type;
      if (t2 != null) {
        t1 += t2;
        if (_this.conditions.length !== 0)
          t1 += " and ";
      }
      t2 = _this.conjunction ? " and " : " or ";
      t2 = t1 + B.JSArray_methods.join$1(_this.conditions, t2);
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    }
  };
  A._SingletonCssMediaQueryMergeResult.prototype = {
    _enumToString$0() {
      return "_SingletonCssMediaQueryMergeResult." + this._name;
    }
  };
  A.MediaQuerySuccessfulMergeResult.prototype = {
    toString$0(_) {
      return this.query.toString$0(0);
    }
  };
  A.ModifiableCssAtRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssAtRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      var t1, t2;
      if (other instanceof A.ModifiableCssAtRule) {
        t1 = this.name;
        t2 = other.name;
        t1 = t1.$ti._is(t2) && J.$eq$(t2.value, t1.value) && J.$eq$(this.value, other.value) && this.isChildless === other.isChildless;
      } else
        t1 = false;
      return t1;
    },
    copyWithoutChildren$0() {
      var _this = this;
      return A.ModifiableCssAtRule$(_this.name, _this.span, _this.isChildless, _this.value);
    },
    addChild$1(child) {
      this.super$ModifiableCssParentNode$addChild(child);
    },
    get$isChildless() {
      return this.isChildless;
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssComment.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssComment$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    $isCssComment: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssDeclaration.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssDeclaration$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.name.toString$0(0) + ": " + this.value.toString$0(0) + ";";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssImport.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssImport$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssKeyframeBlock.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssKeyframeBlock$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      return other instanceof A.ModifiableCssKeyframeBlock && B.C_ListEquality.equals$2(0, this.selector.value, other.selector.value);
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssKeyframeBlock$(this.selector, this.span);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssMediaRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssMediaRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      return other instanceof A.ModifiableCssMediaRule && B.C_ListEquality.equals$2(0, this.queries, other.queries);
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssMediaRule$(this.queries, this.span);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssNode.prototype = {
    get$hasFollowingSibling() {
      var t2,
        t1 = this._parent;
      if (t1 == null)
        t1 = null;
      else {
        t1 = t1.children;
        t2 = this._indexInParent;
        t2.toString;
        t1 = A.SubListIterable$(t1, t2 + 1, null, t1.$ti._eval$1("ListBase.E")).any$1(0, new A.ModifiableCssNode_hasFollowingSibling_closure());
      }
      return t1 === true;
    },
    get$isGroupEnd() {
      return this.isGroupEnd;
    }
  };
  A.ModifiableCssNode_hasFollowingSibling_closure.prototype = {
    call$1(sibling) {
      return !sibling.accept$1(B._IsInvisibleVisitor_true_false);
    },
    $signature: 124
  };
  A.ModifiableCssParentNode.prototype = {
    get$isChildless() {
      return false;
    },
    addChild$1(child) {
      var t1;
      child._parent = this;
      t1 = this._children;
      child._indexInParent = t1.length;
      t1.push(child);
    },
    clearChildren$0() {
      var t1, t2, _i, child;
      for (t1 = this._children, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        child = t1[_i];
        child._indexInParent = child._parent = null;
      }
      B.JSArray_methods.clear$0(t1);
    },
    $isCssParentNode: 1,
    get$children(receiver) {
      return this.children;
    }
  };
  A.ModifiableCssStyleRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssStyleRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      var t1;
      if (other instanceof A.ModifiableCssStyleRule)
        t1 = B.C_ListEquality.equals$2(0, other._style_rule$_selector._box$_inner.value.components, this._style_rule$_selector._box$_inner.value.components);
      else
        t1 = false;
      return t1;
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssStyleRule$(this._style_rule$_selector, this.span, this.originalSelector);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssStylesheet.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssStylesheet$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      return other instanceof A.ModifiableCssStylesheet;
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssStylesheet$(this.span);
    },
    $isCssStylesheet: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssSupportsRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssSupportsRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      var t1, t2;
      if (other instanceof A.ModifiableCssSupportsRule) {
        t1 = this.condition;
        t2 = other.condition;
        t1 = t1.$ti._is(t2) && J.$eq$(t2.value, t1.value);
      } else
        t1 = false;
      return t1;
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssSupportsRule$(this.condition, this.span);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.CssNode.prototype = {
    toString$0(_) {
      return A.serialize(this, true, null, true, null, false, null, true)._0;
    },
    $isAstNode: 1
  };
  A.CssParentNode.prototype = {};
  A._IsInvisibleVisitor.prototype = {
    visitCssAtRule$1(rule) {
      return false;
    },
    visitCssComment$1(comment) {
      return this.includeComments && comment.text.charCodeAt(2) !== 33;
    },
    visitCssStyleRule$1(rule) {
      var t1 = rule._style_rule$_selector._box$_inner;
      return (this.includeBogus ? t1.value.accept$1(B._IsInvisibleVisitor_true) : t1.value.accept$1(B._IsInvisibleVisitor_false)) || this.super$EveryCssVisitor$visitCssStyleRule(rule);
    }
  };
  A.__IsInvisibleVisitor_Object_EveryCssVisitor.prototype = {};
  A.CssStylesheet.prototype = {
    get$isGroupEnd() {
      return false;
    },
    get$isChildless() {
      return false;
    },
    accept$1$1(visitor) {
      return visitor.visitCssStylesheet$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    get$children(receiver) {
      return this.children;
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.CssValue.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return this.$ti._is(other) && J.$eq$(other.value, this.value);
    },
    get$hashCode(_) {
      return J.get$hashCode$(this.value);
    },
    toString$0(_) {
      return J.toString$0$(this.value);
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._FakeAstNode.prototype = {
    get$span(_) {
      return this._callback.call$0();
    },
    $isAstNode: 1
  };
  A.Argument.prototype = {
    toString$0(_) {
      var t1 = this.defaultValue,
        t2 = this.name;
      return t1 == null ? t2 : t2 + ": " + t1.toString$0(0);
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ArgumentDeclaration.prototype = {
    get$spanWithName() {
      var t3, t4,
        t1 = this.span,
        t2 = t1.file,
        text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2._decodedChars, 0, null), 0, null),
        i = A.FileLocation$_(t2, t1._file$_start).offset - 1;
      while (true) {
        if (i > 0) {
          t3 = text.charCodeAt(i);
          t3 = t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12;
        } else
          t3 = false;
        if (!t3)
          break;
        --i;
      }
      t3 = text.charCodeAt(i);
      if (!(t3 === 95 || A.CharacterExtension_get_isAlphabetic(t3) || t3 >= 128))
        t3 = t3 >= 48 && t3 <= 57 || t3 === 45;
      else
        t3 = true;
      if (!t3)
        return t1;
      --i;
      while (true) {
        if (i >= 0) {
          t3 = text.charCodeAt(i);
          if (t3 !== 95) {
            if (!(t3 >= 97 && t3 <= 122))
              t4 = t3 >= 65 && t3 <= 90;
            else
              t4 = true;
            t4 = t4 || t3 >= 128;
          } else
            t4 = true;
          if (!t4)
            t3 = t3 >= 48 && t3 <= 57 || t3 === 45;
          else
            t3 = true;
        } else
          t3 = false;
        if (!t3)
          break;
        --i;
      }
      t3 = i + 1;
      t4 = text.charCodeAt(t3);
      if (!(t4 === 95 || A.CharacterExtension_get_isAlphabetic(t4) || t4 >= 128))
        return t1;
      return A.SpanExtensions_trimRight(A.SpanExtensions_trimLeft(t2.span$2(0, t3, A.FileLocation$_(t2, t1._end).offset)));
    },
    verify$2(positional, names) {
      var t1, t2, t3, namedUsed, i, argument, t4, unknownNames, _this = this,
        _s10_ = "invocation",
        _s8_ = "argument";
      for (t1 = _this.$arguments, t2 = t1.length, t3 = names._baseMap, namedUsed = 0, i = 0; i < t2; ++i) {
        argument = t1[i];
        if (i < positional) {
          t4 = argument.name;
          if (t3.containsKey$1(t4))
            throw A.wrapException(A.SassScriptException$("Argument " + _this._originalArgumentName$1(t4) + string$.x20was_p, null));
        } else {
          t4 = argument.name;
          if (t3.containsKey$1(t4))
            ++namedUsed;
          else if (argument.defaultValue == null)
            throw A.wrapException(A.MultiSpanSassScriptException$("Missing argument " + _this._originalArgumentName$1(t4) + ".", _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], type$.FileSpan, type$.String)));
        }
      }
      if (_this.restArgument != null)
        return;
      if (positional > t2) {
        t1 = names.get$isEmpty(names) ? "" : "positional ";
        throw A.wrapException(A.MultiSpanSassScriptException$("Only " + t2 + " " + t1 + A.pluralize(_s8_, t2, null) + " allowed, but " + positional + " " + A.pluralize("was", positional, "were") + " passed.", _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], type$.FileSpan, type$.String)));
      }
      if (namedUsed < t3.get$length(t3)) {
        t2 = type$.String;
        unknownNames = A.LinkedHashSet_LinkedHashSet$of(names, t2);
        unknownNames.removeAll$1(new A.MappedListIterable(t1, new A.ArgumentDeclaration_verify_closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Object?>")));
        throw A.wrapException(A.MultiSpanSassScriptException$("No " + A.pluralize(_s8_, unknownNames._collection$_length, null) + " named " + A.toSentence(unknownNames.map$1$1(0, new A.ArgumentDeclaration_verify_closure0(), type$.Object), "or") + ".", _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], type$.FileSpan, t2)));
      }
    },
    _originalArgumentName$1($name) {
      var t1, text, t2, _i, argument, t3, t4, end, _null = null;
      if ($name === this.restArgument) {
        t1 = this.span;
        text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.file._decodedChars, t1._file$_start, t1._end), 0, _null);
        return B.JSString_methods.substring$2(B.JSString_methods.substring$1(text, B.JSString_methods.lastIndexOf$1(text, "$")), 0, B.JSString_methods.indexOf$1(text, "."));
      }
      for (t1 = this.$arguments, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        argument = t1[_i];
        if (argument.name === $name) {
          t1 = argument.defaultValue;
          t2 = argument.span;
          t3 = t2.file;
          t4 = t2._file$_start;
          t2 = t2._end;
          if (t1 == null) {
            t1 = t3._decodedChars;
            t1 = A.String_String$fromCharCodes(new Uint32Array(t1.subarray(t4, A._checkValidRange(t4, t2, t1.length))), 0, _null);
          } else {
            t1 = t3._decodedChars;
            text = A.String_String$fromCharCodes(new Uint32Array(t1.subarray(t4, A._checkValidRange(t4, t2, t1.length))), 0, _null);
            t1 = B.JSString_methods.substring$2(text, 0, B.JSString_methods.indexOf$1(text, ":"));
            end = A._lastNonWhitespace(t1, false);
            t1 = end == null ? "" : B.JSString_methods.substring$2(t1, 0, end + 1);
          }
          return t1;
        }
      }
      throw A.wrapException(A.ArgumentError$(string$.This_d + $name + '".', _null));
    },
    matches$2(positional, names) {
      var t1, t2, t3, namedUsed, i, argument;
      for (t1 = this.$arguments, t2 = t1.length, t3 = names._baseMap, namedUsed = 0, i = 0; i < t2; ++i) {
        argument = t1[i];
        if (i < positional) {
          if (t3.containsKey$1(argument.name))
            return false;
        } else if (t3.containsKey$1(argument.name))
          ++namedUsed;
        else if (argument.defaultValue == null)
          return false;
      }
      if (this.restArgument != null)
        return true;
      if (positional > t2)
        return false;
      if (namedUsed < t3.get$length(t3))
        return false;
      return true;
    },
    toString$0(_) {
      var t2, t3, _i,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = this.$arguments, t3 = t2.length, _i = 0; _i < t3; ++_i)
        t1.push("$" + A.S(t2[_i]));
      t2 = this.restArgument;
      if (t2 != null)
        t1.push("$" + t2 + "...");
      return B.JSArray_methods.join$1(t1, ", ");
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ArgumentDeclaration_verify_closure.prototype = {
    call$1(argument) {
      return argument.name;
    },
    $signature: 630
  };
  A.ArgumentDeclaration_verify_closure0.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A.ArgumentInvocation.prototype = {
    get$isEmpty(_) {
      var t1;
      if (this.positional.length === 0) {
        t1 = this.named;
        t1 = t1.get$isEmpty(t1) && this.rest == null;
      } else
        t1 = false;
      return t1;
    },
    toString$0(_) {
      var t2, t3, _i, $name, value, _1_0, rest, _2_0, keywordRest, _this = this,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = _this.positional, t3 = t2.length, _i = 0; _i < t3; ++_i)
        t1.push(_this._parenthesizeArgument$1(t2[_i]));
      for (t2 = A.MapExtensions_get_pairs(_this.named, type$.String, type$.Expression), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        $name = t3._0;
        value = t3._1;
        t1.push("$" + $name + ": " + _this._parenthesizeArgument$1(value));
      }
      _1_0 = _this.rest;
      if (_1_0 != null) {
        rest = _1_0;
        t2 = true;
      } else {
        rest = null;
        t2 = false;
      }
      if (t2)
        t1.push(_this._parenthesizeArgument$1(rest) + "...");
      _2_0 = _this.keywordRest;
      if (_2_0 != null) {
        keywordRest = _2_0;
        t2 = true;
      } else {
        keywordRest = null;
        t2 = false;
      }
      if (t2)
        t1.push(_this._parenthesizeArgument$1(keywordRest) + "...");
      return "(" + B.JSArray_methods.join$1(t1, ", ") + ")";
    },
    _parenthesizeArgument$1(argument) {
      var t1;
      $label0$0: {
        if (argument instanceof A.ListExpression && B.ListSeparator_rXA === argument.separator && !argument.hasBrackets && argument.contents.length >= 2) {
          t1 = "(" + argument.toString$0(0) + ")";
          break $label0$0;
        }
        t1 = argument.toString$0(0);
        break $label0$0;
      }
      return t1;
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.AtRootQuery.prototype = {
    excludes$1(node) {
      var t1, _this = this;
      if (_this._all)
        return !_this.include;
      $label0$0: {
        if (node instanceof A.ModifiableCssStyleRule) {
          t1 = _this._at_root_query$_rule !== _this.include;
          break $label0$0;
        }
        if (node instanceof A.ModifiableCssMediaRule) {
          t1 = _this.excludesName$1("media");
          break $label0$0;
        }
        if (node instanceof A.ModifiableCssSupportsRule) {
          t1 = _this.excludesName$1("supports");
          break $label0$0;
        }
        if (node instanceof A.ModifiableCssAtRule) {
          t1 = _this.excludesName$1(node.name.value.toLowerCase());
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    excludesName$1($name) {
      var t1 = this._all || this.names.contains$1(0, $name);
      return t1 !== this.include;
    }
  };
  A.ConfiguredVariable.prototype = {
    toString$0(_) {
      var t1 = this.expression.toString$0(0),
        t2 = this.isGuarded ? " !default" : "";
      return "$" + this.name + ": " + t1 + t2;
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._IsCalculationSafeVisitor.prototype = {
    visitBinaryOperationExpression$1(node) {
      var t1;
      if (B.Set_FIwG4.contains$1(0, node.operator))
        t1 = node.left.accept$1(this) || node.right.accept$1(this);
      else
        t1 = false;
      return t1;
    },
    visitBooleanExpression$1(node) {
      return false;
    },
    visitColorExpression$1(node) {
      return false;
    },
    visitFunctionExpression$1(node) {
      return true;
    },
    visitInterpolatedFunctionExpression$1(node) {
      return true;
    },
    visitIfExpression$1(node) {
      return true;
    },
    visitListExpression$1(node) {
      var t1;
      if (node.separator === B.ListSeparator_EVt)
        if (!node.hasBrackets) {
          t1 = node.contents;
          t1 = t1.length > 1 && B.JSArray_methods.every$1(t1, new A._IsCalculationSafeVisitor_visitListExpression_closure(this));
        } else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    visitMapExpression$1(node) {
      return false;
    },
    visitNullExpression$1(node) {
      return false;
    },
    visitNumberExpression$1(node) {
      return true;
    },
    visitParenthesizedExpression$1(node) {
      return node.expression.accept$1(this);
    },
    visitSelectorExpression$1(node) {
      return false;
    },
    visitStringExpression$1(node) {
      var text, t1, t2;
      if (node.hasQuotes)
        return false;
      text = node.text.get$initialPlain();
      if (!B.JSString_methods.startsWith$1(text, "!"))
        if (!B.JSString_methods.startsWith$1(text, "#")) {
          t1 = text.length;
          if ((1 >= t1 ? null : text.charCodeAt(1)) !== 43) {
            t2 = (3 >= t1 ? null : text.charCodeAt(3)) !== 40;
            t1 = t2;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    visitSupportsExpression$1(node) {
      return false;
    },
    visitUnaryOperationExpression$1(node) {
      return false;
    },
    visitValueExpression$1(node) {
      return false;
    },
    visitVariableExpression$1(node) {
      return true;
    }
  };
  A._IsCalculationSafeVisitor_visitListExpression_closure.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 126
  };
  A.BinaryOperationExpression.prototype = {
    get$span(_) {
      var right,
        left = this.left;
      for (; left instanceof A.BinaryOperationExpression;)
        left = left.left;
      right = this.right;
      for (; right instanceof A.BinaryOperationExpression;)
        right = right.right;
      return left.get$span(left).expand$1(0, right.get$span(right));
    },
    get$operatorSpan() {
      var t3, t4, _this = this,
        t1 = _this.left,
        t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t3 = _this.right;
      t4 = t3.get$span(t3);
      if (t2 === t4.get$file(t4)) {
        t2 = t1.get$span(t1);
        t2 = t2.get$end(t2);
        t4 = t3.get$span(t3);
        t4 = t2.offset < t4.get$start(t4).offset;
        t2 = t4;
      } else
        t2 = false;
      if (t2) {
        t2 = t1.get$span(t1);
        t2 = t2.get$file(t2);
        t1 = t1.get$span(t1);
        t1 = t1.get$end(t1);
        t3 = t3.get$span(t3);
        t3 = A.SpanExtensions_trimRight(A.SpanExtensions_trimLeft(t2.span$2(0, t1.offset, t3.get$start(t3).offset)));
        t1 = t3;
      } else
        t1 = _this.get$span(_this);
      return t1;
    },
    accept$1$1(visitor) {
      return visitor.visitBinaryOperationExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var precedence, t1, t2, right, operator, t3, _this = this,
        _0_0 = _this.left;
      $label0$0: {
        if (_0_0 instanceof A.BinaryOperationExpression) {
          precedence = _0_0.operator.precedence;
          t1 = true;
        } else {
          precedence = null;
          t1 = false;
        }
        if (t1) {
          t1 = precedence < _this.operator.precedence;
          break $label0$0;
        }
        if (_0_0 instanceof A.ListExpression && !_0_0.hasBrackets && _0_0.contents.length >= 2) {
          t1 = true;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      t2 = t1 ? "" + A.Primitives_stringFromCharCode(40) : "";
      t2 += _0_0.toString$0(0);
      t1 = t1 ? t2 + A.Primitives_stringFromCharCode(41) : t2;
      t2 = _this.operator;
      t1 = t1 + A.Primitives_stringFromCharCode(32) + t2.operator + A.Primitives_stringFromCharCode(32);
      right = _this.right;
      $label1$1: {
        if (right instanceof A.BinaryOperationExpression) {
          operator = right.operator;
          t3 = true;
        } else {
          operator = null;
          t3 = false;
        }
        if (t3) {
          if (operator.precedence <= t2.precedence) {
            t3 = !(operator === t2 && operator.isAssociative);
            t2 = t3;
          } else
            t2 = false;
          break $label1$1;
        }
        if (right instanceof A.ListExpression && !right.hasBrackets && right.contents.length >= 2) {
          t2 = true;
          break $label1$1;
        }
        t2 = false;
        break $label1$1;
      }
      if (t2)
        t1 += A.Primitives_stringFromCharCode(40);
      t1 += right.toString$0(0);
      if (t2)
        t1 += A.Primitives_stringFromCharCode(41);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode: 1,
    $isExpression: 1
  };
  A.BinaryOperator.prototype = {
    _enumToString$0() {
      return "BinaryOperator." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.BooleanExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitBooleanExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return String(this.value);
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ColorExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitColorExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return A.serializeValue(this.value, true, true);
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.FunctionExpression.prototype = {
    get$name(_) {
      return A.stringReplaceAllUnchecked(this.originalName, "_", "-");
    },
    accept$1$1(visitor) {
      return visitor.visitFunctionExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.namespace;
      t1 = t1 != null ? "" + (t1 + ".") : "";
      t1 += this.originalName + this.$arguments.toString$0(0);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.IfExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitIfExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "if" + this.$arguments.toString$0(0);
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.InterpolatedFunctionExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitInterpolatedFunctionExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.name.toString$0(0) + this.$arguments.toString$0(0);
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ListExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitListExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, t3, t4, t5, _this = this,
        t1 = _this.hasBrackets;
      if (t1)
        t2 = "" + A.Primitives_stringFromCharCode(91);
      else {
        t2 = _this.contents.length;
        if (t2 !== 0)
          t2 = t2 === 1 && _this.separator === B.ListSeparator_rXA;
        else
          t2 = true;
        t2 = t2 ? "" + A.Primitives_stringFromCharCode(40) : "";
      }
      t3 = _this.contents;
      t4 = _this.separator === B.ListSeparator_rXA;
      t5 = t4 ? ", " : " ";
      t5 = t2 + new A.MappedListIterable(t3, new A.ListExpression_toString_closure(_this), A._arrayInstanceType(t3)._eval$1("MappedListIterable<1,String>")).join$1(0, t5);
      if (t1)
        t1 = t5 + A.Primitives_stringFromCharCode(93);
      else {
        t1 = t3.length;
        if (t1 === 0)
          t1 = t5 + A.Primitives_stringFromCharCode(41);
        else
          t1 = t1 === 1 && t4 ? t5 + ",)" : t5;
      }
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _list0$_elementNeedsParens$1(expression) {
      var childSeparator, t1,
        _0_13 = A._InitializedCell$(new A.ListExpression__elementNeedsParens_closure(expression));
      $label0$0: {
        if (expression instanceof A.ListExpression)
          if (expression.contents.length >= 2)
            if (!expression.hasBrackets) {
              childSeparator = expression.separator;
              t1 = true;
            } else {
              childSeparator = null;
              t1 = false;
            }
          else {
            childSeparator = null;
            t1 = false;
          }
        else {
          childSeparator = null;
          t1 = false;
        }
        if (t1) {
          t1 = this.separator === B.ListSeparator_rXA ? childSeparator === B.ListSeparator_rXA : childSeparator !== B.ListSeparator_undecided_null_undecided;
          break $label0$0;
        }
        if (expression instanceof A.UnaryOperationExpression)
          t1 = B.UnaryOperator_gg4 === _0_13._readFinal$0() || B.UnaryOperator_TLI === _0_13._readFinal$0();
        else
          t1 = false;
        if (t1) {
          t1 = this.separator === B.ListSeparator_EVt;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ListExpression_toString_closure.prototype = {
    call$1(element) {
      return this.$this._list0$_elementNeedsParens$1(element) ? "(" + element.toString$0(0) + ")" : element.toString$0(0);
    },
    $signature: 132
  };
  A.ListExpression__elementNeedsParens_closure.prototype = {
    call$0() {
      return type$.UnaryOperationExpression._as(this._0_0).operator;
    },
    $signature: 137
  };
  A.MapExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitMapExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, t3, _i, t4, key, value,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = this.pairs, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        t4 = t2[_i];
        key = t4._0;
        value = t4._1;
        t1.push(key.toString$0(0) + ": " + value.toString$0(0));
      }
      return "(" + B.JSArray_methods.join$1(t1, ", ") + ")";
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.NullExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitNullExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "null";
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.NumberExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitNumberExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return A.serializeValue(A.SassNumber_SassNumber(this.value, this.unit), true, true);
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ParenthesizedExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitParenthesizedExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "(" + this.expression.toString$0(0) + ")";
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SelectorExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitSelectorExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "&";
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.StringExpression.prototype = {
    get$span(_) {
      return this.text.span;
    },
    accept$1$1(visitor) {
      return visitor.visitStringExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    asInterpolation$1$static($static) {
      var t1, t2, quote, t3, t4, buffer, t5, t6, _i, value;
      if (!this.hasQuotes)
        return this.text;
      t1 = this.text;
      t2 = t1.contents;
      quote = A.StringExpression__bestQuote(new A.WhereTypeIterable(t2, type$.WhereTypeIterable_String));
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer(t3, t4);
      t3._contents += A.Primitives_stringFromCharCode(quote);
      for (t5 = t2.length, t6 = type$.Expression, _i = 0; _i < t5; ++_i) {
        value = t2[_i];
        if (t6._is(value)) {
          buffer._flushText$0();
          t4.push(value);
          continue;
        }
        if (typeof value == "string")
          A.StringExpression__quoteInnerText(value, quote, buffer, $static);
      }
      t3._contents += A.Primitives_stringFromCharCode(quote);
      return buffer.interpolation$1(t1.span);
    },
    asInterpolation$0() {
      return this.asInterpolation$1$static(false);
    },
    toString$0(_) {
      return this.asInterpolation$0().toString$0(0);
    },
    $isAstNode: 1,
    $isExpression: 1
  };
  A.SupportsExpression.prototype = {
    get$span(_) {
      var t1 = this.condition;
      return t1.get$span(t1);
    },
    accept$1$1(visitor) {
      return visitor.visitSupportsExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.condition.toString$0(0);
    },
    $isAstNode: 1,
    $isExpression: 1
  };
  A.UnaryOperationExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitUnaryOperationExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var operand,
        t1 = this.operator,
        t2 = t1.operator;
      t1 = t1 === B.UnaryOperator_not_not_not ? t2 + A.Primitives_stringFromCharCode(32) : t2;
      operand = this.operand;
      $label0$0: {
        if (!(operand instanceof A.BinaryOperationExpression))
          if (!(operand instanceof A.UnaryOperationExpression))
            t2 = operand instanceof A.ListExpression && !operand.hasBrackets && operand.contents.length >= 2;
          else
            t2 = true;
        else
          t2 = true;
        if (t2) {
          t2 = true;
          break $label0$0;
        }
        t2 = false;
        break $label0$0;
      }
      if (t2)
        t1 += "40";
      t1 += operand.toString$0(0);
      if (t2)
        t1 += "41";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.UnaryOperator.prototype = {
    _enumToString$0() {
      return "UnaryOperator." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.ValueExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitValueExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return A.serializeValue(this.value, true, true);
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.VariableExpression.prototype = {
    accept$1$1(visitor) {
      return visitor.visitVariableExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.namespace,
        t2 = this.name;
      return t1 == null ? "$" + t2 : t1 + ".$" + t2;
    },
    $isAstNode: 1,
    $isExpression: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.DynamicImport.prototype = {
    toString$0(_) {
      return A.StringExpression_quoteText(this.urlString);
    },
    $isAstNode: 1,
    $isImport: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.StaticImport.prototype = {
    toString$0(_) {
      var t1 = this.url.toString$0(0),
        t2 = this.modifiers;
      return t1 + (t2 == null ? "" : " " + t2.toString$0(0));
    },
    $isAstNode: 1,
    $isImport: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Interpolation.prototype = {
    get$asPlain() {
      var t1, first,
        _0_0 = this.contents,
        _0_1 = A._InitializedCell$(new A.Interpolation_asPlain_closure(_0_0)),
        _0_6 = A._InitializedCell$(new A.Interpolation_asPlain_closure0(_0_0));
      $label0$0: {
        if (_0_1._readFinal$0() <= 0) {
          t1 = "";
          break $label0$0;
        }
        if (J.$eq$(_0_1._readFinal$0(), 1))
          if (typeof _0_6._readFinal$0() == "string") {
            first = _0_6._readFinal$0();
            t1 = true;
          } else {
            first = null;
            t1 = false;
          }
        else {
          first = null;
          t1 = false;
        }
        if (t1) {
          t1 = first;
          break $label0$0;
        }
        t1 = null;
        break $label0$0;
      }
      return t1;
    },
    get$initialPlain() {
      var first, t1,
        _0_0 = this.contents,
        _0_4 = A._InitializedCell$(new A.Interpolation_initialPlain_closure(_0_0));
      $label0$0: {
        if (_0_0.length >= 1)
          if (typeof _0_4._readFinal$0() == "string") {
            first = _0_4._readFinal$0();
            t1 = true;
          } else {
            first = null;
            t1 = false;
          }
        else {
          first = null;
          t1 = false;
        }
        if (t1) {
          t1 = first;
          break $label0$0;
        }
        t1 = "";
        break $label0$0;
      }
      return t1;
    },
    Interpolation$2(contents, span) {
      var t1, t2, t3, i, t4, t5,
        _s8_ = "contents";
      for (t1 = this.contents, t2 = t1.length, t3 = type$.Expression, i = 0; i < t2; ++i) {
        t4 = t1[i];
        t5 = typeof t4 == "string";
        if (!t5 && !t3._is(t4))
          throw A.wrapException(A.ArgumentError$value(t1, _s8_, string$.May_on));
        if (i !== 0 && typeof t1[i - 1] == "string" && t5)
          throw A.wrapException(A.ArgumentError$value(t1, _s8_, "May not contain adjacent Strings."));
      }
    },
    toString$0(_) {
      var t1 = this.contents;
      return new A.MappedListIterable(t1, new A.Interpolation_toString_closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$0(0);
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Interpolation_asPlain_closure.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.Interpolation_asPlain_closure0.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.Interpolation_initialPlain_closure.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.Interpolation_toString_closure.prototype = {
    call$1(value) {
      return typeof value == "string" ? value : "#{" + A.S(value) + "}";
    },
    $signature: 139
  };
  A.AtRootRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitAtRootRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var buffer = new A.StringBuffer("@at-root "),
        t1 = this.query;
      if (t1 != null)
        buffer._contents = "@at-root " + (t1.toString$0(0) + " ");
      t1 = this.children;
      return buffer.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.AtRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitAtRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var children,
        t1 = "@" + this.name.toString$0(0),
        buffer = new A.StringBuffer(t1),
        t2 = this.value;
      if (t2 != null)
        buffer._contents = t1 + (" " + t2.toString$0(0));
      children = this.children;
      return children == null ? buffer.toString$0(0) + ";" : buffer.toString$0(0) + " {" + B.JSArray_methods.join$1(children, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.CallableDeclaration.prototype = {
    get$span(receiver) {
      return this.span;
    }
  };
  A.ContentBlock.prototype = {
    accept$1$1(visitor) {
      return visitor.visitContentBlock$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2,
        t1 = this.$arguments;
      t1 = t1.$arguments.length === 0 && t1.restArgument == null ? "" : " using (" + t1.toString$0(0) + ")";
      t2 = this.children;
      return t1 + (" {" + (t2 && B.JSArray_methods).join$1(t2, " ") + "}");
    }
  };
  A.ContentRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitContentRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.$arguments;
      return t1.get$isEmpty(t1) ? "@content;" : "@content(" + t1.toString$0(0) + ");";
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.DebugRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitDebugRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@debug " + this.expression.toString$0(0) + ";";
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Declaration.prototype = {
    accept$1$1(visitor) {
      return visitor.visitDeclaration$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t3, _0_0, children,
        buffer = new A.StringBuffer(""),
        t1 = this.name,
        t2 = "" + t1.toString$0(0);
      buffer._contents = t2;
      t2 = buffer._contents = t2 + A.Primitives_stringFromCharCode(58);
      t3 = this.value;
      if (t3 != null) {
        t1 = !B.JSString_methods.startsWith$1(t1.get$initialPlain(), "--") ? buffer._contents = t2 + A.Primitives_stringFromCharCode(32) : t2;
        buffer._contents = t1 + t3.toString$0(0);
      }
      _0_0 = this.children;
      if (_0_0 != null) {
        children = _0_0;
        t1 = true;
      } else {
        children = null;
        t1 = false;
      }
      if (t1)
        return buffer.toString$0(0) + " {" + (children && B.JSArray_methods).join$1(children, " ") + "}";
      else
        return buffer.toString$0(0) + ";";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.EachRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitEachRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.variables,
        t2 = this.children;
      return "@each " + new A.MappedListIterable(t1, new A.EachRule_toString_closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$1(0, ", ") + " in " + this.list.toString$0(0) + " {" + (t2 && B.JSArray_methods).join$1(t2, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.EachRule_toString_closure.prototype = {
    call$1(variable) {
      return "$" + variable;
    },
    $signature: 7
  };
  A.ErrorRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitErrorRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@error " + this.expression.toString$0(0) + ";";
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ExtendRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitExtendRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.selector.toString$0(0),
        t2 = this.isOptional ? " !optional" : "";
      return "@extend " + t1 + t2 + ";";
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ForRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitForRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var _this = this,
        t1 = _this.from.toString$0(0),
        t2 = _this.isExclusive ? "to" : "through",
        t3 = _this.children;
      return "@for $" + _this.variable + " from " + t1 + " " + t2 + " " + _this.to.toString$0(0) + " {" + (t3 && B.JSArray_methods).join$1(t3, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ForwardRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitForwardRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, prefix, _this = this,
        t1 = "@forward " + A.StringExpression_quoteText(_this.url.toString$0(0)),
        shownMixinsAndFunctions = _this.shownMixinsAndFunctions,
        hiddenMixinsAndFunctions = _this.hiddenMixinsAndFunctions;
      if (shownMixinsAndFunctions != null) {
        t2 = _this.shownVariables;
        t2.toString;
        t2 = t1 + " show " + _this._forward_rule$_memberList$2(shownMixinsAndFunctions, t2);
        t1 = t2;
      } else {
        if (hiddenMixinsAndFunctions != null) {
          t2 = hiddenMixinsAndFunctions._base;
          t2 = t2.get$isNotEmpty(t2);
        } else
          t2 = false;
        if (t2) {
          t2 = _this.hiddenVariables;
          t2.toString;
          t2 = t1 + " hide " + _this._forward_rule$_memberList$2(hiddenMixinsAndFunctions, t2);
          t1 = t2;
        }
      }
      prefix = _this.prefix;
      if (prefix != null)
        t1 += " as " + prefix + "*";
      t2 = _this.configuration;
      t1 = (t2.length !== 0 ? t1 + (" with (" + B.JSArray_methods.join$1(t2, ", ") + ")") : t1) + ";";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _forward_rule$_memberList$2(mixinsAndFunctions, variables) {
      var t2,
        t1 = A.List_List$of(mixinsAndFunctions, true, type$.String);
      for (t2 = variables._base, t2 = t2.get$iterator(t2); t2.moveNext$0();)
        t1.push("$" + t2.get$current(t2));
      return B.JSArray_methods.join$1(t1, ", ");
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.FunctionRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitFunctionRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@function " + this.name + "(" + this.$arguments.toString$0(0) + ") {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    }
  };
  A.IfRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitIfRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var result = A.ListExtensions_mapIndexed(this.clauses, new A.IfRule_toString_closure(), type$.IfClause, type$.String).join$1(0, " "),
        lastClause = this.lastClause;
      return lastClause != null ? result + (" " + lastClause.toString$0(0)) : result;
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.IfRule_toString_closure.prototype = {
    call$2(index, clause) {
      var t1 = index === 0 ? "if" : "else if";
      return "@" + t1 + " " + clause.expression.toString$0(0) + " {" + B.JSArray_methods.join$1(clause.children, " ") + "}";
    },
    $signature: 335
  };
  A.IfRuleClause.prototype = {};
  A.IfRuleClause$__closure.prototype = {
    call$1(child) {
      var t1, imports;
      $label0$0: {
        if (child instanceof A.VariableDeclaration || child instanceof A.FunctionRule || child instanceof A.MixinRule) {
          t1 = true;
          break $label0$0;
        }
        if (child instanceof A.ImportRule) {
          imports = child.imports;
          t1 = true;
        } else {
          imports = null;
          t1 = false;
        }
        if (t1) {
          t1 = (imports && B.JSArray_methods).any$1(imports, new A.IfRuleClause$___closure());
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $signature: 150
  };
  A.IfRuleClause$___closure.prototype = {
    call$1($import) {
      return $import instanceof A.DynamicImport;
    },
    $signature: 152
  };
  A.IfClause.prototype = {
    toString$0(_) {
      return "@if " + this.expression.toString$0(0) + " {" + B.JSArray_methods.join$1(this.children, " ") + "}";
    }
  };
  A.ElseClause.prototype = {
    toString$0(_) {
      return "@else {" + B.JSArray_methods.join$1(this.children, " ") + "}";
    }
  };
  A.ImportRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitImportRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@import " + B.JSArray_methods.join$1(this.imports, ", ") + ";";
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.IncludeRule.prototype = {
    get$spanWithoutContent() {
      var t2, t3,
        t1 = this.span;
      if (!(this.content == null)) {
        t2 = t1.file;
        t3 = this.$arguments.span;
        t3 = A.SpanExtensions_trimRight(A.SpanExtensions_trimLeft(t2.span$2(0, A.FileLocation$_(t2, t1._file$_start).offset, t3.get$end(t3).offset)));
        t1 = t3;
      }
      return t1;
    },
    accept$1$1(visitor) {
      return visitor.visitIncludeRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, _this = this,
        t1 = _this.namespace;
      t1 = t1 != null ? "@include " + (t1 + ".") : "@include ";
      t1 += _this.name;
      t2 = _this.$arguments;
      if (!t2.get$isEmpty(t2))
        t1 += "(" + t2.toString$0(0) + ")";
      t2 = _this.content;
      t1 += t2 == null ? ";" : " " + t2.toString$0(0);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.LoudComment.prototype = {
    get$span(_) {
      return this.text.span;
    },
    accept$1$1(visitor) {
      return visitor.visitLoudComment$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.text.toString$0(0);
    },
    $isAstNode: 1,
    $isStatement: 1
  };
  A.MediaRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitMediaRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@media " + this.query.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.MixinRule.prototype = {
    get$hasContent() {
      var result, _this = this,
        value = _this.__MixinRule_hasContent_FI;
      if (value === $) {
        result = J.$eq$(B.C__HasContentVisitor.visitChildren$1(_this.children), true);
        _this.__MixinRule_hasContent_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.__MixinRule_hasContent_FI = result;
        value = result;
      }
      return value;
    },
    accept$1$1(visitor) {
      return visitor.visitMixinRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = "@mixin " + this.name,
        t2 = this.$arguments;
      if (!(t2.$arguments.length === 0 && t2.restArgument == null))
        t1 += "(" + t2.toString$0(0) + ")";
      t2 = this.children;
      t2 = t1 + (" {" + (t2 && B.JSArray_methods).join$1(t2, " ") + "}");
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    }
  };
  A._HasContentVisitor.prototype = {
    visitContentRule$1(_) {
      return true;
    }
  };
  A.__HasContentVisitor_Object_StatementSearchVisitor.prototype = {};
  A.ParentStatement.prototype = {$isAstNode: 1, $isStatement: 1};
  A.ParentStatement_closure.prototype = {
    call$1(child) {
      var t1, imports;
      $label0$0: {
        if (child instanceof A.VariableDeclaration || child instanceof A.FunctionRule || child instanceof A.MixinRule) {
          t1 = true;
          break $label0$0;
        }
        if (child instanceof A.ImportRule) {
          imports = child.imports;
          t1 = true;
        } else {
          imports = null;
          t1 = false;
        }
        if (t1) {
          t1 = (imports && B.JSArray_methods).any$1(imports, new A.ParentStatement__closure());
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $signature: 150
  };
  A.ParentStatement__closure.prototype = {
    call$1($import) {
      return $import instanceof A.DynamicImport;
    },
    $signature: 152
  };
  A.ReturnRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitReturnRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@return " + this.expression.toString$0(0) + ";";
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SilentComment.prototype = {
    accept$1$1(visitor) {
      return visitor.visitSilentComment$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.text;
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.StyleRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitStyleRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return this.selector.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.Stylesheet.prototype = {
    Stylesheet$internal$3$plainCss(children, span, plainCss) {
      var t1, t2, t3, t4, _i, child;
      for (t1 = this.children, t2 = t1.length, t3 = this._forwards, t4 = this._uses, _i = 0; _i < t2; ++_i) {
        child = t1[_i];
        if (child instanceof A.UseRule) {
          t4.push(child);
          continue;
        }
        if (child instanceof A.ForwardRule) {
          t3.push(child);
          continue;
        }
        if (child instanceof A.SilentComment || child instanceof A.LoudComment || child instanceof A.VariableDeclaration)
          continue;
        break;
      }
    },
    accept$1$1(visitor) {
      return visitor.visitStylesheet$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return (t1 && B.JSArray_methods).join$1(t1, " ");
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitSupportsRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@supports " + this.condition.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.UseRule.prototype = {
    UseRule$4$configuration(url, namespace, span, configuration) {
      var t1, t2, _i, variable;
      for (t1 = this.configuration, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        variable = t1[_i];
        if (variable.isGuarded)
          throw A.wrapException(A.ArgumentError$value(variable, "configured variable", "can't be guarded in a @use rule."));
      }
    },
    accept$1$1(visitor) {
      return visitor.visitUseRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.url,
        t2 = "@use " + A.StringExpression_quoteText(t1.toString$0(0)),
        basename = t1.get$pathSegments().length === 0 ? "" : B.JSArray_methods.get$last(t1.get$pathSegments()),
        dot = B.JSString_methods.indexOf$1(basename, ".");
      t1 = this.namespace;
      if (t1 !== B.JSString_methods.substring$2(basename, 0, dot === -1 ? basename.length : dot))
        t1 = t2 + (" as " + (t1 == null ? "*" : t1));
      else
        t1 = t2;
      t2 = this.configuration;
      t1 = (t2.length !== 0 ? t1 + (" with (" + B.JSArray_methods.join$1(t2, ", ") + ")") : t1) + ";";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.VariableDeclaration.prototype = {
    accept$1$1(visitor) {
      return visitor.visitVariableDeclaration$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.namespace;
      t1 = t1 != null ? "" + (t1 + ".") : "";
      t1 += "$" + this.name + ": " + this.expression.toString$0(0) + ";";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.WarnRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitWarnRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@warn " + this.expression.toString$0(0) + ";";
    },
    $isAstNode: 1,
    $isStatement: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.WhileRule.prototype = {
    accept$1$1(visitor) {
      return visitor.visitWhileRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@while " + this.condition.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsAnything.prototype = {
    toString$0(_) {
      return "(" + this.contents.toString$0(0) + ")";
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsDeclaration.prototype = {
    get$isCustomProperty() {
      var text, t1,
        _0_0 = this.name;
      $label0$0: {
        if (_0_0 instanceof A.StringExpression)
          if (!_0_0.hasQuotes) {
            text = _0_0.text;
            t1 = true;
          } else {
            text = null;
            t1 = false;
          }
        else {
          text = null;
          t1 = false;
        }
        if (t1) {
          t1 = B.JSString_methods.startsWith$1(text.get$initialPlain(), "--");
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    toString$0(_) {
      return "(" + this.name.toString$0(0) + ": " + this.value.toString$0(0) + ")";
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsFunction.prototype = {
    toString$0(_) {
      return this.name.toString$0(0) + "(" + this.$arguments.toString$0(0) + ")";
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsInterpolation.prototype = {
    toString$0(_) {
      return "#{" + this.expression.toString$0(0) + "}";
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsNegation.prototype = {
    toString$0(_) {
      var t1 = this.condition;
      if (t1 instanceof A.SupportsNegation || t1 instanceof A.SupportsOperation)
        return "not (" + t1.toString$0(0) + ")";
      else
        return "not " + t1.toString$0(0);
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsOperation.prototype = {
    toString$0(_) {
      var _this = this;
      return _this._operation$_parenthesize$1(_this.left) + " " + _this.operator + " " + _this._operation$_parenthesize$1(_this.right);
    },
    _operation$_parenthesize$1(condition) {
      var t1;
      if (!(condition instanceof A.SupportsNegation))
        t1 = condition instanceof A.SupportsOperation && condition.operator === this.operator;
      else
        t1 = true;
      return t1 ? "(" + condition.toString$0(0) + ")" : condition.toString$0(0);
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Selector.prototype = {
    assertNotBogus$1$name($name) {
      var t1;
      if (!this.accept$1(B._IsBogusVisitor_true))
        return;
      t1 = this.toString$0(0);
      A.EvaluationContext_current().warn$2(0, "$" + $name + ": " + (t1 + string$.x20is_nov), B.Deprecation_vrR);
    },
    toString$0(_) {
      var visitor = A._SerializeVisitor$(null, true, null, true, false, null, true);
      this.accept$1(visitor);
      return visitor._serialize$_buffer.toString$0(0);
    },
    $isAstNode: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._IsInvisibleVisitor0.prototype = {
    visitSelectorList$1(list) {
      return B.JSArray_methods.every$1(list.components, this.get$visitComplexSelector());
    },
    visitComplexSelector$1(complex) {
      var t1;
      if (!this.super$AnySelectorVisitor$visitComplexSelector(complex))
        t1 = this.includeBogus && complex.accept$1(B._IsBogusVisitor_false);
      else
        t1 = true;
      return t1;
    },
    visitPlaceholderSelector$1(placeholder) {
      return true;
    },
    visitPseudoSelector$1(pseudo) {
      var selector, t1,
        _0_0 = pseudo.selector;
      if (_0_0 != null) {
        selector = _0_0;
        t1 = true;
      } else {
        selector = null;
        t1 = false;
      }
      if (t1) {
        if (pseudo.name === "not")
          t1 = this.includeBogus && selector.accept$1(B._IsBogusVisitor_true);
        else
          t1 = this.visitSelectorList$1(selector);
        return t1;
      } else
        return false;
    }
  };
  A._IsBogusVisitor.prototype = {
    visitComplexSelector$1(complex) {
      var t2,
        t1 = complex.components;
      if (t1.length === 0)
        return complex.leadingCombinators.length !== 0;
      else {
        t2 = this.includeLeadingCombinator ? 0 : 1;
        return complex.leadingCombinators.length > t2 || B.JSArray_methods.get$last(t1).combinators.length !== 0 || B.JSArray_methods.any$1(t1, new A._IsBogusVisitor_visitComplexSelector_closure(this));
      }
    },
    visitPseudoSelector$1(pseudo) {
      var selector = pseudo.selector;
      if (selector == null)
        return false;
      return pseudo.name === "has" ? selector.accept$1(B._IsBogusVisitor_false) : selector.accept$1(B._IsBogusVisitor_true);
    }
  };
  A._IsBogusVisitor_visitComplexSelector_closure.prototype = {
    call$1(component) {
      return component.combinators.length > 1 || this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature: 53
  };
  A._IsUselessVisitor.prototype = {
    visitComplexSelector$1(complex) {
      return complex.leadingCombinators.length > 1 || B.JSArray_methods.any$1(complex.components, new A._IsUselessVisitor_visitComplexSelector_closure(this));
    },
    visitPseudoSelector$1(pseudo) {
      return pseudo.accept$1(B._IsBogusVisitor_true);
    }
  };
  A._IsUselessVisitor_visitComplexSelector_closure.prototype = {
    call$1(component) {
      return component.combinators.length > 1 || this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature: 53
  };
  A.__IsBogusVisitor_Object_AnySelectorVisitor.prototype = {};
  A.__IsInvisibleVisitor_Object_AnySelectorVisitor.prototype = {};
  A.__IsUselessVisitor_Object_AnySelectorVisitor.prototype = {};
  A.AttributeSelector.prototype = {
    accept$1$1(visitor) {
      return visitor.visitAttributeSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A.AttributeSelector && other.name.$eq(0, _this.name) && other.op == _this.op && other.value == _this.value && other.modifier == _this.modifier;
    },
    get$hashCode(_) {
      var _this = this,
        t1 = _this.name;
      return (B.JSString_methods.get$hashCode(t1.name) ^ J.get$hashCode$(t1.namespace) ^ J.get$hashCode$(_this.op) ^ J.get$hashCode$(_this.value) ^ J.get$hashCode$(_this.modifier)) >>> 0;
    }
  };
  A.AttributeOperator.prototype = {
    _enumToString$0() {
      return "AttributeOperator." + this._name;
    },
    toString$0(_) {
      return this._attribute$_text;
    }
  };
  A.ClassSelector.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ClassSelector && other.name === this.name;
    },
    accept$1$1(visitor) {
      return visitor.visitClassSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      return new A.ClassSelector(this.name + suffix, this.span);
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    }
  };
  A.Combinator.prototype = {
    _enumToString$0() {
      return "Combinator." + this._name;
    },
    toString$0(_) {
      return this._combinator$_text;
    }
  };
  A.ComplexSelector.prototype = {
    get$specificity() {
      var result, _this = this,
        value = _this.__ComplexSelector_specificity_FI;
      if (value === $) {
        result = B.JSArray_methods.fold$2(_this.components, 0, new A.ComplexSelector_specificity_closure());
        _this.__ComplexSelector_specificity_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.__ComplexSelector_specificity_FI = result;
        value = result;
      }
      return value;
    },
    get$singleCompound() {
      var _0_0, _0_4, selector, t1;
      if (this.leadingCombinators.length !== 0)
        return null;
      _0_0 = this.components;
      _0_4 = A._InitializedCell$(new A.ComplexSelector_singleCompound_closure(_0_0));
      $label0$0: {
        if (_0_0.length === 1) {
          selector = _0_4._readFinal$0().selector;
          t1 = _0_4._readFinal$0().combinators.length <= 0;
        } else {
          selector = null;
          t1 = false;
        }
        if (t1) {
          t1 = selector;
          break $label0$0;
        }
        t1 = null;
        break $label0$0;
      }
      return t1;
    },
    accept$1$1(visitor) {
      return visitor.visitComplexSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    isSuperselector$1(other) {
      return this.leadingCombinators.length === 0 && other.leadingCombinators.length === 0 && A.complexIsSuperselector(this.components, other.components);
    },
    withAdditionalCombinators$1(combinators) {
      var _0_0, _0_1, initial, last, t1, t2, _this = this, _null = null;
      if (combinators.length === 0)
        return _this;
      _0_0 = _this.components;
      _0_1 = A._InitializedCell$(new A.ComplexSelector_withAdditionalCombinators_closure(_0_0));
      $label0$0: {
        if (_0_1._readFinal$0() >= 1) {
          initial = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
          last = _0_0[_0_1._readFinal$0() - 1];
          last = last;
          t1 = true;
        } else {
          last = _null;
          initial = last;
          t1 = false;
        }
        if (t1) {
          t1 = A.List_List$of(initial, true, type$.ComplexSelectorComponent);
          t1.push(last.withAdditionalCombinators$1(combinators));
          t2 = _this.lineBreak || false;
          t2 = A.ComplexSelector$(_this.leadingCombinators, t1, _this.span, t2);
          t1 = t2;
          break $label0$0;
        }
        if (_0_1._readFinal$0() <= 0) {
          t1 = A.List_List$of(_this.leadingCombinators, true, type$.CssValue_Combinator);
          B.JSArray_methods.addAll$1(t1, combinators);
          t2 = _this.lineBreak || false;
          t2 = A.ComplexSelector$(t1, B.List_empty0, _this.span, t2);
          t1 = t2;
          break $label0$0;
        }
        t1 = _null;
      }
      return t1;
    },
    concatenate$3$forceLineBreak(child, span, forceLineBreak) {
      var t2, _0_1, initial, last, t3, t4, _this = this,
        t1 = child.leadingCombinators,
        _0_0 = _this.components;
      if (t1.length === 0) {
        t1 = A.List_List$of(_0_0, true, type$.ComplexSelectorComponent);
        B.JSArray_methods.addAll$1(t1, child.components);
        t2 = _this.lineBreak || child.lineBreak || forceLineBreak;
        return A.ComplexSelector$(_this.leadingCombinators, t1, span, t2);
      } else {
        _0_1 = A._InitializedCell$(new A.ComplexSelector_concatenate_closure(_0_0));
        if (_0_1._readFinal$0() >= 1) {
          initial = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
          last = _0_0[_0_1._readFinal$0() - 1];
          last = last;
          t2 = true;
        } else {
          initial = null;
          last = null;
          t2 = false;
        }
        t3 = _this.leadingCombinators;
        t4 = child.components;
        if (t2) {
          t2 = A.List_List$of(initial, true, type$.ComplexSelectorComponent);
          t2.push(last.withAdditionalCombinators$1(t1));
          B.JSArray_methods.addAll$1(t2, t4);
          return A.ComplexSelector$(t3, t2, span, _this.lineBreak || child.lineBreak || forceLineBreak);
        } else {
          t2 = A.List_List$of(t3, true, type$.CssValue_Combinator);
          B.JSArray_methods.addAll$1(t2, t1);
          return A.ComplexSelector$(t2, t4, span, _this.lineBreak || child.lineBreak || forceLineBreak);
        }
      }
    },
    concatenate$2(child, span) {
      return this.concatenate$3$forceLineBreak(child, span, false);
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.leadingCombinators) ^ B.C_ListEquality0.hash$1(this.components);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ComplexSelector && B.C_ListEquality.equals$2(0, this.leadingCombinators, other.leadingCombinators) && B.C_ListEquality.equals$2(0, this.components, other.components);
    }
  };
  A.ComplexSelector_specificity_closure.prototype = {
    call$2(sum, component) {
      return sum + component.selector.get$specificity();
    },
    $signature: 411
  };
  A.ComplexSelector_singleCompound_closure.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 416
  };
  A.ComplexSelector_withAdditionalCombinators_closure.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.ComplexSelector_concatenate_closure.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.ComplexSelectorComponent.prototype = {
    withAdditionalCombinators$1(combinators) {
      var t1, t2, _this = this;
      if (combinators.length === 0)
        t1 = _this;
      else {
        t1 = type$.CssValue_Combinator;
        t2 = A.List_List$of(_this.combinators, true, t1);
        B.JSArray_methods.addAll$1(t2, combinators);
        t1 = new A.ComplexSelectorComponent(_this.selector, A.List_List$unmodifiable(t2, t1), _this.span);
      }
      return t1;
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.selector.components) ^ B.C_ListEquality0.hash$1(this.combinators);
    },
    $eq(_, other) {
      var t1;
      if (other == null)
        return false;
      if (other instanceof A.ComplexSelectorComponent) {
        t1 = B.C_ListEquality.equals$2(0, this.selector.components, other.selector.components);
        t1 = t1 && B.C_ListEquality.equals$2(0, this.combinators, other.combinators);
      } else
        t1 = false;
      return t1;
    },
    toString$0(_) {
      var t1 = this.combinators;
      return A.serializeSelector(this.selector, true) + new A.MappedListIterable(t1, new A.ComplexSelectorComponent_toString_closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$1(0, "");
    }
  };
  A.ComplexSelectorComponent_toString_closure.prototype = {
    call$1(combinator) {
      return " " + combinator.toString$0(0);
    },
    $signature: 429
  };
  A.CompoundSelector.prototype = {
    get$specificity() {
      var result, _this = this,
        value = _this.__CompoundSelector_specificity_FI;
      if (value === $) {
        result = B.JSArray_methods.fold$2(_this.components, 0, new A.CompoundSelector_specificity_closure());
        _this.__CompoundSelector_specificity_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.__CompoundSelector_specificity_FI = result;
        value = result;
      }
      return value;
    },
    accept$1$1(visitor) {
      return visitor.visitCompoundSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.components);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.CompoundSelector && B.C_ListEquality.equals$2(0, this.components, other.components);
    }
  };
  A.CompoundSelector_specificity_closure.prototype = {
    call$2(sum, component) {
      return sum + component.get$specificity();
    },
    $signature: 433
  };
  A.IDSelector.prototype = {
    get$specificity() {
      return A._asInt(Math.pow(A.SimpleSelector.prototype.get$specificity.call(this), 2));
    },
    accept$1$1(visitor) {
      return visitor.visitIDSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      return new A.IDSelector(this.name + suffix, this.span);
    },
    unify$1(compound) {
      if (B.JSArray_methods.any$1(compound, new A.IDSelector_unify_closure(this)))
        return null;
      return this.super$SimpleSelector$unify(compound);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.IDSelector && other.name === this.name;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    }
  };
  A.IDSelector_unify_closure.prototype = {
    call$1(simple) {
      var t1;
      if (simple instanceof A.IDSelector)
        t1 = this.$this.name !== simple.name;
      else
        t1 = false;
      return t1;
    },
    $signature: 16
  };
  A.SelectorList.prototype = {
    get$asSassList() {
      var t1 = this.components;
      return A.SassList$(new A.MappedListIterable(t1, new A.SelectorList_asSassList_closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value>")), B.ListSeparator_rXA, false);
    },
    accept$1$1(visitor) {
      return visitor.visitSelectorList$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unify$1(other) {
      var t3, t4, t5, t6, _i, complex1, _i0, t7,
        t1 = type$.JSArray_ComplexSelector,
        t2 = A._setArrayType([], t1);
      for (t3 = this.components, t4 = t3.length, t5 = other.components, t6 = t5.length, _i = 0; _i < t4; ++_i) {
        complex1 = t3[_i];
        for (_i0 = 0; _i0 < t6; ++_i0) {
          t7 = A.unifyComplex(A._setArrayType([complex1, t5[_i0]], t1), complex1.span);
          if (t7 != null)
            B.JSArray_methods.addAll$1(t2, t7);
        }
      }
      return t2.length === 0 ? null : A.SelectorList$(t2, this.span);
    },
    resolveParentSelectors$2$implicitParent($parent, implicitParent) {
      var parentSelector, t1, _this = this;
      if ($parent == null) {
        parentSelector = B.C__ParentSelectorVisitor.visitSelectorList$1(_this);
        if (parentSelector == null)
          return _this;
        throw A.wrapException(A.SassException$(string$.Top_le, parentSelector.span, null));
      }
      t1 = _this.components;
      return A.SelectorList$(A.flattenVertically(new A.MappedListIterable(t1, new A.SelectorList_resolveParentSelectors_closure(_this, implicitParent, $parent), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Iterable<ComplexSelector>>")), type$.ComplexSelector), _this.span);
    },
    resolveParentSelectors$1($parent) {
      return this.resolveParentSelectors$2$implicitParent($parent, true);
    },
    _resolveParentSelectorsCompound$2(component, $parent) {
      var resolvedSimples, parentSelector, error, stackTrace, t2, resolvedSimples0, exception,
        t1 = component.selector,
        simples = t1.components,
        containsSelectorPseudo = J.any$1$ax(simples, new A.SelectorList__resolveParentSelectorsCompound_closure());
      if (!containsSelectorPseudo && !(J.get$first$ax(simples) instanceof A.ParentSelector))
        return null;
      if (containsSelectorPseudo) {
        t2 = simples;
        resolvedSimples0 = new A.MappedListIterable(t2, new A.SelectorList__resolveParentSelectorsCompound_closure0($parent), A.instanceType(t2)._eval$1("MappedListIterable<1,SimpleSelector>"));
      } else
        resolvedSimples0 = simples;
      resolvedSimples = resolvedSimples0;
      parentSelector = J.get$first$ax(simples);
      try {
        if (!(parentSelector instanceof A.ParentSelector)) {
          t2 = component.span;
          t2 = A._setArrayType([A.ComplexSelector$(B.List_empty1, A._setArrayType([new A.ComplexSelectorComponent(A.CompoundSelector$(resolvedSimples, t1.span), A.List_List$unmodifiable(component.combinators, type$.CssValue_Combinator), t2)], type$.JSArray_ComplexSelectorComponent), t2, false)], type$.JSArray_ComplexSelector);
          return t2;
        } else if (J.get$length$asx(simples) === 1 && parentSelector.suffix == null) {
          t1 = $parent.withAdditionalCombinators$1(component.combinators);
          return t1.components;
        }
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace(error.withAdditionalSpan$2(parentSelector.span, "parent selector"), error, stackTrace);
        } else
          throw exception;
      }
      t1 = $parent.components;
      return new A.MappedListIterable(t1, new A.SelectorList__resolveParentSelectorsCompound_closure1(parentSelector, resolvedSimples, component), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector>"));
    },
    isSuperselector$1(other) {
      return A.listIsSuperselector(this.components, other.components);
    },
    withAdditionalCombinators$1(combinators) {
      var t1;
      if (combinators.length === 0)
        t1 = this;
      else {
        t1 = this.components;
        t1 = A.SelectorList$(new A.MappedListIterable(t1, new A.SelectorList_withAdditionalCombinators_closure(combinators), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector>")), this.span);
      }
      return t1;
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.components);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SelectorList && B.C_ListEquality.equals$2(0, this.components, other.components);
    }
  };
  A.SelectorList_asSassList_closure.prototype = {
    call$1(complex) {
      var t3, t4, _i, component, t5, visitor, t6, t7, _i0,
        t1 = type$.JSArray_Value,
        t2 = A._setArrayType([], t1);
      for (t3 = complex.leadingCombinators, t4 = t3.length, _i = 0; _i < t4; ++_i)
        t2.push(new A.SassString(J.toString$0$(t3[_i].value), false));
      for (t3 = complex.components, t4 = t3.length, _i = 0; _i < t4; ++_i) {
        component = t3[_i];
        t5 = component.selector;
        visitor = A._SerializeVisitor$(null, true, null, true, false, null, true);
        t5.accept$1(visitor);
        t5 = A._setArrayType([new A.SassString(visitor._serialize$_buffer.toString$0(0), false)], t1);
        for (t6 = component.combinators, t7 = t6.length, _i0 = 0; _i0 < t7; ++_i0)
          t5.push(new A.SassString(J.toString$0$(t6[_i0].value), false));
        B.JSArray_methods.addAll$1(t2, t5);
      }
      return A.SassList$(t2, B.ListSeparator_EVt, false);
    },
    $signature: 437
  };
  A.SelectorList_resolveParentSelectors_closure.prototype = {
    call$1(complex) {
      var t1, newComplexes, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _i, component, resolved, i, t12, t13, t14, _i0, newComplex, t15, _this = this;
      if (complex.accept$1(B.C__ParentSelectorVisitor) == null) {
        if (!_this.implicitParent)
          return A._setArrayType([complex], type$.JSArray_ComplexSelector);
        t1 = _this.parent.components;
        return new A.MappedListIterable(t1, new A.SelectorList_resolveParentSelectors__closure(complex), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector>"));
      }
      t1 = type$.JSArray_ComplexSelector;
      newComplexes = A._setArrayType([], t1);
      for (t2 = complex.components, t3 = t2.length, t4 = _this.$this, t5 = _this.parent, t6 = type$.ComplexSelector, t7 = complex.leadingCombinators, t8 = t7.length === 0, t9 = complex.span, t10 = type$.ComplexSelectorComponent, t11 = type$.JSArray_ComplexSelectorComponent, _i = 0; _i < t3; ++_i) {
        component = t2[_i];
        resolved = t4._resolveParentSelectorsCompound$2(component, t5);
        if (resolved == null)
          if (newComplexes.length === 0)
            newComplexes.push(A.ComplexSelector$(t7, A._setArrayType([component], t11), t9, false));
          else
            for (i = 0; i < newComplexes.length; ++i) {
              t12 = newComplexes[i];
              t13 = t12.leadingCombinators;
              t14 = A.List_List$of(t12.components, true, t10);
              t14.push(component);
              newComplexes[i] = A.ComplexSelector$(t13, t14, t9, t12.lineBreak || false);
            }
        else if (newComplexes.length === 0)
          B.JSArray_methods.addAll$1(newComplexes, t8 ? resolved : J.map$1$1$ax(resolved, new A.SelectorList_resolveParentSelectors__closure0(complex), t6));
        else {
          t12 = A._setArrayType([], t1);
          for (t13 = newComplexes.length, t14 = J.getInterceptor$ax(resolved), _i0 = 0; _i0 < newComplexes.length; newComplexes.length === t13 || (0, A.throwConcurrentModificationError)(newComplexes), ++_i0) {
            newComplex = newComplexes[_i0];
            for (t15 = t14.get$iterator(resolved); t15.moveNext$0();)
              t12.push(newComplex.concatenate$2(t15.get$current(t15), newComplex.span));
          }
          newComplexes = t12;
        }
      }
      return newComplexes;
    },
    $signature: 454
  };
  A.SelectorList_resolveParentSelectors__closure.prototype = {
    call$1(parentComplex) {
      var t1 = this.complex;
      return parentComplex.concatenate$2(t1, t1.span);
    },
    $signature: 59
  };
  A.SelectorList_resolveParentSelectors__closure0.prototype = {
    call$1(resolvedComplex) {
      var t1 = resolvedComplex.leadingCombinators,
        t2 = this.complex,
        t3 = t2.leadingCombinators;
      if (t1.length === 0)
        t1 = t3;
      else {
        t3 = A.List_List$of(t3, true, type$.CssValue_Combinator);
        B.JSArray_methods.addAll$1(t3, t1);
        t1 = t3;
      }
      return A.ComplexSelector$(t1, resolvedComplex.components, t2.span, resolvedComplex.lineBreak);
    },
    $signature: 59
  };
  A.SelectorList__resolveParentSelectorsCompound_closure.prototype = {
    call$1(simple) {
      var selector;
      if (!(simple instanceof A.PseudoSelector))
        return false;
      selector = simple.selector;
      return selector != null && selector.accept$1(B.C__ParentSelectorVisitor) != null;
    },
    $signature: 16
  };
  A.SelectorList__resolveParentSelectorsCompound_closure0.prototype = {
    call$1(simple) {
      var selector, t1,
        _0_2 = A._InitializedCell$(new A.SelectorList__resolveParentSelectorsCompound__closure(simple));
      $label0$0: {
        if (simple instanceof A.PseudoSelector) {
          if (_0_2._readFinal$0() != null) {
            selector = _0_2._readFinal$0();
            t1 = true;
          } else {
            selector = null;
            t1 = false;
          }
          t1 = t1 && selector.accept$1(B.C__ParentSelectorVisitor) != null;
        } else {
          selector = null;
          t1 = false;
        }
        if (t1) {
          t1 = simple.withSelector$1(selector.resolveParentSelectors$2$implicitParent(this.parent, false));
          break $label0$0;
        }
        t1 = simple;
        break $label0$0;
      }
      return t1;
    },
    $signature: 457
  };
  A.SelectorList__resolveParentSelectorsCompound__closure.prototype = {
    call$0() {
      return type$.PseudoSelector._as(this._0_0).selector;
    },
    $signature: 75
  };
  A.SelectorList__resolveParentSelectorsCompound_closure1.prototype = {
    call$1(complex) {
      var lastComponent, suffix, lastSimples, t1, t2, last, t3, error, stackTrace, t4, t5, t6, t7, exception, _this = this;
      try {
        t4 = complex.components;
        lastComponent = B.JSArray_methods.get$last(t4);
        if (lastComponent.combinators.length !== 0) {
          t1 = A.MultiSpanSassException$('Selector "' + complex.toString$0(0) + string$.x22x20can_, A.SpanExtensions_trimRight(lastComponent.span), "outer selector", A.LinkedHashMap_LinkedHashMap$_literal([_this.parentSelector.span, "parent selector"], type$.FileSpan, type$.String), null);
          throw A.wrapException(t1);
        }
        suffix = _this.parentSelector.suffix;
        lastSimples = lastComponent.selector.components;
        t5 = type$.SimpleSelector;
        t6 = _this.resolvedSimples;
        t7 = J.getInterceptor$ax(t6);
        if (suffix == null) {
          t1 = A.List_List$of(lastSimples, true, t5);
          J.addAll$1$ax(t1, t7.skip$1(t6, 1));
          t1 = t1;
        } else {
          t2 = A.List_List$of(A.IterableExtension_get_exceptLast(lastSimples), true, t5);
          J.add$1$ax(t2, J.get$last$ax(lastSimples).addSuffix$1(suffix));
          J.addAll$1$ax(t2, t7.skip$1(t6, 1));
          t1 = t2;
        }
        t2 = _this.component;
        last = A.CompoundSelector$(t1, t2.selector.span);
        t3 = A.List_List$of(A.IterableExtension_get_exceptLast(t4), true, type$.ComplexSelectorComponent);
        t4 = t2.span;
        J.add$1$ax(t3, new A.ComplexSelectorComponent(last, A.List_List$unmodifiable(t2.combinators, type$.CssValue_Combinator), t4));
        t4 = A.ComplexSelector$(complex.leadingCombinators, t3, t4, complex.lineBreak);
        return t4;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace(error.withAdditionalSpan$2(_this.parentSelector.span, "parent selector"), error, stackTrace);
        } else
          throw exception;
      }
    },
    $signature: 59
  };
  A.SelectorList_withAdditionalCombinators_closure.prototype = {
    call$1(complex) {
      return complex.withAdditionalCombinators$1(this.combinators);
    },
    $signature: 59
  };
  A._ParentSelectorVisitor.prototype = {
    visitParentSelector$1(selector) {
      return selector;
    }
  };
  A.__ParentSelectorVisitor_Object_SelectorSearchVisitor.prototype = {};
  A.ParentSelector.prototype = {
    accept$1$1(visitor) {
      return visitor.visitParentSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unify$1(compound) {
      return A.throwExpression(A.UnsupportedError$("& doesn't support unification."));
    }
  };
  A.PlaceholderSelector.prototype = {
    accept$1$1(visitor) {
      return visitor.visitPlaceholderSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      return new A.PlaceholderSelector(this.name + suffix, this.span);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.PlaceholderSelector && other.name === this.name;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    }
  };
  A.PseudoSelector.prototype = {
    get$isHostContext() {
      return this.isClass && this.name === "host-context" && this.selector != null;
    },
    get$specificity() {
      var result, _this = this,
        value = _this.__PseudoSelector_specificity_FI;
      if (value === $) {
        result = new A.PseudoSelector_specificity_closure(_this).call$0();
        _this.__PseudoSelector_specificity_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.__PseudoSelector_specificity_FI = result;
        value = result;
      }
      return value;
    },
    withSelector$1(selector) {
      var _this = this;
      return A.PseudoSelector$(_this.name, _this.span, _this.argument, !_this.isClass, selector);
    },
    addSuffix$1(suffix) {
      var _this = this;
      if (_this.argument != null || _this.selector != null)
        _this.super$SimpleSelector$addSuffix(suffix);
      return A.PseudoSelector$(_this.name + suffix, _this.span, null, !_this.isClass, null);
    },
    unify$1(compound) {
      var other, result, t2, addedThis, _i, simple, _this = this,
        t1 = _this.name;
      if (t1 === "host" || t1 === "host-context") {
        if (!B.JSArray_methods.every$1(compound, new A.PseudoSelector_unify_closure()))
          return null;
      } else {
        if (compound.length === 1) {
          other = compound[0];
          if (!(other instanceof A.UniversalSelector))
            if (other instanceof A.PseudoSelector)
              t1 = other.isClass && other.name === "host" || other.get$isHostContext();
            else
              t1 = false;
          else
            t1 = true;
        } else {
          other = null;
          t1 = false;
        }
        if (t1)
          return other.unify$1(A._setArrayType([_this], type$.JSArray_SimpleSelector));
      }
      if (B.JSArray_methods.contains$1(compound, _this))
        return compound;
      result = A._setArrayType([], type$.JSArray_SimpleSelector);
      for (t1 = compound.length, t2 = !_this.isClass, addedThis = false, _i = 0; _i < compound.length; compound.length === t1 || (0, A.throwConcurrentModificationError)(compound), ++_i) {
        simple = compound[_i];
        if (simple instanceof A.PseudoSelector && !simple.isClass) {
          if (t2)
            return null;
          result.push(_this);
          addedThis = true;
        }
        result.push(simple);
      }
      if (!addedThis)
        result.push(_this);
      return result;
    },
    isSuperselector$1(other) {
      var selector, t1, t2, _this = this;
      if (_this.super$SimpleSelector$isSuperselector(other))
        return true;
      selector = _this.selector;
      if (selector == null)
        return _this.$eq(0, other);
      if (other instanceof A.PseudoSelector && !_this.isClass && !other.isClass && _this.normalizedName === "slotted" && other.name === _this.name) {
        t1 = A.NullableExtension_andThen(other.selector, selector.get$isSuperselector());
        return t1 == null ? false : t1;
      }
      t1 = type$.JSArray_SimpleSelector;
      t2 = _this.span;
      return A.compoundIsSuperselector(A.CompoundSelector$(A._setArrayType([_this], t1), t2), A.CompoundSelector$(A._setArrayType([other], t1), t2), null);
    },
    accept$1$1(visitor) {
      return visitor.visitPseudoSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A.PseudoSelector && other.name === _this.name && other.isClass === _this.isClass && other.argument == _this.argument && J.$eq$(other.selector, _this.selector);
    },
    get$hashCode(_) {
      var _this = this,
        t1 = B.JSString_methods.get$hashCode(_this.name),
        t2 = !_this.isClass ? 519018 : 218159;
      return t1 ^ t2 ^ J.get$hashCode$(_this.argument) ^ J.get$hashCode$(_this.selector);
    }
  };
  A.PseudoSelector_specificity_closure.prototype = {
    call$0() {
      var selector, t2,
        t1 = this.$this;
      if (!t1.isClass)
        return 1;
      selector = t1.selector;
      if (selector == null)
        return A.SimpleSelector.prototype.get$specificity.call(t1);
      switch (t1.normalizedName) {
        case "where":
          return 0;
        case "is":
        case "not":
        case "has":
        case "matches":
          t1 = selector.components;
          return A.IterableIntegerExtension_get_max(new A.MappedListIterable(t1, new A.PseudoSelector_specificity__closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,int>")));
        case "nth-child":
        case "nth-last-child":
          t1 = A.SimpleSelector.prototype.get$specificity.call(t1);
          t2 = selector.components;
          return t1 + A.IterableIntegerExtension_get_max(new A.MappedListIterable(t2, new A.PseudoSelector_specificity__closure0(), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,int>")));
        default:
          return A.SimpleSelector.prototype.get$specificity.call(t1);
      }
    },
    $signature: 3
  };
  A.PseudoSelector_specificity__closure.prototype = {
    call$1(component) {
      return component.get$specificity();
    },
    $signature: 217
  };
  A.PseudoSelector_specificity__closure0.prototype = {
    call$1(component) {
      return component.get$specificity();
    },
    $signature: 217
  };
  A.PseudoSelector_unify_closure.prototype = {
    call$1(simple) {
      var t1;
      if (simple instanceof A.PseudoSelector)
        t1 = simple.isClass && simple.name === "host" || simple.selector != null;
      else
        t1 = false;
      return t1;
    },
    $signature: 16
  };
  A.QualifiedName.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.QualifiedName && other.name === this.name && other.namespace == this.namespace;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name) ^ J.get$hashCode$(this.namespace);
    },
    toString$0(_) {
      var t1 = this.namespace,
        t2 = this.name;
      return t1 == null ? t2 : t1 + "|" + t2;
    }
  };
  A.SimpleSelector.prototype = {
    get$specificity() {
      return 1000;
    },
    addSuffix$1(suffix) {
      return A.throwExpression(A.MultiSpanSassException$('Selector "' + this.toString$0(0) + "\" can't have a suffix", this.span, "outer selector", A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String), null));
    },
    unify$1(compound) {
      var other, t1, result, addedThis, _i, simple, _this = this;
      if (compound.length === 1) {
        other = compound[0];
        if (!(other instanceof A.UniversalSelector))
          if (other instanceof A.PseudoSelector)
            t1 = other.isClass && other.name === "host" || other.get$isHostContext();
          else
            t1 = false;
        else
          t1 = true;
      } else {
        other = null;
        t1 = false;
      }
      if (t1)
        return other.unify$1(A._setArrayType([_this], type$.JSArray_SimpleSelector));
      if (B.JSArray_methods.contains$1(compound, _this))
        return compound;
      result = A._setArrayType([], type$.JSArray_SimpleSelector);
      for (t1 = compound.length, addedThis = false, _i = 0; _i < compound.length; compound.length === t1 || (0, A.throwConcurrentModificationError)(compound), ++_i) {
        simple = compound[_i];
        if (!addedThis && simple instanceof A.PseudoSelector) {
          result.push(_this);
          addedThis = true;
        }
        result.push(simple);
      }
      if (!addedThis)
        result.push(_this);
      return result;
    },
    isSuperselector$1(other) {
      var list;
      if (this.$eq(0, other))
        return true;
      if (other instanceof A.PseudoSelector && other.isClass) {
        list = other.selector;
        if (list != null && $._subselectorPseudos.contains$1(0, other.normalizedName))
          return B.JSArray_methods.every$1(list.components, new A.SimpleSelector_isSuperselector_closure(this));
      }
      return false;
    }
  };
  A.SimpleSelector_isSuperselector_closure.prototype = {
    call$1(complex) {
      var t1 = complex.components;
      return t1.length !== 0 && B.JSArray_methods.any$1(B.JSArray_methods.get$last(t1).selector.components, new A.SimpleSelector_isSuperselector__closure(this.$this));
    },
    $signature: 19
  };
  A.SimpleSelector_isSuperselector__closure.prototype = {
    call$1(simple) {
      return this.$this.isSuperselector$1(simple);
    },
    $signature: 16
  };
  A.TypeSelector.prototype = {
    get$specificity() {
      return 1;
    },
    accept$1$1(visitor) {
      return visitor.visitTypeSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      var t1 = this.name;
      return new A.TypeSelector(new A.QualifiedName(t1.name + suffix, t1.namespace), this.span);
    },
    unify$1(compound) {
      var unified, t1,
        _0_0 = B.JSArray_methods.get$first(compound);
      if (_0_0 instanceof A.UniversalSelector || _0_0 instanceof A.TypeSelector) {
        unified = A.unifyUniversalAndElement(this, B.JSArray_methods.get$first(compound));
        if (unified == null)
          return null;
        t1 = A._setArrayType([unified], type$.JSArray_SimpleSelector);
        B.JSArray_methods.addAll$1(t1, A.SubListIterable$(compound, 1, null, A._arrayInstanceType(compound)._precomputed1));
        return t1;
      } else {
        t1 = A._setArrayType([this], type$.JSArray_SimpleSelector);
        B.JSArray_methods.addAll$1(t1, compound);
        return t1;
      }
    },
    isSuperselector$1(other) {
      var t1, t2;
      if (!this.super$SimpleSelector$isSuperselector(other))
        if (other instanceof A.TypeSelector) {
          t1 = this.name;
          t2 = other.name;
          if (t1.name === t2.name) {
            t1 = t1.namespace;
            t1 = t1 === "*" || t1 == t2.namespace;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = true;
      return t1;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.TypeSelector && other.name.$eq(0, this.name);
    },
    get$hashCode(_) {
      var t1 = this.name;
      return B.JSString_methods.get$hashCode(t1.name) ^ J.get$hashCode$(t1.namespace);
    }
  };
  A.UniversalSelector.prototype = {
    get$specificity() {
      return 0;
    },
    accept$1$1(visitor) {
      return visitor.visitUniversalSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unify$1(compound) {
      var rest, t1, unified, first, _this = this, _null = null,
        _0_1 = A._InitializedCell$(new A.UniversalSelector_unify_closure(compound)),
        _0_4 = A._InitializedCell$(new A.UniversalSelector_unify_closure0(compound));
      if (_0_1._readFinal$0() >= 1)
        if (_0_4._readFinal$0() instanceof A.UniversalSelector || _0_4._readFinal$0() instanceof A.TypeSelector) {
          rest = B.JSArray_methods.sublist$1(compound, 1);
          t1 = true;
        } else {
          rest = _null;
          t1 = false;
        }
      else {
        rest = _null;
        t1 = false;
      }
      if (t1) {
        unified = A.unifyUniversalAndElement(_this, B.JSArray_methods.get$first(compound));
        if (unified == null)
          return _null;
        t1 = A._setArrayType([unified], type$.JSArray_SimpleSelector);
        B.JSArray_methods.addAll$1(t1, rest);
        return t1;
      }
      if (J.$eq$(_0_1._readFinal$0(), 1))
        if (_0_4._readFinal$0() instanceof A.PseudoSelector) {
          first = _0_4._readFinal$0();
          t1 = first.isClass && first.name === "host" || first.get$isHostContext();
        } else
          t1 = false;
      else
        t1 = false;
      if (t1)
        return _null;
      if (_0_1._readFinal$0() <= 0)
        return A._setArrayType([_this], type$.JSArray_SimpleSelector);
      t1 = _this.namespace;
      if (t1 == null || t1 === "*")
        t1 = compound;
      else {
        t1 = A._setArrayType([_this], type$.JSArray_SimpleSelector);
        B.JSArray_methods.addAll$1(t1, compound);
      }
      return t1;
    },
    isSuperselector$1(other) {
      var t1 = this.namespace;
      if (t1 === "*")
        return true;
      if (other instanceof A.TypeSelector)
        return t1 == other.name.namespace;
      if (other instanceof A.UniversalSelector)
        return t1 == other.namespace;
      return t1 == null || this.super$SimpleSelector$isSuperselector(other);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.UniversalSelector && other.namespace == this.namespace;
    },
    get$hashCode(_) {
      return J.get$hashCode$(this.namespace);
    }
  };
  A.UniversalSelector_unify_closure.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.UniversalSelector_unify_closure0.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 218
  };
  A._compileStylesheet_closure0.prototype = {
    call$1(url) {
      var t1;
      if (url === "") {
        t1 = this.stylesheet.span;
        t1 = A.Uri_Uri$dataFromString(A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.get$file(t1)._decodedChars, 0, null), 0, null), B.C_Utf8Codec, null).get$_text();
      } else
        t1 = this.importCache.sourceMapUrl$1(0, A.Uri_parse(url)).toString$0(0);
      return t1;
    },
    $signature: 7
  };
  A.AsyncEnvironment.prototype = {
    closure$0() {
      var t4, t5, t6, _this = this,
        t1 = _this._async_environment$_forwardedModules,
        t2 = _this._async_environment$_nestedForwardedModules,
        t3 = _this._async_environment$_variables;
      t3 = A._setArrayType(t3.slice(0), A._arrayInstanceType(t3));
      t4 = _this._async_environment$_variableNodes;
      t4 = A._setArrayType(t4.slice(0), A._arrayInstanceType(t4));
      t5 = _this._async_environment$_functions;
      t5 = A._setArrayType(t5.slice(0), A._arrayInstanceType(t5));
      t6 = _this._async_environment$_mixins;
      t6 = A._setArrayType(t6.slice(0), A._arrayInstanceType(t6));
      return A.AsyncEnvironment$_(_this._async_environment$_modules, _this._async_environment$_namespaceNodes, _this._async_environment$_globalModules, _this._async_environment$_importedModules, t1, t2, _this._async_environment$_allModules, t3, t4, t5, t6, _this._async_environment$_content);
    },
    forwardModule$2(module, rule) {
      var view, t1, t2, _this = this,
        forwardedModules = _this._async_environment$_forwardedModules;
      if (forwardedModules == null)
        forwardedModules = _this._async_environment$_forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_AsyncCallable, type$.AstNode);
      view = A.ForwardedModuleView_ifNecessary(module, rule, type$.AsyncCallable);
      for (t1 = A.LinkedHashMapKeyIterator$(forwardedModules, forwardedModules._modifications); t1.moveNext$0();) {
        t2 = t1.__js_helper$_current;
        _this._async_environment$_assertNoConflicts$5(view.get$variables(), t2.get$variables(), view, t2, "variable");
        _this._async_environment$_assertNoConflicts$5(view.get$functions(view), t2.get$functions(t2), view, t2, "function");
        _this._async_environment$_assertNoConflicts$5(view.get$mixins(), t2.get$mixins(), view, t2, "mixin");
      }
      _this._async_environment$_allModules.push(module);
      forwardedModules.$indexSet(0, view, rule);
    },
    _async_environment$_assertNoConflicts$5(newMembers, oldMembers, newModule, oldModule, type) {
      var larger, smaller, t1, t2, t3, t4, $name, small, large, span;
      if (newMembers.get$length(newMembers) < oldMembers.get$length(oldMembers)) {
        larger = oldMembers;
        smaller = newMembers;
      } else {
        larger = newMembers;
        smaller = oldMembers;
      }
      for (t1 = type$.String, t2 = A.MapExtensions_get_pairs(smaller, t1, type$.Object), t2 = t2.get$iterator(t2), t3 = type === "variable"; t2.moveNext$0();) {
        t4 = t2.get$current(t2);
        $name = t4._0;
        small = t4._1;
        small = small;
        large = larger.$index(0, $name);
        if (large == null)
          continue;
        if (t3 ? newModule.variableIdentity$1($name) === oldModule.variableIdentity$1($name) : J.$eq$(large, small))
          continue;
        if (t3)
          $name = "$" + $name;
        t2 = this._async_environment$_forwardedModules;
        if (t2 == null)
          span = null;
        else {
          t2 = t2.$index(0, oldModule);
          span = t2 == null ? null : J.get$span$z(t2);
        }
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, t1);
        if (span != null)
          t2.$indexSet(0, span, "original @forward");
        throw A.wrapException(A.MultiSpanSassScriptException$("Two forwarded modules both define a " + type + " named " + $name + ".", "new @forward", t2));
      }
    },
    importForwards$1(module) {
      var forwardedModules, t1, t2, t3, t4, node, t5, t6, t7, t8, t9, t10, _i, t11, shadowed, _length, _list, _this = this,
        forwarded = module._async_environment$_environment._async_environment$_forwardedModules;
      if (forwarded == null)
        return;
      forwardedModules = _this._async_environment$_forwardedModules;
      if (forwardedModules != null) {
        t1 = type$.Module_AsyncCallable;
        t2 = type$.AstNode;
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t1 = A.MapExtensions_get_pairs(forwarded, t1, t2), t1 = t1.get$iterator(t1), t2 = _this._async_environment$_globalModules; t1.moveNext$0();) {
          t4 = t1.get$current(t1);
          module = t4._0;
          node = t4._1;
          if (!forwardedModules.containsKey$1(module) || !t2.containsKey$1(module))
            t3.$indexSet(0, module, node);
        }
        forwarded = t3;
      } else
        forwardedModules = _this._async_environment$_forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_AsyncCallable, type$.AstNode);
      t1 = type$.String;
      t2 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t3 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t3.moveNext$0();)
        for (t4 = t3.__js_helper$_current.get$variables(), t4 = J.get$iterator$ax(t4.get$keys(t4)); t4.moveNext$0();)
          t2.add$1(0, t4.get$current(t4));
      t3 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();) {
        t5 = t4.__js_helper$_current;
        for (t5 = t5.get$functions(t5), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t3.add$1(0, t5.get$current(t5));
      }
      t1 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();)
        for (t5 = t4.__js_helper$_current.get$mixins(), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t1.add$1(0, t5.get$current(t5));
      t4 = _this._async_environment$_variables;
      t5 = t4.length;
      if (t5 === 1) {
        for (t5 = _this._async_environment$_importedModules, t6 = type$.Module_AsyncCallable, t7 = type$.AstNode, t8 = A.MapExtensions_get_pairs(t5, t6, t7).toList$0(0), t9 = t8.length, t10 = type$.AsyncCallable, _i = 0; _i < t8.length; t8.length === t9 || (0, A.throwConcurrentModificationError)(t8), ++_i) {
          t11 = t8[_i];
          module = t11._0;
          node = t11._1;
          shadowed = A.ShadowedModuleView_ifNecessary(module, t3, t1, t2, t10);
          if (shadowed != null) {
            t5.remove$1(0, module);
            t11 = shadowed.variables;
            if (t11.get$isEmpty(t11)) {
              t11 = shadowed.functions;
              if (t11.get$isEmpty(t11)) {
                t11 = shadowed.mixins;
                if (t11.get$isEmpty(t11)) {
                  t11 = shadowed._shadowed_view$_inner;
                  t11 = t11.get$css(t11);
                  t11 = J.get$isEmpty$asx(t11.get$children(t11));
                } else
                  t11 = false;
              } else
                t11 = false;
            } else
              t11 = false;
            if (!t11)
              t5.$indexSet(0, shadowed, node);
          }
        }
        for (t6 = A.MapExtensions_get_pairs(forwardedModules, t6, t7).toList$0(0), t7 = t6.length, _i = 0; _i < t6.length; t6.length === t7 || (0, A.throwConcurrentModificationError)(t6), ++_i) {
          t8 = t6[_i];
          module = t8._0;
          node = t8._1;
          shadowed = A.ShadowedModuleView_ifNecessary(module, t3, t1, t2, t10);
          if (shadowed != null) {
            forwardedModules.remove$1(0, module);
            t8 = shadowed.variables;
            if (t8.get$isEmpty(t8)) {
              t8 = shadowed.functions;
              if (t8.get$isEmpty(t8)) {
                t8 = shadowed.mixins;
                if (t8.get$isEmpty(t8)) {
                  t8 = shadowed._shadowed_view$_inner;
                  t8 = t8.get$css(t8);
                  t8 = J.get$isEmpty$asx(t8.get$children(t8));
                } else
                  t8 = false;
              } else
                t8 = false;
            } else
              t8 = false;
            if (!t8)
              forwardedModules.$indexSet(0, shadowed, node);
          }
        }
        t5.addAll$1(0, forwarded);
        forwardedModules.addAll$1(0, forwarded);
      } else {
        t6 = _this._async_environment$_nestedForwardedModules;
        if (t6 == null) {
          _length = t5 - 1;
          _list = J.JSArray_JSArray$allocateGrowable(_length, type$.List_Module_AsyncCallable);
          for (t5 = type$.JSArray_Module_AsyncCallable, _i = 0; _i < _length; ++_i)
            _list[_i] = A._setArrayType([], t5);
          _this._async_environment$_nestedForwardedModules = _list;
          t5 = _list;
        } else
          t5 = t6;
        B.JSArray_methods.addAll$1(B.JSArray_methods.get$last(t5), new A.LinkedHashMapKeyIterable(forwarded, A._instanceType(forwarded)._eval$1("LinkedHashMapKeyIterable<1>")));
      }
      for (t2 = A._LinkedHashSetIterator$(t2, t2._collection$_modifications), t5 = _this._async_environment$_variableIndices, t6 = _this._async_environment$_variableNodes, t7 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t8 = t2._collection$_current;
        if (t8 == null)
          t8 = t7._as(t8);
        t5.remove$1(0, t8);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t8);
        J.remove$1$z(B.JSArray_methods.get$last(t6), t8);
      }
      for (t2 = A._LinkedHashSetIterator$(t3, t3._collection$_modifications), t3 = _this._async_environment$_functionIndices, t4 = _this._async_environment$_functions, t5 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t6 = t2._collection$_current;
        if (t6 == null)
          t6 = t5._as(t6);
        t3.remove$1(0, t6);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t6);
      }
      for (t1 = A._LinkedHashSetIterator$(t1, t1._collection$_modifications), t2 = _this._async_environment$_mixinIndices, t3 = _this._async_environment$_mixins, t4 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t5 = t1._collection$_current;
        if (t5 == null)
          t5 = t4._as(t5);
        t2.remove$1(0, t5);
        J.remove$1$z(B.JSArray_methods.get$last(t3), t5);
      }
    },
    getVariable$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._async_environment$_getModule$1(namespace).get$variables().$index(0, $name);
      if (_this._async_environment$_lastVariableName === $name) {
        t1 = _this._async_environment$_lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._async_environment$_variables[t1], $name);
        return t1 == null ? _this._async_environment$_getVariableFromGlobalModule$1($name) : t1;
      }
      t1 = _this._async_environment$_variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._async_environment$_lastVariableName = $name;
        _this._async_environment$_lastVariableIndex = index;
        t1 = J.$index$asx(_this._async_environment$_variables[index], $name);
        return t1 == null ? _this._async_environment$_getVariableFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment$_variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._async_environment$_lastVariableName = $name;
          _this._async_environment$_lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment$_variables[index], $name);
          return t1 == null ? _this._async_environment$_getVariableFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment$_getVariableFromGlobalModule$1($name);
      }
    },
    getVariable$1($name) {
      return this.getVariable$2$namespace($name, null);
    },
    _async_environment$_getVariableFromGlobalModule$1($name) {
      return this._async_environment$_fromOneModule$3($name, "variable", new A.AsyncEnvironment__getVariableFromGlobalModule_closure($name));
    },
    getVariableNode$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._async_environment$_getModule$1(namespace).get$variableNodes().$index(0, $name);
      if (_this._async_environment$_lastVariableName === $name) {
        t1 = _this._async_environment$_lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._async_environment$_variableNodes[t1], $name);
        return t1 == null ? _this._async_environment$_getVariableNodeFromGlobalModule$1($name) : t1;
      }
      t1 = _this._async_environment$_variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._async_environment$_lastVariableName = $name;
        _this._async_environment$_lastVariableIndex = index;
        t1 = J.$index$asx(_this._async_environment$_variableNodes[index], $name);
        return t1 == null ? _this._async_environment$_getVariableNodeFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment$_variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._async_environment$_lastVariableName = $name;
          _this._async_environment$_lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment$_variableNodes[index], $name);
          return t1 == null ? _this._async_environment$_getVariableNodeFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment$_getVariableNodeFromGlobalModule$1($name);
      }
    },
    _async_environment$_getVariableNodeFromGlobalModule$1($name) {
      var t1, t2, _0_0, value;
      for (t1 = this._async_environment$_importedModules, t2 = this._async_environment$_globalModules, t2 = new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>")).followedBy$1(0, new A.LinkedHashMapKeyIterable(t2, A._instanceType(t2)._eval$1("LinkedHashMapKeyIterable<1>"))), t2 = new A.FollowedByIterator(J.get$iterator$ax(t2.__internal$_first), t2._second); t2.moveNext$0();) {
        t1 = t2._currentIterator;
        _0_0 = t1.get$current(t1).get$variableNodes().$index(0, $name);
        if (_0_0 != null) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1)
          return value;
      }
      return null;
    },
    globalVariableExists$2$namespace($name, namespace) {
      if (namespace != null)
        return this._async_environment$_getModule$1(namespace).get$variables().containsKey$1($name);
      if (B.JSArray_methods.get$first(this._async_environment$_variables).containsKey$1($name))
        return true;
      return this._async_environment$_getVariableFromGlobalModule$1($name) != null;
    },
    globalVariableExists$1($name) {
      return this.globalVariableExists$2$namespace($name, null);
    },
    _async_environment$_variableIndex$1($name) {
      var t1, i;
      for (t1 = this._async_environment$_variables, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    setVariable$5$global$namespace($name, value, nodeWithSpan, global, namespace) {
      var t1, moduleWithName, nestedForwardedModules, t2, t3, t4, t5, index, _this = this;
      if (namespace != null) {
        _this._async_environment$_getModule$1(namespace).setVariable$3($name, value, nodeWithSpan);
        return;
      }
      if (global || _this._async_environment$_variables.length === 1) {
        _this._async_environment$_variableIndices.putIfAbsent$2($name, new A.AsyncEnvironment_setVariable_closure(_this, $name));
        t1 = _this._async_environment$_variables;
        if (!B.JSArray_methods.get$first(t1).containsKey$1($name)) {
          moduleWithName = _this._async_environment$_fromOneModule$3($name, "variable", new A.AsyncEnvironment_setVariable_closure0($name));
          if (moduleWithName != null) {
            moduleWithName.setVariable$3($name, value, nodeWithSpan);
            return;
          }
        }
        J.$indexSet$ax(B.JSArray_methods.get$first(t1), $name, value);
        J.$indexSet$ax(B.JSArray_methods.get$first(_this._async_environment$_variableNodes), $name, nodeWithSpan);
        return;
      }
      nestedForwardedModules = _this._async_environment$_nestedForwardedModules;
      if (nestedForwardedModules != null && !_this._async_environment$_variableIndices.containsKey$1($name) && _this._async_environment$_variableIndex$1($name) == null)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            if (t5 == null)
              t5 = t4._as(t5);
            if (t5.get$variables().containsKey$1($name)) {
              t5.setVariable$3($name, value, nodeWithSpan);
              return;
            }
          }
        }
      if (_this._async_environment$_lastVariableName === $name) {
        t1 = _this._async_environment$_lastVariableIndex;
        t1.toString;
        index = t1;
      } else
        index = _this._async_environment$_variableIndices.putIfAbsent$2($name, new A.AsyncEnvironment_setVariable_closure1(_this, $name));
      if (!_this._async_environment$_inSemiGlobalScope && index === 0) {
        index = _this._async_environment$_variables.length - 1;
        _this._async_environment$_variableIndices.$indexSet(0, $name, index);
      }
      _this._async_environment$_lastVariableName = $name;
      _this._async_environment$_lastVariableIndex = index;
      J.$indexSet$ax(_this._async_environment$_variables[index], $name, value);
      J.$indexSet$ax(_this._async_environment$_variableNodes[index], $name, nodeWithSpan);
    },
    setVariable$4$global($name, value, nodeWithSpan, global) {
      return this.setVariable$5$global$namespace($name, value, nodeWithSpan, global, null);
    },
    setLocalVariable$3($name, value, nodeWithSpan) {
      var index, _this = this,
        t1 = _this._async_environment$_variables,
        t2 = t1.length;
      _this._async_environment$_lastVariableName = $name;
      index = _this._async_environment$_lastVariableIndex = t2 - 1;
      _this._async_environment$_variableIndices.$indexSet(0, $name, index);
      J.$indexSet$ax(t1[index], $name, value);
      J.$indexSet$ax(_this._async_environment$_variableNodes[index], $name, nodeWithSpan);
    },
    getFunction$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null) {
        t1 = _this._async_environment$_getModule$1(namespace);
        return t1.get$functions(t1).$index(0, $name);
      }
      t1 = _this._async_environment$_functionIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._async_environment$_functions[index], $name);
        return t1 == null ? _this._async_environment$_getFunctionFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment$_functionIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment$_functions[index], $name);
          return t1 == null ? _this._async_environment$_getFunctionFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment$_getFunctionFromGlobalModule$1($name);
      }
    },
    getFunction$1($name) {
      return this.getFunction$2$namespace($name, null);
    },
    _async_environment$_getFunctionFromGlobalModule$1($name) {
      return this._async_environment$_fromOneModule$3($name, "function", new A.AsyncEnvironment__getFunctionFromGlobalModule_closure($name));
    },
    _async_environment$_functionIndex$1($name) {
      var t1, i;
      for (t1 = this._async_environment$_functions, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    getMixin$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._async_environment$_getModule$1(namespace).get$mixins().$index(0, $name);
      t1 = _this._async_environment$_mixinIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._async_environment$_mixins[index], $name);
        return t1 == null ? _this._async_environment$_getMixinFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment$_mixinIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment$_mixins[index], $name);
          return t1 == null ? _this._async_environment$_getMixinFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment$_getMixinFromGlobalModule$1($name);
      }
    },
    _async_environment$_getMixinFromGlobalModule$1($name) {
      return this._async_environment$_fromOneModule$3($name, "mixin", new A.AsyncEnvironment__getMixinFromGlobalModule_closure($name));
    },
    _async_environment$_mixinIndex$1($name) {
      var t1, i;
      for (t1 = this._async_environment$_mixins, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    withContent$2($content, callback) {
      return this.withContent$body$AsyncEnvironment($content, callback);
    },
    withContent$body$AsyncEnvironment($content, callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, oldContent;
      var $async$withContent$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldContent = $async$self._async_environment$_content;
              $async$self._async_environment$_content = $content;
              $async$goto = 2;
              return A._asyncAwait(callback.call$0(), $async$withContent$2);
            case 2:
              // returning from await.
              $async$self._async_environment$_content = oldContent;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$withContent$2, $async$completer);
    },
    asMixin$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, oldInMixin;
      var $async$asMixin$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldInMixin = $async$self._async_environment$_inMixin;
              $async$self._async_environment$_inMixin = true;
              $async$goto = 2;
              return A._asyncAwait(callback.call$0(), $async$asMixin$1);
            case 2:
              // returning from await.
              $async$self._async_environment$_inMixin = oldInMixin;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$asMixin$1, $async$completer);
    },
    scope$1$3$semiGlobal$when(callback, semiGlobal, when, $T) {
      return this.scope$body$AsyncEnvironment(callback, semiGlobal, when, $T, $T);
    },
    scope$1$1(callback, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, true, $T);
    },
    scope$1$2$when(callback, when, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, when, $T);
    },
    scope$1$2$semiGlobal(callback, semiGlobal, $T) {
      return this.scope$1$3$semiGlobal$when(callback, semiGlobal, true, $T);
    },
    scope$body$AsyncEnvironment(callback, semiGlobal, when, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, wasInSemiGlobalScope, $name, name0, name1, t1, t2, t3, t4, t5, t6;
      var $async$scope$1$3$semiGlobal$when = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              semiGlobal = semiGlobal && $async$self._async_environment$_inSemiGlobalScope;
              wasInSemiGlobalScope = $async$self._async_environment$_inSemiGlobalScope;
              $async$self._async_environment$_inSemiGlobalScope = semiGlobal;
              $async$goto = !when ? 3 : 4;
              break;
            case 3:
              // then
              $async$handler = 5;
              $async$goto = 8;
              return A._asyncAwait(callback.call$0(), $async$scope$1$3$semiGlobal$when);
            case 8:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              $async$next = [1];
              // goto finally
              $async$goto = 6;
              break;
              $async$next.push(7);
              // goto finally
              $async$goto = 6;
              break;
            case 5:
              // uncaught
              $async$next = [2];
            case 6:
              // finally
              $async$handler = 2;
              $async$self._async_environment$_inSemiGlobalScope = wasInSemiGlobalScope;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 7:
              // after finally
            case 4:
              // join
              t1 = $async$self._async_environment$_variables;
              t2 = type$.String;
              B.JSArray_methods.add$1(t1, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.Value));
              t3 = $async$self._async_environment$_variableNodes;
              B.JSArray_methods.add$1(t3, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.AstNode));
              t4 = $async$self._async_environment$_functions;
              t5 = type$.AsyncCallable;
              B.JSArray_methods.add$1(t4, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
              t6 = $async$self._async_environment$_mixins;
              B.JSArray_methods.add$1(t6, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
              t5 = $async$self._async_environment$_nestedForwardedModules;
              if (t5 != null)
                t5.push(A._setArrayType([], type$.JSArray_Module_AsyncCallable));
              $async$handler = 9;
              $async$goto = 12;
              return A._asyncAwait(callback.call$0(), $async$scope$1$3$semiGlobal$when);
            case 12:
              // returning from await.
              t2 = $async$result;
              $async$returnValue = t2;
              $async$next = [1];
              // goto finally
              $async$goto = 10;
              break;
              $async$next.push(11);
              // goto finally
              $async$goto = 10;
              break;
            case 9:
              // uncaught
              $async$next = [2];
            case 10:
              // finally
              $async$handler = 2;
              $async$self._async_environment$_inSemiGlobalScope = wasInSemiGlobalScope;
              $async$self._async_environment$_lastVariableIndex = $async$self._async_environment$_lastVariableName = null;
              for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t1))), t2 = $async$self._async_environment$_variableIndices; t1.moveNext$0();) {
                $name = t1.get$current(t1);
                t2.remove$1(0, $name);
              }
              B.JSArray_methods.removeLast$0(t3);
              for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t4))), t2 = $async$self._async_environment$_functionIndices; t1.moveNext$0();) {
                name0 = t1.get$current(t1);
                t2.remove$1(0, name0);
              }
              for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t6))), t2 = $async$self._async_environment$_mixinIndices; t1.moveNext$0();) {
                name1 = t1.get$current(t1);
                t2.remove$1(0, name1);
              }
              t1 = $async$self._async_environment$_nestedForwardedModules;
              if (t1 != null)
                t1.pop();
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 11:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$scope$1$3$semiGlobal$when, $async$completer);
    },
    toImplicitConfiguration$0() {
      var t2, t3, t4, i, values, nodes, t5, t6, $name, value,
        t1 = type$.String,
        configuration = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.ConfiguredValue);
      for (t2 = this._async_environment$_variables, t3 = type$.Value, t4 = this._async_environment$_variableNodes, i = 0; i < t2.length; ++i) {
        values = t2[i];
        nodes = t4[i];
        for (t5 = A.MapExtensions_get_pairs(values, t1, t3), t5 = t5.get$iterator(t5); t5.moveNext$0();) {
          t6 = t5.get$current(t5);
          $name = t6._0;
          value = t6._1;
          t6 = nodes.$index(0, $name);
          t6.toString;
          configuration.$indexSet(0, $name, new A.ConfiguredValue(value, null, t6));
        }
      }
      return new A.Configuration(configuration, null);
    },
    toModule$3(css, preModuleComments, extensionStore) {
      return A._EnvironmentModule__EnvironmentModule0(this, css, preModuleComments, extensionStore, A.NullableExtension_andThen(this._async_environment$_forwardedModules, new A.AsyncEnvironment_toModule_closure()));
    },
    toDummyModule$0() {
      return A._EnvironmentModule__EnvironmentModule0(this, new A.CssStylesheet(new A.UnmodifiableListView(B.List_empty3, type$.UnmodifiableListView_CssNode), A.SourceFile$decoded(B.List_empty4, "<dummy module>").span$1(0, 0)), B.Map_empty7, B.C_EmptyExtensionStore, A.NullableExtension_andThen(this._async_environment$_forwardedModules, new A.AsyncEnvironment_toDummyModule_closure()));
    },
    _async_environment$_getModule$1(namespace) {
      var module, t1,
        _0_0 = this._async_environment$_modules.$index(0, namespace);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1)
        return module;
      throw A.wrapException(A.SassScriptException$('There is no module with the namespace "' + namespace + '".', null));
    },
    _async_environment$_fromOneModule$1$3($name, type, callback) {
      var nestedForwardedModules, t1, t2, t3, t4, t5, _1_0, value, _2_0, identity, valueInModule, identityFromModule, module, node, _null = null,
        _0_0 = this._async_environment$_nestedForwardedModules;
      if (_0_0 != null) {
        nestedForwardedModules = _0_0;
        t1 = true;
      } else {
        nestedForwardedModules = _null;
        t1 = false;
      }
      if (t1)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            _1_0 = callback.call$1(t5 == null ? t4._as(t5) : t5);
            if (_1_0 != null) {
              value = _1_0;
              t5 = true;
            } else {
              value = _null;
              t5 = false;
            }
            if (t5)
              return value;
          }
        }
      for (t1 = this._async_environment$_importedModules, t1 = A.LinkedHashMapKeyIterator$(t1, t1._modifications); t1.moveNext$0();) {
        _2_0 = callback.call$1(t1.__js_helper$_current);
        if (_2_0 != null) {
          value = _2_0;
          t2 = true;
        } else {
          value = _null;
          t2 = false;
        }
        if (t2)
          return value;
      }
      for (t1 = this._async_environment$_globalModules, t2 = A.LinkedHashMapKeyIterator$(t1, t1._modifications), t3 = type$.AsyncCallable, identity = _null, value = identity; t2.moveNext$0();) {
        t4 = t2.__js_helper$_current;
        valueInModule = callback.call$1(t4);
        if (valueInModule == null)
          continue;
        identityFromModule = t3._is(valueInModule) ? valueInModule : t4.variableIdentity$1($name);
        if (identityFromModule.$eq(0, identity))
          continue;
        if (value != null) {
          t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          for (t3 = A.MapExtensions_get_pairs(t1, type$.Module_AsyncCallable, type$.AstNode), t3 = t3.get$iterator(t3), t4 = "includes " + type; t3.moveNext$0();) {
            t1 = t3.get$current(t3);
            module = t1._0;
            node = t1._1;
            if (callback.call$1(module) != null)
              t2.$indexSet(0, node.get$span(node), t4);
          }
          throw A.wrapException(A.MultiSpanSassScriptException$("This " + type + string$.x20is_av, type + " use", t2));
        }
        identity = identityFromModule;
        value = valueInModule;
      }
      return value;
    },
    _async_environment$_fromOneModule$3($name, type, callback) {
      return this._async_environment$_fromOneModule$1$3($name, type, callback, type$.dynamic);
    }
  };
  A.AsyncEnvironment__getVariableFromGlobalModule_closure.prototype = {
    call$1(module) {
      return module.get$variables().$index(0, this.name);
    },
    $signature: 474
  };
  A.AsyncEnvironment_setVariable_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._async_environment$_lastVariableName = this.name;
      return t1._async_environment$_lastVariableIndex = 0;
    },
    $signature: 3
  };
  A.AsyncEnvironment_setVariable_closure0.prototype = {
    call$1(module) {
      return module.get$variables().containsKey$1(this.name) ? module : null;
    },
    $signature: 475
  };
  A.AsyncEnvironment_setVariable_closure1.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._async_environment$_variableIndex$1(this.name);
      return t2 == null ? t1._async_environment$_variables.length - 1 : t2;
    },
    $signature: 3
  };
  A.AsyncEnvironment__getFunctionFromGlobalModule_closure.prototype = {
    call$1(module) {
      return module.get$functions(module).$index(0, this.name);
    },
    $signature: 228
  };
  A.AsyncEnvironment__getMixinFromGlobalModule_closure.prototype = {
    call$1(module) {
      return module.get$mixins().$index(0, this.name);
    },
    $signature: 228
  };
  A.AsyncEnvironment_toModule_closure.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_AsyncCallable);
    },
    $signature: 240
  };
  A.AsyncEnvironment_toDummyModule_closure.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_AsyncCallable);
    },
    $signature: 240
  };
  A._EnvironmentModule0.prototype = {
    get$url(_) {
      var t1 = this.css;
      t1 = t1.get$span(t1);
      return t1.get$sourceUrl(t1);
    },
    setVariable$3($name, value, nodeWithSpan) {
      var module, t1, t2,
        _0_0 = this._async_environment$_modulesByVariable.$index(0, $name);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1) {
        module.setVariable$3($name, value, nodeWithSpan);
        return;
      }
      t1 = this._async_environment$_environment;
      t2 = t1._async_environment$_variables;
      if (!B.JSArray_methods.get$first(t2).containsKey$1($name))
        throw A.wrapException(A.SassScriptException$("Undefined variable.", null));
      J.$indexSet$ax(B.JSArray_methods.get$first(t2), $name, value);
      J.$indexSet$ax(B.JSArray_methods.get$first(t1._async_environment$_variableNodes), $name, nodeWithSpan);
      return;
    },
    variableIdentity$1($name) {
      var module = this._async_environment$_modulesByVariable.$index(0, $name);
      return module == null ? this : module.variableIdentity$1($name);
    },
    cloneCss$0() {
      var _0_0, _this = this;
      if (!_this.transitivelyContainsCss)
        return _this;
      _0_0 = A.cloneCssStylesheet(_this.css, _this.extensionStore);
      return A._EnvironmentModule$_0(_this._async_environment$_environment, _0_0._0, _this.preModuleComments, _0_0._1, _this._async_environment$_modulesByVariable, _this.variables, _this.variableNodes, _this.functions, _this.mixins, true, _this.transitivelyContainsExtensions);
    },
    toString$0(_) {
      var t1 = this.css,
        t2 = t1.get$span(t1);
      if (t2.get$sourceUrl(t2) == null)
        t1 = "<unknown url>";
      else {
        t1 = t1.get$span(t1);
        t1 = t1.get$sourceUrl(t1);
        t1 = $.$get$context().prettyUri$1(t1);
      }
      return t1;
    },
    $isModule0: 1,
    get$upstream() {
      return this.upstream;
    },
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    },
    get$extensionStore() {
      return this.extensionStore;
    },
    get$css(receiver) {
      return this.css;
    },
    get$preModuleComments() {
      return this.preModuleComments;
    },
    get$transitivelyContainsCss() {
      return this.transitivelyContainsCss;
    },
    get$transitivelyContainsExtensions() {
      return this.transitivelyContainsExtensions;
    }
  };
  A._EnvironmentModule__EnvironmentModule_closure5.prototype = {
    call$1(module) {
      return module.get$variables();
    },
    $signature: 504
  };
  A._EnvironmentModule__EnvironmentModule_closure6.prototype = {
    call$1(module) {
      return module.get$variableNodes();
    },
    $signature: 512
  };
  A._EnvironmentModule__EnvironmentModule_closure7.prototype = {
    call$1(module) {
      return module.get$functions(module);
    },
    $signature: 242
  };
  A._EnvironmentModule__EnvironmentModule_closure8.prototype = {
    call$1(module) {
      return module.get$mixins();
    },
    $signature: 242
  };
  A._EnvironmentModule__EnvironmentModule_closure9.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 146
  };
  A._EnvironmentModule__EnvironmentModule_closure10.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsExtensions();
    },
    $signature: 146
  };
  A.AsyncImportCache.prototype = {
    canonicalize$4$baseImporter$baseUrl$forImport(_, url, baseImporter, baseUrl, forImport) {
      return this.canonicalize$body$AsyncImportCache(0, url, baseImporter, baseUrl, forImport);
    },
    canonicalize$body$AsyncImportCache(_, url, baseImporter, baseUrl, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl),
        $async$returnValue, $async$self = this, t1, relativeResult;
      var $async$canonicalize$4$baseImporter$baseUrl$forImport = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (A.isBrowser())
                t1 = (baseImporter == null || baseImporter instanceof A.NoOpImporter) && $async$self._async_import_cache$_importers.length === 0;
              else
                t1 = false;
              if (t1)
                throw A.wrapException(string$.Custom);
              $async$goto = baseImporter != null && url.get$scheme() === "" ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.putIfAbsentAsync($async$self._async_import_cache$_relativeCanonicalizeCache, new A._Record_4_baseImporter_baseUrl_forImport([url, baseImporter, baseUrl, forImport]), new A.AsyncImportCache_canonicalize_closure($async$self, baseImporter, baseUrl, url, forImport), type$.Record_4_Uri_and_AsyncImporter_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport, type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl), $async$canonicalize$4$baseImporter$baseUrl$forImport);
            case 5:
              // returning from await.
              relativeResult = $async$result;
              if (relativeResult != null) {
                $async$returnValue = relativeResult;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // join
              $async$goto = 6;
              return A._asyncAwait(A.putIfAbsentAsync($async$self._async_import_cache$_canonicalizeCache, new A._Record_2_forImport(url, forImport), new A.AsyncImportCache_canonicalize_closure0($async$self, url, baseUrl, forImport), type$.Record_2_Uri_and_bool_forImport, type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl), $async$canonicalize$4$baseImporter$baseUrl$forImport);
            case 6:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$canonicalize$4$baseImporter$baseUrl$forImport, $async$completer);
    },
    _async_import_cache$_canonicalize$4(importer, url, baseUrl, forImport) {
      return this._canonicalize$body$AsyncImportCache(importer, url, baseUrl, forImport);
    },
    _canonicalize$body$AsyncImportCache(importer, url, baseUrl, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl),
        $async$returnValue, $async$self = this, t1, passContainingUrl, result, canonicalize;
      var $async$_async_import_cache$_canonicalize$4 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              canonicalize = forImport ? new A.AsyncImportCache__canonicalize_closure(importer, url) : new A.AsyncImportCache__canonicalize_closure0(importer, url);
              $async$goto = baseUrl != null ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = url.get$scheme() !== "" ? 6 : 8;
              break;
            case 6:
              // then
              url.get$scheme();
              $async$goto = 9;
              return A._asyncAwait(false, $async$_async_import_cache$_canonicalize$4);
            case 9:
              // returning from await.
              t1 = $async$result;
              passContainingUrl = t1;
              // goto join
              $async$goto = 7;
              break;
            case 8:
              // else
              passContainingUrl = true;
            case 7:
              // join
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              passContainingUrl = false;
            case 4:
              // join
              t1 = passContainingUrl ? baseUrl : null;
              $async$goto = 10;
              return A._asyncAwait(A.withContainingUrl(t1, canonicalize, type$.FutureOr_nullable_Uri), $async$_async_import_cache$_canonicalize$4);
            case 10:
              // returning from await.
              result = $async$result;
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = result.get$scheme() === "" ? 11 : 13;
              break;
            case 11:
              // then
              A.WarnForDeprecation_warnForDeprecation($async$self._async_import_cache$_logger, B.Deprecation_mFp, "Importer " + importer.toString$0(0) + " canonicalized " + url.toString$0(0) + " to " + result.toString$0(0) + string$.x2e_Rela, null, null);
              // goto join
              $async$goto = 12;
              break;
            case 13:
              // else
              result.get$scheme();
              $async$goto = 14;
              return A._asyncAwait(false, $async$_async_import_cache$_canonicalize$4);
            case 14:
              // returning from await.
              if ($async$result)
                throw A.wrapException("Importer " + importer.toString$0(0) + " canonicalized " + url.toString$0(0) + " to " + result.toString$0(0) + string$.x2c_whicu);
            case 12:
              // join
              $async$returnValue = new A._Record_3_originalUrl(importer, result, url);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_import_cache$_canonicalize$4, $async$completer);
    },
    importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, quiet) {
      return this.importCanonical$body$AsyncImportCache(importer, canonicalUrl, originalUrl, quiet);
    },
    importCanonical$3$originalUrl(importer, canonicalUrl, originalUrl) {
      return this.importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, false);
    },
    importCanonical$body$AsyncImportCache(importer, canonicalUrl, originalUrl, quiet) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Stylesheet),
        $async$returnValue, $async$self = this;
      var $async$importCanonical$4$originalUrl$quiet = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(A.putIfAbsentAsync($async$self._async_import_cache$_importCache, canonicalUrl, new A.AsyncImportCache_importCanonical_closure($async$self, importer, canonicalUrl, originalUrl, quiet), type$.Uri, type$.nullable_Stylesheet), $async$importCanonical$4$originalUrl$quiet);
            case 3:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$importCanonical$4$originalUrl$quiet, $async$completer);
    },
    humanize$1(canonicalUrl) {
      var t2,
        t1 = this._async_import_cache$_canonicalizeCache;
      t1 = A.IterableNullableExtension_whereNotNull(t1.get$values(t1), type$.Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl);
      t2 = t1.$ti;
      t2 = A.NullableExtension_andThen(A.minBy(new A.MappedIterable(new A.WhereIterable(t1, new A.AsyncImportCache_humanize_closure(canonicalUrl), t2._eval$1("WhereIterable<Iterable.E>")), new A.AsyncImportCache_humanize_closure0(), t2._eval$1("MappedIterable<Iterable.E,Uri>")), new A.AsyncImportCache_humanize_closure1()), new A.AsyncImportCache_humanize_closure2(canonicalUrl));
      return t2 == null ? canonicalUrl : t2;
    },
    sourceMapUrl$1(_, canonicalUrl) {
      var t1 = this._async_import_cache$_resultsCache.$index(0, canonicalUrl);
      t1 = t1 == null ? null : t1.get$sourceMapUrl(t1);
      return t1 == null ? canonicalUrl : t1;
    }
  };
  A.AsyncImportCache_canonicalize_closure.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.baseUrl,
        t2 = t1 == null ? null : t1.resolveUri$1(_this.url);
      if (t2 == null)
        t2 = _this.url;
      return _this.$this._async_import_cache$_canonicalize$4(_this.baseImporter, t2, t1, _this.forImport);
    },
    $signature: 294
  };
  A.AsyncImportCache_canonicalize_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, t6, _i, _0_0, result, t7;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this, t2 = t1._async_import_cache$_importers, t3 = t2.length, t4 = $async$self.url, t5 = $async$self.baseUrl, t6 = $async$self.forImport, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2.length)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t1._async_import_cache$_canonicalize$4(t2[_i], t4, t5, t6), $async$call$0);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t7 = true;
              } else {
                result = null;
                t7 = false;
              }
              if (t7) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 294
  };
  A.AsyncImportCache__canonicalize_closure.prototype = {
    call$0() {
      var t1 = type$.nullable_Object;
      return A.runZoned(new A.AsyncImportCache__canonicalize__closure(this.importer, this.resolved), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__inImportRule, true], t1, t1), type$.FutureOr_nullable_Uri);
    },
    $signature: 55
  };
  A.AsyncImportCache__canonicalize__closure.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 55
  };
  A.AsyncImportCache__canonicalize_closure0.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 55
  };
  A.AsyncImportCache_importCanonical_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Stylesheet),
        $async$returnValue, $async$self = this, t2, t3, t4, t1, result;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.canonicalUrl;
              $async$goto = 3;
              return A._asyncAwait($async$self.importer.load$1(0, t1), $async$call$0);
            case 3:
              // returning from await.
              result = $async$result;
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              t2 = $async$self.$this;
              t2._async_import_cache$_resultsCache.$indexSet(0, t1, result);
              t3 = result.contents;
              t4 = result.syntax;
              t1 = $async$self.originalUrl.resolveUri$1(t1);
              $async$returnValue = A.Stylesheet_Stylesheet$parse(t3, t4, $async$self.quiet ? $.$get$Logger_quiet() : t2._async_import_cache$_logger, t1);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 548
  };
  A.AsyncImportCache_humanize_closure.prototype = {
    call$1(result) {
      return J.$eq$(result._1, this.canonicalUrl);
    },
    $signature: 581
  };
  A.AsyncImportCache_humanize_closure0.prototype = {
    call$1(result) {
      return result._2;
    },
    $signature: 629
  };
  A.AsyncImportCache_humanize_closure1.prototype = {
    call$1(url) {
      return url.get$path(url).length;
    },
    $signature: 111
  };
  A.AsyncImportCache_humanize_closure2.prototype = {
    call$1(url) {
      var t1 = $.$get$url(),
        t2 = this.canonicalUrl;
      return url.resolve$1(A.ParsedPath_ParsedPath$parse(t2.get$path(t2), t1.style).get$basename());
    },
    $signature: 48
  };
  A.AsyncBuiltInCallable.prototype = {
    callbackFor$2(positional, names) {
      return new A._Record_2(this._async_built_in$_arguments, this._async_built_in$_callback);
    },
    $isAsyncCallable: 1,
    get$name(receiver) {
      return this.name;
    },
    get$acceptsContent() {
      return this.acceptsContent;
    }
  };
  A.AsyncBuiltInCallable$mixin_closure.prototype = {
    call$1($arguments) {
      return this.$call$body$AsyncBuiltInCallable$mixin_closure($arguments);
    },
    $call$body$AsyncBuiltInCallable$mixin_closure($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self.callback.call$1($arguments), $async$call$1);
            case 3:
              // returning from await.
              $async$returnValue = B.C__SassNull;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 159
  };
  A.BuiltInCallable.prototype = {
    callbackFor$2(positional, names) {
      var t1, t2, fuzzyMatch, minMismatchDistance, _i, overload, t3, mismatchDistance, t4;
      for (t1 = this._overloads, t2 = t1.length, fuzzyMatch = null, minMismatchDistance = null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        overload = t1[_i];
        t3 = overload._0;
        if (t3.matches$2(positional, names))
          return overload;
        mismatchDistance = t3.$arguments.length - positional;
        if (minMismatchDistance != null) {
          t3 = Math.abs(mismatchDistance);
          t4 = Math.abs(minMismatchDistance);
          if (t3 > t4)
            continue;
          if (t3 === t4 && mismatchDistance < 0)
            continue;
        }
        minMismatchDistance = mismatchDistance;
        fuzzyMatch = overload;
      }
      if (fuzzyMatch != null)
        return fuzzyMatch;
      throw A.wrapException(A.StateError$("BuiltInCallable " + this.name + " may not have empty overloads."));
    },
    withName$1($name) {
      return new A.BuiltInCallable($name, this._overloads, this.acceptsContent);
    },
    $isCallable0: 1,
    $isAsyncCallable: 1,
    $isAsyncBuiltInCallable: 1,
    get$name(receiver) {
      return this.name;
    },
    get$acceptsContent() {
      return this.acceptsContent;
    }
  };
  A.BuiltInCallable$mixin_closure.prototype = {
    call$1($arguments) {
      this.callback.call$1($arguments);
      return B.C__SassNull;
    },
    $signature: 6
  };
  A.PlainCssCallable.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.PlainCssCallable && this.name === other.name;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    },
    $isCallable0: 1,
    $isAsyncCallable: 1,
    get$name(receiver) {
      return this.name;
    }
  };
  A.UserDefinedCallable.prototype = {
    get$name(_) {
      return this.declaration.name;
    },
    $isCallable0: 1,
    $isAsyncCallable: 1
  };
  A._compileStylesheet_closure.prototype = {
    call$1(url) {
      var t1;
      if (url === "") {
        t1 = this.stylesheet.span;
        t1 = A.Uri_Uri$dataFromString(A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.get$file(t1)._decodedChars, 0, null), 0, null), B.C_Utf8Codec, null).get$_text();
      } else
        t1 = this.importCache.sourceMapUrl$1(0, A.Uri_parse(url)).toString$0(0);
      return t1;
    },
    $signature: 7
  };
  A.CompileResult.prototype = {};
  A.Configuration.prototype = {
    throughForward$1($forward) {
      var _0_0, prefix, t1, _1_0, shownVariables, _2_0, hiddenVariables,
        newValues = this._configuration$_values;
      if (newValues.get$isEmpty(newValues))
        return B.Configuration_Map_empty_null;
      _0_0 = $forward.prefix;
      if (_0_0 != null) {
        prefix = _0_0;
        t1 = true;
      } else {
        prefix = null;
        t1 = false;
      }
      if (t1)
        newValues = new A.UnprefixedMapView(newValues, prefix, type$.UnprefixedMapView_ConfiguredValue);
      _1_0 = $forward.shownVariables;
      if (_1_0 != null) {
        shownVariables = _1_0;
        t1 = true;
      } else {
        shownVariables = null;
        t1 = false;
      }
      if (t1)
        newValues = new A.LimitedMapView(newValues, shownVariables._base.intersection$1(new A.MapKeySet(newValues, type$.MapKeySet_nullable_Object)), type$.LimitedMapView_String_ConfiguredValue);
      else {
        _2_0 = $forward.hiddenVariables;
        if (_2_0 != null) {
          hiddenVariables = _2_0;
          t1 = true;
        } else {
          hiddenVariables = null;
          t1 = false;
        }
        if (t1) {
          t1 = hiddenVariables._base;
          t1 = t1.get$isNotEmpty(t1);
        } else
          t1 = false;
        if (t1)
          newValues = A.LimitedMapView$blocklist(newValues, hiddenVariables, type$.String, type$.ConfiguredValue);
      }
      return this._withValues$1(newValues);
    },
    _withValues$1(values) {
      var t1 = this.__originalConfiguration;
      return new A.Configuration(values, t1 == null ? this : t1);
    },
    toString$0(_) {
      var t2, t3, $name, value,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = A.MapExtensions_get_pairs(new A.UnmodifiableMapView(this._configuration$_values, type$.UnmodifiableMapView_String_ConfiguredValue), type$.String, type$.ConfiguredValue), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        $name = t3._0;
        value = t3._1;
        t1.push("$" + $name + ": " + value.toString$0(0));
      }
      return "(" + B.JSArray_methods.join$1(t1, ",") + ")";
    }
  };
  A.ExplicitConfiguration.prototype = {
    _withValues$1(values) {
      var t1 = this.__originalConfiguration;
      if (t1 == null)
        t1 = this;
      return new A.ExplicitConfiguration(this.nodeWithSpan, values, t1);
    }
  };
  A.ConfiguredValue.prototype = {
    toString$0(_) {
      return A.serializeValue(this.value, true, true);
    }
  };
  A.Deprecation.prototype = {
    _enumToString$0() {
      return "Deprecation." + this._name;
    },
    toString$0(_) {
      return this.id;
    }
  };
  A.Deprecation_fromId_closure.prototype = {
    call$1(deprecation) {
      return deprecation.id === this.id;
    },
    $signature: 320
  };
  A.Environment.prototype = {
    closure$0() {
      var t4, t5, t6, _this = this,
        t1 = _this._forwardedModules,
        t2 = _this._nestedForwardedModules,
        t3 = _this._variables;
      t3 = A._setArrayType(t3.slice(0), A._arrayInstanceType(t3));
      t4 = _this._variableNodes;
      t4 = A._setArrayType(t4.slice(0), A._arrayInstanceType(t4));
      t5 = _this._functions;
      t5 = A._setArrayType(t5.slice(0), A._arrayInstanceType(t5));
      t6 = _this._mixins;
      t6 = A._setArrayType(t6.slice(0), A._arrayInstanceType(t6));
      return A.Environment$_(_this._environment$_modules, _this._namespaceNodes, _this._globalModules, _this._importedModules, t1, t2, _this._allModules, t3, t4, t5, t6, _this._content);
    },
    forwardModule$2(module, rule) {
      var view, t1, t2, _this = this,
        forwardedModules = _this._forwardedModules;
      if (forwardedModules == null)
        forwardedModules = _this._forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_Callable, type$.AstNode);
      view = A.ForwardedModuleView_ifNecessary(module, rule, type$.Callable);
      for (t1 = A.LinkedHashMapKeyIterator$(forwardedModules, forwardedModules._modifications); t1.moveNext$0();) {
        t2 = t1.__js_helper$_current;
        _this._assertNoConflicts$5(view.get$variables(), t2.get$variables(), view, t2, "variable");
        _this._assertNoConflicts$5(view.get$functions(view), t2.get$functions(t2), view, t2, "function");
        _this._assertNoConflicts$5(view.get$mixins(), t2.get$mixins(), view, t2, "mixin");
      }
      _this._allModules.push(module);
      forwardedModules.$indexSet(0, view, rule);
    },
    _assertNoConflicts$5(newMembers, oldMembers, newModule, oldModule, type) {
      var larger, smaller, t1, t2, t3, t4, $name, small, large, span;
      if (newMembers.get$length(newMembers) < oldMembers.get$length(oldMembers)) {
        larger = oldMembers;
        smaller = newMembers;
      } else {
        larger = newMembers;
        smaller = oldMembers;
      }
      for (t1 = type$.String, t2 = A.MapExtensions_get_pairs(smaller, t1, type$.Object), t2 = t2.get$iterator(t2), t3 = type === "variable"; t2.moveNext$0();) {
        t4 = t2.get$current(t2);
        $name = t4._0;
        small = t4._1;
        small = small;
        large = larger.$index(0, $name);
        if (large == null)
          continue;
        if (t3 ? newModule.variableIdentity$1($name) === oldModule.variableIdentity$1($name) : J.$eq$(large, small))
          continue;
        if (t3)
          $name = "$" + $name;
        t2 = this._forwardedModules;
        if (t2 == null)
          span = null;
        else {
          t2 = t2.$index(0, oldModule);
          span = t2 == null ? null : J.get$span$z(t2);
        }
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, t1);
        if (span != null)
          t2.$indexSet(0, span, "original @forward");
        throw A.wrapException(A.MultiSpanSassScriptException$("Two forwarded modules both define a " + type + " named " + $name + ".", "new @forward", t2));
      }
    },
    importForwards$1(module) {
      var forwardedModules, t1, t2, t3, t4, node, t5, t6, t7, t8, t9, t10, _i, t11, shadowed, _length, _list, _this = this,
        forwarded = module._environment$_environment._forwardedModules;
      if (forwarded == null)
        return;
      forwardedModules = _this._forwardedModules;
      if (forwardedModules != null) {
        t1 = type$.Module_Callable;
        t2 = type$.AstNode;
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t1 = A.MapExtensions_get_pairs(forwarded, t1, t2), t1 = t1.get$iterator(t1), t2 = _this._globalModules; t1.moveNext$0();) {
          t4 = t1.get$current(t1);
          module = t4._0;
          node = t4._1;
          if (!forwardedModules.containsKey$1(module) || !t2.containsKey$1(module))
            t3.$indexSet(0, module, node);
        }
        forwarded = t3;
      } else
        forwardedModules = _this._forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_Callable, type$.AstNode);
      t1 = type$.String;
      t2 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t3 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t3.moveNext$0();)
        for (t4 = t3.__js_helper$_current.get$variables(), t4 = J.get$iterator$ax(t4.get$keys(t4)); t4.moveNext$0();)
          t2.add$1(0, t4.get$current(t4));
      t3 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();) {
        t5 = t4.__js_helper$_current;
        for (t5 = t5.get$functions(t5), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t3.add$1(0, t5.get$current(t5));
      }
      t1 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();)
        for (t5 = t4.__js_helper$_current.get$mixins(), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t1.add$1(0, t5.get$current(t5));
      t4 = _this._variables;
      t5 = t4.length;
      if (t5 === 1) {
        for (t5 = _this._importedModules, t6 = type$.Module_Callable, t7 = type$.AstNode, t8 = A.MapExtensions_get_pairs(t5, t6, t7).toList$0(0), t9 = t8.length, t10 = type$.Callable, _i = 0; _i < t8.length; t8.length === t9 || (0, A.throwConcurrentModificationError)(t8), ++_i) {
          t11 = t8[_i];
          module = t11._0;
          node = t11._1;
          shadowed = A.ShadowedModuleView_ifNecessary(module, t3, t1, t2, t10);
          if (shadowed != null) {
            t5.remove$1(0, module);
            t11 = shadowed.variables;
            if (t11.get$isEmpty(t11)) {
              t11 = shadowed.functions;
              if (t11.get$isEmpty(t11)) {
                t11 = shadowed.mixins;
                if (t11.get$isEmpty(t11)) {
                  t11 = shadowed._shadowed_view$_inner;
                  t11 = t11.get$css(t11);
                  t11 = J.get$isEmpty$asx(t11.get$children(t11));
                } else
                  t11 = false;
              } else
                t11 = false;
            } else
              t11 = false;
            if (!t11)
              t5.$indexSet(0, shadowed, node);
          }
        }
        for (t6 = A.MapExtensions_get_pairs(forwardedModules, t6, t7).toList$0(0), t7 = t6.length, _i = 0; _i < t6.length; t6.length === t7 || (0, A.throwConcurrentModificationError)(t6), ++_i) {
          t8 = t6[_i];
          module = t8._0;
          node = t8._1;
          shadowed = A.ShadowedModuleView_ifNecessary(module, t3, t1, t2, t10);
          if (shadowed != null) {
            forwardedModules.remove$1(0, module);
            t8 = shadowed.variables;
            if (t8.get$isEmpty(t8)) {
              t8 = shadowed.functions;
              if (t8.get$isEmpty(t8)) {
                t8 = shadowed.mixins;
                if (t8.get$isEmpty(t8)) {
                  t8 = shadowed._shadowed_view$_inner;
                  t8 = t8.get$css(t8);
                  t8 = J.get$isEmpty$asx(t8.get$children(t8));
                } else
                  t8 = false;
              } else
                t8 = false;
            } else
              t8 = false;
            if (!t8)
              forwardedModules.$indexSet(0, shadowed, node);
          }
        }
        t5.addAll$1(0, forwarded);
        forwardedModules.addAll$1(0, forwarded);
      } else {
        t6 = _this._nestedForwardedModules;
        if (t6 == null) {
          _length = t5 - 1;
          _list = J.JSArray_JSArray$allocateGrowable(_length, type$.List_Module_Callable);
          for (t5 = type$.JSArray_Module_Callable, _i = 0; _i < _length; ++_i)
            _list[_i] = A._setArrayType([], t5);
          _this._nestedForwardedModules = _list;
          t5 = _list;
        } else
          t5 = t6;
        B.JSArray_methods.addAll$1(B.JSArray_methods.get$last(t5), new A.LinkedHashMapKeyIterable(forwarded, A._instanceType(forwarded)._eval$1("LinkedHashMapKeyIterable<1>")));
      }
      for (t2 = A._LinkedHashSetIterator$(t2, t2._collection$_modifications), t5 = _this._variableIndices, t6 = _this._variableNodes, t7 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t8 = t2._collection$_current;
        if (t8 == null)
          t8 = t7._as(t8);
        t5.remove$1(0, t8);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t8);
        J.remove$1$z(B.JSArray_methods.get$last(t6), t8);
      }
      for (t2 = A._LinkedHashSetIterator$(t3, t3._collection$_modifications), t3 = _this._functionIndices, t4 = _this._functions, t5 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t6 = t2._collection$_current;
        if (t6 == null)
          t6 = t5._as(t6);
        t3.remove$1(0, t6);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t6);
      }
      for (t1 = A._LinkedHashSetIterator$(t1, t1._collection$_modifications), t2 = _this._mixinIndices, t3 = _this._mixins, t4 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t5 = t1._collection$_current;
        if (t5 == null)
          t5 = t4._as(t5);
        t2.remove$1(0, t5);
        J.remove$1$z(B.JSArray_methods.get$last(t3), t5);
      }
    },
    getVariable$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._getModule$1(namespace).get$variables().$index(0, $name);
      if (_this._lastVariableName === $name) {
        t1 = _this._lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._variables[t1], $name);
        return t1 == null ? _this._getVariableFromGlobalModule$1($name) : t1;
      }
      t1 = _this._variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._lastVariableName = $name;
        _this._lastVariableIndex = index;
        t1 = J.$index$asx(_this._variables[index], $name);
        return t1 == null ? _this._getVariableFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._lastVariableName = $name;
          _this._lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._variables[index], $name);
          return t1 == null ? _this._getVariableFromGlobalModule$1($name) : t1;
        } else
          return _this._getVariableFromGlobalModule$1($name);
      }
    },
    getVariable$1($name) {
      return this.getVariable$2$namespace($name, null);
    },
    _getVariableFromGlobalModule$1($name) {
      return this._fromOneModule$3($name, "variable", new A.Environment__getVariableFromGlobalModule_closure($name));
    },
    getVariableNode$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._getModule$1(namespace).get$variableNodes().$index(0, $name);
      if (_this._lastVariableName === $name) {
        t1 = _this._lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._variableNodes[t1], $name);
        return t1 == null ? _this._getVariableNodeFromGlobalModule$1($name) : t1;
      }
      t1 = _this._variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._lastVariableName = $name;
        _this._lastVariableIndex = index;
        t1 = J.$index$asx(_this._variableNodes[index], $name);
        return t1 == null ? _this._getVariableNodeFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._lastVariableName = $name;
          _this._lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._variableNodes[index], $name);
          return t1 == null ? _this._getVariableNodeFromGlobalModule$1($name) : t1;
        } else
          return _this._getVariableNodeFromGlobalModule$1($name);
      }
    },
    _getVariableNodeFromGlobalModule$1($name) {
      var t1, t2, _0_0, value;
      for (t1 = this._importedModules, t2 = this._globalModules, t2 = new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>")).followedBy$1(0, new A.LinkedHashMapKeyIterable(t2, A._instanceType(t2)._eval$1("LinkedHashMapKeyIterable<1>"))), t2 = new A.FollowedByIterator(J.get$iterator$ax(t2.__internal$_first), t2._second); t2.moveNext$0();) {
        t1 = t2._currentIterator;
        _0_0 = t1.get$current(t1).get$variableNodes().$index(0, $name);
        if (_0_0 != null) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1)
          return value;
      }
      return null;
    },
    globalVariableExists$2$namespace($name, namespace) {
      if (namespace != null)
        return this._getModule$1(namespace).get$variables().containsKey$1($name);
      if (B.JSArray_methods.get$first(this._variables).containsKey$1($name))
        return true;
      return this._getVariableFromGlobalModule$1($name) != null;
    },
    globalVariableExists$1($name) {
      return this.globalVariableExists$2$namespace($name, null);
    },
    _variableIndex$1($name) {
      var t1, i;
      for (t1 = this._variables, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    setVariable$5$global$namespace($name, value, nodeWithSpan, global, namespace) {
      var t1, moduleWithName, nestedForwardedModules, t2, t3, t4, t5, index, _this = this;
      if (namespace != null) {
        _this._getModule$1(namespace).setVariable$3($name, value, nodeWithSpan);
        return;
      }
      if (global || _this._variables.length === 1) {
        _this._variableIndices.putIfAbsent$2($name, new A.Environment_setVariable_closure(_this, $name));
        t1 = _this._variables;
        if (!B.JSArray_methods.get$first(t1).containsKey$1($name)) {
          moduleWithName = _this._fromOneModule$3($name, "variable", new A.Environment_setVariable_closure0($name));
          if (moduleWithName != null) {
            moduleWithName.setVariable$3($name, value, nodeWithSpan);
            return;
          }
        }
        J.$indexSet$ax(B.JSArray_methods.get$first(t1), $name, value);
        J.$indexSet$ax(B.JSArray_methods.get$first(_this._variableNodes), $name, nodeWithSpan);
        return;
      }
      nestedForwardedModules = _this._nestedForwardedModules;
      if (nestedForwardedModules != null && !_this._variableIndices.containsKey$1($name) && _this._variableIndex$1($name) == null)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            if (t5 == null)
              t5 = t4._as(t5);
            if (t5.get$variables().containsKey$1($name)) {
              t5.setVariable$3($name, value, nodeWithSpan);
              return;
            }
          }
        }
      if (_this._lastVariableName === $name) {
        t1 = _this._lastVariableIndex;
        t1.toString;
        index = t1;
      } else
        index = _this._variableIndices.putIfAbsent$2($name, new A.Environment_setVariable_closure1(_this, $name));
      if (!_this._inSemiGlobalScope && index === 0) {
        index = _this._variables.length - 1;
        _this._variableIndices.$indexSet(0, $name, index);
      }
      _this._lastVariableName = $name;
      _this._lastVariableIndex = index;
      J.$indexSet$ax(_this._variables[index], $name, value);
      J.$indexSet$ax(_this._variableNodes[index], $name, nodeWithSpan);
    },
    setVariable$4$global($name, value, nodeWithSpan, global) {
      return this.setVariable$5$global$namespace($name, value, nodeWithSpan, global, null);
    },
    setLocalVariable$3($name, value, nodeWithSpan) {
      var index, _this = this,
        t1 = _this._variables,
        t2 = t1.length;
      _this._lastVariableName = $name;
      index = _this._lastVariableIndex = t2 - 1;
      _this._variableIndices.$indexSet(0, $name, index);
      J.$indexSet$ax(t1[index], $name, value);
      J.$indexSet$ax(_this._variableNodes[index], $name, nodeWithSpan);
    },
    getFunction$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null) {
        t1 = _this._getModule$1(namespace);
        return t1.get$functions(t1).$index(0, $name);
      }
      t1 = _this._functionIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._functions[index], $name);
        return t1 == null ? _this._getFunctionFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._functionIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._functions[index], $name);
          return t1 == null ? _this._getFunctionFromGlobalModule$1($name) : t1;
        } else
          return _this._getFunctionFromGlobalModule$1($name);
      }
    },
    getFunction$1($name) {
      return this.getFunction$2$namespace($name, null);
    },
    _getFunctionFromGlobalModule$1($name) {
      return this._fromOneModule$3($name, "function", new A.Environment__getFunctionFromGlobalModule_closure($name));
    },
    _functionIndex$1($name) {
      var t1, i;
      for (t1 = this._functions, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    getMixin$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._getModule$1(namespace).get$mixins().$index(0, $name);
      t1 = _this._mixinIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._mixins[index], $name);
        return t1 == null ? _this._getMixinFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._mixinIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._mixins[index], $name);
          return t1 == null ? _this._getMixinFromGlobalModule$1($name) : t1;
        } else
          return _this._getMixinFromGlobalModule$1($name);
      }
    },
    _getMixinFromGlobalModule$1($name) {
      return this._fromOneModule$3($name, "mixin", new A.Environment__getMixinFromGlobalModule_closure($name));
    },
    _mixinIndex$1($name) {
      var t1, i;
      for (t1 = this._mixins, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    withContent$2($content, callback) {
      var oldContent = this._content;
      this._content = $content;
      callback.call$0();
      this._content = oldContent;
    },
    asMixin$1(callback) {
      var oldInMixin = this._inMixin;
      this._inMixin = true;
      callback.call$0();
      this._inMixin = oldInMixin;
    },
    scope$1$3$semiGlobal$when(callback, semiGlobal, when) {
      var wasInSemiGlobalScope, $name, name0, name1, t1, t2, t3, t4, t5, t6, _this = this;
      semiGlobal = semiGlobal && _this._inSemiGlobalScope;
      wasInSemiGlobalScope = _this._inSemiGlobalScope;
      _this._inSemiGlobalScope = semiGlobal;
      if (!when)
        try {
          t1 = callback.call$0();
          return t1;
        } finally {
          _this._inSemiGlobalScope = wasInSemiGlobalScope;
        }
      t1 = _this._variables;
      t2 = type$.String;
      B.JSArray_methods.add$1(t1, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.Value));
      t3 = _this._variableNodes;
      B.JSArray_methods.add$1(t3, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.AstNode));
      t4 = _this._functions;
      t5 = type$.Callable;
      B.JSArray_methods.add$1(t4, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
      t6 = _this._mixins;
      B.JSArray_methods.add$1(t6, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
      t5 = _this._nestedForwardedModules;
      if (t5 != null)
        t5.push(A._setArrayType([], type$.JSArray_Module_Callable));
      try {
        t2 = callback.call$0();
        return t2;
      } finally {
        _this._inSemiGlobalScope = wasInSemiGlobalScope;
        _this._lastVariableIndex = _this._lastVariableName = null;
        for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t1))), t2 = _this._variableIndices; t1.moveNext$0();) {
          $name = t1.get$current(t1);
          t2.remove$1(0, $name);
        }
        B.JSArray_methods.removeLast$0(t3);
        for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t4))), t2 = _this._functionIndices; t1.moveNext$0();) {
          name0 = t1.get$current(t1);
          t2.remove$1(0, name0);
        }
        for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t6))), t2 = _this._mixinIndices; t1.moveNext$0();) {
          name1 = t1.get$current(t1);
          t2.remove$1(0, name1);
        }
        t1 = _this._nestedForwardedModules;
        if (t1 != null)
          t1.pop();
      }
    },
    scope$1$1(callback, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, true, $T);
    },
    scope$1$2$when(callback, when, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, when, $T);
    },
    scope$1$2$semiGlobal(callback, semiGlobal, $T) {
      return this.scope$1$3$semiGlobal$when(callback, semiGlobal, true, $T);
    },
    toImplicitConfiguration$0() {
      var t2, t3, t4, i, values, nodes, t5, t6, $name, value,
        t1 = type$.String,
        configuration = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.ConfiguredValue);
      for (t2 = this._variables, t3 = type$.Value, t4 = this._variableNodes, i = 0; i < t2.length; ++i) {
        values = t2[i];
        nodes = t4[i];
        for (t5 = A.MapExtensions_get_pairs(values, t1, t3), t5 = t5.get$iterator(t5); t5.moveNext$0();) {
          t6 = t5.get$current(t5);
          $name = t6._0;
          value = t6._1;
          t6 = nodes.$index(0, $name);
          t6.toString;
          configuration.$indexSet(0, $name, new A.ConfiguredValue(value, null, t6));
        }
      }
      return new A.Configuration(configuration, null);
    },
    toModule$3(css, preModuleComments, extensionStore) {
      return A._EnvironmentModule__EnvironmentModule(this, css, preModuleComments, extensionStore, A.NullableExtension_andThen(this._forwardedModules, new A.Environment_toModule_closure()));
    },
    toDummyModule$0() {
      return A._EnvironmentModule__EnvironmentModule(this, new A.CssStylesheet(new A.UnmodifiableListView(B.List_empty3, type$.UnmodifiableListView_CssNode), A.SourceFile$decoded(B.List_empty4, "<dummy module>").span$1(0, 0)), B.Map_empty0, B.C_EmptyExtensionStore, A.NullableExtension_andThen(this._forwardedModules, new A.Environment_toDummyModule_closure()));
    },
    _getModule$1(namespace) {
      var module, t1,
        _0_0 = this._environment$_modules.$index(0, namespace);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1)
        return module;
      throw A.wrapException(A.SassScriptException$('There is no module with the namespace "' + namespace + '".', null));
    },
    _fromOneModule$1$3($name, type, callback) {
      var nestedForwardedModules, t1, t2, t3, t4, t5, _1_0, value, _2_0, identity, valueInModule, identityFromModule, module, node, _null = null,
        _0_0 = this._nestedForwardedModules;
      if (_0_0 != null) {
        nestedForwardedModules = _0_0;
        t1 = true;
      } else {
        nestedForwardedModules = _null;
        t1 = false;
      }
      if (t1)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            _1_0 = callback.call$1(t5 == null ? t4._as(t5) : t5);
            if (_1_0 != null) {
              value = _1_0;
              t5 = true;
            } else {
              value = _null;
              t5 = false;
            }
            if (t5)
              return value;
          }
        }
      for (t1 = this._importedModules, t1 = A.LinkedHashMapKeyIterator$(t1, t1._modifications); t1.moveNext$0();) {
        _2_0 = callback.call$1(t1.__js_helper$_current);
        if (_2_0 != null) {
          value = _2_0;
          t2 = true;
        } else {
          value = _null;
          t2 = false;
        }
        if (t2)
          return value;
      }
      for (t1 = this._globalModules, t2 = A.LinkedHashMapKeyIterator$(t1, t1._modifications), t3 = type$.Callable, identity = _null, value = identity; t2.moveNext$0();) {
        t4 = t2.__js_helper$_current;
        valueInModule = callback.call$1(t4);
        if (valueInModule == null)
          continue;
        identityFromModule = t3._is(valueInModule) ? valueInModule : t4.variableIdentity$1($name);
        if (identityFromModule.$eq(0, identity))
          continue;
        if (value != null) {
          t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          for (t3 = A.MapExtensions_get_pairs(t1, type$.Module_Callable, type$.AstNode), t3 = t3.get$iterator(t3), t4 = "includes " + type; t3.moveNext$0();) {
            t1 = t3.get$current(t3);
            module = t1._0;
            node = t1._1;
            if (callback.call$1(module) != null)
              t2.$indexSet(0, node.get$span(node), t4);
          }
          throw A.wrapException(A.MultiSpanSassScriptException$("This " + type + string$.x20is_av, type + " use", t2));
        }
        identity = identityFromModule;
        value = valueInModule;
      }
      return value;
    },
    _fromOneModule$3($name, type, callback) {
      return this._fromOneModule$1$3($name, type, callback, type$.dynamic);
    }
  };
  A.Environment__getVariableFromGlobalModule_closure.prototype = {
    call$1(module) {
      return module.get$variables().$index(0, this.name);
    },
    $signature: 323
  };
  A.Environment_setVariable_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._lastVariableName = this.name;
      return t1._lastVariableIndex = 0;
    },
    $signature: 3
  };
  A.Environment_setVariable_closure0.prototype = {
    call$1(module) {
      return module.get$variables().containsKey$1(this.name) ? module : null;
    },
    $signature: 326
  };
  A.Environment_setVariable_closure1.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._variableIndex$1(this.name);
      return t2 == null ? t1._variables.length - 1 : t2;
    },
    $signature: 3
  };
  A.Environment__getFunctionFromGlobalModule_closure.prototype = {
    call$1(module) {
      return module.get$functions(module).$index(0, this.name);
    },
    $signature: 163
  };
  A.Environment__getMixinFromGlobalModule_closure.prototype = {
    call$1(module) {
      return module.get$mixins().$index(0, this.name);
    },
    $signature: 163
  };
  A.Environment_toModule_closure.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_Callable);
    },
    $signature: 167
  };
  A.Environment_toDummyModule_closure.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_Callable);
    },
    $signature: 167
  };
  A._EnvironmentModule.prototype = {
    get$url(_) {
      var t1 = this.css;
      t1 = t1.get$span(t1);
      return t1.get$sourceUrl(t1);
    },
    setVariable$3($name, value, nodeWithSpan) {
      var module, t1, t2,
        _0_0 = this._modulesByVariable.$index(0, $name);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1) {
        module.setVariable$3($name, value, nodeWithSpan);
        return;
      }
      t1 = this._environment$_environment;
      t2 = t1._variables;
      if (!B.JSArray_methods.get$first(t2).containsKey$1($name))
        throw A.wrapException(A.SassScriptException$("Undefined variable.", null));
      J.$indexSet$ax(B.JSArray_methods.get$first(t2), $name, value);
      J.$indexSet$ax(B.JSArray_methods.get$first(t1._variableNodes), $name, nodeWithSpan);
      return;
    },
    variableIdentity$1($name) {
      var module = this._modulesByVariable.$index(0, $name);
      return module == null ? this : module.variableIdentity$1($name);
    },
    cloneCss$0() {
      var _0_0, _this = this;
      if (!_this.transitivelyContainsCss)
        return _this;
      _0_0 = A.cloneCssStylesheet(_this.css, _this.extensionStore);
      return A._EnvironmentModule$_(_this._environment$_environment, _0_0._0, _this.preModuleComments, _0_0._1, _this._modulesByVariable, _this.variables, _this.variableNodes, _this.functions, _this.mixins, true, _this.transitivelyContainsExtensions);
    },
    toString$0(_) {
      var t1 = this.css,
        t2 = t1.get$span(t1);
      if (t2.get$sourceUrl(t2) == null)
        t1 = "<unknown url>";
      else {
        t1 = t1.get$span(t1);
        t1 = t1.get$sourceUrl(t1);
        t1 = $.$get$context().prettyUri$1(t1);
      }
      return t1;
    },
    $isModule0: 1,
    get$upstream() {
      return this.upstream;
    },
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    },
    get$extensionStore() {
      return this.extensionStore;
    },
    get$css(receiver) {
      return this.css;
    },
    get$preModuleComments() {
      return this.preModuleComments;
    },
    get$transitivelyContainsCss() {
      return this.transitivelyContainsCss;
    },
    get$transitivelyContainsExtensions() {
      return this.transitivelyContainsExtensions;
    }
  };
  A._EnvironmentModule__EnvironmentModule_closure.prototype = {
    call$1(module) {
      return module.get$variables();
    },
    $signature: 331
  };
  A._EnvironmentModule__EnvironmentModule_closure0.prototype = {
    call$1(module) {
      return module.get$variableNodes();
    },
    $signature: 333
  };
  A._EnvironmentModule__EnvironmentModule_closure1.prototype = {
    call$1(module) {
      return module.get$functions(module);
    },
    $signature: 170
  };
  A._EnvironmentModule__EnvironmentModule_closure2.prototype = {
    call$1(module) {
      return module.get$mixins();
    },
    $signature: 170
  };
  A._EnvironmentModule__EnvironmentModule_closure3.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 134
  };
  A._EnvironmentModule__EnvironmentModule_closure4.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsExtensions();
    },
    $signature: 134
  };
  A.SassException.prototype = {
    get$trace(_) {
      return A.Trace$(A._setArrayType([A.frameForSpan(A.SourceSpanException.prototype.get$span.call(this, this), "root stylesheet", null)], type$.JSArray_Frame), null);
    },
    get$span(_) {
      return A.SourceSpanException.prototype.get$span.call(this, this);
    },
    withAdditionalSpan$2(span, label) {
      var _this = this;
      return A.MultiSpanSassException$(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), "", A.LinkedHashMap_LinkedHashMap$_literal([span, label], type$.FileSpan, type$.String), _this.loadedUrls);
    },
    withTrace$1(trace) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.Set_Set$unmodifiable(_this.loadedUrls, type$.Uri);
      return new A.SassRuntimeException(trace, t2, _this._span_exception$_message, t1);
    },
    withLoadedUrls$1(loadedUrls) {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this),
        t2 = A.Set_Set$unmodifiable(loadedUrls, type$.Uri);
      return new A.SassException(t2, this._span_exception$_message, t1);
    },
    toString$1$color(_, color) {
      var t2, _i, frame, t3, _this = this,
        buffer = new A.StringBuffer(""),
        t1 = "" + ("Error: " + _this._span_exception$_message + "\n");
      buffer._contents = t1;
      buffer._contents = t1 + A.SourceSpanException.prototype.get$span.call(_this, _this).highlight$1$color(color);
      for (t1 = _this.get$trace(_this).toString$0(0).split("\n"), t2 = t1.length, _i = 0; _i < t2; ++_i) {
        frame = t1[_i];
        if (J.get$length$asx(frame) === 0)
          continue;
        t3 = buffer._contents += "\n";
        buffer._contents = t3 + ("  " + A.S(frame));
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    toString$0($receiver) {
      return this.toString$1$color($receiver, null);
    },
    toCssString$0() {
      var commentMessage, stringMessage, rune,
        t1 = $._glyphs,
        t2 = $._glyphs = B.C_AsciiGlyphSet,
        t3 = this.toString$1$color(0, false);
      t3 = A.stringReplaceAllUnchecked(t3, "*/", "*\u2215");
      commentMessage = A.stringReplaceAllUnchecked(t3, "\r\n", "\n");
      $._glyphs = t1 === B.C_AsciiGlyphSet ? t2 : B.C_UnicodeGlyphSet;
      stringMessage = new A.StringBuffer("");
      for (t1 = new A.RuneIterator(A.serializeValue(new A.SassString(this.toString$1$color(0, false), true), true, true)); t1.moveNext$0();) {
        rune = t1._currentCodePoint;
        if (rune > 255) {
          stringMessage._contents += A.Primitives_stringFromCharCode(92);
          stringMessage._contents += B.JSInt_methods.toRadixString$1(rune, 16);
          stringMessage._contents += A.Primitives_stringFromCharCode(32);
        } else
          stringMessage._contents += A.Primitives_stringFromCharCode(rune);
      }
      return "/* " + B.JSArray_methods.join$1(A._setArrayType(commentMessage.split("\n"), type$.JSArray_String), "\n * ") + ' */\n\nbody::before {\n  font-family: "Source Code Pro", "SF Mono", Monaco, Inconsolata, "Fira Mono",\n      "Droid Sans Mono", monospace, monospace;\n  white-space: pre;\n  display: block;\n  padding: 1em;\n  margin-bottom: 1em;\n  border-bottom: 2px solid black;\n  content: ' + stringMessage.toString$0(0) + ";\n}";
    }
  };
  A.MultiSpanSassException.prototype = {
    withAdditionalSpan$2(span, label) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.LinkedHashMap_LinkedHashMap$of(_this.secondarySpans, type$.FileSpan, type$.String);
      t2.$indexSet(0, span, label);
      return A.MultiSpanSassException$(_this._span_exception$_message, t1, _this.primaryLabel, t2, _this.loadedUrls);
    },
    withTrace$1(trace) {
      var _this = this;
      return A.MultiSpanSassRuntimeException$(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, trace, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this;
      return A.MultiSpanSassException$(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, loadedUrls);
    },
    toString$1$color(_, color) {
      var t1, t2, _i, frame, _this = this,
        useColor = color === true && true,
        buffer = new A.StringBuffer("Error: " + _this._span_exception$_message + "\n");
      A.NullableExtension_andThen(A.Highlighter$multiple(A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, useColor, null, null).highlight$0(), buffer.get$write(buffer));
      for (t1 = _this.get$trace(_this).toString$0(0).split("\n"), t2 = t1.length, _i = 0; _i < t2; ++_i) {
        frame = t1[_i];
        if (J.get$length$asx(frame) === 0)
          continue;
        buffer._contents += "\n";
        buffer._contents += "  " + A.S(frame);
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    toString$0($receiver) {
      return this.toString$1$color($receiver, null);
    },
    get$primaryLabel() {
      return this.primaryLabel;
    },
    get$secondarySpans() {
      return this.secondarySpans;
    }
  };
  A.SassRuntimeException.prototype = {
    withAdditionalSpan$2(span, label) {
      var _this = this;
      return A.MultiSpanSassRuntimeException$(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), "", A.LinkedHashMap_LinkedHashMap$_literal([span, label], type$.FileSpan, type$.String), _this.trace, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.Set_Set$unmodifiable(loadedUrls, type$.Uri);
      return new A.SassRuntimeException(_this.trace, t2, _this._span_exception$_message, t1);
    },
    get$trace(receiver) {
      return this.trace;
    }
  };
  A.MultiSpanSassRuntimeException.prototype = {
    withAdditionalSpan$2(span, label) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.LinkedHashMap_LinkedHashMap$of(_this.secondarySpans, type$.FileSpan, type$.String);
      t2.$indexSet(0, span, label);
      return A.MultiSpanSassRuntimeException$(_this._span_exception$_message, t1, _this.primaryLabel, t2, _this.trace, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this;
      return A.MultiSpanSassRuntimeException$(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, _this.trace, loadedUrls);
    },
    $isSassRuntimeException: 1,
    get$trace(receiver) {
      return this.trace;
    }
  };
  A.SassFormatException.prototype = {
    get$source() {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this);
      return A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.get$file(t1)._decodedChars, 0, null), 0, null);
    },
    withAdditionalSpan$2(span, label) {
      var _this = this;
      return A.MultiSpanSassFormatException$(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), "", A.LinkedHashMap_LinkedHashMap$_literal([span, label], type$.FileSpan, type$.String), _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this),
        t2 = A.Set_Set$unmodifiable(loadedUrls, type$.Uri);
      return new A.SassFormatException(t2, this._span_exception$_message, t1);
    },
    $isFormatException: 1,
    $isSourceSpanFormatException: 1
  };
  A.MultiSpanSassFormatException.prototype = {
    get$source() {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this);
      return A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.get$file(t1)._decodedChars, 0, null), 0, null);
    },
    withAdditionalSpan$2(span, label) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.LinkedHashMap_LinkedHashMap$of(_this.secondarySpans, type$.FileSpan, type$.String);
      t2.$indexSet(0, span, label);
      return A.MultiSpanSassFormatException$(_this._span_exception$_message, t1, _this.primaryLabel, t2, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this;
      return A.MultiSpanSassFormatException$(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, loadedUrls);
    },
    $isFormatException: 1,
    $isSassFormatException: 1,
    $isSourceSpanFormatException: 1,
    $isMultiSourceSpanFormatException: 1
  };
  A.SassScriptException.prototype = {
    withSpan$1(span) {
      return new A.SassException(B.Set_empty, this.message, span);
    },
    toString$0(_) {
      return this.message + string$.x0a_BUG_;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A.MultiSpanSassScriptException.prototype = {
    withSpan$1(span) {
      return A.MultiSpanSassException$(this.message, span, this.primaryLabel, this.secondarySpans, null);
    }
  };
  A._writeSourceMap_closure.prototype = {
    call$1(url) {
      return this.options.sourceMapUrl$2(0, A.Uri_parse(url), this.destination).toString$0(0);
    },
    $signature: 7
  };
  A.compileStylesheets_closure.prototype = {
    call$0() {
      return this._1_0[0];
    },
    $signature: 336
  };
  A.ExecutableOptions.prototype = {
    get$interactive() {
      var result, _this = this,
        value = _this.__ExecutableOptions_interactive_FI;
      if (value === $) {
        result = new A.ExecutableOptions_interactive_closure(_this).call$0();
        _this.__ExecutableOptions_interactive_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.__ExecutableOptions_interactive_FI = result;
        value = result;
      }
      return value;
    },
    get$color() {
      var t1 = this._options;
      return t1.wasParsed$1("color") ? A._asBool(t1.$index(0, "color")) : A.hasTerminal();
    },
    get$emitErrorCss() {
      var t1 = A._asBoolQ(this._options.$index(0, "error-css"));
      if (t1 == null) {
        this._ensureSources$0();
        t1 = this._sourcesToDestinations;
        t1 = t1.get$values(t1).any$1(0, new A.ExecutableOptions_emitErrorCss_closure());
      }
      return t1;
    },
    _ensureSources$0() {
      var t1, stdin, t2, t3, $directories, t4, t5, colonArgs, positionalArgs, t6, t7, t8, message, target, source, destination, seen, _0_0, _this = this, _null = null,
        _s18_ = 'Duplicate source "';
      if (_this._sourcesToDestinations != null)
        return;
      t1 = _this._options;
      stdin = A._asBool(t1.$index(0, "stdin"));
      t2 = t1.rest;
      if (t2.get$length(t2) === 0 && !stdin)
        A.ExecutableOptions__fail("Compile Sass to CSS.");
      t3 = type$.String;
      $directories = A.LinkedHashSet_LinkedHashSet$_empty(t3);
      for (t4 = new A.ListIterator(t2, t2.get$length(t2)), t5 = A._instanceType(t4)._precomputed1, colonArgs = false, positionalArgs = false; t4.moveNext$0();) {
        t6 = t4.__internal$_current;
        if (t6 == null)
          t6 = t5._as(t6);
        t7 = t6.length;
        if (t7 === 0)
          A.ExecutableOptions__fail('Invalid argument "".');
        if (A.stringContainsUnchecked(t6, ":", 0)) {
          if (t7 > 2) {
            t8 = t6.charCodeAt(0);
            if (!(t8 >= 97 && t8 <= 122))
              t8 = t8 >= 65 && t8 <= 90;
            else
              t8 = true;
            t8 = t8 && t6.charCodeAt(1) === 58;
          } else
            t8 = false;
          if (t8) {
            if (2 > t7)
              A.throwExpression(A.RangeError$range(2, 0, t7, _null, _null));
            t7 = A.stringContainsUnchecked(t6, ":", 2);
          } else
            t7 = true;
        } else
          t7 = false;
        if (t7)
          colonArgs = true;
        else if (A.dirExists(t6))
          $directories.add$1(0, t6);
        else
          positionalArgs = true;
      }
      if (positionalArgs || t2.get$length(t2) === 0) {
        if (colonArgs)
          A.ExecutableOptions__fail('Positional and ":" arguments may not both be used.');
        else if (stdin) {
          if (J.get$length$asx(t2._collection$_source) > 1)
            A.ExecutableOptions__fail("Only one argument is allowed with --stdin.");
          else if (A._asBool(t1.$index(0, "update")))
            A.ExecutableOptions__fail("--update is not allowed with --stdin.");
          else if (A._asBool(t1.$index(0, "watch")))
            A.ExecutableOptions__fail("--watch is not allowed with --stdin.");
          t1 = t2.get$length(t2) === 0 ? _null : t2.get$first(t2);
          t2 = type$.dynamic;
          t3 = type$.nullable_String;
          _this._sourcesToDestinations = A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([null, t1], t2, t2), t3, t3);
        } else {
          t3 = t2._collection$_source;
          t4 = J.getInterceptor$asx(t3);
          if (t4.get$length(t3) > 2)
            A.ExecutableOptions__fail("Only two positional args may be passed.");
          else if ($directories._collection$_length !== 0) {
            message = 'Directory "' + A.S($directories.get$first($directories)) + '" may not be a positional arg.';
            target = t2.get$last(t2);
            A.ExecutableOptions__fail(J.$eq$($directories.get$first($directories), t2.get$first(t2)) && !A.fileExists(target) ? message + ('\nTo compile all CSS in "' + A.S($directories.get$first($directories)) + '" to "' + target + '", use `sass ' + A.S($directories.get$first($directories)) + ":" + target + "`.") : message);
          } else {
            source = J.$eq$(t2.get$first(t2), "-") ? _null : t2.get$first(t2);
            destination = t4.get$length(t3) === 1 ? _null : t2.get$last(t2);
            if (destination == null)
              if (A._asBool(t1.$index(0, "update")))
                A.ExecutableOptions__fail("--update is not allowed when printing to stdout.");
              else if (A._asBool(t1.$index(0, "watch")))
                A.ExecutableOptions__fail("--watch is not allowed when printing to stdout.");
            t1 = A.PathMap__create(_null, type$.nullable_String);
            t1.$indexSet(0, source, destination);
            _this._sourcesToDestinations = new A.UnmodifiableMapView(new A.PathMap(t1, type$.PathMap_nullable_String), type$.UnmodifiableMapView_of_nullable_String_and_nullable_String);
          }
        }
        _this.__ExecutableOptions__sourceDirectoriesToDestinations_F !== $ && A.throwUnnamedLateFieldAI();
        _this.__ExecutableOptions__sourceDirectoriesToDestinations_F = B.Map_empty;
        return;
      }
      if (stdin)
        A.ExecutableOptions__fail('--stdin may not be used with ":" arguments.');
      seen = A.LinkedHashSet_LinkedHashSet$_empty(t3);
      t1 = A.PathMap__create(_null, t3);
      t4 = type$.PathMap_String;
      t3 = A.PathMap__create(_null, t3);
      for (t2 = new A.ListIterator(t2, t2.get$length(t2)), t5 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t6 = t2.__internal$_current;
        if (t6 == null)
          t6 = t5._as(t6);
        if ($directories.contains$1(0, t6)) {
          if (!seen.add$1(0, t6))
            A.ExecutableOptions__fail(_s18_ + t6 + '".');
          t3.$indexSet(0, t6, t6);
          t1.addAll$1(0, _this._listSourceDirectory$2(t6, t6));
          continue;
        }
        _0_0 = _this._splitSourceAndDestination$1(t6);
        source = _0_0._0;
        destination = _0_0._1;
        if (!seen.add$1(0, source))
          A.ExecutableOptions__fail(_s18_ + source + '".');
        if (source === "-")
          t1.$indexSet(0, _null, destination);
        else if (A.dirExists(source)) {
          t3.$indexSet(0, source, destination);
          t1.addAll$1(0, _this._listSourceDirectory$2(source, destination));
        } else
          t1.$indexSet(0, source, destination);
      }
      _this._sourcesToDestinations = new A.UnmodifiableMapView(new A.PathMap(t1, t4), type$.UnmodifiableMapView_of_nullable_String_and_nullable_String);
      _this.__ExecutableOptions__sourceDirectoriesToDestinations_F !== $ && A.throwUnnamedLateFieldAI();
      _this.__ExecutableOptions__sourceDirectoriesToDestinations_F = new A.UnmodifiableMapView(new A.PathMap(t3, t4), type$.UnmodifiableMapView_of_nullable_String_and_String);
    },
    _splitSourceAndDestination$1(argument) {
      var t1, i, t2, t3, nextColon;
      for (t1 = argument.length, i = 0; i < t1; ++i) {
        if (i === 1) {
          t2 = i - 1;
          if (t1 > t2 + 2) {
            t3 = argument.charCodeAt(t2);
            if (!(t3 >= 97 && t3 <= 122))
              t3 = t3 >= 65 && t3 <= 90;
            else
              t3 = true;
            t2 = t3 && argument.charCodeAt(t2 + 1) === 58;
          } else
            t2 = false;
        } else
          t2 = false;
        if (t2)
          continue;
        if (argument.charCodeAt(i) === 58) {
          t2 = i + 1;
          nextColon = B.JSString_methods.indexOf$2(argument, ":", t2);
          if (nextColon === i + 2)
            if (t1 > t2 + 2) {
              t1 = argument.charCodeAt(t2);
              if (!(t1 >= 97 && t1 <= 122))
                t1 = t1 >= 65 && t1 <= 90;
              else
                t1 = true;
              t1 = t1 && argument.charCodeAt(t2 + 1) === 58;
            } else
              t1 = false;
          else
            t1 = false;
          if ((t1 ? B.JSString_methods.indexOf$2(argument, ":", nextColon + 1) : nextColon) !== -1)
            A.ExecutableOptions__fail('"' + argument + '" may only contain one ":".');
          return new A._Record_2(B.JSString_methods.substring$2(argument, 0, i), B.JSString_methods.substring$1(argument, t2));
        }
      }
      throw A.wrapException(A.ArgumentError$('Expected "' + argument + '" to contain a colon.', null));
    },
    _listSourceDirectory$2(source, destination) {
      var t2, t3, t4, t5,
        t1 = type$.String;
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t2 = J.get$iterator$ax(A.listDir(source, true)), t3 = source === destination; t2.moveNext$0();) {
        t4 = t2.get$current(t2);
        if (this._isEntrypoint$1(t4))
          t5 = !(t3 && A.ParsedPath_ParsedPath$parse(t4, $.$get$context().style)._splitExtension$1(1)[1] === ".css");
        else
          t5 = false;
        if (t5) {
          t5 = $.$get$context();
          t1.$indexSet(0, t4, A.join(destination, t5.withoutExtension$1(t5.relative$2$from(t4, source)) + ".css", null));
        }
      }
      return t1;
    },
    _isEntrypoint$1(path) {
      var extension,
        t1 = $.$get$context().style;
      if (B.JSString_methods.startsWith$1(A.ParsedPath_ParsedPath$parse(path, t1).get$basename(), "_"))
        return false;
      extension = A.ParsedPath_ParsedPath$parse(path, t1)._splitExtension$1(1)[1];
      return extension === ".scss" || extension === ".sass" || extension === ".css";
    },
    get$_writeToStdout() {
      var t1, _this = this;
      _this._ensureSources$0();
      t1 = _this._sourcesToDestinations;
      if (t1.get$length(t1) === 1) {
        _this._ensureSources$0();
        t1 = _this._sourcesToDestinations;
        t1 = t1.get$values(t1);
        t1 = t1.get$single(t1) == null;
      } else
        t1 = false;
      return t1;
    },
    get$emitSourceMap() {
      var _this = this,
        _s10_ = "source-map",
        _s15_ = "source-map-urls",
        _s13_ = "embed-sources",
        _s16_ = "embed-source-map",
        t1 = _this._options;
      if (!A._asBool(t1.$index(0, _s10_)))
        if (t1.wasParsed$1(_s15_))
          A.ExecutableOptions__fail("--source-map-urls isn't allowed with --no-source-map.");
        else if (t1.wasParsed$1(_s13_))
          A.ExecutableOptions__fail("--embed-sources isn't allowed with --no-source-map.");
        else if (t1.wasParsed$1(_s16_))
          A.ExecutableOptions__fail("--embed-source-map isn't allowed with --no-source-map.");
      if (!_this.get$_writeToStdout())
        return A._asBool(t1.$index(0, _s10_));
      if (J.$eq$(_this._ifParsed$1(_s15_), "relative"))
        A.ExecutableOptions__fail("--source-map-urls=relative isn't allowed when printing to stdout.");
      if (A._asBool(t1.$index(0, _s16_)))
        return A._asBool(t1.$index(0, _s10_));
      else if (J.$eq$(_this._ifParsed$1(_s10_), true))
        A.ExecutableOptions__fail("When printing to stdout, --source-map requires --embed-source-map.");
      else if (t1.wasParsed$1(_s15_))
        A.ExecutableOptions__fail("When printing to stdout, --source-map-urls requires --embed-source-map.");
      else if (A._asBool(t1.$index(0, _s13_)))
        A.ExecutableOptions__fail("When printing to stdout, --embed-sources requires --embed-source-map.");
      else
        return false;
    },
    sourceMapUrl$2(_, url, destination) {
      var t1, path, t2, _null = null;
      if (url.get$scheme().length !== 0 && url.get$scheme() !== "file")
        return url;
      t1 = $.$get$context();
      path = t1.style.pathFromUri$1(A._parseUri(url));
      if (J.$eq$(this._options.$index(0, "source-map-urls"), "relative") && !this.get$_writeToStdout()) {
        destination.toString;
        t2 = t1.relative$2$from(path, t1.dirname$1(destination));
      } else
        t2 = A.absolute(path, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null);
      return t1.toUri$1(t2);
    },
    get$fatalDeprecations() {
      var t1 = this._fatalDeprecations;
      return t1 == null ? this._fatalDeprecations = new A.ExecutableOptions_fatalDeprecations_closure(this).call$0() : t1;
    },
    get$futureDeprecations() {
      var t2, t3, t4,
        t1 = A.LinkedHashSet_LinkedHashSet$_empty(type$.Deprecation);
      for (t2 = J.get$iterator$ax(type$.List_String._as(this._options.$index(0, "future-deprecation"))); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        t4 = A.Deprecation_fromId(t3);
        t1.add$1(0, t4 == null ? A.ExecutableOptions__fail('Invalid deprecation "' + t3 + '".') : t4);
      }
      return t1;
    },
    _ifParsed$1($name) {
      var t1 = this._options;
      return t1.wasParsed$1($name) ? t1.$index(0, $name) : null;
    }
  };
  A.ExecutableOptions__parser_closure.prototype = {
    call$0() {
      var _i, deprecation, _0_4, $self, id, description, t4, _1_5, _null = null,
        t1 = type$.String,
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Option),
        t3 = [],
        parser = new A.ArgParser(t2, A.LinkedHashMap_LinkedHashMap$_empty(t1, t1), new A.UnmodifiableMapView(t2, type$.UnmodifiableMapView_String_Option), new A.UnmodifiableMapView(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.ArgParser), type$.UnmodifiableMapView_String_ArgParser), t3, true, _null);
      parser.addOption$2$hide("precision", true);
      parser.addFlag$2$hide("async", true);
      t3.push(A.ExecutableOptions__separator("Input and Output"));
      parser.addFlag$2$help("stdin", "Read the stylesheet from stdin.");
      parser.addFlag$2$help("indented", "Use the indented syntax for input from stdin.");
      parser.addMultiOption$5$abbr$help$splitCommas$valueHelp("load-path", "I", "A path to use when resolving imports.\nMay be passed multiple times.", false, "PATH");
      t2 = type$.JSArray_String;
      parser.addOption$6$abbr$allowed$defaultsTo$help$valueHelp("style", "s", A._setArrayType(["expanded", "compressed"], t2), "expanded", "Output style.", "NAME");
      parser.addFlag$3$defaultsTo$help("charset", true, "Emit a @charset or BOM for CSS with non-ASCII characters.");
      parser.addFlag$3$defaultsTo$help("error-css", _null, "When an error occurs, emit a stylesheet describing it.\nDefaults to true when compiling to a file.");
      parser.addFlag$3$help$negatable("update", "Only compile out-of-date stylesheets.", false);
      t3.push(A.ExecutableOptions__separator("Source Maps"));
      parser.addFlag$3$defaultsTo$help("source-map", true, "Whether to generate source maps.");
      parser.addOption$4$allowed$defaultsTo$help("source-map-urls", A._setArrayType(["relative", "absolute"], t2), "relative", "How to link from source maps to source files.");
      parser.addFlag$3$defaultsTo$help("embed-sources", false, "Embed source file contents in source maps.");
      parser.addFlag$3$defaultsTo$help("embed-source-map", false, "Embed source map contents in CSS.");
      t3.push(A.ExecutableOptions__separator("Warnings"));
      parser.addFlag$3$abbr$help("quiet", "q", "Don't print warnings.");
      parser.addFlag$2$help("quiet-deps", "Don't print compiler warnings from dependencies.\nStylesheets imported through load paths count as dependencies.");
      parser.addFlag$2$help("verbose", "Print all deprecation warnings even when they're repetitive.");
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (_i = 0; _i < 16; ++_i) {
        deprecation = B.List_GN8[_i];
        _0_4 = A._InitializedCell$(new A.ExecutableOptions__parser__closure(deprecation));
        $self = deprecation._deprecatedIn;
        if (($self == null ? _null : A.Version___parse_tearOff($self)) != null && true) {
          id = deprecation.id;
          if (_0_4._readFinal$0() != null) {
            description = _0_4._readFinal$0();
            t4 = true;
          } else {
            description = _null;
            t4 = false;
          }
        } else {
          description = _null;
          id = description;
          t4 = false;
        }
        if (t4)
          t2.$indexSet(0, id, description);
      }
      parser.addMultiOption$3$allowedHelp$help("fatal-deprecation", t2, "Deprecations to treat as errors. You may also pass a Sass\nversion to include any behavior deprecated in or before it.\nSee https://sass-lang.com/documentation/breaking-changes for \na complete list.");
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (_i = 0; _i < 16; ++_i) {
        deprecation = B.List_GN8[_i];
        _1_5 = A._InitializedCell$(new A.ExecutableOptions__parser__closure0(deprecation));
        $self = deprecation._deprecatedIn;
        if (($self == null ? _null : A.Version___parse_tearOff($self)) == null) {
          id = deprecation.id;
          if (_1_5._readFinal$0() != null) {
            description = _1_5._readFinal$0();
            t2 = true;
          } else {
            description = _null;
            t2 = false;
          }
        } else {
          description = _null;
          id = description;
          t2 = false;
        }
        if (t2)
          t1.$indexSet(0, id, description);
      }
      parser.addMultiOption$3$allowedHelp$help("future-deprecation", t1, "Opt in to a deprecation early.");
      t3.push(A.ExecutableOptions__separator("Other"));
      parser.addFlag$4$abbr$help$negatable("watch", "w", "Watch stylesheets and recompile when they change.", false);
      parser.addFlag$2$help("poll", "Manually check for changes rather than using a native watcher.\nOnly valid with --watch.");
      parser.addFlag$2$help("stop-on-error", "Don't compile more files once an error is encountered.");
      parser.addFlag$4$abbr$help$negatable("interactive", "i", "Run an interactive SassScript shell.", false);
      parser.addFlag$3$abbr$help("color", "c", "Whether to use terminal colors for messages.");
      parser.addFlag$2$help("unicode", "Whether to use Unicode characters for messages.");
      parser.addFlag$2$help("trace", "Print full Dart stack traces for exceptions.");
      parser.addFlag$4$abbr$help$negatable("help", "h", "Print this usage information.", false);
      parser.addFlag$3$help$negatable("version", "Print the version of Dart Sass.", false);
      return parser;
    },
    $signature: 337
  };
  A.ExecutableOptions__parser__closure.prototype = {
    call$0() {
      return this._0_0.description;
    },
    $signature: 32
  };
  A.ExecutableOptions__parser__closure0.prototype = {
    call$0() {
      return this._1_0.description;
    },
    $signature: 32
  };
  A.ExecutableOptions_interactive_closure.prototype = {
    call$0() {
      var _0_0, option,
        t1 = this.$this._options;
      if (!A._asBool(t1.$index(0, "interactive")))
        return false;
      _0_0 = A.IterableExtension_firstWhereOrNull(A._setArrayType(["stdin", "indented", "style", "source-map", "source-map-urls", "embed-sources", "embed-source-map", "update", "watch"], type$.JSArray_String), t1.get$wasParsed());
      if (_0_0 != null) {
        option = _0_0;
        t1 = true;
      } else {
        option = null;
        t1 = false;
      }
      if (t1)
        throw A.wrapException(A.UsageException$("--" + A.S(option) + " isn't allowed with --interactive."));
      return true;
    },
    $signature: 1
  };
  A.ExecutableOptions_emitErrorCss_closure.prototype = {
    call$1(destination) {
      return destination != null;
    },
    $signature: 171
  };
  A.ExecutableOptions_fatalDeprecations_closure.prototype = {
    call$0() {
      var id, argVersion, sassVersion, t1, t2, _0_0, deprecation, t3, exception,
        deprecations = A.LinkedHashSet_LinkedHashSet$_empty(type$.Deprecation);
      for (t1 = J.get$iterator$ax(type$.List_String._as(this.$this._options.$index(0, "fatal-deprecation"))), t2 = type$.FormatException; t1.moveNext$0();) {
        id = t1.get$current(t1);
        _0_0 = A.Deprecation_fromId(id);
        if (_0_0 != null) {
          deprecation = _0_0;
          t3 = true;
        } else {
          deprecation = null;
          t3 = false;
        }
        if (t3) {
          J.add$1$ax(deprecations, deprecation);
          continue;
        }
        try {
          argVersion = A.Version_Version$parse(id);
          sassVersion = A.Version_Version$parse("1.69.5");
          if (J.compareTo$1$ns(argVersion, sassVersion) > 0)
            A.ExecutableOptions__fail("Invalid version " + A.S(argVersion) + ". --fatal-deprecation requires a version less than or equal to the current Dart Sass version.");
          J.addAll$1$ax(deprecations, A.Deprecation_forVersion(argVersion));
        } catch (exception) {
          if (t2._is(A.unwrapException(exception)))
            A.ExecutableOptions__fail('Invalid deprecation "' + A.S(id) + '".');
          else
            throw exception;
        }
      }
      return deprecations;
    },
    $signature: 339
  };
  A.UsageException.prototype = {$isException: 1,
    get$message(receiver) {
      return this.message;
    }
  };
  A.watch_closure.prototype = {
    call$1(dir) {
      for (; !A.dirExists(dir);)
        dir = $.$get$context().dirname$1(dir);
      return this.dirWatcher.watch$1(0, dir);
    },
    $signature: 340
  };
  A._Watcher.prototype = {
    _delete$1(path) {
      var buffer, t1, exception;
      try {
        A.deleteFile(path);
        buffer = new A.StringBuffer("");
        t1 = this._watch$_options;
        if (t1.get$color())
          buffer._contents += "\x1b[33m";
        buffer._contents += "Deleted " + path + ".";
        if (t1.get$color())
          buffer._contents += "\x1b[0m";
        A.print(buffer);
      } catch (exception) {
        if (!(A.unwrapException(exception) instanceof A.FileSystemException))
          throw exception;
      }
    },
    watch$1(_, watcher) {
      return this.watch$body$_Watcher(0, watcher);
    },
    watch$body$_Watcher(_, watcher) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, $event, extension, success, success0, success1, t2, t1;
      var $async$watch$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = watcher._group.__StreamGroup__controller_A;
              t1 === $ && A.throwUnnamedLateFieldNI();
              t1 = new A._StreamIterator(A.checkNotNullable($async$self._debounceEvents$1(new A._ControllerStream(t1, A._instanceType(t1)._eval$1("_ControllerStream<1>"))), "stream", type$.Object));
              $async$handler = 3;
              t2 = $async$self._watch$_options._options;
            case 6:
              // for condition
              $async$goto = 8;
              return A._asyncAwait(t1.moveNext$0(), $async$watch$1);
            case 8:
              // returning from await.
              if (!$async$result) {
                // goto after for
                $async$goto = 7;
                break;
              }
              $event = t1.get$current(t1);
              extension = A.ParsedPath_ParsedPath$parse($event.path, $.$get$context().style)._splitExtension$1(1)[1];
              if (!J.$eq$(extension, ".sass") && !J.$eq$(extension, ".scss") && !J.$eq$(extension, ".css")) {
                // goto for condition
                $async$goto = 6;
                break;
              }
            case 9:
              // switch
              switch ($event.type) {
                case B.ChangeType_modify:
                  // goto case
                  $async$goto = 11;
                  break;
                case B.ChangeType_add:
                  // goto case
                  $async$goto = 12;
                  break;
                case B.ChangeType_remove:
                  // goto case
                  $async$goto = 13;
                  break;
                default:
                  // goto after switch
                  $async$goto = 10;
                  break;
              }
              break;
            case 11:
              // case
              $async$goto = 14;
              return A._asyncAwait($async$self._handleModify$1($event.path), $async$watch$1);
            case 14:
              // returning from await.
              success = $async$result;
              if (!success && A._asBool(t2.$index(0, "stop-on-error"))) {
                $async$next = [1];
                // goto finally
                $async$goto = 4;
                break;
              }
              // goto after switch
              $async$goto = 10;
              break;
            case 12:
              // case
              $async$goto = 15;
              return A._asyncAwait($async$self._handleAdd$1($event.path), $async$watch$1);
            case 15:
              // returning from await.
              success0 = $async$result;
              if (!success0 && A._asBool(t2.$index(0, "stop-on-error"))) {
                $async$next = [1];
                // goto finally
                $async$goto = 4;
                break;
              }
              // goto after switch
              $async$goto = 10;
              break;
            case 13:
              // case
              $async$goto = 16;
              return A._asyncAwait($async$self._handleRemove$1($event.path), $async$watch$1);
            case 16:
              // returning from await.
              success1 = $async$result;
              if (!success1 && A._asBool(t2.$index(0, "stop-on-error"))) {
                $async$next = [1];
                // goto finally
                $async$goto = 4;
                break;
              }
              // goto after switch
              $async$goto = 10;
              break;
            case 10:
              // after switch
              // goto for condition
              $async$goto = 6;
              break;
            case 7:
              // after for
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 4:
              // finally
              $async$handler = 2;
              $async$goto = 17;
              return A._asyncAwait(t1.cancel$0(), $async$watch$1);
            case 17:
              // returning from await.
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$watch$1, $async$completer);
    },
    _handleModify$1(path) {
      return this._handleModify$body$_Watcher(path);
    },
    _handleModify$body$_Watcher(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$self = this, t2, t0, url, _0_0, node, t1;
      var $async$_handleModify$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = A.isNodeJs() ? self.process : null;
              if (!J.$eq$(t1 == null ? null : J.get$platform$x(t1), "win32")) {
                t1 = A.isNodeJs() ? self.process : null;
                t1 = J.$eq$(t1 == null ? null : J.get$platform$x(t1), "darwin");
              } else
                t1 = true;
              if (t1) {
                t1 = $.$get$context();
                t2 = A._realCasePath(A.absolute(t1.normalize$1(path), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
                t0 = t2;
                t2 = t1;
                t1 = t0;
              } else {
                t1 = $.$get$context();
                t2 = t1.canonicalize$1(0, path);
                t0 = t2;
                t2 = t1;
                t1 = t0;
              }
              url = t2.toUri$1(t1);
              t1 = $async$self._graph;
              _0_0 = t1._nodes.$index(0, url);
              if (_0_0 != null) {
                node = _0_0;
                t2 = true;
              } else {
                node = null;
                t2 = false;
              }
              $async$goto = t2 ? 3 : 5;
              break;
            case 3:
              // then
              t1.reload$1(url);
              $async$goto = 6;
              return A._asyncAwait($async$self._recompileDownstream$1(A._setArrayType([node], type$.JSArray_StylesheetNode)), $async$_handleModify$1);
            case 6:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$returnValue = $async$self._handleAdd$1(path);
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_handleModify$1, $async$completer);
    },
    _handleAdd$1(path) {
      return this._handleAdd$body$_Watcher(path);
    },
    _handleAdd$body$_Watcher(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$self = this, t1, success, t2, t3, t0, destination;
      var $async$_handleAdd$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              destination = $async$self._destinationFor$1(path);
              $async$goto = destination != null ? 3 : 5;
              break;
            case 3:
              // then
              t1 = type$.nullable_String;
              $async$goto = 6;
              return A._asyncAwait(A.compileStylesheets($async$self._watch$_options, $async$self._graph, A.LinkedHashMap_LinkedHashMap$_literal([path, destination], t1, t1), true), $async$_handleAdd$1);
            case 6:
              // returning from await.
              success = $async$result;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              success = true;
            case 4:
              // join
              t1 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
              t2 = A.isNodeJs() ? self.process : null;
              if (!J.$eq$(t2 == null ? null : J.get$platform$x(t2), "win32")) {
                t2 = A.isNodeJs() ? self.process : null;
                t2 = J.$eq$(t2 == null ? null : J.get$platform$x(t2), "darwin");
              } else
                t2 = true;
              if (t2) {
                t2 = $.$get$context();
                t3 = A._realCasePath(A.absolute(t2.normalize$1(path), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
                t0 = t3;
                t3 = t2;
                t2 = t0;
              } else {
                t2 = $.$get$context();
                t3 = t2.canonicalize$1(0, path);
                t0 = t3;
                t3 = t2;
                t2 = t0;
              }
              $async$goto = 7;
              return A._asyncAwait($async$self._recompileDownstream$1($async$self._graph.addCanonical$3(new A.FilesystemImporter(t1), t3.toUri$1(t2), t3.toUri$1(path))), $async$_handleAdd$1);
            case 7:
              // returning from await.
              $async$returnValue = $async$result && success;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_handleAdd$1, $async$completer);
    },
    _handleRemove$1(path) {
      return this._handleRemove$body$_Watcher(path);
    },
    _handleRemove$body$_Watcher(path) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$self = this, t2, t0, url, _0_0, destination, t3, node, toRecompile, t1;
      var $async$_handleRemove$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = A.isNodeJs() ? self.process : null;
              if (!J.$eq$(t1 == null ? null : J.get$platform$x(t1), "win32")) {
                t1 = A.isNodeJs() ? self.process : null;
                t1 = J.$eq$(t1 == null ? null : J.get$platform$x(t1), "darwin");
              } else
                t1 = true;
              if (t1) {
                t1 = $.$get$context();
                t2 = A._realCasePath(A.absolute(t1.normalize$1(path), null, null, null, null, null, null, null, null, null, null, null, null, null, null));
                t0 = t2;
                t2 = t1;
                t1 = t0;
              } else {
                t1 = $.$get$context();
                t2 = t1.canonicalize$1(0, path);
                t0 = t2;
                t2 = t1;
                t1 = t0;
              }
              url = t2.toUri$1(t1);
              t1 = $async$self._graph;
              t2 = t1._nodes;
              if (t2.containsKey$1(url)) {
                _0_0 = $async$self._destinationFor$1(path);
                if (_0_0 != null) {
                  destination = _0_0;
                  t3 = true;
                } else {
                  destination = null;
                  t3 = false;
                }
                if (t3)
                  $async$self._delete$1(destination);
              }
              t3 = A.absolute(".", null, null, null, null, null, null, null, null, null, null, null, null, null, null);
              node = t2.remove$1(0, url);
              t2 = node != null;
              if (t2) {
                t1._transitiveModificationTimes.clear$0(0);
                t1.importCache.clearImport$1(url);
                node._stylesheet_graph$_remove$0();
              }
              toRecompile = t1._recanonicalizeImports$2(new A.FilesystemImporter(t3), url);
              if (t2)
                toRecompile.addAll$1(0, node._downstream);
              $async$goto = 3;
              return A._asyncAwait($async$self._recompileDownstream$1(toRecompile), $async$_handleRemove$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_handleRemove$1, $async$completer);
    },
    _debounceEvents$1(events) {
      var t1 = type$.WatchEvent;
      t1 = A.RateLimit__debounceAggregate(events, A.Duration$(25), A.instantiate1(A.rate_limit___collect$closure(), t1), false, true, t1, type$.List_WatchEvent);
      return new A._ExpandStream(new A._Watcher__debounceEvents_closure(), t1, A._instanceType(t1)._eval$1("_ExpandStream<Stream.T,WatchEvent>"));
    },
    _recompileDownstream$1(nodes) {
      return this._recompileDownstream$body$_Watcher(nodes);
    },
    _recompileDownstream$body$_Watcher(nodes) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.bool),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, allSucceeded, t6, t7, t8, sourcesToDestinations, success, _i, seen;
      var $async$_recompileDownstream$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              seen = A.LinkedHashSet_LinkedHashSet$_empty(type$.StylesheetNode);
              t1 = type$.UnmodifiableSetView_StylesheetNode, t2 = type$.JSArray_StylesheetNode, t3 = $async$self._watch$_options, t4 = $async$self._graph, t5 = t3._options, allSucceeded = true;
            case 3:
              // for condition
              if (!(t6 = J.getInterceptor$asx(nodes), t6.get$isNotEmpty(nodes))) {
                // goto after for
                $async$goto = 5;
                break;
              }
              t7 = A._setArrayType([], t2);
              for (t6 = t6.get$iterator(nodes); t6.moveNext$0();) {
                t8 = t6.get$current(t6);
                if (seen.add$1(0, t8))
                  t7.push(t8);
              }
              sourcesToDestinations = $async$self._sourceEntrypointsToDestinations$1(t7);
              $async$goto = sourcesToDestinations.__js_helper$_length !== 0 ? 6 : 7;
              break;
            case 6:
              // then
              $async$goto = 8;
              return A._asyncAwait(A.compileStylesheets(t3, t4, sourcesToDestinations, true), $async$_recompileDownstream$1);
            case 8:
              // returning from await.
              success = $async$result;
              if (!success && A._asBool(t5.$index(0, "stop-on-error"))) {
                $async$returnValue = false;
                // goto return
                $async$goto = 1;
                break;
              }
              allSucceeded = allSucceeded && success;
            case 7:
              // join
              t6 = A._setArrayType([], t2);
              for (t8 = t7.length, _i = 0; _i < t7.length; t7.length === t8 || (0, A.throwConcurrentModificationError)(t7), ++_i)
                B.JSArray_methods.addAll$1(t6, new A.UnmodifiableSetView0(t7[_i]._downstream, t1));
            case 4:
              // for update
              nodes = t6;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = allSucceeded;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_recompileDownstream$1, $async$completer);
    },
    _sourceEntrypointsToDestinations$1(nodes) {
      var _i, url, source, _0_0, destination, t2,
        t1 = type$.String,
        entrypoints = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t1 = nodes.length, _i = 0; _i < nodes.length; nodes.length === t1 || (0, A.throwConcurrentModificationError)(nodes), ++_i) {
        url = nodes[_i].canonicalUrl;
        if (url.get$scheme() !== "file")
          continue;
        source = $.$get$context().style.pathFromUri$1(A._parseUri(url));
        _0_0 = this._destinationFor$1(source);
        if (_0_0 != null) {
          destination = _0_0;
          t2 = true;
        } else {
          destination = null;
          t2 = false;
        }
        if (t2)
          entrypoints.$indexSet(0, source, destination);
      }
      return entrypoints;
    },
    _destinationFor$1(source) {
      var t2, _0_0, destination, t3, sourceDir, destinationDir, _null = null,
        t1 = this._watch$_options;
      t1._ensureSources$0();
      t2 = type$.String;
      _0_0 = t1._sourcesToDestinations.cast$2$0(0, t2, t2).$index(0, source);
      if (_0_0 != null) {
        destination = _0_0;
        t3 = true;
      } else {
        destination = _null;
        t3 = false;
      }
      if (t3)
        return destination;
      t3 = $.$get$context();
      if (B.JSString_methods.startsWith$1(A.ParsedPath_ParsedPath$parse(source, t3.style).get$basename(), "_"))
        return _null;
      t1._ensureSources$0();
      t1 = t1.__ExecutableOptions__sourceDirectoriesToDestinations_F;
      t1 === $ && A.throwUnnamedLateFieldNI();
      t2 = A.MapExtensions_get_pairs(t1.cast$2$0(0, t2, t2), t2, t2);
      t2 = t2.get$iterator(t2);
      for (; t2.moveNext$0();) {
        t1 = t2.get$current(t2);
        sourceDir = t1._0;
        destinationDir = t1._1;
        if (t3._isWithinOrEquals$2(sourceDir, source) !== B._PathRelation_within)
          continue;
        destination = A.join(destinationDir, t3.withoutExtension$1(t3.relative$2$from(source, sourceDir)) + ".css", _null);
        if (t3._isWithinOrEquals$2(destination, source) !== B._PathRelation_equal)
          return destination;
      }
      return _null;
    }
  };
  A._Watcher__debounceEvents_closure.prototype = {
    call$1(buffer) {
      var t3, t4, t5, _0_0, _0_1, _0_4, newType, _1_1, type,
        t1 = type$.ChangeType,
        t2 = A.PathMap__create(null, t1);
      for (t3 = J.get$iterator$ax(buffer); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        t5 = t4.path;
        _0_0 = new A._Record_2(t2.$index(0, t5), t4.type);
        _0_1 = A._InitializedCell$(new A._Watcher__debounceEvents__closure(_0_0));
        _0_4 = A._InitializedCell$(new A._Watcher__debounceEvents__closure0(_0_0));
        $label0$0: {
          if (_0_1._readFinal$0() == null) {
            newType = _0_4._readFinal$0();
            t4 = true;
          } else {
            newType = null;
            t4 = false;
          }
          if (t4) {
            t4 = newType;
            break $label0$0;
          }
          if (B.ChangeType_remove === _0_4._readFinal$0()) {
            t4 = B.ChangeType_remove;
            break $label0$0;
          }
          if (B.ChangeType_add === _0_1._readFinal$0()) {
            t4 = B.ChangeType_add;
            break $label0$0;
          }
          t4 = B.ChangeType_modify;
          break $label0$0;
        }
        t2.$indexSet(0, t5, t4);
      }
      t3 = A._setArrayType([], type$.JSArray_WatchEvent);
      for (t1 = A.MapExtensions_get_pairs(new A.PathMap(t2, type$.PathMap_ChangeType), type$.nullable_String, t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        _1_1 = A._InitializedCell$(new A._Watcher__debounceEvents__closure1(t2));
        _1_1._readFinal$0().toString;
        t4 = _1_1._readFinal$0();
        t4.toString;
        type = t2._1;
        type = type;
        t3.push(new A.WatchEvent(type, t4));
      }
      return t3;
    },
    $signature: 344
  };
  A._Watcher__debounceEvents__closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 349
  };
  A._Watcher__debounceEvents__closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 351
  };
  A._Watcher__debounceEvents__closure1.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 32
  };
  A.EmptyExtensionStore.prototype = {
    get$_extensions() {
      return A.throwExpression(A.NoSuchMethodError_NoSuchMethodError$withInvocation(this, A.JSInvocationMirror$(B.Symbol__extensions, "get$_empty_extension_store$_extensions", 1, [], [], 0)));
    },
    get$_sourceSpecificity() {
      return A.throwExpression(A.NoSuchMethodError_NoSuchMethodError$withInvocation(this, A.JSInvocationMirror$(B.Symbol__sourceSpecificity, "get$_empty_extension_store$_sourceSpecificity", 1, [], [], 0)));
    },
    get$isEmpty(_) {
      return true;
    },
    get$simpleSelectors() {
      return B.C_EmptyUnmodifiableSet;
    },
    extensionsWhereTarget$1(callback) {
      return B.List_empty5;
    },
    addExtensions$1(extenders) {
      throw A.wrapException(A.UnsupportedError$(string$.addExt));
    },
    clone$0() {
      return B.Record2_EmptyExtensionStore_Map_empty;
    },
    $isExtensionStore: 1
  };
  A.Extension.prototype = {
    toString$0(_) {
      var t1 = this.extender.toString$0(0),
        t2 = this.target.toString$0(0),
        t3 = this.isOptional ? " !optional" : "";
      return t1 + " {@extend " + t2 + t3 + "}";
    }
  };
  A.Extender.prototype = {
    assertCompatibleMediaContext$1(mediaContext) {
      var expectedMediaContext,
        extension = this._extension;
      if (extension == null)
        return;
      expectedMediaContext = extension.mediaContext;
      if (expectedMediaContext == null)
        return;
      if (mediaContext != null && B.C_ListEquality.equals$2(0, expectedMediaContext, mediaContext))
        return;
      throw A.wrapException(A.SassException$(string$.You_ma, extension.span, null));
    },
    toString$0(_) {
      return A.serializeSelector(this.selector, true);
    }
  };
  A.ExtensionStore.prototype = {
    get$isEmpty(_) {
      return this._extensions.__js_helper$_length === 0;
    },
    get$simpleSelectors() {
      return new A.MapKeySet(this._selectors, type$.MapKeySet_SimpleSelector);
    },
    extensionsWhereTarget$1(callback) {
      return new A._SyncStarIterable(this.extensionsWhereTarget$body$ExtensionStore(callback), type$._SyncStarIterable_Extension);
    },
    extensionsWhereTarget$body$ExtensionStore($async$callback) {
      var $async$self = this;
      return function() {
        var callback = $async$callback;
        var $async$goto = 0, $async$handler = 1, $async$currentError, t1, t2, simple, sources, t3;
        return function $async$extensionsWhereTarget$1($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = A.MapExtensions_get_pairs($async$self._extensions, type$.SimpleSelector, type$.Map_ComplexSelector_Extension), t1 = t1.get$iterator(t1);
              case 2:
                // for condition
                if (!t1.moveNext$0()) {
                  // goto after for
                  $async$goto = 3;
                  break;
                }
                t2 = t1.get$current(t1);
                simple = t2._0;
                sources = t2._1;
                if (!callback.call$1(simple)) {
                  // goto for condition
                  $async$goto = 2;
                  break;
                }
                t2 = sources.get$values(sources), t2 = t2.get$iterator(t2);
              case 4:
                // for condition
                if (!t2.moveNext$0()) {
                  // goto after for
                  $async$goto = 5;
                  break;
                }
                t3 = t2.get$current(t2);
                $async$goto = t3 instanceof A.MergedExtension ? 6 : 8;
                break;
              case 6:
                // then
                t3 = t3.unmerge$0();
                $async$goto = 9;
                return $async$iterator._yieldStar$1(new A.WhereIterable(t3, new A.ExtensionStore_extensionsWhereTarget_closure(), t3.$ti._eval$1("WhereIterable<Iterable.E>")));
              case 9:
                // after yield
                // goto join
                $async$goto = 7;
                break;
              case 8:
                // else
                $async$goto = !t3.isOptional ? 10 : 11;
                break;
              case 10:
                // then
                $async$goto = 12;
                return $async$iterator._async$_current = t3, 1;
              case 12:
                // after yield
              case 11:
                // join
              case 7:
                // join
                // goto for condition
                $async$goto = 4;
                break;
              case 5:
                // after for
                // goto for condition
                $async$goto = 2;
                break;
              case 3:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    addSelector$2(selector, mediaContext) {
      var originalSelector, error, stackTrace, t1, exception, t2, t3, t4, modifiableSelector, _this = this;
      selector = selector;
      originalSelector = selector;
      if (!originalSelector.accept$1(B._IsInvisibleVisitor_true))
        _this._originals.addAll$1(0, originalSelector.components);
      t1 = _this._extensions;
      if (t1.__js_helper$_length !== 0)
        try {
          selector = _this._extendList$3(originalSelector, t1, mediaContext);
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (t1 instanceof A.SassException) {
            error = t1;
            stackTrace = A.getTraceFromException(exception);
            t1 = error;
            t2 = J.getInterceptor$z(t1);
            t1 = A.SourceSpanException.prototype.get$span.call(t2, t1).message$1(0, "");
            t2 = error._span_exception$_message;
            t3 = error;
            t4 = J.getInterceptor$z(t3);
            t3 = A.SourceSpanException.prototype.get$span.call(t4, t3);
            A.throwWithTrace(new A.SassException(B.Set_empty, "From " + t1 + "\n" + t2, t3), error, stackTrace);
          } else
            throw exception;
        }
      modifiableSelector = new A.ModifiableBox(selector, type$.ModifiableBox_SelectorList);
      if (mediaContext != null)
        _this._mediaContexts.$indexSet(0, modifiableSelector, mediaContext);
      _this._registerSelector$2(selector, modifiableSelector);
      return new A.Box(modifiableSelector, type$.Box_SelectorList);
    },
    _registerSelector$2(list, selector) {
      var t1, t2, t3, _i, t4, t5, _i0, t6, t7, _i1, simple, _0_2, selectorInPseudo, t8;
      for (t1 = list.components, t2 = t1.length, t3 = this._selectors, _i = 0; _i < t2; ++_i)
        for (t4 = t1[_i].components, t5 = t4.length, _i0 = 0; _i0 < t5; ++_i0)
          for (t6 = t4[_i0].selector.components, t7 = t6.length, _i1 = 0; _i1 < t7; ++_i1) {
            simple = t6[_i1];
            J.add$1$ax(t3.putIfAbsent$2(simple, new A.ExtensionStore__registerSelector_closure()), selector);
            _0_2 = A._InitializedCell$(new A.ExtensionStore__registerSelector_closure0(simple));
            if (simple instanceof A.PseudoSelector)
              if (_0_2._readFinal$0() != null) {
                selectorInPseudo = _0_2._readFinal$0();
                t8 = true;
              } else {
                selectorInPseudo = null;
                t8 = false;
              }
            else {
              selectorInPseudo = null;
              t8 = false;
            }
            if (t8)
              this._registerSelector$2(selectorInPseudo, selector);
          }
    },
    addExtension$4(extender, target, extend, mediaContext) {
      var t2, t3, t4, t5, t6, t7, t8, t9, t10, newExtensions, _i, complex, t11, extension, _0_0, existingExtension, t12, newExtensionsByTarget, additionalExtensions, _this = this,
        selectors = _this._selectors.$index(0, target),
        t1 = _this._extensionsByExtender,
        existingExtensions = t1.$index(0, target),
        sources = _this._extensions.putIfAbsent$2(target, new A.ExtensionStore_addExtension_closure());
      for (t2 = extender.components, t3 = t2.length, t4 = selectors == null, t5 = _this._sourceSpecificity, t6 = extend.span, t7 = extend.isOptional, t8 = existingExtensions != null, t9 = type$.ComplexSelector, t10 = type$.Extension, newExtensions = null, _i = 0; _i < t3; ++_i) {
        complex = t2[_i];
        if (complex.accept$1(B.C__IsUselessVisitor))
          continue;
        complex.get$specificity();
        t11 = new A.Extender(complex, false);
        extension = t11._extension = new A.Extension(t11, target, mediaContext, t7, t6);
        _0_0 = sources.$index(0, complex);
        if (_0_0 != null) {
          existingExtension = _0_0;
          t11 = true;
        } else {
          existingExtension = null;
          t11 = false;
        }
        if (t11) {
          sources.$indexSet(0, complex, A.MergedExtension_merge(existingExtension, extension));
          continue;
        }
        sources.$indexSet(0, complex, extension);
        for (t11 = new A._SyncStarIterator(_this._simpleSelectors$1(complex)._outerHelper()); t11.moveNext$0();) {
          t12 = t11._async$_current;
          J.add$1$ax(t1.putIfAbsent$2(t12, new A.ExtensionStore_addExtension_closure0()), extension);
          t5.putIfAbsent$2(t12, new A.ExtensionStore_addExtension_closure1(complex));
        }
        if (!t4 || t8) {
          if (newExtensions == null)
            newExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t9, t10);
          newExtensions.$indexSet(0, complex, extension);
        }
      }
      if (newExtensions == null)
        return;
      t1 = type$.SimpleSelector;
      newExtensionsByTarget = A.LinkedHashMap_LinkedHashMap$_literal([target, newExtensions], t1, type$.Map_ComplexSelector_Extension);
      if (t8) {
        additionalExtensions = _this._extendExistingExtensions$2(existingExtensions, newExtensionsByTarget);
        if (additionalExtensions != null)
          A.mapAddAll2(newExtensionsByTarget, additionalExtensions, t1, t9, t10);
      }
      if (!t4)
        _this._extendExistingSelectors$2(selectors, newExtensionsByTarget);
    },
    _simpleSelectors$1(complex) {
      return new A._SyncStarIterable(this._simpleSelectors$body$ExtensionStore(complex), type$._SyncStarIterable_SimpleSelector);
    },
    _simpleSelectors$body$ExtensionStore($async$complex) {
      var $async$self = this;
      return function() {
        var complex = $async$complex;
        var $async$goto = 0, $async$handler = 1, $async$currentError, t1, t2, _i, t3, t4, _i0, simple, _0_2, selector, t5, t6, _i1;
        return function $async$_simpleSelectors$1($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = complex.components, t2 = t1.length, _i = 0;
              case 2:
                // for condition
                if (!(_i < t2)) {
                  // goto after for
                  $async$goto = 4;
                  break;
                }
                t3 = t1[_i].selector.components, t4 = t3.length, _i0 = 0;
              case 5:
                // for condition
                if (!(_i0 < t4)) {
                  // goto after for
                  $async$goto = 7;
                  break;
                }
                simple = t3[_i0];
                $async$goto = 8;
                return $async$iterator._async$_current = simple, 1;
              case 8:
                // after yield
                _0_2 = A._InitializedCell$(new A.ExtensionStore__simpleSelectors_closure(simple));
                if (simple instanceof A.PseudoSelector)
                  if (_0_2._readFinal$0() != null) {
                    selector = _0_2._readFinal$0();
                    t5 = true;
                  } else {
                    selector = null;
                    t5 = false;
                  }
                else {
                  selector = null;
                  t5 = false;
                }
                $async$goto = t5 ? 9 : 10;
                break;
              case 9:
                // then
                t5 = selector.components, t6 = t5.length, _i1 = 0;
              case 11:
                // for condition
                if (!(_i1 < t6)) {
                  // goto after for
                  $async$goto = 13;
                  break;
                }
                $async$goto = 14;
                return $async$iterator._yieldStar$1($async$self._simpleSelectors$1(t5[_i1]));
              case 14:
                // after yield
              case 12:
                // for update
                ++_i1;
                // goto for condition
                $async$goto = 11;
                break;
              case 13:
                // after for
              case 10:
                // join
              case 6:
                // for update
                ++_i0;
                // goto for condition
                $async$goto = 5;
                break;
              case 7:
                // after for
              case 3:
                // for update
                ++_i;
                // goto for condition
                $async$goto = 2;
                break;
              case 4:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    _extendExistingExtensions$2(extensions, newExtensions) {
      var extension, selectors, error, stackTrace, t1, t2, t3, t4, t5, t6, additionalExtensions, _i, t7, exception, t8, t9, containsExtension, selectors0, t10, t11, t12, t13, t14, withExtender, _0_0, existingExtension, _i0, _i1, _null = null;
      for (t1 = J.toList$0$ax(extensions), t2 = t1.length, t3 = this._extensionsByExtender, t4 = type$.SimpleSelector, t5 = type$.Map_ComplexSelector_Extension, t6 = this._extensions, additionalExtensions = _null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        extension = t1[_i];
        t7 = t6.$index(0, extension.target);
        t7.toString;
        selectors = null;
        try {
          selectors = this._extendComplex$3(extension.extender.selector, newExtensions, extension.mediaContext);
          if (selectors == null)
            continue;
        } catch (exception) {
          t8 = A.unwrapException(exception);
          if (t8 instanceof A.SassException) {
            error = t8;
            stackTrace = A.getTraceFromException(exception);
            A.throwWithTrace(error.withAdditionalSpan$2(extension.extender.selector.span, "target selector"), error, stackTrace);
          } else
            throw exception;
        }
        t8 = J.get$first$ax(selectors);
        t9 = extension.extender.selector;
        containsExtension = B.C_ListEquality.equals$2(0, t8.leadingCombinators, t9.leadingCombinators) && B.C_ListEquality.equals$2(0, t8.components, t9.components);
        if (containsExtension) {
          t8 = selectors;
          t9 = A.instanceType(t8);
          selectors0 = new A.SubListIterable(t8, 1, _null, t9._eval$1("SubListIterable<1>"));
          selectors0.SubListIterable$3(t8, 1, _null, t9._precomputed1);
          selectors = selectors0;
        }
        for (t8 = J.get$iterator$ax(selectors); t8.moveNext$0();) {
          t9 = t8.get$current(t8);
          t10 = extension;
          t11 = t10.target;
          t12 = t10.span;
          t13 = t10.mediaContext;
          t10 = t10.isOptional;
          t9.get$specificity();
          t14 = new A.Extender(t9, false);
          withExtender = t14._extension = new A.Extension(t14, t11, t13, t10, t12);
          _0_0 = t7.$index(0, t9);
          if (_0_0 != null) {
            existingExtension = _0_0;
            t10 = true;
          } else {
            existingExtension = _null;
            t10 = false;
          }
          if (t10)
            t7.$indexSet(0, t9, A.MergedExtension_merge(existingExtension, withExtender));
          else {
            t7.$indexSet(0, t9, withExtender);
            for (t10 = t9.components, t11 = t10.length, _i0 = 0; _i0 < t11; ++_i0)
              for (t12 = t10[_i0].selector.components, t13 = t12.length, _i1 = 0; _i1 < t13; ++_i1)
                J.add$1$ax(t3.putIfAbsent$2(t12[_i1], new A.ExtensionStore__extendExistingExtensions_closure()), withExtender);
            if (newExtensions.containsKey$1(extension.target)) {
              if (additionalExtensions == null)
                additionalExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t4, t5);
              additionalExtensions.putIfAbsent$2(extension.target, new A.ExtensionStore__extendExistingExtensions_closure0()).$indexSet(0, t9, withExtender);
            }
          }
        }
        if (!containsExtension)
          t7.remove$1(0, extension.extender);
      }
      return additionalExtensions;
    },
    _extendExistingSelectors$2(selectors, newExtensions) {
      var selector, error, stackTrace, t1, t2, oldValue, exception, t3, t4, t5, t6;
      for (t1 = selectors.get$iterator(selectors), t2 = this._mediaContexts; t1.moveNext$0();) {
        selector = t1.get$current(t1);
        oldValue = selector.value;
        try {
          selector.value = this._extendList$3(selector.value, newExtensions, t2.$index(0, selector));
        } catch (exception) {
          t3 = A.unwrapException(exception);
          if (t3 instanceof A.SassException) {
            error = t3;
            stackTrace = A.getTraceFromException(exception);
            t3 = selector.value.span.message$1(0, "");
            t4 = error._span_exception$_message;
            t5 = error;
            t6 = J.getInterceptor$z(t5);
            t5 = A.SourceSpanException.prototype.get$span.call(t6, t5);
            A.throwWithTrace(new A.SassException(B.Set_empty, "From " + t3 + "\n" + t4, t5), error, stackTrace);
          } else
            throw exception;
        }
        if (oldValue === selector.value)
          continue;
        this._registerSelector$2(selector.value, selector);
      }
    },
    addExtensions$1(extensionStores) {
      var t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, newExtensions, selectorsToExtend, extensionsToExtend, t12, t13, target, newSources, first, extensionsForTarget, t14, selectorsForTarget, t15, _2_0, existingSources, t16, extender, extension, _this = this, _null = null;
      for (t1 = J.get$iterator$ax(extensionStores), t2 = type$.SimpleSelector, t3 = type$.Map_ComplexSelector_Extension, t4 = _this._extensions, t5 = type$.ComplexSelector, t6 = type$.Extension, t7 = _this._selectors, t8 = _this._extensionsByExtender, t9 = type$.JSArray_Extension, t10 = type$.ModifiableBox_SelectorList, t11 = _this._sourceSpecificity, newExtensions = _null, selectorsToExtend = newExtensions, extensionsToExtend = selectorsToExtend; t1.moveNext$0();) {
        t12 = t1.get$current(t1);
        if (t12.get$isEmpty(t12))
          continue;
        t11.addAll$1(0, t12.get$_sourceSpecificity());
        for (t12 = A.MapExtensions_get_pairs(t12.get$_extensions(), t2, t3), t12 = t12.get$iterator(t12); t12.moveNext$0();) {
          t13 = t12.get$current(t12);
          target = t13._0;
          newSources = t13._1;
          if (target instanceof A.PlaceholderSelector) {
            first = target.name.charCodeAt(0);
            t13 = first === 45 || first === 95;
          } else
            t13 = false;
          if (t13)
            continue;
          extensionsForTarget = t8.$index(0, target);
          t13 = extensionsForTarget == null;
          if (!t13) {
            if (extensionsToExtend == null) {
              extensionsToExtend = A._setArrayType([], t9);
              t14 = extensionsToExtend;
            } else
              t14 = extensionsToExtend;
            B.JSArray_methods.addAll$1(t14, extensionsForTarget);
          }
          selectorsForTarget = t7.$index(0, target);
          t14 = selectorsForTarget != null;
          if (t14) {
            if (selectorsToExtend == null) {
              selectorsToExtend = A.LinkedHashSet_LinkedHashSet$_empty(t10);
              t15 = selectorsToExtend;
            } else
              t15 = selectorsToExtend;
            t15.addAll$1(0, selectorsForTarget);
          }
          _2_0 = t4.$index(0, target);
          if (_2_0 != null) {
            existingSources = _2_0;
            t15 = true;
          } else {
            existingSources = _null;
            t15 = false;
          }
          if (t15)
            for (t15 = A.MapExtensions_get_pairs(newSources, t5, t6), t15 = t15.get$iterator(t15); t15.moveNext$0();) {
              t16 = t15.get$current(t15);
              extender = t16._0;
              extension = t16._1;
              if (existingSources.containsKey$1(extender)) {
                t16 = existingSources.$index(0, extender);
                extension = A.MergedExtension_merge(t16, extension);
                existingSources.$indexSet(0, extender, extension);
              } else
                existingSources.$indexSet(0, extender, extension);
              if (!t13 || t14) {
                if (newExtensions == null) {
                  newExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t2, t3);
                  t16 = newExtensions;
                } else
                  t16 = newExtensions;
                J.$indexSet$ax(t16.putIfAbsent$2(target, new A.ExtensionStore_addExtensions_closure()), extender, extension);
              }
            }
          else {
            t15 = A.LinkedHashMap_LinkedHashMap(_null, _null, _null, t5, t6);
            t15.addAll$1(0, newSources);
            t4.$indexSet(0, target, t15);
            if (!t13 || t14) {
              if (newExtensions == null) {
                newExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t2, t3);
                t13 = newExtensions;
              } else
                t13 = newExtensions;
              t14 = A.LinkedHashMap_LinkedHashMap(_null, _null, _null, t5, t6);
              t14.addAll$1(0, newSources);
              t13.$indexSet(0, target, t14);
            }
          }
        }
      }
      if (newExtensions != null) {
        if (extensionsToExtend != null)
          _this._extendExistingExtensions$2(extensionsToExtend, newExtensions);
        if (selectorsToExtend != null)
          _this._extendExistingSelectors$2(selectorsToExtend, newExtensions);
      }
    },
    _extendList$3(list, extensions, mediaQueryContext) {
      var t1, t2, t3, extended, i, complex, result, t4;
      for (t1 = list.components, t2 = t1.length, t3 = type$.JSArray_ComplexSelector, extended = null, i = 0; i < t2; ++i) {
        complex = t1[i];
        result = this._extendComplex$3(complex, extensions, mediaQueryContext);
        if (result == null) {
          if (extended != null)
            extended.push(complex);
        } else {
          if (extended == null)
            if (i === 0)
              extended = A._setArrayType([], t3);
            else {
              t4 = B.JSArray_methods.sublist$2(t1, 0, i);
              extended = A._setArrayType(t4.slice(0), A._arrayInstanceType(t4));
            }
          B.JSArray_methods.addAll$1(extended, result);
        }
      }
      if (extended == null)
        return list;
      t1 = this._originals;
      return A.SelectorList$(this._trim$2(extended, t1.get$contains(t1)), list.span);
    },
    _extendList$2(list, extensions) {
      return this._extendList$3(list, extensions, null);
    },
    _extendComplex$3(complex, extensions, mediaQueryContext) {
      var isOriginal, t3, t4, t5, t6, t7, t8, t9, t10, extendedNotExpanded, i, component, extended, t11, t12, t13, t14, _box_0 = {},
        t1 = complex.leadingCombinators,
        t2 = t1.length;
      if (t2 > 1)
        return null;
      isOriginal = this._originals.contains$1(0, complex);
      for (t3 = complex.components, t4 = t3.length, t5 = type$.JSArray_List_ComplexSelector, t6 = complex.lineBreak, t7 = !t6, t8 = complex.span, t9 = type$.JSArray_ComplexSelector, t2 = t2 === 0, t10 = type$.JSArray_ComplexSelectorComponent, extendedNotExpanded = null, i = 0; i < t4; ++i) {
        component = t3[i];
        extended = this._extendCompound$4$inOriginal(component, extensions, mediaQueryContext, isOriginal);
        if (extended == null) {
          if (extendedNotExpanded != null)
            extendedNotExpanded.push(A._setArrayType([A.ComplexSelector$(B.List_empty1, A._setArrayType([component], t10), t8, t6)], t9));
        } else if (extendedNotExpanded != null)
          extendedNotExpanded.push(extended);
        else if (i !== 0) {
          t11 = A._arrayInstanceType(t3);
          t12 = new A.SubListIterable(t3, 0, i, t11._eval$1("SubListIterable<1>"));
          t12.SubListIterable$3(t3, 0, i, t11._precomputed1);
          extendedNotExpanded = A._setArrayType([A._setArrayType([A.ComplexSelector$(t1, t12, t8, t6)], t9), extended], t5);
        } else if (t2)
          extendedNotExpanded = A._setArrayType([extended], t5);
        else {
          t11 = A._setArrayType([], t9);
          for (t12 = J.get$iterator$ax(extended); t12.moveNext$0();) {
            t13 = t12.get$current(t12);
            t14 = t13.leadingCombinators;
            if (t14.length === 0 || B.C_ListEquality.equals$2(0, t1, t14)) {
              t14 = t13.components;
              t11.push(A.ComplexSelector$(t1, t14, t8, !t7 || t13.lineBreak));
            }
          }
          extendedNotExpanded = A._setArrayType([t11], t5);
        }
      }
      if (extendedNotExpanded == null)
        return null;
      _box_0.first = true;
      t1 = type$.ComplexSelector;
      t1 = J.expand$1$1$ax(A.paths(extendedNotExpanded, t1), new A.ExtensionStore__extendComplex_closure(_box_0, this, complex), t1);
      return A.List_List$of(t1, true, t1.$ti._eval$1("Iterable.E"));
    },
    _extendCompound$4$inOriginal(component, extensions, mediaQueryContext, inOriginal) {
      var t3, t4, t5, t6, t7, t8, t9, t10, t11, options, i, simple, extended, t12, result, compound, extenders, complex, extenderPaths, withCombinators, isOriginal, _this = this, _null = null,
        t1 = _this._mode,
        targetsUsed = t1 === B.ExtendMode_normal_normal || extensions.__js_helper$_length < 2 ? _null : A.LinkedHashSet_LinkedHashSet$_empty(type$.SimpleSelector),
        t2 = component.selector,
        simples = t2.components;
      for (t3 = simples.length, t4 = type$.JSArray_List_Extender, t5 = type$.JSArray_Extender, t6 = type$.CssValue_Combinator, t7 = type$.JSArray_ComplexSelectorComponent, t8 = A._arrayInstanceType(simples), t9 = t8._precomputed1, t8 = t8._eval$1("SubListIterable<1>"), t10 = component.span, t11 = type$.SimpleSelector, options = _null, i = 0; i < t3; ++i) {
        simple = simples[i];
        extended = _this._extendSimple$4(simple, extensions, mediaQueryContext, targetsUsed);
        if (extended == null) {
          if (options != null)
            options.push(A._setArrayType([_this._extenderForSimple$1(simple)], t5));
        } else {
          if (options == null) {
            options = A._setArrayType([], t4);
            if (i !== 0) {
              t12 = new A.SubListIterable(simples, 0, i, t8);
              t12.SubListIterable$3(simples, 0, i, t9);
              result = A.List_List$from(t12, false, t11);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t12 = result;
              compound = new A.CompoundSelector(t12, t10);
              if (t12.length === 0)
                A.throwExpression(A.ArgumentError$("components may not be empty.", _null));
              result = A.List_List$from(B.List_empty1, false, t6);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t12 = A.ComplexSelector$(B.List_empty1, A._setArrayType([new A.ComplexSelectorComponent(compound, result, t10)], t7), t10, false);
              _this._sourceSpecificityFor$1(compound);
              options.push(A._setArrayType([new A.Extender(t12, true)], t5));
            }
          }
          B.JSArray_methods.addAll$1(options, extended);
        }
      }
      if (options == null)
        return _null;
      if (targetsUsed != null && targetsUsed._collection$_length !== extensions.__js_helper$_length)
        return _null;
      if (options.length === 1) {
        extenders = options[0];
        t3 = true;
      } else {
        extenders = _null;
        t3 = false;
      }
      if (t3) {
        for (t1 = J.get$iterator$ax(extenders), t2 = component.combinators, t3 = type$.JSArray_ComplexSelector, result = _null; t1.moveNext$0();) {
          t4 = t1.get$current(t1);
          t4.assertCompatibleMediaContext$1(mediaQueryContext);
          complex = t4.selector.withAdditionalCombinators$1(t2);
          if (complex.accept$1(B.C__IsUselessVisitor))
            continue;
          if (result == null)
            result = A._setArrayType([], t3);
          result.push(complex);
        }
        return result;
      }
      extenderPaths = A.paths(options, type$.Extender);
      t3 = A._setArrayType([], type$.JSArray_ComplexSelector);
      t1 = t1 === B.ExtendMode_replace_replace;
      t4 = !t1;
      if (t4)
        t3.push(A.ComplexSelector$(B.List_empty1, A._setArrayType([new A.ComplexSelectorComponent(A.CompoundSelector$(J.expand$1$1$ax(J.get$first$ax(extenderPaths), new A.ExtensionStore__extendCompound_closure(), t11), t2.span), A.List_List$unmodifiable(component.combinators, t6), t10)], t7), t10, false));
      t2 = J.skip$1$ax(extenderPaths, t1 ? 0 : 1);
      t2 = new A.ListIterator(t2, t2.get$length(t2));
      t5 = component.combinators;
      t6 = A._instanceType(t2)._precomputed1;
      for (; t2.moveNext$0();) {
        t1 = t2.__internal$_current;
        extended = _this._unifyExtenders$3(t1 == null ? t6._as(t1) : t1, mediaQueryContext, t10);
        if (extended == null)
          continue;
        for (t1 = J.get$iterator$ax(extended); t1.moveNext$0();) {
          withCombinators = t1.get$current(t1).withAdditionalCombinators$1(t5);
          if (!withCombinators.accept$1(B.C__IsUselessVisitor))
            t3.push(withCombinators);
        }
      }
      isOriginal = new A.ExtensionStore__extendCompound_closure0();
      return _this._trim$2(t3, inOriginal && t4 ? new A.ExtensionStore__extendCompound_closure1(B.JSArray_methods.get$first(t3)) : isOriginal);
    },
    _unifyExtenders$3(extenders, mediaQueryContext, span) {
      var t1, t2, t3, originals, originalsLineBreak, t4, complexes, _null = null,
        toUnify = A.QueueList$(_null, type$.ComplexSelector);
      for (t1 = J.getInterceptor$ax(extenders), t2 = t1.get$iterator(extenders), t3 = type$.JSArray_SimpleSelector, originals = _null, originalsLineBreak = false; t2.moveNext$0();) {
        t4 = t2.get$current(t2);
        if (t4.isOriginal) {
          if (originals == null)
            originals = A._setArrayType([], t3);
          t4 = t4.selector;
          B.JSArray_methods.addAll$1(originals, B.JSArray_methods.get$last(t4.components).selector.components);
          originalsLineBreak = originalsLineBreak || t4.lineBreak;
        } else {
          t4 = t4.selector;
          if (t4.accept$1(B.C__IsUselessVisitor))
            return _null;
          else
            toUnify._queue_list$_add$1(t4);
        }
      }
      if (originals != null)
        toUnify.addFirst$1(A.ComplexSelector$(B.List_empty1, A._setArrayType([new A.ComplexSelectorComponent(A.CompoundSelector$(originals, span), A.List_List$unmodifiable(B.List_empty1, type$.CssValue_Combinator), span)], type$.JSArray_ComplexSelectorComponent), span, originalsLineBreak));
      complexes = A.unifyComplex(toUnify, span);
      if (complexes == null)
        return _null;
      for (t1 = t1.get$iterator(extenders); t1.moveNext$0();)
        t1.get$current(t1).assertCompatibleMediaContext$1(mediaQueryContext);
      return complexes;
    },
    _extendSimple$4(simple, extensions, mediaQueryContext, targetsUsed) {
      var _1_0, extended, t2,
        t1 = new A.ExtensionStore__extendSimple_withoutPseudo(this, extensions, targetsUsed);
      if (simple instanceof A.PseudoSelector && simple.selector != null && true) {
        _1_0 = this._extendPseudo$3(simple, extensions, mediaQueryContext);
        if (_1_0 != null) {
          extended = _1_0;
          t2 = true;
        } else {
          extended = null;
          t2 = false;
        }
        if (t2)
          return new A.MappedListIterable(extended, new A.ExtensionStore__extendSimple_closure(this, t1), A.instanceType(extended)._eval$1("MappedListIterable<1,List<Extender>>"));
      }
      return A.NullableExtension_andThen(t1.call$1(simple), new A.ExtensionStore__extendSimple_closure0());
    },
    _extenderForSimple$1(simple) {
      var t1 = simple.span;
      t1 = A.ComplexSelector$(B.List_empty1, A._setArrayType([new A.ComplexSelectorComponent(A.CompoundSelector$(A._setArrayType([simple], type$.JSArray_SimpleSelector), t1), A.List_List$unmodifiable(B.List_empty1, type$.CssValue_Combinator), t1)], type$.JSArray_ComplexSelectorComponent), t1, false);
      this._sourceSpecificity.$index(0, simple);
      return new A.Extender(t1, true);
    },
    _extendPseudo$3(pseudo, extensions, mediaQueryContext) {
      var extended, complexes, t1, result,
        selector = pseudo.selector;
      if (selector == null)
        throw A.wrapException(A.ArgumentError$("Selector " + pseudo.toString$0(0) + " must have a selector argument.", null));
      extended = this._extendList$3(selector, extensions, mediaQueryContext);
      if (extended === selector)
        return null;
      complexes = extended.components;
      t1 = pseudo.normalizedName === "not";
      if (t1 && !B.JSArray_methods.any$1(selector.components, new A.ExtensionStore__extendPseudo_closure()) && B.JSArray_methods.any$1(complexes, new A.ExtensionStore__extendPseudo_closure0()))
        complexes = new A.WhereIterable(complexes, new A.ExtensionStore__extendPseudo_closure1(), A._arrayInstanceType(complexes)._eval$1("WhereIterable<1>"));
      complexes = J.expand$1$1$ax(complexes, new A.ExtensionStore__extendPseudo_closure2(pseudo), type$.ComplexSelector);
      if (t1 && selector.components.length === 1) {
        t1 = A.MappedIterable_MappedIterable(complexes, new A.ExtensionStore__extendPseudo_closure3(pseudo, selector), complexes.$ti._eval$1("Iterable.E"), type$.PseudoSelector);
        result = A.List_List$of(t1, true, A._instanceType(t1)._eval$1("Iterable.E"));
        return result.length === 0 ? null : result;
      } else
        return A._setArrayType([pseudo.withSelector$1(A.SelectorList$(complexes, selector.span))], type$.JSArray_PseudoSelector);
    },
    _trim$2(selectors, isOriginal) {
      var result, i, t1, t2, numOriginals, _box_0, complex1, j, t3, t4, _i, t5, maxSpecificity;
      if (selectors.length > 100)
        return selectors;
      result = A.QueueList$(null, type$.ComplexSelector);
      $label0$0:
        for (i = selectors.length - 1, t1 = A._arrayInstanceType(selectors), t2 = t1._precomputed1, t1 = t1._eval$1("SubListIterable<1>"), numOriginals = 0; i >= 0; --i) {
          _box_0 = {};
          complex1 = selectors[i];
          if (isOriginal.call$1(complex1)) {
            for (j = 0; j < numOriginals; ++j)
              if (J.$eq$(result.$index(0, j), complex1)) {
                A.rotateSlice(result, 0, j + 1);
                continue $label0$0;
              }
            ++numOriginals;
            result.addFirst$1(complex1);
            continue $label0$0;
          }
          _box_0.maxSpecificity = 0;
          for (t3 = complex1.components, t4 = t3.length, _i = 0, t5 = 0; _i < t4; ++_i, t5 = maxSpecificity) {
            maxSpecificity = Math.max(t5, this._sourceSpecificityFor$1(t3[_i].selector));
            _box_0.maxSpecificity = maxSpecificity;
          }
          if (result.any$1(result, new A.ExtensionStore__trim_closure(_box_0, complex1)))
            continue $label0$0;
          t3 = new A.SubListIterable(selectors, 0, i, t1);
          t3.SubListIterable$3(selectors, 0, i, t2);
          if (t3.any$1(0, new A.ExtensionStore__trim_closure0(_box_0, complex1)))
            continue $label0$0;
          result.addFirst$1(complex1);
        }
      return result;
    },
    _sourceSpecificityFor$1(compound) {
      var t1, t2, t3, specificity, _i, t4;
      for (t1 = compound.components, t2 = t1.length, t3 = this._sourceSpecificity, specificity = 0, _i = 0; _i < t2; ++_i) {
        t4 = t3.$index(0, t1[_i]);
        specificity = Math.max(specificity, A.checkNum(t4 == null ? 0 : t4));
      }
      return specificity;
    },
    clone$0() {
      var t2, t3, t4, _this = this,
        t1 = type$.SimpleSelector,
        newSelectors = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Set_ModifiableBox_SelectorList),
        newMediaContexts = A.LinkedHashMap_LinkedHashMap$_empty(type$.ModifiableBox_SelectorList, type$.List_CssMediaQuery),
        oldToNewSelectors = new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_of_SelectorList_and_Box_SelectorList);
      _this._selectors.forEach$1(0, new A.ExtensionStore_clone_closure(_this, newSelectors, oldToNewSelectors, newMediaContexts));
      t2 = type$.Extension;
      t3 = A.copyMapOfMap(_this._extensions, t1, type$.ComplexSelector, t2);
      t2 = A.copyMapOfList(_this._extensionsByExtender, t1, t2);
      t1 = new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_SimpleSelector_int);
      t1.addAll$1(0, _this._sourceSpecificity);
      t4 = new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_ComplexSelector);
      t4.addAll$1(0, _this._originals);
      return new A._Record_2(new A.ExtensionStore(newSelectors, t3, t2, newMediaContexts, t1, t4, B.ExtendMode_normal_normal), oldToNewSelectors);
    },
    get$_extensions() {
      return this._extensions;
    },
    get$_sourceSpecificity() {
      return this._sourceSpecificity;
    }
  };
  A.ExtensionStore_extensionsWhereTarget_closure.prototype = {
    call$1(extension) {
      return !extension.isOptional;
    },
    $signature: 358
  };
  A.ExtensionStore__registerSelector_closure.prototype = {
    call$0() {
      return A.LinkedHashSet_LinkedHashSet$_empty(type$.ModifiableBox_SelectorList);
    },
    $signature: 365
  };
  A.ExtensionStore__registerSelector_closure0.prototype = {
    call$0() {
      return type$.PseudoSelector._as(this._0_0).selector;
    },
    $signature: 75
  };
  A.ExtensionStore_addExtension_closure.prototype = {
    call$0() {
      return A.LinkedHashMap_LinkedHashMap$_empty(type$.ComplexSelector, type$.Extension);
    },
    $signature: 117
  };
  A.ExtensionStore_addExtension_closure0.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_Extension);
    },
    $signature: 190
  };
  A.ExtensionStore_addExtension_closure1.prototype = {
    call$0() {
      return this.complex.get$specificity();
    },
    $signature: 3
  };
  A.ExtensionStore__simpleSelectors_closure.prototype = {
    call$0() {
      return type$.PseudoSelector._as(this._0_0).selector;
    },
    $signature: 75
  };
  A.ExtensionStore__extendExistingExtensions_closure.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_Extension);
    },
    $signature: 190
  };
  A.ExtensionStore__extendExistingExtensions_closure0.prototype = {
    call$0() {
      return A.LinkedHashMap_LinkedHashMap$_empty(type$.ComplexSelector, type$.Extension);
    },
    $signature: 117
  };
  A.ExtensionStore_addExtensions_closure.prototype = {
    call$0() {
      return A.LinkedHashMap_LinkedHashMap$_empty(type$.ComplexSelector, type$.Extension);
    },
    $signature: 117
  };
  A.ExtensionStore__extendComplex_closure.prototype = {
    call$1(path) {
      var t1 = this.complex;
      return J.map$1$1$ax(A.weave(path, t1.span, t1.lineBreak), new A.ExtensionStore__extendComplex__closure(this._box_0, this.$this, t1), type$.ComplexSelector);
    },
    $signature: 378
  };
  A.ExtensionStore__extendComplex__closure.prototype = {
    call$1(outputComplex) {
      var _this = this,
        t1 = _this._box_0;
      if (t1.first && _this.$this._originals.contains$1(0, _this.complex))
        _this.$this._originals.add$1(0, outputComplex);
      t1.first = false;
      return outputComplex;
    },
    $signature: 59
  };
  A.ExtensionStore__extendCompound_closure.prototype = {
    call$1(extender) {
      return B.JSArray_methods.get$last(extender.selector.components).selector.components;
    },
    $signature: 384
  };
  A.ExtensionStore__extendCompound_closure0.prototype = {
    call$1(_) {
      return false;
    },
    $signature: 19
  };
  A.ExtensionStore__extendCompound_closure1.prototype = {
    call$1(complex) {
      return complex.$eq(0, this.original);
    },
    $signature: 19
  };
  A.ExtensionStore__extendSimple_withoutPseudo.prototype = {
    call$1(simple) {
      var t1, t2,
        extensionsForSimple = this.extensions.$index(0, simple);
      if (extensionsForSimple == null)
        return null;
      t1 = this.targetsUsed;
      if (t1 != null)
        t1.add$1(0, simple);
      t1 = A._setArrayType([], type$.JSArray_Extender);
      t2 = this.$this;
      if (t2._mode !== B.ExtendMode_replace_replace)
        t1.push(t2._extenderForSimple$1(simple));
      for (t2 = extensionsForSimple.get$values(extensionsForSimple), t2 = t2.get$iterator(t2); t2.moveNext$0();)
        t1.push(t2.get$current(t2).extender);
      return t1;
    },
    $signature: 401
  };
  A.ExtensionStore__extendSimple_closure.prototype = {
    call$1(pseudo) {
      var t1 = this.withoutPseudo.call$1(pseudo);
      return t1 == null ? A._setArrayType([this.$this._extenderForSimple$1(pseudo)], type$.JSArray_Extender) : t1;
    },
    $signature: 402
  };
  A.ExtensionStore__extendSimple_closure0.prototype = {
    call$1(result) {
      return A._setArrayType([result], type$.JSArray_List_Extender);
    },
    $signature: 403
  };
  A.ExtensionStore__extendPseudo_closure.prototype = {
    call$1(complex) {
      return complex.components.length > 1;
    },
    $signature: 19
  };
  A.ExtensionStore__extendPseudo_closure0.prototype = {
    call$1(complex) {
      return complex.components.length === 1;
    },
    $signature: 19
  };
  A.ExtensionStore__extendPseudo_closure1.prototype = {
    call$1(complex) {
      return complex.components.length <= 1;
    },
    $signature: 19
  };
  A.ExtensionStore__extendPseudo_closure2.prototype = {
    call$1(complex) {
      var innerPseudo, innerSelector,
        t1 = complex.get$singleCompound();
      if (t1 == null)
        innerPseudo = null;
      else {
        t1 = t1.components;
        innerPseudo = t1.length === 1 ? B.JSArray_methods.get$first(t1) : null;
      }
      if (!(innerPseudo instanceof A.PseudoSelector))
        return A._setArrayType([complex], type$.JSArray_ComplexSelector);
      innerSelector = innerPseudo.selector;
      if (innerSelector == null)
        return A._setArrayType([complex], type$.JSArray_ComplexSelector);
      t1 = this.pseudo;
      switch (t1.normalizedName) {
        case "not":
          if (!B.Set_aAXJu.contains$1(0, innerPseudo.normalizedName))
            return A._setArrayType([], type$.JSArray_ComplexSelector);
          return innerSelector.components;
        case "is":
        case "matches":
        case "where":
        case "any":
        case "current":
        case "nth-child":
        case "nth-last-child":
          if (innerPseudo.name !== t1.name)
            return A._setArrayType([], type$.JSArray_ComplexSelector);
          if (innerPseudo.argument != t1.argument)
            return A._setArrayType([], type$.JSArray_ComplexSelector);
          return innerSelector.components;
        case "has":
        case "host":
        case "host-context":
        case "slotted":
          return A._setArrayType([complex], type$.JSArray_ComplexSelector);
        default:
          return A._setArrayType([], type$.JSArray_ComplexSelector);
      }
    },
    $signature: 404
  };
  A.ExtensionStore__extendPseudo_closure3.prototype = {
    call$1(complex) {
      return this.pseudo.withSelector$1(A.SelectorList$(A._setArrayType([complex], type$.JSArray_ComplexSelector), this.selector.span));
    },
    $signature: 405
  };
  A.ExtensionStore__trim_closure.prototype = {
    call$1(complex2) {
      return complex2.get$specificity() >= this._box_0.maxSpecificity && complex2.isSuperselector$1(this.complex1);
    },
    $signature: 19
  };
  A.ExtensionStore__trim_closure0.prototype = {
    call$1(complex2) {
      return complex2.get$specificity() >= this._box_0.maxSpecificity && complex2.isSuperselector$1(this.complex1);
    },
    $signature: 19
  };
  A.ExtensionStore_clone_closure.prototype = {
    call$2(simple, selectors) {
      var t2, t3, t4, t5, t6, t7, newSelector, _0_0, mediaContext, _this = this,
        t1 = type$.ModifiableBox_SelectorList,
        newSelectorSet = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      _this.newSelectors.$indexSet(0, simple, newSelectorSet);
      for (t2 = selectors.get$iterator(selectors), t3 = _this.oldToNewSelectors, t4 = type$.Box_SelectorList, t5 = _this.$this._mediaContexts, t6 = _this.newMediaContexts; t2.moveNext$0();) {
        t7 = t2.get$current(t2);
        newSelector = new A.ModifiableBox(t7.value, t1);
        newSelectorSet.add$1(0, newSelector);
        t3.$indexSet(0, t7.value, new A.Box(newSelector, t4));
        _0_0 = t5.$index(0, t7);
        if (_0_0 != null) {
          mediaContext = _0_0;
          t7 = true;
        } else {
          mediaContext = null;
          t7 = false;
        }
        if (t7)
          t6.$indexSet(0, newSelector, mediaContext);
      }
    },
    $signature: 410
  };
  A.unifyComplex_closure.prototype = {
    call$0() {
      return this._0_0.leadingCombinators;
    },
    $signature: 193
  };
  A.unifyComplex_closure0.prototype = {
    call$0() {
      return this._1_0.combinators;
    },
    $signature: 193
  };
  A.unifyComplex_closure1.prototype = {
    call$1(complex) {
      return complex.lineBreak;
    },
    $signature: 19
  };
  A._namespaceAndName_closure.prototype = {
    call$0() {
      return type$.TypeSelector._as(this._0_0).name;
    },
    $signature: 413
  };
  A._weaveParents_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 195
  };
  A._weaveParents_closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 195
  };
  A._weaveParents_closure1.prototype = {
    call$2(group1, group2) {
      var t1, unified;
      if (B.C_ListEquality.equals$2(0, group1, group2))
        return group1;
      if (A._complexIsParentSuperselector(group1, group2))
        return group2;
      if (A._complexIsParentSuperselector(group2, group1))
        return group1;
      if (!A._mustUnify(group1, group2))
        return null;
      t1 = this.span;
      unified = A.unifyComplex(A._setArrayType([A.ComplexSelector$(B.List_empty1, group1, t1, false), A.ComplexSelector$(B.List_empty1, group2, t1, false)], type$.JSArray_ComplexSelector), t1);
      if (unified == null)
        t1 = null;
      else {
        t1 = A.IterableExtension_get_singleOrNull(unified);
        t1 = t1 == null ? null : t1.components;
      }
      return t1;
    },
    $signature: 417
  };
  A._weaveParents_closure2.prototype = {
    call$1(sequence) {
      return A._complexIsParentSuperselector(sequence.get$first(sequence), this.group);
    },
    $signature: 196
  };
  A._weaveParents_closure3.prototype = {
    call$1(sequence) {
      return sequence.get$length(sequence) === 0;
    },
    $signature: 196
  };
  A._weaveParents_closure4.prototype = {
    call$1(choice) {
      return J.get$isNotEmpty$asx(choice);
    },
    $signature: 430
  };
  A._mergeLeadingCombinators_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 200
  };
  A._mergeLeadingCombinators_closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 200
  };
  A._mergeLeadingCombinators_closure1.prototype = {
    call$0() {
      var t1 = this._0_1._readFinal$0();
      return J.get$length$asx(t1 == null ? type$.List_CssValue_Combinator._as(t1) : t1);
    },
    $signature: 3
  };
  A._mergeLeadingCombinators_closure2.prototype = {
    call$0() {
      var t1 = this._0_4._readFinal$0();
      return J.get$length$asx(t1 == null ? type$.List_CssValue_Combinator._as(t1) : t1);
    },
    $signature: 3
  };
  A._mergeTrailingCombinators_closure.prototype = {
    call$0() {
      var t1 = this._0_0;
      return t1.get$length(t1);
    },
    $signature: 3
  };
  A._mergeTrailingCombinators_closure0.prototype = {
    call$0() {
      var t1 = this._1_0;
      return t1.get$length(t1);
    },
    $signature: 3
  };
  A._mergeTrailingCombinators_closure1.prototype = {
    call$0() {
      return this._4_0._values[0];
    },
    $signature: 203
  };
  A._mergeTrailingCombinators_closure2.prototype = {
    call$0() {
      return B.Combinator_Htt === this._4_1._readFinal$0();
    },
    $signature: 1
  };
  A._mergeTrailingCombinators_closure3.prototype = {
    call$0() {
      return this._4_0._values[1];
    },
    $signature: 203
  };
  A._mergeTrailingCombinators_closure4.prototype = {
    call$0() {
      return B.Combinator_Htt === this._4_4._readFinal$0();
    },
    $signature: 1
  };
  A._mergeTrailingCombinators_closure6.prototype = {
    call$0() {
      return this._4_0._values[2];
    },
    $signature: 204
  };
  A._mergeTrailingCombinators_closure7.prototype = {
    call$0() {
      return this._4_0._values[3];
    },
    $signature: 204
  };
  A._mergeTrailingCombinators_closure5.prototype = {
    call$0() {
      return B.Combinator_4QF === this._4_4._readFinal$0();
    },
    $signature: 1
  };
  A._mergeTrailingCombinators_closure8.prototype = {
    call$0() {
      return B.Combinator_4QF === this._4_1._readFinal$0();
    },
    $signature: 1
  };
  A._mustUnify_closure.prototype = {
    call$1(component) {
      return B.JSArray_methods.any$1(component.selector.components, new A._mustUnify__closure(this.uniqueSelectors));
    },
    $signature: 53
  };
  A._mustUnify__closure.prototype = {
    call$1(simple) {
      var t1;
      if (!(simple instanceof A.IDSelector))
        t1 = simple instanceof A.PseudoSelector && !simple.isClass;
      else
        t1 = true;
      return t1 && this.uniqueSelectors.contains$1(0, simple);
    },
    $signature: 16
  };
  A._chunks_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature() {
      return this.T._eval$1("List<0>()");
    }
  };
  A._chunks_closure0.prototype = {
    call$0() {
      return J.get$length$asx(this._0_1._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A._chunks_closure1.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature() {
      return this.T._eval$1("List<0>()");
    }
  };
  A._chunks_closure2.prototype = {
    call$0() {
      return J.get$length$asx(this._0_5._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.paths_closure.prototype = {
    call$2(paths, choice) {
      var t1 = this.T;
      t1 = J.expand$1$1$ax(choice, new A.paths__closure(paths, t1), t1._eval$1("List<0>"));
      return A.List_List$of(t1, true, t1.$ti._eval$1("Iterable.E"));
    },
    $signature() {
      return this.T._eval$1("List<List<0>>(List<List<0>>,List<0>)");
    }
  };
  A.paths__closure.prototype = {
    call$1(option) {
      var t1 = this.T;
      return J.map$1$1$ax(this.paths, new A.paths___closure(option, t1), t1._eval$1("List<0>"));
    },
    $signature() {
      return this.T._eval$1("Iterable<List<0>>(0)");
    }
  };
  A.paths___closure.prototype = {
    call$1(path) {
      var t1 = A.List_List$of(path, true, this.T);
      t1.push(this.option);
      return t1;
    },
    $signature() {
      return this.T._eval$1("List<0>(List<0>)");
    }
  };
  A.listIsSuperselector_closure.prototype = {
    call$1(complex1) {
      return B.JSArray_methods.any$1(this.list1, new A.listIsSuperselector__closure(complex1));
    },
    $signature: 19
  };
  A.listIsSuperselector__closure.prototype = {
    call$1(complex2) {
      return complex2.isSuperselector$1(this.complex1);
    },
    $signature: 19
  };
  A.complexIsSuperselector_closure.prototype = {
    call$1($parent) {
      return $parent.combinators.length > 1;
    },
    $signature: 53
  };
  A.complexIsSuperselector_closure0.prototype = {
    call$1(component) {
      return A._isSupercombinator(this.combinator1, A.IterableExtension_get_firstOrNull(component.combinators));
    },
    $signature: 53
  };
  A._compatibleWithPreviousCombinator_closure.prototype = {
    call$1(component) {
      var t1 = component.combinators,
        t2 = A.IterableExtension_get_firstOrNull(t1);
      if (!J.$eq$(t2 == null ? null : t2.value, B.Combinator_Htt)) {
        t1 = A.IterableExtension_get_firstOrNull(t1);
        t1 = J.$eq$(t1 == null ? null : t1.value, B.Combinator_4QF);
      } else
        t1 = true;
      return t1;
    },
    $signature: 53
  };
  A.compoundIsSuperselector_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 207
  };
  A.compoundIsSuperselector_closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 207
  };
  A._selectorPseudoIsSuperselector_closure.prototype = {
    call$1(selector2) {
      return A.listIsSuperselector(this.selector1.components, selector2.components);
    },
    $signature: 73
  };
  A._selectorPseudoIsSuperselector_closure0.prototype = {
    call$1(complex1) {
      var t1, t2;
      if (complex1.leadingCombinators.length === 0) {
        t1 = A._setArrayType([], type$.JSArray_ComplexSelectorComponent);
        t2 = this.parents;
        if (t2 != null)
          B.JSArray_methods.addAll$1(t1, t2);
        t2 = this.compound2;
        t1.push(new A.ComplexSelectorComponent(t2, A.List_List$unmodifiable(B.List_empty1, type$.CssValue_Combinator), t2.span));
        t1 = A.complexIsSuperselector(complex1.components, t1);
      } else
        t1 = false;
      return t1;
    },
    $signature: 19
  };
  A._selectorPseudoIsSuperselector_closure1.prototype = {
    call$1(selector2) {
      return A.listIsSuperselector(this.selector1.components, selector2.components);
    },
    $signature: 73
  };
  A._selectorPseudoIsSuperselector_closure2.prototype = {
    call$1(selector2) {
      return A.listIsSuperselector(this.selector1.components, selector2.components);
    },
    $signature: 73
  };
  A._selectorPseudoIsSuperselector_closure3.prototype = {
    call$1(complex) {
      if (complex.accept$1(B._IsBogusVisitor_true))
        return false;
      return B.JSArray_methods.any$1(this.compound2.components, new A._selectorPseudoIsSuperselector__closure(complex, this.pseudo1));
    },
    $signature: 19
  };
  A._selectorPseudoIsSuperselector__closure.prototype = {
    call$1(simple2) {
      var t1, selector2, _this = this,
        _0_4 = A._InitializedCell$(new A._selectorPseudoIsSuperselector___closure(simple2));
      $label0$1: {
        if (simple2 instanceof A.TypeSelector) {
          t1 = B.JSArray_methods.any$1(B.JSArray_methods.get$last(_this.complex.components).selector.components, new A._selectorPseudoIsSuperselector___closure0(simple2));
          break $label0$1;
        }
        if (simple2 instanceof A.IDSelector) {
          t1 = B.JSArray_methods.any$1(B.JSArray_methods.get$last(_this.complex.components).selector.components, new A._selectorPseudoIsSuperselector___closure1(simple2));
          break $label0$1;
        }
        if (simple2 instanceof A.PseudoSelector) {
          if (_0_4._readFinal$0() != null) {
            selector2 = _0_4._readFinal$0();
            t1 = true;
          } else {
            selector2 = null;
            t1 = false;
          }
          t1 = t1 && simple2.name === _this.pseudo1.name;
        } else {
          selector2 = null;
          t1 = false;
        }
        if (t1) {
          t1 = A.listIsSuperselector(selector2.components, A._setArrayType([_this.complex], type$.JSArray_ComplexSelector));
          break $label0$1;
        }
        t1 = false;
        break $label0$1;
      }
      return t1;
    },
    $signature: 16
  };
  A._selectorPseudoIsSuperselector___closure0.prototype = {
    call$1(simple1) {
      var t1;
      if (simple1 instanceof A.TypeSelector) {
        t1 = this.simple2;
        t1 = !(t1 instanceof A.TypeSelector && t1.name.$eq(0, simple1.name));
      } else
        t1 = false;
      return t1;
    },
    $signature: 16
  };
  A._selectorPseudoIsSuperselector___closure1.prototype = {
    call$1(simple1) {
      var t1;
      if (simple1 instanceof A.IDSelector) {
        t1 = this.simple2;
        t1 = !(t1 instanceof A.IDSelector && t1.name === simple1.name);
      } else
        t1 = false;
      return t1;
    },
    $signature: 16
  };
  A._selectorPseudoIsSuperselector___closure.prototype = {
    call$0() {
      return type$.PseudoSelector._as(this._0_0).selector;
    },
    $signature: 75
  };
  A._selectorPseudoIsSuperselector_closure4.prototype = {
    call$1(selector2) {
      var t1 = B.C_ListEquality.equals$2(0, this.selector1.components, selector2.components);
      return t1;
    },
    $signature: 73
  };
  A._selectorPseudoIsSuperselector_closure5.prototype = {
    call$1(pseudo2) {
      var t1, selector2;
      if (!(pseudo2 instanceof A.PseudoSelector))
        return false;
      t1 = this.pseudo1;
      if (pseudo2.name !== t1.name)
        return false;
      if (pseudo2.argument != t1.argument)
        return false;
      selector2 = pseudo2.selector;
      if (selector2 == null)
        return false;
      return A.listIsSuperselector(this.selector1.components, selector2.components);
    },
    $signature: 16
  };
  A._selectorPseudoArgs_closure.prototype = {
    call$1(pseudo) {
      return pseudo.isClass === this.isClass && pseudo.name === this.name;
    },
    $signature: 445
  };
  A._selectorPseudoArgs_closure0.prototype = {
    call$1(pseudo) {
      return pseudo.selector;
    },
    $signature: 453
  };
  A.MergedExtension.prototype = {
    unmerge$0() {
      return new A._SyncStarIterable(this.unmerge$body$MergedExtension(), type$._SyncStarIterable_Extension);
    },
    unmerge$body$MergedExtension() {
      var $async$self = this;
      return function() {
        var $async$goto = 0, $async$handler = 1, $async$currentError, right, left;
        return function $async$unmerge$0($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                left = $async$self.left;
                $async$goto = left instanceof A.MergedExtension ? 2 : 4;
                break;
              case 2:
                // then
                $async$goto = 5;
                return $async$iterator._yieldStar$1(left.unmerge$0());
              case 5:
                // after yield
                // goto join
                $async$goto = 3;
                break;
              case 4:
                // else
                $async$goto = 6;
                return $async$iterator._async$_current = left, 1;
              case 6:
                // after yield
              case 3:
                // join
                right = $async$self.right;
                $async$goto = right instanceof A.MergedExtension ? 7 : 9;
                break;
              case 7:
                // then
                $async$goto = 10;
                return $async$iterator._yieldStar$1(right.unmerge$0());
              case 10:
                // after yield
                // goto join
                $async$goto = 8;
                break;
              case 9:
                // else
                $async$goto = 11;
                return $async$iterator._async$_current = right, 1;
              case 11:
                // after yield
              case 8:
                // join
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    }
  };
  A.ExtendMode.prototype = {
    _enumToString$0() {
      return "ExtendMode." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.globalFunctions_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return t1.$index($arguments, 0).get$isTruthy() ? t1.$index($arguments, 1) : t1.$index($arguments, 2);
    },
    $signature: 6
  };
  A.global_closure0.prototype = {
    call$1($arguments) {
      return A._rgb("rgb", $arguments);
    },
    $signature: 6
  };
  A.global_closure1.prototype = {
    call$1($arguments) {
      return A._rgb("rgb", $arguments);
    },
    $signature: 6
  };
  A.global_closure2.prototype = {
    call$1($arguments) {
      return A._rgbTwoArg("rgb", $arguments);
    },
    $signature: 6
  };
  A.global_closure3.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels("rgb", A._setArrayType(["$red", "$green", "$blue"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString ? parsed : A._rgb("rgb", type$.List_Value._as(parsed));
    },
    $signature: 6
  };
  A.global_closure4.prototype = {
    call$1($arguments) {
      return A._rgb("rgba", $arguments);
    },
    $signature: 6
  };
  A.global_closure5.prototype = {
    call$1($arguments) {
      return A._rgb("rgba", $arguments);
    },
    $signature: 6
  };
  A.global_closure6.prototype = {
    call$1($arguments) {
      return A._rgbTwoArg("rgba", $arguments);
    },
    $signature: 6
  };
  A.global_closure7.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels("rgba", A._setArrayType(["$red", "$green", "$blue"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString ? parsed : A._rgb("rgba", type$.List_Value._as(parsed));
    },
    $signature: 6
  };
  A.global_closure8.prototype = {
    call$1($arguments) {
      var color, t2,
        t1 = J.getInterceptor$asx($arguments),
        weight = t1.$index($arguments, 1).assertNumber$1("weight");
      if (t1.$index($arguments, 0) instanceof A.SassNumber || t1.$index($arguments, 0).get$isSpecialNumber()) {
        if (weight._number$_value !== 100 || !weight.hasUnit$1("%"))
          throw A.wrapException(string$.Only_oa);
        return A._functionString("invert", t1.take$1($arguments, 1));
      }
      color = t1.$index($arguments, 0).assertColor$1("color");
      t1 = color.get$red(color);
      t2 = color.get$green(color);
      return A._mixColors(color.changeRgb$3$blue$green$red(255 - color.get$blue(color), 255 - t2, 255 - t1), color, weight);
    },
    $signature: 6
  };
  A.global_closure9.prototype = {
    call$1($arguments) {
      return A._hsl("hsl", $arguments);
    },
    $signature: 6
  };
  A.global_closure10.prototype = {
    call$1($arguments) {
      return A._hsl("hsl", $arguments);
    },
    $signature: 6
  };
  A.global_closure11.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0).get$isVar() || t1.$index($arguments, 1).get$isVar())
        return A._functionString("hsl", $arguments);
      else
        throw A.wrapException(A.SassScriptException$("Missing argument $lightness.", null));
    },
    $signature: 20
  };
  A.global_closure12.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels("hsl", A._setArrayType(["$hue", "$saturation", "$lightness"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString ? parsed : A._hsl("hsl", type$.List_Value._as(parsed));
    },
    $signature: 6
  };
  A.global_closure13.prototype = {
    call$1($arguments) {
      return A._hsl("hsla", $arguments);
    },
    $signature: 6
  };
  A.global_closure14.prototype = {
    call$1($arguments) {
      return A._hsl("hsla", $arguments);
    },
    $signature: 6
  };
  A.global_closure15.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0).get$isVar() || t1.$index($arguments, 1).get$isVar())
        return A._functionString("hsla", $arguments);
      else
        throw A.wrapException(A.SassScriptException$("Missing argument $lightness.", null));
    },
    $signature: 20
  };
  A.global_closure16.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels("hsla", A._setArrayType(["$hue", "$saturation", "$lightness"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString ? parsed : A._hsl("hsla", type$.List_Value._as(parsed));
    },
    $signature: 6
  };
  A.global_closure17.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber || t1.$index($arguments, 0).get$isSpecialNumber())
        return A._functionString("grayscale", $arguments);
      return t1.$index($arguments, 0).assertColor$1("color").changeHsl$1$saturation(0);
    },
    $signature: 6
  };
  A.global_closure18.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        degrees = A._angleValue(t1.$index($arguments, 1), "degrees");
      return color.changeHsl$1$hue(color.get$hue(color) + degrees);
    },
    $signature: 35
  };
  A.global_closure19.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$lightness(B.JSNumber_methods.clamp$2(color.get$lightness(color) + amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 35
  };
  A.global_closure20.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$lightness(B.JSNumber_methods.clamp$2(color.get$lightness(color) - amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 35
  };
  A.global_closure21.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber || t1.$index($arguments, 0).get$isSpecialNumber())
        return A._functionString("saturate", $arguments);
      return new A.SassString("saturate(" + A.serializeValue(t1.$index($arguments, 0).assertNumber$1("amount"), false, true) + ")", false);
    },
    $signature: 20
  };
  A.global_closure22.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$saturation(B.JSNumber_methods.clamp$2(color.get$saturation(color) + amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 35
  };
  A.global_closure23.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$saturation(B.JSNumber_methods.clamp$2(color.get$saturation(color) - amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 35
  };
  A.global_closure24.prototype = {
    call$1($arguments) {
      var argument = J.$index$asx($arguments, 0);
      if (argument instanceof A.SassString && !argument._hasQuotes && B.JSString_methods.contains$1(argument._string$_text, $.$get$_microsoftFilterStart()))
        return A._functionString("alpha", $arguments);
      return A.SassNumber_SassNumber(argument.assertColor$1("color")._alpha, null);
    },
    $signature: 6
  };
  A.global_closure25.prototype = {
    call$1($arguments) {
      var t1,
        argList = J.$index$asx($arguments, 0).get$asList();
      if (argList.length !== 0 && B.JSArray_methods.every$1(argList, new A.global__closure()))
        return A._functionString("alpha", $arguments);
      t1 = argList.length;
      if (t1 === 0)
        throw A.wrapException(A.SassScriptException$("Missing argument $color.", null));
      else
        throw A.wrapException(A.SassScriptException$("Only 1 argument allowed, but " + t1 + " were passed.", null));
    },
    $signature: 20
  };
  A.global__closure.prototype = {
    call$1(argument) {
      return argument instanceof A.SassString && !argument._hasQuotes && B.JSString_methods.contains$1(argument._string$_text, $.$get$_microsoftFilterStart());
    },
    $signature: 79
  };
  A.global_closure26.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber || t1.$index($arguments, 0).get$isSpecialNumber())
        return A._functionString("opacity", $arguments);
      return A.SassNumber_SassNumber(t1.$index($arguments, 0).assertColor$1("color")._alpha, null);
    },
    $signature: 6
  };
  A.module_closure1.prototype = {
    call$1($arguments) {
      var result, t2, color,
        t1 = J.getInterceptor$asx($arguments),
        weight = t1.$index($arguments, 1).assertNumber$1("weight");
      if (t1.$index($arguments, 0) instanceof A.SassNumber) {
        if (weight._number$_value !== 100 || !weight.hasUnit$1("%"))
          throw A.wrapException(string$.Only_oa);
        result = A._functionString("invert", t1.take$1($arguments, 1));
        t1 = A.S(t1.$index($arguments, 0));
        t2 = result.toString$0(0);
        A.EvaluationContext_current().warn$2(0, "Passing a number (" + t1 + string$.x29x20to_ci + t2, B.Deprecation_s4m);
        return result;
      }
      color = t1.$index($arguments, 0).assertColor$1("color");
      t1 = color.get$red(color);
      t2 = color.get$green(color);
      return A._mixColors(color.changeRgb$3$blue$green$red(255 - color.get$blue(color), 255 - t2, 255 - t1), color, weight);
    },
    $signature: 6
  };
  A.module_closure2.prototype = {
    call$1($arguments) {
      var result, t2,
        t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber) {
        result = A._functionString("grayscale", t1.take$1($arguments, 1));
        t1 = A.S(t1.$index($arguments, 0));
        t2 = result.toString$0(0);
        A.EvaluationContext_current().warn$2(0, "Passing a number (" + t1 + string$.x29x20to_cg + t2, B.Deprecation_s4m);
        return result;
      }
      return t1.$index($arguments, 0).assertColor$1("color").changeHsl$1$saturation(0);
    },
    $signature: 6
  };
  A.module_closure3.prototype = {
    call$1($arguments) {
      return A._hwb($arguments);
    },
    $signature: 6
  };
  A.module_closure4.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels("hwb", A._setArrayType(["$hue", "$whiteness", "$blackness"], type$.JSArray_String), J.get$first$ax($arguments));
      if (parsed instanceof A.SassString)
        throw A.wrapException(A.SassScriptException$('Expected numeric channels, got "' + parsed.toString$0(0) + '".', null));
      else
        return A._hwb(type$.List_Value._as(parsed));
    },
    $signature: 6
  };
  A.module_closure5.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$whiteness(t1), "%");
    },
    $signature: 13
  };
  A.module_closure6.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$blackness(t1), "%");
    },
    $signature: 13
  };
  A.module_closure7.prototype = {
    call$1($arguments) {
      var result, t1,
        argument = J.$index$asx($arguments, 0);
      if (argument instanceof A.SassString && !argument._hasQuotes && B.JSString_methods.contains$1(argument._string$_text, $.$get$_microsoftFilterStart())) {
        result = A._functionString("alpha", $arguments);
        t1 = result.toString$0(0);
        A.EvaluationContext_current().warn$2(0, string$.Using_c + t1, B.Deprecation_s4m);
        return result;
      }
      return A.SassNumber_SassNumber(argument.assertColor$1("color")._alpha, null);
    },
    $signature: 6
  };
  A.module_closure8.prototype = {
    call$1($arguments) {
      var result,
        t1 = J.getInterceptor$asx($arguments);
      if (B.JSArray_methods.every$1(t1.$index($arguments, 0).get$asList(), new A.module__closure1())) {
        result = A._functionString("alpha", $arguments);
        t1 = result.toString$0(0);
        A.EvaluationContext_current().warn$2(0, string$.Using_c + t1, B.Deprecation_s4m);
        return result;
      }
      throw A.wrapException(A.SassScriptException$("Only 1 argument allowed, but " + t1.get$length($arguments) + " were passed.", null));
    },
    $signature: 20
  };
  A.module__closure1.prototype = {
    call$1(argument) {
      return argument instanceof A.SassString && !argument._hasQuotes && B.JSString_methods.contains$1(argument._string$_text, $.$get$_microsoftFilterStart());
    },
    $signature: 79
  };
  A.module_closure9.prototype = {
    call$1($arguments) {
      var result, t2,
        t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber) {
        result = A._functionString("opacity", $arguments);
        t1 = A.S(t1.$index($arguments, 0));
        t2 = result.toString$0(0);
        A.EvaluationContext_current().warn$2(0, "Passing a number (" + t1 + string$.x20to_co + t2, B.Deprecation_s4m);
        return result;
      }
      return A.SassNumber_SassNumber(t1.$index($arguments, 0).assertColor$1("color")._alpha, null);
    },
    $signature: 6
  };
  A._red_closure.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$red(t1), null);
    },
    $signature: 13
  };
  A._green_closure.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$green(t1), null);
    },
    $signature: 13
  };
  A._blue_closure.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$blue(t1), null);
    },
    $signature: 13
  };
  A._mix_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A._mixColors(t1.$index($arguments, 0).assertColor$1("color1"), t1.$index($arguments, 1).assertColor$1("color2"), t1.$index($arguments, 2).assertNumber$1("weight"));
    },
    $signature: 35
  };
  A._hue_closure.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$hue(t1), "deg");
    },
    $signature: 13
  };
  A._saturation_closure.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$saturation(t1), "%");
    },
    $signature: 13
  };
  A._lightness_closure.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber(t1.get$lightness(t1), "%");
    },
    $signature: 13
  };
  A._complement_closure.prototype = {
    call$1($arguments) {
      var color = J.$index$asx($arguments, 0).assertColor$1("color");
      return color.changeHsl$1$hue(color.get$hue(color) + 180);
    },
    $signature: 35
  };
  A._adjust_closure.prototype = {
    call$1($arguments) {
      return A._updateComponents($arguments, true, false, false);
    },
    $signature: 35
  };
  A._scale_closure.prototype = {
    call$1($arguments) {
      return A._updateComponents($arguments, false, false, true);
    },
    $signature: 35
  };
  A._change_closure.prototype = {
    call$1($arguments) {
      return A._updateComponents($arguments, false, true, false);
    },
    $signature: 35
  };
  A._ieHexStr_closure.prototype = {
    call$1($arguments) {
      var color = J.$index$asx($arguments, 0).assertColor$1("color"),
        t1 = new A._ieHexStr_closure_hexString();
      return new A.SassString("#" + A.S(t1.call$1(A.fuzzyRound(color._alpha * 255))) + A.S(t1.call$1(color.get$red(color))) + A.S(t1.call$1(color.get$green(color))) + A.S(t1.call$1(color.get$blue(color))), false);
    },
    $signature: 20
  };
  A._ieHexStr_closure_hexString.prototype = {
    call$1(component) {
      return B.JSString_methods.padLeft$2(B.JSInt_methods.toRadixString$1(component, 16), 2, "0").toUpperCase();
    },
    $signature: 223
  };
  A._updateComponents_getParam.prototype = {
    call$5$assertPercent$checkPercent$checkUnitless($name, max, assertPercent, checkPercent, checkUnitless) {
      var t2, t3, t4, _this = this,
        t1 = _this.keywords.remove$1(0, $name),
        number = t1 == null ? null : t1.assertNumber$1($name);
      if (number == null)
        return null;
      t1 = _this.scale;
      t2 = !t1;
      if (t2 && checkUnitless)
        if (number.get$hasUnits()) {
          t3 = number.get$unitString();
          t4 = number.unitSuggestion$1($name);
          A.EvaluationContext_current().warn$2(0, "$" + $name + ": Passing a number with unit " + t3 + string$.x20is_de + t4 + string$.x0a_Morex3a, B.Deprecation_8WR);
        }
      if (t2 && checkPercent)
        A._checkPercent(number, $name);
      if (!t2 || assertPercent)
        number.assertUnit$2("%", $name);
      if (t1)
        max = 100;
      if (!t2 || assertPercent)
        t1 = number.valueInRange$3(_this.change ? 0 : -max, max, $name);
      else {
        t1 = _this.change ? 0 : -max;
        t1 = number.valueInRangeWithUnit$4(t1, max, $name, checkPercent ? "%" : "");
      }
      return t1;
    },
    call$2($name, max) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, false, false, false);
    },
    call$3$checkUnitless($name, max, checkUnitless) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, false, false, checkUnitless);
    },
    call$3$checkPercent($name, max, checkPercent) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, false, checkPercent, false);
    },
    call$3$assertPercent($name, max, assertPercent) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, assertPercent, false, false);
    },
    $signature: 227
  };
  A._updateComponents_closure.prototype = {
    call$1(hue) {
      return A._angleValue(hue, "hue");
    },
    $signature: 115
  };
  A._updateComponents_closure0.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._updateComponents_updateValue.prototype = {
    call$3(current, param, max) {
      var t1;
      if (param == null)
        return current;
      if (this.change)
        return param;
      if (this.adjust)
        return B.JSNumber_methods.clamp$2(current + param, 0, max);
      t1 = param > 0 ? max - current : current;
      return current + t1 * (param / 100);
    },
    $signature: 232
  };
  A._updateComponents_updateRgb.prototype = {
    call$2(current, param) {
      return A.fuzzyRound(this.updateValue.call$3(current, param, 255));
    },
    $signature: 238
  };
  A._functionString_closure.prototype = {
    call$1(argument) {
      return A.serializeValue(argument, false, true);
    },
    $signature: 481
  };
  A._removedColorFunction_closure.prototype = {
    call$1($arguments) {
      var t1 = this.name,
        t2 = J.getInterceptor$asx($arguments),
        t3 = A.S(t2.$index($arguments, 0)),
        t4 = this.negative ? "-" : "";
      throw A.wrapException(A.SassScriptException$("The function " + t1 + string$.x28__isn + t3 + ", $" + this.argument + ": " + t4 + A.S(t2.$index($arguments, 1)) + string$.x29x0a_Mor + t1, null));
    },
    $signature: 484
  };
  A._rgb_closure.prototype = {
    call$1(alpha) {
      return A._percentageOrUnitless(alpha.assertNumber$1("alpha"), 1, "alpha");
    },
    $signature: 115
  };
  A._hsl_closure.prototype = {
    call$1(alpha) {
      return A._percentageOrUnitless(alpha.assertNumber$1("alpha"), 1, "alpha");
    },
    $signature: 115
  };
  A._hwb_closure.prototype = {
    call$1(alpha) {
      return A._percentageOrUnitless(alpha.assertNumber$1("alpha"), 1, "alpha");
    },
    $signature: 115
  };
  A._parseChannels_closure.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 25
  };
  A._parseChannels_closure0.prototype = {
    call$1(value) {
      return value.get$isVar();
    },
    $signature: 79
  };
  A._parseChannels_closure1.prototype = {
    call$0() {
      return type$.SassNumber._as(this._1_0).asSlash;
    },
    $signature: 502
  };
  A._length_closure0.prototype = {
    call$1($arguments) {
      return A.SassNumber_SassNumber(J.$index$asx($arguments, 0).get$asList().length, null);
    },
    $signature: 13
  };
  A._nth_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        list = t1.$index($arguments, 0),
        index = t1.$index($arguments, 1);
      return list.get$asList()[list.sassIndexToListIndex$2(index, "n")];
    },
    $signature: 6
  };
  A._setNth_closure.prototype = {
    call$1($arguments) {
      var newList,
        t1 = J.getInterceptor$asx($arguments),
        list = t1.$index($arguments, 0),
        index = t1.$index($arguments, 1),
        value = t1.$index($arguments, 2);
      t1 = list.get$asList();
      newList = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      newList[list.sassIndexToListIndex$2(index, "n")] = value;
      return list.withListContents$1(newList);
    },
    $signature: 29
  };
  A._join_closure.prototype = {
    call$1($arguments) {
      var _0_0, _0_1, _0_3, _0_4, separator, bracketed, t2,
        t1 = J.getInterceptor$asx($arguments),
        list1 = t1.$index($arguments, 0),
        list2 = t1.$index($arguments, 1),
        separatorParam = t1.$index($arguments, 2).assertString$1("separator"),
        bracketedParam = t1.$index($arguments, 3),
        _1_0 = separatorParam._string$_text;
      $label1$1: {
        if ("auto" === _1_0) {
          _0_0 = new A._Record_2(list1.get$separator(list1), list2.get$separator(list2));
          _0_1 = A._InitializedCell$(new A._join__closure(_0_0));
          _0_3 = A._InitializedCell$(new A._join__closure0(_0_1));
          _0_4 = A._InitializedCell$(new A._join__closure1(_0_0));
          $label0$0: {
            if (_0_3._readFinal$0() && B.ListSeparator_undecided_null_undecided === _0_4._readFinal$0()) {
              t1 = B.ListSeparator_EVt;
              break $label0$0;
            }
            if (_0_3._readFinal$0()) {
              separator = _0_4._readFinal$0();
              t1 = true;
            } else {
              separator = null;
              t1 = false;
            }
            if (!t1)
              separator = _0_1._readFinal$0();
            t1 = separator;
            break $label0$0;
          }
          break $label1$1;
        }
        if ("space" === _1_0) {
          t1 = B.ListSeparator_EVt;
          break $label1$1;
        }
        if ("comma" === _1_0) {
          t1 = B.ListSeparator_rXA;
          break $label1$1;
        }
        if ("slash" === _1_0) {
          t1 = B.ListSeparator_zg9;
          break $label1$1;
        }
        t1 = A.throwExpression(A.SassScriptException$(string$.x24separ, null));
      }
      bracketed = bracketedParam instanceof A.SassString && bracketedParam._string$_text === "auto" ? list1.get$hasBrackets() : bracketedParam.get$isTruthy();
      t2 = A.List_List$of(list1.get$asList(), true, type$.Value);
      B.JSArray_methods.addAll$1(t2, list2.get$asList());
      return A.SassList$(t2, t1, bracketed);
    },
    $signature: 29
  };
  A._join__closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 246
  };
  A._join__closure0.prototype = {
    call$0() {
      return B.ListSeparator_undecided_null_undecided === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A._join__closure1.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 246
  };
  A._append_closure0.prototype = {
    call$1($arguments) {
      var t2,
        t1 = J.getInterceptor$asx($arguments),
        list = t1.$index($arguments, 0),
        value = t1.$index($arguments, 1),
        _0_0 = t1.$index($arguments, 2).assertString$1("separator")._string$_text;
      $label0$0: {
        if ("auto" === _0_0) {
          t1 = list.get$separator(list) === B.ListSeparator_undecided_null_undecided ? B.ListSeparator_EVt : list.get$separator(list);
          break $label0$0;
        }
        if ("space" === _0_0) {
          t1 = B.ListSeparator_EVt;
          break $label0$0;
        }
        if ("comma" === _0_0) {
          t1 = B.ListSeparator_rXA;
          break $label0$0;
        }
        if ("slash" === _0_0) {
          t1 = B.ListSeparator_zg9;
          break $label0$0;
        }
        t1 = A.throwExpression(A.SassScriptException$(string$.x24separ, null));
      }
      t2 = A.List_List$of(list.get$asList(), true, type$.Value);
      t2.push(value);
      return list.withListContents$2$separator(t2, t1);
    },
    $signature: 29
  };
  A._zip_closure.prototype = {
    call$1($arguments) {
      var results, result, _box_0 = {},
        t1 = J.$index$asx($arguments, 0).get$asList(),
        t2 = A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,List<Value>>"),
        lists = A.List_List$of(new A.MappedListIterable(t1, new A._zip__closure(), t2), true, t2._eval$1("ListIterable.E"));
      if (lists.length === 0)
        return B.SassList_Sof;
      _box_0.i = 0;
      results = A._setArrayType([], type$.JSArray_SassList);
      for (t1 = A._arrayInstanceType(lists)._eval$1("MappedListIterable<1,Value>"), t2 = type$.Value; B.JSArray_methods.every$1(lists, new A._zip__closure0(_box_0));) {
        result = A.List_List$from(new A.MappedListIterable(lists, new A._zip__closure1(_box_0), t1), false, t2);
        result.fixed$length = Array;
        result.immutable$list = Array;
        results.push(new A.SassList(result, B.ListSeparator_EVt, false));
        ++_box_0.i;
      }
      return A.SassList$(results, B.ListSeparator_rXA, false);
    },
    $signature: 29
  };
  A._zip__closure.prototype = {
    call$1(list) {
      return list.get$asList();
    },
    $signature: 520
  };
  A._zip__closure0.prototype = {
    call$1(list) {
      return this._box_0.i !== J.get$length$asx(list);
    },
    $signature: 527
  };
  A._zip__closure1.prototype = {
    call$1(list) {
      return J.$index$asx(list, this._box_0.i);
    },
    $signature: 6
  };
  A._index_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        index = B.JSArray_methods.indexOf$1(t1.$index($arguments, 0).get$asList(), t1.$index($arguments, 1));
      return index === -1 ? B.C__SassNull : A.SassNumber_SassNumber(index + 1, null);
    },
    $signature: 6
  };
  A._separator_closure.prototype = {
    call$1($arguments) {
      var t1,
        _0_0 = J.get$separator$x(J.$index$asx($arguments, 0));
      $label0$0: {
        if (B.ListSeparator_rXA === _0_0) {
          t1 = new A.SassString("comma", false);
          break $label0$0;
        }
        if (B.ListSeparator_zg9 === _0_0) {
          t1 = new A.SassString("slash", false);
          break $label0$0;
        }
        t1 = new A.SassString("space", false);
        break $label0$0;
      }
      return t1;
    },
    $signature: 20
  };
  A._isBracketed_closure.prototype = {
    call$1($arguments) {
      return J.$index$asx($arguments, 0).get$hasBrackets() ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._slash_closure.prototype = {
    call$1($arguments) {
      var list = J.$index$asx($arguments, 0).get$asList();
      if (list.length < 2)
        throw A.wrapException(A.SassScriptException$("At least two elements are required.", null));
      return A.SassList$(list, B.ListSeparator_zg9, false);
    },
    $signature: 29
  };
  A._get_closure.prototype = {
    call$1($arguments) {
      var value,
        t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      for (t1 = A.IterableExtension_get_exceptLast(t2), t1 = t1.get$iterator(t1); t1.moveNext$0(); map = value) {
        value = map._map$_contents.$index(0, t1.get$current(t1));
        if (!(value instanceof A.SassMap))
          return B.C__SassNull;
      }
      t1 = map._map$_contents.$index(0, B.JSArray_methods.get$last(t2));
      return t1 == null ? B.C__SassNull : t1;
    },
    $signature: 6
  };
  A._set_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A._modify(t1.$index($arguments, 0).assertMap$1("map"), A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value), new A._set__closure1($arguments), true);
    },
    $signature: 6
  };
  A._set__closure1.prototype = {
    call$1(_) {
      return J.$index$asx(this.$arguments, 2);
    },
    $signature: 43
  };
  A._set_closure0.prototype = {
    call$1($arguments) {
      var keys, value, t1 = {},
        t2 = J.getInterceptor$asx($arguments),
        map = t2.$index($arguments, 0).assertMap$1("map"),
        _0_0 = t2.$index($arguments, 1).get$asList(),
        _0_1 = A._InitializedCell$(new A._set__closure(_0_0));
      if (_0_1._readFinal$0() <= 0)
        throw A.wrapException(A.SassScriptException$("Expected $args to contain a key.", null));
      if (J.$eq$(_0_1._readFinal$0(), 1))
        throw A.wrapException(A.SassScriptException$("Expected $args to contain a value.", null));
      keys = t1.value = null;
      if (_0_1._readFinal$0() >= 1) {
        keys = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
        value = _0_0[_0_1._readFinal$0() - 1];
        t1.value = value;
        t2 = true;
      } else
        t2 = false;
      if (t2)
        return A._modify(map, keys, new A._set__closure0(t1), true);
      throw A.wrapException("[BUG] Unreachable code");
    },
    $signature: 6
  };
  A._set__closure.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A._set__closure0.prototype = {
    call$1(_) {
      return this._box_0.value;
    },
    $signature: 43
  };
  A._merge_closure.prototype = {
    call$1($arguments) {
      var t2,
        t1 = J.getInterceptor$asx($arguments),
        map1 = t1.$index($arguments, 0).assertMap$1("map1"),
        map2 = t1.$index($arguments, 1).assertMap$1("map2");
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$of(map1._map$_contents, t1, t1);
      t2.addAll$1(0, map2._map$_contents);
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 40
  };
  A._merge_closure0.prototype = {
    call$1($arguments) {
      var keys, last, _null = null,
        t1 = J.getInterceptor$asx($arguments),
        map1 = t1.$index($arguments, 0).assertMap$1("map1"),
        _0_0 = t1.$index($arguments, 1).get$asList(),
        _0_1 = A._InitializedCell$(new A._merge__closure(_0_0));
      if (_0_1._readFinal$0() <= 0)
        throw A.wrapException(A.SassScriptException$("Expected $args to contain a key.", _null));
      if (J.$eq$(_0_1._readFinal$0(), 1))
        throw A.wrapException(A.SassScriptException$("Expected $args to contain a map.", _null));
      if (_0_1._readFinal$0() >= 1) {
        keys = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
        last = _0_0[_0_1._readFinal$0() - 1];
        last = last;
        t1 = true;
      } else {
        last = _null;
        keys = last;
        t1 = false;
      }
      if (t1)
        return A._modify(map1, keys, new A._merge__closure0(last.assertMap$1("map2")), true);
      throw A.wrapException("[BUG] Unreachable code");
    },
    $signature: 6
  };
  A._merge__closure.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A._merge__closure0.prototype = {
    call$1(oldValue) {
      var t1, t2,
        nestedMap = oldValue.tryMap$0();
      if (nestedMap == null)
        return this.map2;
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$of(nestedMap._map$_contents, t1, t1);
      t2.addAll$1(0, this.map2._map$_contents);
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 537
  };
  A._deepMerge_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A._deepMergeImpl(t1.$index($arguments, 0).assertMap$1("map1"), t1.$index($arguments, 1).assertMap$1("map2"));
    },
    $signature: 40
  };
  A._deepRemove_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      return A._modify(map, A.IterableExtension_get_exceptLast(t2), new A._deepRemove__closure(t2), false);
    },
    $signature: 6
  };
  A._deepRemove__closure.prototype = {
    call$1(value) {
      var nestedMap, t1, t2,
        _0_0 = value.tryMap$0();
      if (_0_0 != null) {
        nestedMap = _0_0;
        t1 = true;
      } else {
        nestedMap = null;
        t1 = false;
      }
      if (t1 && nestedMap._map$_contents.containsKey$1(B.JSArray_methods.get$last(this.keys))) {
        t1 = type$.Value;
        t2 = A.LinkedHashMap_LinkedHashMap$of(nestedMap._map$_contents, t1, t1);
        t2.remove$1(0, B.JSArray_methods.get$last(this.keys));
        return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
      }
      return value;
    },
    $signature: 43
  };
  A._remove_closure.prototype = {
    call$1($arguments) {
      return J.$index$asx($arguments, 0).assertMap$1("map");
    },
    $signature: 40
  };
  A._remove_closure0.prototype = {
    call$1($arguments) {
      var mutableMap, t3, _i,
        t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      t1 = type$.Value;
      mutableMap = A.LinkedHashMap_LinkedHashMap$of(map._map$_contents, t1, t1);
      for (t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i)
        mutableMap.remove$1(0, t2[_i]);
      return new A.SassMap(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
    },
    $signature: 40
  };
  A._keys_closure.prototype = {
    call$1($arguments) {
      var t1 = J.$index$asx($arguments, 0).assertMap$1("map")._map$_contents;
      return A.SassList$(t1.get$keys(t1), B.ListSeparator_rXA, false);
    },
    $signature: 29
  };
  A._values_closure.prototype = {
    call$1($arguments) {
      var t1 = J.$index$asx($arguments, 0).assertMap$1("map")._map$_contents;
      return A.SassList$(t1.get$values(t1), B.ListSeparator_rXA, false);
    },
    $signature: 29
  };
  A._hasKey_closure.prototype = {
    call$1($arguments) {
      var value,
        t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      for (t1 = A.IterableExtension_get_exceptLast(t2), t1 = t1.get$iterator(t1); t1.moveNext$0(); map = value) {
        value = map._map$_contents.$index(0, t1.get$current(t1));
        if (!(value instanceof A.SassMap))
          return B.SassBoolean_false;
      }
      return map._map$_contents.containsKey$1(B.JSArray_methods.get$last(t2)) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._modify_modifyNestedMap.prototype = {
    call$1(map) {
      var nestedMap, _this = this,
        t1 = type$.Value,
        mutableMap = A.LinkedHashMap_LinkedHashMap$of(map._map$_contents, t1, t1),
        t2 = _this.keyIterator,
        key = t2.get$current(t2);
      if (!t2.moveNext$0()) {
        t2 = mutableMap.$index(0, key);
        if (t2 == null)
          t2 = B.C__SassNull;
        mutableMap.$indexSet(0, key, _this.modify.call$1(t2));
        return new A.SassMap(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
      }
      t2 = mutableMap.$index(0, key);
      nestedMap = t2 == null ? null : t2.tryMap$0();
      t2 = nestedMap == null;
      if (t2 && !_this.addNesting)
        return new A.SassMap(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
      mutableMap.$indexSet(0, key, _this.call$1(t2 ? B.SassMap_Map_empty : nestedMap));
      return new A.SassMap(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
    },
    $signature: 538
  };
  A._deepMergeImpl_closure.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 293
  };
  A._deepMergeImpl_closure0.prototype = {
    call$0() {
      return this._1_0._1;
    },
    $signature: 293
  };
  A.global_closure.prototype = {
    call$1($arguments) {
      var t1, t2,
        number = J.$index$asx($arguments, 0).assertNumber$1("number");
      if (number.hasUnit$1("%")) {
        t1 = number.toString$0(0);
        t2 = number.toString$0(0);
        A.EvaluationContext_current().warn$2(0, string$.Passinp + t1 + ")\nTo emit a CSS abs() now: abs(#{" + t2 + string$.x7d__Mor, B.Deprecation_043);
      }
      t1 = number.get$numeratorUnits(number);
      return A.SassNumber_SassNumber$withUnits(Math.abs(number._number$_value), number.get$denominatorUnits(number), t1);
    },
    $signature: 13
  };
  A.module_closure0.prototype = {
    call$1(value) {
      return Math.abs(value);
    },
    $signature: 42
  };
  A._ceil_closure.prototype = {
    call$1(value) {
      return B.JSNumber_methods.ceil$0(value);
    },
    $signature: 42
  };
  A._clamp_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        min = t1.$index($arguments, 0).assertNumber$1("min"),
        number = t1.$index($arguments, 1).assertNumber$1("number"),
        max = t1.$index($arguments, 2).assertNumber$1("max");
      number.convertValueToMatch$3(min, "number", "min");
      max.convertValueToMatch$3(min, "max", "min");
      if (min.greaterThanOrEquals$1(max).value)
        return min;
      if (min.greaterThanOrEquals$1(number).value)
        return min;
      if (number.greaterThanOrEquals$1(max).value)
        return max;
      return number;
    },
    $signature: 13
  };
  A._floor_closure.prototype = {
    call$1(value) {
      return B.JSNumber_methods.floor$0(value);
    },
    $signature: 42
  };
  A._max_closure.prototype = {
    call$1($arguments) {
      var t1, t2, max, _i, number;
      for (t1 = J.$index$asx($arguments, 0).get$asList(), t2 = t1.length, max = null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        number = t1[_i].assertNumber$0();
        if (max == null || max.lessThan$1(number).value)
          max = number;
      }
      if (max != null)
        return max;
      throw A.wrapException(A.SassScriptException$("At least one argument must be passed.", null));
    },
    $signature: 13
  };
  A._min_closure.prototype = {
    call$1($arguments) {
      var t1, t2, min, _i, number;
      for (t1 = J.$index$asx($arguments, 0).get$asList(), t2 = t1.length, min = null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        number = t1[_i].assertNumber$0();
        if (min == null || min.greaterThan$1(number).value)
          min = number;
      }
      if (min != null)
        return min;
      throw A.wrapException(A.SassScriptException$("At least one argument must be passed.", null));
    },
    $signature: 13
  };
  A._round_closure.prototype = {
    call$1(number) {
      return B.JSNumber_methods.round$0(number);
    },
    $signature: 42
  };
  A._hypot_closure.prototype = {
    call$1($arguments) {
      var subtotal, i, i0, t3, t4,
        t1 = J.$index$asx($arguments, 0).get$asList(),
        t2 = A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,SassNumber>"),
        numbers = A.List_List$of(new A.MappedListIterable(t1, new A._hypot__closure(), t2), true, t2._eval$1("ListIterable.E"));
      t1 = numbers.length;
      if (t1 === 0)
        throw A.wrapException(A.SassScriptException$("At least one argument must be passed.", null));
      for (subtotal = 0, i = 0; i < t1; i = i0) {
        i0 = i + 1;
        subtotal += Math.pow(numbers[i].convertValueToMatch$3(numbers[0], "numbers[" + i0 + "]", "numbers[1]"), 2);
      }
      t1 = Math.sqrt(subtotal);
      t2 = numbers[0];
      t3 = J.getInterceptor$x(t2);
      t4 = t3.get$numeratorUnits(t2);
      return A.SassNumber_SassNumber$withUnits(t1, t3.get$denominatorUnits(t2), t4);
    },
    $signature: 13
  };
  A._hypot__closure.prototype = {
    call$1(argument) {
      return argument.assertNumber$0();
    },
    $signature: 549
  };
  A._log_closure.prototype = {
    call$1($arguments) {
      var base,
        _s18_ = " to have no units.",
        _null = null,
        t1 = J.getInterceptor$asx($arguments),
        number = t1.$index($arguments, 0).assertNumber$1("number");
      if (number.get$hasUnits())
        throw A.wrapException(A.SassScriptException$("$number: Expected " + number.toString$0(0) + _s18_, _null));
      else if (J.$eq$(t1.$index($arguments, 1), B.C__SassNull))
        return A.SassNumber_SassNumber(Math.log(number._number$_value), _null);
      base = t1.$index($arguments, 1).assertNumber$1("base");
      if (base.get$hasUnits())
        throw A.wrapException(A.SassScriptException$("$base: Expected " + base.toString$0(0) + _s18_, _null));
      else
        return A.SassNumber_SassNumber(Math.log(number._number$_value) / Math.log(base._number$_value), _null);
    },
    $signature: 13
  };
  A._pow_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A.pow0(t1.$index($arguments, 0).assertNumber$1("base"), t1.$index($arguments, 1).assertNumber$1("exponent"));
    },
    $signature: 13
  };
  A._atan2_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        y = t1.$index($arguments, 0).assertNumber$1("y");
      return A.SassNumber_SassNumber$withUnits(Math.atan2(y._number$_value, t1.$index($arguments, 1).assertNumber$1("x").convertValueToMatch$3(y, "x", "y")) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    $signature: 13
  };
  A._compatible_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return t1.$index($arguments, 0).assertNumber$1("number1").isComparableTo$1(t1.$index($arguments, 1).assertNumber$1("number2")) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._isUnitless_closure.prototype = {
    call$1($arguments) {
      return !J.$index$asx($arguments, 0).assertNumber$1("number").get$hasUnits() ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._unit_closure.prototype = {
    call$1($arguments) {
      return new A.SassString(J.$index$asx($arguments, 0).assertNumber$1("number").get$unitString(), true);
    },
    $signature: 20
  };
  A._percentage_closure.prototype = {
    call$1($arguments) {
      var number = J.$index$asx($arguments, 0).assertNumber$1("number");
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber(number._number$_value * 100, "%");
    },
    $signature: 13
  };
  A._randomFunction_closure.prototype = {
    call$1($arguments) {
      var limit, t2, t3, t4, limitScalar,
        t1 = J.getInterceptor$asx($arguments);
      if (J.$eq$(t1.$index($arguments, 0), B.C__SassNull))
        return A.SassNumber_SassNumber($.$get$_random0().nextDouble$0(), null);
      limit = t1.$index($arguments, 0).assertNumber$1("limit");
      if (limit.get$hasUnits()) {
        t1 = limit.toString$0(0);
        t2 = limit.get$unitString();
        t3 = limit.get$unitString();
        t4 = limit.get$unitString();
        A.EvaluationContext_current().warn$2(0, string$.math_r + t1 + string$.x29x20in_a + t2 + ")) * 1" + t3 + string$.x0a_To_p + t4 + string$.x29x29__Mo, B.Deprecation_8WR);
      }
      limitScalar = limit.assertInt$1("limit");
      if (limitScalar < 1)
        throw A.wrapException(A.SassScriptException$("$limit: Must be greater than 0, was " + limit.toString$0(0) + ".", null));
      return A.SassNumber_SassNumber($.$get$_random0().nextInt$1(limitScalar) + 1, null);
    },
    $signature: 13
  };
  A._div_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        number1 = t1.$index($arguments, 0),
        number2 = t1.$index($arguments, 1);
      if (!(number1 instanceof A.SassNumber) || !(number2 instanceof A.SassNumber)) {
        t1 = A.EvaluationContext_current();
        t1.warn$2(0, string$.math_d, null);
      }
      return number1.dividedBy$1(number2);
    },
    $signature: 6
  };
  A._singleArgumentMathFunc_closure.prototype = {
    call$1($arguments) {
      return this.mathFunc.call$1(J.$index$asx($arguments, 0).assertNumber$1("number"));
    },
    $signature: 13
  };
  A._numberFunction_closure.prototype = {
    call$1($arguments) {
      var number = J.$index$asx($arguments, 0).assertNumber$1("number"),
        t1 = this.transform.call$1(number._number$_value),
        t2 = number.get$numeratorUnits(number);
      return A.SassNumber_SassNumber$withUnits(t1, number.get$denominatorUnits(number), t2);
    },
    $signature: 13
  };
  A.global_closure27.prototype = {
    call$1($arguments) {
      return $._features.contains$1(0, J.$index$asx($arguments, 0).assertString$1("feature")._string$_text) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A.global_closure28.prototype = {
    call$1($arguments) {
      return new A.SassString(A.serializeValue(J.get$first$ax($arguments), true, true), false);
    },
    $signature: 20
  };
  A.global_closure29.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        _0_0 = t1.$index($arguments, 0);
      $label0$0: {
        if (_0_0 instanceof A.SassArgumentList) {
          t1 = "arglist";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassBoolean) {
          t1 = "bool";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassColor) {
          t1 = "color";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassList) {
          t1 = "list";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassMap) {
          t1 = "map";
          break $label0$0;
        }
        if (B.C__SassNull === _0_0) {
          t1 = "null";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassNumber) {
          t1 = "number";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassFunction) {
          t1 = "function";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassMixin) {
          t1 = "mixin";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassCalculation) {
          t1 = "calculation";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassString) {
          t1 = "string";
          break $label0$0;
        }
        t1 = A.throwExpression("[BUG] Unknown value type " + A.S(t1.$index($arguments, 0)));
      }
      return new A.SassString(t1, false);
    },
    $signature: 20
  };
  A.global_closure30.prototype = {
    call$1($arguments) {
      var t2, keywords, t3, t4, key, value,
        t1 = J.getInterceptor$asx($arguments),
        _1_0 = t1.$index($arguments, 0);
      if (_1_0 instanceof A.SassArgumentList) {
        t2 = _1_0._wereKeywordsAccessed = true;
        keywords = _1_0._keywords;
      } else {
        keywords = null;
        t2 = false;
      }
      if (t2) {
        t1 = type$.Value;
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
        for (t3 = A.MapExtensions_get_pairs(keywords, type$.String, t1), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
          t4 = t3.get$current(t3);
          key = t4._0;
          value = t4._1;
          value = value;
          t2.$indexSet(0, new A.SassString(key, false), value);
        }
        return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
      } else
        throw A.wrapException("$args: " + A.S(t1.$index($arguments, 0)) + " is not an argument list.");
    },
    $signature: 40
  };
  A.local_closure.prototype = {
    call$1($arguments) {
      return new A.SassString(J.$index$asx($arguments, 0).assertCalculation$1("calc").name, true);
    },
    $signature: 20
  };
  A.local_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.$index$asx($arguments, 0).assertCalculation$1("calc").$arguments;
      return A.SassList$(new A.MappedListIterable(t1, new A.local__closure0(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value>")), B.ListSeparator_rXA, false);
    },
    $signature: 29
  };
  A.local__closure0.prototype = {
    call$1(argument) {
      return argument instanceof A.Value ? argument : new A.SassString(J.toString$0$(argument), false);
    },
    $signature: 562
  };
  A.local_closure1.prototype = {
    call$1($arguments) {
      var _0_2, acceptsContent, _0_2_isSet, t1, hasContent, _null = null,
        mixin = J.$index$asx($arguments, 0).assertMixin$1("mixin"),
        _0_0 = mixin.callable,
        _0_5 = A._InitializedCell$(new A.local__closure(_0_0));
      $label0$0: {
        if (type$.AsyncBuiltInCallable._is(_0_0)) {
          _0_2 = _0_0.get$acceptsContent();
          acceptsContent = _0_2;
          _0_2_isSet = true;
          t1 = true;
        } else {
          acceptsContent = _null;
          _0_2 = acceptsContent;
          _0_2_isSet = false;
          t1 = false;
        }
        if (!t1)
          if (_0_0 instanceof A.BuiltInCallable) {
            acceptsContent = _0_2_isSet ? _0_2 : _0_0.acceptsContent;
            t1 = true;
          } else
            t1 = false;
        else
          t1 = true;
        if (t1) {
          t1 = acceptsContent;
          break $label0$0;
        }
        if (_0_0 instanceof A.UserDefinedCallable)
          if (_0_5._readFinal$0() instanceof A.MixinRule) {
            hasContent = _0_5._readFinal$0().get$hasContent();
            t1 = true;
          } else {
            hasContent = _null;
            t1 = false;
          }
        else {
          hasContent = _null;
          t1 = false;
        }
        if (t1) {
          t1 = hasContent;
          break $label0$0;
        }
        t1 = A.throwExpression(A.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
      }
      return t1 ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A.local__closure.prototype = {
    call$0() {
      return type$.UserDefinedCallable_dynamic._as(this._0_0).declaration;
    },
    $signature: 143
  };
  A._nest_closure.prototype = {
    call$1($arguments) {
      var t1 = {},
        selectors = J.$index$asx($arguments, 0).get$asList();
      if (selectors.length === 0)
        throw A.wrapException(A.SassScriptException$(string$.x24selec, null));
      t1.first = true;
      return new A.MappedListIterable(selectors, new A._nest__closure(t1), A._arrayInstanceType(selectors)._eval$1("MappedListIterable<1,SelectorList>")).reduce$1(0, new A._nest__closure0()).get$asSassList();
    },
    $signature: 29
  };
  A._nest__closure.prototype = {
    call$1(selector) {
      var t1 = this._box_0,
        result = A.SassApiValue_assertSelector(selector, !t1.first, null);
      t1.first = false;
      return result;
    },
    $signature: 153
  };
  A._nest__closure0.prototype = {
    call$2($parent, child) {
      return child.resolveParentSelectors$1($parent);
    },
    $signature: 157
  };
  A._append_closure.prototype = {
    call$1($arguments) {
      var selectors = J.$index$asx($arguments, 0).get$asList();
      if (selectors.length === 0)
        throw A.wrapException(A.SassScriptException$(string$.x24selec, null));
      return new A.MappedListIterable(selectors, new A._append__closure(), A._arrayInstanceType(selectors)._eval$1("MappedListIterable<1,SelectorList>")).reduce$1(0, new A._append__closure0(A.EvaluationContext_current().get$currentCallableSpan())).get$asSassList();
    },
    $signature: 29
  };
  A._append__closure.prototype = {
    call$1(selector) {
      return A.SassApiValue_assertSelector(selector, false, null);
    },
    $signature: 153
  };
  A._append__closure0.prototype = {
    call$2($parent, child) {
      var t1 = child.components,
        t2 = this.span;
      return A.SelectorList$(new A.MappedListIterable(t1, new A._append___closure($parent, t2), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector>")), t2).resolveParentSelectors$1($parent);
    },
    $signature: 157
  };
  A._append___closure.prototype = {
    call$1(complex) {
      var _0_0, component, rest, t1, newCompound, t2, _null = null;
      if (complex.leadingCombinators.length !== 0)
        throw A.wrapException(A.SassScriptException$("Can't append " + complex.toString$0(0) + " to " + this.parent.toString$0(0) + ".", _null));
      _0_0 = complex.components;
      if (_0_0.length >= 1) {
        component = _0_0[0];
        rest = B.JSArray_methods.sublist$1(_0_0, 1);
        t1 = true;
      } else {
        rest = _null;
        component = rest;
        t1 = false;
      }
      if (!t1)
        throw A.wrapException(A.StateError$("Pattern matching error"));
      newCompound = A._prependParent(component.selector);
      if (newCompound == null)
        throw A.wrapException(A.SassScriptException$("Can't append " + complex.toString$0(0) + " to " + this.parent.toString$0(0) + ".", _null));
      t1 = this.span;
      t2 = A._setArrayType([new A.ComplexSelectorComponent(newCompound, A.List_List$unmodifiable(component.combinators, type$.CssValue_Combinator), t1)], type$.JSArray_ComplexSelectorComponent);
      B.JSArray_methods.addAll$1(t2, rest);
      return A.ComplexSelector$(B.List_empty1, t2, t1, false);
    },
    $signature: 59
  };
  A._extend_closure.prototype = {
    call$1($arguments) {
      var target, source,
        _s8_ = "selector",
        _s8_0 = "extendee",
        _s8_1 = "extender",
        t1 = J.getInterceptor$asx($arguments),
        selector = A.SassApiValue_assertSelector(t1.$index($arguments, 0), false, _s8_);
      selector.assertNotBogus$1$name(_s8_);
      target = A.SassApiValue_assertSelector(t1.$index($arguments, 1), false, _s8_0);
      target.assertNotBogus$1$name(_s8_0);
      source = A.SassApiValue_assertSelector(t1.$index($arguments, 2), false, _s8_1);
      source.assertNotBogus$1$name(_s8_1);
      return A.ExtensionStore__extendOrReplace(selector, source, target, B.ExtendMode_allTargets_allTargets, A.EvaluationContext_current().get$currentCallableSpan()).get$asSassList();
    },
    $signature: 29
  };
  A._replace_closure.prototype = {
    call$1($arguments) {
      var target, source,
        _s8_ = "selector",
        _s8_0 = "original",
        _s11_ = "replacement",
        t1 = J.getInterceptor$asx($arguments),
        selector = A.SassApiValue_assertSelector(t1.$index($arguments, 0), false, _s8_);
      selector.assertNotBogus$1$name(_s8_);
      target = A.SassApiValue_assertSelector(t1.$index($arguments, 1), false, _s8_0);
      target.assertNotBogus$1$name(_s8_0);
      source = A.SassApiValue_assertSelector(t1.$index($arguments, 2), false, _s11_);
      source.assertNotBogus$1$name(_s11_);
      return A.ExtensionStore__extendOrReplace(selector, source, target, B.ExtendMode_replace_replace, A.EvaluationContext_current().get$currentCallableSpan()).get$asSassList();
    },
    $signature: 29
  };
  A._unify_closure.prototype = {
    call$1($arguments) {
      var selector2,
        _s9_ = "selector1",
        _s9_0 = "selector2",
        t1 = J.getInterceptor$asx($arguments),
        selector1 = A.SassApiValue_assertSelector(t1.$index($arguments, 0), false, _s9_);
      selector1.assertNotBogus$1$name(_s9_);
      selector2 = A.SassApiValue_assertSelector(t1.$index($arguments, 1), false, _s9_0);
      selector2.assertNotBogus$1$name(_s9_0);
      t1 = selector1.unify$1(selector2);
      t1 = t1 == null ? null : t1.get$asSassList();
      return t1 == null ? B.C__SassNull : t1;
    },
    $signature: 6
  };
  A._isSuperselector_closure.prototype = {
    call$1($arguments) {
      var selector2,
        t1 = J.getInterceptor$asx($arguments),
        selector1 = A.SassApiValue_assertSelector(t1.$index($arguments, 0), false, "super");
      selector1.assertNotBogus$1$name("super");
      selector2 = A.SassApiValue_assertSelector(t1.$index($arguments, 1), false, "sub");
      selector2.assertNotBogus$1$name("sub");
      return A.listIsSuperselector(selector1.components, selector2.components) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._simpleSelectors_closure.prototype = {
    call$1($arguments) {
      var t1 = A.SassApiValue_assertCompoundSelector(J.$index$asx($arguments, 0), "selector").components;
      return A.SassList$(new A.MappedListIterable(t1, new A._simpleSelectors__closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value>")), B.ListSeparator_rXA, false);
    },
    $signature: 29
  };
  A._simpleSelectors__closure.prototype = {
    call$1(simple) {
      return new A.SassString(A.serializeSelector(simple, true), false);
    },
    $signature: 300
  };
  A._parse_closure.prototype = {
    call$1($arguments) {
      return A.SassApiValue_assertSelector(J.$index$asx($arguments, 0), false, "selector").get$asSassList();
    },
    $signature: 29
  };
  A._prependParent_closure.prototype = {
    call$0() {
      return this._0_0.length >= 1;
    },
    $signature: 1
  };
  A._prependParent_closure0.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 218
  };
  A.module_closure.prototype = {
    call$1($arguments) {
      var limit, t2, chunks, i, lastEnd, match, t3,
        t1 = J.getInterceptor$asx($arguments),
        string = t1.$index($arguments, 0).assertString$1("string"),
        separator = t1.$index($arguments, 1).assertString$1("separator");
      t1 = t1.$index($arguments, 2).get$realNull();
      limit = t1 == null ? null : t1.assertNumber$1("limit").assertInt$1("limit");
      if (limit != null && limit < 1)
        throw A.wrapException(A.SassScriptException$("$limit: Must be 1 or greater, was " + A.S(limit) + ".", null));
      t1 = string._string$_text;
      if (t1.length === 0)
        return B.SassList_Sof0;
      else {
        t2 = separator._string$_text;
        if (t2.length === 0)
          return A.SassList$(A.MappedIterable_MappedIterable(new A.Runes(t1), new A.module__closure(string), type$.Runes._eval$1("Iterable.E"), type$.Value), B.ListSeparator_rXA, true);
      }
      chunks = A._setArrayType([], type$.JSArray_String);
      for (t2 = B.JSString_methods.allMatches$1(t2, t1), t2 = new A._StringAllMatchesIterator(t2._input, t2._pattern, t2.__js_helper$_index), i = 0, lastEnd = 0; t2.moveNext$0();) {
        match = t2.__js_helper$_current;
        t3 = match.start;
        chunks.push(B.JSString_methods.substring$2(t1, lastEnd, t3));
        lastEnd = t3 + match.pattern.length;
        ++i;
        if (i === limit)
          break;
      }
      chunks.push(B.JSString_methods.substring$1(t1, lastEnd));
      return A.SassList$(new A.MappedListIterable(chunks, new A.module__closure0(string), type$.MappedListIterable_String_Value), B.ListSeparator_rXA, true);
    },
    $signature: 29
  };
  A.module__closure.prototype = {
    call$1(rune) {
      return new A.SassString(A.Primitives_stringFromCharCode(rune), this.string._hasQuotes);
    },
    $signature: 308
  };
  A.module__closure0.prototype = {
    call$1(chunk) {
      return new A.SassString(chunk, this.string._hasQuotes);
    },
    $signature: 310
  };
  A._unquote_closure.prototype = {
    call$1($arguments) {
      var string = J.$index$asx($arguments, 0).assertString$1("string");
      if (!string._hasQuotes)
        return string;
      return new A.SassString(string._string$_text, false);
    },
    $signature: 20
  };
  A._quote_closure.prototype = {
    call$1($arguments) {
      var string = J.$index$asx($arguments, 0).assertString$1("string");
      if (string._hasQuotes)
        return string;
      return new A.SassString(string._string$_text, true);
    },
    $signature: 20
  };
  A._length_closure.prototype = {
    call$1($arguments) {
      return A.SassNumber_SassNumber(J.$index$asx($arguments, 0).assertString$1("string").get$_sassLength(), null);
    },
    $signature: 13
  };
  A._insert_closure.prototype = {
    call$1($arguments) {
      var indexInt, codeUnitIndex, _s5_ = "index",
        t1 = J.getInterceptor$asx($arguments),
        string = t1.$index($arguments, 0).assertString$1("string"),
        insert = t1.$index($arguments, 1).assertString$1("insert"),
        index = t1.$index($arguments, 2).assertNumber$1(_s5_);
      index.assertNoUnits$1(_s5_);
      indexInt = index.assertInt$1(_s5_);
      if (indexInt < 0)
        indexInt = Math.max(string.get$_sassLength() + indexInt + 2, 0);
      t1 = string._string$_text;
      codeUnitIndex = A.codepointIndexToCodeUnitIndex(t1, A._codepointForIndex(indexInt, string.get$_sassLength(), false));
      return new A.SassString(B.JSString_methods.replaceRange$3(t1, codeUnitIndex, codeUnitIndex, insert._string$_text), string._hasQuotes);
    },
    $signature: 20
  };
  A._index_closure.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        t2 = t1.$index($arguments, 0).assertString$1("string")._string$_text,
        codeUnitIndex = B.JSString_methods.indexOf$1(t2, t1.$index($arguments, 1).assertString$1("substring")._string$_text);
      if (codeUnitIndex === -1)
        return B.C__SassNull;
      return A.SassNumber_SassNumber(A.codeUnitIndexToCodepointIndex(t2, codeUnitIndex) + 1, null);
    },
    $signature: 6
  };
  A._slice_closure.prototype = {
    call$1($arguments) {
      var lengthInCodepoints, endInt, startCodepoint, endCodepoint,
        _s8_ = "start-at",
        t1 = J.getInterceptor$asx($arguments),
        string = t1.$index($arguments, 0).assertString$1("string"),
        start = t1.$index($arguments, 1).assertNumber$1(_s8_),
        end = t1.$index($arguments, 2).assertNumber$1("end-at");
      start.assertNoUnits$1(_s8_);
      end.assertNoUnits$1("end-at");
      lengthInCodepoints = string.get$_sassLength();
      endInt = end.assertInt$0();
      if (endInt === 0)
        return string._hasQuotes ? $.$get$_emptyQuoted() : $.$get$_emptyUnquoted();
      startCodepoint = A._codepointForIndex(start.assertInt$0(), lengthInCodepoints, false);
      endCodepoint = A._codepointForIndex(endInt, lengthInCodepoints, true);
      if (endCodepoint === lengthInCodepoints)
        --endCodepoint;
      if (endCodepoint < startCodepoint)
        return string._hasQuotes ? $.$get$_emptyQuoted() : $.$get$_emptyUnquoted();
      t1 = string._string$_text;
      return new A.SassString(B.JSString_methods.substring$2(t1, A.codepointIndexToCodeUnitIndex(t1, startCodepoint), A.codepointIndexToCodeUnitIndex(t1, endCodepoint + 1)), string._hasQuotes);
    },
    $signature: 20
  };
  A._toUpperCase_closure.prototype = {
    call$1($arguments) {
      var t1, t2, i, t3, t4,
        string = J.$index$asx($arguments, 0).assertString$1("string");
      for (t1 = string._string$_text, t2 = t1.length, i = 0, t3 = ""; i < t2; ++i) {
        t4 = t1.charCodeAt(i);
        t3 += A.Primitives_stringFromCharCode(t4 >= 97 && t4 <= 122 ? t4 & 4294967263 : t4);
      }
      return new A.SassString(t3.charCodeAt(0) == 0 ? t3 : t3, string._hasQuotes);
    },
    $signature: 20
  };
  A._toLowerCase_closure.prototype = {
    call$1($arguments) {
      var t1, t2, i, t3, t4,
        string = J.$index$asx($arguments, 0).assertString$1("string");
      for (t1 = string._string$_text, t2 = t1.length, i = 0, t3 = ""; i < t2; ++i) {
        t4 = t1.charCodeAt(i);
        t3 += A.Primitives_stringFromCharCode(t4 >= 65 && t4 <= 90 ? t4 | 32 : t4);
      }
      return new A.SassString(t3.charCodeAt(0) == 0 ? t3 : t3, string._hasQuotes);
    },
    $signature: 20
  };
  A._uniqueId_closure.prototype = {
    call$1($arguments) {
      var t1 = $.$get$_previousUniqueId() + ($.$get$_random().nextInt$1(36) + 1);
      $._previousUniqueId = t1;
      if (t1 > Math.pow(36, 6))
        $._previousUniqueId = B.JSInt_methods.$mod($.$get$_previousUniqueId(), A._asInt(Math.pow(36, 6)));
      return new A.SassString("u" + B.JSString_methods.padLeft$2(B.JSInt_methods.toRadixString$1($.$get$_previousUniqueId(), 36), 6, "0"), false);
    },
    $signature: 20
  };
  A.ImportCache.prototype = {
    canonicalize$4$baseImporter$baseUrl$forImport(_, url, baseImporter, baseUrl, forImport) {
      var t1, relativeResult, _this = this;
      if (A.isBrowser())
        t1 = (baseImporter == null || baseImporter instanceof A.NoOpImporter) && _this._importers.length === 0;
      else
        t1 = false;
      if (t1)
        throw A.wrapException(string$.Custom);
      if (baseImporter != null && url.get$scheme() === "") {
        relativeResult = _this._relativeCanonicalizeCache.putIfAbsent$2(new A._Record_4_baseImporter_baseUrl_forImport([url, baseImporter, baseUrl, forImport]), new A.ImportCache_canonicalize_closure(_this, baseImporter, baseUrl, url, forImport));
        if (relativeResult != null)
          return relativeResult;
      }
      return _this._canonicalizeCache.putIfAbsent$2(new A._Record_2_forImport(url, forImport), new A.ImportCache_canonicalize_closure0(_this, url, baseUrl, forImport));
    },
    canonicalize$3$baseImporter$baseUrl($receiver, url, baseImporter, baseUrl) {
      return this.canonicalize$4$baseImporter$baseUrl$forImport($receiver, url, baseImporter, baseUrl, false);
    },
    _canonicalize$4(importer, url, baseUrl, forImport) {
      var passContainingUrl, t1, result, _null = null,
        canonicalize = forImport ? new A.ImportCache__canonicalize_closure(importer, url) : new A.ImportCache__canonicalize_closure0(importer, url);
      if (baseUrl != null)
        if (url.get$scheme() !== "") {
          url.get$scheme();
          passContainingUrl = false;
        } else
          passContainingUrl = true;
      else
        passContainingUrl = false;
      t1 = passContainingUrl ? baseUrl : _null;
      result = A.withContainingUrl(t1, canonicalize, type$.nullable_Uri);
      if (result == null)
        return _null;
      if (result.get$scheme() === "")
        A.WarnForDeprecation_warnForDeprecation(this._logger, B.Deprecation_mFp, "Importer " + importer.toString$0(0) + " canonicalized " + url.toString$0(0) + " to " + result.toString$0(0) + string$.x2e_Rela, _null, _null);
      else
        result.get$scheme();
      return new A._Record_3_originalUrl(importer, result, url);
    },
    importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, quiet) {
      return this._importCache.putIfAbsent$2(canonicalUrl, new A.ImportCache_importCanonical_closure(this, importer, canonicalUrl, originalUrl, quiet));
    },
    importCanonical$3$originalUrl(importer, canonicalUrl, originalUrl) {
      return this.importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, false);
    },
    importCanonical$2(importer, canonicalUrl) {
      return this.importCanonical$4$originalUrl$quiet(importer, canonicalUrl, null, false);
    },
    humanize$1(canonicalUrl) {
      var t2,
        t1 = this._canonicalizeCache;
      t1 = A.IterableNullableExtension_whereNotNull(t1.get$values(t1), type$.Record_3_Importer_and_Uri_and_Uri_originalUrl);
      t2 = t1.$ti;
      t2 = A.NullableExtension_andThen(A.minBy(new A.MappedIterable(new A.WhereIterable(t1, new A.ImportCache_humanize_closure(canonicalUrl), t2._eval$1("WhereIterable<Iterable.E>")), new A.ImportCache_humanize_closure0(), t2._eval$1("MappedIterable<Iterable.E,Uri>")), new A.ImportCache_humanize_closure1()), new A.ImportCache_humanize_closure2(canonicalUrl));
      return t2 == null ? canonicalUrl : t2;
    },
    sourceMapUrl$1(_, canonicalUrl) {
      var t1 = this._resultsCache.$index(0, canonicalUrl);
      t1 = t1 == null ? null : t1.get$sourceMapUrl(t1);
      return t1 == null ? canonicalUrl : t1;
    },
    clearCanonicalize$1(url) {
      var t1 = this._canonicalizeCache;
      t1.remove$1(0, new A._Record_2_forImport(url, false));
      t1.remove$1(0, new A._Record_2_forImport(url, true));
      this._relativeCanonicalizeCache.removeWhere$1(0, new A.ImportCache_clearCanonicalize_closure(url));
    },
    clearImport$1(canonicalUrl) {
      this._resultsCache.remove$1(0, canonicalUrl);
      this._importCache.remove$1(0, canonicalUrl);
    }
  };
  A.ImportCache_canonicalize_closure.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.baseUrl,
        t2 = t1 == null ? null : t1.resolveUri$1(_this.url);
      if (t2 == null)
        t2 = _this.url;
      return _this.$this._canonicalize$4(_this.baseImporter, t2, t1, _this.forImport);
    },
    $signature: 100
  };
  A.ImportCache_canonicalize_closure0.prototype = {
    call$0() {
      var t1, t2, t3, t4, t5, t6, _i, _0_0, result, t7, _this = this;
      for (t1 = _this.$this, t2 = t1._importers, t3 = t2.length, t4 = _this.url, t5 = _this.baseUrl, t6 = _this.forImport, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        _0_0 = t1._canonicalize$4(t2[_i], t4, t5, t6);
        if (_0_0 != null) {
          result = _0_0;
          t7 = true;
        } else {
          result = null;
          t7 = false;
        }
        if (t7)
          return result;
      }
      return null;
    },
    $signature: 100
  };
  A.ImportCache__canonicalize_closure.prototype = {
    call$0() {
      var t1 = type$.nullable_Object;
      return A.runZoned(new A.ImportCache__canonicalize__closure(this.importer, this.resolved), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__inImportRule, true], t1, t1), type$.nullable_Uri);
    },
    $signature: 56
  };
  A.ImportCache__canonicalize__closure.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 56
  };
  A.ImportCache__canonicalize_closure0.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 56
  };
  A.ImportCache_importCanonical_closure.prototype = {
    call$0() {
      var t2, t3, t4, t5, _this = this,
        t1 = _this.canonicalUrl,
        result = _this.importer.load$1(0, t1);
      if (result == null)
        return null;
      t2 = _this.$this;
      t2._resultsCache.$indexSet(0, t1, result);
      t3 = result.contents;
      t4 = result.syntax;
      t5 = _this.originalUrl;
      t1 = t5 == null ? t1 : t5.resolveUri$1(t1);
      return A.Stylesheet_Stylesheet$parse(t3, t4, _this.quiet ? $.$get$Logger_quiet() : t2._logger, t1);
    },
    $signature: 112
  };
  A.ImportCache_humanize_closure.prototype = {
    call$1(result) {
      return J.$eq$(result._1, this.canonicalUrl);
    },
    $signature: 316
  };
  A.ImportCache_humanize_closure0.prototype = {
    call$1(result) {
      return result._2;
    },
    $signature: 317
  };
  A.ImportCache_humanize_closure1.prototype = {
    call$1(url) {
      return url.get$path(url).length;
    },
    $signature: 111
  };
  A.ImportCache_humanize_closure2.prototype = {
    call$1(url) {
      var t1 = $.$get$url(),
        t2 = this.canonicalUrl;
      return url.resolve$1(A.ParsedPath_ParsedPath$parse(t2.get$path(t2), t1.style).get$basename());
    },
    $signature: 48
  };
  A.ImportCache_clearCanonicalize_closure.prototype = {
    call$2(key, _) {
      return J.$eq$(key._values[0], this.url);
    },
    $signature: 318
  };
  A.Importer.prototype = {
    modificationTime$1(url) {
      return new A.DateTime(Date.now(), false);
    },
    couldCanonicalize$2(url, canonicalUrl) {
      return true;
    }
  };
  A.AsyncImporter.prototype = {};
  A.FilesystemImporter.prototype = {
    canonicalize$1(_, url) {
      if (url.get$scheme() !== "file" && url.get$scheme() !== "")
        return null;
      return A.NullableExtension_andThen(A.resolveImportPath(A.join(this._loadPath, $.$get$context().style.pathFromUri$1(A._parseUri(url)), null)), new A.FilesystemImporter_canonicalize_closure());
    },
    load$1(_, url) {
      var path = $.$get$context().style.pathFromUri$1(A._parseUri(url)),
        t1 = A.readFile(path),
        t2 = A.Syntax_forPath(path),
        t3 = url.get$scheme();
      if (t3 === "")
        A.throwExpression(A.ArgumentError$value(url, "sourceMapUrl", "must be absolute"));
      return new A.ImporterResult(t1, url, t2);
    },
    modificationTime$1(url) {
      return A.modificationTime($.$get$context().style.pathFromUri$1(A._parseUri(url)));
    },
    couldCanonicalize$2(url, canonicalUrl) {
      var t1, t2, basename, canonicalBasename;
      if (url.get$scheme() !== "file" && url.get$scheme() !== "")
        return false;
      if (canonicalUrl.get$scheme() !== "file")
        return false;
      t1 = $.$get$url();
      t2 = t1.style;
      basename = A.ParsedPath_ParsedPath$parse(url.get$path(url), t2).get$basename();
      canonicalBasename = A.ParsedPath_ParsedPath$parse(canonicalUrl.get$path(canonicalUrl), t2).get$basename();
      if (!B.JSString_methods.startsWith$1(basename, "_") && B.JSString_methods.startsWith$1(canonicalBasename, "_"))
        canonicalBasename = B.JSString_methods.substring$1(canonicalBasename, 1);
      return basename === canonicalBasename || basename === t1.withoutExtension$1(canonicalBasename);
    },
    toString$0(_) {
      return this._loadPath;
    }
  };
  A.FilesystemImporter_canonicalize_closure.prototype = {
    call$1(resolved) {
      var t2, t0, _null = null,
        t1 = A.isNodeJs() ? self.process : _null;
      if (!J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "win32")) {
        t1 = A.isNodeJs() ? self.process : _null;
        t1 = J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "darwin");
      } else
        t1 = true;
      if (t1) {
        t1 = $.$get$context();
        t2 = A._realCasePath(A.absolute(t1.normalize$1(resolved), _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null));
        t0 = t2;
        t2 = t1;
        t1 = t0;
      } else {
        t1 = $.$get$context();
        t2 = t1.canonicalize$1(0, resolved);
        t0 = t2;
        t2 = t1;
        t1 = t0;
      }
      return t2.toUri$1(t1);
    },
    $signature: 164
  };
  A.NoOpImporter.prototype = {};
  A.ImporterResult.prototype = {
    get$sourceMapUrl(_) {
      return this._sourceMapUrl;
    }
  };
  A.resolveImportPath_closure.prototype = {
    call$0() {
      return A._exactlyOne(A._tryPath($.$get$context().withoutExtension$1(this.path) + ".import" + this.extension));
    },
    $signature: 32
  };
  A.resolveImportPath_closure0.prototype = {
    call$0() {
      return A._exactlyOne(A._tryPathWithExtensions(this.path + ".import"));
    },
    $signature: 32
  };
  A._tryPathAsDirectory_closure.prototype = {
    call$0() {
      return A._exactlyOne(A._tryPathWithExtensions(A.join(this.path, "index.import", null)));
    },
    $signature: 32
  };
  A._exactlyOne_closure.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A._exactlyOne_closure0.prototype = {
    call$1(path) {
      var t1 = $.$get$context();
      return "  " + t1.prettyUri$1(t1.toUri$1(path));
    },
    $signature: 7
  };
  A.InterpolationBuffer.prototype = {
    writeCharCode$1(character) {
      this._interpolation_buffer$_text._contents += A.Primitives_stringFromCharCode(character);
      return null;
    },
    addInterpolation$1(interpolation) {
      var _0_4, first, rest, _this = this, _null = null,
        toAdd = interpolation.contents,
        t1 = toAdd.length;
      if (t1 === 0)
        return;
      _0_4 = A._InitializedCell$(new A.InterpolationBuffer_addInterpolation_closure(toAdd));
      if (t1 >= 1)
        if (typeof _0_4._readFinal$0() == "string") {
          first = _0_4._readFinal$0();
          rest = B.JSArray_methods.sublist$1(toAdd, 1);
          t1 = true;
        } else {
          rest = _null;
          first = rest;
          t1 = false;
        }
      else {
        rest = _null;
        first = rest;
        t1 = false;
      }
      if (t1) {
        _this._interpolation_buffer$_text._contents += A.S(first);
        toAdd = rest;
      }
      _this._flushText$0();
      t1 = _this._interpolation_buffer$_contents;
      B.JSArray_methods.addAll$1(t1, toAdd);
      if (typeof B.JSArray_methods.get$last(t1) == "string")
        _this._interpolation_buffer$_text._contents += A.S(t1.pop());
    },
    _flushText$0() {
      var t1 = this._interpolation_buffer$_text,
        t2 = t1._contents;
      if (t2.length === 0)
        return;
      this._interpolation_buffer$_contents.push(t2.charCodeAt(0) == 0 ? t2 : t2);
      t1._contents = "";
    },
    interpolation$1(span) {
      var t1 = A.List_List$of(this._interpolation_buffer$_contents, true, type$.Object),
        t2 = this._interpolation_buffer$_text._contents;
      if (t2.length !== 0)
        t1.push(t2.charCodeAt(0) == 0 ? t2 : t2);
      return A.Interpolation$(t1, span);
    },
    toString$0(_) {
      var t1, t2, _i, t3, element;
      for (t1 = this._interpolation_buffer$_contents, t2 = t1.length, _i = 0, t3 = ""; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        element = t1[_i];
        t3 = typeof element == "string" ? t3 + element : t3 + "#{" + A.S(element) + A.Primitives_stringFromCharCode(125);
      }
      t1 = t3 + this._interpolation_buffer$_text.toString$0(0);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A.InterpolationBuffer_addInterpolation_closure.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.InterpolationMap.prototype = {
    mapException$1(error) {
      var t3, t4, _this = this,
        target = error.get$span(error),
        source = _this.mapSpan$1(target),
        startIndex = _this._indexInContents$1(target.get$start(target)),
        endIndex = _this._indexInContents$1(target.get$end(target)),
        t1 = _this._interpolation.contents,
        t2 = error._span_exception$_message;
      if (!A.SubListIterable$(t1, startIndex, null, A._arrayInstanceType(t1)._precomputed1).take$1(0, endIndex - startIndex + 1).any$1(0, new A.InterpolationMap_mapException_closure()))
        return new A.SourceSpanFormatException(error.get$source(), t2, source);
      else {
        t1 = type$.SourceSpan;
        t3 = type$.String;
        t4 = A.LinkedHashMap_LinkedHashMap$_literal([target, "error in interpolated output"], t1, t3);
        error.get$source();
        return new A.MultiSourceSpanFormatException("", A.ConstantMap_ConstantMap$from(t4, t1, t3), t2, source);
      }
    },
    mapSpan$1(target) {
      var t1, start, end, t2, _this = this, _null = null,
        _0_0 = new A._Record_2(_this._mapLocation$1(target.get$start(target)), _this._mapLocation$1(target.get$end(target))),
        _0_1 = A._InitializedCell$(new A.InterpolationMap_mapSpan_closure(_0_0)),
        _0_2 = A._InitializedCell$(new A.InterpolationMap_mapSpan_closure0(_0_0));
      $label0$0: {
        t1 = type$.FileSpan;
        if (t1._is(_0_1._readFinal$0())) {
          start = _0_1._readFinal$0();
          if (t1._is(_0_2._readFinal$0())) {
            end = _0_2._readFinal$0();
            t2 = true;
          } else {
            end = _null;
            t2 = false;
          }
        } else {
          end = _null;
          start = end;
          t2 = false;
        }
        if (t2) {
          t1 = start.expand$1(0, end);
          break $label0$0;
        }
        if (t1._is(_0_1._readFinal$0())) {
          start = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.FileLocation) {
            end = _0_2._readFinal$0();
            t2 = true;
          } else {
            end = _null;
            t2 = false;
          }
        } else {
          end = _null;
          start = end;
          t2 = false;
        }
        if (t2) {
          t1 = _this._interpolation.span;
          t1 = t1.get$file(t1).span$2(0, _this._expandInterpolationSpanLeft$1(start.get$start(start)), end.offset);
          break $label0$0;
        }
        if (_0_1._readFinal$0() instanceof A.FileLocation) {
          start = _0_1._readFinal$0();
          if (t1._is(_0_2._readFinal$0())) {
            end = _0_2._readFinal$0();
            t1 = true;
          } else {
            end = _null;
            t1 = false;
          }
        } else {
          end = _null;
          start = end;
          t1 = false;
        }
        if (t1) {
          t1 = _this._interpolation.span;
          t1 = t1.get$file(t1).span$2(0, start.offset, _this._expandInterpolationSpanRight$1(end.get$end(end)));
          break $label0$0;
        }
        if (_0_1._readFinal$0() instanceof A.FileLocation) {
          start = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.FileLocation) {
            end = _0_2._readFinal$0();
            t1 = true;
          } else {
            end = _null;
            t1 = false;
          }
        } else {
          end = _null;
          start = end;
          t1 = false;
        }
        if (t1) {
          t1 = _this._interpolation.span;
          t1 = t1.get$file(t1).span$2(0, start.offset, end.offset);
          break $label0$0;
        }
        t1 = A.throwExpression("[BUG] Unreachable");
      }
      return t1;
    },
    _mapLocation$1(target) {
      var chunk, t4, previousLocation, _this = this,
        index = _this._indexInContents$1(target),
        t1 = _this._interpolation,
        t2 = t1.contents,
        _0_0 = t2[index],
        t3 = type$.Expression;
      if (t3._is(_0_0)) {
        chunk = _0_0;
        t4 = true;
      } else {
        chunk = null;
        t4 = false;
      }
      if (t4)
        return chunk.get$span(chunk);
      t4 = index === 0;
      t1 = t1.span;
      if (t4)
        previousLocation = t1.get$start(t1);
      else {
        t1 = t1.get$file(t1);
        t2 = t3._as(t2[index - 1]);
        t2 = t2.get$span(t2);
        previousLocation = A.FileLocation$_(t1, _this._expandInterpolationSpanRight$1(t2.get$end(t2)));
      }
      t1 = t4 ? 0 : _this._targetLocations[index - 1].get$offset();
      return A.FileLocation$_(previousLocation.file, previousLocation.offset + (target.offset - t1));
    },
    _indexInContents$1(target) {
      var t1, t2, t3, i;
      for (t1 = this._targetLocations, t2 = t1.length, t3 = target.offset, i = 0; i < t2; ++i)
        if (t3 < t1[i].get$offset())
          return i;
      return this._interpolation.contents.length - 1;
    },
    _expandInterpolationSpanLeft$1(start) {
      var i0, prev, char,
        source = start.file._decodedChars,
        i = start.offset - 1;
      for (; i >= 0;) {
        i0 = i - 1;
        prev = source[i];
        if (prev === 123) {
          if (source[i0] === 35) {
            i = i0;
            break;
          }
          i = i0;
        } else if (prev === 47) {
          i = i0 - 1;
          if (source[i0] === 42)
            for (; true;) {
              i0 = i - 1;
              if (source[i] !== 42) {
                i = i0;
                continue;
              }
              i = i0;
              do {
                i0 = i - 1;
                char = source[i];
                if (char === 42) {
                  i = i0;
                  continue;
                } else
                  break;
              } while (true);
              if (char === 47) {
                i = i0;
                break;
              }
              i = i0;
            }
        } else
          i = i0;
      }
      return i;
    },
    _expandInterpolationSpanRight$1(end) {
      var t1, i0, next, second, t2, char,
        source = end.file._decodedChars,
        i = end.offset;
      for (t1 = source.length; i < t1;) {
        i0 = i + 1;
        next = source[i];
        if (next === 125) {
          i = i0;
          break;
        }
        if (next === 47) {
          i = i0 + 1;
          second = source[i0];
          if (second === 47) {
            while (true) {
              i0 = i + 1;
              t2 = source[i];
              if (!!(t2 === 10 || t2 === 13 || t2 === 12))
                break;
              i = i0;
            }
            i = i0;
          } else if (second === 42)
            for (; true;) {
              i0 = i + 1;
              if (source[i] !== 42) {
                i = i0;
                continue;
              }
              i = i0;
              do {
                i0 = i + 1;
                char = source[i];
                if (char === 42) {
                  i = i0;
                  continue;
                } else
                  break;
              } while (true);
              if (char === 47) {
                i = i0;
                break;
              }
              i = i0;
            }
        } else
          i = i0;
      }
      return i;
    }
  };
  A.InterpolationMap_mapException_closure.prototype = {
    call$1($content) {
      return type$.Expression._is($content);
    },
    $signature: 77
  };
  A.InterpolationMap_mapSpan_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 14
  };
  A.InterpolationMap_mapSpan_closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 14
  };
  A._realCasePath_helper.prototype = {
    call$1(path) {
      var dirname = $.$get$context().dirname$1(path);
      if (dirname === path)
        return path;
      return $._realCaseCache.putIfAbsent$2(path, new A._realCasePath_helper_closure(this, dirname, path));
    },
    $signature: 7
  };
  A._realCasePath_helper_closure.prototype = {
    call$0() {
      var matches, t1, _0_0, match, t3, exception,
        realDirname = this.helper.call$1(this.dirname),
        t2 = this.path,
        basename = A.ParsedPath_ParsedPath$parse(t2, $.$get$context().style).get$basename();
      try {
        matches = J.where$1$ax(A.listDir(realDirname, false), new A._realCasePath_helper__closure(basename)).toList$0(0);
        t1 = null;
        _0_0 = matches;
        $label0$0: {
          match = null;
          if (J.get$length$asx(_0_0) === 1) {
            match = J.$index$asx(_0_0, 0);
            t3 = true;
          } else
            t3 = false;
          if (t3) {
            t1 = match;
            break $label0$0;
          }
          t1 = A.join(realDirname, basename, null);
          break $label0$0;
        }
        t1 = t1;
        return t1;
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.FileSystemException)
          return t2;
        else
          throw exception;
      }
    },
    $signature: 22
  };
  A._realCasePath_helper__closure.prototype = {
    call$1(realPath) {
      return A.equalsIgnoreCase(A.ParsedPath_ParsedPath$parse(realPath, $.$get$context().style).get$basename(), this.basename);
    },
    $signature: 10
  };
  A.FileSystemException.prototype = {
    toString$0(_) {
      var t1 = $.$get$context();
      return t1.prettyUri$1(t1.toUri$1(this.path)) + ": " + this.message;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A._readFile_closure.prototype = {
    call$0() {
      return J.readFileSync$2$x(A.fs(), this.path, this.encoding);
    },
    $signature: 58
  };
  A.writeFile_closure.prototype = {
    call$0() {
      return J.writeFileSync$2$x(A.fs(), this.path, this.contents);
    },
    $signature: 0
  };
  A.deleteFile_closure.prototype = {
    call$0() {
      return J.unlinkSync$1$x(A.fs(), this.path);
    },
    $signature: 0
  };
  A.readStdin_closure.prototype = {
    call$1(result) {
      this._box_0.contents = result;
      this.completer.complete$1(result);
    },
    $signature: 85
  };
  A.readStdin_closure0.prototype = {
    call$1(chunk) {
      this.sink.add$1(0, type$.List_int._as(chunk));
    },
    call$0() {
      return this.call$1(null);
    },
    "call*": "call$1",
    $requiredArgCount: 0,
    $defaultValues() {
      return [null];
    },
    $signature: 94
  };
  A.readStdin_closure1.prototype = {
    call$1(_) {
      this.sink.close$0(0);
    },
    call$0() {
      return this.call$1(null);
    },
    "call*": "call$1",
    $requiredArgCount: 0,
    $defaultValues() {
      return [null];
    },
    $signature: 94
  };
  A.readStdin_closure2.prototype = {
    call$1(e) {
      A.printError("Failed to read from stdin");
      A.printError(e);
      e.toString;
      this.completer.completeError$1(e);
    },
    call$0() {
      return this.call$1(null);
    },
    "call*": "call$1",
    $requiredArgCount: 0,
    $defaultValues() {
      return [null];
    },
    $signature: 94
  };
  A.fileExists_closure.prototype = {
    call$0() {
      var error, systemError, exception,
        t1 = this.path;
      if (!J.existsSync$1$x(A.fs(), t1))
        return false;
      try {
        t1 = J.isFile$0$x(J.statSync$1$x(A.fs(), t1));
        return t1;
      } catch (exception) {
        error = A.unwrapException(exception);
        systemError = type$.JsSystemError._as(error);
        if (J.$eq$(J.get$code$x(systemError), "ENOENT"))
          return false;
        throw exception;
      }
    },
    $signature: 1
  };
  A.dirExists_closure.prototype = {
    call$0() {
      var error, systemError, exception,
        t1 = this.path;
      if (!J.existsSync$1$x(A.fs(), t1))
        return false;
      try {
        t1 = J.isDirectory$0$x(J.statSync$1$x(A.fs(), t1));
        return t1;
      } catch (exception) {
        error = A.unwrapException(exception);
        systemError = type$.JsSystemError._as(error);
        if (J.$eq$(J.get$code$x(systemError), "ENOENT"))
          return false;
        throw exception;
      }
    },
    $signature: 1
  };
  A.ensureDir_closure.prototype = {
    call$0() {
      var error, systemError, exception, t1;
      try {
        J.mkdirSync$1$x(A.fs(), this.path);
      } catch (exception) {
        error = A.unwrapException(exception);
        systemError = type$.JsSystemError._as(error);
        if (J.$eq$(J.get$code$x(systemError), "EEXIST"))
          return;
        if (!J.$eq$(J.get$code$x(systemError), "ENOENT"))
          throw exception;
        t1 = this.path;
        A.ensureDir($.$get$context().dirname$1(t1));
        J.mkdirSync$1$x(A.fs(), t1);
      }
    },
    $signature: 0
  };
  A.listDir_closure.prototype = {
    call$0() {
      var t1 = this.path;
      if (!this.recursive)
        return J.map$1$1$ax(J.readdirSync$1$x(A.fs(), t1), new A.listDir__closure(t1), type$.String).super$Iterable$where(0, new A.listDir__closure0());
      else
        return new A.listDir_closure_list().call$1(t1);
    },
    $signature: 149
  };
  A.listDir__closure.prototype = {
    call$1(child) {
      return A.join(this.path, A._asString(child), null);
    },
    $signature: 101
  };
  A.listDir__closure0.prototype = {
    call$1(child) {
      return !A.dirExists(child);
    },
    $signature: 10
  };
  A.listDir_closure_list.prototype = {
    call$1($parent) {
      return J.expand$1$1$ax(J.readdirSync$1$x(A.fs(), $parent), new A.listDir__list_closure($parent, this), type$.String);
    },
    $signature: 174
  };
  A.listDir__list_closure.prototype = {
    call$1(child) {
      var path = A.join(this.parent, A._asString(child), null);
      return A.dirExists(path) ? this.list.call$1(path) : A._setArrayType([path], type$.JSArray_String);
    },
    $signature: 178
  };
  A.modificationTime_closure.prototype = {
    call$0() {
      var t2,
        t1 = J.getTime$0$x(J.get$mtime$x(J.statSync$1$x(A.fs(), this.path)));
      if (Math.abs(t1) <= 864e13)
        t2 = false;
      else
        t2 = true;
      if (t2)
        A.throwExpression(A.ArgumentError$("DateTime is outside valid range: " + A.S(t1), null));
      A.checkNotNullable(false, "isUtc", type$.bool);
      return new A.DateTime(t1, false);
    },
    $signature: 180
  };
  A.watchDir_closure.prototype = {
    call$2(path, _) {
      var t1 = this._box_0.controller;
      return t1 == null ? null : t1.add$1(0, new A.WatchEvent(B.ChangeType_add, path));
    },
    call$1(path) {
      return this.call$2(path, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 181
  };
  A.watchDir_closure0.prototype = {
    call$2(path, _) {
      var t1 = this._box_0.controller;
      return t1 == null ? null : t1.add$1(0, new A.WatchEvent(B.ChangeType_modify, path));
    },
    call$1(path) {
      return this.call$2(path, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 181
  };
  A.watchDir_closure1.prototype = {
    call$1(path) {
      var t1 = this._box_0.controller;
      return t1 == null ? null : t1.add$1(0, new A.WatchEvent(B.ChangeType_remove, path));
    },
    $signature: 85
  };
  A.watchDir_closure2.prototype = {
    call$1(error) {
      var t1 = this._box_0.controller;
      return t1 == null ? null : t1.addError$1(error);
    },
    $signature: 110
  };
  A.watchDir_closure3.prototype = {
    call$0() {
      var controller = A.StreamController_StreamController(new A.watchDir__closure(this.watcher), null, null, null, false, type$.WatchEvent);
      this._box_0.controller = controller;
      this.completer.complete$1(new A._ControllerStream(controller, A._instanceType(controller)._eval$1("_ControllerStream<1>")));
    },
    $signature: 2
  };
  A.watchDir__closure.prototype = {
    call$0() {
      J.close$0$x(this.watcher);
    },
    $signature: 2
  };
  A.JSArray0.prototype = {};
  A.Chokidar.prototype = {};
  A.ChokidarOptions.prototype = {};
  A.ChokidarWatcher.prototype = {};
  A.JSFunction.prototype = {};
  A.ImmutableList.prototype = {};
  A.ImmutableMap.prototype = {};
  A.NodeImporterResult.prototype = {};
  A.RenderContext.prototype = {};
  A.RenderContextOptions.prototype = {};
  A.RenderContextResult.prototype = {};
  A.RenderContextResultStats.prototype = {};
  A.JSClass.prototype = {};
  A.JSUrl.prototype = {};
  A._PropertyDescriptor.prototype = {};
  A._QuietLogger.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
    },
    warn$1($receiver, message) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, null);
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    },
    debug$2(_, message, span) {
    }
  };
  A.DeprecationHandlingLogger.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
      this._inner.warn$4$deprecation$span$trace(0, message, deprecation, span, trace);
    },
    warn$3$span$trace($receiver, message, span, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, trace);
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    },
    warn$2$trace($receiver, message, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, trace);
    },
    warnForDeprecation$4$span$trace(deprecation, message, span, trace) {
      var _0_0, _0_1, _0_3, t1, t2, count, _this = this, _null = null;
      if (_this.fatalDeprecations.contains$1(0, deprecation)) {
        message += string$.x0a_This + deprecation.toString$0(0) + string$.x20depre;
        _0_0 = new A._Record_2(span, trace);
        _0_1 = A._InitializedCell$(new A.DeprecationHandlingLogger_warnForDeprecation_closure(_0_0));
        _0_3 = A._InitializedCell$(new A.DeprecationHandlingLogger_warnForDeprecation_closure0(_0_0));
        $label0$0: {
          if (_0_1.readFinal$0() != null) {
            span = _0_1.readFinal$0();
            t1 = true;
          } else {
            span = _null;
            t1 = false;
          }
          if (t1)
            if (_0_3.readFinal$0() != null) {
              trace = _0_3.readFinal$0();
              t1 = true;
            } else {
              trace = _null;
              t1 = false;
            }
          else {
            trace = _null;
            t1 = false;
          }
          if (t1) {
            t1 = A.SassRuntimeException$(message, span, trace, _null);
            break $label0$0;
          }
          if (_0_1.readFinal$0() != null) {
            span = _0_1.readFinal$0();
            t1 = true;
          } else {
            span = _null;
            t1 = false;
          }
          if (t1 && _0_3.readFinal$0() == null) {
            t1 = A.SassException$(message, span, _null);
            break $label0$0;
          }
          t1 = A.SassScriptException$(message, _null);
          break $label0$0;
        }
        throw A.wrapException(t1);
      }
      if (deprecation.isFuture && !_this.futureDeprecations.contains$1(0, deprecation))
        return;
      if (_this.limitRepetition) {
        t1 = _this._warningCounts;
        t2 = t1.$index(0, deprecation);
        count = (t2 == null ? 0 : t2) + 1;
        t1.$indexSet(0, deprecation, count);
        if (count > 5)
          return;
      }
      _this._inner.warn$4$deprecation$span$trace(0, message, true, span, trace);
    },
    debug$2(_, message, span) {
      return this._inner.debug$2(0, message, span);
    },
    summarize$1$js(js) {
      var t2, total,
        t1 = this._warningCounts;
      t1 = t1.get$values(t1);
      t2 = A._instanceType(t1);
      total = A.IterableIntegerExtension_get_sum(new A.MappedIterable(new A.WhereIterable(t1, new A.DeprecationHandlingLogger_summarize_closure(), t2._eval$1("WhereIterable<Iterable.E>")), new A.DeprecationHandlingLogger_summarize_closure0(), t2._eval$1("MappedIterable<Iterable.E,int>")));
      if (total > 0) {
        t1 = js ? "" : string$.x0aRun_i;
        this._inner.warn$1(0, "" + total + string$.x20repet + t1);
      }
    }
  };
  A.DeprecationHandlingLogger_warnForDeprecation_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 186
  };
  A.DeprecationHandlingLogger_warnForDeprecation_closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 187
  };
  A.DeprecationHandlingLogger_summarize_closure.prototype = {
    call$1(count) {
      return count > 5;
    },
    $signature: 47
  };
  A.DeprecationHandlingLogger_summarize_closure0.prototype = {
    call$1(count) {
      return count - 5;
    },
    $signature: 191
  };
  A.StderrLogger.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
      var t2,
        result = new A.StringBuffer(""),
        t1 = this.color;
      if (t1) {
        t2 = result._contents = "" + "\x1b[33m\x1b[1m";
        t2 = result._contents = (deprecation ? result._contents = t2 + "Deprecation " : t2) + "Warning\x1b[0m";
      } else
        t2 = result._contents = (deprecation ? result._contents = "" + "DEPRECATION " : "") + "WARNING";
      if (span == null)
        t1 = result._contents = t2 + (": " + message + "\n");
      else if (trace != null) {
        t1 = t2 + (": " + message + "\n\n" + span.highlight$1$color(t1) + "\n");
        result._contents = t1;
      } else {
        t1 = t2 + (" on " + span.message$2$color(0, "\n" + message, t1) + "\n");
        result._contents = t1;
      }
      if (trace != null)
        result._contents = t1 + (A.indent(B.JSString_methods.trimRight$0(trace.toString$0(0)), 4) + "\n");
      A.printError(result);
    },
    warn$1($receiver, message) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, null);
    },
    warn$3$span$trace($receiver, message, span, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, trace);
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    },
    warn$2$trace($receiver, message, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, trace);
    },
    debug$2(_, message, span) {
      var url, t3,
        t1 = span.file,
        t2 = span._file$_start;
      if (A.FileLocation$_(t1, t2).file.url == null)
        url = "-";
      else {
        t3 = A.FileLocation$_(t1, t2);
        url = $.$get$context().prettyUri$1(t3.file.url);
      }
      t1 = A.FileLocation$_(t1, t2);
      t1 = t1.file.getLine$1(t1.offset);
      t2 = this.color ? "\x1b[1mDebug\x1b[0m" : "DEBUG";
      t2 = "" + (url + ":" + (t1 + 1) + " ") + t2 + (": " + message);
      A.printError(t2.charCodeAt(0) == 0 ? t2 : t2);
    }
  };
  A.TrackingLogger.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
      this._emittedWarning = true;
      this._tracking$_logger.warn$4$deprecation$span$trace(0, message, deprecation, span, trace);
    },
    warn$3$span$trace($receiver, message, span, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, trace);
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    },
    warn$2$trace($receiver, message, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, trace);
    },
    debug$2(_, message, span) {
      this._emittedDebug = true;
      this._tracking$_logger.debug$2(0, message, span);
    }
  };
  A.BuiltInModule.prototype = {
    get$upstream() {
      return B.List_empty7;
    },
    get$variableNodes() {
      return B.Map_empty4;
    },
    get$extensionStore() {
      return B.C_EmptyExtensionStore;
    },
    get$css(_) {
      return new A.CssStylesheet(B.List_empty3, A.SourceFile$decoded(B.List_empty4, this.url).span$2(0, 0, 0));
    },
    get$preModuleComments() {
      return B.Map_empty2;
    },
    get$transitivelyContainsCss() {
      return false;
    },
    get$transitivelyContainsExtensions() {
      return false;
    },
    setVariable$3($name, value, nodeWithSpan) {
      if (!this.variables.containsKey$1($name))
        throw A.wrapException(A.SassScriptException$("Undefined variable.", null));
      throw A.wrapException(A.SassScriptException$("Cannot modify built-in variable.", null));
    },
    variableIdentity$1($name) {
      return this;
    },
    cloneCss$0() {
      return this;
    },
    $isModule0: 1,
    get$url(receiver) {
      return this.url;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    },
    get$variables() {
      return this.variables;
    }
  };
  A.ForwardedModuleView.prototype = {
    get$url(_) {
      var t1 = this._forwarded_view$_inner;
      return t1.get$url(t1);
    },
    get$upstream() {
      return this._forwarded_view$_inner.get$upstream();
    },
    get$extensionStore() {
      return this._forwarded_view$_inner.get$extensionStore();
    },
    get$css(_) {
      var t1 = this._forwarded_view$_inner;
      return t1.get$css(t1);
    },
    get$preModuleComments() {
      return this._forwarded_view$_inner.get$preModuleComments();
    },
    get$transitivelyContainsCss() {
      return this._forwarded_view$_inner.get$transitivelyContainsCss();
    },
    get$transitivelyContainsExtensions() {
      return this._forwarded_view$_inner.get$transitivelyContainsExtensions();
    },
    setVariable$3($name, value, nodeWithSpan) {
      var shownVariables, t2, _1_0, hiddenVariables, _2_0, prefix, _null = null,
        _s19_ = "Undefined variable.",
        t1 = this._rule,
        _0_0 = t1.shownVariables;
      if (_0_0 != null) {
        shownVariables = _0_0;
        t2 = true;
      } else {
        shownVariables = _null;
        t2 = false;
      }
      if (t2 && !shownVariables._base.contains$1(0, $name))
        throw A.wrapException(A.SassScriptException$(_s19_, _null));
      else {
        _1_0 = t1.hiddenVariables;
        if (_1_0 != null) {
          hiddenVariables = _1_0;
          t2 = true;
        } else {
          hiddenVariables = _null;
          t2 = false;
        }
        if (t2 && hiddenVariables._base.contains$1(0, $name))
          throw A.wrapException(A.SassScriptException$(_s19_, _null));
      }
      _2_0 = t1.prefix;
      if (_2_0 != null) {
        prefix = _2_0;
        t1 = true;
      } else {
        prefix = _null;
        t1 = false;
      }
      if (t1) {
        if (!B.JSString_methods.startsWith$1($name, prefix))
          throw A.wrapException(A.SassScriptException$(_s19_, _null));
        $name = B.JSString_methods.substring$1($name, prefix.length);
      }
      return this._forwarded_view$_inner.setVariable$3($name, value, nodeWithSpan);
    },
    variableIdentity$1($name) {
      var prefix, t1,
        _0_0 = this._rule.prefix;
      if (_0_0 != null) {
        prefix = _0_0;
        t1 = true;
      } else {
        prefix = null;
        t1 = false;
      }
      if (t1)
        $name = B.JSString_methods.substring$1($name, prefix.length);
      return this._forwarded_view$_inner.variableIdentity$1($name);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ForwardedModuleView && this._forwarded_view$_inner.$eq(0, other._forwarded_view$_inner) && this._rule === other._rule;
    },
    get$hashCode(_) {
      var t1 = this._forwarded_view$_inner;
      return (t1.get$hashCode(t1) ^ A.Primitives_objectHashCode(this._rule)) >>> 0;
    },
    cloneCss$0() {
      return A.ForwardedModuleView$(this._forwarded_view$_inner.cloneCss$0(), this._rule, this.$ti._precomputed1);
    },
    toString$0(_) {
      return "forwarded " + this._forwarded_view$_inner.toString$0(0);
    },
    $isModule0: 1,
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    }
  };
  A.ShadowedModuleView.prototype = {
    get$url(_) {
      var t1 = this._shadowed_view$_inner;
      return t1.get$url(t1);
    },
    get$upstream() {
      return this._shadowed_view$_inner.get$upstream();
    },
    get$extensionStore() {
      return this._shadowed_view$_inner.get$extensionStore();
    },
    get$css(_) {
      var t1 = this._shadowed_view$_inner;
      return t1.get$css(t1);
    },
    get$preModuleComments() {
      return this._shadowed_view$_inner.get$preModuleComments();
    },
    get$transitivelyContainsCss() {
      return this._shadowed_view$_inner.get$transitivelyContainsCss();
    },
    get$transitivelyContainsExtensions() {
      return this._shadowed_view$_inner.get$transitivelyContainsExtensions();
    },
    setVariable$3($name, value, nodeWithSpan) {
      if (!this.variables.containsKey$1($name))
        throw A.wrapException(A.SassScriptException$("Undefined variable.", null));
      else
        this._shadowed_view$_inner.setVariable$3($name, value, nodeWithSpan);
    },
    variableIdentity$1($name) {
      return this._shadowed_view$_inner.variableIdentity$1($name);
    },
    $eq(_, other) {
      var t1, t2, _this = this;
      if (other == null)
        return false;
      if (other instanceof A.ShadowedModuleView)
        if (_this._shadowed_view$_inner.$eq(0, other._shadowed_view$_inner)) {
          t1 = _this.variables;
          t1 = t1.get$keys(t1);
          t2 = other.variables;
          if (B.C_IterableEquality.equals$2(0, t1, t2.get$keys(t2))) {
            t1 = _this.functions;
            t1 = t1.get$keys(t1);
            t2 = other.functions;
            if (B.C_IterableEquality.equals$2(0, t1, t2.get$keys(t2))) {
              t1 = _this.mixins;
              t1 = t1.get$keys(t1);
              t2 = other.mixins;
              t2 = B.C_IterableEquality.equals$2(0, t1, t2.get$keys(t2));
              t1 = t2;
            } else
              t1 = false;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    get$hashCode(_) {
      var t1 = this._shadowed_view$_inner;
      return t1.get$hashCode(t1);
    },
    cloneCss$0() {
      var _this = this;
      return new A.ShadowedModuleView(_this._shadowed_view$_inner.cloneCss$0(), _this.variables, _this.variableNodes, _this.functions, _this.mixins, _this.$ti);
    },
    toString$0(_) {
      return "shadowed " + this._shadowed_view$_inner.toString$0(0);
    },
    $isModule0: 1,
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    }
  };
  A.AtRootQueryParser.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.AtRootQueryParser_parse_closure(this));
    }
  };
  A.AtRootQueryParser_parse_closure.prototype = {
    call$0() {
      var include, atRules,
        t1 = this.$this,
        t2 = t1.scanner;
      t2.expectChar$1(40);
      t1.whitespace$0();
      include = t1.scanIdentifier$1("with");
      if (!include)
        t1.expectIdentifier$2$name("without", '"with" or "without"');
      t1.whitespace$0();
      t2.expectChar$1(58);
      t1.whitespace$0();
      atRules = A.LinkedHashSet_LinkedHashSet$_empty(type$.String);
      do {
        atRules.add$1(0, t1.identifier$0().toLowerCase());
        t1.whitespace$0();
      } while (t1.lookingAtIdentifier$0());
      t2.expectChar$1(41);
      t2.expectDone$0();
      return new A.AtRootQuery(include, atRules, atRules.contains$1(0, "all"), atRules.contains$1(0, "rule"));
    },
    $signature: 346
  };
  A._disallowedFunctionNames_closure.prototype = {
    call$1($function) {
      return $function.name;
    },
    $signature: 347
  };
  A.CssParser.prototype = {
    get$plainCss() {
      return true;
    },
    silentComment$0() {
      var t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      this.super$Parser$silentComment();
      this.error$2(0, string$.Silent, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    atRule$2$root(child, root) {
      var $name, _0_0, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(64);
      $name = _this.interpolatedIdentifier$0();
      _this.whitespace$0();
      _0_0 = $name.get$asPlain();
      $label0$0: {
        if ("at-root" === _0_0 || "content" === _0_0 || "debug" === _0_0 || "each" === _0_0 || "error" === _0_0 || "extend" === _0_0 || "for" === _0_0 || "function" === _0_0 || "if" === _0_0 || "include" === _0_0 || "mixin" === _0_0 || "return" === _0_0 || "warn" === _0_0 || "while" === _0_0)
          _this._forbiddenAtRoot$1(start);
        if ("import" === _0_0) {
          t1 = _this._cssImportRule$1(start);
          break $label0$0;
        }
        if ("media" === _0_0) {
          t1 = _this.mediaRule$1(start);
          break $label0$0;
        }
        if ("-moz-document" === _0_0) {
          t1 = _this.mozDocumentRule$2(start, $name);
          break $label0$0;
        }
        if ("supports" === _0_0) {
          t1 = _this.supportsRule$1(start);
          break $label0$0;
        }
        t1 = _this.unknownAtRule$2(start, $name);
        break $label0$0;
      }
      return t1;
    },
    _forbiddenAtRoot$1(start) {
      this.almostAnyValue$0();
      this.error$2(0, "This at-rule isn't allowed in plain CSS.", this.scanner.spanFrom$1(start));
    },
    _cssImportRule$1(start) {
      var t2, urlSpan, modifiers, _this = this,
        t1 = _this.scanner,
        urlStart = new A._SpanScannerState(t1, t1._string_scanner$_position),
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (117 === _0_0 || 85 === _0_0) {
          t2 = _this.dynamicUrl$0();
          break $label0$0;
        }
        t2 = new A.StringExpression(_this.interpolatedString$0().asInterpolation$1$static(true), false);
        break $label0$0;
      }
      urlSpan = t1.spanFrom$1(urlStart);
      _this.whitespace$0();
      modifiers = _this.tryImportModifiers$0();
      _this.expectStatementSeparator$1("@import rule");
      t2 = A._setArrayType([new A.StaticImport(A.Interpolation$(A._setArrayType([t2], type$.JSArray_Object), urlSpan), modifiers, t1.spanFrom$1(urlStart))], type$.JSArray_Import);
      t1 = t1.spanFrom$1(start);
      return new A.ImportRule(A.List_List$unmodifiable(t2, type$.Import), t1);
    },
    parentheses$0() {
      var expression,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expectChar$1(40);
      this.whitespace$0();
      expression = this.expressionUntilComma$0();
      t1.expectChar$1(41);
      return new A.ParenthesizedExpression(expression, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    identifierLike$0() {
      var specialFunction, t2, allowEmptySecondArg, $arguments, t3, t4, _this = this, _null = null,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        identifier = _this.interpolatedIdentifier$0(),
        plain = identifier.get$asPlain(),
        lower = plain.toLowerCase(),
        _0_0 = _this.trySpecialFunction$2(lower, start);
      if (_0_0 != null) {
        specialFunction = _0_0;
        t2 = true;
      } else {
        specialFunction = _null;
        t2 = false;
      }
      if (t2)
        return specialFunction;
      t2 = t1._string_scanner$_position;
      if (t1.scanChar$1(46))
        return _this.namespacedExpression$2(plain, start);
      if (!t1.scanChar$1(40))
        return new A.StringExpression(identifier, false);
      allowEmptySecondArg = lower === "var";
      $arguments = A._setArrayType([], type$.JSArray_Expression);
      if (!t1.scanChar$1(41)) {
        do {
          _this.whitespace$0();
          if (allowEmptySecondArg && $arguments.length === 1 && t1.peekChar$0() === 41) {
            t3 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
            t4 = t3.offset;
            t4 = A._FileSpan$(t3.file, t4, t4);
            $arguments.push(new A.StringExpression(A.Interpolation$(A._setArrayType([""], type$.JSArray_Object), t4), false));
            break;
          }
          $arguments.push(_this.expressionUntilComma$1$singleEquals(true));
          _this.whitespace$0();
        } while (t1.scanChar$1(44));
        t1.expectChar$1(41);
      }
      if ($.$get$_disallowedFunctionNames().contains$1(0, plain))
        _this.error$2(0, string$.This_f, t1.spanFrom$1(start));
      t2 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      t3 = type$.Expression;
      return new A.FunctionExpression(_null, plain, new A.ArgumentInvocation(A.List_List$unmodifiable($arguments, t3), A.ConstantMap_ConstantMap$from(B.Map_empty6, type$.String, t3), _null, _null, t2), t1.spanFrom$1(start));
    },
    namespacedExpression$2(namespace, start) {
      var expression = this.super$StylesheetParser$namespacedExpression(namespace, start);
      this.error$2(0, string$.Modulen, expression.get$span(expression));
    }
  };
  A.KeyframeSelectorParser.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.KeyframeSelectorParser_parse_closure(this));
    },
    _percentage$0() {
      var $self, _0_0,
        t1 = this.scanner,
        t2 = t1.scanChar$1(43) ? "" + A.Primitives_stringFromCharCode(43) : "",
        second = t1.peekChar$0();
      if (!(second != null && second >= 48 && second <= 57) && second !== 46)
        t1.error$1(0, "Expected number.");
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
      }
      if (t1.peekChar$0() === 46) {
        t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        while (true) {
          $self = t1.peekChar$0();
          if (!($self != null && $self >= 48 && $self <= 57))
            break;
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        }
      }
      if (this.scanIdentChar$1(101)) {
        t2 += A.Primitives_stringFromCharCode(101);
        _0_0 = t1.peekChar$0();
        if (43 === _0_0 || 45 === _0_0)
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          t1.error$1(0, "Expected digit.");
        do {
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
          $self = t1.peekChar$0();
        } while ($self != null && $self >= 48 && $self <= 57);
      }
      t1.expectChar$1(37);
      t2 += A.Primitives_stringFromCharCode(37);
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    }
  };
  A.KeyframeSelectorParser_parse_closure.prototype = {
    call$0() {
      var selectors = A._setArrayType([], type$.JSArray_String),
        t1 = this.$this,
        t2 = t1.scanner;
      do {
        t1.whitespace$0();
        if (t1.lookingAtIdentifier$0())
          if (t1.scanIdentifier$1("from"))
            selectors.push("from");
          else {
            t1.expectIdentifier$2$name("to", '"to" or "from"');
            selectors.push("to");
          }
        else
          selectors.push(t1._percentage$0());
        t1.whitespace$0();
      } while (t2.scanChar$1(44));
      t2.expectDone$0();
      return selectors;
    },
    $signature: 26
  };
  A.MediaQueryParser.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.MediaQueryParser_parse_closure(this));
    },
    _mediaQuery$0() {
      var conditions, conjunction, identifier1, identifier2, type, modifier, _this = this, _s3_ = "and", _null = null;
      if (_this.scanner.peekChar$0() === 40) {
        conditions = A._setArrayType([_this._mediaInParens$0()], type$.JSArray_String);
        _this.whitespace$0();
        if (_this.scanIdentifier$1(_s3_)) {
          _this.expectWhitespace$0();
          B.JSArray_methods.addAll$1(conditions, _this._mediaLogicSequence$1(_s3_));
          conjunction = true;
        } else if (_this.scanIdentifier$1("or")) {
          _this.expectWhitespace$0();
          B.JSArray_methods.addAll$1(conditions, _this._mediaLogicSequence$1("or"));
          conjunction = false;
        } else
          conjunction = true;
        return A.CssMediaQuery$condition(conditions, conjunction);
      }
      identifier1 = _this.identifier$0();
      if (A.equalsIgnoreCase(identifier1, "not")) {
        _this.expectWhitespace$0();
        if (!_this.lookingAtIdentifier$0())
          return A.CssMediaQuery$condition(A._setArrayType(["(not " + _this._mediaInParens$0() + ")"], type$.JSArray_String), _null);
      }
      _this.whitespace$0();
      if (!_this.lookingAtIdentifier$0())
        return A.CssMediaQuery$type(identifier1, _null, _null);
      identifier2 = _this.identifier$0();
      if (A.equalsIgnoreCase(identifier2, _s3_)) {
        _this.expectWhitespace$0();
        type = identifier1;
        modifier = _null;
      } else {
        _this.whitespace$0();
        if (_this.scanIdentifier$1(_s3_))
          _this.expectWhitespace$0();
        else
          return A.CssMediaQuery$type(identifier2, _null, identifier1);
        type = identifier2;
        modifier = identifier1;
      }
      if (_this.scanIdentifier$1("not")) {
        _this.expectWhitespace$0();
        return A.CssMediaQuery$type(type, A._setArrayType(["(not " + _this._mediaInParens$0() + ")"], type$.JSArray_String), modifier);
      }
      return A.CssMediaQuery$type(type, _this._mediaLogicSequence$1(_s3_), modifier);
    },
    _mediaLogicSequence$1(operator) {
      var t1, t2, _this = this,
        result = A._setArrayType([], type$.JSArray_String);
      for (t1 = _this.scanner; true;) {
        t1.expectChar$2$name(40, "media condition in parentheses");
        t2 = _this.declarationValue$0();
        t1.expectChar$1(41);
        result.push("(" + t2 + ")");
        _this.whitespace$0();
        if (!_this.scanIdentifier$1(operator))
          return result;
        _this.expectWhitespace$0();
      }
    },
    _mediaInParens$0() {
      var t2,
        t1 = this.scanner;
      t1.expectChar$2$name(40, "media condition in parentheses");
      t2 = this.declarationValue$0();
      t1.expectChar$1(41);
      return "(" + t2 + ")";
    }
  };
  A.MediaQueryParser_parse_closure.prototype = {
    call$0() {
      var queries = A._setArrayType([], type$.JSArray_CssMediaQuery),
        t1 = this.$this,
        t2 = t1.scanner;
      do {
        t1.whitespace$0();
        queries.push(t1._mediaQuery$0());
        t1.whitespace$0();
      } while (t2.scanChar$1(44));
      t2.expectDone$0();
      return queries;
    },
    $signature: 348
  };
  A.Parser.prototype = {
    _parseIdentifier$0() {
      return this.wrapSpanFormatException$1(new A.Parser__parseIdentifier_closure(this));
    },
    _isVariableDeclarationLike$0() {
      var _this = this,
        t1 = _this.scanner;
      if (!t1.scanChar$1(36))
        return false;
      if (!_this.lookingAtIdentifier$0())
        return false;
      _this.identifier$0();
      _this.whitespace$0();
      return t1.scanChar$1(58);
    },
    whitespace$0() {
      do
        this.whitespaceWithoutComments$0();
      while (this.scanComment$0());
    },
    whitespaceWithoutComments$0() {
      var t3,
        t1 = this.scanner,
        t2 = t1.string.length;
      while (true) {
        if (t1._string_scanner$_position !== t2) {
          t3 = t1.peekChar$0();
          t3 = t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12;
        } else
          t3 = false;
        if (!t3)
          break;
        t1.readChar$0();
      }
    },
    spaces$0() {
      var t3,
        t1 = this.scanner,
        t2 = t1.string.length;
      while (true) {
        if (t1._string_scanner$_position !== t2) {
          t3 = t1.peekChar$0();
          t3 = t3 === 32 || t3 === 9;
        } else
          t3 = false;
        if (!t3)
          break;
        t1.readChar$0();
      }
    },
    scanComment$0() {
      var _0_0,
        t1 = this.scanner;
      if (t1.peekChar$0() !== 47)
        return false;
      _0_0 = t1.peekChar$1(1);
      if (47 === _0_0) {
        this.silentComment$0();
        return true;
      }
      if (42 === _0_0) {
        this.loudComment$0();
        return true;
      }
      return false;
    },
    expectWhitespace$0() {
      var t2, t3,
        t1 = this.scanner;
      if (t1._string_scanner$_position !== t1.string.length) {
        t2 = t1.peekChar$0();
        t3 = !(t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12 || this.scanComment$0());
        t2 = t3;
      } else
        t2 = true;
      if (t2)
        t1.error$1(0, "Expected whitespace.");
      this.whitespace$0();
    },
    silentComment$0() {
      var t2, t3,
        t1 = this.scanner;
      t1.expect$1("//");
      t2 = t1.string.length;
      while (true) {
        if (t1._string_scanner$_position !== t2) {
          t3 = t1.peekChar$0();
          t3 = !(t3 === 10 || t3 === 13 || t3 === 12);
        } else
          t3 = false;
        if (!t3)
          break;
        t1.readChar$0();
      }
    },
    loudComment$0() {
      var next,
        t1 = this.scanner;
      t1.expect$1("/*");
      for (; true;) {
        if (t1.readChar$0() !== 42)
          continue;
        do
          next = t1.readChar$0();
        while (next === 42);
        if (next === 47)
          break;
      }
    },
    identifier$2$normalize$unit(normalize, unit) {
      var t2, _0_0, _this = this,
        _s20_ = "Expected identifier.",
        text = new A.StringBuffer(""),
        t1 = _this.scanner;
      if (t1.scanChar$1(45)) {
        t2 = text._contents = "" + A.Primitives_stringFromCharCode(45);
        if (t1.scanChar$1(45)) {
          text._contents = t2 + A.Primitives_stringFromCharCode(45);
          _this._identifierBody$3$normalize$unit(text, normalize, unit);
          t1 = text._contents;
          return t1.charCodeAt(0) == 0 ? t1 : t1;
        }
      } else
        t2 = "";
      $label0$0: {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          t1.error$1(0, _s20_);
        if (95 === _0_0 && normalize) {
          t1.readChar$0();
          text._contents = t2 + A.Primitives_stringFromCharCode(45);
          break $label0$0;
        }
        if (_0_0 === 95 || A.CharacterExtension_get_isAlphabetic(_0_0) || _0_0 >= 128) {
          text._contents = t2 + A.Primitives_stringFromCharCode(t1.readChar$0());
          break $label0$0;
        }
        if (92 === _0_0) {
          text._contents = t2 + _this.escape$1$identifierStart(true);
          break $label0$0;
        }
        t1.error$1(0, _s20_);
      }
      _this._identifierBody$3$normalize$unit(text, normalize, unit);
      t1 = text._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    identifier$0() {
      return this.identifier$2$normalize$unit(false, false);
    },
    identifier$1$normalize(normalize) {
      return this.identifier$2$normalize$unit(normalize, false);
    },
    identifier$1$unit(unit) {
      return this.identifier$2$normalize$unit(false, unit);
    },
    _identifierBody$3$normalize$unit(text, normalize, unit) {
      var t1, _1_0, _0_0, t2;
      for (t1 = this.scanner; true;) {
        _1_0 = t1.peekChar$0();
        if (_1_0 == null)
          break;
        if (45 === _1_0 && unit) {
          _0_0 = t1.peekChar$1(1);
          if (46 !== _0_0)
            t2 = A._isInt(_0_0) && _0_0 >= 48 && _0_0 <= 57;
          else
            t2 = true;
          if (t2)
            break;
          text._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (95 === _1_0 && normalize) {
          t1.readChar$0();
          text._contents += A.Primitives_stringFromCharCode(45);
          continue;
        }
        if (_1_0 !== 95) {
          if (!(_1_0 >= 97 && _1_0 <= 122))
            t2 = _1_0 >= 65 && _1_0 <= 90;
          else
            t2 = true;
          t2 = t2 || _1_0 >= 128;
        } else
          t2 = true;
        if (!t2)
          t2 = _1_0 >= 48 && _1_0 <= 57 || _1_0 === 45;
        else
          t2 = true;
        if (t2) {
          text._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (92 === _1_0) {
          text._contents += this.escape$0();
          continue;
        }
        break;
      }
    },
    _identifierBody$1(text) {
      return this._identifierBody$3$normalize$unit(text, false, false);
    },
    string$0() {
      var buffer, _0_0, t2,
        t1 = this.scanner,
        quote = t1.readChar$0();
      if (quote !== 39 && quote !== 34)
        t1.error$2$position(0, "Expected string.", t1._string_scanner$_position - 1);
      buffer = new A.StringBuffer("");
      for (; true;) {
        _0_0 = t1.peekChar$0();
        if (_0_0 === quote) {
          t1.readChar$0();
          break;
        }
        if (_0_0 == null || _0_0 === 10 || _0_0 === 13 || _0_0 === 12)
          t1.error$1(0, "Expected " + A.Primitives_stringFromCharCode(quote) + ".");
        if (92 === _0_0) {
          t2 = t1.peekChar$1(1);
          if (t2 === 10 || t2 === 13 || t2 === 12) {
            t1.readChar$0();
            t1.readChar$0();
          } else
            buffer._contents += A.Primitives_stringFromCharCode(A.consumeEscapedCharacter(t1));
          continue;
        }
        buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    declarationValue$1$allowEmpty(allowEmpty) {
      var t1, t2, wroteNewline, next, start, end, t3, _0_0, url, _this = this,
        buffer = new A.StringBuffer(""),
        brackets = A._setArrayType([], type$.JSArray_int);
      for (t1 = _this.scanner, t2 = _this.get$string(), wroteNewline = false; true;) {
        next = t1.peekChar$0();
        if (next == null)
          break;
        if (92 === next) {
          buffer._contents += _this.escape$1$identifierStart(true);
          wroteNewline = false;
          continue;
        }
        if (34 === next || 39 === next) {
          start = t1._string_scanner$_position;
          t2.call$0();
          end = t1._string_scanner$_position;
          buffer._contents += B.JSString_methods.substring$2(t1.string, start, end);
          wroteNewline = false;
          continue;
        }
        if (47 === next) {
          if (t1.peekChar$1(1) === 42) {
            t3 = _this.get$loudComment();
            start = t1._string_scanner$_position;
            t3.call$0();
            end = t1._string_scanner$_position;
            buffer._contents += B.JSString_methods.substring$2(t1.string, start, end);
          } else
            buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          wroteNewline = false;
          continue;
        }
        if (32 === next || 9 === next) {
          if (!wroteNewline) {
            t3 = t1.peekChar$1(1);
            t3 = !(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12);
          } else
            t3 = true;
          if (t3)
            buffer._contents += A.Primitives_stringFromCharCode(32);
          t1.readChar$0();
          continue;
        }
        if (10 === next || 13 === next || 12 === next) {
          t3 = t1.peekChar$1(-1);
          if (!(t3 === 10 || t3 === 13 || t3 === 12))
            buffer._contents += "\n";
          t1.readChar$0();
          wroteNewline = true;
          continue;
        }
        if (40 === next || 123 === next || 91 === next) {
          buffer._contents += A.Primitives_stringFromCharCode(next);
          brackets.push(A.opposite(t1.readChar$0()));
          wroteNewline = false;
          continue;
        }
        if (41 === next || 125 === next || 93 === next) {
          if (brackets.length === 0)
            break;
          buffer._contents += A.Primitives_stringFromCharCode(next);
          t1.expectChar$1(brackets.pop());
          wroteNewline = false;
          continue;
        }
        if (59 === next) {
          if (brackets.length === 0)
            break;
          buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (117 === next || 85 === next) {
          _0_0 = _this.tryUrl$0();
          if (_0_0 != null) {
            url = _0_0;
            t3 = true;
          } else {
            url = null;
            t3 = false;
          }
          if (t3)
            buffer._contents += A.S(url);
          else
            buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          wroteNewline = false;
          continue;
        }
        if (_this.lookingAtIdentifier$0())
          buffer._contents += _this.identifier$0();
        else
          buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
        wroteNewline = false;
      }
      if (brackets.length !== 0)
        t1.expectChar$1(B.JSArray_methods.get$last(brackets));
      if (!allowEmpty && buffer._contents.length === 0)
        t1.error$1(0, "Expected token.");
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    declarationValue$0() {
      return this.declarationValue$1$allowEmpty(false);
    },
    tryUrl$0() {
      var buffer, _0_0, t2, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (!_this.scanIdentifier$1("url"))
        return null;
      if (!t1.scanChar$1(40)) {
        t1.set$state(start);
        return null;
      }
      _this.whitespace$0();
      buffer = new A.StringBuffer("");
      buffer._contents = "" + "url(";
      for (; true;) {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          break;
        if (92 === _0_0) {
          buffer._contents += _this.escape$0();
          continue;
        }
        if (37 !== _0_0)
          if (38 !== _0_0)
            if (35 !== _0_0)
              t2 = _0_0 >= 42 && _0_0 <= 126 || _0_0 >= 128;
            else
              t2 = true;
          else
            t2 = true;
        else
          t2 = true;
        if (t2) {
          buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (_0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12) {
          _this.whitespace$0();
          if (t1.peekChar$0() !== 41)
            break;
          continue;
        }
        if (41 === _0_0) {
          t2 = buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          return t2.charCodeAt(0) == 0 ? t2 : t2;
        }
        break;
      }
      t1.set$state(start);
      return null;
    },
    variableName$0() {
      this.scanner.expectChar$1(36);
      return this.identifier$1$normalize(true);
    },
    escape$1$identifierStart(identifierStart) {
      var value, _0_0, i, next, t2, exception,
        _s25_ = "Expected escape sequence.",
        t1 = this.scanner,
        start = t1._string_scanner$_position;
      t1.expectChar$1(92);
      value = 0;
      $label0$1: {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          t1.error$1(0, _s25_);
        if (_0_0 === 10 || _0_0 === 13 || _0_0 === 12)
          t1.error$1(0, _s25_);
        if (A.CharacterExtension_get_isHex(_0_0)) {
          for (i = 0; i < 6; ++i) {
            next = t1.peekChar$0();
            if (next != null) {
              if (!(next >= 48 && next <= 57))
                if (!(next >= 97 && next <= 102))
                  t2 = next >= 65 && next <= 70;
                else
                  t2 = true;
              else
                t2 = true;
              t2 = !t2;
            } else
              t2 = true;
            if (t2)
              break;
            value *= 16;
            value += A.asHex(t1.readChar$0());
          }
          this.scanCharIf$1(new A.Parser_escape_closure());
          break $label0$1;
        }
        value = t1.readChar$0();
      }
      if (identifierStart) {
        t2 = value;
        t2 = t2 === 95 || A.CharacterExtension_get_isAlphabetic(t2) || t2 >= 128;
      } else {
        t2 = value;
        if (!(t2 === 95 || A.CharacterExtension_get_isAlphabetic(t2) || t2 >= 128))
          t2 = t2 >= 48 && t2 <= 57 || t2 === 45;
        else
          t2 = true;
      }
      if (t2)
        try {
          t2 = A.Primitives_stringFromCharCode(value);
          return t2;
        } catch (exception) {
          if (type$.RangeError._is(A.unwrapException(exception)))
            t1.error$3$length$position(0, "Invalid Unicode code point.", t1._string_scanner$_position - start, start);
          else
            throw exception;
        }
      else {
        if (!(value <= 31))
          if (!J.$eq$(value, 127))
            if (identifierStart) {
              t1 = value;
              t1 = t1 >= 48 && t1 <= 57;
            } else
              t1 = false;
          else
            t1 = true;
        else
          t1 = true;
        if (t1) {
          t1 = "" + A.Primitives_stringFromCharCode(92);
          if (value > 15)
            t1 += A.Primitives_stringFromCharCode(A.hexCharFor(B.JSNumber_methods._shrOtherPositive$1(value, 4)));
          t1 = t1 + A.Primitives_stringFromCharCode(A.hexCharFor(value & 15)) + A.Primitives_stringFromCharCode(32);
          return t1.charCodeAt(0) == 0 ? t1 : t1;
        } else
          return A.String_String$fromCharCodes(A._setArrayType([92, value], type$.JSArray_int), 0, null);
      }
    },
    escape$0() {
      return this.escape$1$identifierStart(false);
    },
    scanCharIf$1(condition) {
      var t1 = this.scanner;
      if (!condition.call$1(t1.peekChar$0()))
        return false;
      t1.readChar$0();
      return true;
    },
    scanIdentChar$2$caseSensitive(char, caseSensitive) {
      var next, t3,
        t1 = new A.Parser_scanIdentChar_matches(caseSensitive, char),
        t2 = this.scanner,
        _0_0 = t2.peekChar$0();
      if (_0_0 != null) {
        next = _0_0;
        t3 = true;
      } else {
        next = null;
        t3 = false;
      }
      if (t3 && t1.call$1(next)) {
        t2.readChar$0();
        return true;
      }
      if (92 === _0_0) {
        t3 = t2._string_scanner$_position;
        if (t1.call$1(A.consumeEscapedCharacter(t2)))
          return true;
        t2.set$state(new A._SpanScannerState(t2, t3));
      }
      return false;
    },
    scanIdentChar$1(char) {
      return this.scanIdentChar$2$caseSensitive(char, false);
    },
    expectIdentChar$1(letter) {
      var t1;
      if (this.scanIdentChar$2$caseSensitive(letter, false))
        return;
      t1 = this.scanner;
      t1.error$2$position(0, 'Expected "' + A.Primitives_stringFromCharCode(letter) + '".', t1._string_scanner$_position);
    },
    lookingAtIdentifier$1($forward) {
      var t1, _1_0, t2, _0_0;
      if ($forward == null)
        $forward = 0;
      t1 = this.scanner;
      _1_0 = t1.peekChar$1($forward);
      $label0$0: {
        if (A._isInt(_1_0))
          t2 = _1_0 === 95 || A.CharacterExtension_get_isAlphabetic(_1_0) || _1_0 >= 128;
        else
          t2 = false;
        if (t2 || 92 === _1_0) {
          t1 = true;
          break $label0$0;
        }
        if (45 === _1_0) {
          _0_0 = t1.peekChar$1($forward + 1);
          $label1$1: {
            if (A._isInt(_0_0))
              t1 = _0_0 === 95 || A.CharacterExtension_get_isAlphabetic(_0_0) || _0_0 >= 128;
            else
              t1 = false;
            if (t1 || 92 === _0_0 || 45 === _0_0) {
              t1 = true;
              break $label1$1;
            }
            t1 = false;
            break $label1$1;
          }
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    lookingAtIdentifier$0() {
      return this.lookingAtIdentifier$1(null);
    },
    lookingAtIdentifierBody$0() {
      var t1,
        next = this.scanner.peekChar$0();
      if (next != null) {
        if (!(next === 95 || A.CharacterExtension_get_isAlphabetic(next) || next >= 128))
          t1 = next >= 48 && next <= 57 || next === 45;
        else
          t1 = true;
        t1 = t1 || next === 92;
      } else
        t1 = false;
      return t1;
    },
    scanIdentifier$2$caseSensitive(text, caseSensitive) {
      var t1, t2, _this = this;
      if (!_this.lookingAtIdentifier$0())
        return false;
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      if (_this._consumeIdentifier$2(text, caseSensitive) && !_this.lookingAtIdentifierBody$0())
        return true;
      else {
        t1.set$state(new A._SpanScannerState(t1, t2));
        return false;
      }
    },
    scanIdentifier$1(text) {
      return this.scanIdentifier$2$caseSensitive(text, false);
    },
    _consumeIdentifier$2(text, caseSensitive) {
      var t1, t2, t3;
      for (t1 = new A.CodeUnits(text), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (!this.scanIdentChar$2$caseSensitive(t3 == null ? t2._as(t3) : t3, caseSensitive))
          return false;
      }
      return true;
    },
    expectIdentifier$2$name(text, $name) {
      var t1, start, t2, t3, t4, t5, t6;
      if ($name == null)
        $name = '"' + text + '"';
      t1 = this.scanner;
      start = t1._string_scanner$_position;
      for (t2 = new A.CodeUnits(text), t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = "Expected " + $name, t4 = t3 + ".", t5 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t6 = t2.__internal$_current;
        if (this.scanIdentChar$2$caseSensitive(t6 == null ? t5._as(t6) : t6, false))
          continue;
        t1.error$2$position(0, t4, start);
      }
      if (!this.lookingAtIdentifierBody$0())
        return;
      t1.error$2$position(0, t3, start);
    },
    expectIdentifier$1(text) {
      return this.expectIdentifier$2$name(text, null);
    },
    rawText$1(consumer) {
      var t1 = this.scanner,
        start = t1._string_scanner$_position;
      consumer.call$0();
      return t1.substring$1(0, start);
    },
    spanFrom$1(state) {
      var span = this.scanner.spanFrom$1(state);
      return this._interpolationMap == null ? span : new A.LazyFileSpan(new A.Parser_spanFrom_closure(this, span));
    },
    error$3(_, message, span, trace) {
      var exception = new A.StringScannerException(this.scanner.string, message, span);
      if (trace == null)
        throw A.wrapException(exception);
      else
        A.throwWithTrace(exception, this.get$error(this), trace);
    },
    error$2($receiver, message, span) {
      return this.error$3($receiver, message, span, null);
    },
    withErrorMessage$1$2(message, callback) {
      var error, stackTrace, t1, exception;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SourceSpanFormatException._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = J.get$span$z(error);
          A.throwWithTrace(new A.SourceSpanFormatException(error.get$source(), message, t1), error, stackTrace);
        } else
          throw exception;
      }
    },
    withErrorMessage$2(message, callback) {
      return this.withErrorMessage$1$2(message, callback, type$.dynamic);
    },
    wrapSpanFormatException$1$1(callback) {
      var error, stackTrace, map, error0, stackTrace0, span, error1, stackTrace1, span0, secondarySpans, t1, t2, span1, description, _0_0, t3, exception, t4, _this = this,
        _s8_ = "expected";
      try {
        try {
          t3 = callback.call$0();
          return t3;
        } catch (exception) {
          t3 = A.unwrapException(exception);
          if (type$.SourceSpanFormatException._is(t3)) {
            error = t3;
            stackTrace = A.getTraceFromException(exception);
            map = _this._interpolationMap;
            if (map == null)
              throw exception;
            A.throwWithTrace(map.mapException$1(error), error, stackTrace);
          } else
            throw exception;
        }
      } catch (exception) {
        t3 = A.unwrapException(exception);
        if (type$.SourceSpanFormatException._is(t3)) {
          error0 = t3;
          stackTrace0 = A.getTraceFromException(exception);
          span = J.get$span$z(error0);
          if (A.startsWithIgnoreCase(error0._span_exception$_message, _s8_))
            span = _this._adjustExceptionSpan$1(span);
          t1 = error0._span_exception$_message;
          t2 = span;
          A.throwWithTrace(new A.SassFormatException(B.Set_empty, t1, t2), error0, stackTrace0);
        } else if (type$.MultiSourceSpanFormatException._is(t3)) {
          error1 = t3;
          stackTrace1 = A.getTraceFromException(exception);
          span0 = J.get$span$z(error1);
          t3 = type$.FileSpan;
          t4 = type$.String;
          secondarySpans = error1.get$secondarySpans().cast$2$0(0, t3, t4);
          if (A.startsWithIgnoreCase(error1._span_exception$_message, _s8_)) {
            span0 = _this._adjustExceptionSpan$1(span0);
            t1 = A.LinkedHashMap_LinkedHashMap$_empty(t3, t4);
            for (t3 = A.MapExtensions_get_pairs(secondarySpans, t3, t4), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
              t2 = t3.get$current(t3);
              span1 = null;
              description = null;
              _0_0 = t2;
              span1 = _0_0._0;
              description = _0_0._1;
              J.$indexSet$ax(t1, _this._adjustExceptionSpan$1(span1), description);
            }
            secondarySpans = t1;
          }
          A.throwWithTrace(A.MultiSpanSassFormatException$(error1._span_exception$_message, span0, error1.get$primaryLabel(), secondarySpans, null), error1, stackTrace1);
        } else
          throw exception;
      }
    },
    wrapSpanFormatException$1(callback) {
      return this.wrapSpanFormatException$1$1(callback, type$.dynamic);
    },
    _adjustExceptionSpan$1(span) {
      var start, t1;
      if (span.get$length(span) > 0)
        return span;
      start = this._firstNewlineBefore$1(span.get$start(span));
      if (start.$eq(0, span.get$start(span)))
        t1 = span;
      else {
        t1 = start.offset;
        t1 = A._FileSpan$(start.file, t1, t1);
      }
      return t1;
    },
    _firstNewlineBefore$1($location) {
      var lastNewline, codeUnit,
        t1 = $location.file,
        t2 = $location.offset,
        text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1._decodedChars, 0, t2), 0, null),
        index = t2 - 1;
      for (lastNewline = null; index >= 0;) {
        codeUnit = text.charCodeAt(index);
        if (!(codeUnit === 32 || codeUnit === 9 || codeUnit === 10 || codeUnit === 13 || codeUnit === 12)) {
          if (lastNewline == null)
            t1 = $location;
          else {
            t2 = new A.FileLocation(t1, lastNewline);
            t2.FileLocation$_$2(t1, lastNewline);
            t1 = t2;
          }
          return t1;
        }
        if (codeUnit === 10 || codeUnit === 13 || codeUnit === 12)
          lastNewline = index;
        --index;
      }
      return $location;
    }
  };
  A.Parser__parseIdentifier_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        result = t1.identifier$0();
      t1.scanner.expectDone$0();
      return result;
    },
    $signature: 22
  };
  A.Parser_escape_closure.prototype = {
    call$1(char) {
      return char === 32 || char === 9 || char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A.Parser_scanIdentChar_matches.prototype = {
    call$1(actual) {
      var t1 = this.char;
      return this.caseSensitive ? actual === t1 : A.characterEqualsIgnoreCase(t1, actual);
    },
    $signature: 47
  };
  A.Parser_spanFrom_closure.prototype = {
    call$0() {
      return this.$this._interpolationMap.mapSpan$1(this.span);
    },
    $signature: 33
  };
  A.SassParser.prototype = {
    get$currentIndentation() {
      return this._currentIndentation;
    },
    get$indented() {
      return true;
    },
    styleRuleSelector$0() {
      var t4,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer(t3, A._setArrayType([], type$.JSArray_Object));
      do {
        buffer.addInterpolation$1(this.almostAnyValue$1$omitComments(true));
        t4 = t3._contents += A.Primitives_stringFromCharCode(10);
      } while (B.JSString_methods.endsWith$1(B.JSString_methods.trimRight$0(t4.charCodeAt(0) == 0 ? t4 : t4), ",") && this.scanCharIf$1(new A.SassParser_styleRuleSelector_closure()));
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    expectStatementSeparator$1($name) {
      var t1, _this = this;
      if (!_this.atEndOfStatement$0())
        _this._expectNewline$0();
      if (_this._peekIndentation$0() <= _this._currentIndentation)
        return;
      t1 = $name == null ? "here" : "beneath a " + $name;
      _this.scanner.error$2$position(0, "Nothing may be indented " + t1 + ".", _this._nextIndentationEnd.position);
    },
    expectStatementSeparator$0() {
      return this.expectStatementSeparator$1(null);
    },
    atEndOfStatement$0() {
      var t1 = this.scanner.peekChar$0();
      if (t1 == null)
        t1 = null;
      else
        t1 = t1 === 10 || t1 === 13 || t1 === 12;
      return t1 !== false;
    },
    lookingAtChildren$0() {
      return this.atEndOfStatement$0() && this._peekIndentation$0() > this._currentIndentation;
    },
    importArgument$0() {
      var url, span, innerError, stackTrace, t1, _0_0, start, next, t2, exception, _this = this;
      $label0$0: {
        t1 = _this.scanner;
        _0_0 = t1.peekChar$0();
        if (117 === _0_0 || 85 === _0_0) {
          start = new A._SpanScannerState(t1, t1._string_scanner$_position);
          if (_this.scanIdentifier$1("url"))
            if (t1.scanChar$1(40)) {
              t1.set$state(start);
              return _this.super$StylesheetParser$importArgument();
            } else
              t1.set$state(start);
          break $label0$0;
        }
        if (39 === _0_0 || 34 === _0_0)
          return _this.super$StylesheetParser$importArgument();
      }
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      next = t1.peekChar$0();
      while (true) {
        if (next != null)
          if (next !== 44)
            if (next !== 59)
              t2 = !(next === 10 || next === 13 || next === 12);
            else
              t2 = false;
          else
            t2 = false;
        else
          t2 = false;
        if (!t2)
          break;
        t1.readChar$0();
        next = t1.peekChar$0();
      }
      url = t1.substring$1(0, start.position);
      span = t1.spanFrom$1(start);
      if (_this.isPlainImportUrl$1(url))
        return new A.StaticImport(A.Interpolation$(A._setArrayType([A.serializeValue(new A.SassString(url, true), true, true)], type$.JSArray_Object), span), null, span);
      else
        try {
          t1 = _this.parseImportUrl$1(url);
          return new A.DynamicImport(t1, span);
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (type$.FormatException._is(t1)) {
            innerError = t1;
            stackTrace = A.getTraceFromException(exception);
            _this.error$3(0, "Invalid URL: " + J.get$message$x(innerError), span, stackTrace);
          } else
            throw exception;
        }
    },
    scanElse$1(ifIndentation) {
      var t1, t2, startIndentation, startNextIndentation, startNextIndentationEnd, _this = this;
      if (_this._peekIndentation$0() !== ifIndentation)
        return false;
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      startIndentation = _this._currentIndentation;
      startNextIndentation = _this._nextIndentation;
      startNextIndentationEnd = _this._nextIndentationEnd;
      _this._readIndentation$0();
      if (t1.scanChar$1(64) && _this.scanIdentifier$1("else"))
        return true;
      t1.set$state(new A._SpanScannerState(t1, t2));
      _this._currentIndentation = startIndentation;
      _this._nextIndentation = startNextIndentation;
      _this._nextIndentationEnd = startNextIndentationEnd;
      return false;
    },
    children$1(_, child) {
      var children = A._setArrayType([], type$.JSArray_Statement);
      this._whileIndentedLower$1(new A.SassParser_children_closure(this, child, children));
      return children;
    },
    statements$1(statement) {
      var statements, t2, _1_0, child, t3,
        t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      if (9 === _0_0 || 32 === _0_0)
        t1.error$3$length$position(0, string$.Indent, t1._string_scanner$_position, 0);
      statements = A._setArrayType([], type$.JSArray_Statement);
      for (t2 = t1.string.length; t1._string_scanner$_position !== t2;) {
        _1_0 = this._child$1(statement);
        if (_1_0 != null) {
          child = _1_0;
          t3 = true;
        } else {
          child = null;
          t3 = false;
        }
        if (t3)
          statements.push(child);
        this._readIndentation$0();
      }
      return statements;
    },
    _child$1(child) {
      var _0_0, _this = this,
        t1 = _this.scanner,
        _1_0 = t1.peekChar$0();
      $label0$0: {
        if (13 === _1_0 || 10 === _1_0 || 12 === _1_0) {
          t1 = null;
          break $label0$0;
        }
        if (36 === _1_0) {
          t1 = _this.variableDeclarationWithoutNamespace$0();
          break $label0$0;
        }
        if (47 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label1$1: {
            if (47 === _0_0) {
              t1 = _this._silentComment$0();
              break $label1$1;
            }
            if (42 === _0_0) {
              t1 = _this._loudComment$0();
              break $label1$1;
            }
            t1 = child.call$0();
            break $label1$1;
          }
          break $label0$0;
        }
        t1 = child.call$0();
        break $label0$0;
      }
      return t1;
    },
    _silentComment$0() {
      var buffer, parentIndentation, t3, t4, t5, commentPrefix, i, t6, i0, t7, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("//");
      buffer = new A.StringBuffer("");
      parentIndentation = _this._currentIndentation;
      t3 = t1.string.length;
      t4 = 1 + parentIndentation;
      t5 = 2 + parentIndentation;
      $label0$0:
        do {
          commentPrefix = t1.scanChar$1(47) ? "///" : "//";
          for (i = commentPrefix.length; true;) {
            t6 = buffer._contents += commentPrefix;
            for (i0 = i; i0 < _this._currentIndentation - parentIndentation; ++i0) {
              t6 += A.Primitives_stringFromCharCode(32);
              buffer._contents = t6;
            }
            while (true) {
              if (t1._string_scanner$_position !== t3) {
                t7 = t1.peekChar$0();
                t7 = !(t7 === 10 || t7 === 13 || t7 === 12);
              } else
                t7 = false;
              if (!t7)
                break;
              t6 += A.Primitives_stringFromCharCode(t1.readChar$0());
              buffer._contents = t6;
            }
            buffer._contents = t6 + "\n";
            if (_this._peekIndentation$0() < parentIndentation)
              break $label0$0;
            if (_this._peekIndentation$0() === parentIndentation) {
              if (t1.peekChar$1(t4) === 47 && t1.peekChar$1(t5) === 47)
                _this._readIndentation$0();
              break;
            }
            _this._readIndentation$0();
          }
        } while (t1.scan$1("//"));
      t3 = buffer._contents;
      return _this.lastSilentComment = new A.SilentComment(t3.charCodeAt(0) == 0 ? t3 : t3, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _loudComment$0() {
      var t3, t4, buffer, parentIndentation, t5, t6, first, beginningOfComment, t7, end, i, _0_0, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("/*");
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer(t3, t4);
      t3._contents = "" + "/*";
      parentIndentation = _this._currentIndentation;
      for (t5 = t1.string, t6 = t5.length, first = true; true; first = false) {
        if (first) {
          beginningOfComment = t1._string_scanner$_position;
          _this.spaces$0();
          t7 = t1.peekChar$0();
          if (t7 === 10 || t7 === 13 || t7 === 12) {
            _this._readIndentation$0();
            t3._contents += A.Primitives_stringFromCharCode(32);
          } else {
            end = t1._string_scanner$_position;
            t3._contents += B.JSString_methods.substring$2(t5, beginningOfComment, end);
          }
        } else {
          t7 = t3._contents += "\n";
          t3._contents = t7 + " * ";
        }
        for (i = 3; i < _this._currentIndentation - parentIndentation; ++i)
          t3._contents += A.Primitives_stringFromCharCode(32);
        for (; t1._string_scanner$_position !== t6;) {
          _0_0 = t1.peekChar$0();
          if (10 === _0_0 || 13 === _0_0 || 12 === _0_0)
            break;
          if (35 === _0_0) {
            if (t1.peekChar$1(1) === 123) {
              t7 = _this.singleInterpolation$0();
              buffer._flushText$0();
              t4.push(t7);
            } else
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            continue;
          }
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
        }
        if (_this._peekIndentation$0() <= parentIndentation)
          break;
        for (; _this._lookingAtDoubleNewline$0();) {
          _this._expectNewline$0();
          t7 = t3._contents += "\n";
          t3._contents = t7 + " *";
        }
        _this._readIndentation$0();
      }
      t4 = t3._contents;
      if (!B.JSString_methods.endsWith$1(B.JSString_methods.trimRight$0(t4.charCodeAt(0) == 0 ? t4 : t4), "*/"))
        t3._contents += " */";
      return new A.LoudComment(buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2))));
    },
    whitespaceWithoutComments$0() {
      var t1, t2, next;
      for (t1 = this.scanner, t2 = t1.string.length; t1._string_scanner$_position !== t2;) {
        next = t1.peekChar$0();
        if (next !== 9 && next !== 32)
          break;
        t1.readChar$0();
      }
    },
    loudComment$0() {
      var next,
        t1 = this.scanner;
      t1.expect$1("/*");
      for (; true;) {
        next = t1.readChar$0();
        if (next === 10 || next === 13 || next === 12)
          t1.error$1(0, "expected */.");
        if (next !== 42)
          continue;
        do
          next = t1.readChar$0();
        while (next === 42);
        if (next === 47)
          break;
      }
    },
    _expectNewline$0() {
      var t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      if (59 === _0_0)
        t1.error$1(0, string$.semico);
      if (13 === _0_0) {
        t1.readChar$0();
        if (t1.peekChar$0() === 10)
          t1.readChar$0();
        return;
      }
      if (10 === _0_0 || 12 === _0_0) {
        t1.readChar$0();
        return;
      }
      t1.error$1(0, "expected newline.");
    },
    _lookingAtDoubleNewline$0() {
      var _0_0,
        t1 = this.scanner,
        _1_0 = t1.peekChar$0();
      $label1$1: {
        if (13 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label0$0: {
            if (10 === _0_0) {
              t1 = t1.peekChar$1(2);
              t1 = t1 === 10 || t1 === 13 || t1 === 12;
              break $label0$0;
            }
            if (13 === _0_0 || 12 === _0_0) {
              t1 = true;
              break $label0$0;
            }
            t1 = false;
            break $label0$0;
          }
          break $label1$1;
        }
        if (10 === _1_0 || 12 === _1_0) {
          t1 = t1.peekChar$1(1);
          t1 = t1 === 10 || t1 === 13 || t1 === 12;
          break $label1$1;
        }
        t1 = false;
        break $label1$1;
      }
      return t1;
    },
    _whileIndentedLower$1(body) {
      var t1, t2, childIndentation, indentation, t3, t4, _this = this,
        parentIndentation = _this._currentIndentation;
      for (t1 = _this.scanner, t2 = t1._sourceFile, childIndentation = null; _this._peekIndentation$0() > parentIndentation;) {
        indentation = _this._readIndentation$0();
        if (childIndentation == null)
          childIndentation = indentation;
        if (childIndentation !== indentation) {
          t3 = t1._string_scanner$_position;
          t4 = t2.getColumn$1(t3);
          t1.error$3$length$position(0, "Inconsistent indentation, expected " + childIndentation + " spaces.", t2.getColumn$1(t1._string_scanner$_position), t3 - t4);
        }
        body.call$0();
      }
    },
    _readIndentation$0() {
      var t1, _this = this,
        currentIndentation = _this._nextIndentation;
      if (currentIndentation == null)
        currentIndentation = _this._nextIndentation = _this._peekIndentation$0();
      _this._currentIndentation = currentIndentation;
      t1 = _this._nextIndentationEnd;
      t1.toString;
      _this.scanner.set$state(t1);
      _this._nextIndentationEnd = _this._nextIndentation = null;
      return currentIndentation;
    },
    _peekIndentation$0() {
      var cached, t1, t2, t3, start, containsTab, containsSpace, nextIndentation, _1_0, t4, _this = this,
        _0_0 = _this._nextIndentation;
      if (_0_0 != null) {
        cached = _0_0;
        t1 = true;
      } else {
        cached = null;
        t1 = false;
      }
      if (t1)
        return cached;
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      t3 = t1.string.length;
      if (t2 === t3) {
        _this._nextIndentation = 0;
        _this._nextIndentationEnd = new A._SpanScannerState(t1, t2);
        return 0;
      }
      start = new A._SpanScannerState(t1, t2);
      if (!_this.scanCharIf$1(new A.SassParser__peekIndentation_closure()))
        t1.error$2$position(0, "Expected newline.", t1._string_scanner$_position);
      containsTab = A._Cell$();
      containsSpace = A._Cell$();
      nextIndentation = A._Cell$();
      t2 = nextIndentation.__late_helper$_name;
      do {
        containsSpace._value = containsTab._value = false;
        nextIndentation._value = 0;
        for (; true;) {
          $label0$0: {
            _1_0 = t1.peekChar$0();
            if (32 === _1_0) {
              containsSpace._value = true;
              break $label0$0;
            }
            if (9 === _1_0) {
              containsTab._value = true;
              break $label0$0;
            }
            break;
          }
          t4 = nextIndentation._value;
          if (t4 === nextIndentation)
            A.throwExpression(A.LateError$localNI(t2));
          nextIndentation._value = t4 + 1;
          t1.readChar$0();
        }
        t4 = t1._string_scanner$_position;
        if (t4 === t3) {
          _this._nextIndentation = 0;
          _this._nextIndentationEnd = new A._SpanScannerState(t1, t4);
          t1.set$state(start);
          return 0;
        }
      } while (_this.scanCharIf$1(new A.SassParser__peekIndentation_closure0()));
      t2 = containsTab._readLocal$0();
      t3 = containsSpace._readLocal$0();
      if (t2) {
        if (t3) {
          t2 = t1._string_scanner$_position;
          t3 = t1._sourceFile;
          t4 = t3.getColumn$1(t2);
          t1.error$3$length$position(0, "Tabs and spaces may not be mixed.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
        } else if (_this._spaces === true) {
          t2 = t1._string_scanner$_position;
          t3 = t1._sourceFile;
          t4 = t3.getColumn$1(t2);
          t1.error$3$length$position(0, "Expected spaces, was tabs.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
        }
      } else if (t3 && _this._spaces === false) {
        t2 = t1._string_scanner$_position;
        t3 = t1._sourceFile;
        t4 = t3.getColumn$1(t2);
        t1.error$3$length$position(0, "Expected tabs, was spaces.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
      }
      _this._nextIndentation = nextIndentation._readLocal$0();
      if (nextIndentation._readLocal$0() > 0)
        if (_this._spaces == null)
          _this._spaces = containsSpace._readLocal$0();
      _this._nextIndentationEnd = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.set$state(start);
      return nextIndentation._readLocal$0();
    }
  };
  A.SassParser_styleRuleSelector_closure.prototype = {
    call$1(char) {
      return char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A.SassParser_children_closure.prototype = {
    call$0() {
      var parsedChild, t1,
        _0_0 = this.$this._child$1(this.child);
      if (_0_0 != null) {
        parsedChild = _0_0;
        t1 = true;
      } else {
        parsedChild = null;
        t1 = false;
      }
      if (t1)
        this.children.push(parsedChild);
    },
    $signature: 0
  };
  A.SassParser__peekIndentation_closure.prototype = {
    call$1(char) {
      return char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A.SassParser__peekIndentation_closure0.prototype = {
    call$1(char) {
      return char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A.ScssParser.prototype = {
    get$indented() {
      return false;
    },
    get$currentIndentation() {
      return 0;
    },
    styleRuleSelector$0() {
      return this.almostAnyValue$0();
    },
    expectStatementSeparator$1($name) {
      var t1, _0_0;
      this.whitespaceWithoutComments$0();
      t1 = this.scanner;
      if (t1._string_scanner$_position === t1.string.length)
        return;
      _0_0 = t1.peekChar$0();
      if (59 === _0_0 || 125 === _0_0)
        return;
      t1.expectChar$1(59);
    },
    expectStatementSeparator$0() {
      return this.expectStatementSeparator$1(null);
    },
    atEndOfStatement$0() {
      var next = this.scanner.peekChar$0();
      return next == null || next === 59 || next === 125 || next === 123;
    },
    lookingAtChildren$0() {
      return this.scanner.peekChar$0() === 123;
    },
    scanElse$1(ifIndentation) {
      var t3, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      _this.whitespace$0();
      t3 = t1._string_scanner$_position;
      if (t1.scanChar$1(64)) {
        if (_this.scanIdentifier$2$caseSensitive("else", true))
          return true;
        if (_this.scanIdentifier$2$caseSensitive("elseif", true)) {
          A.WarnForDeprecation_warnForDeprecation(_this.logger, B.Deprecation_JAZ, string$.x40elsei, t1.spanFrom$1(new A._SpanScannerState(t1, t3)), null);
          t1.set$position(t1._string_scanner$_position - 2);
          return true;
        }
      }
      t1.set$state(new A._SpanScannerState(t1, t2));
      return false;
    },
    children$1(_, child) {
      var children, _this = this,
        t1 = _this.scanner;
      t1.expectChar$1(123);
      _this.whitespaceWithoutComments$0();
      children = A._setArrayType([], type$.JSArray_Statement);
      for (; true;)
        switch (t1.peekChar$0()) {
          case 36:
            children.push(_this.variableDeclarationWithoutNamespace$0());
            break;
          case 47:
            switch (t1.peekChar$1(1)) {
              case 47:
                children.push(_this._scss$_silentComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              case 42:
                children.push(_this._scss$_loudComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              default:
                children.push(child.call$0());
            }
            break;
          case 59:
            t1.readChar$0();
            _this.whitespaceWithoutComments$0();
            break;
          case 125:
            t1.expectChar$1(125);
            return children;
          default:
            children.push(child.call$0());
        }
    },
    statements$1(statement) {
      var t1, t2, _0_0, child, t3, _1_0, _this = this,
        statements = A._setArrayType([], type$.JSArray_Statement);
      _this.whitespaceWithoutComments$0();
      for (t1 = _this.scanner, t2 = t1.string.length; t1._string_scanner$_position !== t2;)
        switch (t1.peekChar$0()) {
          case 36:
            statements.push(_this.variableDeclarationWithoutNamespace$0());
            break;
          case 47:
            switch (t1.peekChar$1(1)) {
              case 47:
                statements.push(_this._scss$_silentComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              case 42:
                statements.push(_this._scss$_loudComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              default:
                _0_0 = statement.call$0();
                if (_0_0 != null) {
                  child = _0_0;
                  t3 = true;
                } else {
                  child = null;
                  t3 = false;
                }
                if (t3)
                  statements.push(child);
            }
            break;
          case 59:
            t1.readChar$0();
            _this.whitespaceWithoutComments$0();
            break;
          default:
            _1_0 = statement.call$0();
            if (_1_0 != null) {
              child = _1_0;
              t3 = true;
            } else {
              child = null;
              t3 = false;
            }
            if (t3)
              statements.push(child);
        }
      return statements;
    },
    _scss$_silentComment$0() {
      var t2, t3, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expect$1("//");
      t2 = t1.string.length;
      do {
        while (true) {
          if (t1._string_scanner$_position !== t2) {
            t3 = t1.readChar$0();
            t3 = !(t3 === 10 || t3 === 13 || t3 === 12);
          } else
            t3 = false;
          if (!t3)
            break;
        }
        if (t1._string_scanner$_position === t2)
          break;
        _this.spaces$0();
      } while (t1.scan$1("//"));
      if (_this.get$plainCss())
        _this.error$2(0, string$.Silent, t1.spanFrom$1(start));
      return _this.lastSilentComment = new A.SilentComment(t1.substring$1(0, start.position), t1.spanFrom$1(start));
    },
    _scss$_loudComment$0() {
      var t3, t4, buffer, t5, endPosition, t6, result,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("/*");
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer(t3, t4);
      t3._contents = "" + "/*";
      $label0$1:
        for (; true;)
          switch (t1.peekChar$0()) {
            case 35:
              if (t1.peekChar$1(1) === 123) {
                t5 = this.singleInterpolation$0();
                buffer._flushText$0();
                t4.push(t5);
              } else
                t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              break;
            case 42:
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              if (t1.peekChar$0() !== 47)
                continue $label0$1;
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              endPosition = t1._string_scanner$_position;
              t5 = t1._sourceFile;
              t6 = new A._SpanScannerState(t1, t2).position;
              t1 = new A._FileSpan(t5, t6, endPosition);
              t1._FileSpan$3(t5, t6, endPosition);
              t6 = type$.Object;
              t5 = A.List_List$of(t4, true, t6);
              t2 = t3._contents;
              if (t2.length !== 0)
                t5.push(t2.charCodeAt(0) == 0 ? t2 : t2);
              result = A.List_List$from(t5, false, t6);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t2 = new A.Interpolation(result, t1);
              t2.Interpolation$2(t5, t1);
              return new A.LoudComment(t2);
            case 13:
              t1.readChar$0();
              if (t1.peekChar$0() !== 10)
                t3._contents += A.Primitives_stringFromCharCode(10);
              break;
            case 12:
              t1.readChar$0();
              t3._contents += A.Primitives_stringFromCharCode(10);
              break;
            default:
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          }
    }
  };
  A.SelectorParser.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.SelectorParser_parse_closure(this));
    },
    parseCompoundSelector$0() {
      return this.wrapSpanFormatException$1(new A.SelectorParser_parseCompoundSelector_closure(this));
    },
    _selectorList$0() {
      var t4, t5, lineBreak, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = t1._sourceFile,
        previousLine = t3.getLine$1(t2),
        components = A._setArrayType([_this._complexSelector$0()], type$.JSArray_ComplexSelector);
      _this.whitespace$0();
      for (t4 = t1.string.length; t1.scanChar$1(44);) {
        _this.whitespace$0();
        if (t1.peekChar$0() === 44)
          continue;
        t5 = t1._string_scanner$_position;
        if (t5 === t4)
          break;
        lineBreak = t3.getLine$1(t5) !== previousLine;
        if (lineBreak)
          previousLine = t3.getLine$1(t1._string_scanner$_position);
        components.push(_this._complexSelector$1$lineBreak(lineBreak));
      }
      return A.SelectorList$(components, _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _complexSelector$1$lineBreak(lineBreak) {
      var t4, lastCompound, initialCombinators, _0_0, t5, result, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        componentStart = new A._SpanScannerState(t1, t2),
        t3 = type$.JSArray_CssValue_Combinator,
        combinators = A._setArrayType([], t3),
        components = A._setArrayType([], type$.JSArray_ComplexSelectorComponent);
      for (t4 = type$.CssValue_Combinator, lastCompound = null, initialCombinators = null; true;) {
        _this.whitespace$0();
        _0_0 = t1.peekChar$0();
        if (43 === _0_0) {
          t5 = t1._string_scanner$_position;
          t1.readChar$0();
          combinators.push(new A.CssValue(B.Combinator_4QF, _this.spanFrom$1(new A._SpanScannerState(t1, t5)), t4));
          continue;
        }
        if (62 === _0_0) {
          t5 = t1._string_scanner$_position;
          t1.readChar$0();
          combinators.push(new A.CssValue(B.Combinator_Cht, _this.spanFrom$1(new A._SpanScannerState(t1, t5)), t4));
          continue;
        }
        if (126 === _0_0) {
          t5 = t1._string_scanner$_position;
          t1.readChar$0();
          combinators.push(new A.CssValue(B.Combinator_Htt, _this.spanFrom$1(new A._SpanScannerState(t1, t5)), t4));
          continue;
        }
        if (_0_0 == null)
          break;
        if (91 !== _0_0)
          if (46 !== _0_0)
            if (35 !== _0_0)
              if (37 !== _0_0)
                if (58 !== _0_0)
                  if (38 !== _0_0)
                    if (42 !== _0_0)
                      if (124 !== _0_0)
                        t5 = _this.lookingAtIdentifier$0();
                      else
                        t5 = true;
                    else
                      t5 = true;
                  else
                    t5 = true;
                else
                  t5 = true;
              else
                t5 = true;
            else
              t5 = true;
          else
            t5 = true;
        else
          t5 = true;
        if (t5) {
          if (lastCompound != null) {
            t5 = _this.spanFrom$1(componentStart);
            result = A.List_List$from(combinators, false, t4);
            result.fixed$length = Array;
            result.immutable$list = Array;
            components.push(new A.ComplexSelectorComponent(lastCompound, result, t5));
          } else if (combinators.length !== 0) {
            componentStart = new A._SpanScannerState(t1, t1._string_scanner$_position);
            initialCombinators = combinators;
          }
          lastCompound = _this._compoundSelector$0();
          combinators = A._setArrayType([], t3);
          if (t1.peekChar$0() === 38)
            t1.error$1(0, string$.x22x26__ma);
          continue;
        }
        break;
      }
      if (lastCompound != null) {
        t3 = _this.spanFrom$1(componentStart);
        components.push(new A.ComplexSelectorComponent(lastCompound, A.List_List$unmodifiable(combinators, t4), t3));
      } else if (combinators.length !== 0)
        initialCombinators = combinators;
      else
        t1.error$1(0, "expected selector.");
      t3 = initialCombinators == null ? B.List_empty1 : initialCombinators;
      return A.ComplexSelector$(t3, components, _this.spanFrom$1(new A._SpanScannerState(t1, t2)), lineBreak);
    },
    _complexSelector$0() {
      return this._complexSelector$1$lineBreak(false);
    },
    _compoundSelector$0() {
      var t3, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        components = A._setArrayType([_this._simpleSelector$0()], type$.JSArray_SimpleSelector);
      while (true) {
        t3 = t1.peekChar$0();
        if (!(t3 === 42 || t3 === 91 || t3 === 46 || t3 === 35 || t3 === 37 || t3 === 58))
          break;
        components.push(_this._simpleSelector$1$allowParent(false));
      }
      return A.CompoundSelector$(components, _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _simpleSelector$1$allowParent(allowParent) {
      var t2, $name, text, t3, suffix, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (allowParent == null)
        allowParent = _this._allowParent;
      switch (t1.peekChar$0()) {
        case 91:
          return _this._attributeSelector$0();
        case 46:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(46);
          return new A.ClassSelector(_this.identifier$0(), _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
        case 35:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(35);
          return new A.IDSelector(_this.identifier$0(), _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
        case 37:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(37);
          $name = _this.identifier$0();
          t2 = _this.spanFrom$1(new A._SpanScannerState(t1, t2));
          if (!_this._allowPlaceholder)
            _this.error$2(0, string$.Placeh, t1.spanFrom$1(start));
          return new A.PlaceholderSelector($name, t2);
        case 58:
          return _this._pseudoSelector$0();
        case 38:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(38);
          if (_this.lookingAtIdentifierBody$0()) {
            text = new A.StringBuffer("");
            _this._identifierBody$1(text);
            if (text._contents.length === 0)
              t1.error$1(0, "Expected identifier body.");
            t3 = text._contents;
            suffix = t3.charCodeAt(0) == 0 ? t3 : t3;
          } else
            suffix = null;
          t2 = _this.spanFrom$1(new A._SpanScannerState(t1, t2));
          if (!allowParent)
            _this.error$2(0, "Parent selectors aren't allowed here.", t1.spanFrom$1(start));
          return new A.ParentSelector(suffix, t2);
        default:
          return _this._typeOrUniversalSelector$0();
      }
    },
    _simpleSelector$0() {
      return this._simpleSelector$1$allowParent(null);
    },
    _attributeSelector$0() {
      var $name, operator, next, value, modifier, _this = this, _null = null,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(91);
      _this.whitespace$0();
      $name = _this._attributeName$0();
      _this.whitespace$0();
      if (t1.scanChar$1(93))
        return new A.AttributeSelector($name, _null, _null, _null, _this.spanFrom$1(start));
      operator = _this._attributeOperator$0();
      _this.whitespace$0();
      next = t1.peekChar$0();
      value = next === 39 || next === 34 ? _this.string$0() : _this.identifier$0();
      _this.whitespace$0();
      next = t1.peekChar$0();
      modifier = next != null && A.CharacterExtension_get_isAlphabetic(next) ? A.Primitives_stringFromCharCode(t1.readChar$0()) : _null;
      t1.expectChar$1(93);
      return new A.AttributeSelector($name, operator, value, modifier, _this.spanFrom$1(start));
    },
    _attributeName$0() {
      var nameOrNamespace, _this = this,
        t1 = _this.scanner;
      if (t1.scanChar$1(42)) {
        t1.expectChar$1(124);
        return new A.QualifiedName(_this.identifier$0(), "*");
      }
      if (t1.scanChar$1(124))
        return new A.QualifiedName(_this.identifier$0(), "");
      nameOrNamespace = _this.identifier$0();
      if (t1.peekChar$0() !== 124 || t1.peekChar$1(1) === 61)
        return new A.QualifiedName(nameOrNamespace, null);
      t1.readChar$0();
      return new A.QualifiedName(_this.identifier$0(), nameOrNamespace);
    },
    _attributeOperator$0() {
      var t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      switch (t1.readChar$0()) {
        case 61:
          return B.AttributeOperator_ES6;
        case 126:
          t1.expectChar$1(61);
          return B.AttributeOperator_r60;
        case 124:
          t1.expectChar$1(61);
          return B.AttributeOperator_ivT;
        case 94:
          t1.expectChar$1(61);
          return B.AttributeOperator_eot;
        case 36:
          t1.expectChar$1(61);
          return B.AttributeOperator_BGd;
        case 42:
          t1.expectChar$1(61);
          return B.AttributeOperator_8aB;
        default:
          t1.error$2$position(0, 'Expected "]".', t2);
      }
    },
    _pseudoSelector$0() {
      var element, $name, unvendored, selector, argument, t2, _this = this, _null = null,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(58);
      element = t1.scanChar$1(58);
      $name = _this.identifier$0();
      if (!t1.scanChar$1(40))
        return A.PseudoSelector$($name, _this.spanFrom$1(start), _null, element, _null);
      _this.whitespace$0();
      unvendored = A.unvendor($name);
      if (element)
        if ($._selectorPseudoElements.contains$1(0, unvendored)) {
          selector = _this._selectorList$0();
          argument = _null;
        } else {
          argument = _this.declarationValue$1$allowEmpty(true);
          selector = _null;
        }
      else if ($._selectorPseudoClasses.contains$1(0, unvendored)) {
        selector = _this._selectorList$0();
        argument = _null;
      } else if (unvendored === "nth-child" || unvendored === "nth-last-child") {
        argument = _this._aNPlusB$0();
        _this.whitespace$0();
        t2 = t1.peekChar$1(-1);
        if ((t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12) && t1.peekChar$0() !== 41) {
          _this.expectIdentifier$1("of");
          argument += " of";
          _this.whitespace$0();
          selector = _this._selectorList$0();
        } else
          selector = _null;
      } else {
        argument = B.JSString_methods.trimRight$0(_this.declarationValue$1$allowEmpty(true));
        selector = _null;
      }
      t1.expectChar$1(41);
      return A.PseudoSelector$($name, _this.spanFrom$1(start), argument, element, selector);
    },
    _aNPlusB$0() {
      var t1, _0_0, t2, $self, next, _this = this;
      $label0$0: {
        t1 = _this.scanner;
        _0_0 = t1.peekChar$0();
        if (101 === _0_0 || 69 === _0_0) {
          _this.expectIdentifier$1("even");
          return "even";
        }
        if (111 === _0_0 || 79 === _0_0) {
          _this.expectIdentifier$1("odd");
          return "odd";
        }
        if (43 === _0_0 || 45 === _0_0) {
          t2 = "" + A.Primitives_stringFromCharCode(t1.readChar$0());
          break $label0$0;
        }
        t2 = "";
      }
      $self = t1.peekChar$0();
      if ($self != null && $self >= 48 && $self <= 57) {
        do {
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
          $self = t1.peekChar$0();
        } while ($self != null && $self >= 48 && $self <= 57);
        _this.whitespace$0();
        if (!_this.scanIdentChar$1(110))
          return t2.charCodeAt(0) == 0 ? t2 : t2;
      } else
        _this.expectIdentChar$1(110);
      t2 += A.Primitives_stringFromCharCode(110);
      _this.whitespace$0();
      next = t1.peekChar$0();
      if (next !== 43 && next !== 45)
        return t2.charCodeAt(0) == 0 ? t2 : t2;
      t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
      _this.whitespace$0();
      $self = t1.peekChar$0();
      if (!($self != null && $self >= 48 && $self <= 57))
        t1.error$1(0, "Expected a number.");
      do {
        t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        $self = t1.peekChar$0();
      } while ($self != null && $self >= 48 && $self <= 57);
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    },
    _typeOrUniversalSelector$0() {
      var nameOrNamespace, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (t1.scanChar$1(42)) {
        if (!t1.scanChar$1(124))
          return new A.UniversalSelector(null, _this.spanFrom$1(start));
        return t1.scanChar$1(42) ? new A.UniversalSelector("*", _this.spanFrom$1(start)) : new A.TypeSelector(new A.QualifiedName(_this.identifier$0(), "*"), _this.spanFrom$1(start));
      } else if (t1.scanChar$1(124))
        return t1.scanChar$1(42) ? new A.UniversalSelector("", _this.spanFrom$1(start)) : new A.TypeSelector(new A.QualifiedName(_this.identifier$0(), ""), _this.spanFrom$1(start));
      nameOrNamespace = _this.identifier$0();
      if (!t1.scanChar$1(124))
        return new A.TypeSelector(new A.QualifiedName(nameOrNamespace, null), _this.spanFrom$1(start));
      else if (t1.scanChar$1(42))
        return new A.UniversalSelector(nameOrNamespace, _this.spanFrom$1(start));
      else
        return new A.TypeSelector(new A.QualifiedName(_this.identifier$0(), nameOrNamespace), _this.spanFrom$1(start));
    }
  };
  A.SelectorParser_parse_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        selector = t1._selectorList$0();
      t1 = t1.scanner;
      if (t1._string_scanner$_position !== t1.string.length)
        t1.error$1(0, "expected selector.");
      return selector;
    },
    $signature: 354
  };
  A.SelectorParser_parseCompoundSelector_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        compound = t1._compoundSelector$0();
      t1 = t1.scanner;
      if (t1._string_scanner$_position !== t1.string.length)
        t1.error$1(0, "expected selector.");
      return compound;
    },
    $signature: 355
  };
  A.StylesheetParser.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.StylesheetParser_parse_closure(this));
    },
    parseArgumentDeclaration$0() {
      return this._parseSingleProduction$1$1(new A.StylesheetParser_parseArgumentDeclaration_closure(this), type$.ArgumentDeclaration);
    },
    parseVariableDeclaration$0() {
      return this._parseSingleProduction$1$1(new A.StylesheetParser_parseVariableDeclaration_closure(this), type$.VariableDeclaration);
    },
    parseUseRule$0() {
      return this._parseSingleProduction$1$1(new A.StylesheetParser_parseUseRule_closure(this), type$.UseRule);
    },
    _parseSingleProduction$1$1(production, $T) {
      return this.wrapSpanFormatException$1(new A.StylesheetParser__parseSingleProduction_closure(this, production, $T));
    },
    _statement$1$root(root) {
      var t2, _this = this,
        t1 = _this.scanner,
        _0_0 = t1.peekChar$0();
      if (64 === _0_0)
        return _this.atRule$2$root(new A.StylesheetParser__statement_closure(_this), root);
      if (43 === _0_0) {
        if (!_this.get$indented() || !_this.lookingAtIdentifier$1(1))
          return _this._styleRule$0();
        _this._isUseAllowed = false;
        t2 = t1._string_scanner$_position;
        t1.readChar$0();
        return _this._includeRule$1(new A._SpanScannerState(t1, t2));
      }
      if (61 === _0_0) {
        if (!_this.get$indented())
          return _this._styleRule$0();
        _this._isUseAllowed = false;
        t2 = t1._string_scanner$_position;
        t1.readChar$0();
        _this.whitespace$0();
        return _this._mixinRule$1(new A._SpanScannerState(t1, t2));
      }
      if (125 === _0_0)
        t1.error$2$length(0, 'unmatched "}".', 1);
      return _this._inStyleRule || _this._stylesheet$_inUnknownAtRule || _this._stylesheet$_inMixin || _this._inContentBlock ? _this._declarationOrStyleRule$0() : _this._variableDeclarationOrStyleRule$0();
    },
    _statement$0() {
      return this._statement$1$root(false);
    },
    _variableDeclarationWithNamespace$0() {
      var t1 = this.scanner,
        t2 = t1._string_scanner$_position,
        namespace = this.identifier$0();
      t1.expectChar$1(46);
      return this.variableDeclarationWithoutNamespace$2(namespace, new A._SpanScannerState(t1, t2));
    },
    variableDeclarationWithoutNamespace$2(namespace, start_) {
      var t1, start, $name, t2, value, flagStart, t3, guarded, global, _0_0, endPosition, t4, t5, t6, declaration, _this = this,
        precedingComment = _this.lastSilentComment;
      _this.lastSilentComment = null;
      if (start_ == null) {
        t1 = _this.scanner;
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      } else
        start = start_;
      $name = _this.variableName$0();
      t1 = namespace != null;
      if (t1)
        _this._assertPublic$2($name, new A.StylesheetParser_variableDeclarationWithoutNamespace_closure(_this, start));
      if (_this.get$plainCss())
        _this.error$2(0, string$.Sass_v, _this.scanner.spanFrom$1(start));
      _this.whitespace$0();
      t2 = _this.scanner;
      t2.expectChar$1(58);
      _this.whitespace$0();
      value = _this._expression$0();
      flagStart = new A._SpanScannerState(t2, t2._string_scanner$_position);
      for (t3 = _this.logger, guarded = false, global = false; t2.scanChar$1(33);) {
        $label0$0: {
          _0_0 = _this.identifier$0();
          if ("default" === _0_0) {
            if (guarded) {
              endPosition = t2._string_scanner$_position;
              t4 = t2._sourceFile;
              t5 = flagStart.position;
              t6 = new A._FileSpan(t4, t5, endPosition);
              t6._FileSpan$3(t4, t5, endPosition);
              A.WarnForDeprecation_warnForDeprecation(t3, B.Deprecation_Auo, string$.x21defau, t6, null);
            }
            guarded = true;
            break $label0$0;
          }
          if ("global" === _0_0) {
            if (t1) {
              endPosition = t2._string_scanner$_position;
              t4 = t2._sourceFile;
              t5 = flagStart.position;
              t6 = new A._FileSpan(t4, t5, endPosition);
              t6._FileSpan$3(t4, t5, endPosition);
              _this.error$2(0, string$.x21globai, t6);
            } else if (global) {
              endPosition = t2._string_scanner$_position;
              t4 = t2._sourceFile;
              t5 = flagStart.position;
              t6 = new A._FileSpan(t4, t5, endPosition);
              t6._FileSpan$3(t4, t5, endPosition);
              A.WarnForDeprecation_warnForDeprecation(t3, B.Deprecation_Auo, string$.x21globas, t6, null);
            }
            global = true;
            break $label0$0;
          }
          endPosition = t2._string_scanner$_position;
          t4 = t2._sourceFile;
          t5 = flagStart.position;
          t6 = new A._FileSpan(t4, t5, endPosition);
          t6._FileSpan$3(t4, t5, endPosition);
          _this.error$2(0, "Invalid flag name.", t6);
        }
        _this.whitespace$0();
        flagStart = new A._SpanScannerState(t2, t2._string_scanner$_position);
      }
      _this.expectStatementSeparator$1("variable declaration");
      declaration = A.VariableDeclaration$($name, value, t2.spanFrom$1(start), precedingComment, global, guarded, namespace);
      if (global)
        _this._globalVariables.putIfAbsent$2($name, new A.StylesheetParser_variableDeclarationWithoutNamespace_closure0(declaration));
      return declaration;
    },
    variableDeclarationWithoutNamespace$0() {
      return this.variableDeclarationWithoutNamespace$2(null, null);
    },
    _variableDeclarationOrStyleRule$0() {
      var t1, t2, variableOrInterpolation, t3, _this = this;
      if (_this.get$plainCss())
        return _this._styleRule$0();
      if (_this.get$indented() && _this.scanner.scanChar$1(92))
        return _this._styleRule$0();
      if (!_this.lookingAtIdentifier$0())
        return _this._styleRule$0();
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      variableOrInterpolation = _this._variableDeclarationOrInterpolation$0();
      if (variableOrInterpolation instanceof A.VariableDeclaration)
        t1 = variableOrInterpolation;
      else {
        t3 = new A.InterpolationBuffer(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Object));
        t3.addInterpolation$1(type$.Interpolation._as(variableOrInterpolation));
        t2 = _this._styleRule$2(t3, new A._SpanScannerState(t1, t2));
        t1 = t2;
      }
      return t1;
    },
    _declarationOrStyleRule$0() {
      var t1, t2, declarationOrBuffer, _this = this;
      if (_this.get$plainCss() && _this._inStyleRule && !_this._stylesheet$_inUnknownAtRule)
        return _this._propertyOrVariableDeclaration$0();
      if (_this.get$indented() && _this.scanner.scanChar$1(92))
        return _this._styleRule$0();
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      declarationOrBuffer = _this._declarationOrBuffer$0();
      return type$.Statement._is(declarationOrBuffer) ? declarationOrBuffer : _this._styleRule$2(type$.InterpolationBuffer._as(declarationOrBuffer), new A._SpanScannerState(t1, t2));
    },
    _declarationOrBuffer$0() {
      var midBuffer, couldBeSelector, beforeDeclaration, additional, t3, startsWithPunctuation, variableOrInterpolation, t4, $name, postColonWhitespace, exception, _this = this, t1 = {},
        t2 = _this.scanner,
        start = new A._SpanScannerState(t2, t2._string_scanner$_position),
        nameBuffer = new A.InterpolationBuffer(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Object));
      if (_this._lookingAtPotentialPropertyHack$0()) {
        t3 = t2.readChar$0();
        nameBuffer._interpolation_buffer$_text._contents += A.Primitives_stringFromCharCode(t3);
        t3 = _this.rawText$1(_this.get$whitespace());
        nameBuffer._interpolation_buffer$_text._contents += t3;
        startsWithPunctuation = true;
      } else
        startsWithPunctuation = false;
      if (!_this._lookingAtInterpolatedIdentifier$0())
        return nameBuffer;
      variableOrInterpolation = startsWithPunctuation ? _this.interpolatedIdentifier$0() : _this._variableDeclarationOrInterpolation$0();
      if (variableOrInterpolation instanceof A.VariableDeclaration)
        return variableOrInterpolation;
      else
        nameBuffer.addInterpolation$1(type$.Interpolation._as(variableOrInterpolation));
      _this._isUseAllowed = false;
      if (t2.matches$1("/*")) {
        t3 = _this.rawText$1(_this.get$loudComment());
        nameBuffer._interpolation_buffer$_text._contents += t3;
      }
      midBuffer = new A.StringBuffer("");
      t3 = _this.get$whitespace();
      midBuffer._contents += _this.rawText$1(t3);
      t4 = t2._string_scanner$_position;
      if (!t2.scanChar$1(58)) {
        if (midBuffer._contents.length !== 0)
          nameBuffer._interpolation_buffer$_text._contents += A.Primitives_stringFromCharCode(32);
        return nameBuffer;
      }
      midBuffer._contents += A.Primitives_stringFromCharCode(58);
      $name = nameBuffer.interpolation$1(t2.spanFrom$2(start, new A._SpanScannerState(t2, t4)));
      if (B.JSString_methods.startsWith$1($name.get$initialPlain(), "--")) {
        t1 = _this._interpolatedDeclarationValue$0();
        _this.expectStatementSeparator$1("custom property");
        return A.Declaration$($name, new A.StringExpression(t1, false), t2.spanFrom$1(start));
      }
      if (t2.scanChar$1(58)) {
        t1 = nameBuffer;
        t2 = t1._interpolation_buffer$_text;
        t2._contents += A.S(midBuffer);
        t2._contents += A.Primitives_stringFromCharCode(58);
        return t1;
      } else if (_this.get$indented() && _this._lookingAtInterpolatedIdentifier$0()) {
        t1 = nameBuffer;
        t1._interpolation_buffer$_text._contents += A.S(midBuffer);
        return t1;
      }
      postColonWhitespace = _this.rawText$1(t3);
      if (_this.lookingAtChildren$0())
        return _this._withChildren$3(_this.get$_declarationChild(), start, new A.StylesheetParser__declarationOrBuffer_closure($name));
      midBuffer._contents += postColonWhitespace;
      couldBeSelector = postColonWhitespace.length === 0 && _this._lookingAtInterpolatedIdentifier$0();
      beforeDeclaration = new A._SpanScannerState(t2, t2._string_scanner$_position);
      t3 = t1.value = null;
      try {
        t3 = t1.value = _this._expression$0();
        if (_this.lookingAtChildren$0()) {
          if (couldBeSelector)
            _this.expectStatementSeparator$0();
        } else if (!_this.atEndOfStatement$0())
          _this.expectStatementSeparator$0();
      } catch (exception) {
        if (type$.FormatException._is(A.unwrapException(exception))) {
          if (!couldBeSelector)
            throw exception;
          t2.set$state(beforeDeclaration);
          additional = _this.almostAnyValue$0();
          if (!_this.get$indented() && t2.peekChar$0() === 59)
            throw exception;
          nameBuffer._interpolation_buffer$_text._contents += A.S(midBuffer);
          nameBuffer.addInterpolation$1(additional);
          return nameBuffer;
        } else
          throw exception;
      }
      if (_this.lookingAtChildren$0())
        return _this._withChildren$3(_this.get$_declarationChild(), start, new A.StylesheetParser__declarationOrBuffer_closure0(t1, $name));
      else {
        _this.expectStatementSeparator$0();
        return A.Declaration$($name, t3, t2.spanFrom$1(start));
      }
    },
    _variableDeclarationOrInterpolation$0() {
      var t1, start, identifier, t2, buffer, _this = this;
      if (!_this.lookingAtIdentifier$0())
        return _this.interpolatedIdentifier$0();
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      identifier = _this.identifier$0();
      if (t1.matches$1(".$")) {
        t1.readChar$0();
        return _this.variableDeclarationWithoutNamespace$2(identifier, start);
      } else {
        t2 = new A.StringBuffer("");
        buffer = new A.InterpolationBuffer(t2, A._setArrayType([], type$.JSArray_Object));
        t2._contents = "" + identifier;
        if (_this._lookingAtInterpolatedIdentifierBody$0())
          buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
        return buffer.interpolation$1(t1.spanFrom$1(start));
      }
    },
    _styleRule$2(buffer, start_) {
      var t2, start, interpolation, wasInStyleRule, _this = this, t1 = {};
      _this._isUseAllowed = false;
      if (start_ == null) {
        t2 = _this.scanner;
        start = new A._SpanScannerState(t2, t2._string_scanner$_position);
      } else
        start = start_;
      interpolation = t1.interpolation = _this.styleRuleSelector$0();
      if (buffer != null) {
        buffer.addInterpolation$1(interpolation);
        t2 = t1.interpolation = buffer.interpolation$1(_this.scanner.spanFrom$1(start));
      } else
        t2 = interpolation;
      if (t2.contents.length === 0)
        _this.scanner.error$1(0, 'expected "}".');
      wasInStyleRule = _this._inStyleRule;
      _this._inStyleRule = true;
      return _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser__styleRule_closure(t1, _this, wasInStyleRule, start));
    },
    _styleRule$0() {
      return this._styleRule$2(null, null);
    },
    _propertyOrVariableDeclaration$1$parseCustomProperties(parseCustomProperties) {
      var t3, nameBuffer, variableOrInterpolation, $name, value, _this = this,
        _s48_ = string$.Nested,
        t1 = {},
        t2 = _this.scanner,
        start = new A._SpanScannerState(t2, t2._string_scanner$_position);
      t1.name = null;
      if (_this._lookingAtPotentialPropertyHack$0()) {
        t3 = new A.StringBuffer("");
        nameBuffer = new A.InterpolationBuffer(t3, A._setArrayType([], type$.JSArray_Object));
        t3._contents += A.Primitives_stringFromCharCode(t2.readChar$0());
        t3._contents += _this.rawText$1(_this.get$whitespace());
        nameBuffer.addInterpolation$1(_this.interpolatedIdentifier$0());
        t3 = t1.name = nameBuffer.interpolation$1(t2.spanFrom$1(start));
      } else if (!_this.get$plainCss()) {
        variableOrInterpolation = _this._variableDeclarationOrInterpolation$0();
        if (variableOrInterpolation instanceof A.VariableDeclaration)
          return variableOrInterpolation;
        else {
          type$.Interpolation._as(variableOrInterpolation);
          t1.name = variableOrInterpolation;
        }
        t3 = variableOrInterpolation;
      } else {
        $name = _this.interpolatedIdentifier$0();
        t1.name = $name;
        t3 = $name;
      }
      _this.whitespace$0();
      t2.expectChar$1(58);
      if (parseCustomProperties && B.JSString_methods.startsWith$1(t3.get$initialPlain(), "--")) {
        t1 = _this._interpolatedDeclarationValue$0();
        _this.expectStatementSeparator$1("custom property");
        return A.Declaration$(t3, new A.StringExpression(t1, false), t2.spanFrom$1(start));
      }
      _this.whitespace$0();
      if (_this.lookingAtChildren$0()) {
        if (_this.get$plainCss())
          t2.error$1(0, _s48_);
        return _this._withChildren$3(_this.get$_declarationChild(), start, new A.StylesheetParser__propertyOrVariableDeclaration_closure(t1));
      }
      value = _this._expression$0();
      if (_this.lookingAtChildren$0()) {
        if (_this.get$plainCss())
          t2.error$1(0, _s48_);
        return _this._withChildren$3(_this.get$_declarationChild(), start, new A.StylesheetParser__propertyOrVariableDeclaration_closure0(t1, value));
      } else {
        _this.expectStatementSeparator$0();
        return A.Declaration$(t3, value, t2.spanFrom$1(start));
      }
    },
    _propertyOrVariableDeclaration$0() {
      return this._propertyOrVariableDeclaration$1$parseCustomProperties(true);
    },
    _declarationChild$0() {
      return this.scanner.peekChar$0() === 64 ? this._declarationAtRule$0() : this._propertyOrVariableDeclaration$1$parseCustomProperties(false);
    },
    atRule$2$root(child, root) {
      var $name, wasUseAllowed, value, optional, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$2$name(64, "@-rule");
      $name = _this.interpolatedIdentifier$0();
      _this.whitespace$0();
      wasUseAllowed = _this._isUseAllowed;
      _this._isUseAllowed = false;
      switch ($name.get$asPlain()) {
        case "at-root":
          return _this._atRootRule$1(start);
        case "content":
          return _this._contentRule$1(start);
        case "debug":
          return _this._debugRule$1(start);
        case "each":
          return _this._eachRule$2(start, child);
        case "else":
          return _this._disallowedAtRule$1(start);
        case "error":
          return _this._errorRule$1(start);
        case "extend":
          if (!_this._inStyleRule && !_this._stylesheet$_inMixin && !_this._inContentBlock)
            _this.error$2(0, string$.x40exten, t1.spanFrom$1(start));
          value = _this.almostAnyValue$0();
          optional = t1.scanChar$1(33);
          if (optional)
            _this.expectIdentifier$1("optional");
          _this.expectStatementSeparator$1("@extend rule");
          return new A.ExtendRule(value, optional, t1.spanFrom$1(start));
        case "for":
          return _this._forRule$2(start, child);
        case "forward":
          _this._isUseAllowed = wasUseAllowed;
          if (!root)
            _this._disallowedAtRule$1(start);
          return _this._forwardRule$1(start);
        case "function":
          return _this._functionRule$1(start);
        case "if":
          return _this._ifRule$2(start, child);
        case "import":
          return _this._importRule$1(start);
        case "include":
          return _this._includeRule$1(start);
        case "media":
          return _this.mediaRule$1(start);
        case "mixin":
          return _this._mixinRule$1(start);
        case "-moz-document":
          return _this.mozDocumentRule$2(start, $name);
        case "return":
          return _this._disallowedAtRule$1(start);
        case "supports":
          return _this.supportsRule$1(start);
        case "use":
          _this._isUseAllowed = wasUseAllowed;
          if (!root)
            _this._disallowedAtRule$1(start);
          return _this._useRule$1(start);
        case "warn":
          return _this._warnRule$1(start);
        case "while":
          return _this._whileRule$2(start, child);
        default:
          return _this.unknownAtRule$2(start, $name);
      }
    },
    _declarationAtRule$0() {
      var _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        _0_0 = _this._plainAtRuleName$0();
      $label0$0: {
        if ("content" === _0_0) {
          t1 = _this._contentRule$1(start);
          break $label0$0;
        }
        if ("debug" === _0_0) {
          t1 = _this._debugRule$1(start);
          break $label0$0;
        }
        if ("each" === _0_0) {
          t1 = _this._eachRule$2(start, _this.get$_declarationChild());
          break $label0$0;
        }
        if ("else" === _0_0)
          _this._disallowedAtRule$1(start);
        if ("error" === _0_0) {
          t1 = _this._errorRule$1(start);
          break $label0$0;
        }
        if ("for" === _0_0) {
          t1 = _this._forRule$2(start, _this.get$_declarationChild());
          break $label0$0;
        }
        if ("if" === _0_0) {
          t1 = _this._ifRule$2(start, _this.get$_declarationChild());
          break $label0$0;
        }
        if ("include" === _0_0) {
          t1 = _this._includeRule$1(start);
          break $label0$0;
        }
        if ("warn" === _0_0) {
          t1 = _this._warnRule$1(start);
          break $label0$0;
        }
        if ("while" === _0_0) {
          t1 = _this._whileRule$2(start, _this.get$_declarationChild());
          break $label0$0;
        }
        t1 = _this._disallowedAtRule$1(start);
      }
      return t1;
    },
    _functionChild$0() {
      var state, variableDeclarationError, stackTrace, statement, t2, exception, t3, start, _0_0, value, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$0() !== 64) {
        state = new A._SpanScannerState(t1, t1._string_scanner$_position);
        try {
          t2 = _this._variableDeclarationWithNamespace$0();
          return t2;
        } catch (exception) {
          t2 = A.unwrapException(exception);
          t3 = type$.SourceSpanFormatException;
          if (t3._is(t2)) {
            variableDeclarationError = t2;
            stackTrace = A.getTraceFromException(exception);
            t1.set$state(state);
            statement = null;
            try {
              statement = _this._declarationOrStyleRule$0();
            } catch (exception) {
              if (t3._is(A.unwrapException(exception)))
                throw A.wrapException(variableDeclarationError);
              else
                throw exception;
            }
            t2 = statement instanceof A.StyleRule ? "style rules" : "declarations";
            _this.error$3(0, "@function rules may not contain " + t2 + ".", J.get$span$z(statement), stackTrace);
          } else
            throw exception;
        }
      }
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _0_0 = _this._plainAtRuleName$0();
      $label0$0: {
        if ("debug" === _0_0) {
          t1 = _this._debugRule$1(start);
          break $label0$0;
        }
        if ("each" === _0_0) {
          t1 = _this._eachRule$2(start, _this.get$_functionChild());
          break $label0$0;
        }
        if ("else" === _0_0)
          _this._disallowedAtRule$1(start);
        if ("error" === _0_0) {
          t1 = _this._errorRule$1(start);
          break $label0$0;
        }
        if ("for" === _0_0) {
          t1 = _this._forRule$2(start, _this.get$_functionChild());
          break $label0$0;
        }
        if ("if" === _0_0) {
          t1 = _this._ifRule$2(start, _this.get$_functionChild());
          break $label0$0;
        }
        if ("return" === _0_0) {
          value = _this._expression$0();
          _this.expectStatementSeparator$1("@return rule");
          t1 = new A.ReturnRule(value, t1.spanFrom$1(start));
          break $label0$0;
        }
        if ("warn" === _0_0) {
          t1 = _this._warnRule$1(start);
          break $label0$0;
        }
        if ("while" === _0_0) {
          t1 = _this._whileRule$2(start, _this.get$_functionChild());
          break $label0$0;
        }
        t1 = _this._disallowedAtRule$1(start);
      }
      return t1;
    },
    _plainAtRuleName$0() {
      this.scanner.expectChar$2$name(64, "@-rule");
      var $name = this.identifier$0();
      this.whitespace$0();
      return $name;
    },
    _atRootRule$1(start) {
      var t2, t3, t4, buffer, t5, query, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$0() === 40) {
        t2 = t1._string_scanner$_position;
        t3 = new A.StringBuffer("");
        t4 = A._setArrayType([], type$.JSArray_Object);
        buffer = new A.InterpolationBuffer(t3, t4);
        t1.expectChar$1(40);
        t3._contents += A.Primitives_stringFromCharCode(40);
        _this.whitespace$0();
        t5 = _this._expression$0();
        buffer._flushText$0();
        t4.push(t5);
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          t3._contents += A.Primitives_stringFromCharCode(58);
          t3._contents += A.Primitives_stringFromCharCode(32);
          t5 = _this._expression$0();
          buffer._flushText$0();
          t4.push(t5);
        }
        t1.expectChar$1(41);
        _this.whitespace$0();
        t3._contents += A.Primitives_stringFromCharCode(41);
        query = buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
        _this.whitespace$0();
        return _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser__atRootRule_closure(query));
      } else if (_this.lookingAtChildren$0())
        return _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser__atRootRule_closure0());
      else
        return A.AtRootRule$(A._setArrayType([_this._styleRule$0()], type$.JSArray_Statement), t1.spanFrom$1(start), null);
    },
    _contentRule$1(start) {
      var t1, $arguments, t2, t3, _this = this;
      if (!_this._stylesheet$_inMixin)
        _this.error$2(0, string$.x40conte, _this.scanner.spanFrom$1(start));
      _this.whitespace$0();
      t1 = _this.scanner;
      if (t1.peekChar$0() === 40)
        $arguments = _this._argumentInvocation$1$mixin(true);
      else {
        t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
        t3 = t2.offset;
        $arguments = A.ArgumentInvocation$empty(A._FileSpan$(t2.file, t3, t3));
      }
      _this.expectStatementSeparator$1("@content rule");
      return new A.ContentRule($arguments, t1.spanFrom$1(start));
    },
    _debugRule$1(start) {
      var value = this._expression$0();
      this.expectStatementSeparator$1("@debug rule");
      return new A.DebugRule(value, this.scanner.spanFrom$1(start));
    },
    _eachRule$2(start, child) {
      var variables, t1, _this = this,
        wasInControlDirective = _this._inControlDirective;
      _this._inControlDirective = true;
      variables = A._setArrayType([_this.variableName$0()], type$.JSArray_String);
      _this.whitespace$0();
      for (t1 = _this.scanner; t1.scanChar$1(44);) {
        _this.whitespace$0();
        t1.expectChar$1(36);
        variables.push(_this.identifier$1$normalize(true));
        _this.whitespace$0();
      }
      _this.expectIdentifier$1("in");
      _this.whitespace$0();
      return _this._withChildren$3(child, start, new A.StylesheetParser__eachRule_closure(_this, wasInControlDirective, variables, _this._expression$0()));
    },
    _errorRule$1(start) {
      var value = this._expression$0();
      this.expectStatementSeparator$1("@error rule");
      return new A.ErrorRule(value, this.scanner.spanFrom$1(start));
    },
    _functionRule$1(start) {
      var $name, $arguments, _0_0, _this = this,
        precedingComment = _this.lastSilentComment;
      _this.lastSilentComment = null;
      $name = _this.identifier$1$normalize(true);
      _this.whitespace$0();
      $arguments = _this._argumentDeclaration$0();
      if (_this._stylesheet$_inMixin || _this._inContentBlock)
        _this.error$2(0, string$.Mixinscf, _this.scanner.spanFrom$1(start));
      else if (_this._inControlDirective)
        _this.error$2(0, string$.Functi, _this.scanner.spanFrom$1(start));
      _0_0 = A.unvendor($name);
      if ("calc" === _0_0 || "element" === _0_0 || "expression" === _0_0 || "url" === _0_0 || "and" === _0_0 || "or" === _0_0 || "not" === _0_0 || "clamp" === _0_0)
        _this.error$2(0, "Invalid function name.", _this.scanner.spanFrom$1(start));
      _this.whitespace$0();
      return _this._withChildren$3(_this.get$_functionChild(), start, new A.StylesheetParser__functionRule_closure($name, $arguments, precedingComment));
    },
    _forRule$2(start, child) {
      var variable, from, _this = this, t1 = {},
        wasInControlDirective = _this._inControlDirective;
      _this._inControlDirective = true;
      variable = _this.variableName$0();
      _this.whitespace$0();
      _this.expectIdentifier$1("from");
      _this.whitespace$0();
      t1.exclusive = null;
      from = _this._expression$1$until(new A.StylesheetParser__forRule_closure(t1, _this));
      if (t1.exclusive == null)
        _this.scanner.error$1(0, 'Expected "to" or "through".');
      _this.whitespace$0();
      return _this._withChildren$3(child, start, new A.StylesheetParser__forRule_closure0(t1, _this, wasInControlDirective, variable, from, _this._expression$0()));
    },
    _forwardRule$1(start) {
      var prefix, _0_0, t1, t2, hiddenVariables, hiddenMixinsAndFunctions, shownVariables, shownMixinsAndFunctions, _1_0, configuration, span, t3, t4, _this = this, _null = null,
        url = _this._urlString$0();
      _this.whitespace$0();
      if (_this.scanIdentifier$1("as")) {
        _this.whitespace$0();
        prefix = _this.identifier$1$normalize(true);
        _this.scanner.expectChar$1(42);
        _this.whitespace$0();
      } else
        prefix = _null;
      if (_this.scanIdentifier$1("show")) {
        _0_0 = _this._memberList$0();
        t1 = _0_0._0;
        t2 = _0_0._1;
        hiddenVariables = _null;
        hiddenMixinsAndFunctions = hiddenVariables;
        shownVariables = t2;
        shownMixinsAndFunctions = t1;
      } else {
        if (_this.scanIdentifier$1("hide")) {
          _1_0 = _this._memberList$0();
          t1 = _1_0._0;
          t2 = _1_0._1;
          hiddenVariables = t2;
          hiddenMixinsAndFunctions = t1;
        } else {
          hiddenVariables = _null;
          hiddenMixinsAndFunctions = hiddenVariables;
        }
        shownVariables = _null;
        shownMixinsAndFunctions = shownVariables;
      }
      configuration = _this._stylesheet$_configuration$1$allowGuarded(true);
      _this.expectStatementSeparator$1("@forward rule");
      span = _this.scanner.spanFrom$1(start);
      if (!_this._isUseAllowed)
        _this.error$2(0, string$.x40forwa, span);
      if (shownMixinsAndFunctions != null) {
        shownVariables.toString;
        t1 = type$.String;
        t2 = A.LinkedHashSet_LinkedHashSet$of(shownMixinsAndFunctions, t1);
        t3 = type$.UnmodifiableSetView_String;
        t1 = A.LinkedHashSet_LinkedHashSet$of(shownVariables, t1);
        t4 = configuration == null ? B.List_empty10 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable);
        return new A.ForwardRule(url, new A.UnmodifiableSetView0(t2, t3), new A.UnmodifiableSetView0(t1, t3), _null, _null, prefix, t4, span);
      } else if (hiddenMixinsAndFunctions != null) {
        hiddenVariables.toString;
        t1 = type$.String;
        t2 = A.LinkedHashSet_LinkedHashSet$of(hiddenMixinsAndFunctions, t1);
        t3 = type$.UnmodifiableSetView_String;
        t1 = A.LinkedHashSet_LinkedHashSet$of(hiddenVariables, t1);
        t4 = configuration == null ? B.List_empty10 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable);
        return new A.ForwardRule(url, _null, _null, new A.UnmodifiableSetView0(t2, t3), new A.UnmodifiableSetView0(t1, t3), prefix, t4, span);
      } else
        return new A.ForwardRule(url, _null, _null, _null, _null, prefix, configuration == null ? B.List_empty10 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable), span);
    },
    _memberList$0() {
      var _this = this,
        t1 = type$.String,
        identifiers = A.LinkedHashSet_LinkedHashSet$_empty(t1),
        variables = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      t1 = _this.scanner;
      do {
        _this.whitespace$0();
        _this.withErrorMessage$2(string$.Expect, new A.StylesheetParser__memberList_closure(_this, variables, identifiers));
        _this.whitespace$0();
      } while (t1.scanChar$1(44));
      return new A._Record_2(identifiers, variables);
    },
    _ifRule$2(start, child) {
      var condition, children, clauses, lastClause, span, _this = this,
        ifIndentation = _this.get$currentIndentation(),
        wasInControlDirective = _this._inControlDirective;
      _this._inControlDirective = true;
      condition = _this._expression$0();
      children = _this.children$1(0, child);
      _this.whitespaceWithoutComments$0();
      clauses = A._setArrayType([A.IfClause$(condition, children)], type$.JSArray_IfClause);
      while (true) {
        if (!_this.scanElse$1(ifIndentation)) {
          lastClause = null;
          break;
        }
        _this.whitespace$0();
        if (_this.scanIdentifier$1("if")) {
          _this.whitespace$0();
          clauses.push(A.IfClause$(_this._expression$0(), _this.children$1(0, child)));
        } else {
          lastClause = A.ElseClause$(_this.children$1(0, child));
          break;
        }
      }
      _this._inControlDirective = wasInControlDirective;
      span = _this.scanner.spanFrom$1(start);
      _this.whitespaceWithoutComments$0();
      return new A.IfRule(A.List_List$unmodifiable(clauses, type$.IfClause), lastClause, span);
    },
    _importRule$1(start) {
      var argument, t3, _this = this,
        imports = A._setArrayType([], type$.JSArray_Import),
        t1 = _this.scanner,
        t2 = _this.logger;
      do {
        _this.whitespace$0();
        argument = _this.importArgument$0();
        t3 = argument instanceof A.DynamicImport;
        if (t3)
          A.WarnForDeprecation_warnForDeprecation(t2, B.Deprecation_B8J, string$.Sass__, argument.span, null);
        if ((_this._inControlDirective || _this._stylesheet$_inMixin) && t3)
          _this._disallowedAtRule$1(start);
        imports.push(argument);
        _this.whitespace$0();
      } while (t1.scanChar$1(44));
      _this.expectStatementSeparator$1("@import rule");
      t1 = t1.spanFrom$1(start);
      return new A.ImportRule(A.List_List$unmodifiable(imports, type$.Import), t1);
    },
    importArgument$0() {
      var url, urlSpan, innerError, stackTrace, modifiers, t2, exception, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        _0_0 = t1.peekChar$0();
      if (117 === _0_0 || 85 === _0_0) {
        url = _this.dynamicUrl$0();
        _this.whitespace$0();
        modifiers = _this.tryImportModifiers$0();
        return new A.StaticImport(A.Interpolation$(A._setArrayType([url], type$.JSArray_Object), t1.spanFrom$1(start)), modifiers, t1.spanFrom$1(start));
      }
      url = _this.string$0();
      urlSpan = t1.spanFrom$1(start);
      _this.whitespace$0();
      modifiers = _this.tryImportModifiers$0();
      if (_this.isPlainImportUrl$1(url) || modifiers != null) {
        t2 = urlSpan;
        return new A.StaticImport(A.Interpolation$(A._setArrayType([A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2.file._decodedChars, t2._file$_start, t2._end), 0, null)], type$.JSArray_Object), urlSpan), modifiers, t1.spanFrom$1(start));
      } else
        try {
          t1 = _this.parseImportUrl$1(url);
          return new A.DynamicImport(t1, urlSpan);
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (type$.FormatException._is(t1)) {
            innerError = t1;
            stackTrace = A.getTraceFromException(exception);
            _this.error$3(0, "Invalid URL: " + J.get$message$x(innerError), urlSpan, stackTrace);
          } else
            throw exception;
        }
    },
    parseImportUrl$1(url) {
      var t1 = $.$get$windows();
      if (t1.style.rootLength$1(url) > 0 && !$.$get$url().style.isRootRelative$1(url))
        return t1.toUri$1(url).toString$0(0);
      A.Uri_parse(url);
      return url;
    },
    isPlainImportUrl$1(url) {
      var _0_0, t1;
      if (url.length < 5)
        return false;
      if (B.JSString_methods.endsWith$1(url, ".css"))
        return true;
      _0_0 = url.charCodeAt(0);
      $label0$0: {
        if (47 === _0_0) {
          t1 = url.charCodeAt(1) === 47;
          break $label0$0;
        }
        if (104 === _0_0) {
          t1 = B.JSString_methods.startsWith$1(url, "http://") || B.JSString_methods.startsWith$1(url, "https://");
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    tryImportModifiers$0() {
      var t1, start, t2, t3, buffer, identifier, t4, $name, query, endPosition, t5, result, _this = this;
      if (!_this._lookingAtInterpolatedIdentifier$0() && _this.scanner.peekChar$0() !== 40)
        return null;
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t2 = new A.StringBuffer("");
      t3 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer(t2, t3);
      for (; true;)
        if (_this._lookingAtInterpolatedIdentifier$0()) {
          if (!(t3.length === 0 && t2._contents.length === 0))
            t2._contents += A.Primitives_stringFromCharCode(32);
          identifier = _this.interpolatedIdentifier$0();
          buffer.addInterpolation$1(identifier);
          t4 = identifier.get$asPlain();
          $name = t4 == null ? null : t4.toLowerCase();
          if ($name !== "and" && t1.scanChar$1(40)) {
            if ($name === "supports") {
              query = _this._importSupportsQuery$0();
              t4 = !(query instanceof A.SupportsDeclaration);
              if (t4)
                t2._contents += A.Primitives_stringFromCharCode(40);
              buffer._flushText$0();
              t3.push(new A.SupportsExpression(query));
              if (t4)
                t2._contents += A.Primitives_stringFromCharCode(41);
            } else {
              t2._contents += A.Primitives_stringFromCharCode(40);
              buffer.addInterpolation$1(_this._interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(true, true));
              t2._contents += A.Primitives_stringFromCharCode(41);
            }
            t1.expectChar$1(41);
            _this.whitespace$0();
          } else {
            _this.whitespace$0();
            if (t1.scanChar$1(44)) {
              t2._contents += ", ";
              buffer.addInterpolation$1(_this._mediaQueryList$0());
              endPosition = t1._string_scanner$_position;
              t4 = t1._sourceFile;
              t5 = start.position;
              t1 = new A._FileSpan(t4, t5, endPosition);
              t1._FileSpan$3(t4, t5, endPosition);
              t5 = type$.Object;
              t4 = A.List_List$of(t3, true, t5);
              t3 = t2._contents;
              if (t3.length !== 0)
                t4.push(t3.charCodeAt(0) == 0 ? t3 : t3);
              result = A.List_List$from(t4, false, t5);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t2 = new A.Interpolation(result, t1);
              t2.Interpolation$2(t4, t1);
              return t2;
            }
          }
        } else if (t1.peekChar$0() === 40) {
          if (!(t3.length === 0 && t2._contents.length === 0))
            t2._contents += A.Primitives_stringFromCharCode(32);
          buffer.addInterpolation$1(_this._mediaQueryList$0());
          endPosition = t1._string_scanner$_position;
          t1 = t1._sourceFile;
          t4 = start.position;
          t5 = new A._FileSpan(t1, t4, endPosition);
          t5._FileSpan$3(t1, t4, endPosition);
          t4 = type$.Object;
          t3 = A.List_List$of(t3, true, t4);
          t1 = t2._contents;
          if (t1.length !== 0)
            t3.push(t1.charCodeAt(0) == 0 ? t1 : t1);
          result = A.List_List$from(t3, false, t4);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t1 = new A.Interpolation(result, t5);
          t1.Interpolation$2(t3, t5);
          return t1;
        } else {
          endPosition = t1._string_scanner$_position;
          t1 = t1._sourceFile;
          t4 = start.position;
          t5 = new A._FileSpan(t1, t4, endPosition);
          t5._FileSpan$3(t1, t4, endPosition);
          t4 = type$.Object;
          t3 = A.List_List$of(t3, true, t4);
          t1 = t2._contents;
          if (t1.length !== 0)
            t3.push(t1.charCodeAt(0) == 0 ? t1 : t1);
          result = A.List_List$from(t3, false, t4);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t1 = new A.Interpolation(result, t5);
          t1.Interpolation$2(t3, t5);
          return t1;
        }
    },
    _importSupportsQuery$0() {
      var t1, t2, _0_0, $function, $name, _this = this;
      if (_this.scanIdentifier$1("not")) {
        _this.whitespace$0();
        t1 = _this.scanner;
        t2 = t1._string_scanner$_position;
        return new A.SupportsNegation(_this._supportsConditionInParens$0(), t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      } else {
        t1 = _this.scanner;
        if (t1.peekChar$0() === 40)
          return _this._supportsCondition$0();
        else {
          _0_0 = _this._tryImportSupportsFunction$0();
          if (_0_0 != null) {
            $function = _0_0;
            t2 = true;
          } else {
            $function = null;
            t2 = false;
          }
          if (t2)
            return $function;
          t2 = t1._string_scanner$_position;
          $name = _this._expression$0();
          t1.expectChar$1(58);
          return _this._supportsDeclarationValue$2($name, new A._SpanScannerState(t1, t2));
        }
      }
    },
    _tryImportSupportsFunction$0() {
      var t1, start, $name, value, _this = this;
      if (!_this._lookingAtInterpolatedIdentifier$0())
        return null;
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      $name = _this.interpolatedIdentifier$0();
      if (!t1.scanChar$1(40)) {
        t1.set$state(start);
        return null;
      }
      value = _this._interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(true, true);
      t1.expectChar$1(41);
      return new A.SupportsFunction($name, value, t1.spanFrom$1(start));
    },
    _includeRule$1(start) {
      var name0, namespace, $arguments, t2, t3, contentArguments, contentArguments_, wasInContentBlock, $content, _this = this, _null = null,
        $name = _this.identifier$0(),
        t1 = _this.scanner;
      if (t1.scanChar$1(46)) {
        name0 = _this._publicIdentifier$0();
        namespace = $name;
        $name = name0;
      } else {
        $name = A.stringReplaceAllUnchecked($name, "_", "-");
        namespace = _null;
      }
      _this.whitespace$0();
      if (t1.peekChar$0() === 40)
        $arguments = _this._argumentInvocation$1$mixin(true);
      else {
        t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
        t3 = t2.offset;
        $arguments = A.ArgumentInvocation$empty(A._FileSpan$(t2.file, t3, t3));
      }
      _this.whitespace$0();
      if (_this.scanIdentifier$1("using")) {
        _this.whitespace$0();
        contentArguments = _this._argumentDeclaration$0();
        _this.whitespace$0();
      } else
        contentArguments = _null;
      t2 = contentArguments == null;
      if (!t2 || _this.lookingAtChildren$0()) {
        if (t2) {
          t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
          t3 = t2.offset;
          contentArguments_ = new A.ArgumentDeclaration(B.List_empty11, _null, A._FileSpan$(t2.file, t3, t3));
        } else
          contentArguments_ = contentArguments;
        wasInContentBlock = _this._inContentBlock;
        _this._inContentBlock = true;
        $content = _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser__includeRule_closure(contentArguments_));
        _this._inContentBlock = wasInContentBlock;
      } else {
        _this.expectStatementSeparator$0();
        $content = _null;
      }
      t1 = t1.spanFrom$2(start, start);
      t2 = $content == null ? $arguments : $content;
      return new A.IncludeRule(namespace, $name, $arguments, $content, t1.expand$1(0, t2.get$span(t2)));
    },
    mediaRule$1(start) {
      return this._withChildren$3(this.get$_statement(), start, new A.StylesheetParser_mediaRule_closure(this._mediaQueryList$0()));
    },
    _mixinRule$1(start) {
      var $name, t1, $arguments, t2, t3, _this = this,
        precedingComment = _this.lastSilentComment;
      _this.lastSilentComment = null;
      $name = _this.identifier$1$normalize(true);
      _this.whitespace$0();
      t1 = _this.scanner;
      if (t1.peekChar$0() === 40)
        $arguments = _this._argumentDeclaration$0();
      else {
        t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
        t3 = t2.offset;
        $arguments = new A.ArgumentDeclaration(B.List_empty11, null, A._FileSpan$(t2.file, t3, t3));
      }
      if (_this._stylesheet$_inMixin || _this._inContentBlock)
        _this.error$2(0, string$.Mixinscm, t1.spanFrom$1(start));
      else if (_this._inControlDirective)
        _this.error$2(0, string$.Mixinsb, t1.spanFrom$1(start));
      _this.whitespace$0();
      _this._stylesheet$_inMixin = true;
      return _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser__mixinRule_closure(_this, $name, $arguments, precedingComment));
    },
    mozDocumentRule$2(start, $name) {
      var t5, t6, identifier, _0_0, contents, argument, trailing, endPosition, t7, t8, start0, end, _this = this, _box_0 = {},
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        t4 = A._setArrayType([], type$.JSArray_Object),
        buffer = new A.InterpolationBuffer(t3, t4);
      _box_0.needsDeprecationWarning = false;
      for (t5 = _this.get$whitespace(); true;) {
        if (t1.peekChar$0() === 35) {
          t6 = _this.singleInterpolation$0();
          buffer._flushText$0();
          t4.push(t6);
          _box_0.needsDeprecationWarning = true;
        } else {
          t6 = t1._string_scanner$_position;
          identifier = _this.identifier$0();
          $label0$0: {
            if ("url" === identifier || "url-prefix" === identifier || "domain" === identifier) {
              _0_0 = _this._tryUrlContents$2$name(new A._SpanScannerState(t1, t6), identifier);
              if (_0_0 != null) {
                contents = _0_0;
                t6 = true;
              } else {
                contents = null;
                t6 = false;
              }
              if (t6)
                buffer.addInterpolation$1(contents);
              else {
                t1.expectChar$1(40);
                _this.whitespace$0();
                argument = _this.interpolatedString$0();
                t1.expectChar$1(41);
                t3._contents += identifier;
                t3._contents += A.Primitives_stringFromCharCode(40);
                buffer.addInterpolation$1(argument.asInterpolation$0());
                t3._contents += A.Primitives_stringFromCharCode(41);
              }
              t6 = t3._contents;
              trailing = t6.charCodeAt(0) == 0 ? t6 : t6;
              if (!B.JSString_methods.endsWith$1(trailing, "url-prefix()") && !B.JSString_methods.endsWith$1(trailing, "url-prefix('')") && !B.JSString_methods.endsWith$1(trailing, 'url-prefix("")'))
                _box_0.needsDeprecationWarning = true;
              break $label0$0;
            }
            if ("regexp" === identifier) {
              t3._contents += "regexp(";
              t1.expectChar$1(40);
              buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
              t1.expectChar$1(41);
              t3._contents += A.Primitives_stringFromCharCode(41);
              _box_0.needsDeprecationWarning = true;
              break $label0$0;
            }
            endPosition = t1._string_scanner$_position;
            t7 = t1._sourceFile;
            t8 = new A._FileSpan(t7, t6, endPosition);
            t8._FileSpan$3(t7, t6, endPosition);
            _this.error$2(0, "Invalid function name.", t8);
          }
        }
        _this.whitespace$0();
        if (!t1.scanChar$1(44))
          break;
        t3._contents += A.Primitives_stringFromCharCode(44);
        start0 = t1._string_scanner$_position;
        t5.call$0();
        end = t1._string_scanner$_position;
        t3._contents += B.JSString_methods.substring$2(t1.string, start0, end);
      }
      return _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser_mozDocumentRule_closure(_box_0, _this, $name, buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)))));
    },
    supportsRule$1(start) {
      var _this = this,
        condition = _this._supportsCondition$0();
      _this.whitespace$0();
      return _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser_supportsRule_closure(condition));
    },
    _useRule$1(start) {
      var namespace, configuration, span, t1, _this = this,
        _s9_ = "@use rule",
        url = _this._urlString$0();
      _this.whitespace$0();
      namespace = _this._useNamespace$2(url, start);
      _this.whitespace$0();
      configuration = _this._stylesheet$_configuration$0();
      _this.expectStatementSeparator$1(_s9_);
      span = _this.scanner.spanFrom$1(start);
      if (!_this._isUseAllowed)
        _this.error$2(0, string$.x40use_r, span);
      _this.expectStatementSeparator$1(_s9_);
      t1 = new A.UseRule(url, namespace, configuration == null ? B.List_empty10 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable), span);
      t1.UseRule$4$configuration(url, namespace, span, configuration);
      return t1;
    },
    _useNamespace$2(url, start) {
      var namespace, basename, dot, t1, exception, _this = this;
      if (_this.scanIdentifier$1("as")) {
        _this.whitespace$0();
        return _this.scanner.scanChar$1(42) ? null : _this.identifier$0();
      }
      basename = url.get$pathSegments().length === 0 ? "" : B.JSArray_methods.get$last(url.get$pathSegments());
      dot = B.JSString_methods.indexOf$1(basename, ".");
      t1 = B.JSString_methods.startsWith$1(basename, "_") ? 1 : 0;
      namespace = B.JSString_methods.substring$2(basename, t1, dot === -1 ? basename.length : dot);
      try {
        t1 = A.SpanScanner$(namespace, null);
        t1 = new A.Parser(t1, _this.logger, null)._parseIdentifier$0();
        return t1;
      } catch (exception) {
        if (type$.SassFormatException._is(A.unwrapException(exception)))
          _this.error$2(0, 'The default namespace "' + A.S(namespace) + string$.x22x20is_n, _this.scanner.spanFrom$1(start));
        else
          throw exception;
      }
    },
    _stylesheet$_configuration$1$allowGuarded(allowGuarded) {
      var variableNames, configuration, t1, t2, $name, expression, t3, guarded, endPosition, t4, t5, span, _this = this;
      if (!_this.scanIdentifier$1("with"))
        return null;
      variableNames = A.LinkedHashSet_LinkedHashSet$_empty(type$.String);
      configuration = A._setArrayType([], type$.JSArray_ConfiguredVariable);
      _this.whitespace$0();
      t1 = _this.scanner;
      t1.expectChar$1(40);
      for (; true;) {
        _this.whitespace$0();
        t2 = t1._string_scanner$_position;
        t1.expectChar$1(36);
        $name = _this.identifier$1$normalize(true);
        _this.whitespace$0();
        t1.expectChar$1(58);
        _this.whitespace$0();
        expression = _this.expressionUntilComma$0();
        t3 = t1._string_scanner$_position;
        if (allowGuarded && t1.scanChar$1(33))
          if (_this.identifier$0() === "default") {
            _this.whitespace$0();
            guarded = true;
          } else {
            endPosition = t1._string_scanner$_position;
            t4 = t1._sourceFile;
            t5 = new A._FileSpan(t4, t3, endPosition);
            t5._FileSpan$3(t4, t3, endPosition);
            _this.error$2(0, "Invalid flag name.", t5);
            guarded = false;
          }
        else
          guarded = false;
        endPosition = t1._string_scanner$_position;
        t3 = t1._sourceFile;
        span = new A._FileSpan(t3, t2, endPosition);
        span._FileSpan$3(t3, t2, endPosition);
        if (variableNames.contains$1(0, $name))
          _this.error$2(0, string$.The_sa, span);
        variableNames.add$1(0, $name);
        configuration.push(new A.ConfiguredVariable($name, expression, guarded, span));
        if (!t1.scanChar$1(44))
          break;
        _this.whitespace$0();
        if (!_this._lookingAtExpression$0())
          break;
      }
      t1.expectChar$1(41);
      return configuration;
    },
    _stylesheet$_configuration$0() {
      return this._stylesheet$_configuration$1$allowGuarded(false);
    },
    _warnRule$1(start) {
      var value = this._expression$0();
      this.expectStatementSeparator$1("@warn rule");
      return new A.WarnRule(value, this.scanner.spanFrom$1(start));
    },
    _whileRule$2(start, child) {
      var _this = this,
        wasInControlDirective = _this._inControlDirective;
      _this._inControlDirective = true;
      return _this._withChildren$3(child, start, new A.StylesheetParser__whileRule_closure(_this, wasInControlDirective, _this._expression$0()));
    },
    unknownAtRule$2(start, $name) {
      var t2, t3, rule, _this = this, t1 = {},
        wasInUnknownAtRule = _this._stylesheet$_inUnknownAtRule;
      _this._stylesheet$_inUnknownAtRule = true;
      t1.value = null;
      t2 = _this.scanner;
      t3 = t2.peekChar$0() !== 33 && !_this.atEndOfStatement$0() ? t1.value = _this.almostAnyValue$0() : null;
      if (_this.lookingAtChildren$0())
        rule = _this._withChildren$3(_this.get$_statement(), start, new A.StylesheetParser_unknownAtRule_closure(t1, $name));
      else {
        _this.expectStatementSeparator$0();
        rule = A.AtRule$($name, t2.spanFrom$1(start), null, t3);
      }
      _this._stylesheet$_inUnknownAtRule = wasInUnknownAtRule;
      return rule;
    },
    _disallowedAtRule$1(start) {
      this.almostAnyValue$0();
      this.error$2(0, "This at-rule is not allowed here.", this.scanner.spanFrom$1(start));
    },
    _argumentDeclaration$0() {
      var $arguments, named, restArgument, t3, $name, defaultValue, endPosition, t4, t5, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expectChar$1(40);
      _this.whitespace$0();
      $arguments = A._setArrayType([], type$.JSArray_Argument);
      named = A.LinkedHashSet_LinkedHashSet$_empty(type$.String);
      while (true) {
        if (!(t1.peekChar$0() === 36)) {
          restArgument = null;
          break;
        }
        t3 = t1._string_scanner$_position;
        t1.expectChar$1(36);
        $name = _this.identifier$1$normalize(true);
        _this.whitespace$0();
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          defaultValue = _this.expressionUntilComma$0();
        } else {
          if (t1.scanChar$1(46)) {
            t1.expectChar$1(46);
            t1.expectChar$1(46);
            _this.whitespace$0();
            restArgument = $name;
            break;
          }
          defaultValue = null;
        }
        endPosition = t1._string_scanner$_position;
        t4 = t1._sourceFile;
        t5 = new A._FileSpan(t4, t3, endPosition);
        t5._FileSpan$3(t4, t3, endPosition);
        $arguments.push(new A.Argument($name, defaultValue, t5));
        if (!named.add$1(0, $name))
          _this.error$2(0, "Duplicate argument.", B.JSArray_methods.get$last($arguments).span);
        if (!t1.scanChar$1(44)) {
          restArgument = null;
          break;
        }
        _this.whitespace$0();
      }
      t1.expectChar$1(41);
      t1 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      return new A.ArgumentDeclaration(A.List_List$unmodifiable($arguments, type$.Argument), restArgument, t1);
    },
    _argumentInvocation$2$allowEmptySecondArg$mixin(allowEmptySecondArg, mixin) {
      var positional, t3, t4, named, keywordRest, t5, rest, expression, t6, t7, result, _this = this, _null = null,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expectChar$1(40);
      _this.whitespace$0();
      positional = A._setArrayType([], type$.JSArray_Expression);
      t3 = type$.String;
      t4 = type$.Expression;
      named = A.LinkedHashMap_LinkedHashMap$_empty(t3, t4);
      t5 = !mixin;
      rest = _null;
      while (true) {
        if (!_this._lookingAtExpression$0()) {
          keywordRest = _null;
          break;
        }
        expression = _this.expressionUntilComma$1$singleEquals(t5);
        _this.whitespace$0();
        if (expression instanceof A.VariableExpression && t1.scanChar$1(58)) {
          _this.whitespace$0();
          t6 = expression.name;
          if (named.containsKey$1(t6))
            _this.error$2(0, "Duplicate argument.", expression.span);
          named.$indexSet(0, t6, _this.expressionUntilComma$1$singleEquals(t5));
        } else if (t1.scanChar$1(46)) {
          t1.expectChar$1(46);
          t1.expectChar$1(46);
          if (rest != null) {
            _this.whitespace$0();
            keywordRest = expression;
            break;
          }
          rest = expression;
        } else if (named.__js_helper$_length !== 0)
          _this.error$2(0, string$.Positi, expression.get$span(expression));
        else
          positional.push(expression);
        _this.whitespace$0();
        if (!t1.scanChar$1(44)) {
          keywordRest = _null;
          break;
        }
        _this.whitespace$0();
        if (allowEmptySecondArg && positional.length === 1 && named.__js_helper$_length === 0 && rest == null && t1.peekChar$0() === 41) {
          t5 = t1._sourceFile;
          t6 = t1._string_scanner$_position;
          new A.FileLocation(t5, t6).FileLocation$_$2(t5, t6);
          t7 = new A._FileSpan(t5, t6, t6);
          t7._FileSpan$3(t5, t6, t6);
          t6 = A._setArrayType([""], type$.JSArray_Object);
          result = A.List_List$from(t6, false, type$.Object);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t5 = new A.Interpolation(result, t7);
          t5.Interpolation$2(t6, t7);
          positional.push(new A.StringExpression(t5, false));
          keywordRest = _null;
          break;
        }
      }
      t1.expectChar$1(41);
      t1 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      return new A.ArgumentInvocation(A.List_List$unmodifiable(positional, t4), A.ConstantMap_ConstantMap$from(named, t3, t4), rest, keywordRest, t1);
    },
    _argumentInvocation$0() {
      return this._argumentInvocation$2$allowEmptySecondArg$mixin(false, false);
    },
    _argumentInvocation$1$allowEmptySecondArg(allowEmptySecondArg) {
      return this._argumentInvocation$2$allowEmptySecondArg$mixin(allowEmptySecondArg, false);
    },
    _argumentInvocation$1$mixin(mixin) {
      return this._argumentInvocation$2$allowEmptySecondArg$mixin(false, mixin);
    },
    _expression$3$bracketList$singleEquals$until(bracketList, singleEquals, until) {
      var t2, beforeBracket, start, wasInParentheses, resetState, resolveOneOperation, resolveOperations, addSingleExpression, addOperator, resolveSpaceExpressions, t3, _3_0, _3_28, _3_32, _3_40, _1_0, t4, _2_0, commaExpressions, spaceExpressions, singleExpression, _this = this,
        _s20_ = "Expected expression.",
        _box_0 = {},
        t1 = until != null;
      if (t1 && until.call$0())
        _this.scanner.error$1(0, _s20_);
      if (bracketList) {
        t2 = _this.scanner;
        beforeBracket = new A._SpanScannerState(t2, t2._string_scanner$_position);
        t2.expectChar$1(91);
        _this.whitespace$0();
        if (t2.scanChar$1(93)) {
          t1 = A._setArrayType([], type$.JSArray_Expression);
          t2 = t2.spanFrom$1(beforeBracket);
          return new A.ListExpression(A.List_List$unmodifiable(t1, type$.Expression), B.ListSeparator_undecided_null_undecided, true, t2);
        }
      } else
        beforeBracket = null;
      t2 = _this.scanner;
      start = new A._SpanScannerState(t2, t2._string_scanner$_position);
      wasInParentheses = _this._inParentheses;
      _box_0.operands_ = _box_0.operators_ = _box_0.spaceExpressions_ = _box_0.commaExpressions_ = null;
      _box_0.allowSlash = true;
      _box_0.singleExpression_ = _this._singleExpression$0();
      resetState = new A.StylesheetParser__expression_resetState(_box_0, _this, start);
      resolveOneOperation = new A.StylesheetParser__expression_resolveOneOperation(_box_0, _this);
      resolveOperations = new A.StylesheetParser__expression_resolveOperations(_box_0, resolveOneOperation);
      addSingleExpression = new A.StylesheetParser__expression_addSingleExpression(_box_0, _this, resetState, resolveOperations);
      addOperator = new A.StylesheetParser__expression_addOperator(_box_0, _this, resolveOneOperation);
      resolveSpaceExpressions = new A.StylesheetParser__expression_resolveSpaceExpressions(_box_0, _this, resolveOperations);
      for (t3 = type$.JSArray_Expression; true;) {
        _this.whitespace$0();
        if (t1 && until.call$0())
          break;
        _3_0 = t2.peekChar$0();
        _3_28 = A._InitializedCell$(new A.StylesheetParser__expression_closure(_3_0));
        _3_32 = A._InitializedCell$(new A.StylesheetParser__expression_closure0(_3_0));
        _3_40 = A._InitializedCell$(new A.StylesheetParser__expression_closure1(_3_0));
        if (_3_0 == null)
          break;
        if (40 === _3_0) {
          addSingleExpression.call$1(_this.parentheses$0());
          continue;
        }
        if (91 === _3_0) {
          addSingleExpression.call$1(_this._expression$1$bracketList(true));
          continue;
        }
        if (36 === _3_0) {
          addSingleExpression.call$1(_this._variable$0());
          continue;
        }
        if (38 === _3_0) {
          addSingleExpression.call$1(_this._selector$0());
          continue;
        }
        if (39 === _3_0 || 34 === _3_0) {
          addSingleExpression.call$1(_this.interpolatedString$0());
          continue;
        }
        if (35 === _3_0) {
          addSingleExpression.call$1(_this._hashExpression$0());
          continue;
        }
        if (61 === _3_0) {
          t2.readChar$0();
          if (singleEquals && t2.peekChar$0() !== 61)
            addOperator.call$1(B.BinaryOperator_2jN);
          else {
            t2.expectChar$1(61);
            addOperator.call$1(B.BinaryOperator_ql5);
          }
          continue;
        }
        if (33 === _3_0) {
          $label0$1: {
            _1_0 = t2.peekChar$1(1);
            if (61 === _1_0) {
              t2.readChar$0();
              t2.readChar$0();
              addOperator.call$1(B.BinaryOperator_ViB);
              break $label0$1;
            }
            if (_1_0 != null)
              if (105 !== _1_0)
                if (73 !== _1_0)
                  t4 = _1_0 === 32 || _1_0 === 9 || _1_0 === 10 || _1_0 === 13 || _1_0 === 12;
                else
                  t4 = true;
              else
                t4 = true;
            else
              t4 = true;
            if (t4) {
              addSingleExpression.call$1(_this._importantExpression$0());
              break $label0$1;
            }
            break;
          }
          continue;
        }
        if (60 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(t2.scanChar$1(61) ? B.BinaryOperator_kpg : B.BinaryOperator_U8c);
          continue;
        }
        if (62 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(t2.scanChar$1(61) ? B.BinaryOperator_7Tg : B.BinaryOperator_cIH);
          continue;
        }
        if (42 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_qN2);
          continue;
        }
        if (_3_28._readFinal$0() && _box_0.singleExpression_ == null) {
          addSingleExpression.call$1(_this._unaryOperation$0());
          continue;
        }
        if (_3_28._readFinal$0()) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_anB);
          continue;
        }
        if (45 === _3_0) {
          _2_0 = t2.peekChar$1(1);
          if (A._isInt(_2_0) && _2_0 >= 48 && _2_0 <= 57 || 46 === _2_0)
            if (_box_0.singleExpression_ != null) {
              t4 = t2.peekChar$1(-1);
              t4 = t4 === 32 || t4 === 9 || t4 === 10 || t4 === 13 || t4 === 12;
            } else
              t4 = true;
          else
            t4 = false;
          if (t4)
            addSingleExpression.call$1(_this._number$0());
          else if (_this._lookingAtInterpolatedIdentifier$0())
            addSingleExpression.call$1(_this.identifierLike$0());
          else if (_box_0.singleExpression_ == null)
            addSingleExpression.call$1(_this._unaryOperation$0());
          else {
            t2.readChar$0();
            addOperator.call$1(B.BinaryOperator_olz);
          }
          continue;
        }
        if (_3_32._readFinal$0() && _box_0.singleExpression_ == null) {
          addSingleExpression.call$1(_this._unaryOperation$0());
          continue;
        }
        if (_3_32._readFinal$0()) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_t8B);
          continue;
        }
        if (37 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_OTG);
          continue;
        }
        if (_3_0 >= 48 && _3_0 <= 57) {
          addSingleExpression.call$1(_this._number$0());
          continue;
        }
        if (_3_40._readFinal$0() && t2.peekChar$1(1) === 46)
          break;
        if (_3_40._readFinal$0()) {
          addSingleExpression.call$1(_this._number$0());
          continue;
        }
        if (97 === _3_0 && !_this.get$plainCss() && _this.scanIdentifier$1("and")) {
          addOperator.call$1(B.BinaryOperator_SNp);
          continue;
        }
        if (111 === _3_0 && !_this.get$plainCss() && _this.scanIdentifier$1("or")) {
          addOperator.call$1(B.BinaryOperator_M6L);
          continue;
        }
        if ((117 === _3_0 || 85 === _3_0) && t2.peekChar$1(1) === 43) {
          addSingleExpression.call$1(_this._unicodeRange$0());
          continue;
        }
        if (!(_3_0 >= 97 && _3_0 <= 122))
          t4 = _3_0 >= 65 && _3_0 <= 90 || 95 === _3_0 || 92 === _3_0 || _3_0 >= 128;
        else
          t4 = true;
        if (t4) {
          addSingleExpression.call$1(_this.identifierLike$0());
          continue;
        }
        if (44 === _3_0) {
          if (_this._inParentheses) {
            _this._inParentheses = false;
            if (_box_0.allowSlash) {
              resetState.call$0();
              continue;
            }
          }
          commaExpressions = _box_0.commaExpressions_;
          if (commaExpressions == null)
            commaExpressions = _box_0.commaExpressions_ = A._setArrayType([], t3);
          if (_box_0.singleExpression_ == null)
            t2.error$1(0, _s20_);
          resolveSpaceExpressions.call$0();
          t4 = _box_0.singleExpression_;
          t4.toString;
          commaExpressions.push(t4);
          t2.readChar$0();
          _box_0.allowSlash = true;
          _box_0.singleExpression_ = null;
          continue;
        }
        break;
      }
      if (bracketList)
        t2.expectChar$1(93);
      commaExpressions = _box_0.commaExpressions_;
      spaceExpressions = _box_0.spaceExpressions_;
      if (commaExpressions != null) {
        resolveSpaceExpressions.call$0();
        _this._inParentheses = wasInParentheses;
        singleExpression = _box_0.singleExpression_;
        if (singleExpression != null)
          commaExpressions.push(singleExpression);
        t1 = t2.spanFrom$1(beforeBracket == null ? start : beforeBracket);
        return new A.ListExpression(A.List_List$unmodifiable(commaExpressions, type$.Expression), B.ListSeparator_rXA, bracketList, t1);
      } else if (bracketList && spaceExpressions != null) {
        resolveOperations.call$0();
        t1 = _box_0.singleExpression_;
        t1.toString;
        spaceExpressions.push(t1);
        beforeBracket.toString;
        t2 = t2.spanFrom$1(beforeBracket);
        return new A.ListExpression(A.List_List$unmodifiable(spaceExpressions, type$.Expression), B.ListSeparator_EVt, true, t2);
      } else {
        resolveSpaceExpressions.call$0();
        if (bracketList) {
          t1 = _box_0.singleExpression_;
          t1.toString;
          t3 = A._setArrayType([t1], t3);
          beforeBracket.toString;
          t2 = t2.spanFrom$1(beforeBracket);
          _box_0.singleExpression_ = new A.ListExpression(A.List_List$unmodifiable(t3, type$.Expression), B.ListSeparator_undecided_null_undecided, true, t2);
        }
        t1 = _box_0.singleExpression_;
        t1.toString;
        return t1;
      }
    },
    _expression$0() {
      return this._expression$3$bracketList$singleEquals$until(false, false, null);
    },
    _expression$2$singleEquals$until(singleEquals, until) {
      return this._expression$3$bracketList$singleEquals$until(false, singleEquals, until);
    },
    _expression$1$bracketList(bracketList) {
      return this._expression$3$bracketList$singleEquals$until(bracketList, false, null);
    },
    _expression$1$until(until) {
      return this._expression$3$bracketList$singleEquals$until(false, false, until);
    },
    expressionUntilComma$1$singleEquals(singleEquals) {
      return this._expression$2$singleEquals$until(singleEquals, new A.StylesheetParser_expressionUntilComma_closure(this));
    },
    expressionUntilComma$0() {
      return this.expressionUntilComma$1$singleEquals(false);
    },
    _isSlashOperand$1(expression) {
      var t1;
      if (!(expression instanceof A.NumberExpression))
        if (!(expression instanceof A.FunctionExpression))
          t1 = expression instanceof A.BinaryOperationExpression && expression.allowsSlash;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    _singleExpression$0() {
      var next, t2, _this = this,
        _s20_ = "Expected expression.",
        t1 = _this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (_0_0 == null)
          t1.error$1(0, _s20_);
        if (40 === _0_0) {
          t1 = _this.parentheses$0();
          break $label0$0;
        }
        if (47 === _0_0) {
          t1 = _this._unaryOperation$0();
          break $label0$0;
        }
        if (46 === _0_0) {
          t1 = _this._number$0();
          break $label0$0;
        }
        if (91 === _0_0) {
          t1 = _this._expression$1$bracketList(true);
          break $label0$0;
        }
        if (36 === _0_0) {
          t1 = _this._variable$0();
          break $label0$0;
        }
        if (38 === _0_0) {
          t1 = _this._selector$0();
          break $label0$0;
        }
        if (39 === _0_0 || 34 === _0_0) {
          t1 = _this.interpolatedString$0();
          break $label0$0;
        }
        if (35 === _0_0) {
          t1 = _this._hashExpression$0();
          break $label0$0;
        }
        if (43 === _0_0) {
          next = t1.peekChar$1(1);
          t1 = next != null && next >= 48 && next <= 57 || next === 46 ? _this._number$0() : _this._unaryOperation$0();
          break $label0$0;
        }
        if (45 === _0_0) {
          t1 = _this._minusExpression$0();
          break $label0$0;
        }
        if (33 === _0_0) {
          t1 = _this._importantExpression$0();
          break $label0$0;
        }
        if ((117 === _0_0 || 85 === _0_0) && t1.peekChar$1(1) === 43) {
          t1 = _this._unicodeRange$0();
          break $label0$0;
        }
        if (_0_0 >= 48 && _0_0 <= 57) {
          t1 = _this._number$0();
          break $label0$0;
        }
        if (!(_0_0 >= 97 && _0_0 <= 122))
          t2 = _0_0 >= 65 && _0_0 <= 90 || 95 === _0_0 || 92 === _0_0 || _0_0 >= 128;
        else
          t2 = true;
        if (t2) {
          t1 = _this.identifierLike$0();
          break $label0$0;
        }
        t1 = t1.error$1(0, _s20_);
      }
      return t1;
    },
    parentheses$0() {
      var start, first, expressions, t1, t2, _this = this,
        wasInParentheses = _this._inParentheses;
      _this._inParentheses = true;
      try {
        t1 = _this.scanner;
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
        t1.expectChar$1(40);
        _this.whitespace$0();
        if (!_this._lookingAtExpression$0()) {
          t1.expectChar$1(41);
          t2 = A._setArrayType([], type$.JSArray_Expression);
          t1 = t1.spanFrom$1(start);
          t2 = A.List_List$unmodifiable(t2, type$.Expression);
          return new A.ListExpression(t2, B.ListSeparator_undecided_null_undecided, false, t1);
        }
        first = _this.expressionUntilComma$0();
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          t1 = _this._stylesheet$_map$2(first, start);
          return t1;
        }
        if (!t1.scanChar$1(44)) {
          t1.expectChar$1(41);
          t1 = t1.spanFrom$1(start);
          return new A.ParenthesizedExpression(first, t1);
        }
        _this.whitespace$0();
        expressions = A._setArrayType([first], type$.JSArray_Expression);
        for (; true;) {
          if (!_this._lookingAtExpression$0())
            break;
          J.add$1$ax(expressions, _this.expressionUntilComma$0());
          if (!t1.scanChar$1(44))
            break;
          _this.whitespace$0();
        }
        t1.expectChar$1(41);
        t1 = t1.spanFrom$1(start);
        t2 = A.List_List$unmodifiable(expressions, type$.Expression);
        return new A.ListExpression(t2, B.ListSeparator_rXA, false, t1);
      } finally {
        _this._inParentheses = wasInParentheses;
      }
    },
    _stylesheet$_map$2(first, start) {
      var t1, key, _this = this,
        pairs = A._setArrayType([new A._Record_2(first, _this.expressionUntilComma$0())], type$.JSArray_Record_2_Expression_and_Expression);
      for (t1 = _this.scanner; t1.scanChar$1(44);) {
        _this.whitespace$0();
        if (!_this._lookingAtExpression$0())
          break;
        key = _this.expressionUntilComma$0();
        t1.expectChar$1(58);
        _this.whitespace$0();
        pairs.push(new A._Record_2(key, _this.expressionUntilComma$0()));
      }
      t1.expectChar$1(41);
      t1 = t1.spanFrom$1(start);
      return new A.MapExpression(A.List_List$unmodifiable(pairs, type$.Record_2_Expression_and_Expression), t1);
    },
    _hashExpression$0() {
      var start, t2, identifier, buffer, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$1(1) === 123)
        return _this.identifierLike$0();
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(35);
      t2 = t1.peekChar$0();
      if (t2 == null)
        t2 = null;
      else
        t2 = t2 >= 48 && t2 <= 57;
      if (t2 === true)
        return new A.ColorExpression(_this._hexColorContents$1(start), t1.spanFrom$1(start));
      t2 = t1._string_scanner$_position;
      identifier = _this.interpolatedIdentifier$0();
      if (_this._isHexColor$1(identifier)) {
        t1.set$state(new A._SpanScannerState(t1, t2));
        return new A.ColorExpression(_this._hexColorContents$1(start), t1.spanFrom$1(start));
      }
      t2 = new A.StringBuffer("");
      buffer = new A.InterpolationBuffer(t2, A._setArrayType([], type$.JSArray_Object));
      t2._contents += A.Primitives_stringFromCharCode(35);
      buffer.addInterpolation$1(identifier);
      return new A.StringExpression(buffer.interpolation$1(t1.spanFrom$1(start)), false);
    },
    _hexColorContents$1(start) {
      var red, green, blue, alpha, digit4, t2, t3, t4, _this = this,
        digit1 = _this._hexDigit$0(),
        digit2 = _this._hexDigit$0(),
        digit3 = _this._hexDigit$0(),
        t1 = _this.scanner,
        $self = t1.peekChar$0();
      if (!($self != null && A.CharacterExtension_get_isHex($self))) {
        red = (digit1 << 4 >>> 0) + digit1;
        green = (digit2 << 4 >>> 0) + digit2;
        blue = (digit3 << 4 >>> 0) + digit3;
        alpha = null;
      } else {
        digit4 = _this._hexDigit$0();
        $self = t1.peekChar$0();
        t2 = $self != null && A.CharacterExtension_get_isHex($self);
        t3 = digit1 << 4 >>> 0;
        t4 = digit3 << 4 >>> 0;
        if (!t2) {
          red = t3 + digit1;
          green = (digit2 << 4 >>> 0) + digit2;
          blue = t4 + digit3;
          alpha = ((digit4 << 4 >>> 0) + digit4) / 255;
        } else {
          red = t3 + digit2;
          green = t4 + digit4;
          blue = (_this._hexDigit$0() << 4 >>> 0) + _this._hexDigit$0();
          $self = t1.peekChar$0();
          alpha = $self != null && A.CharacterExtension_get_isHex($self) ? ((_this._hexDigit$0() << 4 >>> 0) + _this._hexDigit$0()) / 255 : null;
        }
      }
      t2 = alpha == null;
      t3 = t2 ? 1 : alpha;
      return A.SassColor$rgbInternal(red, green, blue, t3, t2 ? new A.SpanColorFormat(t1.spanFrom$1(start)) : null);
    },
    _isHexColor$1(interpolation) {
      var t1,
        plain = interpolation.get$asPlain(),
        _0_2 = A._InitializedCell$(new A.StylesheetParser__isHexColor_closure(plain));
      if (typeof plain == "string")
        t1 = 3 === _0_2._readFinal$0() || 4 === _0_2._readFinal$0() || 6 === _0_2._readFinal$0() || 8 === _0_2._readFinal$0();
      else
        t1 = false;
      if (t1) {
        t1 = new A.CodeUnits(plain);
        return t1.every$1(t1, new A.StylesheetParser__isHexColor_closure0());
      } else
        return false;
    },
    _hexDigit$0() {
      var t1 = this.scanner,
        t2 = t1.peekChar$0();
      t2 = t2 == null ? null : A.CharacterExtension_get_isHex(t2);
      return t2 === true ? A.asHex(t1.readChar$0()) : t1.error$1(0, "Expected hex digit.");
    },
    _minusExpression$0() {
      var _this = this,
        _0_0 = _this.scanner.peekChar$1(1);
      if (A._isInt(_0_0) && _0_0 >= 48 && _0_0 <= 57 || 46 === _0_0)
        return _this._number$0();
      if (_this._lookingAtInterpolatedIdentifier$0())
        return _this.identifierLike$0();
      return _this._unaryOperation$0();
    },
    _importantExpression$0() {
      var t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      t1.readChar$0();
      this.whitespace$0();
      this.expectIdentifier$1("important");
      t2 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      return new A.StringExpression(A.Interpolation$(A._setArrayType(["!important"], type$.JSArray_Object), t2), false);
    },
    _unaryOperation$0() {
      var _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        operator = _this._unaryOperatorFor$1(t1.readChar$0());
      if (operator == null)
        t1.error$2$position(0, "Expected unary operator.", t1._string_scanner$_position - 1);
      else if (_this.get$plainCss() && operator !== B.UnaryOperator_Ix1)
        t1.error$3$length$position(0, "Operators aren't allowed in plain CSS.", 1, t1._string_scanner$_position - 1);
      _this.whitespace$0();
      return new A.UnaryOperationExpression(operator, _this._singleExpression$0(), t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _unaryOperatorFor$1(character) {
      var t1;
      $label0$0: {
        if (43 === character) {
          t1 = B.UnaryOperator_gg4;
          break $label0$0;
        }
        if (45 === character) {
          t1 = B.UnaryOperator_TLI;
          break $label0$0;
        }
        if (47 === character) {
          t1 = B.UnaryOperator_Ix1;
          break $label0$0;
        }
        t1 = null;
        break $label0$0;
      }
      return t1;
    },
    _number$0() {
      var number, unit, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        first = t1.peekChar$0(),
        t3 = first !== 43;
      if (!t3 || first === 45)
        t1.readChar$0();
      if (t1.peekChar$0() !== 46)
        _this._consumeNaturalNumber$0();
      _this._tryDecimal$1$allowTrailingDot(t1._string_scanner$_position !== t2 && t3 && first !== 45);
      _this._tryExponent$0();
      number = A.double_parse(t1.substring$1(0, t2));
      if (t1.scanChar$1(37))
        unit = "%";
      else {
        if (_this.lookingAtIdentifier$0())
          t3 = t1.peekChar$0() !== 45 || t1.peekChar$1(1) !== 45;
        else
          t3 = false;
        unit = t3 ? _this.identifier$1$unit(true) : null;
      }
      return new A.NumberExpression(number, unit, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _consumeNaturalNumber$0() {
      var $self,
        t1 = this.scanner,
        t2 = t1.readChar$0();
      if (!(t2 >= 48 && t2 <= 57))
        t1.error$2$position(0, "Expected digit.", t1._string_scanner$_position - 1);
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t1.readChar$0();
      }
    },
    _tryDecimal$1$allowTrailingDot(allowTrailingDot) {
      var $self,
        t1 = this.scanner;
      if (t1.peekChar$0() !== 46)
        return;
      $self = t1.peekChar$1(1);
      if (!($self != null && $self >= 48 && $self <= 57)) {
        if (allowTrailingDot)
          return;
        t1.error$2$position(0, "Expected digit.", t1._string_scanner$_position + 1);
      }
      t1.readChar$0();
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t1.readChar$0();
      }
    },
    _tryExponent$0() {
      var next, $self,
        t1 = this.scanner,
        first = t1.peekChar$0();
      if (first !== 101 && first !== 69)
        return;
      next = t1.peekChar$1(1);
      if (!(next != null && next >= 48 && next <= 57) && next !== 45 && next !== 43)
        return;
      t1.readChar$0();
      if (43 === next || 45 === next)
        t1.readChar$0();
      $self = t1.peekChar$0();
      if (!($self != null && $self >= 48 && $self <= 57))
        t1.error$1(0, "Expected digit.");
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t1.readChar$0();
      }
    },
    _unicodeRange$0() {
      var firstRangeLength, hasQuestionMark, t2, secondRangeLength, _this = this,
        _s26_ = "Expected at most 6 digits.",
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _this.expectIdentChar$1(117);
      t1.expectChar$1(43);
      for (firstRangeLength = 0; _this.scanCharIf$1(new A.StylesheetParser__unicodeRange_closure());)
        ++firstRangeLength;
      for (hasQuestionMark = false; t1.scanChar$1(63); hasQuestionMark = true)
        ++firstRangeLength;
      if (firstRangeLength === 0)
        t1.error$1(0, 'Expected hex digit or "?".');
      else if (firstRangeLength > 6)
        _this.error$2(0, _s26_, t1.spanFrom$1(start));
      else if (hasQuestionMark) {
        t2 = t1.substring$1(0, start.position);
        t1 = t1.spanFrom$1(start);
        return new A.StringExpression(A.Interpolation$(A._setArrayType([t2], type$.JSArray_Object), t1), false);
      }
      if (t1.scanChar$1(45)) {
        t2 = t1._string_scanner$_position;
        for (secondRangeLength = 0; _this.scanCharIf$1(new A.StylesheetParser__unicodeRange_closure0());)
          ++secondRangeLength;
        if (secondRangeLength === 0)
          t1.error$1(0, "Expected hex digit.");
        else if (secondRangeLength > 6)
          _this.error$2(0, _s26_, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      }
      if (_this._lookingAtInterpolatedIdentifierBody$0())
        t1.error$1(0, "Expected end of identifier.");
      t2 = t1.substring$1(0, start.position);
      t1 = t1.spanFrom$1(start);
      return new A.StringExpression(A.Interpolation$(A._setArrayType([t2], type$.JSArray_Object), t1), false);
    },
    _variable$0() {
      var _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        $name = _this.variableName$0();
      if (_this.get$plainCss())
        _this.error$2(0, string$.Sass_v, t1.spanFrom$1(start));
      return new A.VariableExpression(null, $name, t1.spanFrom$1(start));
    },
    _selector$0() {
      var t1, start, _this = this;
      if (_this.get$plainCss())
        _this.scanner.error$2$length(0, string$.The_pa, 1);
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(38);
      if (t1.scanChar$1(38)) {
        _this.logger.warn$2$span(0, string$.In_Sas, t1.spanFrom$1(start));
        t1.set$position(t1._string_scanner$_position - 1);
      }
      return new A.SelectorExpression(t1.spanFrom$1(start));
    },
    interpolatedString$0() {
      var t3, t4, buffer, _0_0, second, t5,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position,
        quote = t1.readChar$0();
      if (quote !== 39 && quote !== 34)
        t1.error$2$position(0, "Expected string.", t2);
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer(t3, t4);
      for (; true;) {
        _0_0 = t1.peekChar$0();
        if (_0_0 === quote) {
          t1.readChar$0();
          break;
        }
        if (_0_0 == null || _0_0 === 10 || _0_0 === 13 || _0_0 === 12)
          t1.error$1(0, "Expected " + A.Primitives_stringFromCharCode(quote) + ".");
        if (92 === _0_0) {
          second = t1.peekChar$1(1);
          if (second === 10 || second === 13 || second === 12) {
            t1.readChar$0();
            t1.readChar$0();
            if (second === 13)
              t1.scanChar$1(10);
          } else
            t3._contents += A.Primitives_stringFromCharCode(A.consumeEscapedCharacter(t1));
          continue;
        }
        if (35 === _0_0 && t1.peekChar$1(1) === 123) {
          t5 = this.singleInterpolation$0();
          buffer._flushText$0();
          t4.push(t5);
          continue;
        }
        t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
      }
      return new A.StringExpression(buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2))), true);
    },
    identifierLike$0() {
      var invocation, expression, _0_0, color, t3, _1_0, specialFunction, _2_0, _2_2, _2_4, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        identifier = _this.interpolatedIdentifier$0(),
        plain = identifier.get$asPlain(),
        lower = A._Cell$(),
        t2 = plain != null;
      if (t2) {
        if (plain === "if" && t1.peekChar$0() === 40) {
          invocation = _this._argumentInvocation$0();
          return new A.IfExpression(invocation, identifier.span.expand$1(0, invocation.span));
        } else if (plain === "not") {
          _this.whitespace$0();
          expression = _this._singleExpression$0();
          return new A.UnaryOperationExpression(B.UnaryOperator_not_not_not, expression, identifier.span.expand$1(0, expression.get$span(expression)));
        }
        lower._value = plain.toLowerCase();
        if (t1.peekChar$0() !== 40) {
          switch (plain) {
            case "false":
              return new A.BooleanExpression(false, identifier.span);
            case "null":
              return new A.NullExpression(identifier.span);
            case "true":
              return new A.BooleanExpression(true, identifier.span);
          }
          _0_0 = $.$get$colorsByName().$index(0, lower._readLocal$0());
          if (_0_0 != null) {
            color = _0_0;
            t3 = true;
          } else {
            color = null;
            t3 = false;
          }
          if (t3) {
            t1 = identifier.span;
            return new A.ColorExpression(A.SassColor$rgbInternal(color.get$red(color), color.get$green(color), color.get$blue(color), color._alpha, new A.SpanColorFormat(t1)), t1);
          }
        }
        _1_0 = _this.trySpecialFunction$2(lower._readLocal$0(), start);
        if (_1_0 != null) {
          specialFunction = _1_0;
          t3 = true;
        } else {
          specialFunction = null;
          t3 = false;
        }
        if (t3)
          return specialFunction;
      }
      _2_0 = t1.peekChar$0();
      _2_2 = A._InitializedCell$(new A.StylesheetParser_identifierLike_closure(_2_0));
      _2_4 = A._InitializedCell$(new A.StylesheetParser_identifierLike_closure0(_2_0));
      if (_2_2._readFinal$0() && t1.peekChar$1(1) === 46)
        return new A.StringExpression(identifier, false);
      if (_2_2._readFinal$0()) {
        t1.readChar$0();
        if (t2)
          return _this.namespacedExpression$2(plain, start);
        _this.error$2(0, string$.Interpn, identifier.span);
      }
      if (_2_4._readFinal$0() && t2)
        return new A.FunctionExpression(null, plain, _this._argumentInvocation$1$allowEmptySecondArg(J.$eq$(lower._readLocal$0(), "var")), t1.spanFrom$1(start));
      if (_2_4._readFinal$0())
        return new A.InterpolatedFunctionExpression(identifier, _this._argumentInvocation$0(), t1.spanFrom$1(start));
      return new A.StringExpression(identifier, false);
    },
    namespacedExpression$2(namespace, start) {
      var $name, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$0() === 36) {
        $name = _this.variableName$0();
        _this._assertPublic$2($name, new A.StylesheetParser_namespacedExpression_closure(_this, start));
        return new A.VariableExpression(namespace, $name, t1.spanFrom$1(start));
      }
      return new A.FunctionExpression(namespace, _this._publicIdentifier$0(), _this._argumentInvocation$0(), t1.spanFrom$1(start));
    },
    trySpecialFunction$2($name, start) {
      var t1, buffer, t2, next, t3, _this = this,
        normalized = A.unvendor($name);
      $label0$0: {
        if (!("calc" === normalized && normalized !== $name && _this.scanner.scanChar$1(40)))
          t1 = ("element" === normalized || "expression" === normalized) && _this.scanner.scanChar$1(40);
        else
          t1 = true;
        if (t1) {
          t1 = new A.StringBuffer("");
          buffer = new A.InterpolationBuffer(t1, A._setArrayType([], type$.JSArray_Object));
          t1._contents = "" + $name;
          t1._contents += A.Primitives_stringFromCharCode(40);
          break $label0$0;
        }
        if ("progid" === normalized && _this.scanner.scanChar$1(58)) {
          t1 = new A.StringBuffer("");
          buffer = new A.InterpolationBuffer(t1, A._setArrayType([], type$.JSArray_Object));
          t1._contents = "" + $name;
          t1._contents += A.Primitives_stringFromCharCode(58);
          t2 = _this.scanner;
          next = t2.peekChar$0();
          while (true) {
            if (next != null) {
              if (!(next >= 97 && next <= 122))
                t3 = next >= 65 && next <= 90;
              else
                t3 = true;
              t3 = t3 || next === 46;
            } else
              t3 = false;
            if (!t3)
              break;
            t1._contents += A.Primitives_stringFromCharCode(t2.readChar$0());
            next = t2.peekChar$0();
          }
          t2.expectChar$1(40);
          t1._contents += A.Primitives_stringFromCharCode(40);
          break $label0$0;
        }
        if ("url" === normalized)
          return A.NullableExtension_andThen(_this._tryUrlContents$1(start), new A.StylesheetParser_trySpecialFunction_closure());
        return null;
      }
      buffer.addInterpolation$1(_this._interpolatedDeclarationValue$1$allowEmpty(true));
      t1 = _this.scanner;
      t1.expectChar$1(41);
      buffer._interpolation_buffer$_text._contents += A.Primitives_stringFromCharCode(41);
      return new A.StringExpression(buffer.interpolation$1(t1.spanFrom$1(start)), false);
    },
    _tryUrlContents$2$name(start, $name) {
      var t3, t4, buffer, _0_0, _0_6, t5, endPosition, result, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      if (!t1.scanChar$1(40))
        return null;
      _this.whitespaceWithoutComments$0();
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer(t3, t4);
      t3._contents = "" + ($name == null ? "url" : $name);
      t3._contents += A.Primitives_stringFromCharCode(40);
      for (; true;) {
        _0_0 = t1.peekChar$0();
        _0_6 = A._InitializedCell$(new A.StylesheetParser__tryUrlContents_closure(_0_0));
        if (_0_0 == null)
          break;
        if (92 === _0_0) {
          t3._contents += _this.escape$0();
          continue;
        }
        if (_0_6._readFinal$0() && t1.peekChar$1(1) === 123) {
          t5 = _this.singleInterpolation$0();
          buffer._flushText$0();
          t4.push(t5);
          continue;
        }
        if (33 !== _0_0)
          if (37 !== _0_0)
            if (38 !== _0_0)
              if (!_0_6._readFinal$0())
                t5 = _0_0 >= 42 && _0_0 <= 126 || _0_0 >= 128;
              else
                t5 = true;
            else
              t5 = true;
          else
            t5 = true;
        else
          t5 = true;
        if (t5) {
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (_0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12) {
          _this.whitespaceWithoutComments$0();
          if (t1.peekChar$0() !== 41)
            break;
          continue;
        }
        if (41 === _0_0) {
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          endPosition = t1._string_scanner$_position;
          t2 = t1._sourceFile;
          t5 = start.position;
          t1 = new A._FileSpan(t2, t5, endPosition);
          t1._FileSpan$3(t2, t5, endPosition);
          t5 = type$.Object;
          t2 = A.List_List$of(t4, true, t5);
          t4 = t3._contents;
          if (t4.length !== 0)
            t2.push(t4.charCodeAt(0) == 0 ? t4 : t4);
          result = A.List_List$from(t2, false, t5);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t3 = new A.Interpolation(result, t1);
          t3.Interpolation$2(t2, t1);
          return t3;
        }
        break;
      }
      t1.set$state(new A._SpanScannerState(t1, t2));
      return null;
    },
    _tryUrlContents$1(start) {
      return this._tryUrlContents$2$name(start, null);
    },
    dynamicUrl$0() {
      var _0_0, contents, t2, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _this.expectIdentifier$1("url");
      _0_0 = _this._tryUrlContents$1(start);
      if (_0_0 != null) {
        contents = _0_0;
        t2 = true;
      } else {
        contents = null;
        t2 = false;
      }
      if (t2)
        return new A.StringExpression(contents, false);
      return new A.InterpolatedFunctionExpression(A.Interpolation$(A._setArrayType(["url"], type$.JSArray_Object), t1.spanFrom$1(start)), _this._argumentInvocation$0(), t1.spanFrom$1(start));
    },
    almostAnyValue$1$omitComments(omitComments) {
      var t4, t5, t6, _1_0, commentStart, end, t7, _0_0, contents, t8, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer(t3, A._setArrayType([], type$.JSArray_Object));
      for (t4 = t1.string, t5 = t4.length, t6 = !omitComments; true;)
        $label0$0: {
          _1_0 = t1.peekChar$0();
          if (92 === _1_0) {
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if (34 === _1_0 || 39 === _1_0) {
            buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
            break $label0$0;
          }
          if (47 === _1_0) {
            commentStart = t1._string_scanner$_position;
            if (_this.scanComment$0()) {
              if (t6) {
                end = t1._string_scanner$_position;
                t3._contents += B.JSString_methods.substring$2(t4, commentStart, end);
              }
            } else
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if (35 === _1_0 && t1.peekChar$1(1) === 123) {
            buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
            break $label0$0;
          }
          if (13 === _1_0 || 10 === _1_0 || 12 === _1_0) {
            if (_this.get$indented())
              break;
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if (33 === _1_0 || 59 === _1_0 || 123 === _1_0 || 125 === _1_0)
            break;
          if (117 === _1_0 || 85 === _1_0) {
            t7 = t1._string_scanner$_position;
            if (!_this.scanIdentifier$1("url")) {
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              continue;
            }
            _0_0 = _this._tryUrlContents$1(new A._SpanScannerState(t1, t7));
            if (_0_0 != null) {
              contents = _0_0;
              t8 = true;
            } else {
              contents = null;
              t8 = false;
            }
            if (t8)
              buffer.addInterpolation$1(contents);
            else {
              if ((t7 === 0 ? 1 / t7 < 0 : t7 < 0) || t7 > t5)
                A.throwExpression(A.ArgumentError$("Invalid position " + t7, null));
              t1._string_scanner$_position = t7;
              t1._lastMatch = null;
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            }
            break $label0$0;
          }
          if (_1_0 == null)
            break;
          t7 = _this.lookingAtIdentifier$0();
          if (t7) {
            t3._contents += _this.identifier$0();
            break $label0$0;
          }
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
        }
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    almostAnyValue$0() {
      return this.almostAnyValue$1$omitComments(false);
    },
    _interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(allowColon, allowEmpty, allowSemicolon) {
      var t4, t5, t6, t7, wroteNewline, _1_0, _1_12, _1_14, _1_16, _1_18, _1_20, t8, start, end, bracket, _0_0, contents, t9, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer(t3, A._setArrayType([], type$.JSArray_Object)),
        brackets = A._setArrayType([], type$.JSArray_int);
      for (t4 = t1.string, t5 = t4.length, t6 = !allowColon, t7 = !allowSemicolon, wroteNewline = false; true;)
        $label0$0: {
          _1_0 = t1.peekChar$0();
          _1_12 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure(_1_0));
          _1_14 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure0(_1_0));
          _1_16 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure1(_1_0));
          _1_18 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure2(_1_0));
          _1_20 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure3(_1_0));
          if (92 === _1_0) {
            t3._contents += _this.escape$1$identifierStart(true);
            wroteNewline = false;
            break $label0$0;
          }
          if (34 === _1_0 || 39 === _1_0) {
            buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (47 === _1_0 && t1.peekChar$1(1) === 42) {
            t8 = _this.get$loudComment();
            start = t1._string_scanner$_position;
            t8.call$0();
            end = t1._string_scanner$_position;
            t3._contents += B.JSString_methods.substring$2(t4, start, end);
            wroteNewline = false;
            break $label0$0;
          }
          if (35 === _1_0 && t1.peekChar$1(1) === 123) {
            buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (_1_12._readFinal$0() || _1_14._readFinal$0())
            if (!wroteNewline) {
              t8 = t1.peekChar$1(1);
              t8 = t8 === 32 || t8 === 9 || t8 === 10 || t8 === 13 || t8 === 12;
            } else
              t8 = false;
          else
            t8 = false;
          if (t8) {
            t1.readChar$0();
            break $label0$0;
          }
          if (_1_12._readFinal$0() || _1_14._readFinal$0()) {
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if ((_1_16._readFinal$0() || _1_18._readFinal$0() || _1_20._readFinal$0()) && _this.get$indented())
            break;
          if (_1_16._readFinal$0() || _1_18._readFinal$0() || _1_20._readFinal$0()) {
            t8 = t1.peekChar$1(-1);
            if (!(t8 === 10 || t8 === 13 || t8 === 12))
              t3._contents += "\n";
            t1.readChar$0();
            wroteNewline = true;
            break $label0$0;
          }
          if (40 === _1_0 || 123 === _1_0 || 91 === _1_0) {
            bracket = t1.readChar$0();
            t3._contents += A.Primitives_stringFromCharCode(bracket);
            brackets.push(A.opposite(bracket));
            wroteNewline = false;
            break $label0$0;
          }
          if (41 === _1_0 || 125 === _1_0 || 93 === _1_0) {
            if (brackets.length === 0)
              break;
            bracket = brackets.pop();
            t1.expectChar$1(bracket);
            t3._contents += A.Primitives_stringFromCharCode(bracket);
            wroteNewline = false;
            break $label0$0;
          }
          if (59 === _1_0) {
            if (t7 && brackets.length === 0)
              break;
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (58 === _1_0) {
            if (t6 && brackets.length === 0)
              break;
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (117 === _1_0 || 85 === _1_0) {
            t8 = t1._string_scanner$_position;
            if (!_this.scanIdentifier$1("url")) {
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              wroteNewline = false;
              continue;
            }
            _0_0 = _this._tryUrlContents$1(new A._SpanScannerState(t1, t8));
            if (_0_0 != null) {
              contents = _0_0;
              t9 = true;
            } else {
              contents = null;
              t9 = false;
            }
            if (t9)
              buffer.addInterpolation$1(contents);
            else {
              if ((t8 === 0 ? 1 / t8 < 0 : t8 < 0) || t8 > t5)
                A.throwExpression(A.ArgumentError$("Invalid position " + t8, null));
              t1._string_scanner$_position = t8;
              t1._lastMatch = null;
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            }
            wroteNewline = false;
            break $label0$0;
          }
          if (_1_0 == null)
            break;
          t8 = _this.lookingAtIdentifier$0();
          if (t8) {
            t3._contents += _this.identifier$0();
            wroteNewline = false;
            break $label0$0;
          }
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          wroteNewline = false;
        }
      if (brackets.length !== 0)
        t1.expectChar$1(B.JSArray_methods.get$last(brackets));
      if (!allowEmpty && buffer._interpolation_buffer$_contents.length === 0 && t3._contents.length === 0)
        t1.error$1(0, "Expected token.");
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _interpolatedDeclarationValue$1$allowEmpty(allowEmpty) {
      return this._interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(true, allowEmpty, false);
    },
    _interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(allowEmpty, allowSemicolon) {
      return this._interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(true, allowEmpty, allowSemicolon);
    },
    _interpolatedDeclarationValue$0() {
      return this._interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(true, false, false);
    },
    interpolatedIdentifier$0() {
      var _0_0, _this = this,
        _s20_ = "Expected identifier.",
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        t2 = new A.StringBuffer(""),
        t3 = A._setArrayType([], type$.JSArray_Object),
        buffer = new A.InterpolationBuffer(t2, t3);
      if (t1.scanChar$1(45)) {
        t2._contents += A.Primitives_stringFromCharCode(45);
        if (t1.scanChar$1(45)) {
          t2._contents += A.Primitives_stringFromCharCode(45);
          _this._interpolatedIdentifierBody$1(buffer);
          return buffer.interpolation$1(t1.spanFrom$1(start));
        }
      }
      $label0$0: {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          t1.error$1(0, _s20_);
        if (_0_0 === 95 || A.CharacterExtension_get_isAlphabetic(_0_0) || _0_0 >= 128) {
          t2._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          break $label0$0;
        }
        if (92 === _0_0) {
          t2._contents += _this.escape$1$identifierStart(true);
          break $label0$0;
        }
        if (35 === _0_0 && t1.peekChar$1(1) === 123) {
          t2 = _this.singleInterpolation$0();
          buffer._flushText$0();
          t3.push(t2);
          break $label0$0;
        }
        t1.error$1(0, _s20_);
      }
      _this._interpolatedIdentifierBody$1(buffer);
      return buffer.interpolation$1(t1.spanFrom$1(start));
    },
    _interpolatedIdentifierBody$1(buffer) {
      var t1, t2, t3, _0_0, t4;
      for (t1 = buffer._interpolation_buffer$_contents, t2 = this.scanner, t3 = buffer._interpolation_buffer$_text; true;) {
        _0_0 = t2.peekChar$0();
        if (_0_0 == null)
          break;
        if (95 !== _0_0)
          if (45 !== _0_0) {
            if (!(_0_0 >= 97 && _0_0 <= 122))
              t4 = _0_0 >= 65 && _0_0 <= 90;
            else
              t4 = true;
            if (!t4)
              t4 = _0_0 >= 48 && _0_0 <= 57;
            else
              t4 = true;
            t4 = t4 || _0_0 >= 128;
          } else
            t4 = true;
        else
          t4 = true;
        if (t4) {
          t3._contents += A.Primitives_stringFromCharCode(t2.readChar$0());
          continue;
        }
        if (92 === _0_0) {
          t3._contents += this.escape$0();
          continue;
        }
        if (35 === _0_0 && t2.peekChar$1(1) === 123) {
          t4 = this.singleInterpolation$0();
          buffer._flushText$0();
          t1.push(t4);
          continue;
        }
        break;
      }
    },
    singleInterpolation$0() {
      var contents, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("#{");
      _this.whitespace$0();
      contents = _this._expression$0();
      t1.expectChar$1(125);
      if (_this.get$plainCss())
        _this.error$2(0, string$.Interpp, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      return contents;
    },
    _mediaQueryList$0() {
      var _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer(t3, A._setArrayType([], type$.JSArray_Object));
      for (; true;) {
        _this.whitespace$0();
        _this._stylesheet$_mediaQuery$1(buffer);
        _this.whitespace$0();
        if (!t1.scanChar$1(44))
          break;
        t3._contents += A.Primitives_stringFromCharCode(44);
        t3._contents += A.Primitives_stringFromCharCode(32);
      }
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _stylesheet$_mediaQuery$1(buffer) {
      var identifier1, t1, identifier2, _this = this, _s3_ = "and";
      if (_this.scanner.peekChar$0() === 40) {
        _this._stylesheet$_mediaInParens$1(buffer);
        _this.whitespace$0();
        if (_this.scanIdentifier$1(_s3_)) {
          buffer._interpolation_buffer$_text._contents += " and ";
          _this.expectWhitespace$0();
          _this._stylesheet$_mediaLogicSequence$2(buffer, _s3_);
        } else if (_this.scanIdentifier$1("or")) {
          buffer._interpolation_buffer$_text._contents += " or ";
          _this.expectWhitespace$0();
          _this._stylesheet$_mediaLogicSequence$2(buffer, "or");
        }
        return;
      }
      identifier1 = _this.interpolatedIdentifier$0();
      if (A.equalsIgnoreCase(identifier1.get$asPlain(), "not")) {
        _this.expectWhitespace$0();
        if (!_this._lookingAtInterpolatedIdentifier$0()) {
          buffer._interpolation_buffer$_text._contents += "not ";
          _this._mediaOrInterp$1(buffer);
          return;
        }
      }
      _this.whitespace$0();
      buffer.addInterpolation$1(identifier1);
      if (!_this._lookingAtInterpolatedIdentifier$0())
        return;
      t1 = buffer._interpolation_buffer$_text;
      t1._contents += A.Primitives_stringFromCharCode(32);
      identifier2 = _this.interpolatedIdentifier$0();
      if (A.equalsIgnoreCase(identifier2.get$asPlain(), _s3_)) {
        _this.expectWhitespace$0();
        t1._contents += " and ";
      } else {
        _this.whitespace$0();
        buffer.addInterpolation$1(identifier2);
        if (_this.scanIdentifier$1(_s3_)) {
          _this.expectWhitespace$0();
          t1._contents += " and ";
        } else
          return;
      }
      if (_this.scanIdentifier$1("not")) {
        _this.expectWhitespace$0();
        t1._contents += "not ";
        _this._mediaOrInterp$1(buffer);
        return;
      }
      _this._stylesheet$_mediaLogicSequence$2(buffer, _s3_);
      return;
    },
    _stylesheet$_mediaLogicSequence$2(buffer, operator) {
      var t1, t2, _this = this;
      for (t1 = buffer._interpolation_buffer$_text; true;) {
        _this._mediaOrInterp$1(buffer);
        _this.whitespace$0();
        if (!_this.scanIdentifier$1(operator))
          return;
        _this.expectWhitespace$0();
        t2 = t1._contents += A.Primitives_stringFromCharCode(32);
        t1._contents = t2 + operator;
        t1._contents += A.Primitives_stringFromCharCode(32);
      }
    },
    _mediaOrInterp$1(buffer) {
      var interpolation;
      if (this.scanner.peekChar$0() === 35) {
        interpolation = this.singleInterpolation$0();
        buffer.addInterpolation$1(A.Interpolation$(A._setArrayType([interpolation], type$.JSArray_Object), interpolation.get$span(interpolation)));
      } else
        this._stylesheet$_mediaInParens$1(buffer);
    },
    _stylesheet$_mediaInParens$1(buffer) {
      var t2, t3, t4, next, t5, _this = this,
        t1 = _this.scanner;
      t1.expectChar$2$name(40, "media condition in parentheses");
      t2 = buffer._interpolation_buffer$_text;
      t2._contents += A.Primitives_stringFromCharCode(40);
      _this.whitespace$0();
      if (t1.peekChar$0() === 40) {
        _this._stylesheet$_mediaInParens$1(buffer);
        _this.whitespace$0();
        if (_this.scanIdentifier$1("and")) {
          t2._contents += " and ";
          _this.expectWhitespace$0();
          _this._stylesheet$_mediaLogicSequence$2(buffer, "and");
        } else if (_this.scanIdentifier$1("or")) {
          t2._contents += " or ";
          _this.expectWhitespace$0();
          _this._stylesheet$_mediaLogicSequence$2(buffer, "or");
        }
      } else if (_this.scanIdentifier$1("not")) {
        t2._contents += "not ";
        _this.expectWhitespace$0();
        _this._mediaOrInterp$1(buffer);
      } else {
        t3 = _this._expressionUntilComparison$0();
        buffer._flushText$0();
        t4 = buffer._interpolation_buffer$_contents;
        t4.push(t3);
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          t2._contents += A.Primitives_stringFromCharCode(58);
          t2._contents += A.Primitives_stringFromCharCode(32);
          t3 = _this._expression$0();
          buffer._flushText$0();
          t4.push(t3);
        } else {
          next = t1.peekChar$0();
          t3 = 60 !== next;
          if (!t3 || 62 === next || 61 === next) {
            t2._contents += A.Primitives_stringFromCharCode(32);
            t2._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            if ((!t3 || 62 === next) && t1.scanChar$1(61))
              t2._contents += A.Primitives_stringFromCharCode(61);
            t2._contents += A.Primitives_stringFromCharCode(32);
            _this.whitespace$0();
            t5 = _this._expressionUntilComparison$0();
            buffer._flushText$0();
            t4.push(t5);
            if (!t3 || 62 === next) {
              next.toString;
              t3 = t1.scanChar$1(next);
            } else
              t3 = false;
            if (t3) {
              t2._contents += A.Primitives_stringFromCharCode(32);
              t2._contents += A.Primitives_stringFromCharCode(next);
              if (t1.scanChar$1(61))
                t2._contents += A.Primitives_stringFromCharCode(61);
              t2._contents += A.Primitives_stringFromCharCode(32);
              _this.whitespace$0();
              t3 = _this._expressionUntilComparison$0();
              buffer._flushText$0();
              t4.push(t3);
            }
          }
        }
      }
      t1.expectChar$1(41);
      _this.whitespace$0();
      t2._contents += A.Primitives_stringFromCharCode(41);
    },
    _expressionUntilComparison$0() {
      return this._expression$1$until(new A.StylesheetParser__expressionUntilComparison_closure(this));
    },
    _supportsCondition$0() {
      var condition, operator, right, endPosition, t3, t4, lowerOperator, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      if (_this.scanIdentifier$1("not")) {
        _this.whitespace$0();
        return new A.SupportsNegation(_this._supportsConditionInParens$0(), t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      }
      condition = _this._supportsConditionInParens$0();
      _this.whitespace$0();
      for (operator = null; _this.lookingAtIdentifier$0();) {
        if (operator != null)
          _this.expectIdentifier$1(operator);
        else if (_this.scanIdentifier$1("or"))
          operator = "or";
        else {
          _this.expectIdentifier$1("and");
          operator = "and";
        }
        _this.whitespace$0();
        right = _this._supportsConditionInParens$0();
        endPosition = t1._string_scanner$_position;
        t3 = t1._sourceFile;
        t4 = new A._FileSpan(t3, t2, endPosition);
        t4._FileSpan$3(t3, t2, endPosition);
        condition = new A.SupportsOperation(condition, right, operator, t4);
        lowerOperator = operator.toLowerCase();
        if (lowerOperator !== "and" && lowerOperator !== "or")
          A.throwExpression(A.ArgumentError$value(operator, "operator", 'may only be "and" or "or".'));
        _this.whitespace$0();
      }
      return condition;
    },
    _supportsConditionInParens$0() {
      var $name, nameStart, wasInParentheses, identifier, operation, _1_0, contents, identifier0, t2, $arguments, _0_0, _0_4, expression, condition, exception, declaration, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (_this._lookingAtInterpolatedIdentifier$0()) {
        identifier0 = _this.interpolatedIdentifier$0();
        t2 = identifier0.get$asPlain();
        if ((t2 == null ? null : t2.toLowerCase()) === "not")
          _this.error$2(0, '"not" is not a valid identifier here.', identifier0.span);
        if (t1.scanChar$1(40)) {
          $arguments = _this._interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(true, true);
          t1.expectChar$1(41);
          return new A.SupportsFunction(identifier0, $arguments, t1.spanFrom$1(start));
        } else {
          _0_0 = identifier0.contents;
          _0_4 = A._InitializedCell$(new A.StylesheetParser__supportsConditionInParens_closure(_0_0));
          if (_0_0.length === 1)
            if (type$.Expression._is(_0_4._readFinal$0())) {
              expression = _0_4._readFinal$0();
              t2 = true;
            } else {
              expression = null;
              t2 = false;
            }
          else {
            expression = null;
            t2 = false;
          }
          if (t2)
            return new A.SupportsInterpolation(expression, t1.spanFrom$1(start));
          else
            _this.error$2(0, "Expected @supports condition.", identifier0.span);
        }
      }
      t1.expectChar$1(40);
      _this.whitespace$0();
      if (_this.scanIdentifier$1("not")) {
        _this.whitespace$0();
        condition = _this._supportsConditionInParens$0();
        t1.expectChar$1(41);
        return new A.SupportsNegation(condition, t1.spanFrom$1(start));
      } else if (t1.peekChar$0() === 40) {
        condition = _this._supportsCondition$0();
        t1.expectChar$1(41);
        return condition;
      }
      $name = null;
      nameStart = new A._SpanScannerState(t1, t1._string_scanner$_position);
      wasInParentheses = _this._inParentheses;
      try {
        $name = _this._expression$0();
        t1.expectChar$1(58);
      } catch (exception) {
        if (type$.FormatException._is(A.unwrapException(exception))) {
          t1.set$state(nameStart);
          _this._inParentheses = wasInParentheses;
          identifier = _this.interpolatedIdentifier$0();
          operation = null;
          _1_0 = _this._trySupportsOperation$2(identifier, nameStart);
          if (_1_0 != null) {
            operation = _1_0;
            t2 = true;
          } else
            t2 = false;
          if (t2) {
            t1.expectChar$1(41);
            return operation;
          }
          t2 = new A.InterpolationBuffer(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Object));
          t2.addInterpolation$1(identifier);
          t2.addInterpolation$1(_this._interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(false, true, true));
          contents = t2.interpolation$1(t1.spanFrom$1(nameStart));
          if (t1.peekChar$0() === 58)
            throw exception;
          t1.expectChar$1(41);
          return new A.SupportsAnything(contents, t1.spanFrom$1(start));
        } else
          throw exception;
      }
      declaration = _this._supportsDeclarationValue$2($name, start);
      t1.expectChar$1(41);
      return declaration;
    },
    _supportsDeclarationValue$2($name, start) {
      var t1, value, _this = this;
      if ($name instanceof A.StringExpression)
        if (!$name.hasQuotes)
          t1 = B.JSString_methods.startsWith$1($name.text.get$initialPlain(), "--");
        else
          t1 = false;
      else
        t1 = false;
      if (t1)
        value = new A.StringExpression(_this._interpolatedDeclarationValue$0(), false);
      else {
        _this.whitespace$0();
        value = _this._expression$0();
      }
      return new A.SupportsDeclaration($name, value, _this.scanner.spanFrom$1(start));
    },
    _trySupportsOperation$2(interpolation, start) {
      var expression, beforeWhitespace, t2, t3, operator, operation, right, t4, endPosition, t5, t6, lowerOperator, _this = this, _null = null,
        t1 = interpolation.contents;
      if (t1.length !== 1)
        return _null;
      expression = B.JSArray_methods.get$first(t1);
      if (!type$.Expression._is(expression))
        return _null;
      t1 = _this.scanner;
      beforeWhitespace = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _this.whitespace$0();
      for (t2 = start.position, t3 = interpolation.span, operator = _null, operation = operator; _this.lookingAtIdentifier$0();) {
        if (operator != null)
          _this.expectIdentifier$1(operator);
        else if (_this.scanIdentifier$1("and"))
          operator = "and";
        else {
          if (!_this.scanIdentifier$1("or")) {
            if (beforeWhitespace._scanner !== t1)
              A.throwExpression(A.ArgumentError$(string$.The_gi, _null));
            t2 = beforeWhitespace.position;
            if ((t2 === 0 ? 1 / t2 < 0 : t2 < 0) || t2 > t1.string.length)
              A.throwExpression(A.ArgumentError$("Invalid position " + t2, _null));
            t1._string_scanner$_position = t2;
            return t1._lastMatch = null;
          }
          operator = "or";
        }
        _this.whitespace$0();
        right = _this._supportsConditionInParens$0();
        t4 = operation == null ? new A.SupportsInterpolation(expression, t3) : operation;
        endPosition = t1._string_scanner$_position;
        t5 = t1._sourceFile;
        t6 = new A._FileSpan(t5, t2, endPosition);
        t6._FileSpan$3(t5, t2, endPosition);
        operation = new A.SupportsOperation(t4, right, operator, t6);
        lowerOperator = operator.toLowerCase();
        if (lowerOperator !== "and" && lowerOperator !== "or")
          A.throwExpression(A.ArgumentError$value(operator, "operator", 'may only be "and" or "or".'));
        _this.whitespace$0();
      }
      return operation;
    },
    _lookingAtInterpolatedIdentifier$0() {
      var _0_0,
        t1 = this.scanner,
        _1_0 = t1.peekChar$0();
      $label0$0: {
        if (_1_0 == null) {
          t1 = false;
          break $label0$0;
        }
        if (_1_0 === 95 || A.CharacterExtension_get_isAlphabetic(_1_0) || _1_0 >= 128 || 92 === _1_0) {
          t1 = true;
          break $label0$0;
        }
        if (35 === _1_0) {
          t1 = t1.peekChar$1(1) === 123;
          break $label0$0;
        }
        if (45 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label1$1: {
            if (_0_0 == null) {
              t1 = false;
              break $label1$1;
            }
            if (35 === _0_0) {
              t1 = t1.peekChar$1(2) === 123;
              break $label1$1;
            }
            if (_0_0 === 95 || A.CharacterExtension_get_isAlphabetic(_0_0) || _0_0 >= 128 || 92 === _0_0 || 45 === _0_0) {
              t1 = true;
              break $label1$1;
            }
            t1 = false;
            break $label1$1;
          }
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _lookingAtPotentialPropertyHack$0() {
      var t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (58 === _0_0 || 42 === _0_0 || 46 === _0_0) {
          t1 = true;
          break $label0$0;
        }
        if (35 === _0_0) {
          t1 = t1.peekChar$1(1) !== 123;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _lookingAtInterpolatedIdentifierBody$0() {
      var t2,
        t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (_0_0 == null) {
          t1 = false;
          break $label0$0;
        }
        if (!(_0_0 === 95 || A.CharacterExtension_get_isAlphabetic(_0_0) || _0_0 >= 128))
          t2 = _0_0 >= 48 && _0_0 <= 57 || _0_0 === 45;
        else
          t2 = true;
        if (t2 || 92 === _0_0) {
          t1 = true;
          break $label0$0;
        }
        if (35 === _0_0) {
          t1 = t1.peekChar$1(1) === 123;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _lookingAtExpression$0() {
      var _0_0,
        t1 = this.scanner,
        _1_0 = t1.peekChar$0();
      $label0$0: {
        if (_1_0 == null) {
          t1 = false;
          break $label0$0;
        }
        if (46 === _1_0) {
          t1 = t1.peekChar$1(1) !== 46;
          break $label0$0;
        }
        if (33 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label1$1: {
            if (_0_0 != null)
              if (105 !== _0_0)
                if (73 !== _0_0)
                  t1 = _0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12;
                else
                  t1 = true;
              else
                t1 = true;
            else
              t1 = true;
            if (t1) {
              t1 = true;
              break $label1$1;
            }
            t1 = false;
            break $label1$1;
          }
          break $label0$0;
        }
        if (40 !== _1_0)
          if (47 !== _1_0)
            if (91 !== _1_0)
              if (39 !== _1_0)
                if (34 !== _1_0)
                  if (35 !== _1_0)
                    if (43 !== _1_0)
                      if (45 !== _1_0)
                        if (92 !== _1_0)
                          if (36 !== _1_0)
                            if (38 !== _1_0)
                              if (!(_1_0 === 95 || A.CharacterExtension_get_isAlphabetic(_1_0) || _1_0 >= 128))
                                t1 = _1_0 >= 48 && _1_0 <= 57;
                              else
                                t1 = true;
                            else
                              t1 = true;
                          else
                            t1 = true;
                        else
                          t1 = true;
                      else
                        t1 = true;
                    else
                      t1 = true;
                  else
                    t1 = true;
                else
                  t1 = true;
              else
                t1 = true;
            else
              t1 = true;
          else
            t1 = true;
        else
          t1 = true;
        if (t1) {
          t1 = true;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _withChildren$1$3(child, start, create) {
      var result = create.call$2(this.children$1(0, child), this.scanner.spanFrom$1(start));
      this.whitespaceWithoutComments$0();
      return result;
    },
    _withChildren$3(child, start, create) {
      return this._withChildren$1$3(child, start, create, type$.dynamic);
    },
    _urlString$0() {
      var innerError, stackTrace, t2, exception,
        t1 = this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        url = this.string$0();
      try {
        t2 = A.Uri_parse(url);
        return t2;
      } catch (exception) {
        t2 = A.unwrapException(exception);
        if (type$.FormatException._is(t2)) {
          innerError = t2;
          stackTrace = A.getTraceFromException(exception);
          this.error$3(0, "Invalid URL: " + J.get$message$x(innerError), t1.spanFrom$1(start), stackTrace);
        } else
          throw exception;
      }
    },
    _publicIdentifier$0() {
      var _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        result = _this.identifier$1$normalize(true);
      _this._assertPublic$2(result, new A.StylesheetParser__publicIdentifier_closure(_this, new A._SpanScannerState(t1, t2)));
      return result;
    },
    _assertPublic$2(identifier, span) {
      var first = identifier.charCodeAt(0);
      if (!(first === 45 || first === 95))
        return;
      this.error$2(0, string$.Privat, span.call$0());
    },
    get$plainCss() {
      return false;
    }
  };
  A.StylesheetParser_parse_closure.prototype = {
    call$0() {
      var statements, t4,
        t1 = this.$this,
        t2 = t1.scanner,
        t3 = t2._string_scanner$_position;
      t2.scanChar$1(65279);
      statements = t1.statements$1(new A.StylesheetParser_parse__closure(t1));
      t2.expectDone$0();
      t4 = t1._globalVariables;
      t4 = t4.get$values(t4);
      B.JSArray_methods.addAll$1(statements, A.MappedIterable_MappedIterable(t4, new A.StylesheetParser_parse__closure0(), A._instanceType(t4)._eval$1("Iterable.E"), type$.Statement));
      return A.Stylesheet$internal(statements, t2.spanFrom$1(new A._SpanScannerState(t2, t3)), t1.get$plainCss());
    },
    $signature: 360
  };
  A.StylesheetParser_parse__closure.prototype = {
    call$0() {
      var t1 = this.$this;
      if (t1.scanner.scan$1("@charset")) {
        t1.whitespace$0();
        t1.string$0();
        return null;
      }
      return t1._statement$1$root(true);
    },
    $signature: 362
  };
  A.StylesheetParser_parse__closure0.prototype = {
    call$1(declaration) {
      var t1 = declaration.expression;
      return A.VariableDeclaration$(declaration.name, new A.NullExpression(t1.get$span(t1)), declaration.span, null, false, true, null);
    },
    $signature: 363
  };
  A.StylesheetParser_parseArgumentDeclaration_closure.prototype = {
    call$0() {
      var $arguments,
        t1 = this.$this,
        t2 = t1.scanner;
      t2.expectChar$2$name(64, "@-rule");
      t1.identifier$0();
      t1.whitespace$0();
      t1.identifier$0();
      $arguments = t1._argumentDeclaration$0();
      t1.whitespace$0();
      t2.expectChar$1(123);
      return $arguments;
    },
    $signature: 364
  };
  A.StylesheetParser_parseVariableDeclaration_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      return t1.lookingAtIdentifier$0() ? t1._variableDeclarationWithNamespace$0() : t1.variableDeclarationWithoutNamespace$0();
    },
    $signature: 199
  };
  A.StylesheetParser_parseUseRule_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1.scanner,
        t3 = t2._string_scanner$_position;
      t2.expectChar$2$name(64, "@-rule");
      t1.expectIdentifier$1("use");
      t1.whitespace$0();
      return t1._useRule$1(new A._SpanScannerState(t2, t3));
    },
    $signature: 366
  };
  A.StylesheetParser__parseSingleProduction_closure.prototype = {
    call$0() {
      var result = this.production.call$0();
      this.$this.scanner.expectDone$0();
      return result;
    },
    $signature() {
      return this.T._eval$1("0()");
    }
  };
  A.StylesheetParser__statement_closure.prototype = {
    call$0() {
      return this.$this._statement$0();
    },
    $signature: 142
  };
  A.StylesheetParser_variableDeclarationWithoutNamespace_closure.prototype = {
    call$0() {
      return this.$this.scanner.spanFrom$1(this.start);
    },
    $signature: 33
  };
  A.StylesheetParser_variableDeclarationWithoutNamespace_closure0.prototype = {
    call$0() {
      return this.declaration;
    },
    $signature: 199
  };
  A.StylesheetParser__declarationOrBuffer_closure.prototype = {
    call$2(children, span) {
      return A.Declaration$nested(this.name, children, span, null);
    },
    $signature: 84
  };
  A.StylesheetParser__declarationOrBuffer_closure0.prototype = {
    call$2(children, span) {
      return A.Declaration$nested(this.name, children, span, this._box_0.value);
    },
    $signature: 84
  };
  A.StylesheetParser__styleRule_closure.prototype = {
    call$2(children, span) {
      var _this = this,
        t1 = _this.$this;
      if (t1.get$indented() && children.length === 0)
        t1.logger.warn$2$span(0, string$.This_s, _this._box_0.interpolation.span);
      t1._inStyleRule = _this.wasInStyleRule;
      return A.StyleRule$(_this._box_0.interpolation, children, t1.scanner.spanFrom$1(_this.start));
    },
    $signature: 369
  };
  A.StylesheetParser__propertyOrVariableDeclaration_closure.prototype = {
    call$2(children, span) {
      return A.Declaration$nested(this._box_0.name, children, span, null);
    },
    $signature: 84
  };
  A.StylesheetParser__propertyOrVariableDeclaration_closure0.prototype = {
    call$2(children, span) {
      return A.Declaration$nested(this._box_0.name, children, span, this.value);
    },
    $signature: 84
  };
  A.StylesheetParser__atRootRule_closure.prototype = {
    call$2(children, span) {
      return A.AtRootRule$(children, span, this.query);
    },
    $signature: 201
  };
  A.StylesheetParser__atRootRule_closure0.prototype = {
    call$2(children, span) {
      return A.AtRootRule$(children, span, null);
    },
    $signature: 201
  };
  A.StylesheetParser__eachRule_closure.prototype = {
    call$2(children, span) {
      var _this = this;
      _this.$this._inControlDirective = _this.wasInControlDirective;
      return A.EachRule$(_this.variables, _this.list, children, span);
    },
    $signature: 372
  };
  A.StylesheetParser__functionRule_closure.prototype = {
    call$2(children, span) {
      return A.FunctionRule$(this.name, this.$arguments, children, span, this.precedingComment);
    },
    $signature: 373
  };
  A.StylesheetParser__forRule_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      if (!t1.lookingAtIdentifier$0())
        return false;
      if (t1.scanIdentifier$1("to"))
        return this._box_0.exclusive = true;
      else if (t1.scanIdentifier$1("through")) {
        this._box_0.exclusive = false;
        return true;
      } else
        return false;
    },
    $signature: 1
  };
  A.StylesheetParser__forRule_closure0.prototype = {
    call$2(children, span) {
      var t1, _this = this;
      _this.$this._inControlDirective = _this.wasInControlDirective;
      t1 = _this._box_0.exclusive;
      t1.toString;
      return A.ForRule$(_this.variable, _this.from, _this.to, children, span, t1);
    },
    $signature: 374
  };
  A.StylesheetParser__memberList_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      if (t1.scanner.peekChar$0() === 36)
        this.variables.add$1(0, t1.variableName$0());
      else
        this.identifiers.add$1(0, t1.identifier$1$normalize(true));
    },
    $signature: 2
  };
  A.StylesheetParser__includeRule_closure.prototype = {
    call$2(children, span) {
      return A.ContentBlock$(this.contentArguments_, children, span);
    },
    $signature: 375
  };
  A.StylesheetParser_mediaRule_closure.prototype = {
    call$2(children, span) {
      return A.MediaRule$(this.query, children, span);
    },
    $signature: 376
  };
  A.StylesheetParser__mixinRule_closure.prototype = {
    call$2(children, span) {
      var _this = this;
      _this.$this._stylesheet$_inMixin = false;
      return A.MixinRule$(_this.name, _this.$arguments, children, span, _this.precedingComment);
    },
    $signature: 377
  };
  A.StylesheetParser_mozDocumentRule_closure.prototype = {
    call$2(children, span) {
      var _this = this;
      if (_this._box_0.needsDeprecationWarning)
        A.WarnForDeprecation_warnForDeprecation(_this.$this.logger, B.Deprecation_gJ9, string$.x40_moz_, span, null);
      return A.AtRule$(_this.name, span, children, _this.value);
    },
    $signature: 202
  };
  A.StylesheetParser_supportsRule_closure.prototype = {
    call$2(children, span) {
      return A.SupportsRule$(this.condition, children, span);
    },
    $signature: 383
  };
  A.StylesheetParser__whileRule_closure.prototype = {
    call$2(children, span) {
      this.$this._inControlDirective = this.wasInControlDirective;
      return A.WhileRule$(this.condition, children, span);
    },
    $signature: 295
  };
  A.StylesheetParser_unknownAtRule_closure.prototype = {
    call$2(children, span) {
      return A.AtRule$(this.name, span, children, this._box_0.value);
    },
    $signature: 202
  };
  A.StylesheetParser__expression_resetState.prototype = {
    call$0() {
      var t2,
        t1 = this._box_0;
      t1.operands_ = t1.operators_ = t1.spaceExpressions_ = t1.commaExpressions_ = null;
      t2 = this.$this;
      t2.scanner.set$state(this.start);
      t1.allowSlash = true;
      t1.singleExpression_ = t2._singleExpression$0();
    },
    $signature: 0
  };
  A.StylesheetParser__expression_resolveOneOperation.prototype = {
    call$0() {
      var t2, t3, t4, t5, t6, t7, _this = this,
        t1 = _this._box_0,
        operator = t1.operators_.pop(),
        left = t1.operands_.pop(),
        right = t1.singleExpression_;
      if (right == null) {
        t2 = _this.$this.scanner;
        t3 = operator.operator.length;
        t2.error$3$length$position(0, "Expected expression.", t3, t2._string_scanner$_position - t3);
      }
      if (t1.allowSlash) {
        t2 = _this.$this;
        t2 = !t2._inParentheses && operator === B.BinaryOperator_t8B && t2._isSlashOperand$1(left) && t2._isSlashOperand$1(right);
      } else
        t2 = false;
      if (t2)
        t1.singleExpression_ = new A.BinaryOperationExpression(B.BinaryOperator_t8B, left, right, true);
      else {
        t1.singleExpression_ = new A.BinaryOperationExpression(operator, left, right, false);
        t2 = t1.allowSlash = false;
        if (B.BinaryOperator_anB === operator || B.BinaryOperator_olz === operator) {
          t3 = _this.$this;
          t4 = t3.scanner.string;
          t5 = right.get$span(right);
          t5 = t5.get$start(t5);
          t6 = right.get$span(right);
          t7 = operator.operator;
          if (B.JSString_methods.substring$2(t4, t5.offset - 1, t6.get$start(t6).offset) === t7) {
            t2 = left.get$span(left);
            t2 = t4.charCodeAt(t2.get$end(t2).offset);
            t2 = t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12;
          }
          if (t2) {
            t2 = left.toString$0(0);
            t4 = right.toString$0(0);
            t5 = left.toString$0(0);
            t6 = right.toString$0(0);
            t1 = t1.singleExpression_;
            A.WarnForDeprecation_warnForDeprecation(t3.logger, B.Deprecation_sIK, "This operation is parsed as:\n\n    " + t2 + " " + t7 + " " + t4 + string$.x0a_but_ + t5 + " (" + t7 + t6 + ")\n\nAdd a space after " + t7 + string$.x20to_cl, t1.get$span(t1), null);
          }
        }
      }
    },
    $signature: 0
  };
  A.StylesheetParser__expression_resolveOperations.prototype = {
    call$0() {
      var t1,
        operators = this._box_0.operators_;
      if (operators == null)
        return;
      for (t1 = this.resolveOneOperation; operators.length !== 0;)
        t1.call$0();
    },
    $signature: 0
  };
  A.StylesheetParser__expression_addSingleExpression.prototype = {
    call$1(expression) {
      var t2, spaceExpressions, _this = this,
        t1 = _this._box_0;
      if (t1.singleExpression_ != null) {
        t2 = _this.$this;
        if (t2._inParentheses) {
          t2._inParentheses = false;
          if (t1.allowSlash) {
            _this.resetState.call$0();
            return;
          }
        }
        spaceExpressions = t1.spaceExpressions_;
        if (spaceExpressions == null)
          spaceExpressions = t1.spaceExpressions_ = A._setArrayType([], type$.JSArray_Expression);
        _this.resolveOperations.call$0();
        t2 = t1.singleExpression_;
        t2.toString;
        spaceExpressions.push(t2);
        t1.allowSlash = true;
      }
      t1.singleExpression_ = expression;
    },
    $signature: 385
  };
  A.StylesheetParser__expression_addOperator.prototype = {
    call$1(operator) {
      var t2, t3, operators, operands, t4, singleExpression,
        t1 = this.$this;
      if (t1.get$plainCss() && operator !== B.BinaryOperator_2jN && operator !== B.BinaryOperator_anB && operator !== B.BinaryOperator_olz && operator !== B.BinaryOperator_qN2 && operator !== B.BinaryOperator_t8B) {
        t2 = t1.scanner;
        t3 = operator.operator.length;
        t2.error$3$length$position(0, "Operators aren't allowed in plain CSS.", t3, t2._string_scanner$_position - t3);
      }
      t2 = this._box_0;
      t2.allowSlash = t2.allowSlash && operator === B.BinaryOperator_t8B;
      operators = t2.operators_;
      if (operators == null)
        operators = t2.operators_ = A._setArrayType([], type$.JSArray_BinaryOperator);
      operands = t2.operands_;
      if (operands == null)
        operands = t2.operands_ = A._setArrayType([], type$.JSArray_Expression);
      t3 = this.resolveOneOperation;
      t4 = operator.precedence;
      while (true) {
        if (!(operators.length !== 0 && B.JSArray_methods.get$last(operators).precedence >= t4))
          break;
        t3.call$0();
      }
      operators.push(operator);
      singleExpression = t2.singleExpression_;
      if (singleExpression == null) {
        t3 = t1.scanner;
        t4 = operator.operator.length;
        t3.error$3$length$position(0, "Expected expression.", t4, t3._string_scanner$_position - t4);
      }
      operands.push(singleExpression);
      t1.whitespace$0();
      t2.singleExpression_ = t1._singleExpression$0();
    },
    $signature: 386
  };
  A.StylesheetParser__expression_resolveSpaceExpressions.prototype = {
    call$0() {
      var t1, spaceExpressions, singleExpression, t2;
      this.resolveOperations.call$0();
      t1 = this._box_0;
      spaceExpressions = t1.spaceExpressions_;
      if (spaceExpressions == null)
        return;
      singleExpression = t1.singleExpression_;
      if (singleExpression == null)
        this.$this.scanner.error$1(0, "Expected expression.");
      spaceExpressions.push(singleExpression);
      t2 = B.JSArray_methods.get$first(spaceExpressions);
      t2 = t2.get$span(t2).expand$1(0, singleExpression.get$span(singleExpression));
      t1.singleExpression_ = new A.ListExpression(A.List_List$unmodifiable(spaceExpressions, type$.Expression), B.ListSeparator_EVt, false, t2);
      t1.spaceExpressions_ = null;
    },
    $signature: 0
  };
  A.StylesheetParser__expression_closure.prototype = {
    call$0() {
      return 43 === this._3_0;
    },
    $signature: 1
  };
  A.StylesheetParser__expression_closure0.prototype = {
    call$0() {
      return 47 === this._3_0;
    },
    $signature: 1
  };
  A.StylesheetParser__expression_closure1.prototype = {
    call$0() {
      return 46 === this._3_0;
    },
    $signature: 1
  };
  A.StylesheetParser_expressionUntilComma_closure.prototype = {
    call$0() {
      return this.$this.scanner.peekChar$0() === 44;
    },
    $signature: 1
  };
  A.StylesheetParser__isHexColor_closure.prototype = {
    call$0() {
      var t1 = this._0_0;
      return (t1 == null ? A._asString(t1) : t1).length;
    },
    $signature: 3
  };
  A.StylesheetParser__isHexColor_closure0.prototype = {
    call$1(char) {
      return A.CharacterExtension_get_isHex(char);
    },
    $signature: 47
  };
  A.StylesheetParser__unicodeRange_closure.prototype = {
    call$1(char) {
      return char != null && A.CharacterExtension_get_isHex(char);
    },
    $signature: 34
  };
  A.StylesheetParser__unicodeRange_closure0.prototype = {
    call$1(char) {
      return char != null && A.CharacterExtension_get_isHex(char);
    },
    $signature: 34
  };
  A.StylesheetParser_identifierLike_closure.prototype = {
    call$0() {
      return 46 === this._2_0;
    },
    $signature: 1
  };
  A.StylesheetParser_identifierLike_closure0.prototype = {
    call$0() {
      return 40 === this._2_0;
    },
    $signature: 1
  };
  A.StylesheetParser_namespacedExpression_closure.prototype = {
    call$0() {
      return this.$this.scanner.spanFrom$1(this.start);
    },
    $signature: 33
  };
  A.StylesheetParser_trySpecialFunction_closure.prototype = {
    call$1(contents) {
      return new A.StringExpression(contents, false);
    },
    $signature: 395
  };
  A.StylesheetParser__tryUrlContents_closure.prototype = {
    call$0() {
      return 35 === this._0_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure.prototype = {
    call$0() {
      return 32 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure0.prototype = {
    call$0() {
      return 9 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure1.prototype = {
    call$0() {
      return 10 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure2.prototype = {
    call$0() {
      return 13 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure3.prototype = {
    call$0() {
      return 12 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__expressionUntilComparison_closure.prototype = {
    call$0() {
      var t1 = this.$this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (61 === _0_0) {
          t1 = t1.peekChar$1(1) !== 61;
          break $label0$0;
        }
        if (60 === _0_0 || 62 === _0_0) {
          t1 = true;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $signature: 1
  };
  A.StylesheetParser__supportsConditionInParens_closure.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.StylesheetParser__publicIdentifier_closure.prototype = {
    call$0() {
      return this.$this.scanner.spanFrom$1(this.start);
    },
    $signature: 33
  };
  A.StylesheetGraph.prototype = {
    modifiedSince$3(url, since, baseImporter) {
      var node = this._stylesheet_graph$_add$3(url, baseImporter, null);
      if (node == null)
        return true;
      return new A.StylesheetGraph_modifiedSince_transitiveModificationTime(this).call$1(node)._core$_value > since._core$_value;
    },
    _stylesheet_graph$_add$3(url, baseImporter, baseUrl) {
      var importer, canonicalUrl, originalUrl, t1, _this = this, _null = null,
        result = _this._ignoreErrors$1(new A.StylesheetGraph__add_closure(_this, url, baseImporter, baseUrl));
      if (type$.Record_3_nullable_Object_and_nullable_Object_and_nullable_Object_originalUrl._is(result)) {
        importer = result._0;
        canonicalUrl = result._1;
        originalUrl = result._2;
        t1 = true;
      } else {
        originalUrl = _null;
        canonicalUrl = originalUrl;
        importer = canonicalUrl;
        t1 = false;
      }
      if (t1) {
        _this.addCanonical$3(importer, canonicalUrl, originalUrl);
        return _this._nodes.$index(0, canonicalUrl);
      } else
        return _null;
    },
    addCanonical$4$recanonicalize(importer, canonicalUrl, originalUrl, recanonicalize) {
      var stylesheet, _this = this,
        t1 = _this._nodes;
      if (t1.$index(0, canonicalUrl) != null)
        return B.Set_empty3;
      stylesheet = _this._ignoreErrors$1(new A.StylesheetGraph_addCanonical_closure(_this, importer, canonicalUrl, originalUrl));
      if (stylesheet == null)
        return B.Set_empty3;
      t1.$indexSet(0, canonicalUrl, A.StylesheetNode$_(stylesheet, importer, canonicalUrl, _this._upstreamNodes$3(stylesheet, importer, canonicalUrl)));
      return recanonicalize ? _this._recanonicalizeImports$2(importer, canonicalUrl) : B.Set_empty3;
    },
    addCanonical$3(importer, canonicalUrl, originalUrl) {
      return this.addCanonical$4$recanonicalize(importer, canonicalUrl, originalUrl, true);
    },
    _upstreamNodes$3(stylesheet, baseImporter, baseUrl) {
      var t6, t7, t8, t9, t10,
        t1 = type$.Uri,
        active = A.LinkedHashSet_LinkedHashSet$_literal([baseUrl], t1),
        t2 = A.LinkedHashSet_LinkedHashSet$_empty(t1),
        t3 = A.LinkedHashSet_LinkedHashSet$_empty(t1),
        t4 = A.LinkedHashSet_LinkedHashSet$_empty(t1),
        t5 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      new A._FindDependenciesVisitor(t2, t3, t4, t5, A.LinkedHashSet_LinkedHashSet$_empty(type$.nullable_String)).visitChildren$1(stylesheet.children);
      t6 = type$.UnmodifiableSetView_Uri;
      t2 = new A.UnmodifiableSetView0(t2, t6);
      t3 = new A.UnmodifiableSetView0(t3, t6);
      t4 = new A.UnmodifiableSetView0(t4, t6);
      t7 = type$.nullable_StylesheetNode;
      t8 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t7);
      for (t9 = new A.UnionSet(A.LinkedHashSet_LinkedHashSet$_literal([t2, t3, t4], type$.Set_Uri), type$.UnionSet_Uri).get$_union_set$_iterable(), t9 = t9.get$iterator(t9); t9.moveNext$0();) {
        t10 = t9.get$current(t9);
        t8.$indexSet(0, t10, this._nodeFor$4(t10, baseImporter, baseUrl, active));
      }
      t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t7);
      for (t2 = new A.DependencyReport(t2, t3, t4, new A.UnmodifiableSetView0(t5, t6)).imports._base, t2 = t2.get$iterator(t2); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        t1.$indexSet(0, t3, this._nodeFor$5$forImport(t3, baseImporter, baseUrl, active, true));
      }
      return new A._Record_2_imports_modules(t1, t8);
    },
    reload$1(canonicalUrl) {
      var stylesheet, upstream, _this = this,
        node = _this._nodes.$index(0, canonicalUrl);
      if (node == null)
        throw A.wrapException(A.StateError$(canonicalUrl.toString$0(0) + " is not in the dependency graph."));
      _this._transitiveModificationTimes.clear$0(0);
      _this.importCache.clearImport$1(canonicalUrl);
      stylesheet = _this._ignoreErrors$1(new A.StylesheetGraph_reload_closure(_this, node, canonicalUrl));
      if (stylesheet == null)
        return false;
      node._stylesheet = stylesheet;
      upstream = _this._upstreamNodes$3(stylesheet, node.importer, canonicalUrl);
      node._replaceUpstream$2(upstream._1, upstream._0);
      return true;
    },
    _recanonicalizeImports$2(importer, canonicalUrl) {
      var t1, t2, t3, t4, t5, newUpstream, newUpstreamImports, _this = this,
        changed = A.LinkedHashSet_LinkedHashSet$_empty(type$.StylesheetNode);
      for (t1 = _this._nodes, t1 = t1.get$values(t1), t1 = t1.get$iterator(t1), t2 = type$.UnmodifiableMapView_of_Uri_and_nullable_StylesheetNode, t3 = type$.Uri, t4 = type$.nullable_StylesheetNode; t1.moveNext$0();) {
        t5 = t1.get$current(t1);
        newUpstream = _this._recanonicalizeImportsForNode$4$forImport(t5, importer, canonicalUrl, false);
        newUpstreamImports = _this._recanonicalizeImportsForNode$4$forImport(t5, importer, canonicalUrl, true);
        if (newUpstream.__js_helper$_length !== 0 || newUpstreamImports.__js_helper$_length !== 0) {
          changed.add$1(0, t5);
          t5._replaceUpstream$2(A.mergeMaps(new A.UnmodifiableMapView(t5._upstream, t2), newUpstream, t3, t4), A.mergeMaps(new A.UnmodifiableMapView(t5._upstreamImports, t2), newUpstreamImports, t3, t4));
        }
      }
      if (changed._collection$_length !== 0)
        _this._transitiveModificationTimes.clear$0(0);
      return changed;
    },
    _recanonicalizeImportsForNode$4$forImport(node, importer, canonicalUrl, forImport) {
      var url, result, t2, newMap, t3, t4, t5, t6, upstream, exception, newCanonicalUrl,
        t1 = type$.UnmodifiableMapView_of_Uri_and_nullable_StylesheetNode,
        map = forImport ? new A.UnmodifiableMapView(node._upstreamImports, t1) : new A.UnmodifiableMapView(node._upstream, t1);
      t1 = type$.Uri;
      t2 = type$.nullable_StylesheetNode;
      newMap = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
      for (t1 = A.MapExtensions_get_pairs(map, t1, t2), t1 = t1.get$iterator(t1), t2 = this._nodes, t3 = this.importCache, t4 = node.importer, t5 = node.canonicalUrl; t1.moveNext$0();) {
        t6 = t1.get$current(t1);
        url = null;
        url = t6._0;
        upstream = t6._1;
        if (!importer.couldCanonicalize$2(url, canonicalUrl))
          continue;
        t3.clearCanonicalize$1(url);
        result = null;
        try {
          result = t3.canonicalize$4$baseImporter$baseUrl$forImport(0, url, t4, t5, forImport);
        } catch (exception) {
        }
        t6 = result;
        newCanonicalUrl = t6 == null ? null : t6._1;
        if (J.$eq$(newCanonicalUrl, upstream == null ? null : upstream.canonicalUrl))
          continue;
        t6 = url;
        newMap.$indexSet(0, t6, result == null ? null : t2.$index(0, newCanonicalUrl));
      }
      return newMap;
    },
    _nodeFor$5$forImport(url, baseImporter, baseUrl, active, forImport) {
      var t2, t3, _1_0, node, t4, stylesheet, _this = this, _null = null, t1 = {},
        result = _this._ignoreErrors$1(new A.StylesheetGraph__nodeFor_closure(_this, url, baseImporter, baseUrl, forImport));
      if (result == null)
        return _null;
      t1.originalUrl = t1.canonicalUrl = t1.importer = null;
      t1.importer = result._0;
      t2 = t1.canonicalUrl = result._1;
      t1.originalUrl = result._2;
      t3 = _this._nodes;
      _1_0 = t3.$index(0, t2);
      if (_1_0 != null) {
        node = _1_0;
        t4 = true;
      } else {
        node = _null;
        t4 = false;
      }
      if (t4)
        return node;
      if (active.contains$1(0, t2))
        return _null;
      stylesheet = _this._ignoreErrors$1(new A.StylesheetGraph__nodeFor_closure0(t1, _this));
      if (stylesheet == null)
        return _null;
      active.add$1(0, t1.canonicalUrl);
      t2 = t1.importer;
      t4 = t1.canonicalUrl;
      node = A.StylesheetNode$_(stylesheet, t2, t4, _this._upstreamNodes$3(stylesheet, t2, t4));
      active.remove$1(0, t1.canonicalUrl);
      t3.$indexSet(0, t1.canonicalUrl, node);
      return node;
    },
    _nodeFor$4(url, baseImporter, baseUrl, active) {
      return this._nodeFor$5$forImport(url, baseImporter, baseUrl, active, false);
    },
    _ignoreErrors$1$1(callback) {
      var t1, exception;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        return null;
      }
    },
    _ignoreErrors$1(callback) {
      return this._ignoreErrors$1$1(callback, type$.dynamic);
    }
  };
  A.StylesheetGraph_modifiedSince_transitiveModificationTime.prototype = {
    call$1(node) {
      return this.$this._transitiveModificationTimes.putIfAbsent$2(node.canonicalUrl, new A.StylesheetGraph_modifiedSince_transitiveModificationTime_closure(node, this));
    },
    $signature: 400
  };
  A.StylesheetGraph_modifiedSince_transitiveModificationTime_closure.prototype = {
    call$0() {
      var t2, t3, upstreamTime,
        t1 = this.node,
        latest = t1.importer.modificationTime$1(t1.canonicalUrl);
      for (t2 = t1._upstream, t2 = t2.get$values(t2), t1 = t1._upstreamImports, t1 = t2.followedBy$1(0, t1.get$values(t1)), t1 = new A.FollowedByIterator(J.get$iterator$ax(t1.__internal$_first), t1._second), t2 = this.transitiveModificationTime; t1.moveNext$0();) {
        t3 = t1._currentIterator;
        t3 = t3.get$current(t3);
        upstreamTime = t3 == null ? new A.DateTime(Date.now(), false) : t2.call$1(t3);
        if (upstreamTime._core$_value > latest._core$_value)
          latest = upstreamTime;
      }
      return latest;
    },
    $signature: 180
  };
  A.StylesheetGraph__add_closure.prototype = {
    call$0() {
      var _this = this;
      return _this.$this.importCache.canonicalize$3$baseImporter$baseUrl(0, _this.url, _this.baseImporter, _this.baseUrl);
    },
    $signature: 100
  };
  A.StylesheetGraph_addCanonical_closure.prototype = {
    call$0() {
      var _this = this;
      return _this.$this.importCache.importCanonical$3$originalUrl(_this.importer, _this.canonicalUrl, _this.originalUrl);
    },
    $signature: 112
  };
  A.StylesheetGraph_reload_closure.prototype = {
    call$0() {
      return this.$this.importCache.importCanonical$2(this.node.importer, this.canonicalUrl);
    },
    $signature: 112
  };
  A.StylesheetGraph__nodeFor_closure.prototype = {
    call$0() {
      var _this = this;
      return _this.$this.importCache.canonicalize$4$baseImporter$baseUrl$forImport(0, _this.url, _this.baseImporter, _this.baseUrl, _this.forImport);
    },
    $signature: 100
  };
  A.StylesheetGraph__nodeFor_closure0.prototype = {
    call$0() {
      var t1 = this._box_0;
      return this.$this.importCache.importCanonical$3$originalUrl(t1.importer, t1.canonicalUrl, t1.originalUrl);
    },
    $signature: 112
  };
  A.StylesheetNode.prototype = {
    StylesheetNode$_$4(_stylesheet, importer, canonicalUrl, allUpstream) {
      var t1, t2;
      for (t1 = this._upstream, t1 = t1.get$values(t1), t2 = this._upstreamImports, t2 = t1.followedBy$1(0, t2.get$values(t2)), t2 = new A.FollowedByIterator(J.get$iterator$ax(t2.__internal$_first), t2._second); t2.moveNext$0();) {
        t1 = t2._currentIterator;
        t1 = t1.get$current(t1);
        if (t1 != null)
          t1._downstream.add$1(0, this);
      }
    },
    _replaceUpstream$2(newUpstream, newUpstreamImports) {
      var t3, oldUpstream, newUpstreamSet, _this = this,
        t1 = _this._upstream,
        t2 = type$.nullable_StylesheetNode;
      t1 = A.LinkedHashSet_LinkedHashSet$of(t1.get$values(t1), t2);
      t3 = _this._upstreamImports;
      t1.addAll$1(0, t3.get$values(t3));
      t3 = type$.StylesheetNode;
      oldUpstream = A.SetExtension_removeNull(t1, t3);
      t2 = A.LinkedHashSet_LinkedHashSet$of(newUpstream.get$values(newUpstream), t2);
      t2.addAll$1(0, newUpstreamImports.get$values(newUpstreamImports));
      newUpstreamSet = A.SetExtension_removeNull(t2, t3);
      for (t1 = oldUpstream.difference$1(newUpstreamSet), t1 = t1.get$iterator(t1); t1.moveNext$0();)
        t1.get$current(t1)._downstream.remove$1(0, _this);
      for (t1 = newUpstreamSet.difference$1(oldUpstream), t1 = t1.get$iterator(t1); t1.moveNext$0();)
        t1.get$current(t1)._downstream.add$1(0, _this);
      _this._upstream = newUpstream;
      _this._upstreamImports = newUpstreamImports;
    },
    _stylesheet_graph$_remove$0() {
      var t1, t2, t3, t4, _i, url, _this = this;
      for (t1 = _this._upstream, t1 = A.LinkedHashSet_LinkedHashSet$of(t1.get$values(t1), type$.nullable_StylesheetNode), t2 = _this._upstreamImports, t1.addAll$1(0, t2.get$values(t2)), t1 = A._LinkedHashSetIterator$(t1, t1._collection$_modifications), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1._collection$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        if (t3 == null)
          continue;
        t3._downstream.remove$1(0, _this);
      }
      for (t1 = _this._downstream, t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        for (t3 = t2._upstream, t4 = A._instanceType(t3)._eval$1("LinkedHashMapKeyIterable<1>"), t4 = A.List_List$of(new A.LinkedHashMapKeyIterable(t3, t4), true, t4._eval$1("Iterable.E")), t3 = t4.length, _i = 0; _i < t3; ++_i) {
          url = t4[_i];
          if (J.$eq$(t2._upstream.$index(0, url), _this)) {
            t2._upstream.$indexSet(0, url, null);
            break;
          }
        }
        for (t3 = t2._upstreamImports, t4 = A._instanceType(t3)._eval$1("LinkedHashMapKeyIterable<1>"), t4 = A.List_List$of(new A.LinkedHashMapKeyIterable(t3, t4), true, t4._eval$1("Iterable.E")), t3 = t4.length, _i = 0; _i < t3; ++_i) {
          url = t4[_i];
          if (J.$eq$(t2._upstreamImports.$index(0, url), _this)) {
            t2._upstreamImports.$indexSet(0, url, null);
            break;
          }
        }
      }
    },
    toString$0(_) {
      var t1 = this._stylesheet.span;
      t1 = A.NullableExtension_andThen(t1.get$sourceUrl(t1), A.path__prettyUri$closure());
      return t1 == null ? "<unknown>" : t1;
    }
  };
  A.Syntax.prototype = {
    _enumToString$0() {
      return "Syntax." + this._name;
    },
    toString$0(_) {
      return this._syntax$_name;
    }
  };
  A.Box.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return this.$ti._is(other) && other._box$_inner === this._box$_inner;
    },
    get$hashCode(_) {
      return A.Primitives_objectHashCode(this._box$_inner);
    }
  };
  A.ModifiableBox.prototype = {};
  A.LazyFileSpan.prototype = {
    get$span(_) {
      var t1 = this._lazy_file_span$_span;
      return t1 == null ? this._lazy_file_span$_span = this._builder.call$0() : t1;
    },
    compareTo$1(_, other) {
      return this.get$span(this).compareTo$1(0, other);
    },
    get$context(_) {
      var t1 = this.get$span(this);
      return t1.get$context(t1);
    },
    get$end(_) {
      var t1 = this.get$span(this);
      return t1.get$end(t1);
    },
    expand$1(_, other) {
      return this.get$span(this).expand$1(0, other);
    },
    get$file(_) {
      var t1 = this.get$span(this);
      return t1.get$file(t1);
    },
    highlight$1$color(color) {
      return this.get$span(this).highlight$1$color(color);
    },
    get$length(_) {
      var t1 = this.get$span(this);
      return t1.get$length(t1);
    },
    message$2$color(_, message, color) {
      return this.get$span(this).message$2$color(0, message, color);
    },
    message$1($receiver, message) {
      return this.message$2$color($receiver, message, null);
    },
    get$sourceUrl(_) {
      var t1 = this.get$span(this);
      return t1.get$sourceUrl(t1);
    },
    get$start(_) {
      var t1 = this.get$span(this);
      return t1.get$start(t1);
    },
    get$text() {
      return this.get$span(this).get$text();
    },
    $isComparable: 1,
    $isFileSpan: 1,
    $isSourceSpan: 1,
    $isSourceSpanWithContext: 1
  };
  A.LimitedMapView.prototype = {
    get$keys(_) {
      return this._limited_map_view$_keys;
    },
    get$length(_) {
      return this._limited_map_view$_keys._collection$_length;
    },
    get$isEmpty(_) {
      return this._limited_map_view$_keys._collection$_length === 0;
    },
    get$isNotEmpty(_) {
      return this._limited_map_view$_keys._collection$_length !== 0;
    },
    $index(_, key) {
      return this._limited_map_view$_keys.contains$1(0, key) ? this._limited_map_view$_map.$index(0, key) : null;
    },
    containsKey$1(key) {
      return this._limited_map_view$_keys.contains$1(0, key);
    },
    remove$1(_, key) {
      return this._limited_map_view$_keys.contains$1(0, key) ? this._limited_map_view$_map.remove$1(0, key) : null;
    }
  };
  A.MapExtensions_get_pairs_closure.prototype = {
    call$1(e) {
      return new A._Record_2(e.key, e.value);
    },
    $signature() {
      return this.K._eval$1("@<0>")._bind$1(this.V)._eval$1("+(1,2)(MapEntry<1,2>)");
    }
  };
  A.MergedMapView.prototype = {
    get$keys(_) {
      var t1 = this._mapsByKey;
      return new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>"));
    },
    get$length(_) {
      return this._mapsByKey.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this._mapsByKey.__js_helper$_length === 0;
    },
    get$isNotEmpty(_) {
      return this._mapsByKey.__js_helper$_length !== 0;
    },
    MergedMapView$1(maps, $K, $V) {
      var t1, t2, t3, _i, map, t4, t5, t6;
      for (t1 = maps.length, t2 = this._mapsByKey, t3 = $K._eval$1("@<0>")._bind$1($V)._eval$1("MergedMapView<1,2>"), _i = 0; _i < maps.length; maps.length === t1 || (0, A.throwConcurrentModificationError)(maps), ++_i) {
        map = maps[_i];
        if (t3._is(map))
          for (t4 = map._mapsByKey, t4 = t4.get$values(t4), t4 = new A.MappedIterator(J.get$iterator$ax(t4.__internal$_iterable), t4._f), t5 = A._instanceType(t4)._rest[1]; t4.moveNext$0();) {
            t6 = t4.__internal$_current;
            if (t6 == null)
              t6 = t5._as(t6);
            A.setAll(t2, t6.get$keys(t6), t6);
          }
        else
          A.setAll(t2, map.get$keys(map), map);
      }
    },
    $index(_, key) {
      var t1 = this._mapsByKey.$index(0, this.$ti._precomputed1._as(key));
      return t1 == null ? null : t1.$index(0, key);
    },
    $indexSet(_, key, value) {
      var child, t1,
        _0_0 = this._mapsByKey.$index(0, key);
      if (_0_0 != null) {
        child = _0_0;
        t1 = true;
      } else {
        child = null;
        t1 = false;
      }
      if (t1)
        child.$indexSet(0, key, value);
      else
        throw A.wrapException(A.UnsupportedError$(string$.New_en));
    },
    remove$1(_, key) {
      throw A.wrapException(A.UnsupportedError$(string$.Entrie));
    },
    containsKey$1(key) {
      return this._mapsByKey.containsKey$1(key);
    }
  };
  A.MultiDirWatcher.prototype = {
    watch$1(_, directory) {
      var t1, t2, t3, t4, isParentOfExistingDir, _i, t5, _0_1, t6, existingWatcher, future, completer;
      for (t1 = this._watchers, t2 = A.MapExtensions_get_pairs(t1, type$.nullable_String, type$.Stream_WatchEvent).toList$0(0), t3 = t2.length, t1 = t1._map, t4 = this._group, isParentOfExistingDir = false, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        t5 = t2[_i];
        _0_1 = A._InitializedCell$(new A.MultiDirWatcher_watch_closure(t5));
        _0_1._readFinal$0().toString;
        t6 = _0_1._readFinal$0();
        t6.toString;
        existingWatcher = t5._1;
        if (!isParentOfExistingDir) {
          t5 = $.$get$context();
          t5 = t5._isWithinOrEquals$2(t6, directory) === B._PathRelation_equal || t5._isWithinOrEquals$2(t6, directory) === B._PathRelation_within;
        } else
          t5 = false;
        if (t5) {
          t1 = new A._Future($.Zone__current, type$._Future_void);
          t1._asyncComplete$1(null);
          return t1;
        }
        if ($.$get$context()._isWithinOrEquals$2(directory, t6) === B._PathRelation_within) {
          t1.remove$1(0, t6);
          t4.remove$1(0, existingWatcher);
          isParentOfExistingDir = true;
        }
      }
      future = A.watchDir(directory, this._poll);
      t2 = new A._CompleterStream(type$._CompleterStream_WatchEvent);
      completer = new A.StreamCompleter(t2, type$.StreamCompleter_WatchEvent);
      future.then$1$2$onError(0, completer.get$setSourceStream(), completer.get$setError(), type$.void);
      t1.$indexSet(0, directory, t2);
      t4.add$1(0, t2);
      return future;
    }
  };
  A.MultiDirWatcher_watch_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 32
  };
  A.MultiSpan.prototype = {
    get$start(_) {
      var t1 = this._multi_span$_primary;
      return t1.get$start(t1);
    },
    get$end(_) {
      var t1 = this._multi_span$_primary;
      return t1.get$end(t1);
    },
    get$text() {
      return this._multi_span$_primary.get$text();
    },
    get$context(_) {
      var t1 = this._multi_span$_primary;
      return t1.get$context(t1);
    },
    get$file(_) {
      var t1 = this._multi_span$_primary;
      return t1.get$file(t1);
    },
    get$length(_) {
      var t1 = this._multi_span$_primary;
      return t1.get$length(t1);
    },
    get$sourceUrl(_) {
      var t1 = this._multi_span$_primary;
      return t1.get$sourceUrl(t1);
    },
    compareTo$1(_, other) {
      return this._multi_span$_primary.compareTo$1(0, other);
    },
    toString$0(_) {
      return this._multi_span$_primary.toString$0(0);
    },
    expand$1(_, other) {
      return new A.MultiSpan(this._multi_span$_primary.expand$1(0, other), this.primaryLabel, this.secondarySpans);
    },
    highlight$1$color(color) {
      var t1 = color === true || false;
      return A.Highlighter$multiple(this._multi_span$_primary, this.primaryLabel, this.secondarySpans, t1, null, null).highlight$0();
    },
    message$2$color(_, message, color) {
      var t1 = J.$eq$(color, true) || typeof color == "string",
        t2 = typeof color == "string" ? color : null;
      return A.SourceSpanExtension_messageMultiple(this._multi_span$_primary, message, this.primaryLabel, this.secondarySpans, t1, t2, null);
    },
    message$1($receiver, message) {
      return this.message$2$color($receiver, message, null);
    },
    $isComparable: 1,
    $isFileSpan: 1,
    $isSourceSpan: 1,
    $isSourceSpanWithContext: 1
  };
  A.NoSourceMapBuffer.prototype = {
    get$length(_) {
      return this._no_source_map_buffer$_buffer._contents.length;
    },
    forSpan$1$2(span, callback) {
      return callback.call$0();
    },
    forSpan$2(span, callback) {
      return this.forSpan$1$2(span, callback, type$.dynamic);
    },
    write$1(_, object) {
      this._no_source_map_buffer$_buffer._contents += A.S(object);
      return null;
    },
    writeCharCode$1(charCode) {
      this._no_source_map_buffer$_buffer._contents += A.Primitives_stringFromCharCode(charCode);
      return null;
    },
    toString$0(_) {
      var t1 = this._no_source_map_buffer$_buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    buildSourceMap$1$prefix(prefix) {
      return A.throwExpression(A.UnsupportedError$(string$.NoSour));
    }
  };
  A.PrefixedMapView.prototype = {
    get$keys(_) {
      return new A._PrefixedKeys(this);
    },
    get$length(_) {
      var t1 = this._prefixed_map_view$_map;
      return t1.get$length(t1);
    },
    get$isEmpty(_) {
      var t1 = this._prefixed_map_view$_map;
      return t1.get$isEmpty(t1);
    },
    get$isNotEmpty(_) {
      var t1 = this._prefixed_map_view$_map;
      return t1.get$isNotEmpty(t1);
    },
    $index(_, key) {
      return typeof key == "string" && B.JSString_methods.startsWith$1(key, this._prefix) ? this._prefixed_map_view$_map.$index(0, J.substring$1$s(key, this._prefix.length)) : null;
    },
    containsKey$1(key) {
      return typeof key == "string" && B.JSString_methods.startsWith$1(key, this._prefix) && this._prefixed_map_view$_map.containsKey$1(J.substring$1$s(key, this._prefix.length));
    }
  };
  A._PrefixedKeys.prototype = {
    get$length(_) {
      var t1 = this._view._prefixed_map_view$_map;
      return t1.get$length(t1);
    },
    get$iterator(_) {
      var t1 = this._view._prefixed_map_view$_map;
      t1 = J.map$1$1$ax(t1.get$keys(t1), new A._PrefixedKeys_iterator_closure(this), type$.String);
      return t1.get$iterator(t1);
    },
    contains$1(_, key) {
      return this._view.containsKey$1(key);
    }
  };
  A._PrefixedKeys_iterator_closure.prototype = {
    call$1(key) {
      return this.$this._view._prefix + key;
    },
    $signature: 7
  };
  A.PublicMemberMapView.prototype = {
    get$keys(_) {
      var t1 = this._public_member_map_view$_inner;
      return J.where$1$ax(t1.get$keys(t1), A.utils__isPublic$closure());
    },
    containsKey$1(key) {
      return typeof key == "string" && A.isPublic(key) && this._public_member_map_view$_inner.containsKey$1(key);
    },
    $index(_, key) {
      if (typeof key == "string" && A.isPublic(key))
        return this._public_member_map_view$_inner.$index(0, key);
      return null;
    }
  };
  A.SourceMapBuffer.prototype = {
    get$_targetLocation() {
      var t1 = this._source_map_buffer$_buffer._contents,
        t2 = this._line;
      return A.SourceLocation$(t1.length, this._column, t2, null);
    },
    get$length(_) {
      return this._source_map_buffer$_buffer._contents.length;
    },
    forSpan$1$2(span, callback) {
      var t1, _this = this,
        wasInSpan = _this._inSpan;
      _this._inSpan = true;
      _this._addEntry$2(span.get$start(span), _this.get$_targetLocation());
      try {
        t1 = callback.call$0();
        return t1;
      } finally {
        _this._inSpan = wasInSpan;
      }
    },
    forSpan$2(span, callback) {
      return this.forSpan$1$2(span, callback, type$.dynamic);
    },
    _addEntry$2(source, target) {
      var entry, t2,
        t1 = this._entries;
      if (t1.length !== 0) {
        entry = B.JSArray_methods.get$last(t1);
        t2 = entry.source;
        if (t2.file.getLine$1(t2.offset) === source.file.getLine$1(source.offset) && entry.target.line === target.line)
          return;
        if (entry.target.offset === target.offset)
          return;
      }
      t1.push(new A.Entry(source, target, null));
    },
    write$1(_, object) {
      var t1, i,
        string = J.toString$0$(object);
      this._source_map_buffer$_buffer._contents += string;
      for (t1 = string.length, i = 0; i < t1; ++i)
        if (string.charCodeAt(i) === 10)
          this._source_map_buffer$_writeLine$0();
        else
          ++this._column;
    },
    writeCharCode$1(charCode) {
      this._source_map_buffer$_buffer._contents += A.Primitives_stringFromCharCode(charCode);
      if (charCode === 10)
        this._source_map_buffer$_writeLine$0();
      else
        ++this._column;
    },
    _source_map_buffer$_writeLine$0() {
      var _this = this,
        t1 = _this._entries;
      if (B.JSArray_methods.get$last(t1).target.line === _this._line && B.JSArray_methods.get$last(t1).target.column === _this._column)
        t1.pop();
      ++_this._line;
      _this._column = 0;
      if (_this._inSpan)
        t1.push(new A.Entry(B.JSArray_methods.get$last(t1).source, _this.get$_targetLocation(), null));
    },
    toString$0(_) {
      var t1 = this._source_map_buffer$_buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    buildSourceMap$1$prefix(prefix) {
      var i, t2, prefixColumn, _box_0 = {},
        t1 = prefix.length;
      if (t1 === 0)
        return A.SingleMapping_SingleMapping$fromEntries(this._entries);
      _box_0.prefixColumn = _box_0.prefixLines = 0;
      for (i = 0, t2 = 0; i < t1; ++i)
        if (prefix.charCodeAt(i) === 10) {
          ++_box_0.prefixLines;
          _box_0.prefixColumn = 0;
          t2 = 0;
        } else {
          prefixColumn = t2 + 1;
          _box_0.prefixColumn = prefixColumn;
          t2 = prefixColumn;
        }
      t2 = this._entries;
      return A.SingleMapping_SingleMapping$fromEntries(new A.MappedListIterable(t2, new A.SourceMapBuffer_buildSourceMap_closure(_box_0, t1), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,Entry>")));
    }
  };
  A.SourceMapBuffer_buildSourceMap_closure.prototype = {
    call$1(entry) {
      var t1 = entry.target,
        t2 = t1.line,
        t3 = this._box_0,
        t4 = t3.prefixLines;
      t3 = t2 === 0 ? t3.prefixColumn : 0;
      return new A.Entry(entry.source, A.SourceLocation$(t1.offset + this.prefixLength, t1.column + t3, t2 + t4, null), entry.identifierName);
    },
    $signature: 206
  };
  A.UnprefixedMapView.prototype = {
    get$keys(_) {
      return new A._UnprefixedKeys(this);
    },
    $index(_, key) {
      return typeof key == "string" ? this._unprefixed_map_view$_map.$index(0, this._unprefixed_map_view$_prefix + key) : null;
    },
    containsKey$1(key) {
      return typeof key == "string" && this._unprefixed_map_view$_map.containsKey$1(this._unprefixed_map_view$_prefix + key);
    },
    remove$1(_, key) {
      return typeof key == "string" ? this._unprefixed_map_view$_map.remove$1(0, this._unprefixed_map_view$_prefix + key) : null;
    }
  };
  A._UnprefixedKeys.prototype = {
    get$iterator(_) {
      var t1 = this._unprefixed_map_view$_view._unprefixed_map_view$_map;
      t1 = J.where$1$ax(t1.get$keys(t1), new A._UnprefixedKeys_iterator_closure(this)).map$1$1(0, new A._UnprefixedKeys_iterator_closure0(this), type$.String);
      return t1.get$iterator(t1);
    },
    contains$1(_, key) {
      return this._unprefixed_map_view$_view.containsKey$1(key);
    }
  };
  A._UnprefixedKeys_iterator_closure.prototype = {
    call$1(key) {
      return B.JSString_methods.startsWith$1(key, this.$this._unprefixed_map_view$_view._unprefixed_map_view$_prefix);
    },
    $signature: 10
  };
  A._UnprefixedKeys_iterator_closure0.prototype = {
    call$1(key) {
      return B.JSString_methods.substring$1(key, this.$this._unprefixed_map_view$_view._unprefixed_map_view$_prefix.length);
    },
    $signature: 7
  };
  A.indent_closure.prototype = {
    call$1(line) {
      return B.JSString_methods.$mul(" ", this.indentation) + line;
    },
    $signature: 7
  };
  A.flattenVertically_closure.prototype = {
    call$1(inner) {
      return A.QueueList_QueueList$from(inner, this.T);
    },
    $signature() {
      return this.T._eval$1("QueueList<0>(Iterable<0>)");
    }
  };
  A.flattenVertically_closure0.prototype = {
    call$1(queue) {
      this.result.push(queue.removeFirst$0());
      return queue.get$length(queue) === 0;
    },
    $signature() {
      return this.T._eval$1("bool(QueueList<0>)");
    }
  };
  A.longestCommonSubsequence_backtrack.prototype = {
    call$2(i, j) {
      var selection, t1, _this = this;
      if (i === -1 || j === -1)
        return A._setArrayType([], _this.T._eval$1("JSArray<0>"));
      selection = _this.selections[i][j];
      if (selection != null) {
        t1 = _this.call$2(i - 1, j - 1);
        J.add$1$ax(t1, selection);
        return t1;
      }
      t1 = _this.lengths;
      return t1[i + 1][j] > t1[i][j + 1] ? _this.call$2(i, j - 1) : _this.call$2(i - 1, j);
    },
    $signature() {
      return this.T._eval$1("List<0>(int,int)");
    }
  };
  A.mapAddAll2_closure.prototype = {
    call$2(key, inner) {
      var innerDestination, t2,
        t1 = this.destination,
        _0_0 = t1.$index(0, key);
      if (_0_0 != null) {
        innerDestination = _0_0;
        t2 = true;
      } else {
        innerDestination = null;
        t2 = false;
      }
      if (t2)
        innerDestination.addAll$1(0, inner);
      else
        t1.$indexSet(0, key, inner);
    },
    $signature() {
      return this.K1._eval$1("@<0>")._bind$1(this.K2)._bind$1(this.V)._eval$1("~(1,Map<2,3>)");
    }
  };
  A.Value.prototype = {
    get$isTruthy() {
      return true;
    },
    get$separator(_) {
      return B.ListSeparator_undecided_null_undecided;
    },
    get$hasBrackets() {
      return false;
    },
    get$asList() {
      return A._setArrayType([this], type$.JSArray_Value);
    },
    get$lengthAsList() {
      return 1;
    },
    get$isBlank() {
      return false;
    },
    get$isSpecialNumber() {
      return false;
    },
    get$isVar() {
      return false;
    },
    get$realNull() {
      return this;
    },
    sassIndexToListIndex$2(sassIndex, $name) {
      var t1, t2, index,
        indexValue = sassIndex.assertNumber$1($name);
      if (indexValue.get$hasUnits()) {
        t1 = indexValue.get$unitString();
        t2 = indexValue.unitSuggestion$1($name);
        A.EvaluationContext_current().warn$2(0, "$" + $name + ": Passing a number with unit " + t1 + string$.x20is_de + t2 + string$.x0a_Morex3a, B.Deprecation_8WR);
      }
      index = indexValue.assertInt$1($name);
      if (index === 0)
        throw A.wrapException(A.SassScriptException$("List index may not be 0.", $name));
      if (Math.abs(index) > this.get$lengthAsList())
        throw A.wrapException(A.SassScriptException$("Invalid index " + sassIndex.toString$0(0) + " for a list with " + this.get$lengthAsList() + " elements.", $name));
      return index < 0 ? this.get$lengthAsList() + index : index - 1;
    },
    assertCalculation$1($name) {
      return A.throwExpression(A.SassScriptException$(this.toString$0(0) + " is not a calculation.", $name));
    },
    assertColor$1($name) {
      return A.throwExpression(A.SassScriptException$(this.toString$0(0) + " is not a color.", $name));
    },
    assertFunction$1($name) {
      return A.throwExpression(A.SassScriptException$(this.toString$0(0) + " is not a function reference.", $name));
    },
    assertMixin$1($name) {
      return A.throwExpression(A.SassScriptException$(this.toString$0(0) + " is not a mixin reference.", $name));
    },
    assertMap$1($name) {
      return A.throwExpression(A.SassScriptException$(this.toString$0(0) + " is not a map.", $name));
    },
    tryMap$0() {
      return null;
    },
    assertNumber$1($name) {
      return A.throwExpression(A.SassScriptException$(this.toString$0(0) + " is not a number.", $name));
    },
    assertNumber$0() {
      return this.assertNumber$1(null);
    },
    assertString$1($name) {
      return A.throwExpression(A.SassScriptException$(this.toString$0(0) + " is not a string.", $name));
    },
    _selectorString$1($name) {
      var string, t1,
        _0_0 = this._selectorStringOrNull$0();
      if (_0_0 != null) {
        string = _0_0;
        t1 = true;
      } else {
        string = null;
        t1 = false;
      }
      if (t1)
        return string;
      throw A.wrapException(A.SassScriptException$(this.toString$0(0) + string$.x20is_noa, $name));
    },
    _selectorStringOrNull$0() {
      var t1, t2, result, _1_0, _i, complex, string, compound, _this = this, _null = null;
      if (_this instanceof A.SassString)
        return _this._string$_text;
      if (!(_this instanceof A.SassList))
        return _null;
      t1 = _this._list$_contents;
      t2 = t1.length;
      if (t2 === 0)
        return _null;
      result = A._setArrayType([], type$.JSArray_String);
      $label0$1: {
        _1_0 = _this._separator;
        if (B.ListSeparator_rXA === _1_0) {
          for (_i = 0; _i < t2; ++_i) {
            complex = t1[_i];
            if (complex instanceof A.SassString) {
              result.push(complex._string$_text);
              continue;
            }
            if (complex instanceof A.SassList && B.ListSeparator_EVt === complex._separator) {
              string = complex._selectorStringOrNull$0();
              if (string == null)
                return _null;
              result.push(string);
              continue;
            }
            return _null;
          }
          break $label0$1;
        }
        if (B.ListSeparator_zg9 === _1_0)
          return _null;
        for (_i = 0; _i < t2; ++_i) {
          compound = t1[_i];
          if (!(compound instanceof A.SassString))
            return _null;
          result.push(compound._string$_text);
        }
      }
      return B.JSArray_methods.join$1(result, _1_0 === B.ListSeparator_rXA ? ", " : " ");
    },
    withListContents$2$separator(contents, separator) {
      var t1 = separator == null ? this.get$separator(this) : separator,
        t2 = this.get$hasBrackets();
      return A.SassList$(contents, t1, t2);
    },
    withListContents$1(contents) {
      return this.withListContents$2$separator(contents, null);
    },
    greaterThan$1(other) {
      return A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " > " + other.toString$0(0) + '".', null));
    },
    greaterThanOrEquals$1(other) {
      return A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " >= " + other.toString$0(0) + '".', null));
    },
    lessThan$1(other) {
      return A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " < " + other.toString$0(0) + '".', null));
    },
    lessThanOrEquals$1(other) {
      return A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " <= " + other.toString$0(0) + '".', null));
    },
    times$1(other) {
      return A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " * " + other.toString$0(0) + '".', null));
    },
    modulo$1(other) {
      return A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " % " + other.toString$0(0) + '".', null));
    },
    plus$1(other) {
      var t1;
      $label0$0: {
        if (other instanceof A.SassString) {
          t1 = new A.SassString(A.serializeValue(this, false, true) + other._string$_text, other._hasQuotes);
          break $label0$0;
        }
        if (other instanceof A.SassCalculation)
          A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
        t1 = new A.SassString(A.serializeValue(this, false, true) + A.serializeValue(other, false, true), false);
        break $label0$0;
      }
      return t1;
    },
    minus$1(other) {
      return other instanceof A.SassCalculation ? A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " - " + other.toString$0(0) + '".', null)) : new A.SassString(A.serializeValue(this, false, true) + "-" + A.serializeValue(other, false, true), false);
    },
    dividedBy$1(other) {
      return new A.SassString(A.serializeValue(this, false, true) + "/" + A.serializeValue(other, false, true), false);
    },
    unaryPlus$0() {
      return new A.SassString("+" + A.serializeValue(this, false, true), false);
    },
    unaryMinus$0() {
      return new A.SassString("-" + A.serializeValue(this, false, true), false);
    },
    unaryNot$0() {
      return B.SassBoolean_false;
    },
    withoutSlash$0() {
      return this;
    },
    toString$0(_) {
      return A.serializeValue(this, true, true);
    }
  };
  A.SassArgumentList.prototype = {};
  A.SassBoolean.prototype = {
    get$isTruthy() {
      return this.value;
    },
    accept$1$1(visitor) {
      return visitor._serialize$_buffer.write$1(0, String(this.value));
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unaryNot$0() {
      return this.value ? B.SassBoolean_false : B.SassBoolean_true;
    }
  };
  A.SassCalculation.prototype = {
    get$isSpecialNumber() {
      return true;
    },
    accept$1$1(visitor) {
      return visitor.visitCalculation$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertCalculation$1($name) {
      return this;
    },
    plus$1(other) {
      if (other instanceof A.SassString)
        return this.super$Value$plus(other);
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
    },
    minus$1(other) {
      return A.throwExpression(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " - " + other.toString$0(0) + '".', null));
    },
    unaryPlus$0() {
      return A.throwExpression(A.SassScriptException$('Undefined operation "+' + this.toString$0(0) + '".', null));
    },
    unaryMinus$0() {
      return A.throwExpression(A.SassScriptException$('Undefined operation "-' + this.toString$0(0) + '".', null));
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassCalculation && this.name === other.name && B.C_ListEquality.equals$2(0, this.$arguments, other.$arguments);
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name) ^ B.C_ListEquality0.hash$1(this.$arguments);
    }
  };
  A.SassCalculation_sign_closure.prototype = {
    call$0() {
      return type$.SassNumber._as(this._0_0)._number$_value;
    },
    $signature: 92
  };
  A.SassCalculation_round_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 14
  };
  A.SassCalculation_round_closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 28
  };
  A.SassCalculation_round_closure1.prototype = {
    call$0() {
      return this._0_2._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassCalculation_round_closure2.prototype = {
    call$0() {
      return this._0_0._2;
    },
    $signature: 28
  };
  A.SassCalculation_round_closure3.prototype = {
    call$0() {
      return this._0_5._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassCalculation_round_closure4.prototype = {
    call$0() {
      return type$.SassString._as(this._0_1._readFinal$0())._string$_text;
    },
    $signature: 22
  };
  A.SassCalculation_round_closure5.prototype = {
    call$0() {
      return "nearest" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation_round_closure6.prototype = {
    call$0() {
      return "up" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation_round_closure7.prototype = {
    call$0() {
      return "down" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation_round_closure8.prototype = {
    call$0() {
      return "to-zero" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure0.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 22
  };
  A.SassCalculation__roundWithStep_closure.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 92
  };
  A.SassCalculation__roundWithStep_closure1.prototype = {
    call$0() {
      return "nearest" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure2.prototype = {
    call$0() {
      return "to-zero" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure3.prototype = {
    call$0() {
      return this._0_2._readFinal$0() > 0;
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure4.prototype = {
    call$0() {
      return "up" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure5.prototype = {
    call$0() {
      return "down" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__simplify_closure.prototype = {
    call$0() {
      return "calc" === this._0_0.name;
    },
    $signature: 1
  };
  A.SassCalculation__simplify_closure0.prototype = {
    call$0() {
      return type$.SassCalculation._as(this._0_0).$arguments;
    },
    $signature: 138
  };
  A.SassCalculation__simplify_closure1.prototype = {
    call$0() {
      return J.get$length$asx(this._0_12._readFinal$0()) === 1;
    },
    $signature: 1
  };
  A.SassCalculation__simplify_closure2.prototype = {
    call$0() {
      return J.$index$asx(this._0_12._readFinal$0(), 0);
    },
    $signature: 14
  };
  A.SassCalculation__verifyLength_closure.prototype = {
    call$1(arg) {
      return arg instanceof A.SassString;
    },
    $signature: 77
  };
  A.CalculationOperation.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.CalculationOperation && this._operator === other._operator && J.$eq$(this._left, other._left) && J.$eq$(this._right, other._right);
    },
    get$hashCode(_) {
      return (A.Primitives_objectHashCode(this._operator) ^ J.get$hashCode$(this._left) ^ J.get$hashCode$(this._right)) >>> 0;
    },
    toString$0(_) {
      var parenthesized = A.serializeValue(new A.SassCalculation("", A._setArrayType([this], type$.JSArray_Object)), true, true);
      return B.JSString_methods.substring$2(parenthesized, 1, parenthesized.length - 1);
    }
  };
  A.CalculationOperator.prototype = {
    _enumToString$0() {
      return "CalculationOperator." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.SassColor.prototype = {
    get$red(_) {
      var t1;
      if (this._red == null)
        this._hslToRgb$0();
      t1 = this._red;
      t1.toString;
      return t1;
    },
    get$green(_) {
      var t1;
      if (this._green == null)
        this._hslToRgb$0();
      t1 = this._green;
      t1.toString;
      return t1;
    },
    get$blue(_) {
      var t1;
      if (this._blue == null)
        this._hslToRgb$0();
      t1 = this._blue;
      t1.toString;
      return t1;
    },
    get$hue(_) {
      var t1;
      if (this._hue == null)
        this._rgbToHsl$0();
      t1 = this._hue;
      t1.toString;
      return t1;
    },
    get$saturation(_) {
      var t1;
      if (this._saturation == null)
        this._rgbToHsl$0();
      t1 = this._saturation;
      t1.toString;
      return t1;
    },
    get$lightness(_) {
      var t1;
      if (this._lightness == null)
        this._rgbToHsl$0();
      t1 = this._lightness;
      t1.toString;
      return t1;
    },
    get$whiteness(_) {
      var _this = this;
      return Math.min(Math.min(_this.get$red(_this), _this.get$green(_this)), _this.get$blue(_this)) / 255 * 100;
    },
    get$blackness(_) {
      var _this = this;
      return 100 - Math.max(Math.max(_this.get$red(_this), _this.get$green(_this)), _this.get$blue(_this)) / 255 * 100;
    },
    accept$1$1(visitor) {
      return visitor.visitColor$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertColor$1($name) {
      return this;
    },
    changeRgb$4$alpha$blue$green$red(alpha, blue, green, red) {
      return A.SassColor$rgb(red, green, blue, alpha == null ? this._alpha : alpha);
    },
    changeRgb$3$blue$green$red(blue, green, red) {
      return this.changeRgb$4$alpha$blue$green$red(null, blue, green, red);
    },
    changeHsl$4$alpha$hue$lightness$saturation(alpha, hue, lightness, saturation) {
      var _this = this, _null = null,
        t1 = hue == null ? _this.get$hue(_this) : hue,
        t2 = saturation == null ? _this.get$saturation(_this) : saturation,
        t3 = lightness == null ? _this.get$lightness(_this) : lightness,
        t4 = A.SassColor__handleNullAlpha(alpha == null ? _this._alpha : alpha);
      return new A.SassColor(_null, _null, _null, B.JSNumber_methods.$mod(t1, 360), A.fuzzyAssertRange(t2, 0, 100, "saturation"), A.fuzzyAssertRange(t3, 0, 100, "lightness"), A.fuzzyAssertRange(t4, 0, 1, "alpha"), _null);
    },
    changeHsl$1$saturation(saturation) {
      return this.changeHsl$4$alpha$hue$lightness$saturation(null, null, null, saturation);
    },
    changeHsl$1$lightness(lightness) {
      return this.changeHsl$4$alpha$hue$lightness$saturation(null, null, lightness, null);
    },
    changeHsl$1$hue(hue) {
      return this.changeHsl$4$alpha$hue$lightness$saturation(null, hue, null, null);
    },
    changeAlpha$1(alpha) {
      var _this = this;
      return new A.SassColor(_this._red, _this._green, _this._blue, _this._hue, _this._saturation, _this._lightness, A.fuzzyAssertRange(alpha, 0, 1, "alpha"), null);
    },
    plus$1(other) {
      if (!(other instanceof A.SassNumber) && !(other instanceof A.SassColor))
        return this.super$Value$plus(other);
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
    },
    minus$1(other) {
      if (!(other instanceof A.SassNumber) && !(other instanceof A.SassColor))
        return this.super$Value$minus(other);
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " - " + other.toString$0(0) + '".', null));
    },
    dividedBy$1(other) {
      if (!(other instanceof A.SassNumber) && !(other instanceof A.SassColor))
        return this.super$Value$dividedBy(other);
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " / " + other.toString$0(0) + '".', null));
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A.SassColor && other.get$red(other) === _this.get$red(_this) && other.get$green(other) === _this.get$green(_this) && other.get$blue(other) === _this.get$blue(_this) && other._alpha === _this._alpha;
    },
    get$hashCode(_) {
      var _this = this;
      return B.JSInt_methods.get$hashCode(_this.get$red(_this)) ^ B.JSInt_methods.get$hashCode(_this.get$green(_this)) ^ B.JSInt_methods.get$hashCode(_this.get$blue(_this)) ^ B.JSNumber_methods.get$hashCode(_this._alpha);
    },
    _rgbToHsl$0() {
      var t2, lightness, _this = this,
        scaledRed = _this.get$red(_this) / 255,
        scaledGreen = _this.get$green(_this) / 255,
        scaledBlue = _this.get$blue(_this) / 255,
        max = Math.max(Math.max(scaledRed, scaledGreen), scaledBlue),
        min = Math.min(Math.min(scaledRed, scaledGreen), scaledBlue),
        delta = max - min,
        t1 = max === min;
      if (t1)
        _this._hue = 0;
      else if (max === scaledRed)
        _this._hue = B.JSNumber_methods.$mod(60 * (scaledGreen - scaledBlue) / delta, 360);
      else if (max === scaledGreen)
        _this._hue = B.JSNumber_methods.$mod(120 + 60 * (scaledBlue - scaledRed) / delta, 360);
      else if (max === scaledBlue)
        _this._hue = B.JSNumber_methods.$mod(240 + 60 * (scaledRed - scaledGreen) / delta, 360);
      t2 = max + min;
      lightness = 50 * t2;
      _this._lightness = lightness;
      if (t1)
        _this._saturation = 0;
      else {
        t1 = 100 * delta;
        if (lightness < 50)
          _this._saturation = t1 / t2;
        else
          _this._saturation = t1 / (2 - max - min);
      }
    },
    _hslToRgb$0() {
      var _this = this,
        scaledHue = _this.get$hue(_this) / 360,
        scaledSaturation = _this.get$saturation(_this) / 100,
        scaledLightness = _this.get$lightness(_this) / 100,
        m2 = scaledLightness <= 0.5 ? scaledLightness * (scaledSaturation + 1) : scaledLightness + scaledSaturation - scaledLightness * scaledSaturation,
        m1 = scaledLightness * 2 - m2;
      _this._red = A.fuzzyRound(A.SassColor__hueToRgb(m1, m2, scaledHue + 0.3333333333333333) * 255);
      _this._green = A.fuzzyRound(A.SassColor__hueToRgb(m1, m2, scaledHue) * 255);
      _this._blue = A.fuzzyRound(A.SassColor__hueToRgb(m1, m2, scaledHue - 0.3333333333333333) * 255);
    }
  };
  A.SassColor_SassColor$hwb_toRgb.prototype = {
    call$1(hue) {
      return A.fuzzyRound((A.SassColor__hueToRgb(0, 1, hue) * this.factor + this._box_0.scaledWhiteness) * 255);
    },
    $signature: 210
  };
  A._ColorFormatEnum.prototype = {
    toString$0(_) {
      return this._color$_name;
    }
  };
  A.SpanColorFormat.prototype = {};
  A.SassFunction.prototype = {
    accept$1$1(visitor) {
      var t1, t2;
      if (!visitor._inspect)
        A.throwExpression(A.SassScriptException$(this.toString$0(0) + " isn't a valid CSS value.", null));
      t1 = visitor._serialize$_buffer;
      t1.write$1(0, "get-function(");
      t2 = this.callable;
      visitor._visitQuotedString$1(t2.get$name(t2));
      t1.writeCharCode$1(41);
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertFunction$1($name) {
      return this;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassFunction && this.callable.$eq(0, other.callable);
    },
    get$hashCode(_) {
      var t1 = this.callable;
      return t1.get$hashCode(t1);
    }
  };
  A.SassList.prototype = {
    get$separator(_) {
      return this._separator;
    },
    get$hasBrackets() {
      return this._hasBrackets;
    },
    get$isBlank() {
      return !this._hasBrackets && B.JSArray_methods.every$1(this._list$_contents, new A.SassList_isBlank_closure());
    },
    get$asList() {
      return this._list$_contents;
    },
    get$lengthAsList() {
      return this._list$_contents.length;
    },
    SassList$3$brackets(contents, _separator, brackets) {
      if (this._separator === B.ListSeparator_undecided_null_undecided && this._list$_contents.length > 1)
        throw A.wrapException(A.ArgumentError$(string$.A_list, null));
    },
    accept$1$1(visitor) {
      return visitor.visitList$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertMap$1($name) {
      return this._list$_contents.length === 0 ? B.SassMap_Map_empty : this.super$Value$assertMap($name);
    },
    tryMap$0() {
      return this._list$_contents.length === 0 ? B.SassMap_Map_empty : null;
    },
    $eq(_, other) {
      var t1, _this = this;
      if (other == null)
        return false;
      if (!(other instanceof A.SassList && other._separator === _this._separator && other._hasBrackets === _this._hasBrackets && B.C_ListEquality.equals$2(0, other._list$_contents, _this._list$_contents)))
        t1 = _this._list$_contents.length === 0 && other instanceof A.SassMap && other.get$asList().length === 0;
      else
        t1 = true;
      return t1;
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this._list$_contents);
    }
  };
  A.SassList_isBlank_closure.prototype = {
    call$1(element) {
      return element.get$isBlank();
    },
    $signature: 79
  };
  A.ListSeparator.prototype = {
    _enumToString$0() {
      return "ListSeparator." + this._name;
    },
    toString$0(_) {
      return this._list$_name;
    }
  };
  A.SassMap.prototype = {
    get$separator(_) {
      var t1 = this._map$_contents;
      return t1.get$isEmpty(t1) ? B.ListSeparator_undecided_null_undecided : B.ListSeparator_rXA;
    },
    get$asList() {
      var t3, t4, t5, key, value, result,
        t1 = type$.JSArray_Value,
        t2 = A._setArrayType([], t1);
      for (t3 = type$.Value, t4 = A.MapExtensions_get_pairs(this._map$_contents, t3, t3), t4 = t4.get$iterator(t4); t4.moveNext$0();) {
        t5 = t4.get$current(t4);
        key = t5._0;
        value = t5._1;
        result = A.List_List$from(A._setArrayType([key, value], t1), false, t3);
        result.fixed$length = Array;
        result.immutable$list = Array;
        t2.push(new A.SassList(result, B.ListSeparator_EVt, false));
      }
      return t2;
    },
    get$lengthAsList() {
      var t1 = this._map$_contents;
      return t1.get$length(t1);
    },
    accept$1$1(visitor) {
      return visitor.visitMap$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertMap$1($name) {
      return this;
    },
    tryMap$0() {
      return this;
    },
    $eq(_, other) {
      var t1;
      if (other == null)
        return false;
      if (!(other instanceof A.SassMap && B.C_MapEquality.equals$2(0, other._map$_contents, this._map$_contents))) {
        t1 = this._map$_contents;
        t1 = t1.get$isEmpty(t1) && other instanceof A.SassList && other._list$_contents.length === 0;
      } else
        t1 = true;
      return t1;
    },
    get$hashCode(_) {
      var t1 = this._map$_contents;
      return t1.get$isEmpty(t1) ? B.C_ListEquality0.hash$1(B.List_empty8) : B.C_MapEquality.hash$1(t1);
    }
  };
  A.SassMixin.prototype = {
    accept$1$1(visitor) {
      var t1, t2;
      if (!visitor._inspect)
        A.throwExpression(A.SassScriptException$(this.toString$0(0) + " isn't a valid CSS value.", null));
      t1 = visitor._serialize$_buffer;
      t1.write$1(0, "get-mixin(");
      t2 = this.callable;
      visitor._visitQuotedString$1(t2.get$name(t2));
      t1.writeCharCode$1(41);
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertMixin$1($name) {
      return this;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassMixin && this.callable.$eq(0, other.callable);
    },
    get$hashCode(_) {
      var t1 = this.callable;
      return t1.get$hashCode(t1);
    }
  };
  A._SassNull.prototype = {
    get$isTruthy() {
      return false;
    },
    get$isBlank() {
      return true;
    },
    get$realNull() {
      return null;
    },
    accept$1$1(visitor) {
      if (visitor._inspect)
        visitor._serialize$_buffer.write$1(0, "null");
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unaryNot$0() {
      return B.SassBoolean_true;
    }
  };
  A.SassNumber.prototype = {
    get$unitString() {
      var _this = this;
      return _this.get$hasUnits() ? _this._unitString$2(_this.get$numeratorUnits(_this), _this.get$denominatorUnits(_this)) : "";
    },
    accept$1$1(visitor) {
      return visitor.visitNumber$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    withoutSlash$0() {
      var _this = this;
      return _this.asSlash == null ? _this : _this.withValue$1(_this._number$_value);
    },
    assertNumber$1($name) {
      return this;
    },
    assertNumber$0() {
      return this.assertNumber$1(null);
    },
    assertInt$1($name) {
      var integer, t1,
        _0_0 = A.fuzzyAsInt(this._number$_value);
      if (_0_0 != null) {
        integer = _0_0;
        t1 = true;
      } else {
        integer = null;
        t1 = false;
      }
      if (t1)
        return integer;
      throw A.wrapException(A.SassScriptException$(this.toString$0(0) + " is not an int.", $name));
    },
    assertInt$0() {
      return this.assertInt$1(null);
    },
    valueInRange$3(min, max, $name) {
      var result, t1, _this = this,
        _0_0 = A.fuzzyCheckRange(_this._number$_value, min, max);
      if (_0_0 != null) {
        result = _0_0;
        t1 = true;
      } else {
        result = null;
        t1 = false;
      }
      if (t1)
        return result;
      throw A.wrapException(A.SassScriptException$("Expected " + _this.toString$0(0) + " to be within " + min + _this.get$unitString() + " and " + max + _this.get$unitString() + ".", $name));
    },
    valueInRangeWithUnit$4(min, max, $name, unit) {
      var result, t1,
        _0_0 = A.fuzzyCheckRange(this._number$_value, min, max);
      if (_0_0 != null) {
        result = _0_0;
        t1 = true;
      } else {
        result = null;
        t1 = false;
      }
      if (t1)
        return result;
      throw A.wrapException(A.SassScriptException$("Expected " + this.toString$0(0) + " to be within " + min + unit + " and " + max + unit + ".", $name));
    },
    hasCompatibleUnits$1(other) {
      var _this = this;
      if (_this.get$numeratorUnits(_this).length !== other.get$numeratorUnits(other).length)
        return false;
      if (_this.get$denominatorUnits(_this).length !== other.get$denominatorUnits(other).length)
        return false;
      return _this.isComparableTo$1(other);
    },
    assertUnit$2(unit, $name) {
      if (this.hasUnit$1(unit))
        return;
      throw A.wrapException(A.SassScriptException$("Expected " + this.toString$0(0) + ' to have unit "' + unit + '".', $name));
    },
    assertNoUnits$1($name) {
      if (!this.get$hasUnits())
        return;
      throw A.wrapException(A.SassScriptException$("Expected " + this.toString$0(0) + " to have no units.", $name));
    },
    assertNoUnits$0() {
      return this.assertNoUnits$1(null);
    },
    convertValueToMatch$3(other, $name, otherName) {
      return this._coerceOrConvertValue$6$coerceUnitless$name$other$otherName(other.get$numeratorUnits(other), other.get$denominatorUnits(other), false, $name, other, otherName);
    },
    convertValueToMatch$1(other) {
      return this.convertValueToMatch$3(other, null, null);
    },
    coerce$3(newNumerators, newDenominators, $name) {
      return A.SassNumber_SassNumber$withUnits(this.coerceValue$3(newNumerators, newDenominators, $name), newDenominators, newNumerators);
    },
    coerce$2(newNumerators, newDenominators) {
      return this.coerce$3(newNumerators, newDenominators, null);
    },
    coerceValue$3(newNumerators, newDenominators, $name) {
      return this._coerceOrConvertValue$4$coerceUnitless$name(newNumerators, newDenominators, true, $name);
    },
    coerceValueToUnit$2(unit, $name) {
      var t1 = type$.JSArray_String;
      return this.coerceValue$3(A._setArrayType([unit], t1), A._setArrayType([], t1), $name);
    },
    coerceValueToUnit$1(unit) {
      return this.coerceValueToUnit$2(unit, null);
    },
    coerceToMatch$3(other, $name, otherName) {
      var t1 = this.coerceValueToMatch$3(other, $name, otherName),
        t2 = other.get$numeratorUnits(other);
      return A.SassNumber_SassNumber$withUnits(t1, other.get$denominatorUnits(other), t2);
    },
    coerceValueToMatch$3(other, $name, otherName) {
      return this._coerceOrConvertValue$6$coerceUnitless$name$other$otherName(other.get$numeratorUnits(other), other.get$denominatorUnits(other), true, $name, other, otherName);
    },
    coerceValueToMatch$1(other) {
      return this.coerceValueToMatch$3(other, null, null);
    },
    _coerceOrConvertValue$6$coerceUnitless$name$other$otherName(newNumerators, newDenominators, coerceUnitless, $name, other, otherName) {
      var otherHasUnits, t1, compatibilityException, oldNumerators, _i, oldDenominators, _this = this, _box_0 = {};
      if (B.C_ListEquality.equals$2(0, _this.get$numeratorUnits(_this), newNumerators) && B.C_ListEquality.equals$2(0, _this.get$denominatorUnits(_this), newDenominators))
        return _this._number$_value;
      otherHasUnits = newNumerators.length !== 0 || newDenominators.length !== 0;
      if (coerceUnitless)
        t1 = !_this.get$hasUnits() || !otherHasUnits;
      else
        t1 = false;
      if (t1)
        return _this._number$_value;
      compatibilityException = new A.SassNumber__coerceOrConvertValue_compatibilityException(_this, other, otherName, otherHasUnits, $name, newNumerators, newDenominators);
      _box_0.value = _this._number$_value;
      t1 = _this.get$numeratorUnits(_this);
      oldNumerators = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      for (t1 = newNumerators.length, _i = 0; _i < newNumerators.length; newNumerators.length === t1 || (0, A.throwConcurrentModificationError)(newNumerators), ++_i)
        A.removeFirstWhere(oldNumerators, new A.SassNumber__coerceOrConvertValue_closure(_box_0, newNumerators[_i]), new A.SassNumber__coerceOrConvertValue_closure0(compatibilityException));
      t1 = _this.get$denominatorUnits(_this);
      oldDenominators = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      for (t1 = newDenominators.length, _i = 0; _i < newDenominators.length; newDenominators.length === t1 || (0, A.throwConcurrentModificationError)(newDenominators), ++_i)
        A.removeFirstWhere(oldDenominators, new A.SassNumber__coerceOrConvertValue_closure1(_box_0, newDenominators[_i]), new A.SassNumber__coerceOrConvertValue_closure2(compatibilityException));
      if (oldNumerators.length !== 0 || oldDenominators.length !== 0)
        throw A.wrapException(compatibilityException.call$0());
      return _box_0.value;
    },
    _coerceOrConvertValue$4$coerceUnitless$name(newNumerators, newDenominators, coerceUnitless, $name) {
      return this._coerceOrConvertValue$6$coerceUnitless$name$other$otherName(newNumerators, newDenominators, coerceUnitless, $name, null, null);
    },
    isComparableTo$1(other) {
      var exception;
      if (!this.get$hasUnits() || !other.get$hasUnits())
        return true;
      try {
        this.greaterThan$1(other);
        return true;
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.SassScriptException)
          return false;
        else
          throw exception;
      }
    },
    greaterThan$1(other) {
      if (other instanceof A.SassNumber)
        return this._coerceUnits$2(other, A.number0__fuzzyGreaterThan$closure()) ? B.SassBoolean_true : B.SassBoolean_false;
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " > " + other.toString$0(0) + '".', null));
    },
    greaterThanOrEquals$1(other) {
      if (other instanceof A.SassNumber)
        return this._coerceUnits$2(other, A.number0__fuzzyGreaterThanOrEquals$closure()) ? B.SassBoolean_true : B.SassBoolean_false;
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " >= " + other.toString$0(0) + '".', null));
    },
    lessThan$1(other) {
      if (other instanceof A.SassNumber)
        return this._coerceUnits$2(other, A.number0__fuzzyLessThan$closure()) ? B.SassBoolean_true : B.SassBoolean_false;
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " < " + other.toString$0(0) + '".', null));
    },
    lessThanOrEquals$1(other) {
      if (other instanceof A.SassNumber)
        return this._coerceUnits$2(other, A.number0__fuzzyLessThanOrEquals$closure()) ? B.SassBoolean_true : B.SassBoolean_false;
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " <= " + other.toString$0(0) + '".', null));
    },
    modulo$1(other) {
      if (other instanceof A.SassNumber)
        return this.withValue$1(this._coerceUnits$2(other, A.number0__moduloLikeSass$closure()));
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + this.toString$0(0) + " % " + other.toString$0(0) + '".', null));
    },
    plus$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber)
        return _this.withValue$1(_this._coerceUnits$2(other, new A.SassNumber_plus_closure()));
      if (!(other instanceof A.SassColor))
        return _this.super$Value$plus(other);
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + _this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
    },
    minus$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber)
        return _this.withValue$1(_this._coerceUnits$2(other, new A.SassNumber_minus_closure()));
      if (!(other instanceof A.SassColor))
        return _this.super$Value$minus(other);
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + _this.toString$0(0) + " - " + other.toString$0(0) + '".', null));
    },
    times$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber) {
        if (!other.get$hasUnits())
          return _this.withValue$1(_this._number$_value * other._number$_value);
        return _this.multiplyUnits$3(_this._number$_value * other._number$_value, other.get$numeratorUnits(other), other.get$denominatorUnits(other));
      }
      throw A.wrapException(A.SassScriptException$('Undefined operation "' + _this.toString$0(0) + " * " + other.toString$0(0) + '".', null));
    },
    dividedBy$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber) {
        if (!other.get$hasUnits())
          return _this.withValue$1(_this._number$_value / other._number$_value);
        return _this.multiplyUnits$3(_this._number$_value / other._number$_value, other.get$denominatorUnits(other), other.get$numeratorUnits(other));
      }
      return _this.super$Value$dividedBy(other);
    },
    unaryPlus$0() {
      return this;
    },
    _coerceUnits$1$2(other, operation) {
      var t1, exception;
      try {
        t1 = operation.call$2(this._number$_value, other.coerceValueToMatch$1(this));
        return t1;
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.SassScriptException) {
          this.coerceValueToMatch$1(other);
          throw exception;
        } else
          throw exception;
      }
    },
    _coerceUnits$2(other, operation) {
      return this._coerceUnits$1$2(other, operation, type$.dynamic);
    },
    multiplyUnits$3(value, otherNumerators, otherDenominators) {
      var _0_0, _0_1, _0_2, _0_3, _0_6, _0_7, _0_9, _0_11, _0_13, numerators_case_0, denominators_case_0, t1, denominators_case_00, t2, t3, denominators_case_1, numerators_case_1, newNumerators, mutableOtherDenominators, _i, numerator, mutableDenominatorUnits, _this = this, _null = null, _box_0 = {};
      _box_0.value = value;
      _0_0 = new A._Record_4([_this.get$numeratorUnits(_this), _this.get$denominatorUnits(_this), otherNumerators, otherDenominators]);
      _0_1 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure(_0_0));
      _0_2 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure0(_0_0));
      _0_3 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure1(_0_0));
      _0_6 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure2(_0_3));
      _0_7 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure3(_0_0));
      _0_9 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure4(_0_7));
      _0_11 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure5(_0_1));
      _0_13 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure6(_0_2));
      numerators_case_0 = _0_1._readFinal$0();
      denominators_case_0 = _0_2._readFinal$0();
      t1 = _0_6._readFinal$0() && _0_9._readFinal$0();
      if (!t1)
        if (_0_11._readFinal$0())
          if (_0_13._readFinal$0()) {
            numerators_case_0 = _0_3._readFinal$0();
            denominators_case_00 = _0_7._readFinal$0();
            denominators_case_0 = denominators_case_00;
            t1 = true;
          } else
            t1 = false;
        else
          t1 = false;
      else
        t1 = true;
      if (t1) {
        t2 = denominators_case_0;
        t1 = numerators_case_0;
        t3 = true;
      } else {
        t2 = _null;
        t1 = t2;
        t3 = false;
      }
      if (!t3) {
        if (_0_11._readFinal$0()) {
          denominators_case_1 = _0_2._readFinal$0();
          numerators_case_1 = _0_3._readFinal$0();
          t3 = _0_9._readFinal$0();
          t3 = t3;
        } else {
          numerators_case_1 = _null;
          denominators_case_1 = numerators_case_1;
          t3 = false;
        }
        if (!t3) {
          numerators_case_1 = _0_1._readFinal$0();
          if (_0_13._readFinal$0())
            if (_0_6._readFinal$0()) {
              denominators_case_1 = _0_7._readFinal$0();
              t3 = true;
            } else
              t3 = false;
          else
            t3 = false;
        } else
          t3 = true;
        if (t3)
          if (!_this._areAnyConvertible$2(numerators_case_1, denominators_case_1)) {
            t2 = denominators_case_1;
            t1 = numerators_case_1;
            t3 = true;
          } else
            t3 = false;
        else
          t3 = false;
      } else
        t3 = true;
      if (t3)
        return A.SassNumber_SassNumber$withUnits(value, t2, t1);
      newNumerators = A._setArrayType([], type$.JSArray_String);
      mutableOtherDenominators = A._setArrayType(otherDenominators.slice(0), A._arrayInstanceType(otherDenominators));
      for (t1 = _this.get$numeratorUnits(_this), t2 = t1.length, _i = 0; _i < t2; ++_i) {
        numerator = t1[_i];
        A.removeFirstWhere(mutableOtherDenominators, new A.SassNumber_multiplyUnits_closure7(_box_0, numerator), new A.SassNumber_multiplyUnits_closure8(newNumerators, numerator));
      }
      t1 = _this.get$denominatorUnits(_this);
      mutableDenominatorUnits = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      for (t1 = otherNumerators.length, _i = 0; _i < t1; ++_i) {
        numerator = otherNumerators[_i];
        A.removeFirstWhere(mutableDenominatorUnits, new A.SassNumber_multiplyUnits_closure9(_box_0, numerator), new A.SassNumber_multiplyUnits_closure10(newNumerators, numerator));
      }
      t1 = _box_0.value;
      B.JSArray_methods.addAll$1(mutableDenominatorUnits, mutableOtherDenominators);
      return A.SassNumber_SassNumber$withUnits(t1, mutableDenominatorUnits, newNumerators);
    },
    _areAnyConvertible$2(units1, units2) {
      return J.any$1$ax(units1, new A.SassNumber__areAnyConvertible_closure(units2));
    },
    _unitString$2(numerators, denominators) {
      var t1, denominator,
        _0_0 = new A._Record_2(numerators, denominators),
        _0_4 = A._InitializedCell$(new A.SassNumber__unitString_closure(_0_0)),
        _0_5 = A._InitializedCell$(new A.SassNumber__unitString_closure0(_0_0)),
        _0_6 = A._InitializedCell$(new A.SassNumber__unitString_closure1(_0_5)),
        _0_7 = A._InitializedCell$(new A.SassNumber__unitString_closure2(_0_6));
      $label0$0: {
        if (_0_4._readFinal$0() && _0_7._readFinal$0()) {
          t1 = "no units";
          break $label0$0;
        }
        if (_0_4._readFinal$0())
          if (J.$eq$(_0_6._readFinal$0(), 1)) {
            denominator = J.$index$asx(_0_5._readFinal$0(), 0);
            t1 = true;
          } else {
            denominator = null;
            t1 = false;
          }
        else {
          denominator = null;
          t1 = false;
        }
        if (t1) {
          t1 = A.S(denominator) + "^-1";
          break $label0$0;
        }
        if (_0_4._readFinal$0()) {
          t1 = "(" + B.JSArray_methods.join$1(denominators, "*") + ")^-1";
          break $label0$0;
        }
        if (_0_7._readFinal$0()) {
          t1 = B.JSArray_methods.join$1(numerators, "*");
          break $label0$0;
        }
        t1 = B.JSArray_methods.join$1(numerators, "*") + "/" + B.JSArray_methods.join$1(denominators, "*");
        break $label0$0;
      }
      return t1;
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      if (!(other instanceof A.SassNumber))
        return false;
      if (_this.get$numeratorUnits(_this).length !== other.get$numeratorUnits(other).length || _this.get$denominatorUnits(_this).length !== other.get$denominatorUnits(other).length)
        return false;
      if (!_this.get$hasUnits())
        return A.fuzzyEquals(_this._number$_value, other._number$_value);
      if (!B.C_ListEquality.equals$2(0, _this._canonicalizeUnitList$1(_this.get$numeratorUnits(_this)), _this._canonicalizeUnitList$1(other.get$numeratorUnits(other))) || !B.C_ListEquality.equals$2(0, _this._canonicalizeUnitList$1(_this.get$denominatorUnits(_this)), _this._canonicalizeUnitList$1(other.get$denominatorUnits(other))))
        return false;
      return A.fuzzyEquals(_this._number$_value * _this._canonicalMultiplier$1(_this.get$numeratorUnits(_this)) / _this._canonicalMultiplier$1(_this.get$denominatorUnits(_this)), other._number$_value * _this._canonicalMultiplier$1(other.get$numeratorUnits(other)) / _this._canonicalMultiplier$1(other.get$denominatorUnits(other)));
    },
    get$hashCode(_) {
      var _this = this,
        t1 = _this.hashCache;
      return t1 == null ? _this.hashCache = A.fuzzyHashCode(_this._number$_value * _this._canonicalMultiplier$1(_this.get$numeratorUnits(_this)) / _this._canonicalMultiplier$1(_this.get$denominatorUnits(_this))) : t1;
    },
    _canonicalizeUnitList$1(units) {
      var type,
        t1 = units.length;
      if (t1 === 0)
        return units;
      if (t1 === 1) {
        type = $.$get$_typesByUnit().$index(0, B.JSArray_methods.get$first(units));
        if (type == null)
          t1 = units;
        else {
          t1 = B.Map_ws7dy.$index(0, type);
          t1.toString;
          t1 = A._setArrayType([B.JSArray_methods.get$first(t1)], type$.JSArray_String);
        }
        return t1;
      }
      t1 = A._arrayInstanceType(units)._eval$1("MappedListIterable<1,String>");
      t1 = A.List_List$of(new A.MappedListIterable(units, new A.SassNumber__canonicalizeUnitList_closure(), t1), true, t1._eval$1("ListIterable.E"));
      B.JSArray_methods.sort$0(t1);
      return t1;
    },
    _canonicalMultiplier$1(units) {
      return B.JSArray_methods.fold$2(units, 1, new A.SassNumber__canonicalMultiplier_closure(this));
    },
    canonicalMultiplierForUnit$1(unit) {
      var t1,
        innerMap = B.Map_nfuzN.$index(0, unit);
      if (innerMap == null)
        t1 = 1;
      else {
        t1 = innerMap.get$values(innerMap);
        t1 = 1 / t1.get$first(t1);
      }
      return t1;
    },
    unitSuggestion$2($name, unit) {
      var t2, t3, result, _this = this,
        t1 = _this.get$denominatorUnits(_this);
      t1 = new A.MappedListIterable(t1, new A.SassNumber_unitSuggestion_closure(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$0(0);
      t2 = _this.get$numeratorUnits(_this);
      t2 = new A.MappedListIterable(t2, new A.SassNumber_unitSuggestion_closure0(), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,String>")).join$0(0);
      t3 = unit == null ? "" : " * 1" + unit;
      result = "$" + $name + t1 + t2 + t3;
      return _this.get$numeratorUnits(_this).length === 0 ? result : "calc(" + result + ")";
    },
    unitSuggestion$1($name) {
      return this.unitSuggestion$2($name, null);
    }
  };
  A.SassNumber_SassNumber$withUnits_closure0.prototype = {
    call$0() {
      return this._0_1._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 96
  };
  A.SassNumber_SassNumber$withUnits_closure1.prototype = {
    call$0() {
      var t1 = this._0_1._readFinal$0();
      return J.get$length$asx(t1 == null ? type$.List_String._as(t1) : t1);
    },
    $signature: 3
  };
  A.SassNumber_SassNumber$withUnits_closure2.prototype = {
    call$0() {
      return this._0_4._readFinal$0() <= 0;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure4.prototype = {
    call$0() {
      return this._0_7._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure3.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 96
  };
  A.SassNumber_SassNumber$withUnits_closure5.prototype = {
    call$0() {
      return J.get$length$asx(this._0_7._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure6.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 26
  };
  A.SassNumber_SassNumber$withUnits_closure7.prototype = {
    call$0() {
      return J.get$length$asx(this._1_1._readFinal$0());
    },
    $signature: 3
  };
  A.SassNumber_SassNumber$withUnits_closure8.prototype = {
    call$0() {
      return J.get$length$asx(this._1_0._1) <= 0;
    },
    $signature: 1
  };
  A.SassNumber__coerceOrConvertValue_compatibilityException.prototype = {
    call$0() {
      var t2, t3, message, t4, type, unit, _this = this,
        t1 = _this.other;
      if (t1 != null) {
        t2 = _this.$this;
        t3 = t2.toString$0(0) + " and";
        message = new A.StringBuffer(t3);
        t4 = _this.otherName;
        if (t4 != null)
          t3 = message._contents = t3 + (" $" + t4 + ":");
        t1 = t3 + (" " + t1.toString$0(0) + " have incompatible units");
        message._contents = t1;
        if (!t2.get$hasUnits() || !_this.otherHasUnits)
          message._contents = t1 + " (one has units and the other doesn't)";
        t1 = message.toString$0(0) + ".";
        t2 = _this.name;
        return new A.SassScriptException(t2 == null ? t1 : "$" + t2 + ": " + t1);
      } else if (!_this.otherHasUnits) {
        t1 = "Expected " + _this.$this.toString$0(0) + " to have no units.";
        t2 = _this.name;
        return new A.SassScriptException(t2 == null ? t1 : "$" + t2 + ": " + t1);
      } else {
        t1 = _this.newNumerators;
        if (t1.length === 1 && _this.newDenominators.length === 0) {
          type = $.$get$_typesByUnit().$index(0, B.JSArray_methods.get$first(t1));
          if (type != null) {
            t1 = _this.$this.toString$0(0);
            t2 = B.JSArray_methods.contains$1(A._setArrayType([97, 101, 105, 111, 117], type$.JSArray_int), type.charCodeAt(0)) ? "an " + type : "a " + type;
            t3 = B.Map_ws7dy.$index(0, type);
            t3.toString;
            t3 = "Expected " + t1 + " to have " + t2 + " unit (" + B.JSArray_methods.join$1(t3, ", ") + ").";
            t2 = _this.name;
            return new A.SassScriptException(t2 == null ? t3 : "$" + t2 + ": " + t3);
          }
        }
        t2 = _this.newDenominators;
        unit = A.pluralize("unit", t1.length + t2.length, null);
        t3 = _this.$this;
        t2 = "Expected " + t3.toString$0(0) + " to have " + unit + " " + t3._unitString$2(t1, t2) + ".";
        t1 = _this.name;
        return new A.SassScriptException(t1 == null ? t2 : "$" + t1 + ": " + t2);
      }
    },
    $signature: 415
  };
  A.SassNumber__coerceOrConvertValue_closure.prototype = {
    call$1(oldNumerator) {
      var factor = A.conversionFactor(this.newNumerator, oldNumerator);
      if (factor == null)
        return false;
      this._box_0.value *= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber__coerceOrConvertValue_closure0.prototype = {
    call$0() {
      return A.throwExpression(this.compatibilityException.call$0());
    },
    $signature: 0
  };
  A.SassNumber__coerceOrConvertValue_closure1.prototype = {
    call$1(oldDenominator) {
      var factor = A.conversionFactor(this.newDenominator, oldDenominator);
      if (factor == null)
        return false;
      this._box_0.value /= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber__coerceOrConvertValue_closure2.prototype = {
    call$0() {
      return A.throwExpression(this.compatibilityException.call$0());
    },
    $signature: 0
  };
  A.SassNumber_plus_closure.prototype = {
    call$2(num1, num2) {
      return num1 + num2;
    },
    $signature: 66
  };
  A.SassNumber_minus_closure.prototype = {
    call$2(num1, num2) {
      return num1 - num2;
    },
    $signature: 66
  };
  A.SassNumber_multiplyUnits_closure.prototype = {
    call$0() {
      return this._0_0._values[0];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure0.prototype = {
    call$0() {
      return this._0_0._values[1];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure1.prototype = {
    call$0() {
      return this._0_0._values[2];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure2.prototype = {
    call$0() {
      return J.get$length$asx(this._0_3._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure3.prototype = {
    call$0() {
      return this._0_0._values[3];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure4.prototype = {
    call$0() {
      return J.get$length$asx(this._0_7._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure5.prototype = {
    call$0() {
      return J.get$length$asx(this._0_1._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure6.prototype = {
    call$0() {
      return J.get$length$asx(this._0_2._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure7.prototype = {
    call$1(denominator) {
      var factor = A.conversionFactor(this.numerator, denominator);
      if (factor == null)
        return false;
      this._box_0.value /= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber_multiplyUnits_closure8.prototype = {
    call$0() {
      return this.newNumerators.push(this.numerator);
    },
    $signature: 0
  };
  A.SassNumber_multiplyUnits_closure9.prototype = {
    call$1(denominator) {
      var factor = A.conversionFactor(this.numerator, denominator);
      if (factor == null)
        return false;
      this._box_0.value /= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber_multiplyUnits_closure10.prototype = {
    call$0() {
      return this.newNumerators.push(this.numerator);
    },
    $signature: 0
  };
  A.SassNumber__areAnyConvertible_closure.prototype = {
    call$1(unit1) {
      var innerMap, t1,
        _0_0 = B.Map_nfuzN.$index(0, unit1);
      $label0$0: {
        if (_0_0 != null) {
          innerMap = _0_0;
          t1 = true;
        } else {
          innerMap = null;
          t1 = false;
        }
        if (t1) {
          t1 = J.any$1$ax(this.units2, innerMap.get$containsKey());
          break $label0$0;
        }
        t1 = J.contains$1$asx(this.units2, unit1);
        break $label0$0;
      }
      return t1;
    },
    $signature: 10
  };
  A.SassNumber__unitString_closure.prototype = {
    call$0() {
      return J.get$length$asx(this._0_0._0) <= 0;
    },
    $signature: 1
  };
  A.SassNumber__unitString_closure0.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 26
  };
  A.SassNumber__unitString_closure1.prototype = {
    call$0() {
      return J.get$length$asx(this._0_5._readFinal$0());
    },
    $signature: 3
  };
  A.SassNumber__unitString_closure2.prototype = {
    call$0() {
      return this._0_6._readFinal$0() <= 0;
    },
    $signature: 1
  };
  A.SassNumber__canonicalizeUnitList_closure.prototype = {
    call$1(unit) {
      var t1,
        type = $.$get$_typesByUnit().$index(0, unit);
      if (type == null)
        t1 = unit;
      else {
        t1 = B.Map_ws7dy.$index(0, type);
        t1.toString;
        t1 = B.JSArray_methods.get$first(t1);
      }
      return t1;
    },
    $signature: 7
  };
  A.SassNumber__canonicalMultiplier_closure.prototype = {
    call$2(multiplier, unit) {
      return multiplier * this.$this.canonicalMultiplierForUnit$1(unit);
    },
    $signature: 220
  };
  A.SassNumber_unitSuggestion_closure.prototype = {
    call$1(unit) {
      return " * 1" + unit;
    },
    $signature: 7
  };
  A.SassNumber_unitSuggestion_closure0.prototype = {
    call$1(unit) {
      return " / 1" + unit;
    },
    $signature: 7
  };
  A.ComplexSassNumber.prototype = {
    get$numeratorUnits(_) {
      return this._numeratorUnits;
    },
    get$denominatorUnits(_) {
      return this._denominatorUnits;
    },
    get$hasUnits() {
      return true;
    },
    get$hasComplexUnits() {
      return true;
    },
    hasUnit$1(unit) {
      return false;
    },
    compatibleWithUnit$1(unit) {
      return false;
    },
    hasPossiblyCompatibleUnits$1(other) {
      throw A.wrapException(A.UnimplementedError$(string$.Comple));
    },
    withValue$1(value) {
      return new A.ComplexSassNumber(this._numeratorUnits, this._denominatorUnits, value, null);
    },
    withSlash$2(numerator, denominator) {
      return new A.ComplexSassNumber(this._numeratorUnits, this._denominatorUnits, this._number$_value, new A._Record_2(numerator, denominator));
    }
  };
  A.SingleUnitSassNumber.prototype = {
    get$numeratorUnits(_) {
      return A.List_List$unmodifiable([this._unit], type$.String);
    },
    get$denominatorUnits(_) {
      return B.List_empty;
    },
    get$hasUnits() {
      return true;
    },
    get$hasComplexUnits() {
      return false;
    },
    withValue$1(value) {
      return new A.SingleUnitSassNumber(this._unit, value, null);
    },
    withSlash$2(numerator, denominator) {
      return new A.SingleUnitSassNumber(this._unit, this._number$_value, new A._Record_2(numerator, denominator));
    },
    hasUnit$1(unit) {
      return unit === this._unit;
    },
    hasCompatibleUnits$1(other) {
      return other instanceof A.SingleUnitSassNumber && A.conversionFactor(this._unit, other._unit) != null;
    },
    hasPossiblyCompatibleUnits$1(other) {
      var t1, knownCompatibilities, otherUnit;
      if (!(other instanceof A.SingleUnitSassNumber))
        return false;
      t1 = $.$get$_knownCompatibilitiesByUnit();
      knownCompatibilities = t1.$index(0, this._unit.toLowerCase());
      if (knownCompatibilities == null)
        return true;
      otherUnit = other._unit.toLowerCase();
      return knownCompatibilities.contains$1(0, otherUnit) || !t1.containsKey$1(otherUnit);
    },
    compatibleWithUnit$1(unit) {
      return A.conversionFactor(this._unit, unit) != null;
    },
    coerceToMatch$1(other) {
      var t1 = other instanceof A.SingleUnitSassNumber ? this._coerceToUnit$1(other._unit) : null;
      return t1 == null ? this.super$SassNumber$coerceToMatch(other, null, null) : t1;
    },
    coerceValueToMatch$3(other, $name, otherName) {
      var t1 = other instanceof A.SingleUnitSassNumber ? this._coerceValueToUnit$1(other._unit) : null;
      return t1 == null ? this.super$SassNumber$coerceValueToMatch(other, $name, otherName) : t1;
    },
    coerceValueToMatch$1(other) {
      return this.coerceValueToMatch$3(other, null, null);
    },
    convertValueToMatch$3(other, $name, otherName) {
      var t1 = other instanceof A.SingleUnitSassNumber ? this._coerceValueToUnit$1(other._unit) : null;
      return t1 == null ? this.super$SassNumber$convertValueToMatch(other, $name, otherName) : t1;
    },
    convertValueToMatch$1(other) {
      return this.convertValueToMatch$3(other, null, null);
    },
    coerce$2(newNumerators, newDenominators) {
      var t1 = newNumerators.length === 1 && newDenominators.length === 0 ? this._coerceToUnit$1(newNumerators[0]) : null;
      return t1 == null ? this.super$SassNumber$coerce(newNumerators, newDenominators, null) : t1;
    },
    coerceValue$3(newNumerators, newDenominators, $name) {
      var t1 = newNumerators.length === 1 && newDenominators.length === 0 ? this._coerceValueToUnit$1(newNumerators[0]) : null;
      return t1 == null ? this.super$SassNumber$coerceValue(newNumerators, newDenominators, $name) : t1;
    },
    coerceValueToUnit$2(unit, $name) {
      var t1 = this._coerceValueToUnit$1(unit);
      return t1 == null ? this.super$SassNumber$coerceValueToUnit(unit, $name) : t1;
    },
    coerceValueToUnit$1(unit) {
      return this.coerceValueToUnit$2(unit, null);
    },
    _coerceToUnit$1(unit) {
      var t1 = this._unit;
      if (t1 === unit)
        return this;
      return A.NullableExtension_andThen(A.conversionFactor(unit, t1), new A.SingleUnitSassNumber__coerceToUnit_closure(this, unit));
    },
    _coerceValueToUnit$1(unit) {
      return A.NullableExtension_andThen(A.conversionFactor(unit, this._unit), new A.SingleUnitSassNumber__coerceValueToUnit_closure(this));
    },
    multiplyUnits$3(value, otherNumerators, otherDenominators) {
      var mutableOtherDenominators, t1 = {};
      t1.value = value;
      t1.newNumerators = otherNumerators;
      mutableOtherDenominators = A._setArrayType(otherDenominators.slice(0), A._arrayInstanceType(otherDenominators));
      A.removeFirstWhere(mutableOtherDenominators, new A.SingleUnitSassNumber_multiplyUnits_closure(t1, this), new A.SingleUnitSassNumber_multiplyUnits_closure0(t1, this));
      return A.SassNumber_SassNumber$withUnits(t1.value, mutableOtherDenominators, t1.newNumerators);
    },
    unaryMinus$0() {
      return new A.SingleUnitSassNumber(this._unit, -this._number$_value, null);
    },
    $eq(_, other) {
      var factor;
      if (other == null)
        return false;
      if (other instanceof A.SingleUnitSassNumber) {
        factor = A.conversionFactor(other._unit, this._unit);
        return factor != null && A.fuzzyEquals(this._number$_value * factor, other._number$_value);
      } else
        return false;
    },
    get$hashCode(_) {
      var _this = this,
        t1 = _this.hashCache;
      return t1 == null ? _this.hashCache = A.fuzzyHashCode(_this._number$_value * _this.canonicalMultiplierForUnit$1(_this._unit)) : t1;
    }
  };
  A.SingleUnitSassNumber__coerceToUnit_closure.prototype = {
    call$1(factor) {
      return new A.SingleUnitSassNumber(this.unit, this.$this._number$_value * factor, null);
    },
    $signature: 420
  };
  A.SingleUnitSassNumber__coerceValueToUnit_closure.prototype = {
    call$1(factor) {
      return this.$this._number$_value * factor;
    },
    $signature: 42
  };
  A.SingleUnitSassNumber_multiplyUnits_closure.prototype = {
    call$1(denominator) {
      var factor = A.conversionFactor(denominator, this.$this._unit);
      if (factor == null)
        return false;
      this._box_0.value *= factor;
      return true;
    },
    $signature: 10
  };
  A.SingleUnitSassNumber_multiplyUnits_closure0.prototype = {
    call$0() {
      var t1 = A._setArrayType([this.$this._unit], type$.JSArray_String),
        t2 = this._box_0;
      B.JSArray_methods.addAll$1(t1, t2.newNumerators);
      t2.newNumerators = t1;
    },
    $signature: 0
  };
  A.UnitlessSassNumber.prototype = {
    get$numeratorUnits(_) {
      return B.List_empty;
    },
    get$denominatorUnits(_) {
      return B.List_empty;
    },
    get$hasUnits() {
      return false;
    },
    get$hasComplexUnits() {
      return false;
    },
    withValue$1(value) {
      return new A.UnitlessSassNumber(value, null);
    },
    withSlash$2(numerator, denominator) {
      return new A.UnitlessSassNumber(this._number$_value, new A._Record_2(numerator, denominator));
    },
    hasUnit$1(unit) {
      return false;
    },
    hasCompatibleUnits$1(other) {
      return other instanceof A.UnitlessSassNumber;
    },
    hasPossiblyCompatibleUnits$1(other) {
      return other instanceof A.UnitlessSassNumber;
    },
    compatibleWithUnit$1(unit) {
      return true;
    },
    coerceToMatch$1(other) {
      return other.withValue$1(this._number$_value);
    },
    coerceValueToMatch$3(other, $name, otherName) {
      return this._number$_value;
    },
    coerceValueToMatch$1(other) {
      return this.coerceValueToMatch$3(other, null, null);
    },
    convertValueToMatch$3(other, $name, otherName) {
      return other.get$hasUnits() ? this.super$SassNumber$convertValueToMatch(other, $name, otherName) : this._number$_value;
    },
    convertValueToMatch$1(other) {
      return this.convertValueToMatch$3(other, null, null);
    },
    coerce$2(newNumerators, newDenominators) {
      return A.SassNumber_SassNumber$withUnits(this._number$_value, newDenominators, newNumerators);
    },
    coerceValue$3(newNumerators, newDenominators, $name) {
      return this._number$_value;
    },
    coerceValueToUnit$2(unit, $name) {
      return this._number$_value;
    },
    coerceValueToUnit$1(unit) {
      return this.coerceValueToUnit$2(unit, null);
    },
    greaterThan$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber) {
        t1 = this._number$_value;
        t2 = other._number$_value;
        return t1 > t2 && !A.fuzzyEquals(t1, t2) ? B.SassBoolean_true : B.SassBoolean_false;
      }
      return this.super$SassNumber$greaterThan(other);
    },
    greaterThanOrEquals$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber) {
        t1 = this._number$_value;
        t2 = other._number$_value;
        return t1 > t2 || A.fuzzyEquals(t1, t2) ? B.SassBoolean_true : B.SassBoolean_false;
      }
      return this.super$SassNumber$greaterThanOrEquals(other);
    },
    lessThan$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber) {
        t1 = this._number$_value;
        t2 = other._number$_value;
        return t1 < t2 && !A.fuzzyEquals(t1, t2) ? B.SassBoolean_true : B.SassBoolean_false;
      }
      return this.super$SassNumber$lessThan(other);
    },
    lessThanOrEquals$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber) {
        t1 = this._number$_value;
        t2 = other._number$_value;
        return t1 < t2 || A.fuzzyEquals(t1, t2) ? B.SassBoolean_true : B.SassBoolean_false;
      }
      return this.super$SassNumber$lessThanOrEquals(other);
    },
    modulo$1(other) {
      if (other instanceof A.SassNumber)
        return other.withValue$1(A.moduloLikeSass(this._number$_value, other._number$_value));
      return this.super$SassNumber$modulo(other);
    },
    plus$1(other) {
      if (other instanceof A.SassNumber)
        return other.withValue$1(this._number$_value + other._number$_value);
      return this.super$SassNumber$plus(other);
    },
    minus$1(other) {
      if (other instanceof A.SassNumber)
        return other.withValue$1(this._number$_value - other._number$_value);
      return this.super$SassNumber$minus(other);
    },
    times$1(other) {
      if (other instanceof A.SassNumber)
        return other.withValue$1(this._number$_value * other._number$_value);
      return this.super$SassNumber$times(other);
    },
    dividedBy$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber) {
        t1 = this._number$_value / other._number$_value;
        if (other.get$hasUnits()) {
          t2 = other.get$denominatorUnits(other);
          t2 = A.SassNumber_SassNumber$withUnits(t1, other.get$numeratorUnits(other), t2);
          t1 = t2;
        } else
          t1 = new A.UnitlessSassNumber(t1, null);
        return t1;
      }
      return this.super$SassNumber$dividedBy(other);
    },
    unaryMinus$0() {
      return new A.UnitlessSassNumber(-this._number$_value, null);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.UnitlessSassNumber && A.fuzzyEquals(this._number$_value, other._number$_value);
    },
    get$hashCode(_) {
      var t1 = this.hashCache;
      return t1 == null ? this.hashCache = A.fuzzyHashCode(this._number$_value) : t1;
    }
  };
  A.SassString.prototype = {
    get$_sassLength() {
      var t1, result, _this = this,
        value = _this.__SassString__sassLength_FI;
      if (value === $) {
        t1 = new A.Runes(_this._string$_text);
        result = t1.get$length(t1);
        _this.__SassString__sassLength_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.__SassString__sassLength_FI = result;
        value = result;
      }
      return value;
    },
    get$isSpecialNumber() {
      var t1, _2_0, _0_0, _1_0;
      if (this._hasQuotes)
        return false;
      t1 = this._string$_text;
      if (t1.length < 6)
        return false;
      _2_0 = t1.charCodeAt(0);
      $label1$1: {
        if (99 === _2_0 || 67 === _2_0) {
          _0_0 = t1.charCodeAt(1);
          $label0$0: {
            if (108 === _0_0 || 76 === _0_0) {
              t1 = (t1.charCodeAt(2) | 32) === 97 && (t1.charCodeAt(3) | 32) === 109 && (t1.charCodeAt(4) | 32) === 112 && t1.charCodeAt(5) === 40;
              break $label0$0;
            }
            if (97 === _0_0 || 65 === _0_0) {
              t1 = (t1.charCodeAt(2) | 32) === 108 && (t1.charCodeAt(3) | 32) === 99 && t1.charCodeAt(4) === 40;
              break $label0$0;
            }
            t1 = false;
            break $label0$0;
          }
          break $label1$1;
        }
        if (118 === _2_0 || 86 === _2_0) {
          t1 = (t1.charCodeAt(1) | 32) === 97 && (t1.charCodeAt(2) | 32) === 114 && t1.charCodeAt(3) === 40;
          break $label1$1;
        }
        if (101 === _2_0 || 69 === _2_0) {
          t1 = (t1.charCodeAt(1) | 32) === 110 && (t1.charCodeAt(2) | 32) === 118 && t1.charCodeAt(3) === 40;
          break $label1$1;
        }
        if (109 === _2_0 || 77 === _2_0) {
          _1_0 = t1.charCodeAt(1);
          $label2$2: {
            if (97 === _1_0 || 65 === _1_0) {
              t1 = (t1.charCodeAt(2) | 32) === 120 && t1.charCodeAt(3) === 40;
              break $label2$2;
            }
            if (105 === _1_0 || 73 === _1_0) {
              t1 = (t1.charCodeAt(2) | 32) === 110 && t1.charCodeAt(3) === 40;
              break $label2$2;
            }
            t1 = false;
            break $label2$2;
          }
          break $label1$1;
        }
        t1 = false;
        break $label1$1;
      }
      return t1;
    },
    get$isVar() {
      if (this._hasQuotes)
        return false;
      var t1 = this._string$_text;
      if (t1.length < 8)
        return false;
      return (t1.charCodeAt(0) | 32) === 118 && (t1.charCodeAt(1) | 32) === 97 && (t1.charCodeAt(2) | 32) === 114 && t1.charCodeAt(3) === 40;
    },
    get$isBlank() {
      return !this._hasQuotes && this._string$_text.length === 0;
    },
    accept$1$1(visitor) {
      var t1 = visitor._quote && this._hasQuotes,
        t2 = this._string$_text;
      if (t1)
        visitor._visitQuotedString$1(t2);
      else
        visitor._visitUnquotedString$1(t2);
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertString$1($name) {
      return this;
    },
    plus$1(other) {
      var t1 = this._string$_text,
        t2 = this._hasQuotes;
      return other instanceof A.SassString ? new A.SassString(t1 + other._string$_text, t2) : new A.SassString(t1 + A.serializeValue(other, false, true), t2);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassString && this._string$_text === other._string$_text;
    },
    get$hashCode(_) {
      var t1 = this._hashCache;
      return t1 == null ? this._hashCache = B.JSString_methods.get$hashCode(this._string$_text) : t1;
    }
  };
  A.AnySelectorVisitor.prototype = {
    visitComplexSelector$1(complex) {
      return B.JSArray_methods.any$1(complex.components, new A.AnySelectorVisitor_visitComplexSelector_closure(this));
    },
    visitCompoundSelector$1(compound) {
      return B.JSArray_methods.any$1(compound.components, new A.AnySelectorVisitor_visitCompoundSelector_closure(this));
    },
    visitPseudoSelector$1(pseudo) {
      var selector = pseudo.selector;
      return selector == null ? false : this.visitSelectorList$1(selector);
    },
    visitSelectorList$1(list) {
      return B.JSArray_methods.any$1(list.components, this.get$visitComplexSelector());
    },
    visitAttributeSelector$1(attribute) {
      return false;
    },
    visitClassSelector$1(klass) {
      return false;
    },
    visitIDSelector$1(id) {
      return false;
    },
    visitParentSelector$1($parent) {
      return false;
    },
    visitPlaceholderSelector$1(placeholder) {
      return false;
    },
    visitTypeSelector$1(type) {
      return false;
    },
    visitUniversalSelector$1(universal) {
      return false;
    }
  };
  A.AnySelectorVisitor_visitComplexSelector_closure.prototype = {
    call$1(component) {
      return this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature: 53
  };
  A.AnySelectorVisitor_visitCompoundSelector_closure.prototype = {
    call$1(simple) {
      return simple.accept$1(this.$this);
    },
    $signature: 16
  };
  A._EvaluateVisitor0.prototype = {
    _EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap0(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t2, metaModule, t3, _i, module, $function, t4, _this = this,
        _s20_ = "$name, $module: null",
        _s9_ = "sass:meta",
        _s7_ = "$module",
        t1 = type$.JSArray_AsyncBuiltInCallable,
        metaFunctions = A._setArrayType([A.BuiltInCallable$function("global-variable-exists", _s20_, new A._EvaluateVisitor_closure12(_this), _s9_), A.BuiltInCallable$function("variable-exists", "$name", new A._EvaluateVisitor_closure13(_this), _s9_), A.BuiltInCallable$function("function-exists", _s20_, new A._EvaluateVisitor_closure14(_this), _s9_), A.BuiltInCallable$function("mixin-exists", _s20_, new A._EvaluateVisitor_closure15(_this), _s9_), A.BuiltInCallable$function("content-exists", "", new A._EvaluateVisitor_closure16(_this), _s9_), A.BuiltInCallable$function("module-variables", _s7_, new A._EvaluateVisitor_closure17(_this), _s9_), A.BuiltInCallable$function("module-functions", _s7_, new A._EvaluateVisitor_closure18(_this), _s9_), A.BuiltInCallable$function("module-mixins", _s7_, new A._EvaluateVisitor_closure19(_this), _s9_), A.BuiltInCallable$function("get-function", "$name, $css: false, $module: null", new A._EvaluateVisitor_closure20(_this), _s9_), A.BuiltInCallable$function("get-mixin", _s20_, new A._EvaluateVisitor_closure21(_this), _s9_), new A.AsyncBuiltInCallable("call", A.ScssParser$("@function call($function, $args...) {", null, _s9_).parseArgumentDeclaration$0(), new A._EvaluateVisitor_closure22(_this), false)], t1),
        metaMixins = A._setArrayType([A.AsyncBuiltInCallable$mixin("load-css", "$url, $with: null", new A._EvaluateVisitor_closure23(_this), _s9_), A.BuiltInCallable$mixin("apply", "$mixin, $args...", new A._EvaluateVisitor_closure24(_this), true, _s9_)], t1);
      t1 = type$.AsyncBuiltInCallable;
      t2 = A.List_List$of($.$get$global(), true, t1);
      B.JSArray_methods.addAll$1(t2, $.$get$local());
      B.JSArray_methods.addAll$1(t2, metaFunctions);
      metaModule = A.BuiltInModule$("meta", t2, metaMixins, null, t1);
      for (t1 = A.List_List$of($.$get$coreModules(), true, type$.BuiltInModule_AsyncCallable), t1.push(metaModule), t2 = t1.length, t3 = _this._async_evaluate$_builtInModules, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        module = t1[_i];
        t3.$indexSet(0, module.url, module);
      }
      t1 = A._setArrayType([], type$.JSArray_AsyncCallable);
      B.JSArray_methods.addAll$1(t1, $.$get$globalFunctions());
      B.JSArray_methods.addAll$1(t1, metaFunctions);
      for (t2 = t1.length, t3 = _this._async_evaluate$_builtInFunctions, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        $function = t1[_i];
        t4 = J.get$name$x($function);
        t3.$indexSet(0, A.stringReplaceAllUnchecked(t4, "_", "-"), $function);
      }
    },
    run$2(_, importer, node) {
      return this.run$body$_EvaluateVisitor(0, importer, node);
    },
    run$body$_EvaluateVisitor(_, importer, node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, $async$exception;
      var $async$run$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              t1 = type$.nullable_Object;
              $async$goto = 7;
              return A._asyncAwait(A.runZoned(new A._EvaluateVisitor_run_closure0($async$self, node, importer), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__evaluationContext, new A._EvaluationContext0($async$self, node)], t1, t1), type$.FutureOr_Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet), $async$run$2);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                A.throwWithTrace(error.withLoadedUrls$1($async$self._async_evaluate$_loadedUrls), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$run$2, $async$completer);
    },
    _async_evaluate$_assertInModule$1$2(value, $name) {
      if (value != null)
        return value;
      throw A.wrapException(A.StateError$("Can't access " + $name + " outside of a module."));
    },
    _async_evaluate$_assertInModule$2(value, $name) {
      return this._async_evaluate$_assertInModule$1$2(value, $name, type$.dynamic);
    },
    _async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
      return this._loadModule$body$_EvaluateVisitor(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors);
    },
    _async_evaluate$_loadModule$5$configuration(url, stackFrame, nodeWithSpan, callback, configuration) {
      return this._async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, configuration, false);
    },
    _async_evaluate$_loadModule$4(url, stackFrame, nodeWithSpan, callback) {
      return this._async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, null, false);
    },
    _loadModule$body$_EvaluateVisitor(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, _0_0, t2, t1;
      var $async$_async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              t1.builtInModule = null;
              _0_0 = $async$self._async_evaluate$_builtInModules.$index(0, url);
              if (_0_0 != null) {
                t1.builtInModule = _0_0;
                t2 = true;
              } else
                t2 = false;
              $async$goto = t2 ? 3 : 4;
              break;
            case 3:
              // then
              if (configuration instanceof A.ExplicitConfiguration) {
                t1 = namesInErrors ? "Built-in module " + url.toString$0(0) + " can't be configured." : "Built-in modules can't be configured.";
                t2 = configuration.nodeWithSpan;
                throw A.wrapException($async$self._async_evaluate$_exception$2(t1, t2.get$span(t2)));
              }
              $async$goto = 5;
              return A._asyncAwait($async$self._addExceptionSpanAsync$1$2(nodeWithSpan, new A._EvaluateVisitor__loadModule_closure1(t1, callback), type$.void), $async$_async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors);
            case 5:
              // returning from await.
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_withStackFrame$1$3(stackFrame, nodeWithSpan, new A._EvaluateVisitor__loadModule_closure2($async$self, url, nodeWithSpan, baseUrl, namesInErrors, configuration, callback), type$.Null), $async$_async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors);
            case 6:
              // returning from await.
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors, $async$completer);
    },
    _async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
      return this._execute$body$_EvaluateVisitor(importer, stylesheet, configuration, namesInErrors, nodeWithSpan);
    },
    _async_evaluate$_execute$2(importer, stylesheet) {
      return this._async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, null, false, null);
    },
    _execute$body$_EvaluateVisitor(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Module_AsyncCallable),
        $async$returnValue, $async$self = this, _0_0, alreadyLoaded, t2, currentConfiguration, t3, message, existingSpan, configurationSpan, environment, css, preModuleComments, extensionStore, module, t1, url;
      var $async$_async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = stylesheet.span;
              url = t1.get$sourceUrl(t1);
              t1 = $async$self._async_evaluate$_modules;
              _0_0 = t1.$index(0, url);
              if (_0_0 != null) {
                alreadyLoaded = _0_0;
                t2 = true;
              } else {
                alreadyLoaded = null;
                t2 = false;
              }
              if (t2) {
                t1 = configuration == null;
                currentConfiguration = t1 ? $async$self._async_evaluate$_configuration : configuration;
                t2 = $async$self._async_evaluate$_moduleConfigurations.$index(0, url);
                t3 = t2.__originalConfiguration;
                t2 = t3 == null ? t2 : t3;
                t3 = currentConfiguration.__originalConfiguration;
                if (t2 !== (t3 == null ? currentConfiguration : t3) && currentConfiguration instanceof A.ExplicitConfiguration) {
                  message = namesInErrors ? $.$get$context().prettyUri$1(url) + string$.x20was_a : string$.This_mw;
                  t2 = $async$self._async_evaluate$_moduleNodes.$index(0, url);
                  existingSpan = t2 == null ? null : t2.get$span(t2);
                  if (t1) {
                    t1 = currentConfiguration.nodeWithSpan;
                    configurationSpan = t1.get$span(t1);
                  } else
                    configurationSpan = null;
                  t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
                  if (existingSpan != null)
                    t1.$indexSet(0, existingSpan, "original load");
                  if (configurationSpan != null)
                    t1.$indexSet(0, configurationSpan, "configuration");
                  throw A.wrapException(t1.get$isEmpty(t1) ? $async$self._async_evaluate$_exception$1(message) : $async$self._async_evaluate$_multiSpanException$3(message, "new load", t1));
                }
                $async$returnValue = alreadyLoaded;
                // goto return
                $async$goto = 1;
                break;
              }
              environment = A.AsyncEnvironment$();
              css = A._Cell$();
              preModuleComments = A._Cell$();
              extensionStore = A.ExtensionStore$();
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_withEnvironment$1$2(environment, new A._EvaluateVisitor__execute_closure0($async$self, importer, stylesheet, extensionStore, configuration, css, preModuleComments), type$.Null), $async$_async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan);
            case 3:
              // returning from await.
              t2 = css._readLocal$0();
              t3 = preModuleComments._readLocal$0();
              module = environment.toModule$3(t2, t3 == null ? B.Map_empty7 : t3, extensionStore);
              if (url != null) {
                t1.$indexSet(0, url, module);
                $async$self._async_evaluate$_moduleConfigurations.$indexSet(0, url, $async$self._async_evaluate$_configuration);
                if (nodeWithSpan != null)
                  $async$self._async_evaluate$_moduleNodes.$indexSet(0, url, nodeWithSpan);
              }
              $async$returnValue = module;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan, $async$completer);
    },
    _async_evaluate$_addOutOfOrderImports$0() {
      var t1, t2, _this = this, _s5_ = "_root",
        _s13_ = "_endOfImports",
        _0_0 = _this._async_evaluate$_outOfOrderImports;
      $label0$0: {
        if (_0_0 == null) {
          t1 = _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_).children;
          break $label0$0;
        }
        t1 = _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_);
        t1 = t1.children;
        t1 = A.List_List$of(A.SubListIterable$(t1, 0, A.checkNotNullable(_this._async_evaluate$_assertInModule$2(_this._async_evaluate$__endOfImports, _s13_), "count", type$.int), t1.$ti._eval$1("ListBase.E")), true, type$.ModifiableCssNode);
        B.JSArray_methods.addAll$1(t1, _0_0);
        t2 = _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_).children;
        B.JSArray_methods.addAll$1(t1, A.SubListIterable$(t2, _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__endOfImports, _s13_), null, t2.$ti._eval$1("ListBase.E")));
        break $label0$0;
      }
      return t1;
    },
    _async_evaluate$_combineCss$2$clone(root, clone) {
      var selectors, _0_0, unsatisfiedExtension, t1, imports, css, sorted, t2;
      if (!B.JSArray_methods.any$1(root.get$upstream(), new A._EvaluateVisitor__combineCss_closure1())) {
        selectors = root.get$extensionStore().get$simpleSelectors();
        _0_0 = A.IterableExtension_get_firstOrNull(root.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__combineCss_closure2(selectors)));
        if (_0_0 != null) {
          unsatisfiedExtension = _0_0;
          t1 = true;
        } else {
          unsatisfiedExtension = null;
          t1 = false;
        }
        if (t1)
          this._async_evaluate$_throwForUnsatisfiedExtension$1(unsatisfiedExtension);
        return root.get$css(root);
      }
      t1 = type$.JSArray_CssNode;
      imports = A._setArrayType([], t1);
      css = A._setArrayType([], t1);
      t1 = type$.Module_AsyncCallable;
      sorted = A.ListQueue$(t1);
      new A._EvaluateVisitor__combineCss_visitModule0(this, A.LinkedHashSet_LinkedHashSet$_empty(t1), clone, css, imports, sorted).call$1(root);
      if (root.get$transitivelyContainsExtensions())
        this._async_evaluate$_extendModules$1(sorted);
      t1 = B.JSArray_methods.$add(imports, css);
      t2 = root.get$css(root);
      return new A.CssStylesheet(new A.UnmodifiableListView(t1, type$.UnmodifiableListView_CssNode), t2.get$span(t2));
    },
    _async_evaluate$_combineCss$1(root) {
      return this._async_evaluate$_combineCss$2$clone(root, false);
    },
    _async_evaluate$_extendModules$1(sortedModules) {
      var t1, t2, t3, originalSelectors, $self, t4, t5, _i, upstream, _0_0, url, t6,
        downstreamExtensionStores = A.LinkedHashMap_LinkedHashMap$_empty(type$.Uri, type$.List_ExtensionStore),
        unsatisfiedExtensions = new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_Extension);
      for (t1 = A._ListQueueIterator$(sortedModules), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1._collection$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        originalSelectors = t3.get$extensionStore().get$simpleSelectors().toSet$0(0);
        unsatisfiedExtensions.addAll$1(0, t3.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__extendModules_closure1(originalSelectors)));
        $self = downstreamExtensionStores.$index(0, t3.get$url(t3));
        t4 = t3.get$extensionStore().get$addExtensions();
        if ($self != null)
          t4.call$1($self);
        t4 = t3.get$extensionStore();
        if (t4.get$isEmpty(t4))
          continue;
        for (t4 = t3.get$upstream(), t5 = t4.length, _i = 0; _i < t4.length; t4.length === t5 || (0, A.throwConcurrentModificationError)(t4), ++_i) {
          upstream = t4[_i];
          _0_0 = upstream.get$url(upstream);
          if (_0_0 != null) {
            url = _0_0;
            t6 = true;
          } else {
            url = null;
            t6 = false;
          }
          if (t6)
            J.add$1$ax(downstreamExtensionStores.putIfAbsent$2(url, new A._EvaluateVisitor__extendModules_closure2()), t3.get$extensionStore());
        }
        unsatisfiedExtensions.removeAll$1(t3.get$extensionStore().extensionsWhereTarget$1(originalSelectors.get$contains(originalSelectors)));
      }
      if (unsatisfiedExtensions._collection$_length !== 0)
        this._async_evaluate$_throwForUnsatisfiedExtension$1(unsatisfiedExtensions.get$first(unsatisfiedExtensions));
    },
    _async_evaluate$_throwForUnsatisfiedExtension$1(extension) {
      throw A.wrapException(A.SassException$(string$.The_ta + extension.target.toString$0(0) + ' !optional" to avoid this error.', extension.span, null));
    },
    _async_evaluate$_indexAfterImports$1(statements) {
      var t1, lastImport, i, _0_0;
      for (t1 = J.getInterceptor$asx(statements), lastImport = -1, i = 0; i < t1.get$length(statements); ++i) {
        $label0$0: {
          _0_0 = t1.$index(statements, i);
          if (_0_0 instanceof A.ModifiableCssImport)
            break $label0$0;
          if (_0_0 instanceof A.ModifiableCssComment)
            continue;
          break;
        }
        lastImport = i;
      }
      return lastImport + 1;
    },
    visitStylesheet$1(node) {
      return this.visitStylesheet$body$_EvaluateVisitor(node);
    },
    visitStylesheet$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, _i;
      var $async$visitStylesheet$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.children, t2 = t1.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t1[_i].accept$1($async$self), $async$visitStylesheet$1);
            case 6:
              // returning from await.
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitStylesheet$1, $async$completer);
    },
    visitAtRootRule$1(node) {
      return this.visitAtRootRule$body$_EvaluateVisitor(node);
    },
    visitAtRootRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, unparsedQuery, t1, _1_0, resolved, query, $parent, included, _2_0, grandparent, t2, root, first, rest, innerCopy, outerCopy, _i, copy, _0_0;
      var $async$visitAtRootRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _0_0 = node.query;
              if (_0_0 != null) {
                unparsedQuery = _0_0;
                t1 = true;
              } else {
                unparsedQuery = null;
                t1 = false;
              }
              $async$goto = t1 ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolationWithMap$2$warnForColor(unparsedQuery, true), $async$visitAtRootRule$1);
            case 6:
              // returning from await.
              _1_0 = $async$result;
              resolved = _1_0._0;
              _1_0._1;
              query = A.AtRootQueryParser$(resolved, $async$self._async_evaluate$_logger, null).parse$0();
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              query = B.AtRootQuery_UsS;
            case 4:
              // join
              $parent = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent");
              included = A._setArrayType([], type$.JSArray_ModifiableCssParentNode);
              for (t1 = type$.CssStylesheet; !t1._is($parent); $parent = grandparent) {
                if (!query.excludes$1($parent))
                  included.push($parent);
                _2_0 = $parent._parent;
                if (_2_0 != null) {
                  grandparent = _2_0;
                  t2 = true;
                } else {
                  grandparent = null;
                  t2 = false;
                }
                if (!t2)
                  throw A.wrapException(A.StateError$(string$.CssNod));
              }
              root = $async$self._async_evaluate$_trimIncluded$1(included);
              $async$goto = root === $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent") ? 7 : 8;
              break;
            case 7:
              // then
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate$_environment.scope$1$2$when(new A._EvaluateVisitor_visitAtRootRule_closure1($async$self, node), node.hasDeclarations, type$.Null), $async$visitAtRootRule$1);
            case 9:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 8:
              // join
              if (included.length >= 1) {
                first = included[0];
                rest = B.JSArray_methods.sublist$1(included, 1);
                t1 = true;
              } else {
                first = null;
                rest = null;
                t1 = false;
              }
              if (t1) {
                innerCopy = first.copyWithoutChildren$0();
                for (t1 = rest.length, outerCopy = innerCopy, _i = 0; _i < rest.length; rest.length === t1 || (0, A.throwConcurrentModificationError)(rest), ++_i, outerCopy = copy) {
                  copy = rest[_i].copyWithoutChildren$0();
                  copy.addChild$1(outerCopy);
                }
                root.addChild$1(outerCopy);
              } else
                innerCopy = root;
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate$_scopeForAtRoot$4(node, innerCopy, query, included).call$1(new A._EvaluateVisitor_visitAtRootRule_closure2($async$self, node)), $async$visitAtRootRule$1);
            case 10:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitAtRootRule$1, $async$completer);
    },
    _async_evaluate$_trimIncluded$1(nodes) {
      var $parent, t1, innermostContiguous, i, t2, _0_0, grandparent, t3, _1_0, root, _this = this, _null = null, _s5_ = "_root",
        _s22_ = " to be an ancestor of ";
      if (nodes.length === 0)
        return _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_);
      $parent = _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__parent, "__parent");
      for (t1 = nodes.length, innermostContiguous = _null, i = 0; i < t1; ++i, $parent = grandparent) {
        for (; t2 = nodes[i], $parent !== t2; innermostContiguous = _null, $parent = grandparent) {
          _0_0 = $parent._parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t3 = true;
          } else {
            grandparent = _null;
            t3 = false;
          }
          if (!t3)
            throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
        }
        if (innermostContiguous == null)
          innermostContiguous = i;
        _1_0 = $parent._parent;
        if (_1_0 != null) {
          grandparent = _1_0;
          t3 = true;
        } else {
          grandparent = _null;
          t3 = false;
        }
        if (!t3)
          throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
      }
      if ($parent !== _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_))
        return _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_);
      innermostContiguous.toString;
      root = nodes[innermostContiguous];
      B.JSArray_methods.removeRange$2(nodes, innermostContiguous, nodes.length);
      return root;
    },
    _async_evaluate$_scopeForAtRoot$4(node, newParent, query, included) {
      var _this = this,
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure5(_this, newParent, node),
        t1 = query._all || query._at_root_query$_rule;
      if (t1 !== query.include)
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure6(_this, scope);
      if (_this._async_evaluate$_mediaQueries != null && query.excludesName$1("media"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure7(_this, scope);
      if (_this._async_evaluate$_inKeyframes && query.excludesName$1("keyframes"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure8(_this, scope);
      return _this._async_evaluate$_inUnknownAtRule && !B.JSArray_methods.any$1(included, new A._EvaluateVisitor__scopeForAtRoot_closure9()) ? new A._EvaluateVisitor__scopeForAtRoot_closure10(_this, scope) : scope;
    },
    visitContentBlock$1(node) {
      return A.throwExpression(A.UnsupportedError$(string$.Evalua));
    },
    visitContentRule$1(node) {
      return this.visitContentRule$body$_EvaluateVisitor(node);
    },
    visitContentRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, $content;
      var $async$visitContentRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $content = $async$self._async_evaluate$_environment._async_environment$_content;
              if ($content == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_runUserDefinedCallable$1$4(node.$arguments, $content, node, new A._EvaluateVisitor_visitContentRule_closure0($async$self, $content), type$.Null), $async$visitContentRule$1);
            case 3:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitContentRule$1, $async$completer);
    },
    visitDebugRule$1(node) {
      return this.visitDebugRule$body$_EvaluateVisitor(node);
    },
    visitDebugRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, value, t1;
      var $async$visitDebugRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(node.expression.accept$1($async$self), $async$visitDebugRule$1);
            case 3:
              // returning from await.
              value = $async$result;
              t1 = value instanceof A.SassString ? value._string$_text : A.serializeValue(value, true, true);
              $async$self._async_evaluate$_logger.debug$2(0, t1, node.span);
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitDebugRule$1, $async$completer);
    },
    visitDeclaration$1(node) {
      return this.visitDeclaration$body$_EvaluateVisitor(node);
    },
    visitDeclaration$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t2, $name, _0_0, declarationName, t3, _1_0, expression, value, t4, t5, _2_0, oldDeclarationName, t1;
      var $async$visitDeclaration$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              if (($async$self._async_evaluate$_atRootExcludingStyleRule ? null : $async$self._async_evaluate$_styleRuleIgnoringAtRoot) == null && !$async$self._async_evaluate$_inUnknownAtRule && !$async$self._async_evaluate$_inKeyframes)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Declarm, node.span));
              if ($async$self._async_evaluate$_declarationName != null && B.JSString_methods.startsWith$1(node.name.get$initialPlain(), "--"))
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Declarw, node.span));
              t2 = node.name;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_interpolationToValue$2$warnForColor(t2, true), $async$visitDeclaration$1);
            case 3:
              // returning from await.
              $name = $async$result;
              _0_0 = $async$self._async_evaluate$_declarationName;
              if (_0_0 != null) {
                declarationName = _0_0;
                t3 = true;
              } else {
                declarationName = null;
                t3 = false;
              }
              if (t3)
                $name = new A.CssValue(A.S(declarationName) + "-" + A.S($name.value), $name.span, type$.CssValue_String);
              _1_0 = node.value;
              if (_1_0 != null) {
                expression = _1_0;
                t3 = true;
              } else {
                expression = null;
                t3 = false;
              }
              $async$goto = t3 ? 4 : 5;
              break;
            case 4:
              // then
              $async$goto = 6;
              return A._asyncAwait(expression.accept$1($async$self), $async$visitDeclaration$1);
            case 6:
              // returning from await.
              value = $async$result;
              if (!value.get$isBlank() || value.get$asList().length === 0) {
                t3 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent");
                t4 = expression.get$span(expression);
                t2 = B.JSString_methods.startsWith$1(t2.get$initialPlain(), "--");
                if ($async$self._async_evaluate$_sourceMap) {
                  t5 = A.NullableExtension_andThen(_1_0, $async$self.get$_async_evaluate$_expressionNode());
                  t5 = t5 == null ? null : J.get$span$z(t5);
                } else
                  t5 = null;
                t3.addChild$1(A.ModifiableCssDeclaration$($name, new A.CssValue(value, t4, type$.CssValue_Value), node.span, t2, t5));
              } else if (J.startsWith$1$s($name.value, "--"))
                throw A.wrapException($async$self._async_evaluate$_exception$2("Custom property values may not be empty.", expression.get$span(expression)));
            case 5:
              // join
              t1.children = null;
              _2_0 = node.children;
              if (_2_0 != null) {
                t1.children = _2_0;
                t2 = true;
              } else
                t2 = false;
              $async$goto = t2 ? 7 : 8;
              break;
            case 7:
              // then
              oldDeclarationName = $async$self._async_evaluate$_declarationName;
              $async$self._async_evaluate$_declarationName = $name.value;
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate$_environment.scope$1$2$when(new A._EvaluateVisitor_visitDeclaration_closure0(t1, $async$self), node.hasDeclarations, type$.Null), $async$visitDeclaration$1);
            case 9:
              // returning from await.
              $async$self._async_evaluate$_declarationName = oldDeclarationName;
            case 8:
              // join
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitDeclaration$1, $async$completer);
    },
    visitEachRule$1(node) {
      return this.visitEachRule$body$_EvaluateVisitor(node);
    },
    visitEachRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t2, _box_0, t1, list, nodeWithSpan, _0_0;
      var $async$visitEachRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              t1 = node.list;
              $async$goto = 3;
              return A._asyncAwait(t1.accept$1($async$self), $async$visitEachRule$1);
            case 3:
              // returning from await.
              list = $async$result;
              nodeWithSpan = $async$self._async_evaluate$_expressionNode$1(t1);
              _0_0 = node.variables;
              $label0$0: {
                _box_0.variable = null;
                if (_0_0.length === 1) {
                  _box_0.variable = _0_0[0];
                  t1 = true;
                } else
                  t1 = false;
                if (t1) {
                  t1 = new A._EvaluateVisitor_visitEachRule_closure2(_box_0, $async$self, nodeWithSpan);
                  break $label0$0;
                }
                t1 = _box_0.variables = null;
                _box_0.variables = _0_0;
                t2 = new A._EvaluateVisitor_visitEachRule_closure3(_box_0, $async$self, nodeWithSpan);
                t1 = t2;
                break $label0$0;
              }
              $async$returnValue = $async$self._async_evaluate$_environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitEachRule_closure4($async$self, list, t1, node), true, type$.nullable_Value);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitEachRule$1, $async$completer);
    },
    _async_evaluate$_setMultipleVariables$3(variables, value, nodeWithSpan) {
      var i,
        list = value.get$asList(),
        t1 = variables.length,
        minLength = Math.min(t1, list.length);
      for (i = 0; i < minLength; ++i)
        this._async_evaluate$_environment.setLocalVariable$3(variables[i], this._async_evaluate$_withoutSlash$2(list[i], nodeWithSpan), nodeWithSpan);
      for (i = minLength; i < t1; ++i)
        this._async_evaluate$_environment.setLocalVariable$3(variables[i], B.C__SassNull, nodeWithSpan);
    },
    visitErrorRule$1(node) {
      return this.visitErrorRule$body$_EvaluateVisitor(node);
    },
    visitErrorRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$self = this, $async$temp1, $async$temp2;
      var $async$visitErrorRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$temp2 = J;
              $async$goto = 2;
              return A._asyncAwait(node.expression.accept$1($async$self), $async$visitErrorRule$1);
            case 2:
              // returning from await.
              throw $async$temp1.wrapException($async$self._async_evaluate$_exception$2($async$temp2.toString$0$($async$result), node.span));
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitErrorRule$1, $async$completer);
    },
    visitExtendRule$1(node) {
      return this.visitExtendRule$body$_EvaluateVisitor(node);
    },
    visitExtendRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, _i, complex, visitor, t6, t7, _0_0, targetText, targetMap, compound, styleRule;
      var $async$visitExtendRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              styleRule = $async$self._async_evaluate$_atRootExcludingStyleRule ? null : $async$self._async_evaluate$_styleRuleIgnoringAtRoot;
              if (styleRule == null || $async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.x40exten, node.span));
              for (t1 = styleRule.originalSelector.components, t2 = t1.length, t3 = node.span, t4 = type$.SourceSpan, t5 = type$.String, _i = 0; _i < t2; ++_i) {
                complex = t1[_i];
                if (!complex.accept$1(B._IsBogusVisitor_true))
                  continue;
                visitor = A._SerializeVisitor$(null, true, null, true, false, null, true);
                complex.accept$1(visitor);
                t6 = B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0));
                t7 = complex.accept$1(B.C__IsUselessVisitor) ? "can't" : "shouldn't";
                $async$self._async_evaluate$_warn$3('The selector "' + t6 + '" is invalid CSS and ' + t7 + string$.x20be_an, new A.MultiSpan(A.SpanExtensions_trimRight(complex.span), "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t3, "@extend rule"], t4, t5), t4, t5)), B.Deprecation_vrR);
              }
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolationWithMap$2$warnForColor(node.selector, true), $async$visitExtendRule$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              targetText = _0_0._0;
              targetMap = _0_0._1;
              for (t1 = A.SelectorList_SelectorList$parse(A.trimAscii(targetText, true), false, true, targetMap, $async$self._async_evaluate$_logger).components, t2 = t1.length, t3 = styleRule._style_rule$_selector._box$_inner, _i = 0; _i < t2; ++_i) {
                complex = t1[_i];
                compound = complex.get$singleCompound();
                if (compound == null)
                  throw A.wrapException(A.SassFormatException$("complex selectors may not be extended.", complex.span, null));
                t4 = compound.components;
                t5 = t4.length === 1 ? B.JSArray_methods.get$first(t4) : null;
                if (t5 == null)
                  throw A.wrapException(A.SassFormatException$(string$.compou + B.JSArray_methods.join$1(t4, ", ") + string$.x60_inst, compound.span, null));
                $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__extensionStore, "_extensionStore").addExtension$4(t3.value, t5, node, $async$self._async_evaluate$_mediaQueries);
              }
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitExtendRule$1, $async$completer);
    },
    visitAtRule$1(node) {
      return this.visitAtRule$body$_EvaluateVisitor(node);
    },
    visitAtRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, $name, value, children, wasInKeyframes, wasInUnknownAtRule;
      var $async$visitAtRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.At_rul, node.span));
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_interpolationToValue$1(node.name), $async$visitAtRule$1);
            case 3:
              // returning from await.
              $name = $async$result;
              $async$goto = 4;
              return A._asyncAwait(A.NullableExtension_andThen(node.value, new A._EvaluateVisitor_visitAtRule_closure2($async$self)), $async$visitAtRule$1);
            case 4:
              // returning from await.
              value = $async$result;
              children = node.children;
              if (children == null) {
                $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").addChild$1(A.ModifiableCssAtRule$($name, node.span, true, value));
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              wasInKeyframes = $async$self._async_evaluate$_inKeyframes;
              wasInUnknownAtRule = $async$self._async_evaluate$_inUnknownAtRule;
              if (A.unvendor($name.value) === "keyframes")
                $async$self._async_evaluate$_inKeyframes = true;
              else
                $async$self._async_evaluate$_inUnknownAtRule = true;
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$($name, node.span, false, value), new A._EvaluateVisitor_visitAtRule_closure3($async$self, $name, children), node.hasDeclarations, new A._EvaluateVisitor_visitAtRule_closure4(), type$.ModifiableCssAtRule, type$.Null), $async$visitAtRule$1);
            case 5:
              // returning from await.
              $async$self._async_evaluate$_inUnknownAtRule = wasInUnknownAtRule;
              $async$self._async_evaluate$_inKeyframes = wasInKeyframes;
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitAtRule$1, $async$completer);
    },
    visitForRule$1(node) {
      return this.visitForRule$body$_EvaluateVisitor(node);
    },
    visitForRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, t3, fromNumber, t4, toNumber, from, to, direction;
      var $async$visitForRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              t2 = node.from;
              t3 = type$.SassNumber;
              $async$goto = 3;
              return A._asyncAwait($async$self._addExceptionSpanAsync$1$2(t2, new A._EvaluateVisitor_visitForRule_closure4($async$self, node), t3), $async$visitForRule$1);
            case 3:
              // returning from await.
              fromNumber = $async$result;
              t4 = node.to;
              $async$goto = 4;
              return A._asyncAwait($async$self._addExceptionSpanAsync$1$2(t4, new A._EvaluateVisitor_visitForRule_closure5($async$self, node), t3), $async$visitForRule$1);
            case 4:
              // returning from await.
              toNumber = $async$result;
              from = $async$self._async_evaluate$_addExceptionSpan$2(t2, new A._EvaluateVisitor_visitForRule_closure6(fromNumber));
              to = t1.to = $async$self._async_evaluate$_addExceptionSpan$2(t4, new A._EvaluateVisitor_visitForRule_closure7(toNumber, fromNumber));
              direction = from > to ? -1 : 1;
              if (from === (!node.isExclusive ? t1.to = to + direction : to)) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$returnValue = $async$self._async_evaluate$_environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitForRule_closure8(t1, $async$self, node, from, direction, fromNumber), true, type$.nullable_Value);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitForRule$1, $async$completer);
    },
    visitForwardRule$1(node) {
      return this.visitForwardRule$body$_EvaluateVisitor(node);
    },
    visitForwardRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, newConfiguration, t4, _i, variable, $name, oldConfiguration, adjustedConfiguration, t1, t2, t3;
      var $async$visitForwardRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldConfiguration = $async$self._async_evaluate$_configuration;
              adjustedConfiguration = oldConfiguration.throughForward$1(node);
              t1 = node.configuration;
              t2 = t1.length;
              t3 = node.url;
              $async$goto = t2 !== 0 ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_addForwardConfiguration$2(adjustedConfiguration, node), $async$visitForwardRule$1);
            case 6:
              // returning from await.
              newConfiguration = $async$result;
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate$_loadModule$5$configuration(t3, "@forward", node, new A._EvaluateVisitor_visitForwardRule_closure1($async$self, node), newConfiguration), $async$visitForwardRule$1);
            case 7:
              // returning from await.
              t3 = type$.String;
              t4 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
              for (_i = 0; _i < t2; ++_i) {
                variable = t1[_i];
                if (!variable.isGuarded)
                  t4.add$1(0, variable.name);
              }
              $async$self._async_evaluate$_removeUsedConfiguration$3$except(adjustedConfiguration, newConfiguration, t4);
              t3 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
              for (_i = 0; _i < t2; ++_i)
                t3.add$1(0, t1[_i].name);
              for (t1 = newConfiguration._configuration$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t4 = t2.length, _i = 0; _i < t2.length; t2.length === t4 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
                $name = t2[_i];
                if (!t3.contains$1(0, $name))
                  if (!t1.get$isEmpty(t1))
                    t1.remove$1(0, $name);
              }
              $async$self._async_evaluate$_assertConfigurationIsEmpty$1(newConfiguration);
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$self._async_evaluate$_configuration = adjustedConfiguration;
              $async$goto = 8;
              return A._asyncAwait($async$self._async_evaluate$_loadModule$4(t3, "@forward", node, new A._EvaluateVisitor_visitForwardRule_closure2($async$self, node)), $async$visitForwardRule$1);
            case 8:
              // returning from await.
              $async$self._async_evaluate$_configuration = oldConfiguration;
            case 4:
              // join
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitForwardRule$1, $async$completer);
    },
    _async_evaluate$_addForwardConfiguration$2(configuration, node) {
      return this._addForwardConfiguration$body$_EvaluateVisitor(configuration, node);
    },
    _addForwardConfiguration$body$_EvaluateVisitor(configuration, node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Configuration),
        $async$returnValue, $async$self = this, t2, t3, _i, variable, t4, oldValue, t5, variableNodeWithSpan, t1, newValues, $async$temp1, $async$temp2, $async$temp3;
      var $async$_async_evaluate$_addForwardConfiguration$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = configuration._configuration$_values;
              newValues = A.LinkedHashMap_LinkedHashMap$of(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue), type$.String, type$.ConfiguredValue);
              t2 = node.configuration, t3 = t2.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              variable = t2[_i];
              if (variable.isGuarded) {
                t4 = variable.name;
                oldValue = t1.get$isEmpty(t1) ? null : t1.remove$1(0, t4);
                if (oldValue != null)
                  t5 = true;
                else {
                  oldValue = null;
                  t5 = false;
                }
                if (t5 && !oldValue.value.$eq(0, B.C__SassNull)) {
                  newValues.$indexSet(0, t4, oldValue);
                  // goto for update
                  $async$goto = 4;
                  break;
                }
              }
              t4 = variable.expression;
              variableNodeWithSpan = $async$self._async_evaluate$_expressionNode$1(t4);
              $async$temp1 = newValues;
              $async$temp2 = variable.name;
              $async$temp3 = A;
              $async$goto = 6;
              return A._asyncAwait(t4.accept$1($async$self), $async$_async_evaluate$_addForwardConfiguration$2);
            case 6:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, new $async$temp3.ConfiguredValue($async$self._async_evaluate$_withoutSlash$2($async$result, variableNodeWithSpan), variable.span, variableNodeWithSpan));
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              if (configuration instanceof A.ExplicitConfiguration || t1.get$isEmpty(t1)) {
                $async$returnValue = new A.ExplicitConfiguration(node, newValues, null);
                // goto return
                $async$goto = 1;
                break;
              } else {
                $async$returnValue = new A.Configuration(newValues, null);
                // goto return
                $async$goto = 1;
                break;
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_addForwardConfiguration$2, $async$completer);
    },
    _async_evaluate$_registerCommentsForModule$1(module) {
      var _this = this, _s5_ = "_root",
        t1 = _this._async_evaluate$__root;
      if (t1 == null)
        return;
      t1 = _this._async_evaluate$_assertInModule$2(t1, _s5_).children;
      if (t1.get$length(t1) === 0 || !module.get$transitivelyContainsCss())
        return;
      t1 = _this._async_evaluate$_preModuleComments;
      if (t1 == null)
        t1 = _this._async_evaluate$_preModuleComments = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_AsyncCallable, type$.List_CssComment);
      J.addAll$1$ax(t1.putIfAbsent$2(module, new A._EvaluateVisitor__registerCommentsForModule_closure0()), new A.UnmodifiableListView(J.cast$1$0$ax(_this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_).children._collection$_source, type$.CssComment), type$.UnmodifiableListView_CssComment));
      _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__root, _s5_).clearChildren$0();
      _this._async_evaluate$__endOfImports = 0;
    },
    _async_evaluate$_removeUsedConfiguration$3$except(upstream, downstream, except) {
      var t1, t2, t3, t4, _i, $name;
      for (t1 = upstream._configuration$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t3 = t2.length, t4 = downstream._configuration$_values, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        $name = t2[_i];
        if (except.contains$1(0, $name))
          continue;
        if (!t4.containsKey$1($name))
          if (!t1.get$isEmpty(t1))
            t1.remove$1(0, $name);
      }
    },
    _async_evaluate$_assertConfigurationIsEmpty$2$nameInError(configuration, nameInError) {
      var t1, _0_0, $name, value;
      if (!(configuration instanceof A.ExplicitConfiguration))
        return;
      t1 = configuration._configuration$_values;
      if (t1.get$isEmpty(t1))
        return;
      t1 = A.MapExtensions_get_pairs(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue), type$.String, type$.ConfiguredValue);
      _0_0 = t1.get$first(t1);
      $name = _0_0._0;
      value = _0_0._1;
      t1 = nameInError ? "$" + $name + string$.x20was_n : string$.This_v;
      throw A.wrapException(this._async_evaluate$_exception$2(t1, value.configurationSpan));
    },
    _async_evaluate$_assertConfigurationIsEmpty$1(configuration) {
      return this._async_evaluate$_assertConfigurationIsEmpty$2$nameInError(configuration, false);
    },
    visitFunctionRule$1(node) {
      return this.visitFunctionRule$body$_EvaluateVisitor(node);
    },
    visitFunctionRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, index, t5;
      var $async$visitFunctionRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate$_environment;
              t2 = t1.closure$0();
              t3 = $async$self._async_evaluate$_inDependency;
              t4 = t1._async_environment$_functions;
              index = t4.length - 1;
              t5 = node.name;
              t1._async_environment$_functionIndices.$indexSet(0, t5, index);
              J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable(node, t2, t3, type$.UserDefinedCallable_AsyncEnvironment));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitFunctionRule$1, $async$completer);
    },
    visitIfRule$1(node) {
      return this.visitIfRule$body$_EvaluateVisitor(node);
    },
    visitIfRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, _i, clauseToCheck, clause;
      var $async$visitIfRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              clause = node.lastClause;
              t1 = node.clauses, t2 = t1.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              clauseToCheck = t1[_i];
              $async$goto = 6;
              return A._asyncAwait(clauseToCheck.expression.accept$1($async$self), $async$visitIfRule$1);
            case 6:
              // returning from await.
              if ($async$result.get$isTruthy()) {
                clause = clauseToCheck;
                // goto after for
                $async$goto = 5;
                break;
              }
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$goto = 7;
              return A._asyncAwait(A.NullableExtension_andThen(clause, new A._EvaluateVisitor_visitIfRule_closure0($async$self)), $async$visitIfRule$1);
            case 7:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitIfRule$1, $async$completer);
    },
    visitImportRule$1(node) {
      return this.visitImportRule$body$_EvaluateVisitor(node);
    },
    visitImportRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, t3, _i, $import;
      var $async$visitImportRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.imports, t2 = t1.length, t3 = type$.StaticImport, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $import = t1[_i];
              $async$goto = $import instanceof A.DynamicImport ? 6 : 8;
              break;
            case 6:
              // then
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate$_visitDynamicImport$1($import), $async$visitImportRule$1);
            case 9:
              // returning from await.
              // goto join
              $async$goto = 7;
              break;
            case 8:
              // else
              $async$goto = 10;
              return A._asyncAwait($async$self._visitStaticImport$1(t3._as($import)), $async$visitImportRule$1);
            case 10:
              // returning from await.
            case 7:
              // join
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitImportRule$1, $async$completer);
    },
    _async_evaluate$_visitDynamicImport$1($import) {
      return this._async_evaluate$_withStackFrame$1$3("@import", $import, new A._EvaluateVisitor__visitDynamicImport_closure0(this, $import), type$.void);
    },
    _async_evaluate$_loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, forImport) {
      return this._loadStylesheet$body$_EvaluateVisitor(url, span, baseUrl, forImport);
    },
    _async_evaluate$_loadStylesheet$3$baseUrl(url, span, baseUrl) {
      return this._async_evaluate$_loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, false);
    },
    _async_evaluate$_loadStylesheet$3$forImport(url, span, forImport) {
      return this._async_evaluate$_loadStylesheet$4$baseUrl$forImport(url, span, null, forImport);
    },
    _loadStylesheet$body$_EvaluateVisitor(url, span, baseUrl, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, importCache, _0_0, importer, canonicalUrl, originalUrl, _1_0, isDependency, stylesheet, _2_0, result, _3_0, error, stackTrace, error0, stackTrace0, message, t1, t2, t3, t4, exception, message0, $async$exception;
      var $async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              baseUrl = baseUrl;
              $async$handler = 4;
              $async$self._async_evaluate$_importSpan = span;
              importCache = null;
              _0_0 = $async$self._async_evaluate$_importCache;
              if (_0_0 != null) {
                importCache = _0_0;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 7 : 9;
              break;
            case 7:
              // then
              if (baseUrl == null) {
                t1 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__stylesheet, "_stylesheet").span;
                baseUrl = t1.get$sourceUrl(t1);
              }
              importer = null;
              canonicalUrl = null;
              originalUrl = null;
              $async$goto = 10;
              return A._asyncAwait(J.canonicalize$4$baseImporter$baseUrl$forImport$x(importCache, A.Uri_parse(url), $async$self._async_evaluate$_importer, baseUrl, forImport), $async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport);
            case 10:
              // returning from await.
              _1_0 = $async$result;
              if (type$.Record_3_nullable_Object_and_nullable_Object_and_nullable_Object_originalUrl._is(_1_0)) {
                importer = _1_0._0;
                canonicalUrl = _1_0._1;
                originalUrl = _1_0._2;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 11 : 12;
              break;
            case 11:
              // then
              $async$self._async_evaluate$_loadedUrls.add$1(0, canonicalUrl);
              isDependency = $async$self._async_evaluate$_inDependency || !J.$eq$(importer, $async$self._async_evaluate$_importer);
              stylesheet = null;
              t1 = importCache;
              t2 = importer;
              t3 = canonicalUrl;
              t4 = originalUrl;
              $async$goto = 13;
              return A._asyncAwait(t1.importCanonical$4$originalUrl$quiet(t2, t3, t4, $async$self._async_evaluate$_quietDeps && isDependency), $async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport);
            case 13:
              // returning from await.
              _2_0 = $async$result;
              if (_2_0 != null) {
                stylesheet = _2_0;
                t1 = true;
              } else
                t1 = false;
              if (t1) {
                t1 = stylesheet;
                t2 = importer;
                $async$returnValue = new A._Record_3_importer_isDependency(t1, t2, isDependency);
                $async$next = [1];
                // goto finally
                $async$goto = 5;
                break;
              }
            case 12:
              // join
              // goto join
              $async$goto = 8;
              break;
            case 9:
              // else
              result = null;
              t1 = baseUrl;
              if (t1 == null) {
                t1 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__stylesheet, "_stylesheet").span;
                t1 = t1.get$sourceUrl(t1);
              }
              $async$goto = 14;
              return A._asyncAwait($async$self._async_evaluate$_importLikeNode$3(url, t1, forImport), $async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport);
            case 14:
              // returning from await.
              _3_0 = $async$result;
              if (_3_0 != null) {
                result = _3_0;
                t1 = true;
              } else
                t1 = false;
              if (t1) {
                t1 = result._0.span;
                t2 = $async$self._async_evaluate$_loadedUrls;
                A.NullableExtension_andThen(t1.get$sourceUrl(t1), t2.get$add(t2));
                t2 = result;
                $async$returnValue = t2;
                $async$next = [1];
                // goto finally
                $async$goto = 5;
                break;
              }
            case 8:
              // join
              if (B.JSString_methods.startsWith$1(url, "package:") && true)
                throw A.wrapException(string$.x22packa);
              else
                throw A.wrapException("Can't find stylesheet to import.");
              $async$next.push(6);
              // goto finally
              $async$goto = 5;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException)
                throw $async$exception;
              else if (t1 instanceof A.ArgumentError) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                A.throwWithTrace($async$self._async_evaluate$_exception$1(J.toString$0$(error)), error, stackTrace);
              } else {
                error0 = t1;
                stackTrace0 = A.getTraceFromException($async$exception);
                message = null;
                try {
                  message = A._asString(J.get$message$x(error0));
                } catch (exception) {
                  message0 = J.toString$0$(error0);
                  message = message0;
                }
                A.throwWithTrace($async$self._async_evaluate$_exception$1(message), error0, stackTrace0);
              }
              $async$next.push(6);
              // goto finally
              $async$goto = 5;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 5:
              // finally
              $async$handler = 2;
              $async$self._async_evaluate$_importSpan = null;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_loadStylesheet$4$baseUrl$forImport, $async$completer);
    },
    _async_evaluate$_importLikeNode$3(originalUrl, previous, forImport) {
      return this._importLikeNode$body$_EvaluateVisitor(originalUrl, previous, forImport);
    },
    _importLikeNode$body$_EvaluateVisitor(originalUrl, previous, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency),
        $async$returnValue, $async$self = this, result, isDependency, url, t1, t2;
      var $async$_async_evaluate$_importLikeNode$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              result = $async$self._async_evaluate$_nodeImporter.loadRelative$3(originalUrl, previous, forImport);
              isDependency = $async$self._async_evaluate$_inDependency;
              url = result._1;
              t1 = J.startsWith$1$s(url, "file") ? A.Syntax_forPath(url) : B.Syntax_SCSS_scss;
              t2 = $async$self._async_evaluate$_quietDeps && isDependency ? $.$get$Logger_quiet() : $async$self._async_evaluate$_logger;
              $async$returnValue = new A._Record_3_importer_isDependency(A.Stylesheet_Stylesheet$parse(result._0, t1, t2, url), null, isDependency);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_importLikeNode$3, $async$completer);
    },
    _visitStaticImport$1($import) {
      return this._visitStaticImport$body$_EvaluateVisitor($import);
    },
    _visitStaticImport$body$_EvaluateVisitor($import) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, node, $async$temp1, $async$temp2;
      var $async$_visitStaticImport$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate$_interpolationToValue$1($import.url), $async$_visitStaticImport$1);
            case 2:
              // returning from await.
              $async$temp2 = $async$result;
              $async$goto = 3;
              return A._asyncAwait(A.NullableExtension_andThen($import.modifiers, $async$self.get$_async_evaluate$_interpolationToValue()), $async$_visitStaticImport$1);
            case 3:
              // returning from await.
              node = new $async$temp1.ModifiableCssImport($async$temp2, $async$result, $import.span);
              if ($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent") !== $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root"))
                $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").addChild$1(node);
              else if ($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root").children._collection$_source)) {
                $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root").addChild$1(node);
                $async$self._async_evaluate$__endOfImports = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") + 1;
              } else {
                t1 = $async$self._async_evaluate$_outOfOrderImports;
                (t1 == null ? $async$self._async_evaluate$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport) : t1).push(node);
              }
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_visitStaticImport$1, $async$completer);
    },
    _async_evaluate$_applyMixin$5(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent) {
      return this._applyMixin$body$_EvaluateVisitor(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent);
    },
    _applyMixin$body$_EvaluateVisitor(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, _1_8, t1, _0_0;
      var $async$_async_evaluate$_applyMixin$5 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _1_8 = A._InitializedCell$(new A._EvaluateVisitor__applyMixin_closure2(mixin));
              if (mixin == null)
                throw A.wrapException($async$self._async_evaluate$_exception$2("Undefined mixin.", nodeWithSpan.get$span(nodeWithSpan)));
              t1 = type$.AsyncBuiltInCallable._is(mixin);
              $async$goto = t1 && !mixin.get$acceptsContent() && contentCallable != null ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate$_evaluateArguments$1($arguments), $async$_async_evaluate$_applyMixin$5);
            case 5:
              // returning from await.
              t1 = $async$result._values;
              _0_0 = mixin.callbackFor$2(J.get$length$asx(t1[2]), new A.MapKeySet(t1[0], type$.MapKeySet_String));
              throw A.wrapException(A.MultiSpanSassRuntimeException$("Mixin doesn't accept a content block.", nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([_0_0._0.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), $async$self._async_evaluate$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
            case 4:
              // join
              $async$goto = t1 ? 6 : 7;
              break;
            case 6:
              // then
              $async$goto = 8;
              return A._asyncAwait($async$self._async_evaluate$_environment.withContent$2(contentCallable, new A._EvaluateVisitor__applyMixin_closure3($async$self, $arguments, mixin, nodeWithSpanWithoutContent)), $async$_async_evaluate$_applyMixin$5);
            case 8:
              // returning from await.
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 7:
              // join
              t1 = type$.UserDefinedCallable_AsyncEnvironment._is(mixin);
              if (t1 && _1_8._readFinal$0() instanceof A.MixinRule && !_1_8._readFinal$0().get$hasContent() && contentCallable != null)
                throw A.wrapException(A.MultiSpanSassRuntimeException$("Mixin doesn't accept a content block.", nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([mixin.declaration.$arguments.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), $async$self._async_evaluate$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
              $async$goto = t1 ? 9 : 10;
              break;
            case 9:
              // then
              $async$goto = 11;
              return A._asyncAwait($async$self._async_evaluate$_runUserDefinedCallable$1$4($arguments, mixin, nodeWithSpanWithoutContent, new A._EvaluateVisitor__applyMixin_closure4($async$self, contentCallable, mixin, nodeWithSpanWithoutContent), type$.Null), $async$_async_evaluate$_applyMixin$5);
            case 11:
              // returning from await.
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 10:
              // join
              throw A.wrapException(A.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
            case 2:
              // break $label0$0
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_applyMixin$5, $async$completer);
    },
    visitIncludeRule$1(node) {
      return this.visitIncludeRule$body$_EvaluateVisitor(node);
    },
    visitIncludeRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this;
      var $async$visitIncludeRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_applyMixin$5($async$self._async_evaluate$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitIncludeRule_closure2($async$self, node)), A.NullableExtension_andThen(node.content, new A._EvaluateVisitor_visitIncludeRule_closure3($async$self)), node.$arguments, node, new A._FakeAstNode(new A._EvaluateVisitor_visitIncludeRule_closure4(node))), $async$visitIncludeRule$1);
            case 3:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitIncludeRule$1, $async$completer);
    },
    visitMixinRule$1(node) {
      return this.visitMixinRule$body$_EvaluateVisitor(node);
    },
    visitMixinRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, index, t5;
      var $async$visitMixinRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate$_environment;
              t2 = t1.closure$0();
              t3 = $async$self._async_evaluate$_inDependency;
              t4 = t1._async_environment$_mixins;
              index = t4.length - 1;
              t5 = node.name;
              t1._async_environment$_mixinIndices.$indexSet(0, t5, index);
              J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable(node, t2, t3, type$.UserDefinedCallable_AsyncEnvironment));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitMixinRule$1, $async$completer);
    },
    visitLoudComment$1(node) {
      return this.visitLoudComment$body$_EvaluateVisitor(node);
    },
    visitLoudComment$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, $async$temp1, $async$temp2;
      var $async$visitLoudComment$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_inFunction) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              if ($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent") === $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root") && $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root").children._collection$_source))
                $async$self._async_evaluate$__endOfImports = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") + 1;
              t1 = node.text;
              $async$temp1 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent");
              $async$temp2 = A;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolation$1(t1), $async$visitLoudComment$1);
            case 3:
              // returning from await.
              $async$temp1.addChild$1(new $async$temp2.ModifiableCssComment($async$result, t1.span));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitLoudComment$1, $async$completer);
    },
    visitMediaRule$1(node) {
      return this.visitMediaRule$body$_EvaluateVisitor(node);
    },
    visitMediaRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, queries, mergedQueries, t1, mergedSources, t2, t3;
      var $async$visitMediaRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Media_, node.span));
              $async$goto = 3;
              return A._asyncAwait($async$self._visitMediaQueries$1(node.query), $async$visitMediaRule$1);
            case 3:
              // returning from await.
              queries = $async$result;
              mergedQueries = A.NullableExtension_andThen($async$self._async_evaluate$_mediaQueries, new A._EvaluateVisitor_visitMediaRule_closure2($async$self, queries));
              t1 = mergedQueries == null;
              if (!t1 && J.get$isEmpty$asx(mergedQueries)) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              if (t1)
                mergedSources = B.Set_empty1;
              else {
                t2 = $async$self._async_evaluate$_mediaQuerySources;
                t2.toString;
                t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery);
                t3 = $async$self._async_evaluate$_mediaQueries;
                t3.toString;
                t2.addAll$1(0, t3);
                t2.addAll$1(0, queries);
                mergedSources = t2;
              }
              t1 = t1 ? queries : mergedQueries;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$(t1, node.span), new A._EvaluateVisitor_visitMediaRule_closure3($async$self, mergedQueries, queries, mergedSources, node), node.hasDeclarations, new A._EvaluateVisitor_visitMediaRule_closure4(mergedSources), type$.ModifiableCssMediaRule, type$.Null), $async$visitMediaRule$1);
            case 4:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitMediaRule$1, $async$completer);
    },
    _visitMediaQueries$1(interpolation) {
      return this._visitMediaQueries$body$_EvaluateVisitor(interpolation);
    },
    _visitMediaQueries$body$_EvaluateVisitor(interpolation) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.List_CssMediaQuery),
        $async$returnValue, $async$self = this, _0_0, resolved, map;
      var $async$_visitMediaQueries$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolationWithMap$2$warnForColor(interpolation, true), $async$_visitMediaQueries$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              resolved = _0_0._0;
              map = _0_0._1;
              $async$returnValue = A.CssMediaQuery_parseList(resolved, map, $async$self._async_evaluate$_logger);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_visitMediaQueries$1, $async$completer);
    },
    _async_evaluate$_mergeMediaQueries$2(queries1, queries2) {
      var t1, t2, t3, t4, _0_0, result, t5,
        queries = A._setArrayType([], type$.JSArray_CssMediaQuery);
      for (t1 = J.get$iterator$ax(queries1), t2 = J.getInterceptor$ax(queries2); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        for (t4 = t2.get$iterator(queries2); t4.moveNext$0();) {
          _0_0 = t3.merge$1(t4.get$current(t4));
          if (B._SingletonCssMediaQueryMergeResult_0 === _0_0)
            continue;
          if (B._SingletonCssMediaQueryMergeResult_1 === _0_0)
            return null;
          if (_0_0 instanceof A.MediaQuerySuccessfulMergeResult) {
            result = _0_0;
            t5 = true;
          } else {
            result = null;
            t5 = false;
          }
          if (t5)
            queries.push(result.query);
        }
      }
      return queries;
    },
    visitReturnRule$1(node) {
      return this.visitReturnRule$body$_EvaluateVisitor(node);
    },
    visitReturnRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, t1;
      var $async$visitReturnRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.expression;
              $async$goto = 3;
              return A._asyncAwait(t1.accept$1($async$self), $async$visitReturnRule$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate$_withoutSlash$2($async$result, t1);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitReturnRule$1, $async$completer);
    },
    visitSilentComment$1(node) {
      return this.visitSilentComment$body$_EvaluateVisitor(node);
    },
    visitSilentComment$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue;
      var $async$visitSilentComment$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSilentComment$1, $async$completer);
    },
    visitStyleRule$1(node) {
      return this.visitStyleRule$body$_EvaluateVisitor(node);
    },
    visitStyleRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, _0_0, selectorText, selectorMap, t2, parsedSelector, rule, oldAtRootExcludingStyleRule, t3, t4, t5, _i, complex, visitor, t6, t7, t8, t9;
      var $async$visitStyleRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Style_, node.span));
              t1 = node.selector;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolationWithMap$2$warnForColor(t1, true), $async$visitStyleRule$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              selectorText = _0_0._0;
              selectorMap = _0_0._1;
              $async$goto = $async$self._async_evaluate$_inKeyframes ? 4 : 5;
              break;
            case 4:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$(new A.CssValue(A.List_List$unmodifiable(A.KeyframeSelectorParser$(selectorText, selectorMap, $async$self._async_evaluate$_logger).parse$0(), type$.String), t1.span, type$.CssValue_List_String), node.span), new A._EvaluateVisitor_visitStyleRule_closure4($async$self, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure5(), type$.ModifiableCssKeyframeBlock, type$.Null), $async$visitStyleRule$1);
            case 6:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 5:
              // join
              t1 = A.SelectorList_SelectorList$parse(selectorText, !$async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__stylesheet, "_stylesheet").plainCss, !$async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__stylesheet, "_stylesheet").plainCss, selectorMap, $async$self._async_evaluate$_logger);
              t2 = $async$self._async_evaluate$_styleRuleIgnoringAtRoot;
              t2 = t2 == null ? null : t2.originalSelector;
              parsedSelector = t1.resolveParentSelectors$2$implicitParent(t2, !$async$self._async_evaluate$_atRootExcludingStyleRule);
              rule = A.ModifiableCssStyleRule$($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__extensionStore, "_extensionStore").addSelector$2(parsedSelector, $async$self._async_evaluate$_mediaQueries), node.span, parsedSelector);
              oldAtRootExcludingStyleRule = $async$self._async_evaluate$_atRootExcludingStyleRule;
              $async$self._async_evaluate$_atRootExcludingStyleRule = false;
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitStyleRule_closure6($async$self, rule, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure7(), type$.ModifiableCssStyleRule, type$.Null), $async$visitStyleRule$1);
            case 7:
              // returning from await.
              $async$self._async_evaluate$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
              if (!rule.accept$1(B._IsInvisibleVisitor_false_false))
                for (t1 = parsedSelector.components, t2 = t1.length, t3 = type$.SourceSpan, t4 = type$.String, t5 = rule.children, _i = 0; _i < t2; ++_i) {
                  complex = t1[_i];
                  if (!complex.accept$1(B._IsBogusVisitor_true))
                    continue;
                  if (complex.accept$1(B.C__IsUselessVisitor)) {
                    visitor = A._SerializeVisitor$(null, true, null, true, false, null, true);
                    complex.accept$1(visitor);
                    $async$self._async_evaluate$_warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0)) + string$.x22x20is_ix20, A.SpanExtensions_trimRight(complex.span), B.Deprecation_vrR);
                  } else if (complex.leadingCombinators.length !== 0) {
                    visitor = A._SerializeVisitor$(null, true, null, true, false, null, true);
                    complex.accept$1(visitor);
                    $async$self._async_evaluate$_warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0)) + string$.x22x20is_ix0a, A.SpanExtensions_trimRight(complex.span), B.Deprecation_vrR);
                  } else {
                    visitor = A._SerializeVisitor$(null, true, null, true, false, null, true);
                    complex.accept$1(visitor);
                    t6 = B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0));
                    t7 = complex.accept$1(B._IsBogusVisitor_false) ? string$.x20It_wi : "";
                    t8 = A.SpanExtensions_trimRight(complex.span);
                    if (t5.get$length(t5) === 0)
                      A.throwExpression(A.IterableElementError_noElement());
                    t9 = J.get$span$z(t5.$index(0, 0));
                    $async$self._async_evaluate$_warn$3('The selector "' + t6 + string$.x22x20is_o + t7 + string$.x0aThis_, new A.MultiSpan(t8, "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t9, "this is not a style rule" + (t5.every$1(t5, new A._EvaluateVisitor_visitStyleRule_closure8()) ? "\n(try converting to a //-style comment)" : "")], t3, t4), t3, t4)), B.Deprecation_vrR);
                  }
                }
              if (($async$self._async_evaluate$_atRootExcludingStyleRule ? null : $async$self._async_evaluate$_styleRuleIgnoringAtRoot) == null) {
                t1 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").children;
                t1 = !t1.get$isEmpty(t1);
              } else
                t1 = false;
              if (t1) {
                t1 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").children;
                t1.get$last(t1).isGroupEnd = true;
              }
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitStyleRule$1, $async$completer);
    },
    visitSupportsRule$1(node) {
      return this.visitSupportsRule$body$_EvaluateVisitor(node);
    },
    visitSupportsRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, $async$temp1, $async$temp2;
      var $async$visitSupportsRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Suppor, node.span));
              t1 = node.condition;
              $async$temp1 = A;
              $async$temp2 = A;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(t1), $async$visitSupportsRule$1);
            case 4:
              // returning from await.
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through($async$temp1.ModifiableCssSupportsRule$(new $async$temp2.CssValue($async$result, t1.get$span(t1), type$.CssValue_String), node.span), new A._EvaluateVisitor_visitSupportsRule_closure1($async$self, node), node.hasDeclarations, new A._EvaluateVisitor_visitSupportsRule_closure2(), type$.ModifiableCssSupportsRule, type$.Null), $async$visitSupportsRule$1);
            case 3:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSupportsRule$1, $async$completer);
    },
    _async_evaluate$_visitSupportsCondition$1(condition) {
      return this._visitSupportsCondition$body$_EvaluateVisitor(condition);
    },
    _visitSupportsCondition$body$_EvaluateVisitor(condition) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, operation, t1, t2, negation, interpolation, $function, anything, _box_0, $async$temp1, $async$temp2;
      var $async$_async_evaluate$_visitSupportsCondition$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              if (condition instanceof A.SupportsOperation) {
                operation = condition;
                t1 = true;
              } else {
                operation = null;
                t1 = false;
              }
              $async$goto = t1 ? 4 : 5;
              break;
            case 4:
              // then
              t1 = operation.left;
              t2 = operation.operator;
              $async$temp1 = A;
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_parenthesize$2(t1, t2), $async$_async_evaluate$_visitSupportsCondition$1);
            case 6:
              // returning from await.
              $async$temp1 = $async$temp1.S($async$result) + " " + t2 + " ";
              $async$temp2 = A;
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate$_parenthesize$2(operation.right, t2), $async$_async_evaluate$_visitSupportsCondition$1);
            case 7:
              // returning from await.
              t2 = $async$temp1 + $async$temp2.S($async$result);
              t1 = t2;
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 5:
              // join
              if (condition instanceof A.SupportsNegation) {
                negation = condition;
                t1 = true;
              } else {
                negation = null;
                t1 = false;
              }
              $async$goto = t1 ? 8 : 9;
              break;
            case 8:
              // then
              $async$temp1 = A;
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate$_parenthesize$1(negation.condition), $async$_async_evaluate$_visitSupportsCondition$1);
            case 10:
              // returning from await.
              t1 = "not " + $async$temp1.S($async$result);
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 9:
              // join
              if (condition instanceof A.SupportsInterpolation) {
                interpolation = condition;
                t1 = true;
              } else {
                interpolation = null;
                t1 = false;
              }
              $async$goto = t1 ? 11 : 12;
              break;
            case 11:
              // then
              $async$goto = 13;
              return A._asyncAwait($async$self._evaluateToCss$2$quote(interpolation.expression, false), $async$_async_evaluate$_visitSupportsCondition$1);
            case 13:
              // returning from await.
              t1 = $async$result;
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 12:
              // join
              _box_0.declaration = null;
              if (condition instanceof A.SupportsDeclaration) {
                _box_0.declaration = condition;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 14 : 15;
              break;
            case 14:
              // then
              $async$goto = 16;
              return A._asyncAwait($async$self._async_evaluate$_withSupportsDeclaration$1$1(new A._EvaluateVisitor__visitSupportsCondition_closure0(_box_0, $async$self), type$.String), $async$_async_evaluate$_visitSupportsCondition$1);
            case 16:
              // returning from await.
              t1 = $async$result;
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 15:
              // join
              if (condition instanceof A.SupportsFunction) {
                $function = condition;
                t1 = true;
              } else {
                $function = null;
                t1 = false;
              }
              $async$goto = t1 ? 17 : 18;
              break;
            case 17:
              // then
              $async$temp1 = A;
              $async$goto = 19;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolation$1($function.name), $async$_async_evaluate$_visitSupportsCondition$1);
            case 19:
              // returning from await.
              $async$temp1 = $async$temp1.S($async$result) + "(";
              $async$temp2 = A;
              $async$goto = 20;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolation$1($function.$arguments), $async$_async_evaluate$_visitSupportsCondition$1);
            case 20:
              // returning from await.
              t1 = $async$temp1 + $async$temp2.S($async$result) + ")";
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 18:
              // join
              if (condition instanceof A.SupportsAnything) {
                anything = condition;
                t1 = true;
              } else {
                anything = null;
                t1 = false;
              }
              $async$goto = t1 ? 21 : 22;
              break;
            case 21:
              // then
              $async$temp1 = A;
              $async$goto = 23;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolation$1(anything.contents), $async$_async_evaluate$_visitSupportsCondition$1);
            case 23:
              // returning from await.
              t1 = "(" + $async$temp1.S($async$result) + ")";
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 22:
              // join
              t1 = A.throwExpression(A.ArgumentError$("Unknown supports condition type " + A.getRuntimeTypeOfDartObject(condition).toString$0(0) + ".", null));
            case 3:
              // break $label0$0
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_visitSupportsCondition$1, $async$completer);
    },
    _async_evaluate$_withSupportsDeclaration$1$1(callback, $T) {
      return this._withSupportsDeclaration$body$_EvaluateVisitor(callback, $T, $T);
    },
    _withSupportsDeclaration$body$_EvaluateVisitor(callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, t1, oldInSupportsDeclaration;
      var $async$_async_evaluate$_withSupportsDeclaration$1$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldInSupportsDeclaration = $async$self._async_evaluate$_inSupportsDeclaration;
              $async$self._async_evaluate$_inSupportsDeclaration = true;
              $async$handler = 3;
              $async$goto = 6;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate$_withSupportsDeclaration$1$1);
            case 6:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              $async$next = [1];
              // goto finally
              $async$goto = 4;
              break;
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 4:
              // finally
              $async$handler = 2;
              $async$self._async_evaluate$_inSupportsDeclaration = oldInSupportsDeclaration;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_withSupportsDeclaration$1$1, $async$completer);
    },
    _async_evaluate$_parenthesize$2(condition, operator) {
      return this._parenthesize$body$_EvaluateVisitor(condition, operator);
    },
    _async_evaluate$_parenthesize$1(condition) {
      return this._async_evaluate$_parenthesize$2(condition, null);
    },
    _parenthesize$body$_EvaluateVisitor(condition, operator) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, t1, $async$temp1;
      var $async$_async_evaluate$_parenthesize$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (!(condition instanceof A.SupportsNegation))
                if (condition instanceof A.SupportsOperation)
                  t1 = operator == null || operator !== condition.operator;
                else
                  t1 = false;
              else
                t1 = true;
              $async$goto = t1 ? 3 : 4;
              break;
            case 3:
              // then
              $async$temp1 = A;
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(condition), $async$_async_evaluate$_parenthesize$2);
            case 5:
              // returning from await.
              $async$returnValue = "(" + $async$temp1.S($async$result) + ")";
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(condition), $async$_async_evaluate$_parenthesize$2);
            case 6:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_parenthesize$2, $async$completer);
    },
    visitVariableDeclaration$1(node) {
      return this.visitVariableDeclaration$body$_EvaluateVisitor(node);
    },
    visitVariableDeclaration$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t2, t3, value, t1, $async$temp1, $async$temp2, $async$temp3;
      var $async$visitVariableDeclaration$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              if (node.isGuarded) {
                if (node.namespace == null && $async$self._async_evaluate$_environment._async_environment$_variables.length === 1) {
                  t1.override = null;
                  t2 = $async$self._async_evaluate$_configuration._configuration$_values;
                  t2 = t2.get$isEmpty(t2) ? null : t2.remove$1(0, node.name);
                  if (t2 != null) {
                    t1.override = t2;
                    t3 = t2;
                    t2 = true;
                  } else {
                    t2 = false;
                    t3 = null;
                  }
                  if (t2 && !t3.value.$eq(0, B.C__SassNull)) {
                    $async$self._async_evaluate$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure2(t1, $async$self, node));
                    $async$returnValue = null;
                    // goto return
                    $async$goto = 1;
                    break;
                  }
                }
                value = $async$self._async_evaluate$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure3($async$self, node));
                if (value != null && !value.$eq(0, B.C__SassNull)) {
                  $async$returnValue = null;
                  // goto return
                  $async$goto = 1;
                  break;
                }
              }
              if (node.isGlobal && !$async$self._async_evaluate$_environment.globalVariableExists$1(node.name)) {
                t1 = $async$self._async_evaluate$_environment._async_environment$_variables.length === 1 ? string$.As_of_S : string$.As_of_R + A.declarationName(node.span) + ": null` at the stylesheet root.";
                $async$self._async_evaluate$_warn$3(t1, node.span, B.Deprecation_hzy);
              }
              t1 = node.expression;
              $async$temp1 = node;
              $async$temp2 = A;
              $async$temp3 = node;
              $async$goto = 3;
              return A._asyncAwait(t1.accept$1($async$self), $async$visitVariableDeclaration$1);
            case 3:
              // returning from await.
              $async$self._async_evaluate$_addExceptionSpan$2($async$temp1, new $async$temp2._EvaluateVisitor_visitVariableDeclaration_closure4($async$self, $async$temp3, $async$self._async_evaluate$_withoutSlash$2($async$result, t1)));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitVariableDeclaration$1, $async$completer);
    },
    visitUseRule$1(node) {
      return this.visitUseRule$body$_EvaluateVisitor(node);
    },
    visitUseRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, values, _i, variable, t3, variableNodeWithSpan, configuration, t1, t2, $async$temp1, $async$temp2, $async$temp3;
      var $async$visitUseRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.configuration;
              t2 = t1.length;
              $async$goto = t2 !== 0 ? 3 : 5;
              break;
            case 3:
              // then
              values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue);
              _i = 0;
            case 6:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 8;
                break;
              }
              variable = t1[_i];
              t3 = variable.expression;
              variableNodeWithSpan = $async$self._async_evaluate$_expressionNode$1(t3);
              $async$temp1 = values;
              $async$temp2 = variable.name;
              $async$temp3 = A;
              $async$goto = 9;
              return A._asyncAwait(t3.accept$1($async$self), $async$visitUseRule$1);
            case 9:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, new $async$temp3.ConfiguredValue($async$self._async_evaluate$_withoutSlash$2($async$result, variableNodeWithSpan), variable.span, variableNodeWithSpan));
            case 7:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 6;
              break;
            case 8:
              // after for
              configuration = new A.ExplicitConfiguration(node, values, null);
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              configuration = B.Configuration_Map_empty_null;
            case 4:
              // join
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate$_loadModule$5$configuration(node.url, "@use", node, new A._EvaluateVisitor_visitUseRule_closure0($async$self, node), configuration), $async$visitUseRule$1);
            case 10:
              // returning from await.
              $async$self._async_evaluate$_assertConfigurationIsEmpty$1(configuration);
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitUseRule$1, $async$completer);
    },
    visitWarnRule$1(node) {
      return this.visitWarnRule$body$_EvaluateVisitor(node);
    },
    visitWarnRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, value, t1;
      var $async$visitWarnRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._addExceptionSpanAsync$1$2(node, new A._EvaluateVisitor_visitWarnRule_closure0($async$self, node), type$.Value), $async$visitWarnRule$1);
            case 3:
              // returning from await.
              value = $async$result;
              t1 = value instanceof A.SassString ? value._string$_text : $async$self._async_evaluate$_serialize$2(value, node.expression);
              $async$self._async_evaluate$_logger.warn$2$trace(0, t1, $async$self._async_evaluate$_stackTrace$1(node.span));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitWarnRule$1, $async$completer);
    },
    visitWhileRule$1(node) {
      return this._async_evaluate$_environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitWhileRule_closure0(this, node), true, node.hasDeclarations, type$.nullable_Value);
    },
    visitBinaryOperationExpression$1(node) {
      var t1, _this = this;
      if (_this._async_evaluate$_assertInModule$2(_this._async_evaluate$__stylesheet, "_stylesheet").plainCss) {
        t1 = node.operator;
        t1 = t1 !== B.BinaryOperator_2jN && t1 !== B.BinaryOperator_t8B;
      } else
        t1 = false;
      if (t1)
        throw A.wrapException(_this._async_evaluate$_exception$2("Operators aren't allowed in plain CSS.", node.get$operatorSpan()));
      return _this._addExceptionSpanAsync$1$2(node, new A._EvaluateVisitor_visitBinaryOperationExpression_closure0(_this, node), type$.Value);
    },
    _async_evaluate$_slash$3(left, right, node) {
      var t1, _null = null,
        result = left.dividedBy$1(right),
        _1_0 = new A._Record_2(left, right),
        _1_1 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure1(_1_0)),
        _1_2 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure2(_1_0));
      if (_1_1._readFinal$0() instanceof A.SassNumber) {
        left = _1_1._readFinal$0();
        if (_1_2._readFinal$0() instanceof A.SassNumber) {
          right = _1_2._readFinal$0();
          t1 = node.allowsSlash && this._async_evaluate$_operandAllowsSlash$1(node.left) && this._async_evaluate$_operandAllowsSlash$1(node.right);
        } else {
          right = _null;
          t1 = false;
        }
      } else {
        right = _null;
        left = right;
        t1 = false;
      }
      if (t1)
        return type$.SassNumber._as(result).withSlash$2(left, right);
      if (_1_1._readFinal$0() instanceof A.SassNumber && _1_2._readFinal$0() instanceof A.SassNumber) {
        this._async_evaluate$_warn$3(string$.Using__o + A.S(new A._EvaluateVisitor__slash_recommendation0().call$1(node)) + " or " + A.expressionToCalc(node).toString$0(0) + string$.x0a_Morex20, node.get$span(node), B.Deprecation_xHK);
        return result;
      }
      return result;
    },
    _async_evaluate$_operandAllowsSlash$1(node) {
      var t1, t2;
      if (node instanceof A.FunctionExpression)
        if (node.namespace == null) {
          t1 = node.originalName;
          if (B.Set_WfnXb.contains$1(0, A.stringReplaceAllUnchecked(t1, "_", "-").toLowerCase())) {
            t2 = this._async_evaluate$_environment;
            t1 = t2.getFunction$1(A.stringReplaceAllUnchecked(t1, "_", "-")) == null;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = true;
      return t1;
    },
    visitValueExpression$1(node) {
      return this.visitValueExpression$body$_EvaluateVisitor(node);
    },
    visitValueExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue;
      var $async$visitValueExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = node.value;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitValueExpression$1, $async$completer);
    },
    visitVariableExpression$1(node) {
      return this.visitVariableExpression$body$_EvaluateVisitor(node);
    },
    visitVariableExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, result;
      var $async$visitVariableExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              result = $async$self._async_evaluate$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableExpression_closure0($async$self, node));
              if (result != null) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              throw A.wrapException($async$self._async_evaluate$_exception$2("Undefined variable.", node.span));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitVariableExpression$1, $async$completer);
    },
    visitUnaryOperationExpression$1(node) {
      return this.visitUnaryOperationExpression$body$_EvaluateVisitor(node);
    },
    visitUnaryOperationExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, $async$temp1, $async$temp2, $async$temp3;
      var $async$visitUnaryOperationExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = node;
              $async$temp2 = A;
              $async$temp3 = node;
              $async$goto = 3;
              return A._asyncAwait(node.operand.accept$1($async$self), $async$visitUnaryOperationExpression$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate$_addExceptionSpan$2($async$temp1, new $async$temp2._EvaluateVisitor_visitUnaryOperationExpression_closure0($async$temp3, $async$result));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitUnaryOperationExpression$1, $async$completer);
    },
    visitBooleanExpression$1(node) {
      return this.visitBooleanExpression$body$_EvaluateVisitor(node);
    },
    visitBooleanExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassBoolean),
        $async$returnValue;
      var $async$visitBooleanExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = node.value ? B.SassBoolean_true : B.SassBoolean_false;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitBooleanExpression$1, $async$completer);
    },
    visitIfExpression$1(node) {
      return this.visitIfExpression$body$_EvaluateVisitor(node);
    },
    visitIfExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, condition, t1, ifTrue, ifFalse, result, _0_0, positional, named;
      var $async$visitIfExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_evaluateMacroArguments$1(node), $async$visitIfExpression$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              positional = _0_0._0;
              named = _0_0._1;
              $async$self._async_evaluate$_verifyArguments$4(J.get$length$asx(positional), named, $.$get$IfExpression_declaration(), node);
              condition = A.ListExtensions_elementAtOrNull(positional, 0);
              if (condition == null) {
                t1 = named.$index(0, "condition");
                t1.toString;
                condition = t1;
              }
              ifTrue = A.ListExtensions_elementAtOrNull(positional, 1);
              if (ifTrue == null) {
                t1 = named.$index(0, "if-true");
                t1.toString;
                ifTrue = t1;
              }
              ifFalse = A.ListExtensions_elementAtOrNull(positional, 2);
              if (ifFalse == null) {
                t1 = named.$index(0, "if-false");
                t1.toString;
                ifFalse = t1;
              }
              $async$goto = 4;
              return A._asyncAwait(condition.accept$1($async$self), $async$visitIfExpression$1);
            case 4:
              // returning from await.
              result = $async$result.get$isTruthy() ? ifTrue : ifFalse;
              $async$goto = 5;
              return A._asyncAwait(result.accept$1($async$self), $async$visitIfExpression$1);
            case 5:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate$_withoutSlash$2($async$result, $async$self._async_evaluate$_expressionNode$1(result));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitIfExpression$1, $async$completer);
    },
    visitNullExpression$1(node) {
      return this.visitNullExpression$body$_EvaluateVisitor(node);
    },
    visitNullExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue;
      var $async$visitNullExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = B.C__SassNull;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitNullExpression$1, $async$completer);
    },
    visitNumberExpression$1(node) {
      return this.visitNumberExpression$body$_EvaluateVisitor(node);
    },
    visitNumberExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassNumber),
        $async$returnValue;
      var $async$visitNumberExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = A.SassNumber_SassNumber(node.value, node.unit);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitNumberExpression$1, $async$completer);
    },
    visitParenthesizedExpression$1(node) {
      var _this = this;
      return _this._async_evaluate$_assertInModule$2(_this._async_evaluate$__stylesheet, "_stylesheet").plainCss ? A.throwExpression(_this._async_evaluate$_exception$2("Parentheses aren't allowed in plain CSS.", node.span)) : node.expression.accept$1(_this);
    },
    visitColorExpression$1(node) {
      return this.visitColorExpression$body$_EvaluateVisitor(node);
    },
    visitColorExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassColor),
        $async$returnValue;
      var $async$visitColorExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = node.value;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitColorExpression$1, $async$completer);
    },
    visitListExpression$1(node) {
      return this.visitListExpression$body$_EvaluateVisitor(node);
    },
    visitListExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassList),
        $async$returnValue, $async$self = this, $async$temp1;
      var $async$visitListExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A.mapAsync(node.contents, new A._EvaluateVisitor_visitListExpression_closure0($async$self), type$.Expression, type$.Value), $async$visitListExpression$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$temp1.SassList$($async$result, node.separator, node.hasBrackets);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitListExpression$1, $async$completer);
    },
    visitMapExpression$1(node) {
      return this.visitMapExpression$body$_EvaluateVisitor(node);
    },
    visitMapExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassMap),
        $async$returnValue, $async$self = this, t2, t3, _i, t4, key, value, keyValue, valueValue, oldValueSpan, t1, map, keyNodes;
      var $async$visitMapExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.Value;
              map = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
              keyNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode);
              t2 = node.pairs, t3 = t2.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              t4 = t2[_i];
              key = t4._0;
              value = t4._1;
              $async$goto = 6;
              return A._asyncAwait(key.accept$1($async$self), $async$visitMapExpression$1);
            case 6:
              // returning from await.
              keyValue = $async$result;
              $async$goto = 7;
              return A._asyncAwait(value.accept$1($async$self), $async$visitMapExpression$1);
            case 7:
              // returning from await.
              valueValue = $async$result;
              if (map.containsKey$1(keyValue)) {
                t1 = keyNodes.$index(0, keyValue);
                oldValueSpan = t1 == null ? null : t1.get$span(t1);
                t1 = key.get$span(key);
                t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
                if (oldValueSpan != null)
                  t2.$indexSet(0, oldValueSpan, "first key");
                throw A.wrapException(A.MultiSpanSassRuntimeException$("Duplicate key.", t1, "second key", t2, $async$self._async_evaluate$_stackTrace$1(key.get$span(key)), null));
              }
              map.$indexSet(0, keyValue, valueValue);
              keyNodes.$indexSet(0, keyValue, key);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = new A.SassMap(A.ConstantMap_ConstantMap$from(map, t1, t1));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitMapExpression$1, $async$completer);
    },
    visitFunctionExpression$1(node) {
      return this.visitFunctionExpression$body$_EvaluateVisitor(node);
    },
    visitFunctionExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, t2, _0_0, t3, t4, oldInFunction, result, t1, $function;
      var $async$visitFunctionExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              $function = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__stylesheet, "_stylesheet").plainCss ? null : $async$self._async_evaluate$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure2($async$self, node));
              t1.$function = $function;
              $async$goto = $function == null ? 3 : 4;
              break;
            case 3:
              // then
              if (node.namespace != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2("Undefined function.", node.span));
              t2 = node.originalName;
              _0_0 = A.stringReplaceAllUnchecked(t2, "_", "-").toLowerCase();
              if ("min" === _0_0 || "max" === _0_0 || "round" === _0_0 || "abs" === _0_0) {
                t3 = node.$arguments;
                t4 = t3.named;
                t3 = t4.get$isEmpty(t4) && t3.rest == null && B.JSArray_methods.every$1(t3.positional, new A._EvaluateVisitor_visitFunctionExpression_closure3());
              } else
                t3 = false;
              $async$goto = t3 ? 5 : 6;
              break;
            case 5:
              // then
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate$_visitCalculation$2$inLegacySassFunction(node, true), $async$visitFunctionExpression$1);
            case 7:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 6:
              // join
              $async$goto = "calc" === _0_0 || "clamp" === _0_0 || "hypot" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "sqrt" === _0_0 || "exp" === _0_0 || "sign" === _0_0 || "mod" === _0_0 || "rem" === _0_0 || "atan2" === _0_0 || "pow" === _0_0 || "log" === _0_0 ? 8 : 9;
              break;
            case 8:
              // then
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate$_visitCalculation$1(node), $async$visitFunctionExpression$1);
            case 10:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 9:
              // join
              if ($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__stylesheet, "_stylesheet").plainCss)
                $function = null;
              else {
                t3 = $async$self._async_evaluate$_builtInFunctions.$index(0, A.stringReplaceAllUnchecked(t2, "_", "-"));
                $function = t3;
              }
              t1.$function = $function == null ? new A.PlainCssCallable(t2) : $function;
            case 4:
              // join
              oldInFunction = $async$self._async_evaluate$_inFunction;
              $async$self._async_evaluate$_inFunction = true;
              $async$goto = 11;
              return A._asyncAwait($async$self._async_evaluate$_addErrorSpan$1$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure4(t1, $async$self, node), type$.Value), $async$visitFunctionExpression$1);
            case 11:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$_inFunction = oldInFunction;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitFunctionExpression$1, $async$completer);
    },
    _async_evaluate$_visitCalculation$2$inLegacySassFunction(node, inLegacySassFunction) {
      return this._visitCalculation$body$_EvaluateVisitor(node, inLegacySassFunction);
    },
    _async_evaluate$_visitCalculation$1(node) {
      return this._async_evaluate$_visitCalculation$2$inLegacySassFunction(node, false);
    },
    _visitCalculation$body$_EvaluateVisitor(node, inLegacySassFunction) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$next = [], $async$self = this, $arguments, oldCallableNode, t1, _0_0, error, stackTrace, t4, _i, exception, t2, t3, $async$temp1;
      var $async$_async_evaluate$_visitCalculation$2$inLegacySassFunction = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t2 = node.$arguments;
              t3 = t2.named;
              if (t3.get$isNotEmpty(t3))
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Keywor, node.span));
              else if (t2.rest != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Rest_a, node.span));
              $async$self._async_evaluate$_checkCalculationArguments$1(node);
              t3 = A._setArrayType([], type$.JSArray_Object);
              t2 = t2.positional, t4 = t2.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t4)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$temp1 = t3;
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction), $async$_async_evaluate$_visitCalculation$2$inLegacySassFunction);
            case 6:
              // returning from await.
              $async$temp1.push($async$result);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $arguments = t3;
              if ($async$self._async_evaluate$_inSupportsDeclaration) {
                $async$returnValue = new A.SassCalculation(A.stringReplaceAllUnchecked(node.originalName, "_", "-"), A.List_List$unmodifiable($arguments, type$.Object));
                // goto return
                $async$goto = 1;
                break;
              }
              oldCallableNode = $async$self._async_evaluate$_callableNode;
              $async$self._async_evaluate$_callableNode = node;
              try {
                t1 = null;
                _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
                $label0$0: {
                  if ("calc" === _0_0) {
                    t1 = A.SassCalculation_calc(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("sqrt" === _0_0) {
                    t1 = A.SassCalculation__singleArgument("sqrt", J.$index$asx($arguments, 0), A.number0__sqrt$closure(), true);
                    break $label0$0;
                  }
                  if ("sin" === _0_0) {
                    t1 = A.SassCalculation__singleArgument("sin", J.$index$asx($arguments, 0), A.number0__sin$closure(), false);
                    break $label0$0;
                  }
                  if ("cos" === _0_0) {
                    t1 = A.SassCalculation__singleArgument("cos", J.$index$asx($arguments, 0), A.number0__cos$closure(), false);
                    break $label0$0;
                  }
                  if ("tan" === _0_0) {
                    t1 = A.SassCalculation__singleArgument("tan", J.$index$asx($arguments, 0), A.number0__tan$closure(), false);
                    break $label0$0;
                  }
                  if ("asin" === _0_0) {
                    t1 = A.SassCalculation__singleArgument("asin", J.$index$asx($arguments, 0), A.number0__asin$closure(), true);
                    break $label0$0;
                  }
                  if ("acos" === _0_0) {
                    t1 = A.SassCalculation__singleArgument("acos", J.$index$asx($arguments, 0), A.number0__acos$closure(), true);
                    break $label0$0;
                  }
                  if ("atan" === _0_0) {
                    t1 = A.SassCalculation__singleArgument("atan", J.$index$asx($arguments, 0), A.number0__atan$closure(), true);
                    break $label0$0;
                  }
                  if ("abs" === _0_0) {
                    t1 = A.SassCalculation_abs(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("exp" === _0_0) {
                    t1 = A.SassCalculation_exp(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("sign" === _0_0) {
                    t1 = A.SassCalculation_sign(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("min" === _0_0) {
                    t1 = A.SassCalculation_min($arguments);
                    break $label0$0;
                  }
                  if ("max" === _0_0) {
                    t1 = A.SassCalculation_max($arguments);
                    break $label0$0;
                  }
                  if ("hypot" === _0_0) {
                    t1 = A.SassCalculation_hypot($arguments);
                    break $label0$0;
                  }
                  if ("pow" === _0_0) {
                    t1 = A.SassCalculation_pow(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("atan2" === _0_0) {
                    t1 = A.SassCalculation_atan2(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("log" === _0_0) {
                    t1 = A.SassCalculation_log(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("mod" === _0_0) {
                    t1 = A.SassCalculation_mod(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("rem" === _0_0) {
                    t1 = A.SassCalculation_rem(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("round" === _0_0) {
                    t1 = A.SassCalculation_round(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
                    break $label0$0;
                  }
                  if ("clamp" === _0_0) {
                    t1 = A.SassCalculation_clamp(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
                    break $label0$0;
                  }
                  t3 = A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".');
                  t1 = A.throwExpression(t3);
                }
                t1 = t1;
                $async$returnValue = t1;
                // goto return
                $async$goto = 1;
                break;
              } catch (exception) {
                t1 = A.unwrapException(exception);
                if (t1 instanceof A.SassScriptException) {
                  error = t1;
                  stackTrace = A.getTraceFromException(exception);
                  if (B.JSString_methods.contains$1(error.message, "compatible"))
                    $async$self._async_evaluate$_verifyCompatibleNumbers$2($arguments, t2);
                  A.throwWithTrace($async$self._async_evaluate$_exception$2(error.message, node.span), error, stackTrace);
                } else
                  throw exception;
              } finally {
                $async$self._async_evaluate$_callableNode = oldCallableNode;
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_visitCalculation$2$inLegacySassFunction, $async$completer);
    },
    _async_evaluate$_checkCalculationArguments$1(node) {
      var _0_0,
        check = new A._EvaluateVisitor__checkCalculationArguments_check0(this, node);
      $label0$0: {
        _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
        if ("calc" === _0_0 || "sqrt" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "abs" === _0_0 || "exp" === _0_0 || "sign" === _0_0) {
          check.call$1(1);
          break $label0$0;
        }
        if ("min" === _0_0 || "max" === _0_0 || "hypot" === _0_0) {
          check.call$0();
          break $label0$0;
        }
        if ("pow" === _0_0 || "atan2" === _0_0 || "log" === _0_0 || "mod" === _0_0 || "rem" === _0_0) {
          check.call$1(2);
          break $label0$0;
        }
        if ("round" === _0_0 || "clamp" === _0_0) {
          check.call$1(3);
          break $label0$0;
        }
        throw A.wrapException(A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".'));
      }
    },
    _async_evaluate$_verifyCompatibleNumbers$2(args, nodesWithSpans) {
      var i, t1, _0_0, arg, number1, j, number2;
      for (i = 0; t1 = args.length, i < t1; ++i) {
        _0_0 = args[i];
        if (_0_0 instanceof A.SassNumber) {
          t1 = _0_0.get$hasComplexUnits();
          arg = _0_0;
        } else {
          arg = null;
          t1 = false;
        }
        if (t1)
          throw A.wrapException(this._async_evaluate$_exception$2("Number " + A.S(arg) + " isn't compatible with CSS calculations.", J.get$span$z(nodesWithSpans[i])));
      }
      for (i = 0; i < t1 - 1; ++i) {
        number1 = args[i];
        if (!(number1 instanceof A.SassNumber))
          continue;
        for (j = i + 1; t1 = args.length, j < t1; ++j) {
          number2 = args[j];
          if (!(number2 instanceof A.SassNumber))
            continue;
          if (number1.hasPossiblyCompatibleUnits$1(number2))
            continue;
          throw A.wrapException(A.MultiSpanSassRuntimeException$(number1.toString$0(0) + " and " + number2.toString$0(0) + " are incompatible.", J.get$span$z(nodesWithSpans[i]), number1.toString$0(0), A.LinkedHashMap_LinkedHashMap$_literal([J.get$span$z(nodesWithSpans[j]), number2.toString$0(0)], type$.FileSpan, type$.String), this._async_evaluate$_stackTrace$1(J.get$span$z(nodesWithSpans[i])), null));
        }
      }
    },
    _async_evaluate$_visitCalculationExpression$2$inLegacySassFunction(node, inLegacySassFunction) {
      return this._visitCalculationExpression$body$_EvaluateVisitor(node, inLegacySassFunction);
    },
    _visitCalculationExpression$body$_EvaluateVisitor(node, inLegacySassFunction) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Object),
        $async$returnValue, $async$self = this, inner, t1, result, t2, _0_0, _1_0, t3, _i, i, _box_0, $async$temp1;
      var $async$_async_evaluate$_visitCalculationExpression$2$inLegacySassFunction = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              if (node instanceof A.ParenthesizedExpression) {
                inner = node.expression;
                t1 = true;
              } else {
                inner = null;
                t1 = false;
              }
              $async$goto = t1 ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate$_visitCalculationExpression$2$inLegacySassFunction(inner, inLegacySassFunction), $async$_async_evaluate$_visitCalculationExpression$2$inLegacySassFunction);
            case 5:
              // returning from await.
              result = $async$result;
              $async$returnValue = result instanceof A.SassString ? new A.SassString("(" + result._string$_text + ")", false) : result;
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              $async$goto = node instanceof A.StringExpression && node.accept$1(new A._IsCalculationSafeVisitor()) ? 6 : 7;
              break;
            case 6:
              // then
              t1 = node.text;
              t2 = t1.get$asPlain();
              _0_0 = t2 == null ? null : t2.toLowerCase();
              if ("pi" === _0_0) {
                t1 = A.SassNumber_SassNumber(3.141592653589793, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("e" === _0_0) {
                t1 = A.SassNumber_SassNumber(2.718281828459045, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("infinity" === _0_0) {
                t1 = A.SassNumber_SassNumber(1 / 0, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("-infinity" === _0_0) {
                t1 = A.SassNumber_SassNumber(-1 / 0, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("nan" === _0_0) {
                t1 = A.SassNumber_SassNumber(0 / 0, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              $async$temp1 = A;
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolation$1(t1), $async$_async_evaluate$_visitCalculationExpression$2$inLegacySassFunction);
            case 9:
              // returning from await.
              t1 = new $async$temp1.SassString($async$result, false);
              // goto break $label0$0
              $async$goto = 8;
              break;
            case 8:
              // break $label0$0
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 7:
              // join
              _box_0.right = _box_0.left = _box_0.operator = null;
              if (node instanceof A.BinaryOperationExpression) {
                _box_0.operator = node.operator;
                _box_0.left = node.left;
                _box_0.right = node.right;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 10 : 11;
              break;
            case 10:
              // then
              $async$self._async_evaluate$_checkWhitespaceAroundCalculationOperator$1(node);
              $async$goto = 12;
              return A._asyncAwait($async$self._addExceptionSpanAsync$1$2(node, new A._EvaluateVisitor__visitCalculationExpression_closure0(_box_0, $async$self, node, inLegacySassFunction), type$.Object), $async$_async_evaluate$_visitCalculationExpression$2$inLegacySassFunction);
            case 12:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 11:
              // join
              $async$goto = node instanceof A.NumberExpression || node instanceof A.VariableExpression || node instanceof A.FunctionExpression || node instanceof A.IfExpression ? 13 : 14;
              break;
            case 13:
              // then
              $async$goto = 15;
              return A._asyncAwait(node.accept$1($async$self), $async$_async_evaluate$_visitCalculationExpression$2$inLegacySassFunction);
            case 15:
              // returning from await.
              _1_0 = $async$result;
              $label1$1: {
                if (_1_0 instanceof A.SassNumber) {
                  result = _1_0;
                  t1 = true;
                } else {
                  result = null;
                  t1 = false;
                }
                if (t1) {
                  t1 = result;
                  break $label1$1;
                }
                if (_1_0 instanceof A.SassCalculation) {
                  result = _1_0;
                  t1 = true;
                } else {
                  result = null;
                  t1 = false;
                }
                if (t1) {
                  t1 = result;
                  break $label1$1;
                }
                if (_1_0 instanceof A.SassString) {
                  t1 = !_1_0._hasQuotes;
                  result = _1_0;
                } else {
                  result = null;
                  t1 = false;
                }
                if (t1) {
                  t1 = result;
                  break $label1$1;
                }
                t1 = A.throwExpression($async$self._async_evaluate$_exception$2("Value " + _1_0.toString$0(0) + " can't be used in a calculation.", node.get$span(node)));
              }
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 14:
              // join
              $async$goto = node instanceof A.ListExpression && !node.hasBrackets && B.ListSeparator_EVt === node.separator && node.contents.length >= 2 ? 16 : 17;
              break;
            case 16:
              // then
              t1 = A._setArrayType([], type$.JSArray_Object);
              t2 = node.contents, t3 = t2.length, _i = 0;
            case 18:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 20;
                break;
              }
              $async$temp1 = t1;
              $async$goto = 21;
              return A._asyncAwait($async$self._async_evaluate$_visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction), $async$_async_evaluate$_visitCalculationExpression$2$inLegacySassFunction);
            case 21:
              // returning from await.
              $async$temp1.push($async$result);
            case 19:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 18;
              break;
            case 20:
              // after for
              $async$self._async_evaluate$_checkAdjacentCalculationValues$2(t1, node);
              for (i = 0; i < t1.length; ++i) {
                t3 = t1[i];
                if (t3 instanceof A.CalculationOperation && t2[i] instanceof A.ParenthesizedExpression)
                  t1[i] = new A.SassString("(" + A.S(t3) + ")", false);
              }
              $async$returnValue = new A.SassString(B.JSArray_methods.join$1(t1, " "), false);
              // goto return
              $async$goto = 1;
              break;
            case 17:
              // join
              throw A.wrapException($async$self._async_evaluate$_exception$2(string$.This_e, node.get$span(node)));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_visitCalculationExpression$2$inLegacySassFunction, $async$completer);
    },
    _async_evaluate$_checkWhitespaceAroundCalculationOperator$1(node) {
      var t2, t3, t4, textBetweenOperands, first, last,
        t1 = node.operator;
      if (t1 !== B.BinaryOperator_anB && t1 !== B.BinaryOperator_olz)
        return;
      t1 = node.left;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t3 = node.right;
      t4 = t3.get$span(t3);
      if (t2 !== t4.get$file(t4))
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$end(t2);
      t4 = t3.get$span(t3);
      if (t2.offset >= t4.get$start(t4).offset)
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t1 = t1.get$span(t1);
      t1 = t1.get$end(t1);
      t3 = t3.get$span(t3);
      textBetweenOperands = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2._decodedChars, t1.offset, t3.get$start(t3).offset), 0, null);
      first = textBetweenOperands.charCodeAt(0);
      last = textBetweenOperands.charCodeAt(textBetweenOperands.length - 1);
      if (first === 32 || first === 9 || first === 10 || first === 13 || first === 12 || first === 47)
        t1 = !(last === 32 || last === 9 || last === 10 || last === 13 || last === 12 || last === 47);
      else
        t1 = true;
      if (t1)
        throw A.wrapException(this._async_evaluate$_exception$2(string$.x22x2b__an, node.get$operatorSpan()));
    },
    _async_evaluate$_binaryOperatorToCalculationOperator$2(operator, node) {
      var t1;
      $label0$0: {
        if (B.BinaryOperator_anB === operator) {
          t1 = B.CalculationOperator_IyK;
          break $label0$0;
        }
        if (B.BinaryOperator_olz === operator) {
          t1 = B.CalculationOperator_2bx;
          break $label0$0;
        }
        if (B.BinaryOperator_qN2 === operator) {
          t1 = B.CalculationOperator_jFr;
          break $label0$0;
        }
        if (B.BinaryOperator_t8B === operator) {
          t1 = B.CalculationOperator_OvN;
          break $label0$0;
        }
        t1 = A.throwExpression(this._async_evaluate$_exception$2(string$.This_o, node.get$operatorSpan()));
      }
      return t1;
    },
    _async_evaluate$_checkAdjacentCalculationValues$2(elements, node) {
      var t1, i, t2, previous, current, previousNode, currentNode, _0_2;
      for (t1 = elements.length, i = 1; i < t1; ++i) {
        t2 = i - 1;
        previous = elements[t2];
        current = elements[i];
        if (previous instanceof A.SassString || current instanceof A.SassString)
          continue;
        t1 = node.contents;
        previousNode = t1[t2];
        currentNode = t1[i];
        _0_2 = A._InitializedCell$(new A._EvaluateVisitor__checkAdjacentCalculationValues_closure0(currentNode));
        if (currentNode instanceof A.UnaryOperationExpression)
          t1 = B.UnaryOperator_TLI === _0_2._readFinal$0() || B.UnaryOperator_gg4 === _0_2._readFinal$0();
        else
          t1 = false;
        if (!t1)
          t1 = currentNode instanceof A.NumberExpression && currentNode.value < 0;
        else
          t1 = true;
        if (t1)
          throw A.wrapException(this._async_evaluate$_exception$2(string$.x22x2b__an, A.FileSpanExtension_subspan(currentNode.get$span(currentNode), 0, 1)));
        else
          throw A.wrapException(this._async_evaluate$_exception$2("Missing math operator.", previousNode.get$span(previousNode).expand$1(0, currentNode.get$span(currentNode))));
      }
    },
    visitInterpolatedFunctionExpression$1(node) {
      return this.visitInterpolatedFunctionExpression$body$_EvaluateVisitor(node);
    },
    visitInterpolatedFunctionExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, result, t1, oldInFunction;
      var $async$visitInterpolatedFunctionExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolation$1(node.name), $async$visitInterpolatedFunctionExpression$1);
            case 3:
              // returning from await.
              t1 = $async$result;
              oldInFunction = $async$self._async_evaluate$_inFunction;
              $async$self._async_evaluate$_inFunction = true;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate$_addErrorSpan$1$2(node, new A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure0($async$self, node, new A.PlainCssCallable(t1)), type$.Value), $async$visitInterpolatedFunctionExpression$1);
            case 4:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$_inFunction = oldInFunction;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitInterpolatedFunctionExpression$1, $async$completer);
    },
    _async_evaluate$_runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, run, $V) {
      return this._runUserDefinedCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan, run, $V, $V);
    },
    _runUserDefinedCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan, run, $V, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, oldCallable, result, evaluated, $name;
      var $async$_async_evaluate$_runUserDefinedCallable$1$4 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_evaluateArguments$1($arguments), $async$_async_evaluate$_runUserDefinedCallable$1$4);
            case 3:
              // returning from await.
              evaluated = $async$result;
              $name = callable.declaration.name;
              if ($name !== "@content")
                $name += "()";
              oldCallable = $async$self._async_evaluate$_currentCallable;
              $async$self._async_evaluate$_currentCallable = callable;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate$_withStackFrame$1$3($name, nodeWithSpan, new A._EvaluateVisitor__runUserDefinedCallable_closure0($async$self, callable, evaluated, nodeWithSpan, run, $V), $V), $async$_async_evaluate$_runUserDefinedCallable$1$4);
            case 4:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$_currentCallable = oldCallable;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_runUserDefinedCallable$1$4, $async$completer);
    },
    _async_evaluate$_runFunctionCallable$3($arguments, callable, nodeWithSpan) {
      return this._runFunctionCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan);
    },
    _runFunctionCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, buffer, first, argument, restArg, rest, error, t1, t2, _i, exception, $async$exception, $async$temp1, $async$temp2;
      var $async$_async_evaluate$_runFunctionCallable$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = type$.AsyncBuiltInCallable._is(callable) ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate$_runBuiltInCallable$3($arguments, callable, nodeWithSpan), $async$_async_evaluate$_runFunctionCallable$3);
            case 6:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate$_withoutSlash$2($async$result, nodeWithSpan);
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$goto = type$.UserDefinedCallable_AsyncEnvironment._is(callable) ? 7 : 9;
              break;
            case 7:
              // then
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate$_runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, new A._EvaluateVisitor__runFunctionCallable_closure0($async$self, callable), type$.Value), $async$_async_evaluate$_runFunctionCallable$3);
            case 10:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 8;
              break;
            case 9:
              // else
              $async$goto = callable instanceof A.PlainCssCallable ? 11 : 13;
              break;
            case 11:
              // then
              t1 = $arguments.named;
              if (t1.get$isNotEmpty(t1) || $arguments.keywordRest != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Plain_, nodeWithSpan.get$span(nodeWithSpan)));
              buffer = new A.StringBuffer(callable.name + "(");
              $async$handler = 15;
              first = true;
              t1 = $arguments.positional, t2 = t1.length, _i = 0;
            case 18:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 20;
                break;
              }
              argument = t1[_i];
              if (first)
                first = false;
              else
                buffer._contents += ", ";
              $async$temp1 = buffer;
              $async$temp2 = A;
              $async$goto = 21;
              return A._asyncAwait($async$self._evaluateToCss$1(argument), $async$_async_evaluate$_runFunctionCallable$3);
            case 21:
              // returning from await.
              $async$temp1._contents += $async$temp2.S($async$result);
            case 19:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 18;
              break;
            case 20:
              // after for
              restArg = $arguments.rest;
              $async$goto = restArg != null ? 22 : 23;
              break;
            case 22:
              // then
              $async$goto = 24;
              return A._asyncAwait(restArg.accept$1($async$self), $async$_async_evaluate$_runFunctionCallable$3);
            case 24:
              // returning from await.
              rest = $async$result;
              if (!first)
                buffer._contents += ", ";
              buffer._contents += $async$self._async_evaluate$_serialize$2(rest, restArg);
            case 23:
              // join
              $async$handler = 2;
              // goto after finally
              $async$goto = 17;
              break;
            case 15:
              // catch
              $async$handler = 14;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (type$.SassRuntimeException._is(t1)) {
                error = t1;
                if (!B.JSString_methods.endsWith$1(error._span_exception$_message, "isn't a valid CSS value."))
                  throw $async$exception;
                throw A.wrapException(A.MultiSpanSassRuntimeException$(error._span_exception$_message, J.get$span$z(error), "value", A.LinkedHashMap_LinkedHashMap$_literal([nodeWithSpan.get$span(nodeWithSpan), "unknown function treated as plain CSS"], type$.FileSpan, type$.String), J.get$trace$z(error), null));
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 17;
              break;
            case 14:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 17:
              // after finally
              buffer._contents += A.Primitives_stringFromCharCode(41);
              t1 = buffer._contents;
              $async$returnValue = new A.SassString(t1.charCodeAt(0) == 0 ? t1 : t1, false);
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 12;
              break;
            case 13:
              // else
              throw A.wrapException(A.ArgumentError$("Unknown callable type " + J.get$runtimeType$(callable).toString$0(0) + ".", null));
            case 12:
              // join
            case 8:
              // join
            case 4:
              // join
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_runFunctionCallable$3, $async$completer);
    },
    _async_evaluate$_runBuiltInCallable$3($arguments, callable, nodeWithSpan) {
      return this._runBuiltInCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan);
    },
    _runBuiltInCallable$body$_EvaluateVisitor($arguments, callable, nodeWithSpan) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, result, error, stackTrace, message, namedSet, _0_0, declaredArguments, i, t1, argument, t2, t3, rest, argumentList, exception, message0, _box_0, evaluated, oldCallableNode, $async$exception;
      var $async$_async_evaluate$_runBuiltInCallable$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_evaluateArguments$1($arguments), $async$_async_evaluate$_runBuiltInCallable$3);
            case 3:
              // returning from await.
              evaluated = $async$result;
              oldCallableNode = $async$self._async_evaluate$_callableNode;
              $async$self._async_evaluate$_callableNode = nodeWithSpan;
              namedSet = new A.MapKeySet(evaluated._values[0], type$.MapKeySet_String);
              _box_0.callback = _box_0.overload = null;
              _0_0 = callable.callbackFor$2(J.get$length$asx(evaluated._values[2]), namedSet);
              _box_0.overload = _0_0._0;
              _box_0.callback = _0_0._1;
              $async$self._async_evaluate$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure2(_box_0, evaluated, namedSet));
              declaredArguments = _box_0.overload.$arguments;
              i = J.get$length$asx(evaluated._values[2]), t1 = declaredArguments.length;
            case 4:
              // for condition
              if (!(i < t1)) {
                // goto after for
                $async$goto = 6;
                break;
              }
              argument = declaredArguments[i];
              t2 = evaluated._values[2];
              t3 = evaluated._values[0].remove$1(0, argument.name);
              $async$goto = t3 == null ? 7 : 8;
              break;
            case 7:
              // then
              t3 = argument.defaultValue;
              $async$goto = 9;
              return A._asyncAwait(t3.accept$1($async$self), $async$_async_evaluate$_runBuiltInCallable$3);
            case 9:
              // returning from await.
              t3 = $async$self._async_evaluate$_withoutSlash$2($async$result, t3);
            case 8:
              // join
              J.add$1$ax(t2, t3);
            case 5:
              // for update
              ++i;
              // goto for condition
              $async$goto = 4;
              break;
            case 6:
              // after for
              if (_box_0.overload.restArgument != null) {
                if (J.get$length$asx(evaluated._values[2]) > t1) {
                  rest = J.sublist$1$ax(evaluated._values[2], t1);
                  J.removeRange$2$ax(evaluated._values[2], t1, J.get$length$asx(evaluated._values[2]));
                } else
                  rest = B.List_empty8;
                t1 = evaluated._values[0];
                argumentList = A.SassArgumentList$(rest, t1, evaluated._values[4] === B.ListSeparator_undecided_null_undecided ? B.ListSeparator_rXA : evaluated._values[4]);
                J.add$1$ax(evaluated._values[2], argumentList);
              } else
                argumentList = null;
              result = null;
              $async$handler = 11;
              $async$goto = 14;
              return A._asyncAwait($async$self._addExceptionSpanAsync$1$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure3(_box_0, evaluated), type$.Value), $async$_async_evaluate$_runBuiltInCallable$3);
            case 14:
              // returning from await.
              result = $async$result;
              $async$handler = 2;
              // goto after finally
              $async$goto = 13;
              break;
            case 11:
              // catch
              $async$handler = 10;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException)
                throw $async$exception;
              else {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                message = null;
                try {
                  message = A._asString(J.get$message$x(error));
                } catch (exception) {
                  message0 = J.toString$0$(error);
                  message = message0;
                }
                A.throwWithTrace($async$self._async_evaluate$_exception$2(message, nodeWithSpan.get$span(nodeWithSpan)), error, stackTrace);
              }
              // goto after finally
              $async$goto = 13;
              break;
            case 10:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 13:
              // after finally
              $async$self._async_evaluate$_callableNode = oldCallableNode;
              if (argumentList == null) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = evaluated._values[0];
              if (t1.get$isEmpty(t1)) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              if (argumentList._wereKeywordsAccessed) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = evaluated._values[0];
              t1 = A.pluralize("argument", J.get$length$asx(t1.get$keys(t1)), null);
              t2 = evaluated._values[0];
              throw A.wrapException(A.MultiSpanSassRuntimeException$("No " + t1 + " named " + A.toSentence(J.map$1$1$ax(t2.get$keys(t2), new A._EvaluateVisitor__runBuiltInCallable_closure4(), type$.Object), "or") + ".", nodeWithSpan.get$span(nodeWithSpan), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([_box_0.overload.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), $async$self._async_evaluate$_stackTrace$1(nodeWithSpan.get$span(nodeWithSpan)), null));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_runBuiltInCallable$3, $async$completer);
    },
    _async_evaluate$_evaluateArguments$1($arguments) {
      return this._evaluateArguments$body$_EvaluateVisitor($arguments);
    },
    _evaluateArguments$body$_EvaluateVisitor($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_5_Map_String_Value_named_and_Map_String_AstNode_namedNodes_and_List_Value_positional_and_List_AstNode_positionalNodes_and_ListSeparator_separator),
        $async$returnValue, $async$self = this, t1, t2, _i, expression, nodeForSpan, named, namedNodes, t3, t4, $name, value, restArgs, rest, restNodeForSpan, t5, separator, keywordRestArgs, keywordRest, keywordRestNodeForSpan, positional, positionalNodes, $async$temp1, $async$temp2;
      var $async$_async_evaluate$_evaluateArguments$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              positional = A._setArrayType([], type$.JSArray_Value);
              positionalNodes = A._setArrayType([], type$.JSArray_AstNode);
              t1 = $arguments.positional, t2 = t1.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              expression = t1[_i];
              nodeForSpan = $async$self._async_evaluate$_expressionNode$1(expression);
              $async$temp1 = positional;
              $async$goto = 6;
              return A._asyncAwait(expression.accept$1($async$self), $async$_async_evaluate$_evaluateArguments$1);
            case 6:
              // returning from await.
              $async$temp1.push($async$self._async_evaluate$_withoutSlash$2($async$result, nodeForSpan));
              positionalNodes.push(nodeForSpan);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              t1 = type$.String;
              named = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value);
              t2 = type$.AstNode;
              namedNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
              t3 = A.MapExtensions_get_pairs($arguments.named, t1, type$.Expression), t3 = t3.get$iterator(t3);
            case 7:
              // for condition
              if (!t3.moveNext$0()) {
                // goto after for
                $async$goto = 8;
                break;
              }
              t4 = t3.get$current(t3);
              $name = t4._0;
              value = t4._1;
              nodeForSpan = $async$self._async_evaluate$_expressionNode$1(value);
              $async$temp1 = named;
              $async$temp2 = $name;
              $async$goto = 9;
              return A._asyncAwait(value.accept$1($async$self), $async$_async_evaluate$_evaluateArguments$1);
            case 9:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, $async$self._async_evaluate$_withoutSlash$2($async$result, nodeForSpan));
              namedNodes.$indexSet(0, $name, nodeForSpan);
              // goto for condition
              $async$goto = 7;
              break;
            case 8:
              // after for
              restArgs = $arguments.rest;
              if (restArgs == null) {
                $async$returnValue = new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, B.ListSeparator_undecided_null_undecided]);
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 10;
              return A._asyncAwait(restArgs.accept$1($async$self), $async$_async_evaluate$_evaluateArguments$1);
            case 10:
              // returning from await.
              rest = $async$result;
              restNodeForSpan = $async$self._async_evaluate$_expressionNode$1(restArgs);
              if (rest instanceof A.SassMap) {
                $async$self._async_evaluate$_addRestMap$4(named, rest, restArgs, new A._EvaluateVisitor__evaluateArguments_closure3());
                t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
                for (t4 = rest._map$_contents, t4 = J.get$iterator$ax(t4.get$keys(t4)), t5 = type$.SassString; t4.moveNext$0();)
                  t3.$indexSet(0, t5._as(t4.get$current(t4))._string$_text, restNodeForSpan);
                namedNodes.addAll$1(0, t3);
                separator = B.ListSeparator_undecided_null_undecided;
              } else if (rest instanceof A.SassList) {
                t3 = rest._list$_contents;
                B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t3, new A._EvaluateVisitor__evaluateArguments_closure4($async$self, restNodeForSpan), A._arrayInstanceType(t3)._eval$1("MappedListIterable<1,Value>")));
                B.JSArray_methods.addAll$1(positionalNodes, A.List_List$filled(t3.length, restNodeForSpan, false, t2));
                separator = rest._separator;
                if (rest instanceof A.SassArgumentList) {
                  rest._wereKeywordsAccessed = true;
                  rest._keywords.forEach$1(0, new A._EvaluateVisitor__evaluateArguments_closure5($async$self, named, restNodeForSpan, namedNodes));
                }
              } else {
                positional.push($async$self._async_evaluate$_withoutSlash$2(rest, restNodeForSpan));
                positionalNodes.push(restNodeForSpan);
                separator = B.ListSeparator_undecided_null_undecided;
              }
              keywordRestArgs = $arguments.keywordRest;
              if (keywordRestArgs == null) {
                $async$returnValue = new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 11;
              return A._asyncAwait(keywordRestArgs.accept$1($async$self), $async$_async_evaluate$_evaluateArguments$1);
            case 11:
              // returning from await.
              keywordRest = $async$result;
              keywordRestNodeForSpan = $async$self._async_evaluate$_expressionNode$1(keywordRestArgs);
              if (keywordRest instanceof A.SassMap) {
                $async$self._async_evaluate$_addRestMap$4(named, keywordRest, keywordRestArgs, new A._EvaluateVisitor__evaluateArguments_closure6());
                t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
                for (t2 = keywordRest._map$_contents, t2 = J.get$iterator$ax(t2.get$keys(t2)), t3 = type$.SassString; t2.moveNext$0();)
                  t1.$indexSet(0, t3._as(t2.get$current(t2))._string$_text, keywordRestNodeForSpan);
                namedNodes.addAll$1(0, t1);
                $async$returnValue = new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
                // goto return
                $async$goto = 1;
                break;
              } else
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs.get$span(keywordRestArgs)));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_evaluateArguments$1, $async$completer);
    },
    _async_evaluate$_evaluateMacroArguments$1(invocation) {
      return this._evaluateMacroArguments$body$_EvaluateVisitor(invocation);
    },
    _evaluateMacroArguments$body$_EvaluateVisitor(invocation) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_List_Expression_and_Map_String_Expression),
        $async$returnValue, $async$self = this, t2, positional, named, rest, restNodeForSpan, keywordRestArgs_, keywordRest, keywordRestNodeForSpan, t1, restArgs_;
      var $async$_async_evaluate$_evaluateMacroArguments$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = invocation.$arguments;
              restArgs_ = t1.rest;
              if (restArgs_ == null) {
                $async$returnValue = new A._Record_2(t1.positional, t1.named);
                // goto return
                $async$goto = 1;
                break;
              }
              t2 = t1.positional;
              positional = A._setArrayType(t2.slice(0), A._arrayInstanceType(t2));
              named = A.LinkedHashMap_LinkedHashMap$of(t1.named, type$.String, type$.Expression);
              $async$goto = 3;
              return A._asyncAwait(restArgs_.accept$1($async$self), $async$_async_evaluate$_evaluateMacroArguments$1);
            case 3:
              // returning from await.
              rest = $async$result;
              restNodeForSpan = $async$self._async_evaluate$_expressionNode$1(restArgs_);
              if (rest instanceof A.SassMap)
                $async$self._async_evaluate$_addRestMap$4(named, rest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure3(restArgs_));
              else if (rest instanceof A.SassList) {
                t2 = rest._list$_contents;
                B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t2, new A._EvaluateVisitor__evaluateMacroArguments_closure4($async$self, restNodeForSpan, restArgs_), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,Expression>")));
                if (rest instanceof A.SassArgumentList) {
                  rest._wereKeywordsAccessed = true;
                  rest._keywords.forEach$1(0, new A._EvaluateVisitor__evaluateMacroArguments_closure5($async$self, named, restNodeForSpan, restArgs_));
                }
              } else
                positional.push(new A.ValueExpression($async$self._async_evaluate$_withoutSlash$2(rest, restNodeForSpan), restArgs_.get$span(restArgs_)));
              keywordRestArgs_ = t1.keywordRest;
              if (keywordRestArgs_ == null) {
                $async$returnValue = new A._Record_2(positional, named);
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 4;
              return A._asyncAwait(keywordRestArgs_.accept$1($async$self), $async$_async_evaluate$_evaluateMacroArguments$1);
            case 4:
              // returning from await.
              keywordRest = $async$result;
              keywordRestNodeForSpan = $async$self._async_evaluate$_expressionNode$1(keywordRestArgs_);
              if (keywordRest instanceof A.SassMap) {
                $async$self._async_evaluate$_addRestMap$4(named, keywordRest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure6($async$self, keywordRestNodeForSpan, keywordRestArgs_));
                $async$returnValue = new A._Record_2(positional, named);
                // goto return
                $async$goto = 1;
                break;
              } else
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs_.get$span(keywordRestArgs_)));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_evaluateMacroArguments$1, $async$completer);
    },
    _async_evaluate$_addRestMap$1$4(values, map, nodeWithSpan, convert) {
      map._map$_contents.forEach$1(0, new A._EvaluateVisitor__addRestMap_closure0(this, values, convert, this._async_evaluate$_expressionNode$1(nodeWithSpan), map, nodeWithSpan));
    },
    _async_evaluate$_addRestMap$4(values, map, nodeWithSpan, convert) {
      return this._async_evaluate$_addRestMap$1$4(values, map, nodeWithSpan, convert, type$.dynamic);
    },
    _async_evaluate$_verifyArguments$4(positional, named, $arguments, nodeWithSpan) {
      return this._async_evaluate$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__verifyArguments_closure0($arguments, positional, named));
    },
    visitSelectorExpression$1(node) {
      return this.visitSelectorExpression$body$_EvaluateVisitor(node);
    },
    visitSelectorExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, t1;
      var $async$visitSelectorExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate$_styleRuleIgnoringAtRoot;
              t1 = t1 == null ? null : t1.originalSelector.get$asSassList();
              $async$returnValue = t1 == null ? B.C__SassNull : t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSelectorExpression$1, $async$completer);
    },
    visitStringExpression$1(node) {
      return this.visitStringExpression$body$_EvaluateVisitor(node);
    },
    visitStringExpression$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassString),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, _i, value, t5, _0_0, text, oldInSupportsDeclaration;
      var $async$visitStringExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldInSupportsDeclaration = $async$self._async_evaluate$_inSupportsDeclaration;
              $async$self._async_evaluate$_inSupportsDeclaration = false;
              t1 = A._setArrayType([], type$.JSArray_String);
              t2 = node.text.contents, t3 = t2.length, t4 = type$.Expression, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              value = t2[_i];
              if (typeof value == "string") {
                t5 = value;
                // goto break $label0$0
                $async$goto = 6;
                break;
              }
              $async$goto = t4._is(value) ? 7 : 8;
              break;
            case 7:
              // then
              $async$goto = 9;
              return A._asyncAwait(value.accept$1($async$self), $async$visitStringExpression$1);
            case 9:
              // returning from await.
              _0_0 = $async$result;
              $label1$1: {
                if (_0_0 instanceof A.SassString) {
                  text = _0_0._string$_text;
                  t5 = true;
                } else {
                  text = null;
                  t5 = false;
                }
                if (t5) {
                  t5 = text;
                  break $label1$1;
                }
                t5 = $async$self._async_evaluate$_serialize$3$quote(_0_0, value, false);
                break $label1$1;
              }
              // goto break $label0$0
              $async$goto = 6;
              break;
            case 8:
              // join
              t5 = A.throwExpression(A.UnsupportedError$("Unknown interpolation value " + A.S(value)));
            case 6:
              // break $label0$0
              t1.push(t5);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              t1 = B.JSArray_methods.join$0(t1);
              $async$self._async_evaluate$_inSupportsDeclaration = oldInSupportsDeclaration;
              $async$returnValue = new A.SassString(t1, node.hasQuotes);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitStringExpression$1, $async$completer);
    },
    visitSupportsExpression$1(expression) {
      return this.visitSupportsExpression$body$_EvaluateVisitor(expression);
    },
    visitSupportsExpression$body$_EvaluateVisitor(expression) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassString),
        $async$returnValue, $async$self = this, $async$temp1;
      var $async$visitSupportsExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_visitSupportsCondition$1(expression.condition), $async$visitSupportsExpression$1);
            case 3:
              // returning from await.
              $async$returnValue = new $async$temp1.SassString($async$result, false);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSupportsExpression$1, $async$completer);
    },
    visitCssAtRule$1(node) {
      return this.visitCssAtRule$body$_EvaluateVisitor(node);
    },
    visitCssAtRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, wasInKeyframes, wasInUnknownAtRule, t1;
      var $async$visitCssAtRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.At_rul, node.span));
              if (node.isChildless) {
                $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").addChild$1(A.ModifiableCssAtRule$(node.name, node.span, true, node.value));
                // goto return
                $async$goto = 1;
                break;
              }
              wasInKeyframes = $async$self._async_evaluate$_inKeyframes;
              wasInUnknownAtRule = $async$self._async_evaluate$_inUnknownAtRule;
              t1 = node.name;
              if (A.unvendor(t1.value) === "keyframes")
                $async$self._async_evaluate$_inKeyframes = true;
              else
                $async$self._async_evaluate$_inUnknownAtRule = true;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$(t1, node.span, false, node.value), new A._EvaluateVisitor_visitCssAtRule_closure1($async$self, node), false, new A._EvaluateVisitor_visitCssAtRule_closure2(), type$.ModifiableCssAtRule, type$.Null), $async$visitCssAtRule$1);
            case 3:
              // returning from await.
              $async$self._async_evaluate$_inUnknownAtRule = wasInUnknownAtRule;
              $async$self._async_evaluate$_inKeyframes = wasInKeyframes;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssAtRule$1, $async$completer);
    },
    visitCssComment$1(node) {
      return this.visitCssComment$body$_EvaluateVisitor(node);
    },
    visitCssComment$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssComment$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent") === $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root") && $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root").children._collection$_source))
                $async$self._async_evaluate$__endOfImports = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") + 1;
              $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").addChild$1(new A.ModifiableCssComment(node.text, node.span));
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssComment$1, $async$completer);
    },
    visitCssDeclaration$1(node) {
      return this.visitCssDeclaration$body$_EvaluateVisitor(node);
    },
    visitCssDeclaration$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssDeclaration$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").addChild$1(A.ModifiableCssDeclaration$(node.name, node.value, node.span, node.parsedAsCustomProperty, node.valueSpanForMap));
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssDeclaration$1, $async$completer);
    },
    visitCssImport$1(node) {
      return this.visitCssImport$body$_EvaluateVisitor(node);
    },
    visitCssImport$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, modifiableNode;
      var $async$visitCssImport$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              modifiableNode = new A.ModifiableCssImport(node.url, node.modifiers, node.span);
              if ($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent") !== $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root"))
                $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").addChild$1(modifiableNode);
              else if ($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root").children._collection$_source)) {
                $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__root, "_root").addChild$1(modifiableNode);
                $async$self._async_evaluate$__endOfImports = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__endOfImports, "_endOfImports") + 1;
              } else {
                t1 = $async$self._async_evaluate$_outOfOrderImports;
                (t1 == null ? $async$self._async_evaluate$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport) : t1).push(modifiableNode);
              }
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssImport$1, $async$completer);
    },
    visitCssKeyframeBlock$1(node) {
      return this.visitCssKeyframeBlock$body$_EvaluateVisitor(node);
    },
    visitCssKeyframeBlock$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssKeyframeBlock$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$(node.selector, node.span), new A._EvaluateVisitor_visitCssKeyframeBlock_closure1($async$self, node), false, new A._EvaluateVisitor_visitCssKeyframeBlock_closure2(), type$.ModifiableCssKeyframeBlock, type$.Null), $async$visitCssKeyframeBlock$1);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssKeyframeBlock$1, $async$completer);
    },
    visitCssMediaRule$1(node) {
      return this.visitCssMediaRule$body$_EvaluateVisitor(node);
    },
    visitCssMediaRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, mergedQueries, t1, mergedSources, t2, t3;
      var $async$visitCssMediaRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Media_, node.span));
              mergedQueries = A.NullableExtension_andThen($async$self._async_evaluate$_mediaQueries, new A._EvaluateVisitor_visitCssMediaRule_closure2($async$self, node));
              t1 = mergedQueries == null;
              if (!t1 && J.get$isEmpty$asx(mergedQueries)) {
                // goto return
                $async$goto = 1;
                break;
              }
              if (t1)
                mergedSources = B.Set_empty1;
              else {
                t2 = $async$self._async_evaluate$_mediaQuerySources;
                t2.toString;
                t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery);
                t3 = $async$self._async_evaluate$_mediaQueries;
                t3.toString;
                t2.addAll$1(0, t3);
                t2.addAll$1(0, node.queries);
                mergedSources = t2;
              }
              t1 = t1 ? node.queries : mergedQueries;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$(t1, node.span), new A._EvaluateVisitor_visitCssMediaRule_closure3($async$self, mergedQueries, node, mergedSources), false, new A._EvaluateVisitor_visitCssMediaRule_closure4(mergedSources), type$.ModifiableCssMediaRule, type$.Null), $async$visitCssMediaRule$1);
            case 3:
              // returning from await.
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssMediaRule$1, $async$completer);
    },
    visitCssStyleRule$1(node) {
      return this.visitCssStyleRule$body$_EvaluateVisitor(node);
    },
    visitCssStyleRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, styleRule, t2, t3, t4, originalSelector, rule, oldAtRootExcludingStyleRule, _0_0, _0_1, lastChild;
      var $async$visitCssStyleRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Style_, node.span));
              t1 = $async$self._async_evaluate$_atRootExcludingStyleRule;
              styleRule = t1 ? null : $async$self._async_evaluate$_styleRuleIgnoringAtRoot;
              t2 = node._style_rule$_selector._box$_inner.value;
              t3 = styleRule == null;
              t4 = t3 ? null : styleRule.originalSelector;
              originalSelector = t2.resolveParentSelectors$2$implicitParent(t4, !t1);
              rule = A.ModifiableCssStyleRule$($async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__extensionStore, "_extensionStore").addSelector$2(originalSelector, $async$self._async_evaluate$_mediaQueries), node.span, originalSelector);
              oldAtRootExcludingStyleRule = $async$self._async_evaluate$_atRootExcludingStyleRule;
              $async$self._async_evaluate$_atRootExcludingStyleRule = false;
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitCssStyleRule_closure2($async$self, rule, node), false, new A._EvaluateVisitor_visitCssStyleRule_closure3(), type$.ModifiableCssStyleRule, type$.Null), $async$visitCssStyleRule$1);
            case 2:
              // returning from await.
              $async$self._async_evaluate$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
              _0_0 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent").children;
              _0_1 = A._InitializedCell$(new A._EvaluateVisitor_visitCssStyleRule_closure4(_0_0));
              if (_0_1._readFinal$0() >= 1) {
                lastChild = J.elementAt$1$ax(_0_0._collection$_source, _0_1._readFinal$0() - 1);
                t1 = t3;
              } else {
                lastChild = null;
                t1 = false;
              }
              if (t1)
                lastChild.isGroupEnd = true;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssStyleRule$1, $async$completer);
    },
    visitCssStylesheet$1(node) {
      return this.visitCssStylesheet$body$_EvaluateVisitor(node);
    },
    visitCssStylesheet$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$visitCssStylesheet$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.get$iterator$ax(node.get$children(node));
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              $async$goto = 4;
              return A._asyncAwait(t1.get$current(t1).accept$1($async$self), $async$visitCssStylesheet$1);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssStylesheet$1, $async$completer);
    },
    visitCssSupportsRule$1(node) {
      return this.visitCssSupportsRule$body$_EvaluateVisitor(node);
    },
    visitCssSupportsRule$body$_EvaluateVisitor(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssSupportsRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate$_exception$2(string$.Suppor, node.span));
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate$_withParent$2$4$scopeWhen$through(A.ModifiableCssSupportsRule$(node.condition, node.span), new A._EvaluateVisitor_visitCssSupportsRule_closure1($async$self, node), false, new A._EvaluateVisitor_visitCssSupportsRule_closure2(), type$.ModifiableCssSupportsRule, type$.Null), $async$visitCssSupportsRule$1);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssSupportsRule$1, $async$completer);
    },
    _async_evaluate$_handleReturn$1$2(list, callback) {
      return this._handleReturn$body$_EvaluateVisitor(list, callback);
    },
    _async_evaluate$_handleReturn$2(list, callback) {
      return this._async_evaluate$_handleReturn$1$2(list, callback, type$.dynamic);
    },
    _handleReturn$body$_EvaluateVisitor(list, callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, t1, _i, _0_0, result, t2;
      var $async$_async_evaluate$_handleReturn$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = list.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < list.length)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(callback.call$1(list[_i]), $async$_async_evaluate$_handleReturn$1$2);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t2 = true;
              } else {
                result = null;
                t2 = false;
              }
              if (t2) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              list.length === t1 || (0, A.throwConcurrentModificationError)(list), ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_handleReturn$1$2, $async$completer);
    },
    _async_evaluate$_withEnvironment$1$2(environment, callback, $T) {
      return this._withEnvironment$body$_EvaluateVisitor(environment, callback, $T, $T);
    },
    _withEnvironment$body$_EvaluateVisitor(environment, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, result, oldEnvironment;
      var $async$_async_evaluate$_withEnvironment$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldEnvironment = $async$self._async_evaluate$_environment;
              $async$self._async_evaluate$_environment = environment;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate$_withEnvironment$1$2);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$_environment = oldEnvironment;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_withEnvironment$1$2, $async$completer);
    },
    _async_evaluate$_interpolationToValue$3$trim$warnForColor(interpolation, trim, warnForColor) {
      return this._interpolationToValue$body$_EvaluateVisitor(interpolation, trim, warnForColor);
    },
    _async_evaluate$_interpolationToValue$1(interpolation) {
      return this._async_evaluate$_interpolationToValue$3$trim$warnForColor(interpolation, false, false);
    },
    _async_evaluate$_interpolationToValue$2$warnForColor(interpolation, warnForColor) {
      return this._async_evaluate$_interpolationToValue$3$trim$warnForColor(interpolation, false, warnForColor);
    },
    _interpolationToValue$body$_EvaluateVisitor(interpolation, trim, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CssValue_String),
        $async$returnValue, $async$self = this, result, t1;
      var $async$_async_evaluate$_interpolationToValue$3$trim$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolation$2$warnForColor(interpolation, warnForColor), $async$_async_evaluate$_interpolationToValue$3$trim$warnForColor);
            case 3:
              // returning from await.
              result = $async$result;
              t1 = trim ? A.trimAscii(result, true) : result;
              $async$returnValue = new A.CssValue(t1, interpolation.span, type$.CssValue_String);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_interpolationToValue$3$trim$warnForColor, $async$completer);
    },
    _async_evaluate$_performInterpolation$2$warnForColor(interpolation, warnForColor) {
      return this._performInterpolation$body$_EvaluateVisitor(interpolation, warnForColor);
    },
    _async_evaluate$_performInterpolation$1(interpolation) {
      return this._async_evaluate$_performInterpolation$2$warnForColor(interpolation, false);
    },
    _performInterpolation$body$_EvaluateVisitor(interpolation, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, result;
      var $async$_async_evaluate$_performInterpolation$2$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, false, warnForColor), $async$_async_evaluate$_performInterpolation$2$warnForColor);
            case 3:
              // returning from await.
              result = $async$result._0;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_performInterpolation$2$warnForColor, $async$completer);
    },
    _async_evaluate$_performInterpolationWithMap$2$warnForColor(interpolation, warnForColor) {
      return this._performInterpolationWithMap$body$_EvaluateVisitor(interpolation, true);
    },
    _performInterpolationWithMap$body$_EvaluateVisitor(interpolation, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_String_and_InterpolationMap),
        $async$returnValue, $async$self = this, _0_0, result, map;
      var $async$_async_evaluate$_performInterpolationWithMap$2$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, true, true), $async$_async_evaluate$_performInterpolationWithMap$2$warnForColor);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              result = _0_0._0;
              map = _0_0._1;
              map.toString;
              $async$returnValue = new A._Record_2(result, map);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_performInterpolationWithMap$2$warnForColor, $async$completer);
    },
    _async_evaluate$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, sourceMap, warnForColor) {
      return this._performInterpolationHelper$body$_EvaluateVisitor(interpolation, sourceMap, warnForColor);
    },
    _performInterpolationHelper$body$_EvaluateVisitor(interpolation, sourceMap, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_String_and_nullable_InterpolationMap),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, t6, t7, first, _i, t8, value, result, t9, result0, targetLocations, oldInSupportsDeclaration;
      var $async$_async_evaluate$_performInterpolationHelper$3$sourceMap$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              targetLocations = sourceMap ? A._setArrayType([], type$.JSArray_SourceLocation) : null;
              oldInSupportsDeclaration = $async$self._async_evaluate$_inSupportsDeclaration;
              $async$self._async_evaluate$_inSupportsDeclaration = false;
              t1 = interpolation.contents, t2 = t1.length, t3 = type$.Expression, t4 = targetLocations == null, t5 = type$.JSArray_Object, t6 = interpolation.span, t7 = type$.Object, first = true, _i = 0, t8 = "";
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              value = t1[_i];
              if (!first)
                if (!t4)
                  targetLocations.push(A.SourceLocation$(t8.length, null, null, null));
              if (typeof value == "string") {
                t8 += value;
                // goto for update
                $async$goto = 4;
                break;
              }
              t3._as(value);
              $async$goto = 6;
              return A._asyncAwait(value.accept$1($async$self), $async$_async_evaluate$_performInterpolationHelper$3$sourceMap$warnForColor);
            case 6:
              // returning from await.
              result = $async$result;
              if (warnForColor && $.$get$namesByColor().containsKey$1(result)) {
                t9 = A._setArrayType([""], t5);
                result0 = A.List_List$from(t9, false, t7);
                result0.fixed$length = Array;
                result0.immutable$list = Array;
                result0 = new A.Interpolation(result0, t6);
                result0.Interpolation$2(t9, t6);
                t9 = $.$get$namesByColor();
                $async$self._async_evaluate$_warn$2(string$.You_pr + A.S(t9.$index(0, result)) + string$.x20in_in + result.toString$0(0) + string$.x2c_whicw + A.S(t9.$index(0, result)) + string$.x22x29__If + new A.BinaryOperationExpression(B.BinaryOperator_anB, new A.StringExpression(result0, true), value, false).toString$0(0) + "'.", value.get$span(value));
              }
              t8 += $async$self._async_evaluate$_serialize$3$quote(result, value, false);
            case 4:
              // for update
              ++_i, first = false;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$self._async_evaluate$_inSupportsDeclaration = oldInSupportsDeclaration;
              $async$returnValue = new A._Record_2(t8.charCodeAt(0) == 0 ? t8 : t8, A.NullableExtension_andThen(targetLocations, new A._EvaluateVisitor__performInterpolationHelper_closure0(interpolation)));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_performInterpolationHelper$3$sourceMap$warnForColor, $async$completer);
    },
    _evaluateToCss$2$quote(expression, quote) {
      return this._evaluateToCss$body$_EvaluateVisitor(expression, quote);
    },
    _evaluateToCss$1(expression) {
      return this._evaluateToCss$2$quote(expression, true);
    },
    _evaluateToCss$body$_EvaluateVisitor(expression, quote) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this;
      var $async$_evaluateToCss$2$quote = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(expression.accept$1($async$self), $async$_evaluateToCss$2$quote);
            case 3:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate$_serialize$3$quote($async$result, expression, quote);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_evaluateToCss$2$quote, $async$completer);
    },
    _async_evaluate$_serialize$3$quote(value, nodeWithSpan, quote) {
      return this._async_evaluate$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__serialize_closure0(value, quote));
    },
    _async_evaluate$_serialize$2(value, nodeWithSpan) {
      return this._async_evaluate$_serialize$3$quote(value, nodeWithSpan, true);
    },
    _async_evaluate$_expressionNode$1(expression) {
      var t1;
      if (expression instanceof A.VariableExpression) {
        t1 = this._async_evaluate$_addExceptionSpan$2(expression, new A._EvaluateVisitor__expressionNode_closure0(this, expression));
        return t1 == null ? expression : t1;
      } else
        return expression;
    },
    _async_evaluate$_withParent$2$4$scopeWhen$through(node, callback, scopeWhen, through, $S, $T) {
      return this._withParent$body$_EvaluateVisitor(node, callback, scopeWhen, through, $S, $T, $T);
    },
    _async_evaluate$_withParent$2$2(node, callback, $S, $T) {
      return this._async_evaluate$_withParent$2$4$scopeWhen$through(node, callback, true, null, $S, $T);
    },
    _async_evaluate$_withParent$2$3$scopeWhen(node, callback, scopeWhen, $S, $T) {
      return this._async_evaluate$_withParent$2$4$scopeWhen$through(node, callback, scopeWhen, null, $S, $T);
    },
    _withParent$body$_EvaluateVisitor(node, callback, scopeWhen, through, $S, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, t1, result;
      var $async$_async_evaluate$_withParent$2$4$scopeWhen$through = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self._async_evaluate$_addChild$2$through(node, through);
              t1 = $async$self._async_evaluate$_assertInModule$2($async$self._async_evaluate$__parent, "__parent");
              $async$self._async_evaluate$__parent = node;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate$_environment.scope$1$2$when(callback, scopeWhen, $T), $async$_async_evaluate$_withParent$2$4$scopeWhen$through);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$__parent = t1;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_withParent$2$4$scopeWhen$through, $async$completer);
    },
    _async_evaluate$_addChild$2$through(node, through) {
      var _0_0, grandparent, t1,
        $parent = this._async_evaluate$_assertInModule$2(this._async_evaluate$__parent, "__parent");
      if (through != null) {
        for (; through.call$1($parent); $parent = grandparent) {
          _0_0 = $parent._parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t1 = true;
          } else {
            grandparent = null;
            t1 = false;
          }
          if (!t1)
            throw A.wrapException(A.ArgumentError$(string$.throug + node.toString$0(0) + ".", null));
        }
        if ($parent.get$hasFollowingSibling()) {
          grandparent = $parent._parent;
          t1 = grandparent.children;
          if ($parent.equalsIgnoringChildren$1(t1.get$last(t1)))
            $parent = type$.ModifiableCssParentNode._as(t1.get$last(t1));
          else {
            $parent = $parent.copyWithoutChildren$0();
            grandparent.addChild$1($parent);
          }
        }
      }
      $parent.addChild$1(node);
    },
    _async_evaluate$_addChild$1(node) {
      return this._async_evaluate$_addChild$2$through(node, null);
    },
    _async_evaluate$_withStyleRule$1$2(rule, callback, $T) {
      return this._withStyleRule$body$_EvaluateVisitor(rule, callback, $T, $T);
    },
    _withStyleRule$body$_EvaluateVisitor(rule, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, result, oldRule;
      var $async$_async_evaluate$_withStyleRule$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldRule = $async$self._async_evaluate$_styleRuleIgnoringAtRoot;
              $async$self._async_evaluate$_styleRuleIgnoringAtRoot = rule;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate$_withStyleRule$1$2);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$_styleRuleIgnoringAtRoot = oldRule;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_withStyleRule$1$2, $async$completer);
    },
    _async_evaluate$_withMediaQueries$1$3(queries, sources, callback, $T) {
      return this._withMediaQueries$body$_EvaluateVisitor(queries, sources, callback, $T, $T);
    },
    _withMediaQueries$body$_EvaluateVisitor(queries, sources, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, result, oldMediaQueries, oldSources;
      var $async$_async_evaluate$_withMediaQueries$1$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldMediaQueries = $async$self._async_evaluate$_mediaQueries;
              oldSources = $async$self._async_evaluate$_mediaQuerySources;
              $async$self._async_evaluate$_mediaQueries = queries;
              $async$self._async_evaluate$_mediaQuerySources = sources;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate$_withMediaQueries$1$3);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$_mediaQueries = oldMediaQueries;
              $async$self._async_evaluate$_mediaQuerySources = oldSources;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_withMediaQueries$1$3, $async$completer);
    },
    _async_evaluate$_withStackFrame$1$3(member, nodeWithSpan, callback, $T) {
      return this._withStackFrame$body$_EvaluateVisitor(member, nodeWithSpan, callback, $T, $T);
    },
    _withStackFrame$body$_EvaluateVisitor(member, nodeWithSpan, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, oldMember, result, t1;
      var $async$_async_evaluate$_withStackFrame$1$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate$_stack;
              t1.push(new A._Record_2($async$self._async_evaluate$_member, nodeWithSpan));
              oldMember = $async$self._async_evaluate$_member;
              $async$self._async_evaluate$_member = member;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate$_withStackFrame$1$3);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate$_member = oldMember;
              t1.pop();
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_withStackFrame$1$3, $async$completer);
    },
    _async_evaluate$_withoutSlash$2(value, nodeForSpan) {
      if (value instanceof A.SassNumber && value.asSlash != null && true)
        this._async_evaluate$_warn$3(string$.Using__i + A.S(new A._EvaluateVisitor__withoutSlash_recommendation0().call$1(value)) + string$.x0a_Morex20, nodeForSpan.get$span(nodeForSpan), B.Deprecation_xHK);
      return value.withoutSlash$0();
    },
    _async_evaluate$_stackFrame$2(member, span) {
      return A.frameForSpan(span, member, A.NullableExtension_andThen(span.get$sourceUrl(span), new A._EvaluateVisitor__stackFrame_closure0(this)));
    },
    _async_evaluate$_stackTrace$1(span) {
      var t2, t3, _i, t4, nodeWithSpan, _this = this,
        t1 = A._setArrayType([], type$.JSArray_Frame);
      for (t2 = _this._async_evaluate$_stack, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        t4 = t2[_i];
        nodeWithSpan = t4._1;
        t1.push(_this._async_evaluate$_stackFrame$2(t4._0, nodeWithSpan.get$span(nodeWithSpan)));
      }
      if (span != null)
        t1.push(_this._async_evaluate$_stackFrame$2(_this._async_evaluate$_member, span));
      return A.Trace$(new A.ReversedListIterable(t1, type$.ReversedListIterable_Frame), null);
    },
    _async_evaluate$_stackTrace$0() {
      return this._async_evaluate$_stackTrace$1(null);
    },
    _async_evaluate$_warn$3(message, span, deprecation) {
      var t1, trace, _this = this;
      if (_this._async_evaluate$_quietDeps)
        if (!_this._async_evaluate$_inDependency) {
          t1 = _this._async_evaluate$_currentCallable;
          t1 = t1 == null ? null : t1.inDependency;
          t1 = t1 === true;
        } else
          t1 = true;
      else
        t1 = false;
      if (t1)
        return;
      if (!_this._async_evaluate$_warningsEmitted.add$1(0, new A._Record_2(message, span)))
        return;
      trace = _this._async_evaluate$_stackTrace$1(span);
      t1 = _this._async_evaluate$_logger;
      if (deprecation == null)
        t1.warn$3$span$trace(0, message, span, trace);
      else
        A.WarnForDeprecation_warnForDeprecation(t1, deprecation, message, span, trace);
    },
    _async_evaluate$_warn$2(message, span) {
      return this._async_evaluate$_warn$3(message, span, null);
    },
    _async_evaluate$_exception$2(message, span) {
      var t1, t2;
      if (span == null) {
        t1 = B.JSArray_methods.get$last(this._async_evaluate$_stack)._1;
        t1 = t1.get$span(t1);
      } else
        t1 = span;
      t2 = this._async_evaluate$_stackTrace$1(span);
      return new A.SassRuntimeException(t2, B.Set_empty, message, t1);
    },
    _async_evaluate$_exception$1(message) {
      return this._async_evaluate$_exception$2(message, null);
    },
    _async_evaluate$_multiSpanException$3(message, primaryLabel, secondaryLabels) {
      var t1 = B.JSArray_methods.get$last(this._async_evaluate$_stack)._1;
      return A.MultiSpanSassRuntimeException$(message, t1.get$span(t1), primaryLabel, secondaryLabels, this._async_evaluate$_stackTrace$0(), null);
    },
    _async_evaluate$_addExceptionSpan$1$2(nodeWithSpan, callback) {
      var error, stackTrace, t1, exception,
        addStackFrame = true;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassScriptException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error.withSpan$1(nodeWithSpan.get$span(nodeWithSpan));
          A.throwWithTrace(t1.withTrace$1(this._async_evaluate$_stackTrace$1(addStackFrame ? nodeWithSpan.get$span(nodeWithSpan) : null)), error, stackTrace);
        } else
          throw exception;
      }
    },
    _async_evaluate$_addExceptionSpan$2(nodeWithSpan, callback) {
      return this._async_evaluate$_addExceptionSpan$1$2(nodeWithSpan, callback, type$.dynamic);
    },
    _addExceptionSpanAsync$1$3$addStackFrame(nodeWithSpan, callback, addStackFrame, $T) {
      return this._addExceptionSpanAsync$body$_EvaluateVisitor(nodeWithSpan, callback, addStackFrame, $T, $T);
    },
    _addExceptionSpanAsync$1$2(nodeWithSpan, callback, $T) {
      return this._addExceptionSpanAsync$1$3$addStackFrame(nodeWithSpan, callback, true, $T);
    },
    _addExceptionSpanAsync$body$_EvaluateVisitor(nodeWithSpan, callback, addStackFrame, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, $async$exception;
      var $async$_addExceptionSpanAsync$1$3$addStackFrame = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(callback.call$0(), $async$_addExceptionSpanAsync$1$3$addStackFrame);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassScriptException) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                t1 = error.withSpan$1(nodeWithSpan.get$span(nodeWithSpan));
                A.throwWithTrace(t1.withTrace$1($async$self._async_evaluate$_stackTrace$1(addStackFrame ? nodeWithSpan.get$span(nodeWithSpan) : null)), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_addExceptionSpanAsync$1$3$addStackFrame, $async$completer);
    },
    _async_evaluate$_addExceptionTrace$1$1(callback, $T) {
      return this._addExceptionTrace$body$_EvaluateVisitor(callback, $T, $T);
    },
    _addExceptionTrace$body$_EvaluateVisitor(callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, t2, $async$exception;
      var $async$_async_evaluate$_addExceptionTrace$1$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate$_addExceptionTrace$1$1);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (type$.SassRuntimeException._is(t1))
                throw $async$exception;
              else if (t1 instanceof A.SassException) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                t1 = error;
                t2 = J.getInterceptor$z(t1);
                A.throwWithTrace(error.withTrace$1($async$self._async_evaluate$_stackTrace$1(A.SourceSpanException.prototype.get$span.call(t2, t1))), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_addExceptionTrace$1$1, $async$completer);
    },
    _async_evaluate$_addErrorSpan$1$2(nodeWithSpan, callback, $T) {
      return this._addErrorSpan$body$_EvaluateVisitor(nodeWithSpan, callback, $T, $T);
    },
    _addErrorSpan$body$_EvaluateVisitor(nodeWithSpan, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, t2, t3, $async$exception;
      var $async$_async_evaluate$_addErrorSpan$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate$_addErrorSpan$1$2);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (type$.SassRuntimeException._is(t1)) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                if (!B.JSString_methods.startsWith$1(J.get$span$z(error).get$text(), "@error"))
                  throw $async$exception;
                t1 = error._span_exception$_message;
                t2 = nodeWithSpan.get$span(nodeWithSpan);
                t3 = $async$self._async_evaluate$_stackTrace$0();
                A.throwWithTrace(new A.SassRuntimeException(t3, B.Set_empty, t1, t2), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate$_addErrorSpan$1$2, $async$completer);
    }
  };
  A._EvaluateVisitor_closure12.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._async_evaluate$_environment;
      t2 = A.stringReplaceAllUnchecked(variable._string$_text, "_", "-");
      return t1.globalVariableExists$2$namespace(t2, module == null ? null : module._string$_text) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure13.prototype = {
    call$1($arguments) {
      var variable = J.$index$asx($arguments, 0).assertString$1("name"),
        t1 = this.$this._async_evaluate$_environment;
      return t1.getVariable$1(A.stringReplaceAllUnchecked(variable._string$_text, "_", "-")) != null ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure14.prototype = {
    call$1($arguments) {
      var module, t2, t3, t4,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._async_evaluate$_environment;
      t3 = variable._string$_text;
      t4 = A.stringReplaceAllUnchecked(t3, "_", "-");
      return t2.getFunction$2$namespace(t4, module == null ? null : module._string$_text) != null || t1._async_evaluate$_builtInFunctions.containsKey$1(t3) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure15.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._async_evaluate$_environment;
      t2 = A.stringReplaceAllUnchecked(variable._string$_text, "_", "-");
      return t1.getMixin$2$namespace(t2, module == null ? null : module._string$_text) != null ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure16.prototype = {
    call$1($arguments) {
      var t1 = this.$this._async_evaluate$_environment;
      if (!t1._async_environment$_inMixin)
        throw A.wrapException(A.SassScriptException$(string$.conten, null));
      return t1._async_environment$_content != null ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure17.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string$_text,
        module = this.$this._async_evaluate$_environment._async_environment$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs(module.get$variables(), type$.String, t1), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString($name, true), value);
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 40
  };
  A._EvaluateVisitor_closure18.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string$_text,
        module = this.$this._async_evaluate$_environment._async_environment$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs(module.get$functions(module), type$.String, type$.AsyncCallable), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString($name, true), new A.SassFunction(value));
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 40
  };
  A._EvaluateVisitor_closure19.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string$_text,
        module = this.$this._async_evaluate$_environment._async_environment$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs(module.get$mixins(), type$.String, type$.AsyncCallable), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString($name, true), new A.SassMixin(value));
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 40
  };
  A._EvaluateVisitor_closure20.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name"),
        css = t1.$index($arguments, 1).get$isTruthy();
      t1 = t1.$index($arguments, 2).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      if (css) {
        if (module != null)
          throw A.wrapException(string$.x24css_a);
        return new A.SassFunction(new A.PlainCssCallable($name._string$_text));
      }
      t1 = this.$this;
      t2 = t1._async_evaluate$_callableNode;
      t2.toString;
      callable = t1._async_evaluate$_addExceptionSpan$2(t2, new A._EvaluateVisitor__closure6(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Function not found: " + $name.toString$0(0));
      return new A.SassFunction(callable);
    },
    $signature: 222
  };
  A._EvaluateVisitor__closure6.prototype = {
    call$0() {
      var local,
        normalizedName = A.stringReplaceAllUnchecked(this.name._string$_text, "_", "-"),
        t1 = this.module,
        namespace = t1 == null ? null : t1._string$_text;
      t1 = this.$this;
      local = t1._async_evaluate$_environment.getFunction$2$namespace(normalizedName, namespace);
      if (local != null || namespace != null)
        return local;
      return t1._async_evaluate$_builtInFunctions.$index(0, normalizedName);
    },
    $signature: 97
  };
  A._EvaluateVisitor_closure21.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._async_evaluate$_callableNode;
      t2.toString;
      callable = t1._async_evaluate$_addExceptionSpan$2(t2, new A._EvaluateVisitor__closure5(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Mixin not found: " + $name.toString$0(0));
      return new A.SassMixin(callable);
    },
    $signature: 224
  };
  A._EvaluateVisitor__closure5.prototype = {
    call$0() {
      var t1 = this.$this._async_evaluate$_environment,
        t2 = A.stringReplaceAllUnchecked(this.name._string$_text, "_", "-"),
        t3 = this.module;
      return t1.getMixin$2$namespace(t2, t3 == null ? null : t3._string$_text);
    },
    $signature: 97
  };
  A._EvaluateVisitor_closure22.prototype = {
    call$1($arguments) {
      return this.$call$body$_EvaluateVisitor_closure1($arguments);
    },
    $call$body$_EvaluateVisitor_closure1($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, $name, value, invocation, callableNode, t1, $function, args;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.getInterceptor$asx($arguments);
              $function = t1.$index($arguments, 0);
              args = type$.SassArgumentList._as(t1.$index($arguments, 1));
              t1 = $async$self.$this;
              t2 = t1._async_evaluate$_callableNode;
              t2.toString;
              t3 = A._setArrayType([], type$.JSArray_Expression);
              t4 = type$.String;
              t5 = type$.Expression;
              t6 = t2.get$span(t2);
              t7 = t2.get$span(t2);
              args._wereKeywordsAccessed = true;
              t8 = args._keywords;
              if (t8.get$isEmpty(t8))
                t2 = null;
              else {
                t9 = type$.Value;
                t10 = A.LinkedHashMap_LinkedHashMap$_empty(t9, t9);
                for (args._wereKeywordsAccessed = true, t8 = A.MapExtensions_get_pairs(t8, t4, t9), t8 = t8.get$iterator(t8); t8.moveNext$0();) {
                  t11 = t8.get$current(t8);
                  $name = t11._0;
                  value = t11._1;
                  value = value;
                  t10.$indexSet(0, new A.SassString($name, false), value);
                }
                t2 = new A.ValueExpression(new A.SassMap(A.ConstantMap_ConstantMap$from(t10, t9, t9)), t2.get$span(t2));
              }
              invocation = new A.ArgumentInvocation(A.List_List$unmodifiable(t3, t5), A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t4, t5), new A.ValueExpression(args, t7), t2, t6);
              $async$goto = $function instanceof A.SassString ? 3 : 4;
              break;
            case 3:
              // then
              t2 = $function.toString$0(0);
              A.EvaluationContext_current().warn$2(0, string$.Passina + t2 + "))", B.Deprecation_qVK);
              callableNode = t1._async_evaluate$_callableNode;
              $async$goto = 5;
              return A._asyncAwait(t1.visitFunctionExpression$1(new A.FunctionExpression(null, $function._string$_text, invocation, callableNode.get$span(callableNode))), $async$call$1);
            case 5:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              t2 = $function.assertFunction$1("function");
              t3 = t1._async_evaluate$_callableNode;
              t3.toString;
              $async$goto = 6;
              return A._asyncAwait(t1._async_evaluate$_runFunctionCallable$3(invocation, t2.callable, t3), $async$call$1);
            case 6:
              // returning from await.
              t3 = $async$result;
              $async$returnValue = t3;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 159
  };
  A._EvaluateVisitor_closure23.prototype = {
    call$1($arguments) {
      return this.$call$body$_EvaluateVisitor_closure0($arguments);
    },
    $call$body$_EvaluateVisitor_closure0($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, withMap, t2, values, configuration, t3, t1, url;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.getInterceptor$asx($arguments);
              url = A.Uri_parse(t1.$index($arguments, 0).assertString$1("url")._string$_text);
              t1 = t1.$index($arguments, 1).get$realNull();
              withMap = t1 == null ? null : t1.assertMap$1("with")._map$_contents;
              t1 = $async$self.$this;
              t2 = t1._async_evaluate$_callableNode;
              t2.toString;
              if (withMap != null) {
                values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue);
                withMap.forEach$1(0, new A._EvaluateVisitor__closure3(values, t2.get$span(t2), t2));
                configuration = new A.ExplicitConfiguration(t2, values, null);
              } else
                configuration = B.Configuration_Map_empty_null;
              t3 = t2.get$span(t2);
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_loadModule$7$baseUrl$configuration$namesInErrors(url, "load-css()", t2, new A._EvaluateVisitor__closure4(t1), t3.get$sourceUrl(t3), configuration, true), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate$_assertConfigurationIsEmpty$2$nameInError(configuration, true);
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 226
  };
  A._EvaluateVisitor__closure3.prototype = {
    call$2(variable, value) {
      var t1 = variable.assertString$1("with key"),
        $name = A.stringReplaceAllUnchecked(t1._string$_text, "_", "-");
      t1 = this.values;
      if (t1.containsKey$1($name))
        throw A.wrapException("The variable $" + $name + " was configured twice.");
      t1.$indexSet(0, $name, new A.ConfiguredValue(value, this.span, this.callableNode));
    },
    $signature: 106
  };
  A._EvaluateVisitor__closure4.prototype = {
    call$2(module, _) {
      var t1 = this.$this;
      return t1._async_evaluate$_combineCss$2$clone(module, true).accept$1(t1);
    },
    $signature: 438
  };
  A._EvaluateVisitor_closure24.prototype = {
    call$1($arguments) {
      return this.$call$body$_EvaluateVisitor_closure($arguments);
    },
    $call$body$_EvaluateVisitor_closure($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, callableNode, t2, t3, t4, t5, t1, mixin, args;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.getInterceptor$asx($arguments);
              mixin = t1.$index($arguments, 0);
              args = type$.SassArgumentList._as(t1.$index($arguments, 1));
              t1 = $async$self.$this;
              callableNode = t1._async_evaluate$_callableNode;
              t2 = callableNode.get$span(callableNode);
              t3 = callableNode.get$span(callableNode);
              t4 = type$.Expression;
              t5 = A.List_List$unmodifiable(B.List_empty9, t4);
              t4 = A.ConstantMap_ConstantMap$from(B.Map_empty6, type$.String, t4);
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_applyMixin$5(mixin.assertMixin$1("mixin").callable, t1._async_evaluate$_environment._async_environment$_content, new A.ArgumentInvocation(t5, t4, new A.ValueExpression(args, t3), null, t2), callableNode, callableNode), $async$call$1);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 226
  };
  A._EvaluateVisitor_run_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet),
        $async$returnValue, $async$self = this, module, url, t1, t2, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              url = null;
              t1 = $async$self.node;
              t2 = t1.span;
              _0_0 = t2.get$sourceUrl(t2);
              if (_0_0 != null) {
                url = _0_0;
                t2 = true;
              } else
                t2 = false;
              if (t2) {
                t2 = $async$self.$this;
                t2._async_evaluate$_activeModules.$indexSet(0, url, null);
                t2._async_evaluate$_loadedUrls.add$1(0, url);
              }
              t2 = $async$self.$this;
              $async$goto = 3;
              return A._asyncAwait(t2._async_evaluate$_addExceptionTrace$1$1(new A._EvaluateVisitor_run__closure0(t2, $async$self.importer, t1), type$.Module_AsyncCallable), $async$call$0);
            case 3:
              // returning from await.
              module = $async$result;
              $async$returnValue = new A._Record_2_loadedUrls_stylesheet(t2._async_evaluate$_loadedUrls, t2._async_evaluate$_combineCss$1(module));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 442
  };
  A._EvaluateVisitor_run__closure0.prototype = {
    call$0() {
      return this.$this._async_evaluate$_execute$2(this.importer, this.node);
    },
    $signature: 443
  };
  A._EvaluateVisitor__loadModule_closure1.prototype = {
    call$0() {
      return this.callback.call$2(this._box_1.builtInModule, false);
    },
    $signature: 0
  };
  A._EvaluateVisitor__loadModule_closure2.prototype = {
    call$0() {
      return this.$call$body$_EvaluateVisitor__loadModule_closure();
    },
    $call$body$_EvaluateVisitor__loadModule_closure() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$handler = 1, $async$currentError, $async$next = [], $async$self = this, canonicalUrl, oldInDependency, isDependency, t4, message, t1, stylesheet, importer, t2, t3, _1_0, $async$temp1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              stylesheet = null;
              importer = null;
              t2 = $async$self.$this;
              t3 = $async$self.nodeWithSpan;
              $async$goto = 2;
              return A._asyncAwait(t2._async_evaluate$_loadStylesheet$3$baseUrl($async$self.url.toString$0(0), t3.get$span(t3), $async$self.baseUrl), $async$call$0);
            case 2:
              // returning from await.
              _1_0 = $async$result;
              stylesheet = _1_0._0;
              importer = _1_0._1;
              isDependency = _1_0._2;
              isDependency = isDependency;
              t4 = stylesheet.span;
              canonicalUrl = t4.get$sourceUrl(t4);
              if (canonicalUrl != null) {
                t4 = t2._async_evaluate$_activeModules;
                if (t4.containsKey$1(canonicalUrl)) {
                  message = $async$self.namesInErrors ? "Module loop: " + $.$get$context().prettyUri$1(canonicalUrl) + " is already being loaded." : string$.Modulel;
                  t1 = A.NullableExtension_andThen(t4.$index(0, canonicalUrl), new A._EvaluateVisitor__loadModule__closure1(t2, message));
                  throw A.wrapException(t1 == null ? t2._async_evaluate$_exception$1(message) : t1);
                } else
                  t4.$indexSet(0, canonicalUrl, t3);
              }
              t4 = t2._async_evaluate$_modules.containsKey$1(canonicalUrl);
              oldInDependency = t2._async_evaluate$_inDependency;
              t2._async_evaluate$_inDependency = isDependency;
              t1.module = null;
              $async$handler = 3;
              $async$temp1 = t1;
              $async$goto = 6;
              return A._asyncAwait(t2._async_evaluate$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, $async$self.configuration, $async$self.namesInErrors, t3), $async$call$0);
            case 6:
              // returning from await.
              $async$temp1.module = $async$result;
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [1];
            case 4:
              // finally
              $async$handler = 1;
              t2._async_evaluate$_activeModules.remove$1(0, canonicalUrl);
              t2._async_evaluate$_inDependency = oldInDependency;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
              $async$goto = 7;
              return A._asyncAwait(t2._addExceptionSpanAsync$1$3$addStackFrame(t3, new A._EvaluateVisitor__loadModule__closure2(t1, $async$self.callback, !t4), false, type$.void), $async$call$0);
            case 7:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__loadModule__closure1.prototype = {
    call$1(previousLoad) {
      return this.$this._async_evaluate$_multiSpanException$3(this.message, "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 81
  };
  A._EvaluateVisitor__loadModule__closure2.prototype = {
    call$0() {
      return this.callback.call$2(this._box_0.module, this.firstLoad);
    },
    $signature: 0
  };
  A._EvaluateVisitor__execute_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t3, t4, t5, t6, t1, oldImporter, oldStylesheet, oldRoot, oldPreModuleComments, oldParent, oldEndOfImports, oldOutOfOrderImports, oldExtensionStore, t2, oldStyleRule, oldMediaQueries, oldDeclarationName, oldInUnknownAtRule, oldInKeyframes, oldConfiguration;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              oldImporter = t1._async_evaluate$_importer;
              oldStylesheet = t1._async_evaluate$__stylesheet;
              oldRoot = t1._async_evaluate$__root;
              oldPreModuleComments = t1._async_evaluate$_preModuleComments;
              oldParent = t1._async_evaluate$__parent;
              oldEndOfImports = t1._async_evaluate$__endOfImports;
              oldOutOfOrderImports = t1._async_evaluate$_outOfOrderImports;
              oldExtensionStore = t1._async_evaluate$__extensionStore;
              t2 = t1._async_evaluate$_atRootExcludingStyleRule;
              oldStyleRule = t2 ? null : t1._async_evaluate$_styleRuleIgnoringAtRoot;
              oldMediaQueries = t1._async_evaluate$_mediaQueries;
              oldDeclarationName = t1._async_evaluate$_declarationName;
              oldInUnknownAtRule = t1._async_evaluate$_inUnknownAtRule;
              oldInKeyframes = t1._async_evaluate$_inKeyframes;
              oldConfiguration = t1._async_evaluate$_configuration;
              t1._async_evaluate$_importer = $async$self.importer;
              t3 = t1._async_evaluate$__stylesheet = $async$self.stylesheet;
              t4 = t3.span;
              t5 = t1._async_evaluate$__parent = t1._async_evaluate$__root = A.ModifiableCssStylesheet$(t4);
              t1._async_evaluate$__endOfImports = 0;
              t1._async_evaluate$_outOfOrderImports = null;
              t1._async_evaluate$__extensionStore = $async$self.extensionStore;
              t1._async_evaluate$_declarationName = t1._async_evaluate$_mediaQueries = t1._async_evaluate$_styleRuleIgnoringAtRoot = null;
              t1._async_evaluate$_inKeyframes = t1._async_evaluate$_atRootExcludingStyleRule = t1._async_evaluate$_inUnknownAtRule = false;
              t6 = $async$self.configuration;
              if (t6 != null)
                t1._async_evaluate$_configuration = t6;
              $async$goto = 2;
              return A._asyncAwait(t1.visitStylesheet$1(t3), $async$call$0);
            case 2:
              // returning from await.
              t3 = t1._async_evaluate$_outOfOrderImports == null ? t5 : new A.CssStylesheet(new A.UnmodifiableListView(t1._async_evaluate$_addOutOfOrderImports$0(), type$.UnmodifiableListView_CssNode), t4);
              $async$self.css._value = t3;
              $async$self.preModuleComments._value = t1._async_evaluate$_preModuleComments;
              t1._async_evaluate$_importer = oldImporter;
              t1._async_evaluate$__stylesheet = oldStylesheet;
              t1._async_evaluate$__root = oldRoot;
              t1._async_evaluate$_preModuleComments = oldPreModuleComments;
              t1._async_evaluate$__parent = oldParent;
              t1._async_evaluate$__endOfImports = oldEndOfImports;
              t1._async_evaluate$_outOfOrderImports = oldOutOfOrderImports;
              t1._async_evaluate$__extensionStore = oldExtensionStore;
              t1._async_evaluate$_styleRuleIgnoringAtRoot = oldStyleRule;
              t1._async_evaluate$_mediaQueries = oldMediaQueries;
              t1._async_evaluate$_declarationName = oldDeclarationName;
              t1._async_evaluate$_inUnknownAtRule = oldInUnknownAtRule;
              t1._async_evaluate$_atRootExcludingStyleRule = t2;
              t1._async_evaluate$_inKeyframes = oldInKeyframes;
              t1._async_evaluate$_configuration = oldConfiguration;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__combineCss_closure1.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 146
  };
  A._EvaluateVisitor__combineCss_closure2.prototype = {
    call$1(target) {
      return !this.selectors.contains$1(0, target);
    },
    $signature: 16
  };
  A._EvaluateVisitor__combineCss_visitModule0.prototype = {
    call$1(module) {
      var t1, t2, t3, t4, _i, upstream, _1_0, comments, t5, statements, index, _this = this;
      if (!_this.seen.add$1(0, module))
        return;
      if (_this.clone)
        module = module.cloneCss$0();
      for (t1 = module.get$upstream(), t2 = t1.length, t3 = _this.css, t4 = _this.imports, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        upstream = t1[_i];
        if (upstream.get$transitivelyContainsCss()) {
          _1_0 = module.get$preModuleComments().$index(0, upstream);
          if (_1_0 != null) {
            comments = _1_0;
            t5 = true;
          } else {
            comments = null;
            t5 = false;
          }
          if (t5)
            B.JSArray_methods.addAll$1(t3.length === 0 ? t4 : t3, comments);
          _this.call$1(upstream);
        }
      }
      _this.sorted.addFirst$1(module);
      t1 = module.get$css(module);
      statements = t1.get$children(t1);
      index = _this.$this._async_evaluate$_indexAfterImports$1(statements);
      t1 = J.getInterceptor$ax(statements);
      B.JSArray_methods.addAll$1(t4, t1.getRange$2(statements, 0, index));
      B.JSArray_methods.addAll$1(t3, t1.getRange$2(statements, index, t1.get$length(statements)));
    },
    $signature: 449
  };
  A._EvaluateVisitor__extendModules_closure1.prototype = {
    call$1(target) {
      return !this.originalSelectors.contains$1(0, target);
    },
    $signature: 16
  };
  A._EvaluateVisitor__extendModules_closure2.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_ExtensionStore);
    },
    $signature: 229
  };
  A._EvaluateVisitor_visitAtRootRule_closure1.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitAtRootRule_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__scopeForAtRoot_closure5.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__parent, "__parent");
              t1._async_evaluate$__parent = $async$self.newParent;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_environment.scope$1$2$when(callback, $async$self.node.hasDeclarations, type$.void), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate$__parent = t2;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot_closure6.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, oldAtRootExcludingStyleRule;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              oldAtRootExcludingStyleRule = t1._async_evaluate$_atRootExcludingStyleRule;
              t1._async_evaluate$_atRootExcludingStyleRule = true;
              $async$goto = 2;
              return A._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot_closure7.prototype = {
    call$1(callback) {
      return this.$this._async_evaluate$_withMediaQueries$1$3(null, null, new A._EvaluateVisitor__scopeForAtRoot__closure0(this.innerScope, callback), type$.Null);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot__closure0.prototype = {
    call$0() {
      return this.innerScope.call$1(this.callback);
    },
    $signature: 4
  };
  A._EvaluateVisitor__scopeForAtRoot_closure8.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, wasInKeyframes;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              wasInKeyframes = t1._async_evaluate$_inKeyframes;
              t1._async_evaluate$_inKeyframes = false;
              $async$goto = 2;
              return A._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate$_inKeyframes = wasInKeyframes;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot_closure9.prototype = {
    call$1($parent) {
      return $parent instanceof A.ModifiableCssAtRule;
    },
    $signature: 237
  };
  A._EvaluateVisitor__scopeForAtRoot_closure10.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, wasInUnknownAtRule;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              wasInUnknownAtRule = t1._async_evaluate$_inUnknownAtRule;
              t1._async_evaluate$_inUnknownAtRule = false;
              $async$goto = 2;
              return A._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate$_inUnknownAtRule = wasInUnknownAtRule;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor_visitContentRule_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$returnValue, $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.content.declaration.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 6:
              // returning from await.
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitDeclaration_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._box_0.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitEachRule_closure2.prototype = {
    call$1(value) {
      var t1 = this.$this,
        t2 = this.nodeWithSpan;
      return t1._async_evaluate$_environment.setLocalVariable$3(this._box_0.variable, t1._async_evaluate$_withoutSlash$2(value, t2), t2);
    },
    $signature: 63
  };
  A._EvaluateVisitor_visitEachRule_closure3.prototype = {
    call$1(value) {
      return this.$this._async_evaluate$_setMultipleVariables$3(this._box_0.variables, value, this.nodeWithSpan);
    },
    $signature: 63
  };
  A._EvaluateVisitor_visitEachRule_closure4.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      return t1._async_evaluate$_handleReturn$2(_this.list.get$asList(), new A._EvaluateVisitor_visitEachRule__closure0(t1, _this.setVariables, _this.node));
    },
    $signature: 70
  };
  A._EvaluateVisitor_visitEachRule__closure0.prototype = {
    call$1(element) {
      var t1;
      this.setVariables.call$1(element);
      t1 = this.$this;
      return t1._async_evaluate$_handleReturn$2(this.node.children, new A._EvaluateVisitor_visitEachRule___closure0(t1));
    },
    $signature: 468
  };
  A._EvaluateVisitor_visitEachRule___closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 114
  };
  A._EvaluateVisitor_visitAtRule_closure2.prototype = {
    call$1(value) {
      return this.$this._async_evaluate$_interpolationToValue$3$trim$warnForColor(value, true, true);
    },
    $signature: 472
  };
  A._EvaluateVisitor_visitAtRule_closure3.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t2, t3, _i, t1, styleRule;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              styleRule = t1._async_evaluate$_atRootExcludingStyleRule ? null : t1._async_evaluate$_styleRuleIgnoringAtRoot;
              $async$goto = styleRule == null || t1._async_evaluate$_inKeyframes || J.$eq$($async$self.name.value, "font-face") ? 2 : 4;
              break;
            case 2:
              // then
              t2 = $async$self.children, t3 = t2.length, _i = 0;
            case 5:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 7;
                break;
              }
              $async$goto = 8;
              return A._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
            case 6:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 5;
              break;
            case 7:
              // after for
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              $async$goto = 9;
              return A._asyncAwait(t1._async_evaluate$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitAtRule__closure0(t1, $async$self.children), false, type$.ModifiableCssStyleRule, type$.Null), $async$call$0);
            case 9:
              // returning from await.
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitAtRule__closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitAtRule_closure4.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitForRule_closure4.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassNumber),
        $async$returnValue, $async$self = this;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self.node.from.accept$1($async$self.$this), $async$call$0);
            case 3:
              // returning from await.
              $async$returnValue = $async$result.assertNumber$0();
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 248
  };
  A._EvaluateVisitor_visitForRule_closure5.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassNumber),
        $async$returnValue, $async$self = this;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self.node.to.accept$1($async$self.$this), $async$call$0);
            case 3:
              // returning from await.
              $async$returnValue = $async$result.assertNumber$0();
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 248
  };
  A._EvaluateVisitor_visitForRule_closure6.prototype = {
    call$0() {
      return this.fromNumber.assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure7.prototype = {
    call$0() {
      var t1 = this.fromNumber;
      return this.toNumber.coerce$2(t1.get$numeratorUnits(t1), t1.get$denominatorUnits(t1)).assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure8.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, i, t3, t4, t5, t6, t7, t8, _0_0, result, t1, t2, nodeWithSpan;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.node;
              nodeWithSpan = t1._async_evaluate$_expressionNode$1(t2.from);
              i = $async$self.from, t3 = $async$self._box_0, t4 = $async$self.direction, t5 = t2.variable, t6 = $async$self.fromNumber, t2 = t2.children;
            case 3:
              // for condition
              if (!(i !== t3.to)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              t7 = t1._async_evaluate$_environment;
              t8 = t6.get$numeratorUnits(t6);
              t7.setLocalVariable$3(t5, A.SassNumber_SassNumber$withUnits(i, t6.get$denominatorUnits(t6), t8), nodeWithSpan);
              $async$goto = 6;
              return A._asyncAwait(t1._async_evaluate$_handleReturn$2(t2, new A._EvaluateVisitor_visitForRule__closure0(t1)), $async$call$0);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t7 = true;
              } else {
                result = null;
                t7 = false;
              }
              if (t7) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              i += t4;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 70
  };
  A._EvaluateVisitor_visitForRule__closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 114
  };
  A._EvaluateVisitor_visitForwardRule_closure1.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._async_evaluate$_registerCommentsForModule$1(module);
      this.$this._async_evaluate$_environment.forwardModule$2(module, this.node);
    },
    $signature: 129
  };
  A._EvaluateVisitor_visitForwardRule_closure2.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._async_evaluate$_registerCommentsForModule$1(module);
      this.$this._async_evaluate$_environment.forwardModule$2(module, this.node);
    },
    $signature: 129
  };
  A._EvaluateVisitor__registerCommentsForModule_closure0.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_CssComment);
    },
    $signature: 260
  };
  A._EvaluateVisitor_visitIfRule_closure0.prototype = {
    call$1(clause) {
      var t1 = this.$this;
      return t1._async_evaluate$_environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitIfRule__closure0(t1, clause), true, clause.hasDeclarations, type$.nullable_Value);
    },
    $signature: 480
  };
  A._EvaluateVisitor_visitIfRule__closure0.prototype = {
    call$0() {
      var t1 = this.$this;
      return t1._async_evaluate$_handleReturn$2(this.clause.children, new A._EvaluateVisitor_visitIfRule___closure0(t1));
    },
    $signature: 70
  };
  A._EvaluateVisitor_visitIfRule___closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 114
  };
  A._EvaluateVisitor__visitDynamicImport_closure0.prototype = {
    call$0() {
      return this.$call$body$_EvaluateVisitor__visitDynamicImport_closure();
    },
    $call$body$_EvaluateVisitor__visitDynamicImport_closure() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, t1, t2, _0_0, stylesheet, t3, isDependency, t4, t5, url, t6, oldImporter, oldInDependency, loadsUserDefinedModules, children, t7, t8, t9, t10, environment, module, visitor, _box_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              _box_0.isDependency = _box_0.importer = _box_0.stylesheet = null;
              t1 = $async$self.$this;
              t2 = $async$self.$import;
              $async$goto = 3;
              return A._asyncAwait(t1._async_evaluate$_loadStylesheet$3$forImport(t2.urlString, t2.span, true), $async$call$0);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              stylesheet = _box_0.stylesheet = _0_0._0;
              t3 = _box_0.importer = _0_0._1;
              isDependency = _0_0._2;
              _box_0.isDependency = isDependency;
              t4 = isDependency;
              t5 = stylesheet.span;
              url = t5.get$sourceUrl(t5);
              if (url != null) {
                t5 = t1._async_evaluate$_activeModules;
                if (t5.containsKey$1(url)) {
                  t2 = A.NullableExtension_andThen(t5.$index(0, url), new A._EvaluateVisitor__visitDynamicImport__closure3(t1));
                  throw A.wrapException(t2 == null ? t1._async_evaluate$_exception$1("This file is already being loaded.") : t2);
                }
                t5.$indexSet(0, url, t2);
              }
              t2 = stylesheet._uses;
              t5 = type$.UnmodifiableListView_UseRule;
              t6 = new A.UnmodifiableListView(t2, t5);
              if (t6.get$length(t6) === 0) {
                t6 = new A.UnmodifiableListView(stylesheet._forwards, type$.UnmodifiableListView_ForwardRule);
                t6 = t6.get$length(t6) === 0;
              } else
                t6 = false;
              $async$goto = t6 ? 4 : 5;
              break;
            case 4:
              // then
              oldImporter = t1._async_evaluate$_importer;
              t2 = t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__stylesheet, "_stylesheet");
              oldInDependency = t1._async_evaluate$_inDependency;
              t1._async_evaluate$_importer = t3;
              t1._async_evaluate$__stylesheet = stylesheet;
              t1._async_evaluate$_inDependency = t4;
              $async$goto = 6;
              return A._asyncAwait(t1.visitStylesheet$1(stylesheet), $async$call$0);
            case 6:
              // returning from await.
              t1._async_evaluate$_importer = oldImporter;
              t1._async_evaluate$__stylesheet = t2;
              t1._async_evaluate$_inDependency = oldInDependency;
              t1._async_evaluate$_activeModules.remove$1(0, url);
              // goto return
              $async$goto = 1;
              break;
            case 5:
              // join
              t2 = new A.UnmodifiableListView(t2, t5);
              if (!t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure4())) {
                t2 = new A.UnmodifiableListView(stylesheet._forwards, type$.UnmodifiableListView_ForwardRule);
                loadsUserDefinedModules = t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure5());
              } else
                loadsUserDefinedModules = true;
              children = A._Cell$();
              t2 = t1._async_evaluate$_environment;
              t3 = type$.String;
              t4 = type$.Module_AsyncCallable;
              t5 = type$.AstNode;
              t6 = A._setArrayType([], type$.JSArray_Module_AsyncCallable);
              t7 = t2._async_environment$_variables;
              t7 = A._setArrayType(t7.slice(0), A._arrayInstanceType(t7));
              t8 = t2._async_environment$_variableNodes;
              t8 = A._setArrayType(t8.slice(0), A._arrayInstanceType(t8));
              t9 = t2._async_environment$_functions;
              t9 = A._setArrayType(t9.slice(0), A._arrayInstanceType(t9));
              t10 = t2._async_environment$_mixins;
              t10 = A._setArrayType(t10.slice(0), A._arrayInstanceType(t10));
              environment = A.AsyncEnvironment$_(A.LinkedHashMap_LinkedHashMap$_empty(t3, t4), A.LinkedHashMap_LinkedHashMap$_empty(t3, t5), A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t2._async_environment$_importedModules, null, null, t6, t7, t8, t9, t10, t2._async_environment$_content);
              $async$goto = 7;
              return A._asyncAwait(t1._async_evaluate$_withEnvironment$1$2(environment, new A._EvaluateVisitor__visitDynamicImport__closure6(_box_0, t1, loadsUserDefinedModules, environment, children), type$.Null), $async$call$0);
            case 7:
              // returning from await.
              module = environment.toDummyModule$0();
              t1._async_evaluate$_environment.importForwards$1(module);
              $async$goto = loadsUserDefinedModules ? 8 : 9;
              break;
            case 8:
              // then
              $async$goto = module.transitivelyContainsCss ? 10 : 11;
              break;
            case 10:
              // then
              $async$goto = 12;
              return A._asyncAwait(t1._async_evaluate$_combineCss$2$clone(module, module.transitivelyContainsExtensions).accept$1(t1), $async$call$0);
            case 12:
              // returning from await.
            case 11:
              // join
              visitor = new A._ImportedCssVisitor0(t1);
              for (t2 = J.get$iterator$ax(children._readLocal$0()); t2.moveNext$0();)
                t2.get$current(t2).accept$1(visitor);
            case 9:
              // join
              t1._async_evaluate$_activeModules.remove$1(0, url);
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__visitDynamicImport__closure3.prototype = {
    call$1(previousLoad) {
      return this.$this._async_evaluate$_multiSpanException$3("This file is already being loaded.", "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 81
  };
  A._EvaluateVisitor__visitDynamicImport__closure4.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 275
  };
  A._EvaluateVisitor__visitDynamicImport__closure5.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 283
  };
  A._EvaluateVisitor__visitDynamicImport__closure6.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t7, t8, t1, oldImporter, t2, t3, t4, t5, oldOutOfOrderImports, oldConfiguration, oldInDependency, t6;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              oldImporter = t1._async_evaluate$_importer;
              t2 = t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__stylesheet, "_stylesheet");
              t3 = t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__root, "_root");
              t4 = t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__parent, "__parent");
              t5 = t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__endOfImports, "_endOfImports");
              oldOutOfOrderImports = t1._async_evaluate$_outOfOrderImports;
              oldConfiguration = t1._async_evaluate$_configuration;
              oldInDependency = t1._async_evaluate$_inDependency;
              t6 = $async$self._box_0;
              t1._async_evaluate$_importer = t6.importer;
              t7 = t6.stylesheet;
              t1._async_evaluate$__stylesheet = t7;
              t8 = $async$self.loadsUserDefinedModules;
              if (t8) {
                t7 = A.ModifiableCssStylesheet$(t7.span);
                t1._async_evaluate$__root = t7;
                t1._async_evaluate$__parent = t1._async_evaluate$_assertInModule$2(t7, "_root");
                t1._async_evaluate$__endOfImports = 0;
                t1._async_evaluate$_outOfOrderImports = null;
              }
              t1._async_evaluate$_inDependency = t6.isDependency;
              t7 = new A.UnmodifiableListView(t6.stylesheet._forwards, type$.UnmodifiableListView_ForwardRule);
              if (!t7.get$isEmpty(t7))
                t1._async_evaluate$_configuration = $async$self.environment.toImplicitConfiguration$0();
              $async$goto = 2;
              return A._asyncAwait(t1.visitStylesheet$1(t6.stylesheet), $async$call$0);
            case 2:
              // returning from await.
              t6 = t8 ? t1._async_evaluate$_addOutOfOrderImports$0() : A._setArrayType([], type$.JSArray_ModifiableCssNode);
              $async$self.children._value = t6;
              t1._async_evaluate$_importer = oldImporter;
              t1._async_evaluate$__stylesheet = t2;
              if (t8) {
                t1._async_evaluate$__root = t3;
                t1._async_evaluate$__parent = t4;
                t1._async_evaluate$__endOfImports = t5;
                t1._async_evaluate$_outOfOrderImports = oldOutOfOrderImports;
              }
              t1._async_evaluate$_configuration = oldConfiguration;
              t1._async_evaluate$_inDependency = oldInDependency;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__applyMixin_closure3.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_environment.asMixin$1(new A._EvaluateVisitor__applyMixin__closure2(t1, $async$self.$arguments, $async$self.mixin, $async$self.nodeWithSpanWithoutContent)), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait($async$self.$this._async_evaluate$_runBuiltInCallable$3($async$self.$arguments, $async$self.mixin, $async$self.nodeWithSpanWithoutContent), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin_closure2.prototype = {
    call$0() {
      var t1 = this._1_0;
      if (t1 == null)
        t1 = type$.AsyncCallable._as(t1);
      return type$.UserDefinedCallable_AsyncEnvironment._as(t1).declaration;
    },
    $signature: 143
  };
  A._EvaluateVisitor__applyMixin_closure4.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_environment.withContent$2($async$self.contentCallable, new A._EvaluateVisitor__applyMixin__closure1(t1, $async$self.mixin, $async$self.nodeWithSpanWithoutContent)), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__applyMixin__closure1.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_environment.asMixin$1(new A._EvaluateVisitor__applyMixin___closure0(t1, $async$self.mixin, $async$self.nodeWithSpanWithoutContent)), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin___closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, t2, t3, t4, t5, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.mixin.declaration.children, t2 = t1.length, t3 = $async$self.$this, t4 = $async$self.nodeWithSpanWithoutContent, t5 = type$.nullable_Value, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t3._async_evaluate$_addErrorSpan$1$2(t4, new A._EvaluateVisitor__applyMixin____closure0(t3, t1[_i]), t5), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin____closure0.prototype = {
    call$0() {
      return this.statement.accept$1(this.$this);
    },
    $signature: 70
  };
  A._EvaluateVisitor_visitIncludeRule_closure2.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate$_environment.getMixin$2$namespace(t1.name, t1.namespace);
    },
    $signature: 97
  };
  A._EvaluateVisitor_visitIncludeRule_closure3.prototype = {
    call$1($content) {
      var t1 = this.$this;
      return new A.UserDefinedCallable($content, t1._async_evaluate$_environment.closure$0(), t1._async_evaluate$_inDependency, type$.UserDefinedCallable_AsyncEnvironment);
    },
    $signature: 494
  };
  A._EvaluateVisitor_visitIncludeRule_closure4.prototype = {
    call$0() {
      return this.node.get$spanWithoutContent();
    },
    $signature: 33
  };
  A._EvaluateVisitor_visitMediaRule_closure2.prototype = {
    call$1(mediaQueries) {
      return this.$this._async_evaluate$_mergeMediaQueries$2(mediaQueries, this.queries);
    },
    $signature: 83
  };
  A._EvaluateVisitor_visitMediaRule_closure3.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.mergedQueries;
              if (t2 == null)
                t2 = $async$self.queries;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_withMediaQueries$1$3(t2, $async$self.mergedSources, new A._EvaluateVisitor_visitMediaRule__closure0(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitMediaRule__closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, _i, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate$_atRootExcludingStyleRule ? null : t1._async_evaluate$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitMediaRule___closure0(t1, $async$self.node), false, type$.ModifiableCssStyleRule, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t3 = t2.length, _i = 0;
            case 6:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 8;
                break;
              }
              $async$goto = 9;
              return A._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
            case 9:
              // returning from await.
            case 7:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 6;
              break;
            case 8:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitMediaRule___closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitMediaRule_closure4.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitStyleRule_closure4.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitStyleRule_closure5.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitStyleRule_closure6.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_withStyleRule$1$2($async$self.rule, new A._EvaluateVisitor_visitStyleRule__closure0(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitStyleRule__closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitStyleRule_closure7.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitStyleRule_closure8.prototype = {
    call$1(child) {
      return child instanceof A.ModifiableCssComment;
    },
    $signature: 124
  };
  A._EvaluateVisitor_visitSupportsRule_closure1.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, _i, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate$_atRootExcludingStyleRule ? null : t1._async_evaluate$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate$_withParent$2$2(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitSupportsRule__closure0(t1, $async$self.node), type$.ModifiableCssStyleRule, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t3 = t2.length, _i = 0;
            case 6:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 8;
                break;
              }
              $async$goto = 9;
              return A._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
            case 9:
              // returning from await.
            case 7:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 6;
              break;
            case 8:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitSupportsRule__closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitSupportsRule_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor__visitSupportsCondition_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, $async$temp1, $async$temp2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self._box_0;
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(t1._evaluateToCss$1(t2.declaration.name), $async$call$0);
            case 3:
              // returning from await.
              t3 = $async$temp1.S($async$result);
              t4 = t2.declaration.get$isCustomProperty() ? "" : " ";
              $async$temp1 = "(" + t3 + ":" + t4;
              $async$temp2 = A;
              $async$goto = 4;
              return A._asyncAwait(t1._evaluateToCss$1(t2.declaration.value), $async$call$0);
            case 4:
              // returning from await.
              $async$returnValue = $async$temp1 + $async$temp2.S($async$result) + ")";
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 288
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure2.prototype = {
    call$0() {
      var t1 = this.$this._async_evaluate$_environment,
        t2 = this._box_0.override;
      t1.setVariable$4$global(this.node.name, t2.value, t2.assignmentNode, true);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure3.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate$_environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure4.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.node;
      t1._async_evaluate$_environment.setVariable$5$global$namespace(t2.name, this.value, t1._async_evaluate$_expressionNode$1(t2.expression), t2.isGlobal, t2.namespace);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitUseRule_closure0.prototype = {
    call$2(module, firstLoad) {
      var t1, t2, t3, _0_0, $name, t4, t5, span;
      if (firstLoad)
        this.$this._async_evaluate$_registerCommentsForModule$1(module);
      t1 = this.$this._async_evaluate$_environment;
      t2 = this.node;
      t3 = t2.namespace;
      if (t3 == null) {
        t1._async_environment$_globalModules.$indexSet(0, module, t2);
        t1._async_environment$_allModules.push(module);
        _0_0 = A.IterableExtension_firstWhereOrNull(J.get$keys$z(B.JSArray_methods.get$first(t1._async_environment$_variables)), module.get$variables().get$containsKey());
        if (_0_0 != null) {
          $name = _0_0;
          t1 = true;
        } else {
          $name = null;
          t1 = false;
        }
        if (t1)
          A.throwExpression(A.SassScriptException$(string$.This_ma + A.S($name) + '".', null));
      } else {
        t4 = t1._async_environment$_modules;
        if (t4.containsKey$1(t3)) {
          t5 = t1._async_environment$_namespaceNodes.$index(0, t3);
          span = t5 == null ? null : t5.span;
          t5 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (span != null)
            t5.$indexSet(0, span, "original @use");
          A.throwExpression(A.MultiSpanSassScriptException$(string$.There_ + t3 + '".', "new @use", t5));
        }
        t4.$indexSet(0, t3, module);
        t1._async_environment$_namespaceNodes.$indexSet(0, t3, t2);
        t1._async_environment$_allModules.push(module);
      }
    },
    $signature: 129
  };
  A._EvaluateVisitor_visitWarnRule_closure0.prototype = {
    call$0() {
      return this.node.expression.accept$1(this.$this);
    },
    $signature: 67
  };
  A._EvaluateVisitor_visitWhileRule_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value),
        $async$returnValue, $async$self = this, t1, t2, t3, _0_0, result, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node, t2 = t1.condition, t3 = $async$self.$this, t1 = t1.children;
            case 3:
              // for condition
              $async$goto = 5;
              return A._asyncAwait(t2.accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
              if (!$async$result.get$isTruthy()) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t3._async_evaluate$_handleReturn$2(t1, new A._EvaluateVisitor_visitWhileRule__closure0(t3)), $async$call$0);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t4 = true;
              } else {
                result = null;
                t4 = false;
              }
              if (t4) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              // goto for condition
              $async$goto = 3;
              break;
            case 4:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 70
  };
  A._EvaluateVisitor_visitWhileRule__closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 114
  };
  A._EvaluateVisitor_visitBinaryOperationExpression_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, t1, t2, left, $async$temp1, $async$temp2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node;
              t2 = $async$self.$this;
              $async$goto = 3;
              return A._asyncAwait(t1.left.accept$1(t2), $async$call$0);
            case 3:
              // returning from await.
              left = $async$result;
            case 4:
              // switch
              switch (t1.operator) {
                case B.BinaryOperator_2jN:
                  // goto case
                  $async$goto = 6;
                  break;
                case B.BinaryOperator_M6L:
                  // goto case
                  $async$goto = 7;
                  break;
                case B.BinaryOperator_SNp:
                  // goto case
                  $async$goto = 8;
                  break;
                case B.BinaryOperator_ql5:
                  // goto case
                  $async$goto = 9;
                  break;
                case B.BinaryOperator_ViB:
                  // goto case
                  $async$goto = 10;
                  break;
                case B.BinaryOperator_cIH:
                  // goto case
                  $async$goto = 11;
                  break;
                case B.BinaryOperator_7Tg:
                  // goto case
                  $async$goto = 12;
                  break;
                case B.BinaryOperator_U8c:
                  // goto case
                  $async$goto = 13;
                  break;
                case B.BinaryOperator_kpg:
                  // goto case
                  $async$goto = 14;
                  break;
                case B.BinaryOperator_anB:
                  // goto case
                  $async$goto = 15;
                  break;
                case B.BinaryOperator_olz:
                  // goto case
                  $async$goto = 16;
                  break;
                case B.BinaryOperator_qN2:
                  // goto case
                  $async$goto = 17;
                  break;
                case B.BinaryOperator_t8B:
                  // goto case
                  $async$goto = 18;
                  break;
                case B.BinaryOperator_OTG:
                  // goto case
                  $async$goto = 19;
                  break;
                default:
                  // goto default
                  $async$goto = 20;
                  break;
              }
              break;
            case 6:
              // case
              $async$goto = 21;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 21:
              // returning from await.
              t1 = $async$result;
              t1 = new A.SassString(A.serializeValue(left, false, true) + "=" + A.serializeValue(t1, false, true), false);
              // goto after switch
              $async$goto = 5;
              break;
            case 7:
              // case
              $async$goto = left.get$isTruthy() ? 22 : 24;
              break;
            case 22:
              // then
              $async$result = left;
              // goto join
              $async$goto = 23;
              break;
            case 24:
              // else
              $async$goto = 25;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 25:
              // returning from await.
            case 23:
              // join
              t1 = $async$result;
              // goto after switch
              $async$goto = 5;
              break;
            case 8:
              // case
              $async$goto = left.get$isTruthy() ? 26 : 28;
              break;
            case 26:
              // then
              $async$goto = 29;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 29:
              // returning from await.
              // goto join
              $async$goto = 27;
              break;
            case 28:
              // else
              $async$result = left;
            case 27:
              // join
              t1 = $async$result;
              // goto after switch
              $async$goto = 5;
              break;
            case 9:
              // case
              $async$temp1 = left;
              $async$goto = 30;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 30:
              // returning from await.
              t1 = $async$temp1.$eq(0, $async$result) ? B.SassBoolean_true : B.SassBoolean_false;
              // goto after switch
              $async$goto = 5;
              break;
            case 10:
              // case
              $async$temp1 = left;
              $async$goto = 31;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 31:
              // returning from await.
              t1 = !$async$temp1.$eq(0, $async$result) ? B.SassBoolean_true : B.SassBoolean_false;
              // goto after switch
              $async$goto = 5;
              break;
            case 11:
              // case
              $async$temp1 = left;
              $async$goto = 32;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 32:
              // returning from await.
              t1 = $async$temp1.greaterThan$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 12:
              // case
              $async$temp1 = left;
              $async$goto = 33;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 33:
              // returning from await.
              t1 = $async$temp1.greaterThanOrEquals$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 13:
              // case
              $async$temp1 = left;
              $async$goto = 34;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 34:
              // returning from await.
              t1 = $async$temp1.lessThan$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 14:
              // case
              $async$temp1 = left;
              $async$goto = 35;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 35:
              // returning from await.
              t1 = $async$temp1.lessThanOrEquals$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 15:
              // case
              $async$temp1 = left;
              $async$goto = 36;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 36:
              // returning from await.
              t1 = $async$temp1.plus$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 16:
              // case
              $async$temp1 = left;
              $async$goto = 37;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 37:
              // returning from await.
              t1 = $async$temp1.minus$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 17:
              // case
              $async$temp1 = left;
              $async$goto = 38;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 38:
              // returning from await.
              t1 = $async$temp1.times$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 18:
              // case
              $async$temp1 = t2;
              $async$temp2 = left;
              $async$goto = 39;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 39:
              // returning from await.
              t1 = $async$temp1._async_evaluate$_slash$3($async$temp2, $async$result, t1);
              // goto after switch
              $async$goto = 5;
              break;
            case 19:
              // case
              $async$temp1 = left;
              $async$goto = 40;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 40:
              // returning from await.
              t1 = $async$temp1.modulo$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 20:
              // default
              t1 = null;
            case 5:
              // after switch
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 67
  };
  A._EvaluateVisitor__slash_closure1.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 25
  };
  A._EvaluateVisitor__slash_closure2.prototype = {
    call$0() {
      return this._1_0._1;
    },
    $signature: 25
  };
  A._EvaluateVisitor__slash_recommendation0.prototype = {
    call$1(expression) {
      var left, right, t1, _null = null;
      $label0$0: {
        if (expression instanceof A.BinaryOperationExpression)
          if (B.BinaryOperator_t8B === expression.operator) {
            left = expression.left;
            right = expression.right;
            t1 = true;
          } else {
            right = _null;
            left = right;
            t1 = false;
          }
        else {
          right = _null;
          left = right;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(left)) + ", " + A.S(this.call$1(right)) + ")";
          break $label0$0;
        }
        if (expression instanceof A.ParenthesizedExpression) {
          t1 = expression.expression.toString$0(0);
          break $label0$0;
        }
        t1 = expression.toString$0(0);
        break $label0$0;
      }
      return t1;
    },
    $signature: 132
  };
  A._EvaluateVisitor_visitVariableExpression_closure0.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate$_environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitUnaryOperationExpression_closure0.prototype = {
    call$0() {
      var t1, _this = this;
      switch (_this.node.operator) {
        case B.UnaryOperator_gg4:
          t1 = _this.operand.unaryPlus$0();
          break;
        case B.UnaryOperator_TLI:
          t1 = _this.operand.unaryMinus$0();
          break;
        case B.UnaryOperator_Ix1:
          t1 = new A.SassString("/" + A.serializeValue(_this.operand, false, true), false);
          break;
        case B.UnaryOperator_not_not_not:
          t1 = _this.operand.unaryNot$0();
          break;
        default:
          t1 = null;
      }
      return t1;
    },
    $signature: 25
  };
  A._EvaluateVisitor_visitListExpression_closure0.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 518
  };
  A._EvaluateVisitor_visitFunctionExpression_closure2.prototype = {
    call$0() {
      var t1 = this.$this._async_evaluate$_environment,
        t2 = this.node;
      return t1.getFunction$2$namespace(A.stringReplaceAllUnchecked(t2.originalName, "_", "-"), t2.namespace);
    },
    $signature: 97
  };
  A._EvaluateVisitor_visitFunctionExpression_closure3.prototype = {
    call$1(argument) {
      return argument.accept$1(new A._IsCalculationSafeVisitor());
    },
    $signature: 126
  };
  A._EvaluateVisitor_visitFunctionExpression_closure4.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate$_runFunctionCallable$3(t1.$arguments, this._box_0.$function, t1);
    },
    $signature: 67
  };
  A._EvaluateVisitor__checkCalculationArguments_check0.prototype = {
    call$1(maxArgs) {
      var t1 = this.node,
        t2 = t1.$arguments.positional.length;
      if (t2 === 0)
        throw A.wrapException(this.$this._async_evaluate$_exception$2("Missing argument.", t1.span));
      else if (maxArgs != null && t2 > maxArgs)
        throw A.wrapException(this.$this._async_evaluate$_exception$2("Only " + A.S(maxArgs) + " " + A.pluralize("argument", maxArgs, null) + " allowed, but " + t2 + " " + A.pluralize("was", t2, "were") + " passed.", t1.span));
    },
    call$0() {
      return this.call$1(null);
    },
    $signature: 86
  };
  A._EvaluateVisitor__visitCalculationExpression_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Object),
        $async$returnValue, $async$self = this, t1, t2, t3, $async$temp1, $async$temp2, $async$temp3;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self._box_0;
              t3 = $async$self.inLegacySassFunction;
              $async$temp1 = A;
              $async$temp2 = t1._async_evaluate$_binaryOperatorToCalculationOperator$2(t2.operator, $async$self.node);
              $async$goto = 3;
              return A._asyncAwait(t1._async_evaluate$_visitCalculationExpression$2$inLegacySassFunction(t2.left, t3), $async$call$0);
            case 3:
              // returning from await.
              $async$temp3 = $async$result;
              $async$goto = 4;
              return A._asyncAwait(t1._async_evaluate$_visitCalculationExpression$2$inLegacySassFunction(t2.right, t3), $async$call$0);
            case 4:
              // returning from await.
              $async$returnValue = $async$temp1.SassCalculation_operateInternal($async$temp2, $async$temp3, $async$result, t3, !t1._async_evaluate$_inSupportsDeclaration);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 151
  };
  A._EvaluateVisitor__checkAdjacentCalculationValues_closure0.prototype = {
    call$0() {
      return type$.UnaryOperationExpression._as(this._0_0).operator;
    },
    $signature: 137
  };
  A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure0.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate$_runFunctionCallable$3(t1.$arguments, this.$function, t1);
    },
    $signature: 67
  };
  A._EvaluateVisitor__runUserDefinedCallable_closure0.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.callable,
        t3 = _this.V;
      return t1._async_evaluate$_withEnvironment$1$2(t2.environment.closure$0(), new A._EvaluateVisitor__runUserDefinedCallable__closure0(t1, _this.evaluated, t2, _this.nodeWithSpan, _this.run, t3), t3);
    },
    $signature() {
      return this.V._eval$1("Future<0>()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable__closure0.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.V;
      return t1._async_evaluate$_environment.scope$1$1(new A._EvaluateVisitor__runUserDefinedCallable___closure0(t1, _this.evaluated, _this.callable, _this.nodeWithSpan, _this.run, t2), t2);
    },
    $signature() {
      return this.V._eval$1("Future<0>()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable___closure0.prototype = {
    call$0() {
      return this.$call$body$_EvaluateVisitor__runUserDefinedCallable___closure(this.V);
    },
    $call$body$_EvaluateVisitor__runUserDefinedCallable___closure($async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, declaredArguments, t5, minLength, i, argument, t6, t7, value, t8, restArgument, rest, argumentList, result, t1, t2, t3, t4, $async$temp1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.evaluated._values;
              t3 = $async$self.callable.declaration.$arguments;
              t4 = $async$self.nodeWithSpan;
              t1._async_evaluate$_verifyArguments$4(J.get$length$asx(t2[2]), t2[0], t3, t4);
              declaredArguments = t3.$arguments;
              t5 = declaredArguments.length;
              minLength = Math.min(J.get$length$asx(t2[2]), t5);
              for (i = 0; i < minLength; ++i)
                t1._async_evaluate$_environment.setLocalVariable$3(declaredArguments[i].name, J.$index$asx(t2[2], i), J.$index$asx(t2[3], i));
              i = J.get$length$asx(t2[2]);
            case 3:
              // for condition
              if (!(i < t5)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              argument = declaredArguments[i];
              t6 = t2[0];
              t7 = argument.name;
              value = J.remove$1$z(t6, t7);
              $async$goto = value == null ? 6 : 7;
              break;
            case 6:
              // then
              t6 = argument.defaultValue;
              $async$temp1 = t1;
              $async$goto = 8;
              return A._asyncAwait(t6.accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
              value = $async$temp1._async_evaluate$_withoutSlash$2($async$result, t1._async_evaluate$_expressionNode$1(t6));
            case 7:
              // join
              t6 = t1._async_evaluate$_environment;
              t8 = J.$index$asx(t2[1], t7);
              if (t8 == null) {
                t8 = argument.defaultValue;
                t8.toString;
                t8 = t1._async_evaluate$_expressionNode$1(t8);
              }
              t6.setLocalVariable$3(t7, value, t8);
            case 4:
              // for update
              ++i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              restArgument = t3.restArgument;
              if (restArgument != null) {
                rest = J.get$length$asx(t2[2]) > t5 ? J.sublist$1$ax(t2[2], t5) : B.List_empty8;
                t5 = t2[0];
                t6 = t2[4];
                argumentList = A.SassArgumentList$(rest, t5, t6 === B.ListSeparator_undecided_null_undecided ? B.ListSeparator_rXA : t6);
                t1._async_evaluate$_environment.setLocalVariable$3(restArgument, argumentList, t4);
              } else
                argumentList = null;
              $async$goto = 9;
              return A._asyncAwait($async$self.run.call$0(), $async$call$0);
            case 9:
              // returning from await.
              result = $async$result;
              if (argumentList == null) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              if (J.get$isEmpty$asx(t2[0])) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              if (argumentList._wereKeywordsAccessed) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              throw A.wrapException(A.MultiSpanSassRuntimeException$("No " + A.pluralize("argument", J.get$length$asx(J.get$keys$z(t2[0])), null) + " named " + A.toSentence(J.map$1$1$ax(J.get$keys$z(t2[0]), new A._EvaluateVisitor__runUserDefinedCallable____closure0(), type$.Object), "or") + ".", t4.get$span(t4), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([t3.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), t1._async_evaluate$_stackTrace$1(t4.get$span(t4)), null));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature() {
      return this.V._eval$1("Future<0>()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable____closure0.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__runFunctionCallable_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, _i, $returnValue;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.callable.declaration, t2 = t1.children, t3 = t2.length, t4 = $async$self.$this, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t2[_i].accept$1(t4), $async$call$0);
            case 6:
              // returning from await.
              $returnValue = $async$result;
              if ($returnValue instanceof A.Value) {
                $async$returnValue = $returnValue;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              throw A.wrapException(t4._async_evaluate$_exception$2("Function finished without @return.", t1.span));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 67
  };
  A._EvaluateVisitor__runBuiltInCallable_closure2.prototype = {
    call$0() {
      return this._box_0.overload.verify$2(J.get$length$asx(this.evaluated._values[2]), this.namedSet);
    },
    $signature: 0
  };
  A._EvaluateVisitor__runBuiltInCallable_closure3.prototype = {
    call$0() {
      return this._box_0.callback.call$1(this.evaluated._values[2]);
    },
    $signature: 529
  };
  A._EvaluateVisitor__runBuiltInCallable_closure4.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__evaluateArguments_closure3.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 43
  };
  A._EvaluateVisitor__evaluateArguments_closure4.prototype = {
    call$1(value) {
      return this.$this._async_evaluate$_withoutSlash$2(value, this.restNodeForSpan);
    },
    $signature: 43
  };
  A._EvaluateVisitor__evaluateArguments_closure5.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restNodeForSpan;
      _this.named.$indexSet(0, key, _this.$this._async_evaluate$_withoutSlash$2(value, t1));
      _this.namedNodes.$indexSet(0, key, t1);
    },
    $signature: 87
  };
  A._EvaluateVisitor__evaluateArguments_closure6.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 43
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure3.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression(value, t1.get$span(t1));
    },
    $signature: 65
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure4.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression(this.$this._async_evaluate$_withoutSlash$2(value, this.restNodeForSpan), t1.get$span(t1));
    },
    $signature: 65
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure5.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restArgs;
      _this.named.$indexSet(0, key, new A.ValueExpression(_this.$this._async_evaluate$_withoutSlash$2(value, _this.restNodeForSpan), t1.get$span(t1)));
    },
    $signature: 87
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure6.prototype = {
    call$1(value) {
      var t1 = this.keywordRestArgs;
      return new A.ValueExpression(this.$this._async_evaluate$_withoutSlash$2(value, this.keywordRestNodeForSpan), t1.get$span(t1));
    },
    $signature: 65
  };
  A._EvaluateVisitor__addRestMap_closure0.prototype = {
    call$2(key, value) {
      var t2, _this = this,
        t1 = _this.$this;
      if (key instanceof A.SassString)
        _this.values.$indexSet(0, key._string$_text, _this.convert.call$1(t1._async_evaluate$_withoutSlash$2(value, _this.expressionNode)));
      else {
        t2 = _this.nodeWithSpan;
        throw A.wrapException(t1._async_evaluate$_exception$2(string$.Variab_ + key.toString$0(0) + " is not a string in " + _this.map.toString$0(0) + ".", t2.get$span(t2)));
      }
    },
    $signature: 106
  };
  A._EvaluateVisitor__verifyArguments_closure0.prototype = {
    call$0() {
      return this.$arguments.verify$2(this.positional, new A.MapKeySet(this.named, type$.MapKeySet_String));
    },
    $signature: 0
  };
  A._EvaluateVisitor_visitCssAtRule_closure1.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssAtRule_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure1.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssMediaRule_closure2.prototype = {
    call$1(mediaQueries) {
      return this.$this._async_evaluate$_mergeMediaQueries$2(mediaQueries, this.node.queries);
    },
    $signature: 83
  };
  A._EvaluateVisitor_visitCssMediaRule_closure3.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.mergedQueries;
              if (t2 == null)
                t2 = $async$self.node.queries;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_withMediaQueries$1$3(t2, $async$self.mergedSources, new A._EvaluateVisitor_visitCssMediaRule__closure0(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssMediaRule__closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, t4, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate$_atRootExcludingStyleRule ? null : t1._async_evaluate$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssMediaRule___closure0(t1, $async$self.node), false, type$.ModifiableCssStyleRule, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1;
            case 6:
              // for condition
              if (!t2.moveNext$0()) {
                // goto after for
                $async$goto = 7;
                break;
              }
              t4 = t2.__internal$_current;
              $async$goto = 8;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
              // goto for condition
              $async$goto = 6;
              break;
            case 7:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssMediaRule___closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssMediaRule_closure4.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssStyleRule_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate$_withStyleRule$1$2($async$self.rule, new A._EvaluateVisitor_visitCssStyleRule__closure0(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssStyleRule__closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssStyleRule_closure3.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssStyleRule_closure4.prototype = {
    call$0() {
      return J.get$length$asx(this._0_0._collection$_source);
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure1.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, t4, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate$_atRootExcludingStyleRule ? null : t1._async_evaluate$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate$_withParent$2$2(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssSupportsRule__closure0(t1, $async$self.node), type$.ModifiableCssStyleRule, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1;
            case 6:
              // for condition
              if (!t2.moveNext$0()) {
                // goto after for
                $async$goto = 7;
                break;
              }
              t4 = t2.__internal$_current;
              $async$goto = 8;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
              // goto for condition
              $async$goto = 6;
              break;
            case 7:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssSupportsRule__closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor__performInterpolationHelper_closure0.prototype = {
    call$1(targetLocations) {
      return A.InterpolationMap$(this.interpolation, targetLocations);
    },
    $signature: 154
  };
  A._EvaluateVisitor__serialize_closure0.prototype = {
    call$0() {
      return A.serializeValue(this.value, false, this.quote);
    },
    $signature: 22
  };
  A._EvaluateVisitor__expressionNode_closure0.prototype = {
    call$0() {
      var t1 = this.expression;
      return this.$this._async_evaluate$_environment.getVariableNode$2$namespace(t1.name, t1.namespace);
    },
    $signature: 155
  };
  A._EvaluateVisitor__withoutSlash_recommendation0.prototype = {
    call$1(number) {
      var t1, before, after,
        _1_0 = number.asSlash;
      $label0$0: {
        if (type$.Record_2_nullable_Object_and_nullable_Object._is(_1_0)) {
          t1 = type$.SassNumber;
          before = t1._as(_1_0._0);
          after = t1._as(_1_0._1);
          t1 = true;
        } else {
          before = null;
          after = null;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(before)) + ", " + A.S(this.call$1(after)) + ")";
          break $label0$0;
        }
        t1 = A.serializeValue(number, true, true);
        break $label0$0;
      }
      return t1;
    },
    $signature: 156
  };
  A._EvaluateVisitor__stackFrame_closure0.prototype = {
    call$1(url) {
      var t1 = this.$this._async_evaluate$_importCache;
      t1 = t1 == null ? null : t1.humanize$1(url);
      return t1 == null ? url : t1;
    },
    $signature: 48
  };
  A._ImportedCssVisitor0.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.isChildless ? null : new A._ImportedCssVisitor_visitCssAtRule_closure0();
      this._async_evaluate$_visitor._async_evaluate$_addChild$2$through(node, t1);
    },
    visitCssComment$1(node) {
      return this._async_evaluate$_visitor._async_evaluate$_addChild$1(node);
    },
    visitCssDeclaration$1(node) {
    },
    visitCssImport$1(node) {
      var t2,
        _s13_ = "_endOfImports",
        t1 = this._async_evaluate$_visitor;
      if (t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__parent, "__parent") !== t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__root, "_root"))
        t1._async_evaluate$_addChild$1(node);
      else if (t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__endOfImports, _s13_) === J.get$length$asx(t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__root, "_root").children._collection$_source)) {
        t1._async_evaluate$_addChild$1(node);
        t1._async_evaluate$__endOfImports = t1._async_evaluate$_assertInModule$2(t1._async_evaluate$__endOfImports, _s13_) + 1;
      } else {
        t2 = t1._async_evaluate$_outOfOrderImports;
        (t2 == null ? t1._async_evaluate$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport) : t2).push(node);
      }
    },
    visitCssKeyframeBlock$1(node) {
    },
    visitCssMediaRule$1(node) {
      var t1 = this._async_evaluate$_visitor,
        mediaQueries = t1._async_evaluate$_mediaQueries;
      t1._async_evaluate$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssMediaRule_closure0(mediaQueries == null || t1._async_evaluate$_mergeMediaQueries$2(mediaQueries, node.queries) != null));
    },
    visitCssStyleRule$1(node) {
      return this._async_evaluate$_visitor._async_evaluate$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssStyleRule_closure0());
    },
    visitCssStylesheet$1(node) {
      var t1, t2, t3;
      for (t1 = node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        (t3 == null ? t2._as(t3) : t3).accept$1(this);
      }
    },
    visitCssSupportsRule$1(node) {
      return this._async_evaluate$_visitor._async_evaluate$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssSupportsRule_closure0());
    }
  };
  A._ImportedCssVisitor_visitCssAtRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._ImportedCssVisitor_visitCssMediaRule_closure0.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule))
        t1 = this.hasBeenMerged && node instanceof A.ModifiableCssMediaRule;
      else
        t1 = true;
      return t1;
    },
    $signature: 9
  };
  A._ImportedCssVisitor_visitCssStyleRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._ImportedCssVisitor_visitCssSupportsRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluationContext0.prototype = {
    get$currentCallableSpan() {
      var callableNode, t1,
        _0_0 = this._async_evaluate$_visitor._async_evaluate$_callableNode;
      if (_0_0 != null) {
        callableNode = _0_0;
        t1 = true;
      } else {
        callableNode = null;
        t1 = false;
      }
      if (t1)
        return callableNode.get$span(callableNode);
      throw A.wrapException(A.StateError$(string$.No_Sasc));
    },
    warn$2(_, message, deprecation) {
      var t1 = this._async_evaluate$_visitor,
        t2 = t1._async_evaluate$_importSpan;
      if (t2 == null) {
        t2 = t1._async_evaluate$_callableNode;
        t2 = t2 == null ? null : t2.get$span(t2);
      }
      t1._async_evaluate$_warn$3(message, t2 == null ? this._async_evaluate$_defaultWarnNodeWithSpan.span : t2, deprecation);
    },
    $isEvaluationContext: 1
  };
  A._CloneCssVisitor.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.isChildless,
        rule = A.ModifiableCssAtRule$(node.name, node.span, t1, node.value);
      return t1 ? rule : this._visitChildren$2(rule, node);
    },
    visitCssComment$1(node) {
      return new A.ModifiableCssComment(node.text, node.span);
    },
    visitCssDeclaration$1(node) {
      return A.ModifiableCssDeclaration$(node.name, node.value, node.span, node.parsedAsCustomProperty, node.valueSpanForMap);
    },
    visitCssImport$1(node) {
      return new A.ModifiableCssImport(node.url, node.modifiers, node.span);
    },
    visitCssKeyframeBlock$1(node) {
      return this._visitChildren$2(A.ModifiableCssKeyframeBlock$(node.selector, node.span), node);
    },
    visitCssMediaRule$1(node) {
      return this._visitChildren$2(A.ModifiableCssMediaRule$(node.queries, node.span), node);
    },
    visitCssStyleRule$1(node) {
      var newSelector, t1,
        _0_0 = this._oldToNewSelectors.$index(0, node._style_rule$_selector._box$_inner.value);
      if (_0_0 != null) {
        newSelector = _0_0;
        t1 = true;
      } else {
        newSelector = null;
        t1 = false;
      }
      if (t1)
        return this._visitChildren$2(A.ModifiableCssStyleRule$(newSelector, node.span, node.originalSelector), node);
      else
        throw A.wrapException(A.StateError$(string$.The_Ex));
    },
    visitCssStylesheet$1(node) {
      return this._visitChildren$2(A.ModifiableCssStylesheet$(node.get$span(node)), node);
    },
    visitCssSupportsRule$1(node) {
      return this._visitChildren$2(A.ModifiableCssSupportsRule$(node.condition, node.span), node);
    },
    _visitChildren$1$2(newParent, oldParent) {
      var t1, t2, newChild;
      for (t1 = J.get$iterator$ax(oldParent.get$children(oldParent)); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        newChild = t2.accept$1(this);
        newChild.isGroupEnd = t2.get$isGroupEnd();
        newParent.addChild$1(newChild);
      }
      return newParent;
    },
    _visitChildren$2(newParent, oldParent) {
      return this._visitChildren$1$2(newParent, oldParent, type$.ModifiableCssParentNode);
    }
  };
  A.Evaluator.prototype = {};
  A._EvaluateVisitor.prototype = {
    _EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t2, metaModule, t3, _i, module, $function, t4, _this = this,
        _s20_ = "$name, $module: null",
        _s9_ = "sass:meta",
        _s7_ = "$module",
        t1 = type$.JSArray_BuiltInCallable,
        metaFunctions = A._setArrayType([A.BuiltInCallable$function("global-variable-exists", _s20_, new A._EvaluateVisitor_closure(_this), _s9_), A.BuiltInCallable$function("variable-exists", "$name", new A._EvaluateVisitor_closure0(_this), _s9_), A.BuiltInCallable$function("function-exists", _s20_, new A._EvaluateVisitor_closure1(_this), _s9_), A.BuiltInCallable$function("mixin-exists", _s20_, new A._EvaluateVisitor_closure2(_this), _s9_), A.BuiltInCallable$function("content-exists", "", new A._EvaluateVisitor_closure3(_this), _s9_), A.BuiltInCallable$function("module-variables", _s7_, new A._EvaluateVisitor_closure4(_this), _s9_), A.BuiltInCallable$function("module-functions", _s7_, new A._EvaluateVisitor_closure5(_this), _s9_), A.BuiltInCallable$function("module-mixins", _s7_, new A._EvaluateVisitor_closure6(_this), _s9_), A.BuiltInCallable$function("get-function", "$name, $css: false, $module: null", new A._EvaluateVisitor_closure7(_this), _s9_), A.BuiltInCallable$function("get-mixin", _s20_, new A._EvaluateVisitor_closure8(_this), _s9_), A.BuiltInCallable$function("call", "$function, $args...", new A._EvaluateVisitor_closure9(_this), _s9_)], t1),
        metaMixins = A._setArrayType([A.BuiltInCallable$mixin("load-css", "$url, $with: null", new A._EvaluateVisitor_closure10(_this), false, _s9_), A.BuiltInCallable$mixin("apply", "$mixin, $args...", new A._EvaluateVisitor_closure11(_this), true, _s9_)], t1);
      t1 = type$.BuiltInCallable;
      t2 = A.List_List$of($.$get$global(), true, t1);
      B.JSArray_methods.addAll$1(t2, $.$get$local());
      B.JSArray_methods.addAll$1(t2, metaFunctions);
      metaModule = A.BuiltInModule$("meta", t2, metaMixins, null, t1);
      for (t1 = A.List_List$of($.$get$coreModules(), true, type$.BuiltInModule_Callable), t1.push(metaModule), t2 = t1.length, t3 = _this._builtInModules, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        module = t1[_i];
        t3.$indexSet(0, module.url, module);
      }
      t1 = A._setArrayType([], type$.JSArray_Callable);
      B.JSArray_methods.addAll$1(t1, $.$get$globalFunctions());
      B.JSArray_methods.addAll$1(t1, metaFunctions);
      for (t2 = t1.length, t3 = _this._builtInFunctions, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        $function = t1[_i];
        t4 = J.get$name$x($function);
        t3.$indexSet(0, A.stringReplaceAllUnchecked(t4, "_", "-"), $function);
      }
    },
    run$2(_, importer, node) {
      var error, stackTrace, t1, exception;
      try {
        t1 = type$.nullable_Object;
        t1 = A.runZoned(new A._EvaluateVisitor_run_closure(this, node, importer), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__evaluationContext, new A._EvaluationContext(this, node)], t1, t1), type$.Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace(error.withLoadedUrls$1(this._loadedUrls), error, stackTrace);
        } else
          throw exception;
      }
    },
    runExpression$2(importer, expression) {
      var t1 = type$.nullable_Object;
      return A.runZoned(new A._EvaluateVisitor_runExpression_closure(this, importer, expression), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__evaluationContext, new A._EvaluationContext(this, expression)], t1, t1), type$.Value);
    },
    runStatement$2(importer, statement) {
      var t1 = type$.nullable_Object;
      return A.runZoned(new A._EvaluateVisitor_runStatement_closure(this, importer, statement), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__evaluationContext, new A._EvaluationContext(this, statement)], t1, t1), type$.void);
    },
    _assertInModule$1$2(value, $name) {
      if (value != null)
        return value;
      throw A.wrapException(A.StateError$("Can't access " + $name + " outside of a module."));
    },
    _assertInModule$2(value, $name) {
      return this._assertInModule$1$2(value, $name, type$.dynamic);
    },
    _withFakeStylesheet$1$3(importer, nodeWithSpan, callback) {
      var t1, _this = this,
        oldImporter = _this._importer;
      _this._importer = importer;
      _this.__stylesheet = A.Stylesheet$(B.List_empty12, nodeWithSpan.get$span(nodeWithSpan));
      try {
        t1 = callback.call$0();
        return t1;
      } finally {
        _this._importer = oldImporter;
        _this.__stylesheet = null;
      }
    },
    _withFakeStylesheet$3(importer, nodeWithSpan, callback) {
      return this._withFakeStylesheet$1$3(importer, nodeWithSpan, callback, type$.dynamic);
    },
    _loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
      var _0_0, t2, _this = this, t1 = {};
      t1.builtInModule = null;
      _0_0 = _this._builtInModules.$index(0, url);
      if (_0_0 != null) {
        t1.builtInModule = _0_0;
        t2 = true;
      } else
        t2 = false;
      if (t2) {
        if (configuration instanceof A.ExplicitConfiguration) {
          t1 = namesInErrors ? "Built-in module " + url.toString$0(0) + " can't be configured." : "Built-in modules can't be configured.";
          t2 = configuration.nodeWithSpan;
          throw A.wrapException(_this._evaluate$_exception$2(t1, t2.get$span(t2)));
        }
        _this._addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__loadModule_closure(t1, callback));
        return;
      }
      _this._withStackFrame$3(stackFrame, nodeWithSpan, new A._EvaluateVisitor__loadModule_closure0(_this, url, nodeWithSpan, baseUrl, namesInErrors, configuration, callback));
    },
    _loadModule$5$configuration(url, stackFrame, nodeWithSpan, callback, configuration) {
      return this._loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, configuration, false);
    },
    _loadModule$4(url, stackFrame, nodeWithSpan, callback) {
      return this._loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, null, false);
    },
    _execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
      var _0_0, alreadyLoaded, t2, currentConfiguration, t3, message, existingSpan, configurationSpan, environment, css, preModuleComments, extensionStore, module, _this = this,
        t1 = stylesheet.span,
        url = t1.get$sourceUrl(t1);
      t1 = _this._modules;
      _0_0 = t1.$index(0, url);
      if (_0_0 != null) {
        alreadyLoaded = _0_0;
        t2 = true;
      } else {
        alreadyLoaded = null;
        t2 = false;
      }
      if (t2) {
        t1 = configuration == null;
        currentConfiguration = t1 ? _this._configuration : configuration;
        t2 = _this._moduleConfigurations.$index(0, url);
        t3 = t2.__originalConfiguration;
        t2 = t3 == null ? t2 : t3;
        t3 = currentConfiguration.__originalConfiguration;
        if (t2 !== (t3 == null ? currentConfiguration : t3) && currentConfiguration instanceof A.ExplicitConfiguration) {
          message = namesInErrors ? $.$get$context().prettyUri$1(url) + string$.x20was_a : string$.This_mw;
          t2 = _this._moduleNodes.$index(0, url);
          existingSpan = t2 == null ? null : t2.get$span(t2);
          if (t1) {
            t1 = currentConfiguration.nodeWithSpan;
            configurationSpan = t1.get$span(t1);
          } else
            configurationSpan = null;
          t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (existingSpan != null)
            t1.$indexSet(0, existingSpan, "original load");
          if (configurationSpan != null)
            t1.$indexSet(0, configurationSpan, "configuration");
          throw A.wrapException(t1.get$isEmpty(t1) ? _this._evaluate$_exception$1(message) : _this._multiSpanException$3(message, "new load", t1));
        }
        return alreadyLoaded;
      }
      environment = A.Environment$();
      css = A._Cell$();
      preModuleComments = A._Cell$();
      extensionStore = A.ExtensionStore$();
      _this._withEnvironment$2(environment, new A._EvaluateVisitor__execute_closure(_this, importer, stylesheet, extensionStore, configuration, css, preModuleComments));
      t2 = css._readLocal$0();
      t3 = preModuleComments._readLocal$0();
      module = environment.toModule$3(t2, t3 == null ? B.Map_empty0 : t3, extensionStore);
      if (url != null) {
        t1.$indexSet(0, url, module);
        _this._moduleConfigurations.$indexSet(0, url, _this._configuration);
        if (nodeWithSpan != null)
          _this._moduleNodes.$indexSet(0, url, nodeWithSpan);
      }
      return module;
    },
    _execute$2(importer, stylesheet) {
      return this._execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, null, false, null);
    },
    _addOutOfOrderImports$0() {
      var t1, t2, _this = this, _s5_ = "_root",
        _s13_ = "_endOfImports",
        _0_0 = _this._outOfOrderImports;
      $label0$0: {
        if (_0_0 == null) {
          t1 = _this._assertInModule$2(_this.__root, _s5_).children;
          break $label0$0;
        }
        t1 = _this._assertInModule$2(_this.__root, _s5_);
        t1 = t1.children;
        t1 = A.List_List$of(A.SubListIterable$(t1, 0, A.checkNotNullable(_this._assertInModule$2(_this.__endOfImports, _s13_), "count", type$.int), t1.$ti._eval$1("ListBase.E")), true, type$.ModifiableCssNode);
        B.JSArray_methods.addAll$1(t1, _0_0);
        t2 = _this._assertInModule$2(_this.__root, _s5_).children;
        B.JSArray_methods.addAll$1(t1, A.SubListIterable$(t2, _this._assertInModule$2(_this.__endOfImports, _s13_), null, t2.$ti._eval$1("ListBase.E")));
        break $label0$0;
      }
      return t1;
    },
    _combineCss$2$clone(root, clone) {
      var selectors, _0_0, unsatisfiedExtension, t1, imports, css, sorted, t2;
      if (!B.JSArray_methods.any$1(root.get$upstream(), new A._EvaluateVisitor__combineCss_closure())) {
        selectors = root.get$extensionStore().get$simpleSelectors();
        _0_0 = A.IterableExtension_get_firstOrNull(root.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__combineCss_closure0(selectors)));
        if (_0_0 != null) {
          unsatisfiedExtension = _0_0;
          t1 = true;
        } else {
          unsatisfiedExtension = null;
          t1 = false;
        }
        if (t1)
          this._throwForUnsatisfiedExtension$1(unsatisfiedExtension);
        return root.get$css(root);
      }
      t1 = type$.JSArray_CssNode;
      imports = A._setArrayType([], t1);
      css = A._setArrayType([], t1);
      t1 = type$.Module_Callable;
      sorted = A.ListQueue$(t1);
      new A._EvaluateVisitor__combineCss_visitModule(this, A.LinkedHashSet_LinkedHashSet$_empty(t1), clone, css, imports, sorted).call$1(root);
      if (root.get$transitivelyContainsExtensions())
        this._extendModules$1(sorted);
      t1 = B.JSArray_methods.$add(imports, css);
      t2 = root.get$css(root);
      return new A.CssStylesheet(new A.UnmodifiableListView(t1, type$.UnmodifiableListView_CssNode), t2.get$span(t2));
    },
    _combineCss$1(root) {
      return this._combineCss$2$clone(root, false);
    },
    _extendModules$1(sortedModules) {
      var t1, t2, t3, originalSelectors, $self, t4, t5, _i, upstream, _0_0, url, t6,
        downstreamExtensionStores = A.LinkedHashMap_LinkedHashMap$_empty(type$.Uri, type$.List_ExtensionStore),
        unsatisfiedExtensions = new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_Extension);
      for (t1 = A._ListQueueIterator$(sortedModules), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1._collection$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        originalSelectors = t3.get$extensionStore().get$simpleSelectors().toSet$0(0);
        unsatisfiedExtensions.addAll$1(0, t3.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__extendModules_closure(originalSelectors)));
        $self = downstreamExtensionStores.$index(0, t3.get$url(t3));
        t4 = t3.get$extensionStore().get$addExtensions();
        if ($self != null)
          t4.call$1($self);
        t4 = t3.get$extensionStore();
        if (t4.get$isEmpty(t4))
          continue;
        for (t4 = t3.get$upstream(), t5 = t4.length, _i = 0; _i < t4.length; t4.length === t5 || (0, A.throwConcurrentModificationError)(t4), ++_i) {
          upstream = t4[_i];
          _0_0 = upstream.get$url(upstream);
          if (_0_0 != null) {
            url = _0_0;
            t6 = true;
          } else {
            url = null;
            t6 = false;
          }
          if (t6)
            J.add$1$ax(downstreamExtensionStores.putIfAbsent$2(url, new A._EvaluateVisitor__extendModules_closure0()), t3.get$extensionStore());
        }
        unsatisfiedExtensions.removeAll$1(t3.get$extensionStore().extensionsWhereTarget$1(originalSelectors.get$contains(originalSelectors)));
      }
      if (unsatisfiedExtensions._collection$_length !== 0)
        this._throwForUnsatisfiedExtension$1(unsatisfiedExtensions.get$first(unsatisfiedExtensions));
    },
    _throwForUnsatisfiedExtension$1(extension) {
      throw A.wrapException(A.SassException$(string$.The_ta + extension.target.toString$0(0) + ' !optional" to avoid this error.', extension.span, null));
    },
    _indexAfterImports$1(statements) {
      var t1, lastImport, i, _0_0;
      for (t1 = J.getInterceptor$asx(statements), lastImport = -1, i = 0; i < t1.get$length(statements); ++i) {
        $label0$0: {
          _0_0 = t1.$index(statements, i);
          if (_0_0 instanceof A.ModifiableCssImport)
            break $label0$0;
          if (_0_0 instanceof A.ModifiableCssComment)
            continue;
          break;
        }
        lastImport = i;
      }
      return lastImport + 1;
    },
    visitStylesheet$1(node) {
      var t1, t2, _i;
      for (t1 = node.children, t2 = t1.length, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(this);
      return null;
    },
    visitAtRootRule$1(node) {
      var unparsedQuery, t1, _1_0, query, $parent, included, _2_0, grandparent, t2, root, first, rest, innerCopy, outerCopy, _i, copy, _this = this, _null = null,
        _s8_ = "__parent",
        _0_0 = node.query;
      if (_0_0 != null) {
        unparsedQuery = _0_0;
        t1 = true;
      } else {
        unparsedQuery = _null;
        t1 = false;
      }
      if (t1) {
        _1_0 = _this._performInterpolationWithMap$2$warnForColor(unparsedQuery, true);
        query = A.AtRootQueryParser$(_1_0._0, _this._evaluate$_logger, _null).parse$0();
      } else
        query = B.AtRootQuery_UsS;
      $parent = _this._assertInModule$2(_this.__parent, _s8_);
      included = A._setArrayType([], type$.JSArray_ModifiableCssParentNode);
      for (t1 = type$.CssStylesheet; !t1._is($parent); $parent = grandparent) {
        if (!query.excludes$1($parent))
          included.push($parent);
        _2_0 = $parent._parent;
        if (_2_0 != null) {
          grandparent = _2_0;
          t2 = true;
        } else {
          grandparent = _null;
          t2 = false;
        }
        if (!t2)
          throw A.wrapException(A.StateError$(string$.CssNod));
      }
      root = _this._trimIncluded$1(included);
      if (root === _this._assertInModule$2(_this.__parent, _s8_)) {
        _this._environment.scope$1$2$when(new A._EvaluateVisitor_visitAtRootRule_closure(_this, node), node.hasDeclarations, type$.Null);
        return _null;
      }
      if (included.length >= 1) {
        first = included[0];
        rest = B.JSArray_methods.sublist$1(included, 1);
        t1 = true;
      } else {
        rest = _null;
        first = rest;
        t1 = false;
      }
      if (t1) {
        innerCopy = first.copyWithoutChildren$0();
        for (t1 = rest.length, outerCopy = innerCopy, _i = 0; _i < rest.length; rest.length === t1 || (0, A.throwConcurrentModificationError)(rest), ++_i, outerCopy = copy) {
          copy = rest[_i].copyWithoutChildren$0();
          copy.addChild$1(outerCopy);
        }
        root.addChild$1(outerCopy);
      } else
        innerCopy = root;
      _this._scopeForAtRoot$4(node, innerCopy, query, included).call$1(new A._EvaluateVisitor_visitAtRootRule_closure0(_this, node));
      return _null;
    },
    _trimIncluded$1(nodes) {
      var $parent, t1, innermostContiguous, i, t2, _0_0, grandparent, t3, _1_0, root, _this = this, _null = null, _s5_ = "_root",
        _s22_ = " to be an ancestor of ";
      if (nodes.length === 0)
        return _this._assertInModule$2(_this.__root, _s5_);
      $parent = _this._assertInModule$2(_this.__parent, "__parent");
      for (t1 = nodes.length, innermostContiguous = _null, i = 0; i < t1; ++i, $parent = grandparent) {
        for (; t2 = nodes[i], $parent !== t2; innermostContiguous = _null, $parent = grandparent) {
          _0_0 = $parent._parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t3 = true;
          } else {
            grandparent = _null;
            t3 = false;
          }
          if (!t3)
            throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
        }
        if (innermostContiguous == null)
          innermostContiguous = i;
        _1_0 = $parent._parent;
        if (_1_0 != null) {
          grandparent = _1_0;
          t3 = true;
        } else {
          grandparent = _null;
          t3 = false;
        }
        if (!t3)
          throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
      }
      if ($parent !== _this._assertInModule$2(_this.__root, _s5_))
        return _this._assertInModule$2(_this.__root, _s5_);
      innermostContiguous.toString;
      root = nodes[innermostContiguous];
      B.JSArray_methods.removeRange$2(nodes, innermostContiguous, nodes.length);
      return root;
    },
    _scopeForAtRoot$4(node, newParent, query, included) {
      var _this = this,
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure(_this, newParent, node),
        t1 = query._all || query._at_root_query$_rule;
      if (t1 !== query.include)
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure0(_this, scope);
      if (_this._mediaQueries != null && query.excludesName$1("media"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure1(_this, scope);
      if (_this._inKeyframes && query.excludesName$1("keyframes"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure2(_this, scope);
      return _this._inUnknownAtRule && !B.JSArray_methods.any$1(included, new A._EvaluateVisitor__scopeForAtRoot_closure3()) ? new A._EvaluateVisitor__scopeForAtRoot_closure4(_this, scope) : scope;
    },
    visitContentBlock$1(node) {
      return A.throwExpression(A.UnsupportedError$(string$.Evalua));
    },
    visitContentRule$1(node) {
      var $content = this._environment._content;
      if ($content == null)
        return null;
      this._runUserDefinedCallable$1$4(node.$arguments, $content, node, new A._EvaluateVisitor_visitContentRule_closure(this, $content), type$.Null);
      return null;
    },
    visitDebugRule$1(node) {
      var value = node.expression.accept$1(this),
        t1 = value instanceof A.SassString ? value._string$_text : A.serializeValue(value, true, true);
      this._evaluate$_logger.debug$2(0, t1, node.span);
      return null;
    },
    visitDeclaration$1(node) {
      var t2, $name, _0_0, declarationName, t3, _1_0, expression, value, t4, t5, _2_0, oldDeclarationName, _this = this, _null = null, t1 = {};
      if ((_this._atRootExcludingStyleRule ? _null : _this._styleRuleIgnoringAtRoot) == null && !_this._inUnknownAtRule && !_this._inKeyframes)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Declarm, node.span));
      if (_this._declarationName != null && B.JSString_methods.startsWith$1(node.name.get$initialPlain(), "--"))
        throw A.wrapException(_this._evaluate$_exception$2(string$.Declarw, node.span));
      t2 = node.name;
      $name = _this._interpolationToValue$2$warnForColor(t2, true);
      _0_0 = _this._declarationName;
      if (_0_0 != null) {
        declarationName = _0_0;
        t3 = true;
      } else {
        declarationName = _null;
        t3 = false;
      }
      if (t3)
        $name = new A.CssValue(A.S(declarationName) + "-" + A.S($name.value), $name.span, type$.CssValue_String);
      _1_0 = node.value;
      if (_1_0 != null) {
        expression = _1_0;
        t3 = true;
      } else {
        expression = _null;
        t3 = false;
      }
      if (t3) {
        value = expression.accept$1(_this);
        if (!value.get$isBlank() || value.get$asList().length === 0) {
          t3 = _this._assertInModule$2(_this.__parent, "__parent");
          t4 = expression.get$span(expression);
          t2 = B.JSString_methods.startsWith$1(t2.get$initialPlain(), "--");
          if (_this._sourceMap) {
            t5 = A.NullableExtension_andThen(_1_0, _this.get$_expressionNode());
            t5 = t5 == null ? _null : J.get$span$z(t5);
          } else
            t5 = _null;
          t3.addChild$1(A.ModifiableCssDeclaration$($name, new A.CssValue(value, t4, type$.CssValue_Value), node.span, t2, t5));
        } else if (J.startsWith$1$s($name.value, "--"))
          throw A.wrapException(_this._evaluate$_exception$2("Custom property values may not be empty.", expression.get$span(expression)));
      }
      t1.children = null;
      _2_0 = node.children;
      if (_2_0 != null) {
        t1.children = _2_0;
        t2 = true;
      } else
        t2 = false;
      if (t2) {
        oldDeclarationName = _this._declarationName;
        _this._declarationName = $name.value;
        _this._environment.scope$1$2$when(new A._EvaluateVisitor_visitDeclaration_closure(t1, _this), node.hasDeclarations, type$.Null);
        _this._declarationName = oldDeclarationName;
      }
      return _null;
    },
    visitEachRule$1(node) {
      var t2, _this = this, _box_0 = {},
        t1 = node.list,
        list = t1.accept$1(_this),
        nodeWithSpan = _this._expressionNode$1(t1),
        _0_0 = node.variables;
      $label0$0: {
        _box_0.variable = null;
        if (_0_0.length === 1) {
          _box_0.variable = _0_0[0];
          t1 = true;
        } else
          t1 = false;
        if (t1) {
          t1 = new A._EvaluateVisitor_visitEachRule_closure(_box_0, _this, nodeWithSpan);
          break $label0$0;
        }
        t1 = _box_0.variables = null;
        _box_0.variables = _0_0;
        t2 = new A._EvaluateVisitor_visitEachRule_closure0(_box_0, _this, nodeWithSpan);
        t1 = t2;
        break $label0$0;
      }
      return _this._environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitEachRule_closure1(_this, list, t1, node), true, type$.nullable_Value);
    },
    _setMultipleVariables$3(variables, value, nodeWithSpan) {
      var i,
        list = value.get$asList(),
        t1 = variables.length,
        minLength = Math.min(t1, list.length);
      for (i = 0; i < minLength; ++i)
        this._environment.setLocalVariable$3(variables[i], this._withoutSlash$2(list[i], nodeWithSpan), nodeWithSpan);
      for (i = minLength; i < t1; ++i)
        this._environment.setLocalVariable$3(variables[i], B.C__SassNull, nodeWithSpan);
    },
    visitErrorRule$1(node) {
      throw A.wrapException(this._evaluate$_exception$2(J.toString$0$(node.expression.accept$1(this)), node.span));
    },
    visitExtendRule$1(node) {
      var t1, t2, t3, t4, t5, _i, complex, visitor, t6, t7, _0_0, compound, _this = this, _null = null,
        styleRule = _this._atRootExcludingStyleRule ? _null : _this._styleRuleIgnoringAtRoot;
      if (styleRule == null || _this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.x40exten, node.span));
      for (t1 = styleRule.originalSelector.components, t2 = t1.length, t3 = node.span, t4 = type$.SourceSpan, t5 = type$.String, _i = 0; _i < t2; ++_i) {
        complex = t1[_i];
        if (!complex.accept$1(B._IsBogusVisitor_true))
          continue;
        visitor = A._SerializeVisitor$(_null, true, _null, true, false, _null, true);
        complex.accept$1(visitor);
        t6 = B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0));
        t7 = complex.accept$1(B.C__IsUselessVisitor) ? "can't" : "shouldn't";
        _this._warn$3('The selector "' + t6 + '" is invalid CSS and ' + t7 + string$.x20be_an, new A.MultiSpan(A.SpanExtensions_trimRight(complex.span), "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t3, "@extend rule"], t4, t5), t4, t5)), B.Deprecation_vrR);
      }
      _0_0 = _this._performInterpolationWithMap$2$warnForColor(node.selector, true);
      for (t1 = A.SelectorList_SelectorList$parse(A.trimAscii(_0_0._0, true), false, true, _0_0._1, _this._evaluate$_logger).components, t2 = t1.length, t3 = styleRule._style_rule$_selector._box$_inner, _i = 0; _i < t2; ++_i) {
        complex = t1[_i];
        compound = complex.get$singleCompound();
        if (compound == null)
          throw A.wrapException(A.SassFormatException$("complex selectors may not be extended.", complex.span, _null));
        t4 = compound.components;
        t5 = t4.length === 1 ? B.JSArray_methods.get$first(t4) : _null;
        if (t5 == null)
          throw A.wrapException(A.SassFormatException$(string$.compou + B.JSArray_methods.join$1(t4, ", ") + string$.x60_inst, compound.span, _null));
        _this._assertInModule$2(_this.__extensionStore, "_extensionStore").addExtension$4(t3.value, t5, node, _this._mediaQueries);
      }
      return _null;
    },
    visitAtRule$1(node) {
      var $name, value, children, wasInKeyframes, wasInUnknownAtRule, _this = this;
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.At_rul, node.span));
      $name = _this._interpolationToValue$1(node.name);
      value = A.NullableExtension_andThen(node.value, new A._EvaluateVisitor_visitAtRule_closure(_this));
      children = node.children;
      if (children == null) {
        _this._assertInModule$2(_this.__parent, "__parent").addChild$1(A.ModifiableCssAtRule$($name, node.span, true, value));
        return null;
      }
      wasInKeyframes = _this._inKeyframes;
      wasInUnknownAtRule = _this._inUnknownAtRule;
      if (A.unvendor($name.value) === "keyframes")
        _this._inKeyframes = true;
      else
        _this._inUnknownAtRule = true;
      _this._withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$($name, node.span, false, value), new A._EvaluateVisitor_visitAtRule_closure0(_this, $name, children), node.hasDeclarations, new A._EvaluateVisitor_visitAtRule_closure1(), type$.ModifiableCssAtRule, type$.Null);
      _this._inUnknownAtRule = wasInUnknownAtRule;
      _this._inKeyframes = wasInKeyframes;
      return null;
    },
    visitForRule$1(node) {
      var _this = this, t1 = {},
        t2 = node.from,
        fromNumber = _this._addExceptionSpan$2(t2, new A._EvaluateVisitor_visitForRule_closure(_this, node)),
        t3 = node.to,
        toNumber = _this._addExceptionSpan$2(t3, new A._EvaluateVisitor_visitForRule_closure0(_this, node)),
        from = _this._addExceptionSpan$2(t2, new A._EvaluateVisitor_visitForRule_closure1(fromNumber)),
        to = t1.to = _this._addExceptionSpan$2(t3, new A._EvaluateVisitor_visitForRule_closure2(toNumber, fromNumber)),
        direction = from > to ? -1 : 1;
      if (from === (!node.isExclusive ? t1.to = to + direction : to))
        return null;
      return _this._environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitForRule_closure3(t1, _this, node, from, direction, fromNumber), true, type$.nullable_Value);
    },
    visitForwardRule$1(node) {
      var newConfiguration, t4, _i, variable, $name, _this = this,
        _s8_ = "@forward",
        oldConfiguration = _this._configuration,
        adjustedConfiguration = oldConfiguration.throughForward$1(node),
        t1 = node.configuration,
        t2 = t1.length,
        t3 = node.url;
      if (t2 !== 0) {
        newConfiguration = _this._addForwardConfiguration$2(adjustedConfiguration, node);
        _this._loadModule$5$configuration(t3, _s8_, node, new A._EvaluateVisitor_visitForwardRule_closure(_this, node), newConfiguration);
        t3 = type$.String;
        t4 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
        for (_i = 0; _i < t2; ++_i) {
          variable = t1[_i];
          if (!variable.isGuarded)
            t4.add$1(0, variable.name);
        }
        _this._removeUsedConfiguration$3$except(adjustedConfiguration, newConfiguration, t4);
        t3 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
        for (_i = 0; _i < t2; ++_i)
          t3.add$1(0, t1[_i].name);
        for (t1 = newConfiguration._configuration$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t4 = t2.length, _i = 0; _i < t2.length; t2.length === t4 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
          $name = t2[_i];
          if (!t3.contains$1(0, $name))
            if (!t1.get$isEmpty(t1))
              t1.remove$1(0, $name);
        }
        _this._assertConfigurationIsEmpty$1(newConfiguration);
      } else {
        _this._configuration = adjustedConfiguration;
        _this._loadModule$4(t3, _s8_, node, new A._EvaluateVisitor_visitForwardRule_closure0(_this, node));
        _this._configuration = oldConfiguration;
      }
      return null;
    },
    _addForwardConfiguration$2(configuration, node) {
      var t2, t3, _i, variable, t4, oldValue, t5, variableNodeWithSpan, _null = null,
        t1 = configuration._configuration$_values,
        newValues = A.LinkedHashMap_LinkedHashMap$of(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue), type$.String, type$.ConfiguredValue);
      for (t2 = node.configuration, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        variable = t2[_i];
        if (variable.isGuarded) {
          t4 = variable.name;
          oldValue = t1.get$isEmpty(t1) ? _null : t1.remove$1(0, t4);
          if (oldValue != null)
            t5 = true;
          else {
            oldValue = _null;
            t5 = false;
          }
          if (t5 && !oldValue.value.$eq(0, B.C__SassNull)) {
            newValues.$indexSet(0, t4, oldValue);
            continue;
          }
        }
        t4 = variable.expression;
        variableNodeWithSpan = this._expressionNode$1(t4);
        newValues.$indexSet(0, variable.name, new A.ConfiguredValue(this._withoutSlash$2(t4.accept$1(this), variableNodeWithSpan), variable.span, variableNodeWithSpan));
      }
      if (configuration instanceof A.ExplicitConfiguration || t1.get$isEmpty(t1))
        return new A.ExplicitConfiguration(node, newValues, _null);
      else
        return new A.Configuration(newValues, _null);
    },
    _registerCommentsForModule$1(module) {
      var _this = this, _s5_ = "_root",
        t1 = _this.__root;
      if (t1 == null)
        return;
      t1 = _this._assertInModule$2(t1, _s5_).children;
      if (t1.get$length(t1) === 0 || !module.get$transitivelyContainsCss())
        return;
      t1 = _this._preModuleComments;
      if (t1 == null)
        t1 = _this._preModuleComments = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_Callable, type$.List_CssComment);
      J.addAll$1$ax(t1.putIfAbsent$2(module, new A._EvaluateVisitor__registerCommentsForModule_closure()), new A.UnmodifiableListView(J.cast$1$0$ax(_this._assertInModule$2(_this.__root, _s5_).children._collection$_source, type$.CssComment), type$.UnmodifiableListView_CssComment));
      _this._assertInModule$2(_this.__root, _s5_).clearChildren$0();
      _this.__endOfImports = 0;
    },
    _removeUsedConfiguration$3$except(upstream, downstream, except) {
      var t1, t2, t3, t4, _i, $name;
      for (t1 = upstream._configuration$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t3 = t2.length, t4 = downstream._configuration$_values, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        $name = t2[_i];
        if (except.contains$1(0, $name))
          continue;
        if (!t4.containsKey$1($name))
          if (!t1.get$isEmpty(t1))
            t1.remove$1(0, $name);
      }
    },
    _assertConfigurationIsEmpty$2$nameInError(configuration, nameInError) {
      var t1, _0_0, $name, value;
      if (!(configuration instanceof A.ExplicitConfiguration))
        return;
      t1 = configuration._configuration$_values;
      if (t1.get$isEmpty(t1))
        return;
      t1 = A.MapExtensions_get_pairs(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue), type$.String, type$.ConfiguredValue);
      _0_0 = t1.get$first(t1);
      $name = _0_0._0;
      value = _0_0._1;
      t1 = nameInError ? "$" + $name + string$.x20was_n : string$.This_v;
      throw A.wrapException(this._evaluate$_exception$2(t1, value.configurationSpan));
    },
    _assertConfigurationIsEmpty$1(configuration) {
      return this._assertConfigurationIsEmpty$2$nameInError(configuration, false);
    },
    visitFunctionRule$1(node) {
      var t1 = this._environment,
        t2 = t1.closure$0(),
        t3 = this._inDependency,
        t4 = t1._functions,
        index = t4.length - 1,
        t5 = node.name;
      t1._functionIndices.$indexSet(0, t5, index);
      J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable(node, t2, t3, type$.UserDefinedCallable_Environment));
      return null;
    },
    visitIfRule$1(node) {
      var t1, t2, _i, clauseToCheck,
        clause = node.lastClause;
      for (t1 = node.clauses, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        clauseToCheck = t1[_i];
        if (clauseToCheck.expression.accept$1(this).get$isTruthy()) {
          clause = clauseToCheck;
          break;
        }
      }
      return A.NullableExtension_andThen(clause, new A._EvaluateVisitor_visitIfRule_closure(this));
    },
    visitImportRule$1(node) {
      var t1, t2, t3, t4, t5, t6, _i, $import, t7, _0_0, $self, t8, _this = this,
        _s8_ = "__parent",
        _s5_ = "_root",
        _s13_ = "_endOfImports";
      for (t1 = node.imports, t2 = t1.length, t3 = type$.CssValue_String, t4 = _this.get$_interpolationToValue(), t5 = type$.StaticImport, t6 = type$.JSArray_ModifiableCssImport, _i = 0; _i < t2; ++_i) {
        $import = t1[_i];
        if ($import instanceof A.DynamicImport)
          _this._visitDynamicImport$1($import);
        else {
          t5._as($import);
          t7 = $import.url;
          _0_0 = _this._performInterpolationHelper$3$sourceMap$warnForColor(t7, false, false);
          $self = $import.modifiers;
          t8 = $self == null ? null : t4.call$1($self);
          node = new A.ModifiableCssImport(new A.CssValue(_0_0._0, t7.span, t3), t8, $import.span);
          if (_this._assertInModule$2(_this.__parent, _s8_) !== _this._assertInModule$2(_this.__root, _s5_))
            _this._assertInModule$2(_this.__parent, _s8_).addChild$1(node);
          else if (_this._assertInModule$2(_this.__endOfImports, _s13_) === J.get$length$asx(_this._assertInModule$2(_this.__root, _s5_).children._collection$_source)) {
            t7 = _this._assertInModule$2(_this.__root, _s5_);
            node._parent = t7;
            t7 = t7._children;
            node._indexInParent = t7.length;
            t7.push(node);
            _this.__endOfImports = _this._assertInModule$2(_this.__endOfImports, _s13_) + 1;
          } else {
            t7 = _this._outOfOrderImports;
            (t7 == null ? _this._outOfOrderImports = A._setArrayType([], t6) : t7).push(node);
          }
        }
      }
      return null;
    },
    _visitDynamicImport$1($import) {
      return this._withStackFrame$3("@import", $import, new A._EvaluateVisitor__visitDynamicImport_closure(this, $import));
    },
    _loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, forImport) {
      var importCache, _0_0, importer, canonicalUrl, originalUrl, _1_0, isDependency, stylesheet, _2_0, result, _3_0, error, stackTrace, error0, stackTrace0, message, t1, t2, t3, t4, exception, message0, _this = this,
        _s11_ = "_stylesheet";
      baseUrl = baseUrl;
      try {
        _this._importSpan = span;
        importCache = null;
        _0_0 = _this._evaluate$_importCache;
        if (_0_0 != null) {
          importCache = _0_0;
          t1 = true;
        } else
          t1 = false;
        if (t1) {
          if (baseUrl == null) {
            t1 = _this._assertInModule$2(_this.__stylesheet, _s11_).span;
            baseUrl = t1.get$sourceUrl(t1);
          }
          importer = null;
          canonicalUrl = null;
          originalUrl = null;
          _1_0 = J.canonicalize$4$baseImporter$baseUrl$forImport$x(importCache, A.Uri_parse(url), _this._importer, baseUrl, forImport);
          if (type$.Record_3_nullable_Object_and_nullable_Object_and_nullable_Object_originalUrl._is(_1_0)) {
            importer = _1_0._0;
            canonicalUrl = _1_0._1;
            originalUrl = _1_0._2;
            t1 = true;
          } else
            t1 = false;
          if (t1) {
            _this._loadedUrls.add$1(0, canonicalUrl);
            isDependency = _this._inDependency || !J.$eq$(importer, _this._importer);
            stylesheet = null;
            t1 = importCache;
            t2 = importer;
            t3 = canonicalUrl;
            t4 = originalUrl;
            _2_0 = t1.importCanonical$4$originalUrl$quiet(t2, t3, t4, _this._quietDeps && isDependency);
            if (_2_0 != null) {
              stylesheet = _2_0;
              t1 = true;
            } else
              t1 = false;
            if (t1) {
              t1 = stylesheet;
              t2 = importer;
              return new A._Record_3_importer_isDependency(t1, t2, isDependency);
            }
          }
        } else {
          result = null;
          t1 = baseUrl;
          if (t1 == null) {
            t1 = _this._assertInModule$2(_this.__stylesheet, _s11_).span;
            t1 = t1.get$sourceUrl(t1);
          }
          _3_0 = _this._importLikeNode$3(url, t1, forImport);
          if (_3_0 != null) {
            result = _3_0;
            t1 = true;
          } else
            t1 = false;
          if (t1) {
            t1 = result._0.span;
            t2 = _this._loadedUrls;
            A.NullableExtension_andThen(t1.get$sourceUrl(t1), t2.get$add(t2));
            t2 = result;
            return t2;
          }
        }
        if (B.JSString_methods.startsWith$1(url, "package:") && true)
          throw A.wrapException(string$.x22packa);
        else
          throw A.wrapException("Can't find stylesheet to import.");
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException)
          throw exception;
        else if (t1 instanceof A.ArgumentError) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace(_this._evaluate$_exception$1(J.toString$0$(error)), error, stackTrace);
        } else {
          error0 = t1;
          stackTrace0 = A.getTraceFromException(exception);
          message = null;
          try {
            message = A._asString(J.get$message$x(error0));
          } catch (exception) {
            message0 = J.toString$0$(error0);
            message = message0;
          }
          A.throwWithTrace(_this._evaluate$_exception$1(message), error0, stackTrace0);
        }
      } finally {
        _this._importSpan = null;
      }
    },
    _loadStylesheet$3$baseUrl(url, span, baseUrl) {
      return this._loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, false);
    },
    _loadStylesheet$3$forImport(url, span, forImport) {
      return this._loadStylesheet$4$baseUrl$forImport(url, span, null, forImport);
    },
    _importLikeNode$3(originalUrl, previous, forImport) {
      var t1, t2, _this = this,
        result = _this._nodeImporter.loadRelative$3(originalUrl, previous, forImport),
        isDependency = _this._inDependency,
        url = result._1;
      url = url;
      t1 = J.startsWith$1$s(url, "file") ? A.Syntax_forPath(url) : B.Syntax_SCSS_scss;
      t2 = _this._quietDeps && isDependency ? $.$get$Logger_quiet() : _this._evaluate$_logger;
      return new A._Record_3_importer_isDependency(A.Stylesheet_Stylesheet$parse(result._0, t1, t2, url), null, isDependency);
    },
    _applyMixin$5(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent) {
      var _1_8, t1, _0_0, _this = this,
        _s37_ = "Mixin doesn't accept a content block.",
        _s10_ = "invocation";
      $label0$0: {
        _1_8 = A._InitializedCell$(new A._EvaluateVisitor__applyMixin_closure(mixin));
        if (mixin == null)
          throw A.wrapException(_this._evaluate$_exception$2("Undefined mixin.", nodeWithSpan.get$span(nodeWithSpan)));
        t1 = mixin instanceof A.BuiltInCallable;
        if (t1 && !mixin.acceptsContent && contentCallable != null) {
          t1 = _this._evaluateArguments$1($arguments)._values;
          _0_0 = mixin.callbackFor$2(t1[2].length, new A.MapKeySet(t1[0], type$.MapKeySet_String));
          throw A.wrapException(A.MultiSpanSassRuntimeException$(_s37_, nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_0_0._0.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), _this._evaluate$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
        }
        if (t1) {
          _this._environment.withContent$2(contentCallable, new A._EvaluateVisitor__applyMixin_closure0(_this, $arguments, mixin, nodeWithSpanWithoutContent));
          break $label0$0;
        }
        t1 = type$.UserDefinedCallable_Environment._is(mixin);
        if (t1 && _1_8._readFinal$0() instanceof A.MixinRule && !_1_8._readFinal$0().get$hasContent() && contentCallable != null)
          throw A.wrapException(A.MultiSpanSassRuntimeException$(_s37_, nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), _s10_, A.LinkedHashMap_LinkedHashMap$_literal([mixin.declaration.$arguments.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), _this._evaluate$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
        if (t1) {
          _this._runUserDefinedCallable$1$4($arguments, mixin, nodeWithSpanWithoutContent, new A._EvaluateVisitor__applyMixin_closure1(_this, contentCallable, mixin, nodeWithSpanWithoutContent), type$.Null);
          break $label0$0;
        }
        throw A.wrapException(A.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
      }
    },
    visitIncludeRule$1(node) {
      var _this = this;
      _this._applyMixin$5(_this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitIncludeRule_closure(_this, node)), A.NullableExtension_andThen(node.content, new A._EvaluateVisitor_visitIncludeRule_closure0(_this)), node.$arguments, node, new A._FakeAstNode(new A._EvaluateVisitor_visitIncludeRule_closure1(node)));
      return null;
    },
    visitMixinRule$1(node) {
      var t1 = this._environment,
        t2 = t1.closure$0(),
        t3 = this._inDependency,
        t4 = t1._mixins,
        index = t4.length - 1,
        t5 = node.name;
      t1._mixinIndices.$indexSet(0, t5, index);
      J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable(node, t2, t3, type$.UserDefinedCallable_Environment));
      return null;
    },
    visitLoudComment$1(node) {
      var t1, _this = this,
        _s8_ = "__parent",
        _s13_ = "_endOfImports";
      if (_this._inFunction)
        return null;
      if (_this._assertInModule$2(_this.__parent, _s8_) === _this._assertInModule$2(_this.__root, "_root") && _this._assertInModule$2(_this.__endOfImports, _s13_) === J.get$length$asx(_this._assertInModule$2(_this.__root, "_root").children._collection$_source))
        _this.__endOfImports = _this._assertInModule$2(_this.__endOfImports, _s13_) + 1;
      t1 = node.text;
      _this._assertInModule$2(_this.__parent, _s8_).addChild$1(new A.ModifiableCssComment(_this._performInterpolation$1(t1), t1.span));
      return null;
    },
    visitMediaRule$1(node) {
      var _0_0, queries, mergedQueries, t1, mergedSources, t2, t3, _this = this;
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Media_, node.span));
      _0_0 = _this._performInterpolationWithMap$2$warnForColor(node.query, true);
      queries = A.CssMediaQuery_parseList(_0_0._0, _0_0._1, _this._evaluate$_logger);
      mergedQueries = A.NullableExtension_andThen(_this._mediaQueries, new A._EvaluateVisitor_visitMediaRule_closure(_this, queries));
      t1 = mergedQueries == null;
      if (!t1 && J.get$isEmpty$asx(mergedQueries))
        return null;
      if (t1)
        mergedSources = B.Set_empty1;
      else {
        t2 = _this._mediaQuerySources;
        t2.toString;
        t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery);
        t3 = _this._mediaQueries;
        t3.toString;
        t2.addAll$1(0, t3);
        t2.addAll$1(0, queries);
        mergedSources = t2;
      }
      t1 = t1 ? queries : mergedQueries;
      _this._withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$(t1, node.span), new A._EvaluateVisitor_visitMediaRule_closure0(_this, mergedQueries, queries, mergedSources, node), node.hasDeclarations, new A._EvaluateVisitor_visitMediaRule_closure1(mergedSources), type$.ModifiableCssMediaRule, type$.Null);
      return null;
    },
    _mergeMediaQueries$2(queries1, queries2) {
      var t1, t2, t3, t4, _0_0, result, t5,
        queries = A._setArrayType([], type$.JSArray_CssMediaQuery);
      for (t1 = J.get$iterator$ax(queries1), t2 = J.getInterceptor$ax(queries2); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        for (t4 = t2.get$iterator(queries2); t4.moveNext$0();) {
          _0_0 = t3.merge$1(t4.get$current(t4));
          if (B._SingletonCssMediaQueryMergeResult_0 === _0_0)
            continue;
          if (B._SingletonCssMediaQueryMergeResult_1 === _0_0)
            return null;
          if (_0_0 instanceof A.MediaQuerySuccessfulMergeResult) {
            result = _0_0;
            t5 = true;
          } else {
            result = null;
            t5 = false;
          }
          if (t5)
            queries.push(result.query);
        }
      }
      return queries;
    },
    visitReturnRule$1(node) {
      var t1 = node.expression;
      return this._withoutSlash$2(t1.accept$1(this), t1);
    },
    visitSilentComment$1(node) {
      return null;
    },
    visitStyleRule$1(node) {
      var t1, _0_0, selectorText, selectorMap, t2, parsedSelector, rule, oldAtRootExcludingStyleRule, t3, t4, t5, _i, complex, visitor, t6, t7, t8, t9, _this = this, _null = null,
        _s11_ = "_stylesheet",
        _s8_ = "__parent";
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Style_, node.span));
      t1 = node.selector;
      _0_0 = _this._performInterpolationWithMap$2$warnForColor(t1, true);
      selectorText = _0_0._0;
      selectorMap = _0_0._1;
      if (_this._inKeyframes) {
        _this._withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$(new A.CssValue(A.List_List$unmodifiable(A.KeyframeSelectorParser$(selectorText, selectorMap, _this._evaluate$_logger).parse$0(), type$.String), t1.span, type$.CssValue_List_String), node.span), new A._EvaluateVisitor_visitStyleRule_closure(_this, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure0(), type$.ModifiableCssKeyframeBlock, type$.Null);
        return _null;
      }
      t1 = A.SelectorList_SelectorList$parse(selectorText, !_this._assertInModule$2(_this.__stylesheet, _s11_).plainCss, !_this._assertInModule$2(_this.__stylesheet, _s11_).plainCss, selectorMap, _this._evaluate$_logger);
      t2 = _this._styleRuleIgnoringAtRoot;
      t2 = t2 == null ? _null : t2.originalSelector;
      parsedSelector = t1.resolveParentSelectors$2$implicitParent(t2, !_this._atRootExcludingStyleRule);
      rule = A.ModifiableCssStyleRule$(_this._assertInModule$2(_this.__extensionStore, "_extensionStore").addSelector$2(parsedSelector, _this._mediaQueries), node.span, parsedSelector);
      oldAtRootExcludingStyleRule = _this._atRootExcludingStyleRule;
      _this._atRootExcludingStyleRule = false;
      _this._withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitStyleRule_closure1(_this, rule, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure2(), type$.ModifiableCssStyleRule, type$.Null);
      _this._atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
      if (!rule.accept$1(B._IsInvisibleVisitor_false_false))
        for (t1 = parsedSelector.components, t2 = t1.length, t3 = type$.SourceSpan, t4 = type$.String, t5 = rule.children, _i = 0; _i < t2; ++_i) {
          complex = t1[_i];
          if (!complex.accept$1(B._IsBogusVisitor_true))
            continue;
          if (complex.accept$1(B.C__IsUselessVisitor)) {
            visitor = A._SerializeVisitor$(_null, true, _null, true, false, _null, true);
            complex.accept$1(visitor);
            _this._warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0)) + string$.x22x20is_ix20, A.SpanExtensions_trimRight(complex.span), B.Deprecation_vrR);
          } else if (complex.leadingCombinators.length !== 0) {
            visitor = A._SerializeVisitor$(_null, true, _null, true, false, _null, true);
            complex.accept$1(visitor);
            _this._warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0)) + string$.x22x20is_ix0a, A.SpanExtensions_trimRight(complex.span), B.Deprecation_vrR);
          } else {
            visitor = A._SerializeVisitor$(_null, true, _null, true, false, _null, true);
            complex.accept$1(visitor);
            t6 = B.JSString_methods.trim$0(visitor._serialize$_buffer.toString$0(0));
            t7 = complex.accept$1(B._IsBogusVisitor_false) ? string$.x20It_wi : "";
            t8 = A.SpanExtensions_trimRight(complex.span);
            if (t5.get$length(t5) === 0)
              A.throwExpression(A.IterableElementError_noElement());
            t9 = J.get$span$z(t5.$index(0, 0));
            _this._warn$3('The selector "' + t6 + string$.x22x20is_o + t7 + string$.x0aThis_, new A.MultiSpan(t8, "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t9, "this is not a style rule" + (t5.every$1(t5, new A._EvaluateVisitor_visitStyleRule_closure3()) ? "\n(try converting to a //-style comment)" : "")], t3, t4), t3, t4)), B.Deprecation_vrR);
          }
        }
      if ((_this._atRootExcludingStyleRule ? _null : _this._styleRuleIgnoringAtRoot) == null) {
        t1 = _this._assertInModule$2(_this.__parent, _s8_).children;
        t1 = !t1.get$isEmpty(t1);
      } else
        t1 = false;
      if (t1) {
        t1 = _this._assertInModule$2(_this.__parent, _s8_).children;
        t1.get$last(t1).isGroupEnd = true;
      }
      return _null;
    },
    visitSupportsRule$1(node) {
      var t1, _this = this;
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Suppor, node.span));
      t1 = node.condition;
      _this._withParent$2$4$scopeWhen$through(A.ModifiableCssSupportsRule$(new A.CssValue(_this._visitSupportsCondition$1(t1), t1.get$span(t1), type$.CssValue_String), node.span), new A._EvaluateVisitor_visitSupportsRule_closure(_this, node), node.hasDeclarations, new A._EvaluateVisitor_visitSupportsRule_closure0(), type$.ModifiableCssSupportsRule, type$.Null);
      return null;
    },
    _visitSupportsCondition$1(condition) {
      var operation, t1, t2, negation, interpolation, $function, anything, _this = this, _null = null, _box_0 = {};
      $label0$0: {
        if (condition instanceof A.SupportsOperation) {
          operation = condition;
          t1 = true;
        } else {
          operation = _null;
          t1 = false;
        }
        if (t1) {
          t1 = operation.left;
          t2 = operation.operator;
          t2 = _this._parenthesize$2(t1, t2) + " " + t2 + " " + _this._parenthesize$2(operation.right, t2);
          t1 = t2;
          break $label0$0;
        }
        if (condition instanceof A.SupportsNegation) {
          negation = condition;
          t1 = true;
        } else {
          negation = _null;
          t1 = false;
        }
        if (t1) {
          t1 = "not " + _this._parenthesize$1(negation.condition);
          break $label0$0;
        }
        if (condition instanceof A.SupportsInterpolation) {
          interpolation = condition;
          t1 = true;
        } else {
          interpolation = _null;
          t1 = false;
        }
        if (t1) {
          t1 = interpolation.expression;
          t1 = _this._evaluate$_serialize$3$quote(t1.accept$1(_this), t1, false);
          break $label0$0;
        }
        _box_0.declaration = null;
        if (condition instanceof A.SupportsDeclaration) {
          _box_0.declaration = condition;
          t1 = true;
        } else
          t1 = false;
        if (t1) {
          t1 = _this._withSupportsDeclaration$1(new A._EvaluateVisitor__visitSupportsCondition_closure(_box_0, _this));
          break $label0$0;
        }
        if (condition instanceof A.SupportsFunction) {
          $function = condition;
          t1 = true;
        } else {
          $function = _null;
          t1 = false;
        }
        if (t1) {
          t1 = _this._performInterpolation$1($function.name) + "(" + _this._performInterpolation$1($function.$arguments) + ")";
          break $label0$0;
        }
        if (condition instanceof A.SupportsAnything) {
          anything = condition;
          t1 = true;
        } else {
          anything = _null;
          t1 = false;
        }
        if (t1) {
          t1 = "(" + _this._performInterpolation$1(anything.contents) + ")";
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$("Unknown supports condition type " + A.getRuntimeTypeOfDartObject(condition).toString$0(0) + ".", _null));
      }
      return t1;
    },
    _withSupportsDeclaration$1$1(callback) {
      var t1,
        oldInSupportsDeclaration = this._inSupportsDeclaration;
      this._inSupportsDeclaration = true;
      try {
        t1 = callback.call$0();
        return t1;
      } finally {
        this._inSupportsDeclaration = oldInSupportsDeclaration;
      }
    },
    _withSupportsDeclaration$1(callback) {
      return this._withSupportsDeclaration$1$1(callback, type$.dynamic);
    },
    _parenthesize$2(condition, operator) {
      var t1;
      if (!(condition instanceof A.SupportsNegation))
        if (condition instanceof A.SupportsOperation)
          t1 = operator == null || operator !== condition.operator;
        else
          t1 = false;
      else
        t1 = true;
      if (t1)
        return "(" + this._visitSupportsCondition$1(condition) + ")";
      return this._visitSupportsCondition$1(condition);
    },
    _parenthesize$1(condition) {
      return this._parenthesize$2(condition, null);
    },
    visitVariableDeclaration$1(node) {
      var t2, t3, value, _this = this, _null = null, t1 = {};
      if (node.isGuarded) {
        if (node.namespace == null && _this._environment._variables.length === 1) {
          t1.override = null;
          t2 = _this._configuration._configuration$_values;
          t2 = t2.get$isEmpty(t2) ? _null : t2.remove$1(0, node.name);
          if (t2 != null) {
            t1.override = t2;
            t3 = t2;
            t2 = true;
          } else {
            t3 = _null;
            t2 = false;
          }
          if (t2 && !t3.value.$eq(0, B.C__SassNull)) {
            _this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure(t1, _this, node));
            return _null;
          }
        }
        value = _this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure0(_this, node));
        if (value != null && !value.$eq(0, B.C__SassNull))
          return _null;
      }
      if (node.isGlobal && !_this._environment.globalVariableExists$1(node.name)) {
        t1 = _this._environment._variables.length === 1 ? string$.As_of_S : string$.As_of_R + A.declarationName(node.span) + ": null` at the stylesheet root.";
        _this._warn$3(t1, node.span, B.Deprecation_hzy);
      }
      t1 = node.expression;
      _this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure1(_this, node, _this._withoutSlash$2(t1.accept$1(_this), t1)));
      return _null;
    },
    visitUseRule$1(node) {
      var values, _i, variable, t3, variableNodeWithSpan, configuration, _this = this,
        t1 = node.configuration,
        t2 = t1.length;
      if (t2 !== 0) {
        values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue);
        for (_i = 0; _i < t2; ++_i) {
          variable = t1[_i];
          t3 = variable.expression;
          variableNodeWithSpan = _this._expressionNode$1(t3);
          values.$indexSet(0, variable.name, new A.ConfiguredValue(_this._withoutSlash$2(t3.accept$1(_this), variableNodeWithSpan), variable.span, variableNodeWithSpan));
        }
        configuration = new A.ExplicitConfiguration(node, values, null);
      } else
        configuration = B.Configuration_Map_empty_null;
      _this._loadModule$5$configuration(node.url, "@use", node, new A._EvaluateVisitor_visitUseRule_closure(_this, node), configuration);
      _this._assertConfigurationIsEmpty$1(configuration);
      return null;
    },
    visitWarnRule$1(node) {
      var _this = this,
        value = _this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitWarnRule_closure(_this, node)),
        t1 = value instanceof A.SassString ? value._string$_text : _this._evaluate$_serialize$2(value, node.expression);
      _this._evaluate$_logger.warn$2$trace(0, t1, _this._evaluate$_stackTrace$1(node.span));
      return null;
    },
    visitWhileRule$1(node) {
      return this._environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitWhileRule_closure(this, node), true, node.hasDeclarations, type$.nullable_Value);
    },
    visitBinaryOperationExpression$1(node) {
      var t1, _this = this;
      if (_this._assertInModule$2(_this.__stylesheet, "_stylesheet").plainCss) {
        t1 = node.operator;
        t1 = t1 !== B.BinaryOperator_2jN && t1 !== B.BinaryOperator_t8B;
      } else
        t1 = false;
      if (t1)
        throw A.wrapException(_this._evaluate$_exception$2("Operators aren't allowed in plain CSS.", node.get$operatorSpan()));
      return _this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitBinaryOperationExpression_closure(_this, node));
    },
    _slash$3(left, right, node) {
      var t1, _null = null,
        result = left.dividedBy$1(right),
        _1_0 = new A._Record_2(left, right),
        _1_1 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure(_1_0)),
        _1_2 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure0(_1_0));
      if (_1_1._readFinal$0() instanceof A.SassNumber) {
        left = _1_1._readFinal$0();
        if (_1_2._readFinal$0() instanceof A.SassNumber) {
          right = _1_2._readFinal$0();
          t1 = node.allowsSlash && this._operandAllowsSlash$1(node.left) && this._operandAllowsSlash$1(node.right);
        } else {
          right = _null;
          t1 = false;
        }
      } else {
        right = _null;
        left = right;
        t1 = false;
      }
      if (t1)
        return type$.SassNumber._as(result).withSlash$2(left, right);
      if (_1_1._readFinal$0() instanceof A.SassNumber && _1_2._readFinal$0() instanceof A.SassNumber) {
        this._warn$3(string$.Using__o + A.S(new A._EvaluateVisitor__slash_recommendation().call$1(node)) + " or " + A.expressionToCalc(node).toString$0(0) + string$.x0a_Morex20, node.get$span(node), B.Deprecation_xHK);
        return result;
      }
      return result;
    },
    _operandAllowsSlash$1(node) {
      var t1, t2;
      if (node instanceof A.FunctionExpression)
        if (node.namespace == null) {
          t1 = node.originalName;
          if (B.Set_WfnXb.contains$1(0, A.stringReplaceAllUnchecked(t1, "_", "-").toLowerCase())) {
            t2 = this._environment;
            t1 = t2.getFunction$1(A.stringReplaceAllUnchecked(t1, "_", "-")) == null;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = true;
      return t1;
    },
    visitValueExpression$1(node) {
      return node.value;
    },
    visitVariableExpression$1(node) {
      var result = this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableExpression_closure(this, node));
      if (result != null)
        return result;
      throw A.wrapException(this._evaluate$_exception$2("Undefined variable.", node.span));
    },
    visitUnaryOperationExpression$1(node) {
      return this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitUnaryOperationExpression_closure(node, node.operand.accept$1(this)));
    },
    visitBooleanExpression$1(node) {
      return node.value ? B.SassBoolean_true : B.SassBoolean_false;
    },
    visitIfExpression$1(node) {
      var condition, t1, ifTrue, ifFalse, result, _this = this,
        _0_0 = _this._evaluateMacroArguments$1(node),
        positional = _0_0._0,
        named = _0_0._1;
      _this._verifyArguments$4(positional.length, named, $.$get$IfExpression_declaration(), node);
      condition = A.ListExtensions_elementAtOrNull(positional, 0);
      if (condition == null) {
        t1 = named.$index(0, "condition");
        t1.toString;
        condition = t1;
      }
      ifTrue = A.ListExtensions_elementAtOrNull(positional, 1);
      if (ifTrue == null) {
        t1 = named.$index(0, "if-true");
        t1.toString;
        ifTrue = t1;
      }
      ifFalse = A.ListExtensions_elementAtOrNull(positional, 2);
      if (ifFalse == null) {
        t1 = named.$index(0, "if-false");
        t1.toString;
        ifFalse = t1;
      }
      result = condition.accept$1(_this).get$isTruthy() ? ifTrue : ifFalse;
      return _this._withoutSlash$2(result.accept$1(_this), _this._expressionNode$1(result));
    },
    visitNullExpression$1(node) {
      return B.C__SassNull;
    },
    visitNumberExpression$1(node) {
      return A.SassNumber_SassNumber(node.value, node.unit);
    },
    visitParenthesizedExpression$1(node) {
      var _this = this;
      return _this._assertInModule$2(_this.__stylesheet, "_stylesheet").plainCss ? A.throwExpression(_this._evaluate$_exception$2("Parentheses aren't allowed in plain CSS.", node.span)) : node.expression.accept$1(_this);
    },
    visitColorExpression$1(node) {
      return node.value;
    },
    visitListExpression$1(node) {
      var t1 = node.contents;
      return A.SassList$(new A.MappedListIterable(t1, new A._EvaluateVisitor_visitListExpression_closure(this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value>")), node.separator, node.hasBrackets);
    },
    visitMapExpression$1(node) {
      var t2, t3, _i, t4, key, value, keyValue, valueValue, oldValueSpan,
        t1 = type$.Value,
        map = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1),
        keyNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode);
      for (t2 = node.pairs, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        t4 = t2[_i];
        key = t4._0;
        value = t4._1;
        keyValue = key.accept$1(this);
        valueValue = value.accept$1(this);
        if (map.containsKey$1(keyValue)) {
          t1 = keyNodes.$index(0, keyValue);
          oldValueSpan = t1 == null ? null : t1.get$span(t1);
          t1 = key.get$span(key);
          t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (oldValueSpan != null)
            t2.$indexSet(0, oldValueSpan, "first key");
          throw A.wrapException(A.MultiSpanSassRuntimeException$("Duplicate key.", t1, "second key", t2, this._evaluate$_stackTrace$1(key.get$span(key)), null));
        }
        map.$indexSet(0, keyValue, valueValue);
        keyNodes.$indexSet(0, keyValue, key);
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(map, t1, t1));
    },
    visitFunctionExpression$1(node) {
      var t2, _0_0, t3, t4, oldInFunction, result, _this = this,
        _s11_ = "_stylesheet",
        t1 = {},
        $function = _this._assertInModule$2(_this.__stylesheet, _s11_).plainCss ? null : _this._addExceptionSpan$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure(_this, node));
      t1.$function = $function;
      if ($function == null) {
        if (node.namespace != null)
          throw A.wrapException(_this._evaluate$_exception$2("Undefined function.", node.span));
        t2 = node.originalName;
        _0_0 = A.stringReplaceAllUnchecked(t2, "_", "-").toLowerCase();
        if ("min" === _0_0 || "max" === _0_0 || "round" === _0_0 || "abs" === _0_0) {
          t3 = node.$arguments;
          t4 = t3.named;
          t3 = t4.get$isEmpty(t4) && t3.rest == null && B.JSArray_methods.every$1(t3.positional, new A._EvaluateVisitor_visitFunctionExpression_closure0());
        } else
          t3 = false;
        if (t3)
          return _this._visitCalculation$2$inLegacySassFunction(node, true);
        if ("calc" === _0_0 || "clamp" === _0_0 || "hypot" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "sqrt" === _0_0 || "exp" === _0_0 || "sign" === _0_0 || "mod" === _0_0 || "rem" === _0_0 || "atan2" === _0_0 || "pow" === _0_0 || "log" === _0_0)
          return _this._visitCalculation$1(node);
        if (_this._assertInModule$2(_this.__stylesheet, _s11_).plainCss)
          $function = null;
        else {
          t3 = _this._builtInFunctions.$index(0, A.stringReplaceAllUnchecked(t2, "_", "-"));
          $function = t3;
        }
        t1.$function = $function == null ? new A.PlainCssCallable(t2) : $function;
      }
      oldInFunction = _this._inFunction;
      _this._inFunction = true;
      result = _this._addErrorSpan$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure1(t1, _this, node));
      _this._inFunction = oldInFunction;
      return result;
    },
    _visitCalculation$2$inLegacySassFunction(node, inLegacySassFunction) {
      var $arguments, oldCallableNode, t1, _0_0, error, stackTrace, t4, _i, exception, _this = this,
        t2 = node.$arguments,
        t3 = t2.named;
      if (t3.get$isNotEmpty(t3))
        throw A.wrapException(_this._evaluate$_exception$2(string$.Keywor, node.span));
      else if (t2.rest != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Rest_a, node.span));
      _this._checkCalculationArguments$1(node);
      t3 = A._setArrayType([], type$.JSArray_Object);
      for (t2 = t2.positional, t4 = t2.length, _i = 0; _i < t4; ++_i)
        t3.push(_this._visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction));
      $arguments = t3;
      if (_this._inSupportsDeclaration)
        return new A.SassCalculation(A.stringReplaceAllUnchecked(node.originalName, "_", "-"), A.List_List$unmodifiable($arguments, type$.Object));
      oldCallableNode = _this._callableNode;
      _this._callableNode = node;
      try {
        t1 = null;
        _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
        $label0$0: {
          if ("calc" === _0_0) {
            t1 = A.SassCalculation_calc(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("sqrt" === _0_0) {
            t1 = A.SassCalculation__singleArgument("sqrt", J.$index$asx($arguments, 0), A.number0__sqrt$closure(), true);
            break $label0$0;
          }
          if ("sin" === _0_0) {
            t1 = A.SassCalculation__singleArgument("sin", J.$index$asx($arguments, 0), A.number0__sin$closure(), false);
            break $label0$0;
          }
          if ("cos" === _0_0) {
            t1 = A.SassCalculation__singleArgument("cos", J.$index$asx($arguments, 0), A.number0__cos$closure(), false);
            break $label0$0;
          }
          if ("tan" === _0_0) {
            t1 = A.SassCalculation__singleArgument("tan", J.$index$asx($arguments, 0), A.number0__tan$closure(), false);
            break $label0$0;
          }
          if ("asin" === _0_0) {
            t1 = A.SassCalculation__singleArgument("asin", J.$index$asx($arguments, 0), A.number0__asin$closure(), true);
            break $label0$0;
          }
          if ("acos" === _0_0) {
            t1 = A.SassCalculation__singleArgument("acos", J.$index$asx($arguments, 0), A.number0__acos$closure(), true);
            break $label0$0;
          }
          if ("atan" === _0_0) {
            t1 = A.SassCalculation__singleArgument("atan", J.$index$asx($arguments, 0), A.number0__atan$closure(), true);
            break $label0$0;
          }
          if ("abs" === _0_0) {
            t1 = A.SassCalculation_abs(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("exp" === _0_0) {
            t1 = A.SassCalculation_exp(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("sign" === _0_0) {
            t1 = A.SassCalculation_sign(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("min" === _0_0) {
            t1 = A.SassCalculation_min($arguments);
            break $label0$0;
          }
          if ("max" === _0_0) {
            t1 = A.SassCalculation_max($arguments);
            break $label0$0;
          }
          if ("hypot" === _0_0) {
            t1 = A.SassCalculation_hypot($arguments);
            break $label0$0;
          }
          if ("pow" === _0_0) {
            t1 = A.SassCalculation_pow(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("atan2" === _0_0) {
            t1 = A.SassCalculation_atan2(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("log" === _0_0) {
            t1 = A.SassCalculation_log(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("mod" === _0_0) {
            t1 = A.SassCalculation_mod(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("rem" === _0_0) {
            t1 = A.SassCalculation_rem(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("round" === _0_0) {
            t1 = A.SassCalculation_round(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
            break $label0$0;
          }
          if ("clamp" === _0_0) {
            t1 = A.SassCalculation_clamp(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
            break $label0$0;
          }
          t3 = A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".');
          t1 = A.throwExpression(t3);
        }
        t1 = t1;
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassScriptException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          if (B.JSString_methods.contains$1(error.message, "compatible"))
            _this._verifyCompatibleNumbers$2($arguments, t2);
          A.throwWithTrace(_this._evaluate$_exception$2(error.message, node.span), error, stackTrace);
        } else
          throw exception;
      } finally {
        _this._callableNode = oldCallableNode;
      }
    },
    _visitCalculation$1(node) {
      return this._visitCalculation$2$inLegacySassFunction(node, false);
    },
    _checkCalculationArguments$1(node) {
      var _0_0,
        check = new A._EvaluateVisitor__checkCalculationArguments_check(this, node);
      $label0$0: {
        _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
        if ("calc" === _0_0 || "sqrt" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "abs" === _0_0 || "exp" === _0_0 || "sign" === _0_0) {
          check.call$1(1);
          break $label0$0;
        }
        if ("min" === _0_0 || "max" === _0_0 || "hypot" === _0_0) {
          check.call$0();
          break $label0$0;
        }
        if ("pow" === _0_0 || "atan2" === _0_0 || "log" === _0_0 || "mod" === _0_0 || "rem" === _0_0) {
          check.call$1(2);
          break $label0$0;
        }
        if ("round" === _0_0 || "clamp" === _0_0) {
          check.call$1(3);
          break $label0$0;
        }
        throw A.wrapException(A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".'));
      }
    },
    _verifyCompatibleNumbers$2(args, nodesWithSpans) {
      var i, t1, _0_0, arg, number1, j, number2;
      for (i = 0; t1 = args.length, i < t1; ++i) {
        _0_0 = args[i];
        if (_0_0 instanceof A.SassNumber) {
          t1 = _0_0.get$hasComplexUnits();
          arg = _0_0;
        } else {
          arg = null;
          t1 = false;
        }
        if (t1)
          throw A.wrapException(this._evaluate$_exception$2("Number " + A.S(arg) + " isn't compatible with CSS calculations.", J.get$span$z(nodesWithSpans[i])));
      }
      for (i = 0; i < t1 - 1; ++i) {
        number1 = args[i];
        if (!(number1 instanceof A.SassNumber))
          continue;
        for (j = i + 1; t1 = args.length, j < t1; ++j) {
          number2 = args[j];
          if (!(number2 instanceof A.SassNumber))
            continue;
          if (number1.hasPossiblyCompatibleUnits$1(number2))
            continue;
          throw A.wrapException(A.MultiSpanSassRuntimeException$(number1.toString$0(0) + " and " + number2.toString$0(0) + " are incompatible.", J.get$span$z(nodesWithSpans[i]), number1.toString$0(0), A.LinkedHashMap_LinkedHashMap$_literal([J.get$span$z(nodesWithSpans[j]), number2.toString$0(0)], type$.FileSpan, type$.String), this._evaluate$_stackTrace$1(J.get$span$z(nodesWithSpans[i])), null));
        }
      }
    },
    _visitCalculationExpression$2$inLegacySassFunction(node, inLegacySassFunction) {
      var inner, t1, result, t2, _0_0, _1_0, t3, _i, i, _this = this, _null = null, _box_0 = {};
      if (node instanceof A.ParenthesizedExpression) {
        inner = node.expression;
        t1 = true;
      } else {
        inner = _null;
        t1 = false;
      }
      if (t1) {
        result = _this._visitCalculationExpression$2$inLegacySassFunction(inner, inLegacySassFunction);
        return result instanceof A.SassString ? new A.SassString("(" + result._string$_text + ")", false) : result;
      }
      if (node instanceof A.StringExpression && node.accept$1(new A._IsCalculationSafeVisitor())) {
        t1 = node.text;
        t2 = t1.get$asPlain();
        _0_0 = t2 == null ? _null : t2.toLowerCase();
        $label0$0: {
          if ("pi" === _0_0) {
            t1 = A.SassNumber_SassNumber(3.141592653589793, _null);
            break $label0$0;
          }
          if ("e" === _0_0) {
            t1 = A.SassNumber_SassNumber(2.718281828459045, _null);
            break $label0$0;
          }
          if ("infinity" === _0_0) {
            t1 = A.SassNumber_SassNumber(1 / 0, _null);
            break $label0$0;
          }
          if ("-infinity" === _0_0) {
            t1 = A.SassNumber_SassNumber(-1 / 0, _null);
            break $label0$0;
          }
          if ("nan" === _0_0) {
            t1 = A.SassNumber_SassNumber(0 / 0, _null);
            break $label0$0;
          }
          t1 = new A.SassString(_this._performInterpolation$1(t1), false);
          break $label0$0;
        }
        return t1;
      }
      _box_0.right = _box_0.left = _box_0.operator = null;
      if (node instanceof A.BinaryOperationExpression) {
        _box_0.operator = node.operator;
        _box_0.left = node.left;
        _box_0.right = node.right;
        t1 = true;
      } else
        t1 = false;
      if (t1) {
        _this._checkWhitespaceAroundCalculationOperator$1(node);
        return _this._addExceptionSpan$2(node, new A._EvaluateVisitor__visitCalculationExpression_closure(_box_0, _this, node, inLegacySassFunction));
      }
      if (node instanceof A.NumberExpression || node instanceof A.VariableExpression || node instanceof A.FunctionExpression || node instanceof A.IfExpression) {
        _1_0 = node.accept$1(_this);
        $label1$1: {
          if (_1_0 instanceof A.SassNumber) {
            result = _1_0;
            t1 = true;
          } else {
            result = _null;
            t1 = false;
          }
          if (t1) {
            t1 = result;
            break $label1$1;
          }
          if (_1_0 instanceof A.SassCalculation) {
            result = _1_0;
            t1 = true;
          } else {
            result = _null;
            t1 = false;
          }
          if (t1) {
            t1 = result;
            break $label1$1;
          }
          if (_1_0 instanceof A.SassString) {
            t1 = !_1_0._hasQuotes;
            result = _1_0;
          } else {
            result = _null;
            t1 = false;
          }
          if (t1) {
            t1 = result;
            break $label1$1;
          }
          t1 = A.throwExpression(_this._evaluate$_exception$2("Value " + _1_0.toString$0(0) + " can't be used in a calculation.", node.get$span(node)));
        }
        return t1;
      }
      if (node instanceof A.ListExpression && !node.hasBrackets && B.ListSeparator_EVt === node.separator && node.contents.length >= 2) {
        t1 = A._setArrayType([], type$.JSArray_Object);
        for (t2 = node.contents, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t1.push(_this._visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction));
        _this._checkAdjacentCalculationValues$2(t1, node);
        for (i = 0; i < t1.length; ++i) {
          t3 = t1[i];
          if (t3 instanceof A.CalculationOperation && t2[i] instanceof A.ParenthesizedExpression)
            t1[i] = new A.SassString("(" + A.S(t3) + ")", false);
        }
        return new A.SassString(B.JSArray_methods.join$1(t1, " "), false);
      }
      throw A.wrapException(_this._evaluate$_exception$2(string$.This_e, node.get$span(node)));
    },
    _checkWhitespaceAroundCalculationOperator$1(node) {
      var t2, t3, t4, textBetweenOperands, first, last,
        t1 = node.operator;
      if (t1 !== B.BinaryOperator_anB && t1 !== B.BinaryOperator_olz)
        return;
      t1 = node.left;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t3 = node.right;
      t4 = t3.get$span(t3);
      if (t2 !== t4.get$file(t4))
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$end(t2);
      t4 = t3.get$span(t3);
      if (t2.offset >= t4.get$start(t4).offset)
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t1 = t1.get$span(t1);
      t1 = t1.get$end(t1);
      t3 = t3.get$span(t3);
      textBetweenOperands = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2._decodedChars, t1.offset, t3.get$start(t3).offset), 0, null);
      first = textBetweenOperands.charCodeAt(0);
      last = textBetweenOperands.charCodeAt(textBetweenOperands.length - 1);
      if (first === 32 || first === 9 || first === 10 || first === 13 || first === 12 || first === 47)
        t1 = !(last === 32 || last === 9 || last === 10 || last === 13 || last === 12 || last === 47);
      else
        t1 = true;
      if (t1)
        throw A.wrapException(this._evaluate$_exception$2(string$.x22x2b__an, node.get$operatorSpan()));
    },
    _binaryOperatorToCalculationOperator$2(operator, node) {
      var t1;
      $label0$0: {
        if (B.BinaryOperator_anB === operator) {
          t1 = B.CalculationOperator_IyK;
          break $label0$0;
        }
        if (B.BinaryOperator_olz === operator) {
          t1 = B.CalculationOperator_2bx;
          break $label0$0;
        }
        if (B.BinaryOperator_qN2 === operator) {
          t1 = B.CalculationOperator_jFr;
          break $label0$0;
        }
        if (B.BinaryOperator_t8B === operator) {
          t1 = B.CalculationOperator_OvN;
          break $label0$0;
        }
        t1 = A.throwExpression(this._evaluate$_exception$2(string$.This_o, node.get$operatorSpan()));
      }
      return t1;
    },
    _checkAdjacentCalculationValues$2(elements, node) {
      var t1, i, t2, previous, current, previousNode, currentNode, _0_2;
      for (t1 = elements.length, i = 1; i < t1; ++i) {
        t2 = i - 1;
        previous = elements[t2];
        current = elements[i];
        if (previous instanceof A.SassString || current instanceof A.SassString)
          continue;
        t1 = node.contents;
        previousNode = t1[t2];
        currentNode = t1[i];
        _0_2 = A._InitializedCell$(new A._EvaluateVisitor__checkAdjacentCalculationValues_closure(currentNode));
        if (currentNode instanceof A.UnaryOperationExpression)
          t1 = B.UnaryOperator_TLI === _0_2._readFinal$0() || B.UnaryOperator_gg4 === _0_2._readFinal$0();
        else
          t1 = false;
        if (!t1)
          t1 = currentNode instanceof A.NumberExpression && currentNode.value < 0;
        else
          t1 = true;
        if (t1)
          throw A.wrapException(this._evaluate$_exception$2(string$.x22x2b__an, A.FileSpanExtension_subspan(currentNode.get$span(currentNode), 0, 1)));
        else
          throw A.wrapException(this._evaluate$_exception$2("Missing math operator.", previousNode.get$span(previousNode).expand$1(0, currentNode.get$span(currentNode))));
      }
    },
    visitInterpolatedFunctionExpression$1(node) {
      var result, _this = this,
        t1 = _this._performInterpolation$1(node.name),
        oldInFunction = _this._inFunction;
      _this._inFunction = true;
      result = _this._addErrorSpan$2(node, new A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure(_this, node, new A.PlainCssCallable(t1)));
      _this._inFunction = oldInFunction;
      return result;
    },
    _runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, run, $V) {
      var oldCallable, result, _this = this,
        evaluated = _this._evaluateArguments$1($arguments),
        $name = callable.declaration.name;
      if ($name !== "@content")
        $name += "()";
      oldCallable = _this._currentCallable;
      _this._currentCallable = callable;
      result = _this._withStackFrame$3($name, nodeWithSpan, new A._EvaluateVisitor__runUserDefinedCallable_closure(_this, callable, evaluated, nodeWithSpan, run, $V));
      _this._currentCallable = oldCallable;
      return result;
    },
    _runFunctionCallable$3($arguments, callable, nodeWithSpan) {
      var buffer, first, argument, restArg, rest, error, t1, t2, _i, t3, exception, _this = this;
      if (callable instanceof A.BuiltInCallable)
        return _this._withoutSlash$2(_this._runBuiltInCallable$3($arguments, callable, nodeWithSpan), nodeWithSpan);
      else if (type$.UserDefinedCallable_Environment._is(callable))
        return _this._runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, new A._EvaluateVisitor__runFunctionCallable_closure(_this, callable), type$.Value);
      else if (callable instanceof A.PlainCssCallable) {
        t1 = $arguments.named;
        if (t1.get$isNotEmpty(t1) || $arguments.keywordRest != null)
          throw A.wrapException(_this._evaluate$_exception$2(string$.Plain_, nodeWithSpan.get$span(nodeWithSpan)));
        buffer = new A.StringBuffer(callable.name + "(");
        try {
          first = true;
          for (t1 = $arguments.positional, t2 = t1.length, _i = 0; _i < t2; ++_i) {
            argument = t1[_i];
            if (first)
              first = false;
            else
              buffer._contents += ", ";
            t3 = argument;
            buffer._contents += _this._evaluate$_serialize$3$quote(t3.accept$1(_this), t3, true);
          }
          restArg = $arguments.rest;
          if (restArg != null) {
            rest = restArg.accept$1(_this);
            if (!first)
              buffer._contents += ", ";
            buffer._contents += _this._evaluate$_serialize$2(rest, restArg);
          }
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (type$.SassRuntimeException._is(t1)) {
            error = t1;
            if (!B.JSString_methods.endsWith$1(error._span_exception$_message, "isn't a valid CSS value."))
              throw exception;
            throw A.wrapException(A.MultiSpanSassRuntimeException$(error._span_exception$_message, J.get$span$z(error), "value", A.LinkedHashMap_LinkedHashMap$_literal([nodeWithSpan.get$span(nodeWithSpan), "unknown function treated as plain CSS"], type$.FileSpan, type$.String), J.get$trace$z(error), null));
          } else
            throw exception;
        }
        buffer._contents += A.Primitives_stringFromCharCode(41);
        t1 = buffer._contents;
        return new A.SassString(t1.charCodeAt(0) == 0 ? t1 : t1, false);
      } else
        throw A.wrapException(A.ArgumentError$("Unknown callable type " + J.get$runtimeType$(callable).toString$0(0) + ".", null));
    },
    _runBuiltInCallable$3($arguments, callable, nodeWithSpan) {
      var result, error, stackTrace, message, namedSet, _0_0, declaredArguments, i, t1, argument, t2, t3, rest, argumentList, exception, message0, _this = this, _box_0 = {},
        evaluated = _this._evaluateArguments$1($arguments),
        oldCallableNode = _this._callableNode;
      _this._callableNode = nodeWithSpan;
      namedSet = new A.MapKeySet(evaluated._values[0], type$.MapKeySet_String);
      _box_0.callback = _box_0.overload = null;
      _0_0 = callable.callbackFor$2(evaluated._values[2].length, namedSet);
      _box_0.overload = _0_0._0;
      _box_0.callback = _0_0._1;
      _this._addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure(_box_0, evaluated, namedSet));
      declaredArguments = _box_0.overload.$arguments;
      for (i = evaluated._values[2].length, t1 = declaredArguments.length; i < t1; ++i) {
        argument = declaredArguments[i];
        t2 = evaluated._values[2];
        t3 = evaluated._values[0].remove$1(0, argument.name);
        if (t3 == null) {
          t3 = argument.defaultValue;
          t3 = _this._withoutSlash$2(t3.accept$1(_this), t3);
        }
        t2.push(t3);
      }
      if (_box_0.overload.restArgument != null) {
        if (evaluated._values[2].length > t1) {
          rest = B.JSArray_methods.sublist$1(evaluated._values[2], t1);
          B.JSArray_methods.removeRange$2(evaluated._values[2], t1, evaluated._values[2].length);
        } else
          rest = B.List_empty8;
        t1 = evaluated._values[0];
        argumentList = A.SassArgumentList$(rest, t1, evaluated._values[4] === B.ListSeparator_undecided_null_undecided ? B.ListSeparator_rXA : evaluated._values[4]);
        evaluated._values[2].push(argumentList);
      } else
        argumentList = null;
      result = null;
      try {
        result = _this._addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure0(_box_0, evaluated));
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException)
          throw exception;
        else {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          message = null;
          try {
            message = A._asString(J.get$message$x(error));
          } catch (exception) {
            message0 = J.toString$0$(error);
            message = message0;
          }
          A.throwWithTrace(_this._evaluate$_exception$2(message, nodeWithSpan.get$span(nodeWithSpan)), error, stackTrace);
        }
      }
      _this._callableNode = oldCallableNode;
      if (argumentList == null)
        return result;
      if (evaluated._values[0].__js_helper$_length === 0)
        return result;
      if (argumentList._wereKeywordsAccessed)
        return result;
      t1 = evaluated._values[0];
      t1 = t1.get$keys(t1);
      t1 = A.pluralize("argument", t1.get$length(t1), null);
      t2 = evaluated._values[0];
      throw A.wrapException(A.MultiSpanSassRuntimeException$("No " + t1 + " named " + A.toSentence(t2.get$keys(t2).map$1$1(0, new A._EvaluateVisitor__runBuiltInCallable_closure1(), type$.Object), "or") + ".", nodeWithSpan.get$span(nodeWithSpan), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([_box_0.overload.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), _this._evaluate$_stackTrace$1(nodeWithSpan.get$span(nodeWithSpan)), null));
    },
    _evaluateArguments$1($arguments) {
      var t1, t2, _i, expression, nodeForSpan, named, namedNodes, t3, t4, $name, value, restArgs, rest, restNodeForSpan, t5, separator, keywordRestArgs, keywordRest, keywordRestNodeForSpan, _this = this,
        positional = A._setArrayType([], type$.JSArray_Value),
        positionalNodes = A._setArrayType([], type$.JSArray_AstNode);
      for (t1 = $arguments.positional, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        expression = t1[_i];
        nodeForSpan = _this._expressionNode$1(expression);
        positional.push(_this._withoutSlash$2(expression.accept$1(_this), nodeForSpan));
        positionalNodes.push(nodeForSpan);
      }
      t1 = type$.String;
      named = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value);
      t2 = type$.AstNode;
      namedNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
      for (t3 = A.MapExtensions_get_pairs($arguments.named, t1, type$.Expression), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        nodeForSpan = _this._expressionNode$1(value);
        named.$indexSet(0, $name, _this._withoutSlash$2(value.accept$1(_this), nodeForSpan));
        namedNodes.$indexSet(0, $name, nodeForSpan);
      }
      restArgs = $arguments.rest;
      if (restArgs == null)
        return new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, B.ListSeparator_undecided_null_undecided]);
      rest = restArgs.accept$1(_this);
      restNodeForSpan = _this._expressionNode$1(restArgs);
      if (rest instanceof A.SassMap) {
        _this._addRestMap$4(named, rest, restArgs, new A._EvaluateVisitor__evaluateArguments_closure());
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t4 = rest._map$_contents, t4 = J.get$iterator$ax(t4.get$keys(t4)), t5 = type$.SassString; t4.moveNext$0();)
          t3.$indexSet(0, t5._as(t4.get$current(t4))._string$_text, restNodeForSpan);
        namedNodes.addAll$1(0, t3);
        separator = B.ListSeparator_undecided_null_undecided;
      } else if (rest instanceof A.SassList) {
        t3 = rest._list$_contents;
        B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t3, new A._EvaluateVisitor__evaluateArguments_closure0(_this, restNodeForSpan), A._arrayInstanceType(t3)._eval$1("MappedListIterable<1,Value>")));
        B.JSArray_methods.addAll$1(positionalNodes, A.List_List$filled(t3.length, restNodeForSpan, false, t2));
        separator = rest._separator;
        if (rest instanceof A.SassArgumentList) {
          rest._wereKeywordsAccessed = true;
          rest._keywords.forEach$1(0, new A._EvaluateVisitor__evaluateArguments_closure1(_this, named, restNodeForSpan, namedNodes));
        }
      } else {
        positional.push(_this._withoutSlash$2(rest, restNodeForSpan));
        positionalNodes.push(restNodeForSpan);
        separator = B.ListSeparator_undecided_null_undecided;
      }
      keywordRestArgs = $arguments.keywordRest;
      if (keywordRestArgs == null)
        return new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
      keywordRest = keywordRestArgs.accept$1(_this);
      keywordRestNodeForSpan = _this._expressionNode$1(keywordRestArgs);
      if (keywordRest instanceof A.SassMap) {
        _this._addRestMap$4(named, keywordRest, keywordRestArgs, new A._EvaluateVisitor__evaluateArguments_closure2());
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t2 = keywordRest._map$_contents, t2 = J.get$iterator$ax(t2.get$keys(t2)), t3 = type$.SassString; t2.moveNext$0();)
          t1.$indexSet(0, t3._as(t2.get$current(t2))._string$_text, keywordRestNodeForSpan);
        namedNodes.addAll$1(0, t1);
        return new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
      } else
        throw A.wrapException(_this._evaluate$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs.get$span(keywordRestArgs)));
    },
    _evaluateMacroArguments$1(invocation) {
      var t2, positional, named, rest, restNodeForSpan, keywordRestArgs_, keywordRest, keywordRestNodeForSpan, _this = this,
        t1 = invocation.$arguments,
        restArgs_ = t1.rest;
      if (restArgs_ == null)
        return new A._Record_2(t1.positional, t1.named);
      t2 = t1.positional;
      positional = A._setArrayType(t2.slice(0), A._arrayInstanceType(t2));
      named = A.LinkedHashMap_LinkedHashMap$of(t1.named, type$.String, type$.Expression);
      rest = restArgs_.accept$1(_this);
      restNodeForSpan = _this._expressionNode$1(restArgs_);
      if (rest instanceof A.SassMap)
        _this._addRestMap$4(named, rest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure(restArgs_));
      else if (rest instanceof A.SassList) {
        t2 = rest._list$_contents;
        B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t2, new A._EvaluateVisitor__evaluateMacroArguments_closure0(_this, restNodeForSpan, restArgs_), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,Expression>")));
        if (rest instanceof A.SassArgumentList) {
          rest._wereKeywordsAccessed = true;
          rest._keywords.forEach$1(0, new A._EvaluateVisitor__evaluateMacroArguments_closure1(_this, named, restNodeForSpan, restArgs_));
        }
      } else
        positional.push(new A.ValueExpression(_this._withoutSlash$2(rest, restNodeForSpan), restArgs_.get$span(restArgs_)));
      keywordRestArgs_ = t1.keywordRest;
      if (keywordRestArgs_ == null)
        return new A._Record_2(positional, named);
      keywordRest = keywordRestArgs_.accept$1(_this);
      keywordRestNodeForSpan = _this._expressionNode$1(keywordRestArgs_);
      if (keywordRest instanceof A.SassMap) {
        _this._addRestMap$4(named, keywordRest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure2(_this, keywordRestNodeForSpan, keywordRestArgs_));
        return new A._Record_2(positional, named);
      } else
        throw A.wrapException(_this._evaluate$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs_.get$span(keywordRestArgs_)));
    },
    _addRestMap$1$4(values, map, nodeWithSpan, convert) {
      map._map$_contents.forEach$1(0, new A._EvaluateVisitor__addRestMap_closure(this, values, convert, this._expressionNode$1(nodeWithSpan), map, nodeWithSpan));
    },
    _addRestMap$4(values, map, nodeWithSpan, convert) {
      return this._addRestMap$1$4(values, map, nodeWithSpan, convert, type$.dynamic);
    },
    _verifyArguments$4(positional, named, $arguments, nodeWithSpan) {
      return this._addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__verifyArguments_closure($arguments, positional, named));
    },
    visitSelectorExpression$1(node) {
      var t1 = this._styleRuleIgnoringAtRoot;
      t1 = t1 == null ? null : t1.originalSelector.get$asSassList();
      return t1 == null ? B.C__SassNull : t1;
    },
    visitStringExpression$1(node) {
      var t1, t2, t3, t4, _i, value, t5, _0_0, text, _this = this,
        oldInSupportsDeclaration = _this._inSupportsDeclaration;
      _this._inSupportsDeclaration = false;
      t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = node.text.contents, t3 = t2.length, t4 = type$.Expression, _i = 0; _i < t3; ++_i) {
        value = t2[_i];
        $label0$0: {
          if (typeof value == "string") {
            t5 = value;
            break $label0$0;
          }
          if (t4._is(value)) {
            _0_0 = value.accept$1(_this);
            $label1$1: {
              if (_0_0 instanceof A.SassString) {
                text = _0_0._string$_text;
                t5 = true;
              } else {
                text = null;
                t5 = false;
              }
              if (t5) {
                t5 = text;
                break $label1$1;
              }
              t5 = _this._evaluate$_serialize$3$quote(_0_0, value, false);
              break $label1$1;
            }
            break $label0$0;
          }
          t5 = A.throwExpression(A.UnsupportedError$("Unknown interpolation value " + A.S(value)));
        }
        t1.push(t5);
      }
      t1 = B.JSArray_methods.join$0(t1);
      _this._inSupportsDeclaration = oldInSupportsDeclaration;
      return new A.SassString(t1, node.hasQuotes);
    },
    visitSupportsExpression$1(expression) {
      return new A.SassString(this._visitSupportsCondition$1(expression.condition), false);
    },
    visitCssAtRule$1(node) {
      var wasInKeyframes, wasInUnknownAtRule, t1, _this = this;
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.At_rul, node.span));
      if (node.isChildless) {
        _this._assertInModule$2(_this.__parent, "__parent").addChild$1(A.ModifiableCssAtRule$(node.name, node.span, true, node.value));
        return;
      }
      wasInKeyframes = _this._inKeyframes;
      wasInUnknownAtRule = _this._inUnknownAtRule;
      t1 = node.name;
      if (A.unvendor(t1.value) === "keyframes")
        _this._inKeyframes = true;
      else
        _this._inUnknownAtRule = true;
      _this._withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$(t1, node.span, false, node.value), new A._EvaluateVisitor_visitCssAtRule_closure(_this, node), false, new A._EvaluateVisitor_visitCssAtRule_closure0(), type$.ModifiableCssAtRule, type$.Null);
      _this._inUnknownAtRule = wasInUnknownAtRule;
      _this._inKeyframes = wasInKeyframes;
    },
    visitCssComment$1(node) {
      var _this = this,
        _s8_ = "__parent",
        _s13_ = "_endOfImports";
      if (_this._assertInModule$2(_this.__parent, _s8_) === _this._assertInModule$2(_this.__root, "_root") && _this._assertInModule$2(_this.__endOfImports, _s13_) === J.get$length$asx(_this._assertInModule$2(_this.__root, "_root").children._collection$_source))
        _this.__endOfImports = _this._assertInModule$2(_this.__endOfImports, _s13_) + 1;
      _this._assertInModule$2(_this.__parent, _s8_).addChild$1(new A.ModifiableCssComment(node.text, node.span));
    },
    visitCssDeclaration$1(node) {
      this._assertInModule$2(this.__parent, "__parent").addChild$1(A.ModifiableCssDeclaration$(node.name, node.value, node.span, node.parsedAsCustomProperty, node.valueSpanForMap));
    },
    visitCssImport$1(node) {
      var t1, _this = this,
        _s8_ = "__parent",
        _s5_ = "_root",
        _s13_ = "_endOfImports",
        modifiableNode = new A.ModifiableCssImport(node.url, node.modifiers, node.span);
      if (_this._assertInModule$2(_this.__parent, _s8_) !== _this._assertInModule$2(_this.__root, _s5_))
        _this._assertInModule$2(_this.__parent, _s8_).addChild$1(modifiableNode);
      else if (_this._assertInModule$2(_this.__endOfImports, _s13_) === J.get$length$asx(_this._assertInModule$2(_this.__root, _s5_).children._collection$_source)) {
        _this._assertInModule$2(_this.__root, _s5_).addChild$1(modifiableNode);
        _this.__endOfImports = _this._assertInModule$2(_this.__endOfImports, _s13_) + 1;
      } else {
        t1 = _this._outOfOrderImports;
        (t1 == null ? _this._outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport) : t1).push(modifiableNode);
      }
    },
    visitCssKeyframeBlock$1(node) {
      this._withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$(node.selector, node.span), new A._EvaluateVisitor_visitCssKeyframeBlock_closure(this, node), false, new A._EvaluateVisitor_visitCssKeyframeBlock_closure0(), type$.ModifiableCssKeyframeBlock, type$.Null);
    },
    visitCssMediaRule$1(node) {
      var mergedQueries, t1, mergedSources, t2, t3, _this = this;
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Media_, node.span));
      mergedQueries = A.NullableExtension_andThen(_this._mediaQueries, new A._EvaluateVisitor_visitCssMediaRule_closure(_this, node));
      t1 = mergedQueries == null;
      if (!t1 && J.get$isEmpty$asx(mergedQueries))
        return;
      if (t1)
        mergedSources = B.Set_empty1;
      else {
        t2 = _this._mediaQuerySources;
        t2.toString;
        t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery);
        t3 = _this._mediaQueries;
        t3.toString;
        t2.addAll$1(0, t3);
        t2.addAll$1(0, node.queries);
        mergedSources = t2;
      }
      t1 = t1 ? node.queries : mergedQueries;
      _this._withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$(t1, node.span), new A._EvaluateVisitor_visitCssMediaRule_closure0(_this, mergedQueries, node, mergedSources), false, new A._EvaluateVisitor_visitCssMediaRule_closure1(mergedSources), type$.ModifiableCssMediaRule, type$.Null);
    },
    visitCssStyleRule$1(node) {
      var t1, styleRule, t2, t3, t4, originalSelector, rule, oldAtRootExcludingStyleRule, _0_0, _0_1, lastChild, _this = this;
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Style_, node.span));
      t1 = _this._atRootExcludingStyleRule;
      styleRule = t1 ? null : _this._styleRuleIgnoringAtRoot;
      t2 = node._style_rule$_selector._box$_inner.value;
      t3 = styleRule == null;
      t4 = t3 ? null : styleRule.originalSelector;
      originalSelector = t2.resolveParentSelectors$2$implicitParent(t4, !t1);
      rule = A.ModifiableCssStyleRule$(_this._assertInModule$2(_this.__extensionStore, "_extensionStore").addSelector$2(originalSelector, _this._mediaQueries), node.span, originalSelector);
      oldAtRootExcludingStyleRule = _this._atRootExcludingStyleRule;
      _this._atRootExcludingStyleRule = false;
      _this._withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitCssStyleRule_closure(_this, rule, node), false, new A._EvaluateVisitor_visitCssStyleRule_closure0(), type$.ModifiableCssStyleRule, type$.Null);
      _this._atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
      _0_0 = _this._assertInModule$2(_this.__parent, "__parent").children;
      _0_1 = A._InitializedCell$(new A._EvaluateVisitor_visitCssStyleRule_closure1(_0_0));
      if (_0_1._readFinal$0() >= 1) {
        lastChild = J.elementAt$1$ax(_0_0._collection$_source, _0_1._readFinal$0() - 1);
        t1 = t3;
      } else {
        lastChild = null;
        t1 = false;
      }
      if (t1)
        lastChild.isGroupEnd = true;
    },
    visitCssStylesheet$1(node) {
      var t1;
      for (t1 = J.get$iterator$ax(node.get$children(node)); t1.moveNext$0();)
        t1.get$current(t1).accept$1(this);
    },
    visitCssSupportsRule$1(node) {
      var _this = this;
      if (_this._declarationName != null)
        throw A.wrapException(_this._evaluate$_exception$2(string$.Suppor, node.span));
      _this._withParent$2$4$scopeWhen$through(A.ModifiableCssSupportsRule$(node.condition, node.span), new A._EvaluateVisitor_visitCssSupportsRule_closure(_this, node), false, new A._EvaluateVisitor_visitCssSupportsRule_closure0(), type$.ModifiableCssSupportsRule, type$.Null);
    },
    _handleReturn$1$2(list, callback) {
      var t1, _i, _0_0, result, t2;
      for (t1 = list.length, _i = 0; _i < list.length; list.length === t1 || (0, A.throwConcurrentModificationError)(list), ++_i) {
        _0_0 = callback.call$1(list[_i]);
        if (_0_0 != null) {
          result = _0_0;
          t2 = true;
        } else {
          result = null;
          t2 = false;
        }
        if (t2)
          return result;
      }
      return null;
    },
    _handleReturn$2(list, callback) {
      return this._handleReturn$1$2(list, callback, type$.dynamic);
    },
    _withEnvironment$1$2(environment, callback) {
      var result,
        oldEnvironment = this._environment;
      this._environment = environment;
      result = callback.call$0();
      this._environment = oldEnvironment;
      return result;
    },
    _withEnvironment$2(environment, callback) {
      return this._withEnvironment$1$2(environment, callback, type$.dynamic);
    },
    _interpolationToValue$3$trim$warnForColor(interpolation, trim, warnForColor) {
      var result = this._performInterpolation$2$warnForColor(interpolation, warnForColor),
        t1 = trim ? A.trimAscii(result, true) : result;
      return new A.CssValue(t1, interpolation.span, type$.CssValue_String);
    },
    _interpolationToValue$1(interpolation) {
      return this._interpolationToValue$3$trim$warnForColor(interpolation, false, false);
    },
    _interpolationToValue$2$warnForColor(interpolation, warnForColor) {
      return this._interpolationToValue$3$trim$warnForColor(interpolation, false, warnForColor);
    },
    _performInterpolation$2$warnForColor(interpolation, warnForColor) {
      var _0_0 = this._performInterpolationHelper$3$sourceMap$warnForColor(interpolation, false, warnForColor);
      return _0_0._0;
    },
    _performInterpolation$1(interpolation) {
      return this._performInterpolation$2$warnForColor(interpolation, false);
    },
    _performInterpolationWithMap$2$warnForColor(interpolation, warnForColor) {
      var _0_0 = this._performInterpolationHelper$3$sourceMap$warnForColor(interpolation, true, true),
        map = _0_0._1;
      map.toString;
      return new A._Record_2(_0_0._0, map);
    },
    _performInterpolationHelper$3$sourceMap$warnForColor(interpolation, sourceMap, warnForColor) {
      var t1, t2, t3, t4, t5, t6, t7, first, _i, t8, value, result, t9, result0, _this = this, _null = null,
        targetLocations = sourceMap ? A._setArrayType([], type$.JSArray_SourceLocation) : _null,
        oldInSupportsDeclaration = _this._inSupportsDeclaration;
      _this._inSupportsDeclaration = false;
      for (t1 = interpolation.contents, t2 = t1.length, t3 = type$.Expression, t4 = targetLocations == null, t5 = type$.JSArray_Object, t6 = interpolation.span, t7 = type$.Object, first = true, _i = 0, t8 = ""; _i < t2; ++_i, first = false) {
        value = t1[_i];
        if (!first)
          if (!t4)
            targetLocations.push(A.SourceLocation$(t8.length, _null, _null, _null));
        if (typeof value == "string") {
          t8 += value;
          continue;
        }
        t3._as(value);
        result = value.accept$1(_this);
        if (warnForColor && $.$get$namesByColor().containsKey$1(result)) {
          t9 = A._setArrayType([""], t5);
          result0 = A.List_List$from(t9, false, t7);
          result0.fixed$length = Array;
          result0.immutable$list = Array;
          result0 = new A.Interpolation(result0, t6);
          result0.Interpolation$2(t9, t6);
          t9 = $.$get$namesByColor();
          _this._warn$2(string$.You_pr + A.S(t9.$index(0, result)) + string$.x20in_in + result.toString$0(0) + string$.x2c_whicw + A.S(t9.$index(0, result)) + string$.x22x29__If + new A.BinaryOperationExpression(B.BinaryOperator_anB, new A.StringExpression(result0, true), value, false).toString$0(0) + "'.", value.get$span(value));
        }
        t8 += _this._evaluate$_serialize$3$quote(result, value, false);
      }
      _this._inSupportsDeclaration = oldInSupportsDeclaration;
      return new A._Record_2(t8.charCodeAt(0) == 0 ? t8 : t8, A.NullableExtension_andThen(targetLocations, new A._EvaluateVisitor__performInterpolationHelper_closure(interpolation)));
    },
    _evaluate$_serialize$3$quote(value, nodeWithSpan, quote) {
      return this._addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__serialize_closure(value, quote));
    },
    _evaluate$_serialize$2(value, nodeWithSpan) {
      return this._evaluate$_serialize$3$quote(value, nodeWithSpan, true);
    },
    _expressionNode$1(expression) {
      var t1;
      if (expression instanceof A.VariableExpression) {
        t1 = this._addExceptionSpan$2(expression, new A._EvaluateVisitor__expressionNode_closure(this, expression));
        return t1 == null ? expression : t1;
      } else
        return expression;
    },
    _withParent$2$4$scopeWhen$through(node, callback, scopeWhen, through, $S, $T) {
      var t1, result, _this = this;
      _this._addChild$2$through(node, through);
      t1 = _this._assertInModule$2(_this.__parent, "__parent");
      _this.__parent = node;
      result = _this._environment.scope$1$2$when(callback, scopeWhen, $T);
      _this.__parent = t1;
      return result;
    },
    _withParent$2$3$scopeWhen(node, callback, scopeWhen, $S, $T) {
      return this._withParent$2$4$scopeWhen$through(node, callback, scopeWhen, null, $S, $T);
    },
    _withParent$2$2(node, callback, $S, $T) {
      return this._withParent$2$4$scopeWhen$through(node, callback, true, null, $S, $T);
    },
    _addChild$2$through(node, through) {
      var _0_0, grandparent, t1,
        $parent = this._assertInModule$2(this.__parent, "__parent");
      if (through != null) {
        for (; through.call$1($parent); $parent = grandparent) {
          _0_0 = $parent._parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t1 = true;
          } else {
            grandparent = null;
            t1 = false;
          }
          if (!t1)
            throw A.wrapException(A.ArgumentError$(string$.throug + node.toString$0(0) + ".", null));
        }
        if ($parent.get$hasFollowingSibling()) {
          grandparent = $parent._parent;
          t1 = grandparent.children;
          if ($parent.equalsIgnoringChildren$1(t1.get$last(t1)))
            $parent = type$.ModifiableCssParentNode._as(t1.get$last(t1));
          else {
            $parent = $parent.copyWithoutChildren$0();
            grandparent.addChild$1($parent);
          }
        }
      }
      $parent.addChild$1(node);
    },
    _addChild$1(node) {
      return this._addChild$2$through(node, null);
    },
    _withStyleRule$1$2(rule, callback) {
      var result,
        oldRule = this._styleRuleIgnoringAtRoot;
      this._styleRuleIgnoringAtRoot = rule;
      result = callback.call$0();
      this._styleRuleIgnoringAtRoot = oldRule;
      return result;
    },
    _withStyleRule$2(rule, callback) {
      return this._withStyleRule$1$2(rule, callback, type$.dynamic);
    },
    _withMediaQueries$1$3(queries, sources, callback) {
      var result, _this = this,
        oldMediaQueries = _this._mediaQueries,
        oldSources = _this._mediaQuerySources;
      _this._mediaQueries = queries;
      _this._mediaQuerySources = sources;
      result = callback.call$0();
      _this._mediaQueries = oldMediaQueries;
      _this._mediaQuerySources = oldSources;
      return result;
    },
    _withMediaQueries$3(queries, sources, callback) {
      return this._withMediaQueries$1$3(queries, sources, callback, type$.dynamic);
    },
    _withStackFrame$1$3(member, nodeWithSpan, callback) {
      var oldMember, result, _this = this,
        t1 = _this._stack;
      t1.push(new A._Record_2(_this._member, nodeWithSpan));
      oldMember = _this._member;
      _this._member = member;
      result = callback.call$0();
      _this._member = oldMember;
      t1.pop();
      return result;
    },
    _withStackFrame$3(member, nodeWithSpan, callback) {
      return this._withStackFrame$1$3(member, nodeWithSpan, callback, type$.dynamic);
    },
    _withoutSlash$2(value, nodeForSpan) {
      if (value instanceof A.SassNumber && value.asSlash != null && true)
        this._warn$3(string$.Using__i + A.S(new A._EvaluateVisitor__withoutSlash_recommendation().call$1(value)) + string$.x0a_Morex20, nodeForSpan.get$span(nodeForSpan), B.Deprecation_xHK);
      return value.withoutSlash$0();
    },
    _stackFrame$2(member, span) {
      return A.frameForSpan(span, member, A.NullableExtension_andThen(span.get$sourceUrl(span), new A._EvaluateVisitor__stackFrame_closure(this)));
    },
    _evaluate$_stackTrace$1(span) {
      var t2, t3, _i, t4, nodeWithSpan, _this = this,
        t1 = A._setArrayType([], type$.JSArray_Frame);
      for (t2 = _this._stack, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        t4 = t2[_i];
        nodeWithSpan = t4._1;
        t1.push(_this._stackFrame$2(t4._0, nodeWithSpan.get$span(nodeWithSpan)));
      }
      if (span != null)
        t1.push(_this._stackFrame$2(_this._member, span));
      return A.Trace$(new A.ReversedListIterable(t1, type$.ReversedListIterable_Frame), null);
    },
    _evaluate$_stackTrace$0() {
      return this._evaluate$_stackTrace$1(null);
    },
    _warn$3(message, span, deprecation) {
      var t1, trace, _this = this;
      if (_this._quietDeps)
        if (!_this._inDependency) {
          t1 = _this._currentCallable;
          t1 = t1 == null ? null : t1.inDependency;
          t1 = t1 === true;
        } else
          t1 = true;
      else
        t1 = false;
      if (t1)
        return;
      if (!_this._warningsEmitted.add$1(0, new A._Record_2(message, span)))
        return;
      trace = _this._evaluate$_stackTrace$1(span);
      t1 = _this._evaluate$_logger;
      if (deprecation == null)
        t1.warn$3$span$trace(0, message, span, trace);
      else
        A.WarnForDeprecation_warnForDeprecation(t1, deprecation, message, span, trace);
    },
    _warn$2(message, span) {
      return this._warn$3(message, span, null);
    },
    _evaluate$_exception$2(message, span) {
      var t1, t2;
      if (span == null) {
        t1 = B.JSArray_methods.get$last(this._stack)._1;
        t1 = t1.get$span(t1);
      } else
        t1 = span;
      t2 = this._evaluate$_stackTrace$1(span);
      return new A.SassRuntimeException(t2, B.Set_empty, message, t1);
    },
    _evaluate$_exception$1(message) {
      return this._evaluate$_exception$2(message, null);
    },
    _multiSpanException$3(message, primaryLabel, secondaryLabels) {
      var t1 = B.JSArray_methods.get$last(this._stack)._1;
      return A.MultiSpanSassRuntimeException$(message, t1.get$span(t1), primaryLabel, secondaryLabels, this._evaluate$_stackTrace$0(), null);
    },
    _addExceptionSpan$1$3$addStackFrame(nodeWithSpan, callback, addStackFrame) {
      var error, stackTrace, t1, exception;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassScriptException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error.withSpan$1(nodeWithSpan.get$span(nodeWithSpan));
          A.throwWithTrace(t1.withTrace$1(this._evaluate$_stackTrace$1(addStackFrame ? nodeWithSpan.get$span(nodeWithSpan) : null)), error, stackTrace);
        } else
          throw exception;
      }
    },
    _addExceptionSpan$2(nodeWithSpan, callback) {
      return this._addExceptionSpan$1$3$addStackFrame(nodeWithSpan, callback, true, type$.dynamic);
    },
    _addExceptionSpan$3$addStackFrame(nodeWithSpan, callback, addStackFrame) {
      return this._addExceptionSpan$1$3$addStackFrame(nodeWithSpan, callback, addStackFrame, type$.dynamic);
    },
    _addExceptionTrace$1$1(callback) {
      var error, stackTrace, t1, exception, t2;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassRuntimeException._is(t1))
          throw exception;
        else if (t1 instanceof A.SassException) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error;
          t2 = J.getInterceptor$z(t1);
          A.throwWithTrace(error.withTrace$1(this._evaluate$_stackTrace$1(A.SourceSpanException.prototype.get$span.call(t2, t1))), error, stackTrace);
        } else
          throw exception;
      }
    },
    _addExceptionTrace$1(callback) {
      return this._addExceptionTrace$1$1(callback, type$.dynamic);
    },
    _addErrorSpan$1$2(nodeWithSpan, callback) {
      var error, stackTrace, t1, exception, t2, t3;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassRuntimeException._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          if (!B.JSString_methods.startsWith$1(J.get$span$z(error).get$text(), "@error"))
            throw exception;
          t1 = error._span_exception$_message;
          t2 = nodeWithSpan.get$span(nodeWithSpan);
          t3 = this._evaluate$_stackTrace$0();
          A.throwWithTrace(new A.SassRuntimeException(t3, B.Set_empty, t1, t2), error, stackTrace);
        } else
          throw exception;
      }
    },
    _addErrorSpan$2(nodeWithSpan, callback) {
      return this._addErrorSpan$1$2(nodeWithSpan, callback, type$.dynamic);
    }
  };
  A._EvaluateVisitor_closure.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._environment;
      t2 = A.stringReplaceAllUnchecked(variable._string$_text, "_", "-");
      return t1.globalVariableExists$2$namespace(t2, module == null ? null : module._string$_text) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure0.prototype = {
    call$1($arguments) {
      var variable = J.$index$asx($arguments, 0).assertString$1("name"),
        t1 = this.$this._environment;
      return t1.getVariable$1(A.stringReplaceAllUnchecked(variable._string$_text, "_", "-")) != null ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure1.prototype = {
    call$1($arguments) {
      var module, t2, t3, t4,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._environment;
      t3 = variable._string$_text;
      t4 = A.stringReplaceAllUnchecked(t3, "_", "-");
      return t2.getFunction$2$namespace(t4, module == null ? null : module._string$_text) != null || t1._builtInFunctions.containsKey$1(t3) ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure2.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._environment;
      t2 = A.stringReplaceAllUnchecked(variable._string$_text, "_", "-");
      return t1.getMixin$2$namespace(t2, module == null ? null : module._string$_text) != null ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure3.prototype = {
    call$1($arguments) {
      var t1 = this.$this._environment;
      if (!t1._inMixin)
        throw A.wrapException(A.SassScriptException$(string$.conten, null));
      return t1._content != null ? B.SassBoolean_true : B.SassBoolean_false;
    },
    $signature: 23
  };
  A._EvaluateVisitor_closure4.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string$_text,
        module = this.$this._environment._environment$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs(module.get$variables(), type$.String, t1), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString($name, true), value);
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 40
  };
  A._EvaluateVisitor_closure5.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string$_text,
        module = this.$this._environment._environment$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs(module.get$functions(module), type$.String, type$.Callable), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString($name, true), new A.SassFunction(value));
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 40
  };
  A._EvaluateVisitor_closure6.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string$_text,
        module = this.$this._environment._environment$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs(module.get$mixins(), type$.String, type$.Callable), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString($name, true), new A.SassMixin(value));
      }
      return new A.SassMap(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 40
  };
  A._EvaluateVisitor_closure7.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name"),
        css = t1.$index($arguments, 1).get$isTruthy();
      t1 = t1.$index($arguments, 2).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      if (css) {
        if (module != null)
          throw A.wrapException(string$.x24css_a);
        return new A.SassFunction(new A.PlainCssCallable($name._string$_text));
      }
      t1 = this.$this;
      t2 = t1._callableNode;
      t2.toString;
      callable = t1._addExceptionSpan$2(t2, new A._EvaluateVisitor__closure2(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Function not found: " + $name.toString$0(0));
      return new A.SassFunction(callable);
    },
    $signature: 222
  };
  A._EvaluateVisitor__closure2.prototype = {
    call$0() {
      var local,
        normalizedName = A.stringReplaceAllUnchecked(this.name._string$_text, "_", "-"),
        t1 = this.module,
        namespace = t1 == null ? null : t1._string$_text;
      t1 = this.$this;
      local = t1._environment.getFunction$2$namespace(normalizedName, namespace);
      if (local != null || namespace != null)
        return local;
      return t1._builtInFunctions.$index(0, normalizedName);
    },
    $signature: 89
  };
  A._EvaluateVisitor_closure8.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._callableNode;
      t2.toString;
      callable = t1._addExceptionSpan$2(t2, new A._EvaluateVisitor__closure1(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Mixin not found: " + $name.toString$0(0));
      return new A.SassMixin(callable);
    },
    $signature: 224
  };
  A._EvaluateVisitor__closure1.prototype = {
    call$0() {
      var t1 = this.$this._environment,
        t2 = A.stringReplaceAllUnchecked(this.name._string$_text, "_", "-"),
        t3 = this.module;
      return t1.getMixin$2$namespace(t2, t3 == null ? null : t3._string$_text);
    },
    $signature: 89
  };
  A._EvaluateVisitor_closure9.prototype = {
    call$1($arguments) {
      var t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, $name, value, invocation, callableNode, callable, _null = null,
        t1 = J.getInterceptor$asx($arguments),
        $function = t1.$index($arguments, 0),
        args = type$.SassArgumentList._as(t1.$index($arguments, 1));
      t1 = this.$this;
      t2 = t1._callableNode;
      t2.toString;
      t3 = A._setArrayType([], type$.JSArray_Expression);
      t4 = type$.String;
      t5 = type$.Expression;
      t6 = t2.get$span(t2);
      t7 = t2.get$span(t2);
      args._wereKeywordsAccessed = true;
      t8 = args._keywords;
      if (t8.get$isEmpty(t8))
        t2 = _null;
      else {
        t9 = type$.Value;
        t10 = A.LinkedHashMap_LinkedHashMap$_empty(t9, t9);
        for (args._wereKeywordsAccessed = true, t8 = A.MapExtensions_get_pairs(t8, t4, t9), t8 = t8.get$iterator(t8); t8.moveNext$0();) {
          t11 = t8.get$current(t8);
          $name = t11._0;
          value = t11._1;
          value = value;
          t10.$indexSet(0, new A.SassString($name, false), value);
        }
        t2 = new A.ValueExpression(new A.SassMap(A.ConstantMap_ConstantMap$from(t10, t9, t9)), t2.get$span(t2));
      }
      invocation = new A.ArgumentInvocation(A.List_List$unmodifiable(t3, t5), A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t4, t5), new A.ValueExpression(args, t7), t2, t6);
      if ($function instanceof A.SassString) {
        t2 = $function.toString$0(0);
        A.EvaluationContext_current().warn$2(0, string$.Passina + t2 + "))", B.Deprecation_qVK);
        callableNode = t1._callableNode;
        return t1.visitFunctionExpression$1(new A.FunctionExpression(_null, $function._string$_text, invocation, callableNode.get$span(callableNode)));
      }
      callable = $function.assertFunction$1("function").callable;
      if (type$.Callable._is(callable)) {
        t2 = t1._callableNode;
        t2.toString;
        return t1._runFunctionCallable$3(invocation, callable, t2);
      } else
        throw A.wrapException(A.SassScriptException$("The function " + callable.get$name(callable) + string$.x20is_as, _null));
    },
    $signature: 6
  };
  A._EvaluateVisitor_closure10.prototype = {
    call$1($arguments) {
      var withMap, t2, values, configuration, t3,
        t1 = J.getInterceptor$asx($arguments),
        url = A.Uri_parse(t1.$index($arguments, 0).assertString$1("url")._string$_text);
      t1 = t1.$index($arguments, 1).get$realNull();
      withMap = t1 == null ? null : t1.assertMap$1("with")._map$_contents;
      t1 = this.$this;
      t2 = t1._callableNode;
      t2.toString;
      if (withMap != null) {
        values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue);
        withMap.forEach$1(0, new A._EvaluateVisitor__closure(values, t2.get$span(t2), t2));
        configuration = new A.ExplicitConfiguration(t2, values, null);
      } else
        configuration = B.Configuration_Map_empty_null;
      t3 = t2.get$span(t2);
      t1._loadModule$7$baseUrl$configuration$namesInErrors(url, "load-css()", t2, new A._EvaluateVisitor__closure0(t1), t3.get$sourceUrl(t3), configuration, true);
      t1._assertConfigurationIsEmpty$2$nameInError(configuration, true);
    },
    $signature: 158
  };
  A._EvaluateVisitor__closure.prototype = {
    call$2(variable, value) {
      var t1 = variable.assertString$1("with key"),
        $name = A.stringReplaceAllUnchecked(t1._string$_text, "_", "-");
      t1 = this.values;
      if (t1.containsKey$1($name))
        throw A.wrapException("The variable $" + $name + " was configured twice.");
      t1.$indexSet(0, $name, new A.ConfiguredValue(value, this.span, this.callableNode));
    },
    $signature: 106
  };
  A._EvaluateVisitor__closure0.prototype = {
    call$2(module, _) {
      var t1 = this.$this;
      return t1._combineCss$2$clone(module, true).accept$1(t1);
    },
    $signature: 90
  };
  A._EvaluateVisitor_closure11.prototype = {
    call$1($arguments) {
      var callableNode, t2, t3, t4, t5, callable, $content,
        t1 = J.getInterceptor$asx($arguments),
        mixin = t1.$index($arguments, 0),
        args = type$.SassArgumentList._as(t1.$index($arguments, 1));
      t1 = this.$this;
      callableNode = t1._callableNode;
      t2 = callableNode.get$span(callableNode);
      t3 = callableNode.get$span(callableNode);
      t4 = type$.Expression;
      t5 = A.List_List$unmodifiable(B.List_empty9, t4);
      t4 = A.ConstantMap_ConstantMap$from(B.Map_empty6, type$.String, t4);
      callable = mixin.assertMixin$1("mixin").callable;
      $content = t1._environment._content;
      if (type$.Callable._is(callable))
        t1._applyMixin$5(callable, $content, new A.ArgumentInvocation(t5, t4, new A.ValueExpression(args, t3), null, t2), callableNode, callableNode);
      else
        throw A.wrapException(A.SassScriptException$("The mixin " + callable.get$name(callable) + string$.x20is_as, null));
    },
    $signature: 158
  };
  A._EvaluateVisitor_run_closure.prototype = {
    call$0() {
      var module, _this = this, url = null,
        t1 = _this.node,
        t2 = t1.span,
        _0_0 = t2.get$sourceUrl(t2);
      if (_0_0 != null) {
        url = _0_0;
        t2 = true;
      } else
        t2 = false;
      if (t2) {
        t2 = _this.$this;
        t2._activeModules.$indexSet(0, url, null);
        t2._loadedUrls.add$1(0, url);
      }
      t2 = _this.$this;
      module = t2._addExceptionTrace$1(new A._EvaluateVisitor_run__closure(t2, _this.importer, t1));
      return new A._Record_2_loadedUrls_stylesheet(t2._loadedUrls, t2._combineCss$1(module));
    },
    $signature: 550
  };
  A._EvaluateVisitor_run__closure.prototype = {
    call$0() {
      return this.$this._execute$2(this.importer, this.node);
    },
    $signature: 552
  };
  A._EvaluateVisitor_runExpression_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.expression;
      return t1._withFakeStylesheet$3(this.importer, t2, new A._EvaluateVisitor_runExpression__closure(t1, t2));
    },
    $signature: 25
  };
  A._EvaluateVisitor_runExpression__closure.prototype = {
    call$0() {
      var t1 = this.$this;
      return t1._addExceptionTrace$1(new A._EvaluateVisitor_runExpression___closure(t1, this.expression));
    },
    $signature: 25
  };
  A._EvaluateVisitor_runExpression___closure.prototype = {
    call$0() {
      return this.expression.accept$1(this.$this);
    },
    $signature: 25
  };
  A._EvaluateVisitor_runStatement_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.statement;
      return t1._withFakeStylesheet$3(this.importer, t2, new A._EvaluateVisitor_runStatement__closure(t1, t2));
    },
    $signature: 0
  };
  A._EvaluateVisitor_runStatement__closure.prototype = {
    call$0() {
      var t1 = this.$this;
      return t1._addExceptionTrace$1(new A._EvaluateVisitor_runStatement___closure(t1, this.statement));
    },
    $signature: 0
  };
  A._EvaluateVisitor_runStatement___closure.prototype = {
    call$0() {
      return this.statement.accept$1(this.$this);
    },
    $signature: 0
  };
  A._EvaluateVisitor__loadModule_closure.prototype = {
    call$0() {
      return this.callback.call$2(this._box_1.builtInModule, false);
    },
    $signature: 0
  };
  A._EvaluateVisitor__loadModule_closure0.prototype = {
    call$0() {
      var canonicalUrl, oldInDependency, isDependency, t4, message, _this = this, t1 = {}, stylesheet = null, importer = null,
        t2 = _this.$this,
        t3 = _this.nodeWithSpan,
        _1_0 = t2._loadStylesheet$3$baseUrl(_this.url.toString$0(0), t3.get$span(t3), _this.baseUrl);
      stylesheet = _1_0._0;
      importer = _1_0._1;
      isDependency = _1_0._2;
      isDependency = isDependency;
      t4 = stylesheet.span;
      canonicalUrl = t4.get$sourceUrl(t4);
      if (canonicalUrl != null) {
        t4 = t2._activeModules;
        if (t4.containsKey$1(canonicalUrl)) {
          message = _this.namesInErrors ? "Module loop: " + $.$get$context().prettyUri$1(canonicalUrl) + " is already being loaded." : string$.Modulel;
          t1 = A.NullableExtension_andThen(t4.$index(0, canonicalUrl), new A._EvaluateVisitor__loadModule__closure(t2, message));
          throw A.wrapException(t1 == null ? t2._evaluate$_exception$1(message) : t1);
        } else
          t4.$indexSet(0, canonicalUrl, t3);
      }
      t4 = t2._modules.containsKey$1(canonicalUrl);
      oldInDependency = t2._inDependency;
      t2._inDependency = isDependency;
      t1.module = null;
      try {
        t1.module = t2._execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, _this.configuration, _this.namesInErrors, t3);
      } finally {
        t2._activeModules.remove$1(0, canonicalUrl);
        t2._inDependency = oldInDependency;
      }
      t2._addExceptionSpan$3$addStackFrame(t3, new A._EvaluateVisitor__loadModule__closure0(t1, _this.callback, !t4), false);
    },
    $signature: 2
  };
  A._EvaluateVisitor__loadModule__closure.prototype = {
    call$1(previousLoad) {
      return this.$this._multiSpanException$3(this.message, "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 81
  };
  A._EvaluateVisitor__loadModule__closure0.prototype = {
    call$0() {
      return this.callback.call$2(this._box_0.module, this.firstLoad);
    },
    $signature: 0
  };
  A._EvaluateVisitor__execute_closure.prototype = {
    call$0() {
      var t3, t4, t5, t6, _this = this,
        t1 = _this.$this,
        oldImporter = t1._importer,
        oldStylesheet = t1.__stylesheet,
        oldRoot = t1.__root,
        oldPreModuleComments = t1._preModuleComments,
        oldParent = t1.__parent,
        oldEndOfImports = t1.__endOfImports,
        oldOutOfOrderImports = t1._outOfOrderImports,
        oldExtensionStore = t1.__extensionStore,
        t2 = t1._atRootExcludingStyleRule,
        oldStyleRule = t2 ? null : t1._styleRuleIgnoringAtRoot,
        oldMediaQueries = t1._mediaQueries,
        oldDeclarationName = t1._declarationName,
        oldInUnknownAtRule = t1._inUnknownAtRule,
        oldInKeyframes = t1._inKeyframes,
        oldConfiguration = t1._configuration;
      t1._importer = _this.importer;
      t3 = t1.__stylesheet = _this.stylesheet;
      t4 = t3.span;
      t5 = t1.__parent = t1.__root = A.ModifiableCssStylesheet$(t4);
      t1.__endOfImports = 0;
      t1._outOfOrderImports = null;
      t1.__extensionStore = _this.extensionStore;
      t1._declarationName = t1._mediaQueries = t1._styleRuleIgnoringAtRoot = null;
      t1._inKeyframes = t1._atRootExcludingStyleRule = t1._inUnknownAtRule = false;
      t6 = _this.configuration;
      if (t6 != null)
        t1._configuration = t6;
      t1.visitStylesheet$1(t3);
      t3 = t1._outOfOrderImports == null ? t5 : new A.CssStylesheet(new A.UnmodifiableListView(t1._addOutOfOrderImports$0(), type$.UnmodifiableListView_CssNode), t4);
      _this.css._value = t3;
      _this.preModuleComments._value = t1._preModuleComments;
      t1._importer = oldImporter;
      t1.__stylesheet = oldStylesheet;
      t1.__root = oldRoot;
      t1._preModuleComments = oldPreModuleComments;
      t1.__parent = oldParent;
      t1.__endOfImports = oldEndOfImports;
      t1._outOfOrderImports = oldOutOfOrderImports;
      t1.__extensionStore = oldExtensionStore;
      t1._styleRuleIgnoringAtRoot = oldStyleRule;
      t1._mediaQueries = oldMediaQueries;
      t1._declarationName = oldDeclarationName;
      t1._inUnknownAtRule = oldInUnknownAtRule;
      t1._atRootExcludingStyleRule = t2;
      t1._inKeyframes = oldInKeyframes;
      t1._configuration = oldConfiguration;
    },
    $signature: 2
  };
  A._EvaluateVisitor__combineCss_closure.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 134
  };
  A._EvaluateVisitor__combineCss_closure0.prototype = {
    call$1(target) {
      return !this.selectors.contains$1(0, target);
    },
    $signature: 16
  };
  A._EvaluateVisitor__combineCss_visitModule.prototype = {
    call$1(module) {
      var t1, t2, t3, t4, _i, upstream, _1_0, comments, t5, statements, index, _this = this;
      if (!_this.seen.add$1(0, module))
        return;
      if (_this.clone)
        module = module.cloneCss$0();
      for (t1 = module.get$upstream(), t2 = t1.length, t3 = _this.css, t4 = _this.imports, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        upstream = t1[_i];
        if (upstream.get$transitivelyContainsCss()) {
          _1_0 = module.get$preModuleComments().$index(0, upstream);
          if (_1_0 != null) {
            comments = _1_0;
            t5 = true;
          } else {
            comments = null;
            t5 = false;
          }
          if (t5)
            B.JSArray_methods.addAll$1(t3.length === 0 ? t4 : t3, comments);
          _this.call$1(upstream);
        }
      }
      _this.sorted.addFirst$1(module);
      t1 = module.get$css(module);
      statements = t1.get$children(t1);
      index = _this.$this._indexAfterImports$1(statements);
      t1 = J.getInterceptor$ax(statements);
      B.JSArray_methods.addAll$1(t4, t1.getRange$2(statements, 0, index));
      B.JSArray_methods.addAll$1(t3, t1.getRange$2(statements, index, t1.get$length(statements)));
    },
    $signature: 559
  };
  A._EvaluateVisitor__extendModules_closure.prototype = {
    call$1(target) {
      return !this.originalSelectors.contains$1(0, target);
    },
    $signature: 16
  };
  A._EvaluateVisitor__extendModules_closure0.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_ExtensionStore);
    },
    $signature: 229
  };
  A._EvaluateVisitor_visitAtRootRule_closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitAtRootRule_closure0.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 0
  };
  A._EvaluateVisitor__scopeForAtRoot_closure.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        t2 = t1._assertInModule$2(t1.__parent, "__parent");
      t1.__parent = this.newParent;
      t1._environment.scope$1$2$when(callback, this.node.hasDeclarations, type$.void);
      t1.__parent = t2;
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot_closure0.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        oldAtRootExcludingStyleRule = t1._atRootExcludingStyleRule;
      t1._atRootExcludingStyleRule = true;
      this.innerScope.call$1(callback);
      t1._atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot_closure1.prototype = {
    call$1(callback) {
      return this.$this._withMediaQueries$3(null, null, new A._EvaluateVisitor__scopeForAtRoot__closure(this.innerScope, callback));
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot__closure.prototype = {
    call$0() {
      return this.innerScope.call$1(this.callback);
    },
    $signature: 2
  };
  A._EvaluateVisitor__scopeForAtRoot_closure2.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        wasInKeyframes = t1._inKeyframes;
      t1._inKeyframes = false;
      this.innerScope.call$1(callback);
      t1._inKeyframes = wasInKeyframes;
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot_closure3.prototype = {
    call$1($parent) {
      return $parent instanceof A.ModifiableCssAtRule;
    },
    $signature: 237
  };
  A._EvaluateVisitor__scopeForAtRoot_closure4.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        wasInUnknownAtRule = t1._inUnknownAtRule;
      t1._inUnknownAtRule = false;
      this.innerScope.call$1(callback);
      t1._inUnknownAtRule = wasInUnknownAtRule;
    },
    $signature: 39
  };
  A._EvaluateVisitor_visitContentRule_closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.content.declaration.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
      return null;
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitDeclaration_closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this._box_0.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitEachRule_closure.prototype = {
    call$1(value) {
      var t1 = this.$this,
        t2 = this.nodeWithSpan;
      return t1._environment.setLocalVariable$3(this._box_0.variable, t1._withoutSlash$2(value, t2), t2);
    },
    $signature: 63
  };
  A._EvaluateVisitor_visitEachRule_closure0.prototype = {
    call$1(value) {
      return this.$this._setMultipleVariables$3(this._box_0.variables, value, this.nodeWithSpan);
    },
    $signature: 63
  };
  A._EvaluateVisitor_visitEachRule_closure1.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      return t1._handleReturn$2(_this.list.get$asList(), new A._EvaluateVisitor_visitEachRule__closure(t1, _this.setVariables, _this.node));
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitEachRule__closure.prototype = {
    call$1(element) {
      var t1;
      this.setVariables.call$1(element);
      t1 = this.$this;
      return t1._handleReturn$2(this.node.children, new A._EvaluateVisitor_visitEachRule___closure(t1));
    },
    $signature: 561
  };
  A._EvaluateVisitor_visitEachRule___closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 91
  };
  A._EvaluateVisitor_visitAtRule_closure.prototype = {
    call$1(value) {
      return this.$this._interpolationToValue$3$trim$warnForColor(value, true, true);
    },
    $signature: 574
  };
  A._EvaluateVisitor_visitAtRule_closure0.prototype = {
    call$0() {
      var t2, t3, _i, _this = this,
        t1 = _this.$this,
        styleRule = t1._atRootExcludingStyleRule ? null : t1._styleRuleIgnoringAtRoot;
      if (styleRule == null || t1._inKeyframes || J.$eq$(_this.name.value, "font-face"))
        for (t2 = _this.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t2[_i].accept$1(t1);
      else
        t1._withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitAtRule__closure(t1, _this.children), false, type$.ModifiableCssStyleRule, type$.Null);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitAtRule__closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitAtRule_closure1.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitForRule_closure.prototype = {
    call$0() {
      return this.node.from.accept$1(this.$this).assertNumber$0();
    },
    $signature: 161
  };
  A._EvaluateVisitor_visitForRule_closure0.prototype = {
    call$0() {
      return this.node.to.accept$1(this.$this).assertNumber$0();
    },
    $signature: 161
  };
  A._EvaluateVisitor_visitForRule_closure1.prototype = {
    call$0() {
      return this.fromNumber.assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure2.prototype = {
    call$0() {
      var t1 = this.fromNumber;
      return this.toNumber.coerce$2(t1.get$numeratorUnits(t1), t1.get$denominatorUnits(t1)).assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure3.prototype = {
    call$0() {
      var i, t3, t4, t5, t6, t7, t8, _0_0, result, _this = this,
        t1 = _this.$this,
        t2 = _this.node,
        nodeWithSpan = t1._expressionNode$1(t2.from);
      for (i = _this.from, t3 = _this._box_0, t4 = _this.direction, t5 = t2.variable, t6 = _this.fromNumber, t2 = t2.children; i !== t3.to; i += t4) {
        t7 = t1._environment;
        t8 = t6.get$numeratorUnits(t6);
        t7.setLocalVariable$3(t5, A.SassNumber_SassNumber$withUnits(i, t6.get$denominatorUnits(t6), t8), nodeWithSpan);
        _0_0 = t1._handleReturn$2(t2, new A._EvaluateVisitor_visitForRule__closure(t1));
        if (_0_0 != null) {
          result = _0_0;
          t7 = true;
        } else {
          result = null;
          t7 = false;
        }
        if (t7)
          return result;
      }
      return null;
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitForRule__closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 91
  };
  A._EvaluateVisitor_visitForwardRule_closure.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._registerCommentsForModule$1(module);
      this.$this._environment.forwardModule$2(module, this.node);
    },
    $signature: 90
  };
  A._EvaluateVisitor_visitForwardRule_closure0.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._registerCommentsForModule$1(module);
      this.$this._environment.forwardModule$2(module, this.node);
    },
    $signature: 90
  };
  A._EvaluateVisitor__registerCommentsForModule_closure.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_CssComment);
    },
    $signature: 260
  };
  A._EvaluateVisitor_visitIfRule_closure.prototype = {
    call$1(clause) {
      var t1 = this.$this;
      return t1._environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitIfRule__closure(t1, clause), true, clause.hasDeclarations, type$.nullable_Value);
    },
    $signature: 583
  };
  A._EvaluateVisitor_visitIfRule__closure.prototype = {
    call$0() {
      var t1 = this.$this;
      return t1._handleReturn$2(this.clause.children, new A._EvaluateVisitor_visitIfRule___closure(t1));
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitIfRule___closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 91
  };
  A._EvaluateVisitor__visitDynamicImport_closure.prototype = {
    call$0() {
      var t1, t2, _0_0, stylesheet, t3, isDependency, t4, t5, url, t6, oldImporter, oldInDependency, loadsUserDefinedModules, children, t7, t8, t9, t10, environment, module, visitor, _null = null, _box_0 = {};
      _box_0.isDependency = _box_0.importer = _box_0.stylesheet = null;
      t1 = this.$this;
      t2 = this.$import;
      _0_0 = t1._loadStylesheet$3$forImport(t2.urlString, t2.span, true);
      stylesheet = _box_0.stylesheet = _0_0._0;
      t3 = _box_0.importer = _0_0._1;
      isDependency = _0_0._2;
      _box_0.isDependency = isDependency;
      t4 = isDependency;
      t5 = stylesheet.span;
      url = t5.get$sourceUrl(t5);
      if (url != null) {
        t5 = t1._activeModules;
        if (t5.containsKey$1(url)) {
          t2 = A.NullableExtension_andThen(t5.$index(0, url), new A._EvaluateVisitor__visitDynamicImport__closure(t1));
          throw A.wrapException(t2 == null ? t1._evaluate$_exception$1("This file is already being loaded.") : t2);
        }
        t5.$indexSet(0, url, t2);
      }
      t2 = stylesheet._uses;
      t5 = type$.UnmodifiableListView_UseRule;
      t6 = new A.UnmodifiableListView(t2, t5);
      if (t6.get$length(t6) === 0) {
        t6 = new A.UnmodifiableListView(stylesheet._forwards, type$.UnmodifiableListView_ForwardRule);
        t6 = t6.get$length(t6) === 0;
      } else
        t6 = false;
      if (t6) {
        oldImporter = t1._importer;
        t2 = t1._assertInModule$2(t1.__stylesheet, "_stylesheet");
        oldInDependency = t1._inDependency;
        t1._importer = t3;
        t1.__stylesheet = stylesheet;
        t1._inDependency = t4;
        t1.visitStylesheet$1(stylesheet);
        t1._importer = oldImporter;
        t1.__stylesheet = t2;
        t1._inDependency = oldInDependency;
        t1._activeModules.remove$1(0, url);
        return;
      }
      t2 = new A.UnmodifiableListView(t2, t5);
      if (!t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure0())) {
        t2 = new A.UnmodifiableListView(stylesheet._forwards, type$.UnmodifiableListView_ForwardRule);
        loadsUserDefinedModules = t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure1());
      } else
        loadsUserDefinedModules = true;
      children = A._Cell$();
      t2 = t1._environment;
      t3 = type$.String;
      t4 = type$.Module_Callable;
      t5 = type$.AstNode;
      t6 = A._setArrayType([], type$.JSArray_Module_Callable);
      t7 = t2._variables;
      t7 = A._setArrayType(t7.slice(0), A._arrayInstanceType(t7));
      t8 = t2._variableNodes;
      t8 = A._setArrayType(t8.slice(0), A._arrayInstanceType(t8));
      t9 = t2._functions;
      t9 = A._setArrayType(t9.slice(0), A._arrayInstanceType(t9));
      t10 = t2._mixins;
      t10 = A._setArrayType(t10.slice(0), A._arrayInstanceType(t10));
      environment = A.Environment$_(A.LinkedHashMap_LinkedHashMap$_empty(t3, t4), A.LinkedHashMap_LinkedHashMap$_empty(t3, t5), A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t2._importedModules, _null, _null, t6, t7, t8, t9, t10, t2._content);
      t1._withEnvironment$2(environment, new A._EvaluateVisitor__visitDynamicImport__closure2(_box_0, t1, loadsUserDefinedModules, environment, children));
      module = environment.toDummyModule$0();
      t1._environment.importForwards$1(module);
      if (loadsUserDefinedModules) {
        if (module.transitivelyContainsCss)
          t1._combineCss$2$clone(module, module.transitivelyContainsExtensions).accept$1(t1);
        visitor = new A._ImportedCssVisitor(t1);
        for (t2 = J.get$iterator$ax(children._readLocal$0()); t2.moveNext$0();)
          t2.get$current(t2).accept$1(visitor);
      }
      t1._activeModules.remove$1(0, url);
    },
    $signature: 0
  };
  A._EvaluateVisitor__visitDynamicImport__closure.prototype = {
    call$1(previousLoad) {
      return this.$this._multiSpanException$3("This file is already being loaded.", "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 81
  };
  A._EvaluateVisitor__visitDynamicImport__closure0.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 275
  };
  A._EvaluateVisitor__visitDynamicImport__closure1.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 283
  };
  A._EvaluateVisitor__visitDynamicImport__closure2.prototype = {
    call$0() {
      var t7, t8, _this = this,
        t1 = _this.$this,
        oldImporter = t1._importer,
        t2 = t1._assertInModule$2(t1.__stylesheet, "_stylesheet"),
        t3 = t1._assertInModule$2(t1.__root, "_root"),
        t4 = t1._assertInModule$2(t1.__parent, "__parent"),
        t5 = t1._assertInModule$2(t1.__endOfImports, "_endOfImports"),
        oldOutOfOrderImports = t1._outOfOrderImports,
        oldConfiguration = t1._configuration,
        oldInDependency = t1._inDependency,
        t6 = _this._box_0;
      t1._importer = t6.importer;
      t7 = t6.stylesheet;
      t1.__stylesheet = t7;
      t8 = _this.loadsUserDefinedModules;
      if (t8) {
        t7 = A.ModifiableCssStylesheet$(t7.span);
        t1.__root = t7;
        t1.__parent = t1._assertInModule$2(t7, "_root");
        t1.__endOfImports = 0;
        t1._outOfOrderImports = null;
      }
      t1._inDependency = t6.isDependency;
      t7 = new A.UnmodifiableListView(t6.stylesheet._forwards, type$.UnmodifiableListView_ForwardRule);
      if (!t7.get$isEmpty(t7))
        t1._configuration = _this.environment.toImplicitConfiguration$0();
      t1.visitStylesheet$1(t6.stylesheet);
      t6 = t8 ? t1._addOutOfOrderImports$0() : A._setArrayType([], type$.JSArray_ModifiableCssNode);
      _this.children._value = t6;
      t1._importer = oldImporter;
      t1.__stylesheet = t2;
      if (t8) {
        t1.__root = t3;
        t1.__parent = t4;
        t1.__endOfImports = t5;
        t1._outOfOrderImports = oldOutOfOrderImports;
      }
      t1._configuration = oldConfiguration;
      t1._inDependency = oldInDependency;
    },
    $signature: 2
  };
  A._EvaluateVisitor__applyMixin_closure0.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      t1._environment.asMixin$1(new A._EvaluateVisitor__applyMixin__closure0(t1, _this.$arguments, _this.mixin, _this.nodeWithSpanWithoutContent));
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin__closure0.prototype = {
    call$0() {
      var _this = this;
      _this.$this._runBuiltInCallable$3(_this.$arguments, _this.mixin, _this.nodeWithSpanWithoutContent);
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin_closure.prototype = {
    call$0() {
      var t1 = this._1_0;
      if (t1 == null)
        t1 = type$.Callable._as(t1);
      return type$.UserDefinedCallable_Environment._as(t1).declaration;
    },
    $signature: 143
  };
  A._EvaluateVisitor__applyMixin_closure1.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      t1._environment.withContent$2(_this.contentCallable, new A._EvaluateVisitor__applyMixin__closure(t1, _this.mixin, _this.nodeWithSpanWithoutContent));
    },
    $signature: 2
  };
  A._EvaluateVisitor__applyMixin__closure.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._environment.asMixin$1(new A._EvaluateVisitor__applyMixin___closure(t1, this.mixin, this.nodeWithSpanWithoutContent));
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin___closure.prototype = {
    call$0() {
      var t1, t2, t3, t4, _i;
      for (t1 = this.mixin.declaration.children, t2 = t1.length, t3 = this.$this, t4 = this.nodeWithSpanWithoutContent, _i = 0; _i < t2; ++_i)
        t3._addErrorSpan$2(t4, new A._EvaluateVisitor__applyMixin____closure(t3, t1[_i]));
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin____closure.prototype = {
    call$0() {
      return this.statement.accept$1(this.$this);
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitIncludeRule_closure.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._environment.getMixin$2$namespace(t1.name, t1.namespace);
    },
    $signature: 89
  };
  A._EvaluateVisitor_visitIncludeRule_closure0.prototype = {
    call$1($content) {
      var t1 = this.$this;
      return new A.UserDefinedCallable($content, t1._environment.closure$0(), t1._inDependency, type$.UserDefinedCallable_Environment);
    },
    $signature: 590
  };
  A._EvaluateVisitor_visitIncludeRule_closure1.prototype = {
    call$0() {
      return this.node.get$spanWithoutContent();
    },
    $signature: 33
  };
  A._EvaluateVisitor_visitMediaRule_closure.prototype = {
    call$1(mediaQueries) {
      return this.$this._mergeMediaQueries$2(mediaQueries, this.queries);
    },
    $signature: 83
  };
  A._EvaluateVisitor_visitMediaRule_closure0.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.mergedQueries;
      if (t2 == null)
        t2 = _this.queries;
      t1._withMediaQueries$3(t2, _this.mergedSources, new A._EvaluateVisitor_visitMediaRule__closure(t1, _this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitMediaRule__closure.prototype = {
    call$0() {
      var styleRule, t2, t3, _i,
        t1 = this.$this,
        _0_0 = t1._atRootExcludingStyleRule ? null : t1._styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitMediaRule___closure(t1, this.node), false, type$.ModifiableCssStyleRule, type$.Null);
      else
        for (t2 = this.node.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t2[_i].accept$1(t1);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitMediaRule___closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitMediaRule_closure1.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitStyleRule_closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitStyleRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitStyleRule_closure1.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._withStyleRule$2(this.rule, new A._EvaluateVisitor_visitStyleRule__closure(t1, this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitStyleRule__closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitStyleRule_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitStyleRule_closure3.prototype = {
    call$1(child) {
      return child instanceof A.ModifiableCssComment;
    },
    $signature: 124
  };
  A._EvaluateVisitor_visitSupportsRule_closure.prototype = {
    call$0() {
      var styleRule, t2, t3, _i,
        t1 = this.$this,
        _0_0 = t1._atRootExcludingStyleRule ? null : t1._styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._withParent$2$2(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitSupportsRule__closure(t1, this.node), type$.ModifiableCssStyleRule, type$.Null);
      else
        for (t2 = this.node.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t2[_i].accept$1(t1);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitSupportsRule__closure.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitSupportsRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor__visitSupportsCondition_closure.prototype = {
    call$0() {
      var t4,
        t1 = this.$this,
        t2 = this._box_0,
        t3 = t2.declaration.name;
      t3 = t1._evaluate$_serialize$3$quote(t3.accept$1(t1), t3, true);
      t4 = t2.declaration.get$isCustomProperty() ? "" : " ";
      t2 = t2.declaration.value;
      return "(" + t3 + ":" + t4 + t1._evaluate$_serialize$3$quote(t2.accept$1(t1), t2, true) + ")";
    },
    $signature: 22
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure.prototype = {
    call$0() {
      var t1 = this.$this._environment,
        t2 = this._box_0.override;
      t1.setVariable$4$global(this.node.name, t2.value, t2.assignmentNode, true);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure0.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure1.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.node;
      t1._environment.setVariable$5$global$namespace(t2.name, this.value, t1._expressionNode$1(t2.expression), t2.isGlobal, t2.namespace);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitUseRule_closure.prototype = {
    call$2(module, firstLoad) {
      var t1, t2, t3, _0_0, $name, t4, t5, span;
      if (firstLoad)
        this.$this._registerCommentsForModule$1(module);
      t1 = this.$this._environment;
      t2 = this.node;
      t3 = t2.namespace;
      if (t3 == null) {
        t1._globalModules.$indexSet(0, module, t2);
        t1._allModules.push(module);
        _0_0 = A.IterableExtension_firstWhereOrNull(J.get$keys$z(B.JSArray_methods.get$first(t1._variables)), module.get$variables().get$containsKey());
        if (_0_0 != null) {
          $name = _0_0;
          t1 = true;
        } else {
          $name = null;
          t1 = false;
        }
        if (t1)
          A.throwExpression(A.SassScriptException$(string$.This_ma + A.S($name) + '".', null));
      } else {
        t4 = t1._environment$_modules;
        if (t4.containsKey$1(t3)) {
          t5 = t1._namespaceNodes.$index(0, t3);
          span = t5 == null ? null : t5.span;
          t5 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (span != null)
            t5.$indexSet(0, span, "original @use");
          A.throwExpression(A.MultiSpanSassScriptException$(string$.There_ + t3 + '".', "new @use", t5));
        }
        t4.$indexSet(0, t3, module);
        t1._namespaceNodes.$indexSet(0, t3, t2);
        t1._allModules.push(module);
      }
    },
    $signature: 90
  };
  A._EvaluateVisitor_visitWarnRule_closure.prototype = {
    call$0() {
      return this.node.expression.accept$1(this.$this);
    },
    $signature: 25
  };
  A._EvaluateVisitor_visitWhileRule_closure.prototype = {
    call$0() {
      var t1, t2, t3, _0_0, result, t4;
      for (t1 = this.node, t2 = t1.condition, t3 = this.$this, t1 = t1.children; t2.accept$1(t3).get$isTruthy();) {
        _0_0 = t3._handleReturn$2(t1, new A._EvaluateVisitor_visitWhileRule__closure(t3));
        if (_0_0 != null) {
          result = _0_0;
          t4 = true;
        } else {
          result = null;
          t4 = false;
        }
        if (t4)
          return result;
      }
      return null;
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitWhileRule__closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 91
  };
  A._EvaluateVisitor_visitBinaryOperationExpression_closure.prototype = {
    call$0() {
      var t1 = this.node,
        t2 = this.$this,
        left = t1.left.accept$1(t2);
      switch (t1.operator) {
        case B.BinaryOperator_2jN:
          t1 = t1.right.accept$1(t2);
          t1 = new A.SassString(A.serializeValue(left, false, true) + "=" + A.serializeValue(t1, false, true), false);
          break;
        case B.BinaryOperator_M6L:
          t1 = left.get$isTruthy() ? left : t1.right.accept$1(t2);
          break;
        case B.BinaryOperator_SNp:
          t1 = left.get$isTruthy() ? t1.right.accept$1(t2) : left;
          break;
        case B.BinaryOperator_ql5:
          t1 = left.$eq(0, t1.right.accept$1(t2)) ? B.SassBoolean_true : B.SassBoolean_false;
          break;
        case B.BinaryOperator_ViB:
          t1 = !left.$eq(0, t1.right.accept$1(t2)) ? B.SassBoolean_true : B.SassBoolean_false;
          break;
        case B.BinaryOperator_cIH:
          t1 = left.greaterThan$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_7Tg:
          t1 = left.greaterThanOrEquals$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_U8c:
          t1 = left.lessThan$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_kpg:
          t1 = left.lessThanOrEquals$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_anB:
          t1 = left.plus$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_olz:
          t1 = left.minus$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_qN2:
          t1 = left.times$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_t8B:
          t1 = t2._slash$3(left, t1.right.accept$1(t2), t1);
          break;
        case B.BinaryOperator_OTG:
          t1 = left.modulo$1(t1.right.accept$1(t2));
          break;
        default:
          t1 = null;
      }
      return t1;
    },
    $signature: 25
  };
  A._EvaluateVisitor__slash_closure.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 25
  };
  A._EvaluateVisitor__slash_closure0.prototype = {
    call$0() {
      return this._1_0._1;
    },
    $signature: 25
  };
  A._EvaluateVisitor__slash_recommendation.prototype = {
    call$1(expression) {
      var left, right, t1, _null = null;
      $label0$0: {
        if (expression instanceof A.BinaryOperationExpression)
          if (B.BinaryOperator_t8B === expression.operator) {
            left = expression.left;
            right = expression.right;
            t1 = true;
          } else {
            right = _null;
            left = right;
            t1 = false;
          }
        else {
          right = _null;
          left = right;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(left)) + ", " + A.S(this.call$1(right)) + ")";
          break $label0$0;
        }
        if (expression instanceof A.ParenthesizedExpression) {
          t1 = expression.expression.toString$0(0);
          break $label0$0;
        }
        t1 = expression.toString$0(0);
        break $label0$0;
      }
      return t1;
    },
    $signature: 132
  };
  A._EvaluateVisitor_visitVariableExpression_closure.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 44
  };
  A._EvaluateVisitor_visitUnaryOperationExpression_closure.prototype = {
    call$0() {
      var t1, _this = this;
      switch (_this.node.operator) {
        case B.UnaryOperator_gg4:
          t1 = _this.operand.unaryPlus$0();
          break;
        case B.UnaryOperator_TLI:
          t1 = _this.operand.unaryMinus$0();
          break;
        case B.UnaryOperator_Ix1:
          t1 = new A.SassString("/" + A.serializeValue(_this.operand, false, true), false);
          break;
        case B.UnaryOperator_not_not_not:
          t1 = _this.operand.unaryNot$0();
          break;
        default:
          t1 = null;
      }
      return t1;
    },
    $signature: 25
  };
  A._EvaluateVisitor_visitListExpression_closure.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 611
  };
  A._EvaluateVisitor_visitFunctionExpression_closure.prototype = {
    call$0() {
      var t1 = this.$this._environment,
        t2 = this.node;
      return t1.getFunction$2$namespace(A.stringReplaceAllUnchecked(t2.originalName, "_", "-"), t2.namespace);
    },
    $signature: 89
  };
  A._EvaluateVisitor_visitFunctionExpression_closure0.prototype = {
    call$1(argument) {
      return argument.accept$1(new A._IsCalculationSafeVisitor());
    },
    $signature: 126
  };
  A._EvaluateVisitor_visitFunctionExpression_closure1.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._runFunctionCallable$3(t1.$arguments, this._box_0.$function, t1);
    },
    $signature: 25
  };
  A._EvaluateVisitor__checkCalculationArguments_check.prototype = {
    call$1(maxArgs) {
      var t1 = this.node,
        t2 = t1.$arguments.positional.length;
      if (t2 === 0)
        throw A.wrapException(this.$this._evaluate$_exception$2("Missing argument.", t1.span));
      else if (maxArgs != null && t2 > maxArgs)
        throw A.wrapException(this.$this._evaluate$_exception$2("Only " + A.S(maxArgs) + " " + A.pluralize("argument", maxArgs, null) + " allowed, but " + t2 + " " + A.pluralize("was", t2, "were") + " passed.", t1.span));
    },
    call$0() {
      return this.call$1(null);
    },
    $signature: 86
  };
  A._EvaluateVisitor__visitCalculationExpression_closure.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this._box_0,
        t3 = _this.inLegacySassFunction;
      return A.SassCalculation_operateInternal(t1._binaryOperatorToCalculationOperator$2(t2.operator, _this.node), t1._visitCalculationExpression$2$inLegacySassFunction(t2.left, t3), t1._visitCalculationExpression$2$inLegacySassFunction(t2.right, t3), t3, !t1._inSupportsDeclaration);
    },
    $signature: 14
  };
  A._EvaluateVisitor__checkAdjacentCalculationValues_closure.prototype = {
    call$0() {
      return type$.UnaryOperationExpression._as(this._0_0).operator;
    },
    $signature: 137
  };
  A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._runFunctionCallable$3(t1.$arguments, this.$function, t1);
    },
    $signature: 25
  };
  A._EvaluateVisitor__runUserDefinedCallable_closure.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.callable;
      return t1._withEnvironment$2(t2.environment.closure$0(), new A._EvaluateVisitor__runUserDefinedCallable__closure(t1, _this.evaluated, t2, _this.nodeWithSpan, _this.run, _this.V));
    },
    $signature() {
      return this.V._eval$1("0()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable__closure.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.V;
      return t1._environment.scope$1$1(new A._EvaluateVisitor__runUserDefinedCallable___closure(t1, _this.evaluated, _this.callable, _this.nodeWithSpan, _this.run, t2), t2);
    },
    $signature() {
      return this.V._eval$1("0()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable___closure.prototype = {
    call$0() {
      var declaredArguments, t5, minLength, i, argument, t6, t7, value, t8, restArgument, rest, argumentList, result, argumentWord, _this = this,
        t1 = _this.$this,
        t2 = _this.evaluated._values,
        t3 = _this.callable.declaration.$arguments,
        t4 = _this.nodeWithSpan;
      t1._verifyArguments$4(J.get$length$asx(t2[2]), t2[0], t3, t4);
      declaredArguments = t3.$arguments;
      t5 = declaredArguments.length;
      minLength = Math.min(J.get$length$asx(t2[2]), t5);
      for (i = 0; i < minLength; ++i)
        t1._environment.setLocalVariable$3(declaredArguments[i].name, J.$index$asx(t2[2], i), J.$index$asx(t2[3], i));
      for (i = J.get$length$asx(t2[2]); i < t5; ++i) {
        argument = declaredArguments[i];
        t6 = t2[0];
        t7 = argument.name;
        value = J.remove$1$z(t6, t7);
        if (value == null) {
          t6 = argument.defaultValue;
          value = t1._withoutSlash$2(t6.accept$1(t1), t1._expressionNode$1(t6));
        }
        t6 = t1._environment;
        t8 = J.$index$asx(t2[1], t7);
        if (t8 == null) {
          t8 = argument.defaultValue;
          t8.toString;
          t8 = t1._expressionNode$1(t8);
        }
        t6.setLocalVariable$3(t7, value, t8);
      }
      restArgument = t3.restArgument;
      if (restArgument != null) {
        rest = J.get$length$asx(t2[2]) > t5 ? J.sublist$1$ax(t2[2], t5) : B.List_empty8;
        t5 = t2[0];
        t6 = t2[4];
        argumentList = A.SassArgumentList$(rest, t5, t6 === B.ListSeparator_undecided_null_undecided ? B.ListSeparator_rXA : t6);
        t1._environment.setLocalVariable$3(restArgument, argumentList, t4);
      } else
        argumentList = null;
      result = _this.run.call$0();
      if (argumentList == null)
        return result;
      t5 = t2[0].__js_helper$_length;
      if (t5 === 0)
        return result;
      if (argumentList._wereKeywordsAccessed)
        return result;
      argumentWord = A.pluralize("argument", t5, null);
      t2 = t2[0];
      t5 = A.instanceType(t2)._eval$1("LinkedHashMapKeyIterable<1>");
      throw A.wrapException(A.MultiSpanSassRuntimeException$("No " + argumentWord + " named " + A.toSentence(A.MappedIterable_MappedIterable(new A.LinkedHashMapKeyIterable(t2, t5), new A._EvaluateVisitor__runUserDefinedCallable____closure(), t5._eval$1("Iterable.E"), type$.Object), "or") + ".", t4.get$span(t4), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([t3.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), t1._evaluate$_stackTrace$1(t4.get$span(t4)), null));
    },
    $signature() {
      return this.V._eval$1("0()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable____closure.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__runFunctionCallable_closure.prototype = {
    call$0() {
      var t1, t2, t3, t4, _i, $returnValue;
      for (t1 = this.callable.declaration, t2 = t1.children, t3 = t2.length, t4 = this.$this, _i = 0; _i < t3; ++_i) {
        $returnValue = t2[_i].accept$1(t4);
        if ($returnValue instanceof A.Value)
          return $returnValue;
      }
      throw A.wrapException(t4._evaluate$_exception$2("Function finished without @return.", t1.span));
    },
    $signature: 25
  };
  A._EvaluateVisitor__runBuiltInCallable_closure.prototype = {
    call$0() {
      return this._box_0.overload.verify$2(J.get$length$asx(this.evaluated._values[2]), this.namedSet);
    },
    $signature: 0
  };
  A._EvaluateVisitor__runBuiltInCallable_closure0.prototype = {
    call$0() {
      return this._box_0.callback.call$1(this.evaluated._values[2]);
    },
    $signature: 25
  };
  A._EvaluateVisitor__runBuiltInCallable_closure1.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__evaluateArguments_closure.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 43
  };
  A._EvaluateVisitor__evaluateArguments_closure0.prototype = {
    call$1(value) {
      return this.$this._withoutSlash$2(value, this.restNodeForSpan);
    },
    $signature: 43
  };
  A._EvaluateVisitor__evaluateArguments_closure1.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restNodeForSpan;
      _this.named.$indexSet(0, key, _this.$this._withoutSlash$2(value, t1));
      _this.namedNodes.$indexSet(0, key, t1);
    },
    $signature: 87
  };
  A._EvaluateVisitor__evaluateArguments_closure2.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 43
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression(value, t1.get$span(t1));
    },
    $signature: 65
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure0.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression(this.$this._withoutSlash$2(value, this.restNodeForSpan), t1.get$span(t1));
    },
    $signature: 65
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure1.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restArgs;
      _this.named.$indexSet(0, key, new A.ValueExpression(_this.$this._withoutSlash$2(value, _this.restNodeForSpan), t1.get$span(t1)));
    },
    $signature: 87
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure2.prototype = {
    call$1(value) {
      var t1 = this.keywordRestArgs;
      return new A.ValueExpression(this.$this._withoutSlash$2(value, this.keywordRestNodeForSpan), t1.get$span(t1));
    },
    $signature: 65
  };
  A._EvaluateVisitor__addRestMap_closure.prototype = {
    call$2(key, value) {
      var t2, _this = this,
        t1 = _this.$this;
      if (key instanceof A.SassString)
        _this.values.$indexSet(0, key._string$_text, _this.convert.call$1(t1._withoutSlash$2(value, _this.expressionNode)));
      else {
        t2 = _this.nodeWithSpan;
        throw A.wrapException(t1._evaluate$_exception$2(string$.Variab_ + key.toString$0(0) + " is not a string in " + _this.map.toString$0(0) + ".", t2.get$span(t2)));
      }
    },
    $signature: 106
  };
  A._EvaluateVisitor__verifyArguments_closure.prototype = {
    call$0() {
      return this.$arguments.verify$2(this.positional, new A.MapKeySet(this.named, type$.MapKeySet_String));
    },
    $signature: 0
  };
  A._EvaluateVisitor_visitCssAtRule_closure.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssAtRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssMediaRule_closure.prototype = {
    call$1(mediaQueries) {
      return this.$this._mergeMediaQueries$2(mediaQueries, this.node.queries);
    },
    $signature: 83
  };
  A._EvaluateVisitor_visitCssMediaRule_closure0.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.mergedQueries;
      if (t2 == null)
        t2 = _this.node.queries;
      t1._withMediaQueries$3(t2, _this.mergedSources, new A._EvaluateVisitor_visitCssMediaRule__closure(t1, _this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssMediaRule__closure.prototype = {
    call$0() {
      var styleRule, t2, t3, t4,
        t1 = this.$this,
        _0_0 = t1._atRootExcludingStyleRule ? null : t1._styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssMediaRule___closure(t1, this.node), false, type$.ModifiableCssStyleRule, type$.Null);
      else
        for (t2 = this.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
          t4 = t2.__internal$_current;
          (t4 == null ? t3._as(t4) : t4).accept$1(t1);
        }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssMediaRule___closure.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssMediaRule_closure1.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssStyleRule_closure.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._withStyleRule$2(this.rule, new A._EvaluateVisitor_visitCssStyleRule__closure(t1, this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssStyleRule__closure.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssStyleRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor_visitCssStyleRule_closure1.prototype = {
    call$0() {
      return J.get$length$asx(this._0_0._collection$_source);
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure.prototype = {
    call$0() {
      var styleRule, t2, t3, t4,
        t1 = this.$this,
        _0_0 = t1._atRootExcludingStyleRule ? null : t1._styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._withParent$2$2(A.ModifiableCssStyleRule$(styleRule._style_rule$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssSupportsRule__closure(t1, this.node), type$.ModifiableCssStyleRule, type$.Null);
      else
        for (t2 = this.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
          t4 = t2.__internal$_current;
          (t4 == null ? t3._as(t4) : t4).accept$1(t1);
        }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssSupportsRule__closure.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure0.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluateVisitor__performInterpolationHelper_closure.prototype = {
    call$1(targetLocations) {
      return A.InterpolationMap$(this.interpolation, targetLocations);
    },
    $signature: 154
  };
  A._EvaluateVisitor__serialize_closure.prototype = {
    call$0() {
      return A.serializeValue(this.value, false, this.quote);
    },
    $signature: 22
  };
  A._EvaluateVisitor__expressionNode_closure.prototype = {
    call$0() {
      var t1 = this.expression;
      return this.$this._environment.getVariableNode$2$namespace(t1.name, t1.namespace);
    },
    $signature: 155
  };
  A._EvaluateVisitor__withoutSlash_recommendation.prototype = {
    call$1(number) {
      var t1, before, after,
        _1_0 = number.asSlash;
      $label0$0: {
        if (type$.Record_2_nullable_Object_and_nullable_Object._is(_1_0)) {
          t1 = type$.SassNumber;
          before = t1._as(_1_0._0);
          after = t1._as(_1_0._1);
          t1 = true;
        } else {
          before = null;
          after = null;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(before)) + ", " + A.S(this.call$1(after)) + ")";
          break $label0$0;
        }
        t1 = A.serializeValue(number, true, true);
        break $label0$0;
      }
      return t1;
    },
    $signature: 156
  };
  A._EvaluateVisitor__stackFrame_closure.prototype = {
    call$1(url) {
      var t1 = this.$this._evaluate$_importCache;
      t1 = t1 == null ? null : t1.humanize$1(url);
      return t1 == null ? url : t1;
    },
    $signature: 48
  };
  A._ImportedCssVisitor.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.isChildless ? null : new A._ImportedCssVisitor_visitCssAtRule_closure();
      this._visitor._addChild$2$through(node, t1);
    },
    visitCssComment$1(node) {
      return this._visitor._addChild$1(node);
    },
    visitCssDeclaration$1(node) {
    },
    visitCssImport$1(node) {
      var t2,
        _s13_ = "_endOfImports",
        t1 = this._visitor;
      if (t1._assertInModule$2(t1.__parent, "__parent") !== t1._assertInModule$2(t1.__root, "_root"))
        t1._addChild$1(node);
      else if (t1._assertInModule$2(t1.__endOfImports, _s13_) === J.get$length$asx(t1._assertInModule$2(t1.__root, "_root").children._collection$_source)) {
        t1._addChild$1(node);
        t1.__endOfImports = t1._assertInModule$2(t1.__endOfImports, _s13_) + 1;
      } else {
        t2 = t1._outOfOrderImports;
        (t2 == null ? t1._outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport) : t2).push(node);
      }
    },
    visitCssKeyframeBlock$1(node) {
    },
    visitCssMediaRule$1(node) {
      var t1 = this._visitor,
        mediaQueries = t1._mediaQueries;
      t1._addChild$2$through(node, new A._ImportedCssVisitor_visitCssMediaRule_closure(mediaQueries == null || t1._mergeMediaQueries$2(mediaQueries, node.queries) != null));
    },
    visitCssStyleRule$1(node) {
      return this._visitor._addChild$2$through(node, new A._ImportedCssVisitor_visitCssStyleRule_closure());
    },
    visitCssStylesheet$1(node) {
      var t1, t2, t3;
      for (t1 = node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        (t3 == null ? t2._as(t3) : t3).accept$1(this);
      }
    },
    visitCssSupportsRule$1(node) {
      return this._visitor._addChild$2$through(node, new A._ImportedCssVisitor_visitCssSupportsRule_closure());
    }
  };
  A._ImportedCssVisitor_visitCssAtRule_closure.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._ImportedCssVisitor_visitCssMediaRule_closure.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule))
        t1 = this.hasBeenMerged && node instanceof A.ModifiableCssMediaRule;
      else
        t1 = true;
      return t1;
    },
    $signature: 9
  };
  A._ImportedCssVisitor_visitCssStyleRule_closure.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._ImportedCssVisitor_visitCssSupportsRule_closure.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule;
    },
    $signature: 9
  };
  A._EvaluationContext.prototype = {
    get$currentCallableSpan() {
      var callableNode, t1,
        _0_0 = this._visitor._callableNode;
      if (_0_0 != null) {
        callableNode = _0_0;
        t1 = true;
      } else {
        callableNode = null;
        t1 = false;
      }
      if (t1)
        return callableNode.get$span(callableNode);
      throw A.wrapException(A.StateError$(string$.No_Sasc));
    },
    warn$2(_, message, deprecation) {
      var t1 = this._visitor,
        t2 = t1._importSpan;
      if (t2 == null) {
        t2 = t1._callableNode;
        t2 = t2 == null ? null : t2.get$span(t2);
      }
      if (t2 == null) {
        t2 = this._defaultWarnNodeWithSpan;
        t2 = t2.get$span(t2);
      }
      t1._warn$3(message, t2, deprecation);
    },
    $isEvaluationContext: 1
  };
  A.EveryCssVisitor.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssAtRule_closure(this));
    },
    visitCssComment$1(node) {
      return false;
    },
    visitCssDeclaration$1(node) {
      return false;
    },
    visitCssImport$1(node) {
      return false;
    },
    visitCssKeyframeBlock$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssKeyframeBlock_closure(this));
    },
    visitCssMediaRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssMediaRule_closure(this));
    },
    visitCssStyleRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssStyleRule_closure(this));
    },
    visitCssStylesheet$1(node) {
      return J.every$1$ax(node.get$children(node), new A.EveryCssVisitor_visitCssStylesheet_closure(this));
    },
    visitCssSupportsRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssSupportsRule_closure(this));
    }
  };
  A.EveryCssVisitor_visitCssAtRule_closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 9
  };
  A.EveryCssVisitor_visitCssKeyframeBlock_closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 9
  };
  A.EveryCssVisitor_visitCssMediaRule_closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 9
  };
  A.EveryCssVisitor_visitCssStyleRule_closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 9
  };
  A.EveryCssVisitor_visitCssStylesheet_closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 9
  };
  A.EveryCssVisitor_visitCssSupportsRule_closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 9
  };
  A._MakeExpressionCalculationSafe.prototype = {
    visitBinaryOperationExpression$1(node) {
      var t1, t2, t3;
      if (node.operator === B.BinaryOperator_OTG) {
        t1 = A._setArrayType([node], type$.JSArray_Expression);
        t2 = node.get$span(node);
        t3 = type$.Expression;
        t2 = new A.FunctionExpression("math", "max", new A.ArgumentInvocation(A.List_List$unmodifiable(t1, t3), A.ConstantMap_ConstantMap$from(B.Map_empty6, type$.String, t3), null, null, t2), node.get$span(node));
        t1 = t2;
      } else
        t1 = this.super$ReplaceExpressionVisitor$visitBinaryOperationExpression(node);
      return t1;
    },
    visitInterpolatedFunctionExpression$1(node) {
      return node;
    },
    visitUnaryOperationExpression$1(node) {
      var t1,
        _0_0 = node.operator;
      $label0$0: {
        if (B.UnaryOperator_gg4 === _0_0) {
          t1 = node.operand;
          break $label0$0;
        }
        if (B.UnaryOperator_TLI === _0_0) {
          t1 = new A.BinaryOperationExpression(B.BinaryOperator_qN2, new A.NumberExpression(-1, null, node.span), node.operand, false);
          break $label0$0;
        }
        t1 = this.super$ReplaceExpressionVisitor$visitUnaryOperationExpression(node);
        break $label0$0;
      }
      return t1;
    }
  };
  A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor.prototype = {};
  A._FindDependenciesVisitor.prototype = {
    visitEachRule$1(node) {
    },
    visitForRule$1(node) {
    },
    visitIfRule$1(node) {
    },
    visitWhileRule$1(node) {
    },
    visitUseRule$1(node) {
      var t1 = node.url;
      if (t1.get$scheme() !== "sass")
        this._find_dependencies$_uses.add$1(0, t1);
      else if (t1.toString$0(0) === "sass:meta")
        this._metaNamespaces.add$1(0, node.namespace);
    },
    visitForwardRule$1(node) {
      var t1 = node.url;
      if (t1.get$scheme() !== "sass")
        this._find_dependencies$_forwards.add$1(0, t1);
    },
    visitImportRule$1(node) {
      var t1, t2, t3, _i, $import;
      for (t1 = node.imports, t2 = t1.length, t3 = this._imports, _i = 0; _i < t2; ++_i) {
        $import = t1[_i];
        if ($import instanceof A.DynamicImport)
          t3.add$1(0, A.Uri_parse($import.urlString));
      }
    },
    visitIncludeRule$1(node) {
      var url, _0_0, _0_4, _0_7, t1, exception;
      if (node.name !== "load-css")
        return;
      if (!this._metaNamespaces.contains$1(0, node.namespace))
        return;
      url = null;
      _0_0 = node.$arguments.positional;
      _0_4 = A._InitializedCell$(new A._FindDependenciesVisitor_visitIncludeRule_closure(_0_0));
      _0_7 = A._InitializedCell$(new A._FindDependenciesVisitor_visitIncludeRule_closure0(_0_4));
      if (_0_0.length === 1)
        if (_0_4._readFinal$0() instanceof A.StringExpression)
          if (_0_7._readFinal$0() != null) {
            url = _0_7._readFinal$0();
            t1 = true;
          } else
            t1 = false;
        else
          t1 = false;
      else
        t1 = false;
      if (t1)
        try {
          this._metaLoadCss.add$1(0, A.Uri_parse(url));
        } catch (exception) {
          if (!type$.FormatException._is(A.unwrapException(exception)))
            throw exception;
        }
    }
  };
  A._FindDependenciesVisitor_visitIncludeRule_closure.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 612
  };
  A._FindDependenciesVisitor_visitIncludeRule_closure0.prototype = {
    call$0() {
      return this._0_4._readFinal$0().text.get$asPlain();
    },
    $signature: 32
  };
  A.DependencyReport.prototype = {};
  A.__FindDependenciesVisitor_Object_RecursiveStatementVisitor.prototype = {};
  A.RecursiveStatementVisitor.prototype = {
    visitAtRootRule$1(node) {
      this.visitChildren$1(node.children);
    },
    visitAtRule$1(node) {
      return A.NullableExtension_andThen(node.children, this.get$visitChildren());
    },
    visitContentBlock$1(node) {
      return null;
    },
    visitContentRule$1(node) {
    },
    visitDebugRule$1(node) {
    },
    visitDeclaration$1(node) {
      return A.NullableExtension_andThen(node.children, this.get$visitChildren());
    },
    visitEachRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitErrorRule$1(node) {
    },
    visitExtendRule$1(node) {
    },
    visitForRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitForwardRule$1(node) {
    },
    visitFunctionRule$1(node) {
      return null;
    },
    visitIfRule$1(node) {
      var t1, t2, _i, t3, t4, _i0, _0_0, lastClause;
      for (t1 = node.clauses, t2 = t1.length, _i = 0; _i < t2; ++_i)
        for (t3 = t1[_i].children, t4 = t3.length, _i0 = 0; _i0 < t4; ++_i0)
          t3[_i0].accept$1(this);
      _0_0 = node.lastClause;
      if (_0_0 != null) {
        lastClause = _0_0;
        t1 = true;
      } else {
        lastClause = null;
        t1 = false;
      }
      if (t1)
        for (t1 = lastClause.children, t2 = t1.length, _i = 0; _i < t2; ++_i)
          t1[_i].accept$1(this);
    },
    visitImportRule$1(node) {
    },
    visitIncludeRule$1(node) {
      return A.NullableExtension_andThen(node.content, this.get$visitContentBlock());
    },
    visitLoudComment$1(node) {
    },
    visitMediaRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitMixinRule$1(node) {
      return null;
    },
    visitReturnRule$1(node) {
    },
    visitSilentComment$1(node) {
    },
    visitStyleRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitStylesheet$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitSupportsRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitUseRule$1(node) {
    },
    visitVariableDeclaration$1(node) {
    },
    visitWarnRule$1(node) {
    },
    visitWhileRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitChildren$1(children) {
      var t1;
      for (t1 = J.get$iterator$ax(children); t1.moveNext$0();)
        t1.get$current(t1).accept$1(this);
    }
  };
  A.ReplaceExpressionVisitor.prototype = {
    visitBinaryOperationExpression$1(node) {
      return new A.BinaryOperationExpression(node.operator, node.left.accept$1(this), node.right.accept$1(this), false);
    },
    visitBooleanExpression$1(node) {
      return node;
    },
    visitColorExpression$1(node) {
      return node;
    },
    visitFunctionExpression$1(node) {
      return new A.FunctionExpression(node.namespace, node.originalName, this.visitArgumentInvocation$1(node.$arguments), node.span);
    },
    visitInterpolatedFunctionExpression$1(node) {
      return new A.InterpolatedFunctionExpression(this.visitInterpolation$1(node.name), this.visitArgumentInvocation$1(node.$arguments), node.span);
    },
    visitIfExpression$1(node) {
      return new A.IfExpression(this.visitArgumentInvocation$1(node.$arguments), node.span);
    },
    visitListExpression$1(node) {
      var t1 = node.contents;
      return new A.ListExpression(A.List_List$unmodifiable(new A.MappedListIterable(t1, new A.ReplaceExpressionVisitor_visitListExpression_closure(this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Expression>")), type$.Expression), node.separator, node.hasBrackets, node.span);
    },
    visitMapExpression$1(node) {
      var t2, t3, _i, t4, key, value,
        t1 = A._setArrayType([], type$.JSArray_Record_2_Expression_and_Expression);
      for (t2 = node.pairs, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        t4 = t2[_i];
        key = t4._0;
        value = t4._1;
        t1.push(new A._Record_2(key.accept$1(this), value.accept$1(this)));
      }
      return new A.MapExpression(A.List_List$unmodifiable(t1, type$.Record_2_Expression_and_Expression), node.span);
    },
    visitNullExpression$1(node) {
      return node;
    },
    visitNumberExpression$1(node) {
      return node;
    },
    visitParenthesizedExpression$1(node) {
      return new A.ParenthesizedExpression(node.expression.accept$1(this), node.span);
    },
    visitSelectorExpression$1(node) {
      return node;
    },
    visitStringExpression$1(node) {
      return new A.StringExpression(this.visitInterpolation$1(node.text), node.hasQuotes);
    },
    visitSupportsExpression$1(node) {
      return new A.SupportsExpression(this.visitSupportsCondition$1(node.condition));
    },
    visitUnaryOperationExpression$1(node) {
      return new A.UnaryOperationExpression(node.operator, node.operand.accept$1(this), node.span);
    },
    visitValueExpression$1(node) {
      return node;
    },
    visitVariableExpression$1(node) {
      return node;
    },
    visitArgumentInvocation$1(invocation) {
      var t5, t6, $name, value, _this = this,
        t1 = invocation.positional,
        t2 = type$.String,
        t3 = type$.Expression,
        t4 = A.LinkedHashMap_LinkedHashMap$_empty(t2, t3);
      for (t5 = A.MapExtensions_get_pairs(invocation.named, t2, t3), t5 = t5.get$iterator(t5); t5.moveNext$0();) {
        t6 = t5.get$current(t5);
        $name = t6._0;
        value = t6._1;
        t4.$indexSet(0, $name, value.accept$1(_this));
      }
      t5 = invocation.rest;
      t5 = t5 == null ? null : t5.accept$1(_this);
      t6 = invocation.keywordRest;
      t6 = t6 == null ? null : t6.accept$1(_this);
      return new A.ArgumentInvocation(A.List_List$unmodifiable(new A.MappedListIterable(t1, new A.ReplaceExpressionVisitor_visitArgumentInvocation_closure(_this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Expression>")), t3), A.ConstantMap_ConstantMap$from(t4, t2, t3), t5, t6, invocation.span);
    },
    visitSupportsCondition$1(condition) {
      var _this = this;
      if (condition instanceof A.SupportsOperation)
        return A.SupportsOperation$(_this.visitSupportsCondition$1(condition.left), _this.visitSupportsCondition$1(condition.right), condition.operator, condition.span);
      else if (condition instanceof A.SupportsNegation)
        return new A.SupportsNegation(_this.visitSupportsCondition$1(condition.condition), condition.span);
      else if (condition instanceof A.SupportsInterpolation)
        return new A.SupportsInterpolation(condition.expression.accept$1(_this), condition.span);
      else if (condition instanceof A.SupportsDeclaration)
        return new A.SupportsDeclaration(condition.name.accept$1(_this), condition.value.accept$1(_this), condition.span);
      else
        throw A.wrapException(A.SassException$("BUG: Unknown SupportsCondition " + condition.toString$0(0) + ".", condition.get$span(condition), null));
    },
    visitInterpolation$1(interpolation) {
      var t1 = interpolation.contents;
      return A.Interpolation$(new A.MappedListIterable(t1, new A.ReplaceExpressionVisitor_visitInterpolation_closure(this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Object>")), interpolation.span);
    }
  };
  A.ReplaceExpressionVisitor_visitListExpression_closure.prototype = {
    call$1(item) {
      return item.accept$1(this.$this);
    },
    $signature: 162
  };
  A.ReplaceExpressionVisitor_visitArgumentInvocation_closure.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 162
  };
  A.ReplaceExpressionVisitor_visitInterpolation_closure.prototype = {
    call$1(node) {
      return type$.Expression._is(node) ? node.accept$1(this.$this) : node;
    },
    $signature: 69
  };
  A.SelectorSearchVisitor.prototype = {
    visitAttributeSelector$1(attribute) {
      return null;
    },
    visitClassSelector$1(klass) {
      return null;
    },
    visitIDSelector$1(id) {
      return null;
    },
    visitParentSelector$1(placeholder) {
      return null;
    },
    visitPlaceholderSelector$1(placeholder) {
      return null;
    },
    visitTypeSelector$1(type) {
      return null;
    },
    visitUniversalSelector$1(universal) {
      return null;
    },
    visitComplexSelector$1(complex) {
      return A.IterableExtension_search(complex.components, new A.SelectorSearchVisitor_visitComplexSelector_closure(this));
    },
    visitCompoundSelector$1(compound) {
      return A.IterableExtension_search(compound.components, new A.SelectorSearchVisitor_visitCompoundSelector_closure(this));
    },
    visitPseudoSelector$1(pseudo) {
      return A.NullableExtension_andThen(pseudo.selector, this.get$visitSelectorList());
    },
    visitSelectorList$1(list) {
      return A.IterableExtension_search(list.components, this.get$visitComplexSelector());
    }
  };
  A.SelectorSearchVisitor_visitComplexSelector_closure.prototype = {
    call$1(component) {
      return this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("SelectorSearchVisitor.T?(ComplexSelectorComponent)");
    }
  };
  A.SelectorSearchVisitor_visitCompoundSelector_closure.prototype = {
    call$1(simple) {
      return simple.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("SelectorSearchVisitor.T?(SimpleSelector)");
    }
  };
  A.serialize_closure.prototype = {
    call$1(codeUnit) {
      return codeUnit > 127;
    },
    $signature: 47
  };
  A._SerializeVisitor.prototype = {
    visitCssStylesheet$1(node) {
      var t1, t2, t3, t4, t5, t6, previous, previous0, t7, _this = this;
      for (t1 = J.get$iterator$ax(node.get$children(node)), t2 = !_this._inspect, t3 = _this._style === B.OutputStyle_1, t4 = !t3, t5 = type$.CssParentNode, t6 = _this._serialize$_buffer, previous = null; t1.moveNext$0();) {
        previous0 = t1.get$current(t1);
        if (t2)
          t7 = t3 ? previous0.accept$1(B._IsInvisibleVisitor_true_true) : previous0.accept$1(B._IsInvisibleVisitor_true_false);
        else
          t7 = false;
        if (t7)
          continue;
        if (previous != null) {
          if (t5._is(previous) ? previous.get$isChildless() : !(previous instanceof A.ModifiableCssComment))
            t6.writeCharCode$1(59);
          if (_this._isTrailingComment$2(previous0, previous)) {
            if (t4)
              t6.writeCharCode$1(32);
          } else {
            if (t4)
              t6.write$1(0, "\n");
            if (previous.get$isGroupEnd())
              if (t4)
                t6.write$1(0, "\n");
          }
        }
        previous0.accept$1(_this);
        previous = previous0;
      }
      if (previous != null)
        t1 = (t5._is(previous) ? previous.get$isChildless() : !(previous instanceof A.ModifiableCssComment)) && t4;
      else
        t1 = false;
      if (t1)
        t6.writeCharCode$1(59);
    },
    visitCssComment$1(node) {
      this._serialize$_buffer.forSpan$2(node.span, new A._SerializeVisitor_visitCssComment_closure(this, node));
    },
    visitCssAtRule$1(node) {
      var t1, _this = this;
      _this._writeIndentation$0();
      t1 = _this._serialize$_buffer;
      t1.forSpan$2(node.span, new A._SerializeVisitor_visitCssAtRule_closure(_this, node));
      if (!node.isChildless) {
        if (_this._style !== B.OutputStyle_1)
          t1.writeCharCode$1(32);
        _this._serialize$_visitChildren$1(node);
      }
    },
    visitCssMediaRule$1(node) {
      var t1, _this = this;
      _this._writeIndentation$0();
      t1 = _this._serialize$_buffer;
      t1.forSpan$2(node.span, new A._SerializeVisitor_visitCssMediaRule_closure(_this, node));
      if (_this._style !== B.OutputStyle_1)
        t1.writeCharCode$1(32);
      _this._serialize$_visitChildren$1(node);
    },
    visitCssImport$1(node) {
      this._writeIndentation$0();
      this._serialize$_buffer.forSpan$2(node.span, new A._SerializeVisitor_visitCssImport_closure(this, node));
    },
    _writeImportUrl$1(url) {
      var urlContents, maybeQuote, _this = this;
      if (_this._style !== B.OutputStyle_1 || url.charCodeAt(0) !== 117) {
        _this._serialize$_buffer.write$1(0, url);
        return;
      }
      urlContents = B.JSString_methods.substring$2(url, 4, url.length - 1);
      maybeQuote = urlContents.charCodeAt(0);
      if (maybeQuote === 39 || maybeQuote === 34)
        _this._serialize$_buffer.write$1(0, urlContents);
      else
        _this._visitQuotedString$1(urlContents);
    },
    visitCssKeyframeBlock$1(node) {
      var t1, _this = this;
      _this._writeIndentation$0();
      t1 = _this._serialize$_buffer;
      t1.forSpan$2(node.selector.span, new A._SerializeVisitor_visitCssKeyframeBlock_closure(_this, node));
      if (_this._style !== B.OutputStyle_1)
        t1.writeCharCode$1(32);
      _this._serialize$_visitChildren$1(node);
    },
    _visitMediaQuery$1(query) {
      var modifier, t1, _1_0, type, _2_0, condition, operator, t2, _this = this,
        _0_0 = query.modifier;
      if (_0_0 != null) {
        modifier = _0_0;
        t1 = true;
      } else {
        modifier = null;
        t1 = false;
      }
      if (t1) {
        t1 = _this._serialize$_buffer;
        t1.write$1(0, modifier);
        t1.writeCharCode$1(32);
      }
      _1_0 = query.type;
      if (_1_0 != null) {
        type = _1_0;
        t1 = true;
      } else {
        type = null;
        t1 = false;
      }
      if (t1) {
        t1 = _this._serialize$_buffer;
        t1.write$1(0, type);
        if (query.conditions.length !== 0)
          t1.write$1(0, " and ");
      }
      _2_0 = query.conditions;
      if (_2_0.length === 1)
        t1 = B.JSString_methods.startsWith$1(_2_0[0], "(not ");
      else
        t1 = false;
      if (t1) {
        t1 = _this._serialize$_buffer;
        t1.write$1(0, "not ");
        condition = B.JSArray_methods.get$first(_2_0);
        t1.write$1(0, B.JSString_methods.substring$2(condition, 5, condition.length - 1));
      } else {
        operator = query.conjunction ? "and" : "or";
        t1 = _this._style === B.OutputStyle_1 ? operator + " " : " " + operator + " ";
        t2 = _this._serialize$_buffer;
        _this._writeBetween$3(_2_0, t1, t2.get$write(t2));
      }
    },
    visitCssStyleRule$1(node) {
      var t1, _this = this;
      _this._writeIndentation$0();
      t1 = _this._serialize$_buffer;
      t1.forSpan$2(node._style_rule$_selector._box$_inner.value.span, new A._SerializeVisitor_visitCssStyleRule_closure(_this, node));
      if (_this._style !== B.OutputStyle_1)
        t1.writeCharCode$1(32);
      _this._serialize$_visitChildren$1(node);
    },
    visitCssSupportsRule$1(node) {
      var t1, _this = this;
      _this._writeIndentation$0();
      t1 = _this._serialize$_buffer;
      t1.forSpan$2(node.span, new A._SerializeVisitor_visitCssSupportsRule_closure(_this, node));
      if (_this._style !== B.OutputStyle_1)
        t1.writeCharCode$1(32);
      _this._serialize$_visitChildren$1(node);
    },
    visitCssDeclaration$1(node) {
      var error, stackTrace, error0, stackTrace0, t1, t2, exception, _this = this;
      _this._writeIndentation$0();
      t1 = node.name;
      _this._serialize$_write$1(t1);
      t2 = _this._serialize$_buffer;
      t2.writeCharCode$1(58);
      if (J.startsWith$1$s(t1.value, "--") && node.parsedAsCustomProperty)
        t2.forSpan$2(node.value.span, new A._SerializeVisitor_visitCssDeclaration_closure(_this, node));
      else {
        if (_this._style !== B.OutputStyle_1)
          t2.writeCharCode$1(32);
        try {
          t2.forSpan$2(node.valueSpanForMap, new A._SerializeVisitor_visitCssDeclaration_closure0(_this, node));
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (t1 instanceof A.MultiSpanSassScriptException) {
            error = t1;
            stackTrace = A.getTraceFromException(exception);
            A.throwWithTrace(A.MultiSpanSassException$(error.message, node.value.span, error.primaryLabel, error.secondarySpans, null), error, stackTrace);
          } else if (t1 instanceof A.SassScriptException) {
            error0 = t1;
            stackTrace0 = A.getTraceFromException(exception);
            t1 = error0.message;
            A.throwWithTrace(new A.SassException(B.Set_empty, t1, node.value.span), error0, stackTrace0);
          } else
            throw exception;
        }
      }
    },
    _writeFoldedValue$1(node) {
      var t1, t2, next, t3,
        scanner = A.StringScanner$(type$.SassString._as(node.value.value)._string$_text, null, null);
      for (t1 = scanner.string.length, t2 = this._serialize$_buffer; scanner._string_scanner$_position !== t1;) {
        next = scanner.readChar$0();
        if (next !== 10) {
          t2.writeCharCode$1(next);
          continue;
        }
        t2.writeCharCode$1(32);
        while (true) {
          t3 = scanner.peekChar$0();
          if (!(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12))
            break;
          scanner.readChar$0();
        }
      }
    },
    _writeReindentedValue$1(node) {
      var _0_0, t1, _this = this,
        value = type$.SassString._as(node.value.value)._string$_text;
      $label0$0: {
        _0_0 = _this._minimumIndentation$1(value);
        if (_0_0 == null) {
          _this._serialize$_buffer.write$1(0, value);
          break $label0$0;
        }
        if (-1 === _0_0) {
          t1 = _this._serialize$_buffer;
          t1.write$1(0, A.trimAsciiRight(value, true));
          t1.writeCharCode$1(32);
          break $label0$0;
        }
        t1 = node.name.span;
        t1 = t1.get$start(t1);
        _this._writeWithIndent$2(value, Math.min(_0_0, t1.file.getColumn$1(t1.offset)));
      }
    },
    _minimumIndentation$1(text) {
      var character, t2, min, next, min0,
        scanner = A.LineScanner$(text),
        t1 = scanner.string.length;
      while (true) {
        if (scanner._string_scanner$_position !== t1) {
          character = scanner.super$StringScanner$readChar();
          scanner._adjustLineAndColumn$1(character);
          t2 = character !== 10;
        } else
          t2 = false;
        if (!t2)
          break;
      }
      if (scanner._string_scanner$_position === t1)
        return scanner.peekChar$1(-1) === 10 ? -1 : null;
      for (min = null; scanner._string_scanner$_position !== t1;) {
        for (; scanner._string_scanner$_position !== t1;) {
          next = scanner.peekChar$0();
          if (next !== 32 && next !== 9)
            break;
          scanner._adjustLineAndColumn$1(scanner.super$StringScanner$readChar());
        }
        if (scanner._string_scanner$_position === t1 || scanner.scanChar$1(10))
          continue;
        min0 = scanner._line_scanner$_column;
        min = min == null ? min0 : Math.min(min, min0);
        while (true) {
          if (scanner._string_scanner$_position !== t1) {
            character = scanner.super$StringScanner$readChar();
            scanner._adjustLineAndColumn$1(character);
            t2 = character !== 10;
          } else
            t2 = false;
          if (!t2)
            break;
        }
      }
      return min == null ? -1 : min;
    },
    _writeWithIndent$2(text, minimumIndentation) {
      var t1, t2, t3, character, lineStart, newlines, end,
        scanner = A.LineScanner$(text);
      for (t1 = scanner.string, t2 = t1.length, t3 = this._serialize$_buffer; scanner._string_scanner$_position !== t2;) {
        character = scanner.super$StringScanner$readChar();
        scanner._adjustLineAndColumn$1(character);
        if (character === 10)
          break;
        t3.writeCharCode$1(character);
      }
      for (; true;) {
        lineStart = scanner._string_scanner$_position;
        for (newlines = 1; true;) {
          if (scanner._string_scanner$_position === t2) {
            t3.writeCharCode$1(32);
            return;
          }
          $label0$2: {
            character = scanner.super$StringScanner$readChar();
            scanner._adjustLineAndColumn$1(character);
            if (32 === character || 9 === character)
              continue;
            if (10 === character) {
              lineStart = scanner._string_scanner$_position;
              ++newlines;
              break $label0$2;
            }
            break;
          }
        }
        this._writeTimes$2(10, newlines);
        this._writeIndentation$0();
        end = scanner._string_scanner$_position;
        t3.write$1(0, B.JSString_methods.substring$2(t1, lineStart + minimumIndentation, end));
        for (; true;) {
          if (scanner._string_scanner$_position === t2)
            return;
          character = scanner.super$StringScanner$readChar();
          scanner._adjustLineAndColumn$1(character);
          if (character === 10)
            break;
          t3.writeCharCode$1(character);
        }
      }
    },
    visitCalculation$1(value) {
      var t2, _this = this,
        t1 = _this._serialize$_buffer;
      t1.write$1(0, value.name);
      t1.writeCharCode$1(40);
      t2 = _this._style === B.OutputStyle_1 ? "," : ", ";
      _this._writeBetween$3(value.$arguments, t2, _this.get$_writeCalculationValue());
      t1.writeCharCode$1(41);
    },
    _writeCalculationValue$1(value) {
      var _2_5, t1, _0_0, _1_0, unit, t2, operator, left, right, parenthesizeLeft, operatorWhitespace, parenthesizeRight, _this = this, _null = null;
      $label0$0: {
        _2_5 = A._InitializedCell$(new A._SerializeVisitor__writeCalculationValue_closure(value));
        t1 = value instanceof A.SassNumber;
        if (t1 && _2_5._readFinal$0() && value.get$hasComplexUnits()) {
          if (!_this._inspect)
            throw A.wrapException(A.SassScriptException$(A.S(value) + " isn't a valid CSS value.", _null));
          _this._writeNumber$1(value._number$_value);
          _this._serialize$_buffer.write$1(0, value.get$unitString());
          break $label0$0;
        }
        if (t1 && _2_5._readFinal$0()) {
          $label1$1: {
            _0_0 = value._number$_value;
            if (1 / 0 === _0_0) {
              _this._serialize$_buffer.write$1(0, "infinity");
              break $label1$1;
            }
            if (-1 / 0 === _0_0) {
              _this._serialize$_buffer.write$1(0, "-infinity");
              break $label1$1;
            }
            if (isNaN(_0_0))
              _this._serialize$_buffer.write$1(0, "NaN");
          }
          _1_0 = A.IterableExtension_get_firstOrNull(J.get$numeratorUnits$x(value));
          if (_1_0 != null) {
            unit = _1_0;
            t1 = true;
          } else {
            unit = _null;
            t1 = false;
          }
          if (t1) {
            t1 = _this._style !== B.OutputStyle_1;
            if (t1)
              _this._serialize$_buffer.writeCharCode$1(32);
            t2 = _this._serialize$_buffer;
            t2.writeCharCode$1(42);
            if (t1)
              t2.writeCharCode$1(32);
            t2.writeCharCode$1(49);
            t2.write$1(0, unit);
          }
          break $label0$0;
        }
        if (value instanceof A.Value) {
          value.accept$1(_this);
          break $label0$0;
        }
        if (value instanceof A.CalculationOperation) {
          operator = value._operator;
          left = value._left;
          right = value._right;
          right = right;
          t1 = true;
        } else {
          right = _null;
          left = right;
          operator = left;
          t1 = false;
        }
        if (t1) {
          parenthesizeLeft = left instanceof A.CalculationOperation && left._operator.precedence < operator.precedence;
          if (parenthesizeLeft)
            _this._serialize$_buffer.writeCharCode$1(40);
          _this._writeCalculationValue$1(left);
          if (parenthesizeLeft)
            _this._serialize$_buffer.writeCharCode$1(41);
          operatorWhitespace = _this._style !== B.OutputStyle_1 || operator.precedence === 1;
          if (operatorWhitespace)
            _this._serialize$_buffer.writeCharCode$1(32);
          t1 = _this._serialize$_buffer;
          t1.write$1(0, operator.operator);
          if (operatorWhitespace)
            t1.writeCharCode$1(32);
          if (!(right instanceof A.CalculationOperation && _this._parenthesizeCalculationRhs$2(operator, right._operator)))
            parenthesizeRight = operator === B.CalculationOperator_OvN && right instanceof A.SassNumber && !isFinite(right._number$_value) && right.get$hasUnits();
          else
            parenthesizeRight = true;
          if (parenthesizeRight)
            t1.writeCharCode$1(40);
          _this._writeCalculationValue$1(right);
          if (parenthesizeRight)
            t1.writeCharCode$1(41);
        }
      }
    },
    _parenthesizeCalculationRhs$2(outer, right) {
      var t1;
      $label0$0: {
        if (B.CalculationOperator_OvN === outer) {
          t1 = true;
          break $label0$0;
        }
        if (B.CalculationOperator_IyK === outer) {
          t1 = false;
          break $label0$0;
        }
        t1 = right === B.CalculationOperator_IyK || right === B.CalculationOperator_2bx;
        break $label0$0;
      }
      return t1;
    },
    visitColor$1(value) {
      var hexLength, _0_0, $name, t1, _1_0, format, opaque, t2, _3_0, _this = this;
      if (_this._style === B.OutputStyle_1)
        if (!A.fuzzyEquals(value._alpha, 1))
          _this._writeRgb$1(value);
        else {
          hexLength = _this._canUseShortHex$1(value) ? 4 : 7;
          _0_0 = $.$get$namesByColor().$index(0, value);
          if (_0_0 != null) {
            $name = _0_0;
            t1 = true;
          } else {
            $name = null;
            t1 = false;
          }
          if (t1 && $name.length <= hexLength)
            _this._serialize$_buffer.write$1(0, $name);
          else {
            t1 = _this._serialize$_buffer;
            if (_this._canUseShortHex$1(value)) {
              t1.writeCharCode$1(35);
              t1.writeCharCode$1(A.hexCharFor(value.get$red(value) & 15));
              t1.writeCharCode$1(A.hexCharFor(value.get$green(value) & 15));
              t1.writeCharCode$1(A.hexCharFor(value.get$blue(value) & 15));
            } else {
              t1.writeCharCode$1(35);
              _this._writeHexComponent$1(value.get$red(value));
              _this._writeHexComponent$1(value.get$green(value));
              _this._writeHexComponent$1(value.get$blue(value));
            }
          }
        }
      else {
        _1_0 = value.format;
        if (_1_0 != null) {
          format = _1_0;
          t1 = true;
        } else {
          format = null;
          t1 = false;
        }
        if (t1)
          $label0$0: {
            if (B._ColorFormatEnum_rgbFunction === format) {
              _this._writeRgb$1(value);
              break $label0$0;
            }
            if (B._ColorFormatEnum_hslFunction === format) {
              t1 = value._alpha;
              opaque = A.fuzzyEquals(t1, 1);
              t2 = _this._serialize$_buffer;
              t2.write$1(0, opaque ? "hsl(" : "hsla(");
              _this._writeNumber$1(value.get$hue(value));
              t2.write$1(0, ", ");
              _this._writeNumber$1(value.get$saturation(value));
              t2.writeCharCode$1(37);
              t2.write$1(0, ", ");
              _this._writeNumber$1(value.get$lightness(value));
              t2.writeCharCode$1(37);
              if (!opaque) {
                t2.write$1(0, ", ");
                _this._writeNumber$1(t1);
              }
              t2.writeCharCode$1(41);
              break $label0$0;
            }
            if (format instanceof A.SpanColorFormat) {
              _this._serialize$_buffer.write$1(0, format._color$_span.get$text());
              break $label0$0;
            }
          }
        else {
          _3_0 = $.$get$namesByColor().$index(0, value);
          if (_3_0 != null) {
            $name = _3_0;
            t1 = true;
          } else {
            $name = null;
            t1 = false;
          }
          if (t1 && !A.fuzzyEquals(value._alpha, 0))
            _this._serialize$_buffer.write$1(0, $name);
          else if (A.fuzzyEquals(value._alpha, 1)) {
            _this._serialize$_buffer.writeCharCode$1(35);
            _this._writeHexComponent$1(value.get$red(value));
            _this._writeHexComponent$1(value.get$green(value));
            _this._writeHexComponent$1(value.get$blue(value));
          } else
            _this._writeRgb$1(value);
        }
      }
    },
    _writeRgb$1(value) {
      var t3,
        t1 = value._alpha,
        opaque = A.fuzzyEquals(t1, 1),
        t2 = this._serialize$_buffer;
      t2.write$1(0, opaque ? "rgb(" : "rgba(");
      t2.write$1(0, value.get$red(value));
      t3 = this._style === B.OutputStyle_1;
      t2.write$1(0, t3 ? "," : ", ");
      t2.write$1(0, value.get$green(value));
      t2.write$1(0, t3 ? "," : ", ");
      t2.write$1(0, value.get$blue(value));
      if (!opaque) {
        t2.write$1(0, t3 ? "," : ", ");
        this._writeNumber$1(t1);
      }
      t2.writeCharCode$1(41);
    },
    _canUseShortHex$1(color) {
      var t1 = color.get$red(color);
      if ((t1 & 15) === B.JSInt_methods._shrOtherPositive$1(t1, 4)) {
        t1 = color.get$green(color);
        if ((t1 & 15) === B.JSInt_methods._shrOtherPositive$1(t1, 4)) {
          t1 = color.get$blue(color);
          t1 = (t1 & 15) === B.JSInt_methods._shrOtherPositive$1(t1, 4);
        } else
          t1 = false;
      } else
        t1 = false;
      return t1;
    },
    _writeHexComponent$1(color) {
      var t1 = this._serialize$_buffer;
      t1.writeCharCode$1(A.hexCharFor(B.JSInt_methods._shrOtherPositive$1(color, 4)));
      t1.writeCharCode$1(A.hexCharFor(color & 15));
    },
    visitList$1(value) {
      var t2, t3, singleton, t4, t5, _this = this,
        t1 = value._hasBrackets;
      if (t1)
        _this._serialize$_buffer.writeCharCode$1(91);
      else if (value._list$_contents.length === 0) {
        if (!_this._inspect)
          throw A.wrapException(A.SassScriptException$("() isn't a valid CSS value.", null));
        _this._serialize$_buffer.write$1(0, "()");
        return;
      }
      t2 = _this._inspect;
      if (t2)
        if (value._list$_contents.length === 1) {
          t3 = value._separator;
          t3 = t3 === B.ListSeparator_rXA || t3 === B.ListSeparator_zg9;
          singleton = t3;
        } else
          singleton = false;
      else
        singleton = false;
      if (singleton && !t1)
        _this._serialize$_buffer.writeCharCode$1(40);
      t3 = value._list$_contents;
      t3 = t2 ? t3 : new A.WhereIterable(t3, new A._SerializeVisitor_visitList_closure(), A._arrayInstanceType(t3)._eval$1("WhereIterable<1>"));
      t4 = value._separator;
      t5 = _this._separatorString$1(t4);
      _this._writeBetween$3(t3, t5, t2 ? new A._SerializeVisitor_visitList_closure0(_this, value) : new A._SerializeVisitor_visitList_closure1(_this));
      if (singleton) {
        t2 = _this._serialize$_buffer;
        t2.write$1(0, t4.separator);
        if (!t1)
          t2.writeCharCode$1(41);
      }
      if (t1)
        _this._serialize$_buffer.writeCharCode$1(93);
    },
    _separatorString$1(separator) {
      var t1;
      $label0$0: {
        if (B.ListSeparator_rXA === separator) {
          t1 = this._style === B.OutputStyle_1 ? "," : ", ";
          break $label0$0;
        }
        if (B.ListSeparator_zg9 === separator) {
          t1 = this._style === B.OutputStyle_1 ? "/" : " / ";
          break $label0$0;
        }
        if (B.ListSeparator_EVt === separator) {
          t1 = " ";
          break $label0$0;
        }
        t1 = "";
        break $label0$0;
      }
      return t1;
    },
    _elementNeedsParens$2(separator, value) {
      var t1;
      $label1$1: {
        if (value instanceof A.SassList && value._list$_contents.length > 1 && !value._hasBrackets) {
          $label0$0: {
            if (B.ListSeparator_rXA === separator) {
              t1 = value._separator === B.ListSeparator_rXA;
              break $label0$0;
            }
            if (B.ListSeparator_zg9 === separator) {
              t1 = value._separator;
              t1 = t1 === B.ListSeparator_rXA || t1 === B.ListSeparator_zg9;
              break $label0$0;
            }
            t1 = value._separator !== B.ListSeparator_undecided_null_undecided;
            break $label0$0;
          }
          break $label1$1;
        }
        t1 = false;
        break $label1$1;
      }
      return t1;
    },
    visitMap$1(map) {
      var t1, t2, _this = this;
      if (!_this._inspect)
        throw A.wrapException(A.SassScriptException$(map.toString$0(0) + " isn't a valid CSS value.", null));
      t1 = _this._serialize$_buffer;
      t1.writeCharCode$1(40);
      t2 = map._map$_contents;
      _this._writeBetween$3(t2.get$entries(t2), ", ", new A._SerializeVisitor_visitMap_closure(_this));
      t1.writeCharCode$1(41);
    },
    _writeMapElement$1(value) {
      var needsParens = value instanceof A.SassList && value._separator === B.ListSeparator_rXA && !value._hasBrackets;
      if (needsParens)
        this._serialize$_buffer.writeCharCode$1(40);
      value.accept$1(this);
      if (needsParens)
        this._serialize$_buffer.writeCharCode$1(41);
    },
    visitNumber$1(value) {
      var before, after, t1, _1_0, first, _this = this, _null = null,
        _0_0 = value.asSlash;
      if (type$.Record_2_nullable_Object_and_nullable_Object._is(_0_0)) {
        before = _0_0._0;
        after = _0_0._1;
        t1 = true;
      } else {
        after = _null;
        before = after;
        t1 = false;
      }
      if (t1) {
        _this.visitNumber$1(before);
        _this._serialize$_buffer.writeCharCode$1(47);
        _this.visitNumber$1(after);
        return;
      }
      t1 = value._number$_value;
      if (!isFinite(t1)) {
        _this.visitCalculation$1(new A.SassCalculation("calc", A.List_List$unmodifiable(A._setArrayType([value], type$.JSArray_Object), type$.Object)));
        return;
      }
      _this._writeNumber$1(t1);
      if (!_this._inspect) {
        if (value.get$hasComplexUnits())
          throw A.wrapException(A.SassScriptException$(value.toString$0(0) + " isn't a valid CSS value.", _null));
        _1_0 = value.get$numeratorUnits(value);
        if (_1_0.length === 1) {
          first = _1_0[0];
          t1 = true;
        } else {
          first = _null;
          t1 = false;
        }
        if (t1)
          _this._serialize$_buffer.write$1(0, first);
      } else
        _this._serialize$_buffer.write$1(0, value.get$unitString());
    },
    _writeNumber$1(number) {
      var integer, t1, text, _this = this,
        _0_0 = A.fuzzyAsInt(number);
      if (_0_0 != null) {
        integer = _0_0;
        t1 = true;
      } else {
        integer = null;
        t1 = false;
      }
      if (t1) {
        _this._serialize$_buffer.write$1(0, _this._removeExponent$1(J.toString$0$(integer)));
        return;
      }
      text = _this._removeExponent$1(B.JSNumber_methods.toString$0(number));
      if (text.length < 12) {
        if (_this._style === B.OutputStyle_1 && text.charCodeAt(0) === 48)
          text = B.JSString_methods.substring$1(text, 1);
        _this._serialize$_buffer.write$1(0, text);
        return;
      }
      _this._writeRounded$1(text);
    },
    _removeExponent$1(text) {
      var buffer, t2, t3, additionalZeroes,
        negative = text.charCodeAt(0) === 45,
        exponent = A._Cell$(),
        t1 = text.length,
        i = 0;
      while (true) {
        if (!(i < t1)) {
          buffer = null;
          break;
        }
        c$0: {
          if (text.charCodeAt(i) !== 101)
            break c$0;
          buffer = new A.StringBuffer("");
          t2 = buffer._contents = "" + A.Primitives_stringFromCharCode(text.charCodeAt(0));
          if (negative) {
            t2 += A.Primitives_stringFromCharCode(text.charCodeAt(1));
            buffer._contents = t2;
            if (i > 3)
              buffer._contents = t2 + B.JSString_methods.substring$2(text, 3, i);
          } else if (i > 2)
            buffer._contents = t2 + B.JSString_methods.substring$2(text, 2, i);
          exponent._value = A.int_parse(B.JSString_methods.substring$2(text, i + 1, t1), null);
          break;
        }
        ++i;
      }
      if (buffer == null)
        return text;
      if (exponent._readLocal$0() > 0) {
        t1 = exponent._readLocal$0();
        t2 = buffer._contents;
        t3 = negative ? 1 : 0;
        additionalZeroes = t1 - (t2.length - 1 - t3);
        for (t1 = t2, i = 0; i < additionalZeroes; ++i)
          t1 = buffer._contents += A.Primitives_stringFromCharCode(48);
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      } else {
        negative = text.charCodeAt(0) === 45;
        t1 = (negative ? "" + A.Primitives_stringFromCharCode(45) : "") + "0.";
        t2 = exponent.__late_helper$_name;
        i = -1;
        while (true) {
          t3 = exponent._value;
          if (t3 === exponent)
            A.throwExpression(A.LateError$localNI(t2));
          if (!(i > t3))
            break;
          t1 += A.Primitives_stringFromCharCode(48);
          --i;
        }
        if (negative) {
          t2 = buffer._contents;
          t2 = B.JSString_methods.substring$1(t2.charCodeAt(0) == 0 ? t2 : t2, 1);
        } else
          t2 = buffer;
        t2 = t1 + A.S(t2);
        return t2.charCodeAt(0) == 0 ? t2 : t2;
      }
    },
    _writeRounded$1(text) {
      var t1, digits, negative, textIndex, digitsIndex, textIndex0, codeUnit, digitsIndex0, indexAfterPrecision, digitsIndex1, newDigit, writtenIndex, t2, _this = this;
      if (B.JSString_methods.endsWith$1(text, ".0")) {
        _this._serialize$_buffer.write$1(0, B.JSString_methods.substring$2(text, 0, text.length - 2));
        return;
      }
      t1 = text.length;
      digits = new Uint8Array(t1 + 1);
      negative = text.charCodeAt(0) === 45;
      textIndex = negative ? 1 : 0;
      for (digitsIndex = 1; true; textIndex = textIndex0, digitsIndex = digitsIndex0) {
        if (textIndex === t1) {
          _this._serialize$_buffer.write$1(0, text);
          return;
        }
        textIndex0 = textIndex + 1;
        codeUnit = text.charCodeAt(textIndex);
        if (codeUnit === 46) {
          textIndex = textIndex0;
          break;
        }
        digitsIndex0 = digitsIndex + 1;
        digits[digitsIndex] = codeUnit - 48;
      }
      indexAfterPrecision = textIndex + 10;
      if (indexAfterPrecision >= t1) {
        _this._serialize$_buffer.write$1(0, text);
        return;
      }
      for (digitsIndex0 = digitsIndex; textIndex < indexAfterPrecision; textIndex = textIndex0, digitsIndex0 = digitsIndex1) {
        digitsIndex1 = digitsIndex0 + 1;
        textIndex0 = textIndex + 1;
        digits[digitsIndex0] = text.charCodeAt(textIndex) - 48;
      }
      if (text.charCodeAt(textIndex) - 48 >= 5)
        for (; true; digitsIndex0 = digitsIndex1) {
          digitsIndex1 = digitsIndex0 - 1;
          newDigit = digits[digitsIndex1] + 1;
          digits[digitsIndex1] = newDigit;
          if (newDigit !== 10)
            break;
        }
      for (; digitsIndex0 < digitsIndex; ++digitsIndex0)
        digits[digitsIndex0] = 0;
      while (true) {
        t1 = digitsIndex0 > digitsIndex;
        if (!(t1 && digits[digitsIndex0 - 1] === 0))
          break;
        --digitsIndex0;
      }
      if (digitsIndex0 === 2 && digits[0] === 0 && digits[1] === 0) {
        _this._serialize$_buffer.writeCharCode$1(48);
        return;
      }
      if (negative)
        _this._serialize$_buffer.writeCharCode$1(45);
      if (digits[0] === 0)
        writtenIndex = _this._style === B.OutputStyle_1 && digits[1] === 0 ? 2 : 1;
      else
        writtenIndex = 0;
      for (t2 = _this._serialize$_buffer; writtenIndex < digitsIndex; ++writtenIndex)
        t2.writeCharCode$1(48 + digits[writtenIndex]);
      if (t1) {
        t2.writeCharCode$1(46);
        for (; writtenIndex < digitsIndex0; ++writtenIndex)
          t2.writeCharCode$1(48 + digits[writtenIndex]);
      }
    },
    _visitQuotedString$2$forceDoubleQuote(string, forceDoubleQuote) {
      var t1, includesSingleQuote, includesDoubleQuote, i, char, _1_2, _1_4, _0_0, newIndex, t2, quote, _this = this,
        buffer = forceDoubleQuote ? _this._serialize$_buffer : new A.StringBuffer("");
      if (forceDoubleQuote)
        buffer.writeCharCode$1(34);
      for (t1 = string.length, includesSingleQuote = false, includesDoubleQuote = false, i = 0; i < t1; ++i) {
        char = string.charCodeAt(i);
        _1_2 = A._InitializedCell$(new A._SerializeVisitor__visitQuotedString_closure(char));
        _1_4 = A._InitializedCell$(new A._SerializeVisitor__visitQuotedString_closure0(char));
        if (_1_2._readFinal$0() && forceDoubleQuote) {
          buffer.writeCharCode$1(39);
          continue;
        }
        if (_1_2._readFinal$0() && includesDoubleQuote) {
          _this._visitQuotedString$2$forceDoubleQuote(string, true);
          return;
        }
        if (_1_2._readFinal$0()) {
          buffer.writeCharCode$1(39);
          includesSingleQuote = true;
          continue;
        }
        if (_1_4._readFinal$0() && forceDoubleQuote) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(34);
          continue;
        }
        if (_1_4._readFinal$0() && includesSingleQuote) {
          _this._visitQuotedString$2$forceDoubleQuote(string, true);
          return;
        }
        if (_1_4._readFinal$0()) {
          buffer.writeCharCode$1(34);
          includesDoubleQuote = true;
          continue;
        }
        if (0 === char || 1 === char || 2 === char || 3 === char || 4 === char || 5 === char || 6 === char || 7 === char || 8 === char || 10 === char || 11 === char || 12 === char || 13 === char || 14 === char || 15 === char || 16 === char || 17 === char || 18 === char || 19 === char || 20 === char || 21 === char || 22 === char || 23 === char || 24 === char || 25 === char || 26 === char || 27 === char || 28 === char || 29 === char || 30 === char || 31 === char) {
          _this._writeEscape$4(buffer, char, string, i);
          continue;
        }
        if (92 === char) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(92);
          continue;
        }
        _0_0 = _this._tryPrivateUseCharacter$4(buffer, char, string, i);
        if (_0_0 != null) {
          newIndex = _0_0;
          t2 = true;
        } else {
          newIndex = null;
          t2 = false;
        }
        if (t2)
          i = newIndex;
        else
          buffer.writeCharCode$1(char);
      }
      if (forceDoubleQuote)
        buffer.writeCharCode$1(34);
      else {
        quote = includesDoubleQuote ? 39 : 34;
        t1 = _this._serialize$_buffer;
        t1.writeCharCode$1(quote);
        t1.write$1(0, buffer);
        t1.writeCharCode$1(quote);
      }
    },
    _visitQuotedString$1(string) {
      return this._visitQuotedString$2$forceDoubleQuote(string, false);
    },
    _visitUnquotedString$1(string) {
      var t1, t2, afterNewline, i, _1_0, _0_0, newIndex, t3;
      for (t1 = string.length, t2 = this._serialize$_buffer, afterNewline = false, i = 0; i < t1; ++i) {
        _1_0 = string.charCodeAt(i);
        if (10 === _1_0) {
          t2.writeCharCode$1(32);
          afterNewline = true;
          continue;
        }
        if (32 === _1_0) {
          if (!afterNewline)
            t2.writeCharCode$1(32);
          continue;
        }
        _0_0 = this._tryPrivateUseCharacter$4(t2, _1_0, string, i);
        if (_0_0 != null) {
          newIndex = _0_0;
          t3 = true;
        } else {
          newIndex = null;
          t3 = false;
        }
        if (t3)
          i = newIndex;
        else
          t2.writeCharCode$1(_1_0);
        afterNewline = false;
      }
    },
    _tryPrivateUseCharacter$4(buffer, codeUnit, string, i) {
      var t1;
      if (this._style === B.OutputStyle_1)
        return null;
      if (codeUnit >= 57344 && codeUnit <= 63743) {
        this._writeEscape$4(buffer, codeUnit, string, i);
        return i;
      }
      if (codeUnit >>> 7 === 439 && string.length > i + 1) {
        t1 = i + 1;
        this._writeEscape$4(buffer, 65536 + ((codeUnit & 1023) << 10) + (string.charCodeAt(t1) & 1023), string, t1);
        return t1;
      }
      return null;
    },
    _writeEscape$4(buffer, character, string, i) {
      var t1, next;
      buffer.writeCharCode$1(92);
      buffer.write$1(0, B.JSInt_methods.toRadixString$1(character, 16));
      t1 = i + 1;
      if (string.length === t1)
        return;
      next = string.charCodeAt(t1);
      if (A.CharacterExtension_get_isHex(next) || 32 === next || 9 === next)
        buffer.writeCharCode$1(32);
    },
    visitAttributeSelector$1(attribute) {
      var _0_0, value, t2,
        t1 = this._serialize$_buffer;
      t1.writeCharCode$1(91);
      t1.write$1(0, attribute.name);
      _0_0 = attribute.value;
      if (_0_0 != null) {
        value = _0_0;
        t2 = true;
      } else {
        value = null;
        t2 = false;
      }
      if (t2) {
        t1.write$1(0, attribute.op);
        if (A.Parser_isIdentifier(value) && !J.startsWith$1$s(value, "--")) {
          t1.write$1(0, value);
          t2 = attribute.modifier;
          if (t2 != null)
            t1.writeCharCode$1(32);
        } else {
          this._visitQuotedString$1(value);
          t2 = attribute.modifier;
          if (t2 != null)
            if (this._style !== B.OutputStyle_1)
              t1.writeCharCode$1(32);
        }
        A.NullableExtension_andThen(t2, t1.get$write(t1));
      }
      t1.writeCharCode$1(93);
    },
    visitClassSelector$1(klass) {
      var t1 = this._serialize$_buffer;
      t1.writeCharCode$1(46);
      t1.write$1(0, klass.name);
    },
    visitComplexSelector$1(complex) {
      var t2, t3, t4, t5, t6, i, component, t7, t8, t9, _this = this,
        t1 = complex.leadingCombinators;
      _this._writeCombinators$1(t1);
      if (t1.length >= 1 && complex.components.length >= 1)
        if (_this._style !== B.OutputStyle_1)
          _this._serialize$_buffer.writeCharCode$1(32);
      for (t1 = complex.components, t2 = t1.length, t3 = t2 - 1, t4 = _this._serialize$_buffer, t5 = _this._style === B.OutputStyle_1, t6 = !t5, i = 0; i < t2; ++i) {
        component = t1[i];
        _this.visitCompoundSelector$1(component.selector);
        t7 = component.combinators;
        t8 = t7.length === 0;
        if (!t8)
          if (t6)
            t4.writeCharCode$1(32);
        t9 = t5 ? "" : " ";
        _this._writeBetween$3(t7, t9, t4.get$write(t4));
        if (i !== t3)
          t7 = !t5 || t8;
        else
          t7 = false;
        if (t7)
          t4.writeCharCode$1(32);
      }
    },
    _writeCombinators$1(combinators) {
      var t1 = this._style === B.OutputStyle_1 ? "" : " ",
        t2 = this._serialize$_buffer;
      return this._writeBetween$3(combinators, t1, t2.get$write(t2));
    },
    visitCompoundSelector$1(compound) {
      var t2, t3, _i,
        t1 = this._serialize$_buffer,
        start = t1.get$length(t1);
      for (t2 = compound.components, t3 = t2.length, _i = 0; _i < t3; ++_i)
        t2[_i].accept$1(this);
      if (t1.get$length(t1) === start)
        t1.writeCharCode$1(42);
    },
    visitIDSelector$1(id) {
      var t1 = this._serialize$_buffer;
      t1.writeCharCode$1(35);
      t1.write$1(0, id.name);
    },
    visitSelectorList$1(list) {
      var t1, t2, t3, first, t4, _this = this,
        complexes = list.components;
      for (t1 = J.get$iterator$ax(_this._inspect ? complexes : new A.WhereIterable(complexes, new A._SerializeVisitor_visitSelectorList_closure(), A._arrayInstanceType(complexes)._eval$1("WhereIterable<1>"))), t2 = _this._style !== B.OutputStyle_1, t3 = _this._serialize$_buffer, first = true; t1.moveNext$0();) {
        t4 = t1.get$current(t1);
        if (first)
          first = false;
        else {
          t3.writeCharCode$1(44);
          if (t4.lineBreak) {
            if (t2)
              t3.write$1(0, "\n");
            _this._writeIndentation$0();
          } else if (t2)
            t3.writeCharCode$1(32);
        }
        _this.visitComplexSelector$1(t4);
      }
    },
    visitParentSelector$1($parent) {
      var t1 = this._serialize$_buffer;
      t1.writeCharCode$1(38);
      A.NullableExtension_andThen($parent.suffix, t1.get$write(t1));
    },
    visitPlaceholderSelector$1(placeholder) {
      var t1 = this._serialize$_buffer;
      t1.writeCharCode$1(37);
      t1.write$1(0, placeholder.name);
    },
    visitPseudoSelector$1(pseudo) {
      var t2, t3,
        _0_4 = A._InitializedCell$(new A._SerializeVisitor_visitPseudoSelector_closure(pseudo)),
        t1 = pseudo.name;
      if ("not" === t1 && _0_4._readFinal$0() instanceof A.SelectorList && _0_4._readFinal$0().accept$1(B._IsInvisibleVisitor_true))
        return;
      t2 = this._serialize$_buffer;
      t2.writeCharCode$1(58);
      if (!pseudo.isSyntacticClass)
        t2.writeCharCode$1(58);
      t2.write$1(0, t1);
      t1 = pseudo.argument;
      t3 = t1 == null;
      if (t3 && pseudo.selector == null)
        return;
      t2.writeCharCode$1(40);
      if (!t3) {
        t2.write$1(0, t1);
        if (pseudo.selector != null)
          t2.writeCharCode$1(32);
      }
      A.NullableExtension_andThen(pseudo.selector, this.get$visitSelectorList());
      t2.writeCharCode$1(41);
    },
    visitTypeSelector$1(type) {
      this._serialize$_buffer.write$1(0, type.name);
    },
    visitUniversalSelector$1(universal) {
      var t2,
        t1 = universal.namespace;
      if (t1 != null) {
        t2 = this._serialize$_buffer;
        t2.write$1(0, t1);
        t2.writeCharCode$1(124);
      }
      this._serialize$_buffer.writeCharCode$1(42);
    },
    _serialize$_write$1(value) {
      return this._serialize$_buffer.forSpan$2(value.span, new A._SerializeVisitor__write_closure(this, value));
    },
    _serialize$_visitChildren$1($parent) {
      var t2, t3, t4, t5, t6, t7, prePrevious, previous, t8, previous0, t9, savedIndentation, _this = this,
        t1 = _this._serialize$_buffer;
      t1.writeCharCode$1(123);
      for (t2 = $parent.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = _this._style === B.OutputStyle_1, t4 = !t3, t5 = _this.get$_requiresSemicolon(), t6 = !_this._inspect, t7 = A._instanceType(t2)._precomputed1, prePrevious = null, previous = null; t2.moveNext$0();) {
        t8 = t2.__internal$_current;
        previous0 = t8 == null ? t7._as(t8) : t8;
        if (t6)
          t8 = t3 ? previous0.accept$1(B._IsInvisibleVisitor_true_true) : previous0.accept$1(B._IsInvisibleVisitor_true_false);
        else
          t8 = false;
        if (t8)
          continue;
        t8 = previous == null;
        t9 = t8 ? null : t5.call$1(previous);
        if (t9 == null ? false : t9)
          t1.writeCharCode$1(59);
        if (_this._isTrailingComment$2(previous0, t8 ? $parent : previous)) {
          if (t4)
            t1.writeCharCode$1(32);
          savedIndentation = _this._indentation;
          _this._indentation = 0;
          new A._SerializeVisitor__visitChildren_closure(_this, previous0).call$0();
          _this._indentation = savedIndentation;
        } else {
          if (t4)
            t1.write$1(0, "\n");
          ++_this._indentation;
          new A._SerializeVisitor__visitChildren_closure0(_this, previous0).call$0();
          --_this._indentation;
        }
        prePrevious = previous;
        previous = previous0;
      }
      if (previous != null) {
        if ((type$.CssParentNode._is(previous) ? previous.get$isChildless() : !(previous instanceof A.ModifiableCssComment)) && t4)
          t1.writeCharCode$1(59);
        if (prePrevious == null && _this._isTrailingComment$2(previous, $parent)) {
          if (t4)
            t1.writeCharCode$1(32);
        } else {
          _this._writeLineFeed$0();
          _this._writeIndentation$0();
        }
      }
      t1.writeCharCode$1(125);
    },
    _requiresSemicolon$1(node) {
      return type$.CssParentNode._is(node) ? node.get$isChildless() : !(node instanceof A.ModifiableCssComment);
    },
    _isTrailingComment$2(node, previous) {
      var t1, t2, t3, searchFrom, endOffset, t4, span;
      if (this._style === B.OutputStyle_1)
        return false;
      if (!(node instanceof A.ModifiableCssComment))
        return false;
      t1 = node.span;
      t2 = t1.get$sourceUrl(t1);
      t3 = previous.get$span(previous);
      if (!J.$eq$(t2, t3.get$sourceUrl(t3)))
        return false;
      t2 = previous.get$span(previous);
      if (!(J.$eq$(t2.get$file(t2).url, t1.get$file(t1).url) && t2.get$start(t2).offset <= t1.get$start(t1).offset && t2.get$end(t2).offset >= t1.get$end(t1).offset)) {
        t1 = t1.get$start(t1);
        t1 = t1.file.getLine$1(t1.offset);
        t2 = previous.get$span(previous);
        t2 = t2.get$end(t2);
        return t1 === t2.file.getLine$1(t2.offset);
      }
      t2 = t1.get$start(t1);
      t3 = previous.get$span(previous);
      searchFrom = t2.offset - t3.get$start(t3).offset - 1;
      if (searchFrom < 0)
        return false;
      endOffset = Math.max(0, B.JSString_methods.lastIndexOf$2(previous.get$span(previous).get$text(), "{", searchFrom));
      t2 = previous.get$span(previous);
      t2 = t2.get$file(t2);
      t3 = previous.get$span(previous);
      t3 = t3.get$start(t3);
      t4 = previous.get$span(previous);
      span = t2.span$2(0, t3.offset, t4.get$start(t4).offset + endOffset);
      t1 = t1.get$start(t1);
      t1 = t1.file.getLine$1(t1.offset);
      t4 = A.FileLocation$_(span.file, span._end);
      return t1 === t4.file.getLine$1(t4.offset);
    },
    _writeLineFeed$0() {
      if (this._style !== B.OutputStyle_1)
        this._serialize$_buffer.write$1(0, "\n");
    },
    _writeIndentation$0() {
      var _this = this;
      if (_this._style === B.OutputStyle_1)
        return;
      _this._writeTimes$2(_this._indentCharacter, _this._indentation * _this._indentWidth);
    },
    _writeTimes$2(char, times) {
      var t1, i;
      for (t1 = this._serialize$_buffer, i = 0; i < times; ++i)
        t1.writeCharCode$1(char);
    },
    _writeBetween$1$3(iterable, text, callback) {
      var t1, t2, first, value;
      for (t1 = J.get$iterator$ax(iterable), t2 = this._serialize$_buffer, first = true; t1.moveNext$0();) {
        value = t1.get$current(t1);
        if (first)
          first = false;
        else
          t2.write$1(0, text);
        callback.call$1(value);
      }
    },
    _writeBetween$3(iterable, text, callback) {
      return this._writeBetween$1$3(iterable, text, callback, type$.dynamic);
    }
  };
  A._SerializeVisitor_visitCssComment_closure.prototype = {
    call$0() {
      var t2, t3, _0_0, minimumIndentation, t4,
        t1 = this.$this;
      if (t1._style === B.OutputStyle_1 && this.node.text.charCodeAt(2) !== 33)
        return;
      t2 = this.node;
      t3 = t2.text;
      if (B.JSString_methods.startsWith$1(t3, A.RegExp_RegExp("/\\*# source(Mapping)?URL=", false)))
        return;
      _0_0 = t1._minimumIndentation$1(t3);
      if (_0_0 != null) {
        minimumIndentation = _0_0;
        t4 = true;
      } else {
        minimumIndentation = null;
        t4 = false;
      }
      if (t4) {
        t2 = t2.span;
        t2 = t2.get$start(t2);
        t2 = t2.file.getColumn$1(t2.offset);
        minimumIndentation = Math.min(A.checkNum(minimumIndentation), t2);
        t1._writeIndentation$0();
        t1._writeWithIndent$2(t3, minimumIndentation);
      } else {
        t1._writeIndentation$0();
        t1._serialize$_buffer.write$1(0, t3);
      }
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssAtRule_closure.prototype = {
    call$0() {
      var t3, _0_0, value,
        t1 = this.$this,
        t2 = t1._serialize$_buffer;
      t2.writeCharCode$1(64);
      t3 = this.node;
      t1._serialize$_write$1(t3.name);
      _0_0 = t3.value;
      if (_0_0 != null) {
        value = _0_0;
        t3 = true;
      } else {
        value = null;
        t3 = false;
      }
      if (t3) {
        t2.writeCharCode$1(32);
        t1._serialize$_write$1(value);
      }
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssMediaRule_closure.prototype = {
    call$0() {
      var t3, firstQuery, t4, t5,
        t1 = this.$this,
        t2 = t1._serialize$_buffer;
      t2.write$1(0, "@media");
      t3 = this.node.queries;
      firstQuery = B.JSArray_methods.get$first(t3);
      t4 = t1._style === B.OutputStyle_1;
      if (t4)
        if (firstQuery.modifier == null)
          if (firstQuery.type == null) {
            t5 = firstQuery.conditions;
            t5 = t5.length === 1 && J.startsWith$1$s(B.JSArray_methods.get$first(t5), "(not ");
          } else
            t5 = true;
        else
          t5 = true;
      else
        t5 = true;
      if (t5)
        t2.writeCharCode$1(32);
      t2 = t4 ? "," : ", ";
      t1._writeBetween$3(t3, t2, t1.get$_visitMediaQuery());
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssImport_closure.prototype = {
    call$0() {
      var t3, t4, _0_0, modifiers,
        t1 = this.$this,
        t2 = t1._serialize$_buffer;
      t2.write$1(0, "@import");
      t3 = t1._style !== B.OutputStyle_1;
      if (t3)
        t2.writeCharCode$1(32);
      t4 = this.node;
      t2.forSpan$2(t4.url.span, new A._SerializeVisitor_visitCssImport__closure(t1, t4));
      _0_0 = t4.modifiers;
      if (_0_0 != null) {
        modifiers = _0_0;
        t1 = true;
      } else {
        modifiers = null;
        t1 = false;
      }
      if (t1) {
        if (t3)
          t2.writeCharCode$1(32);
        t2.write$1(0, modifiers);
      }
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssImport__closure.prototype = {
    call$0() {
      return this.$this._writeImportUrl$1(this.node.url.value);
    },
    $signature: 0
  };
  A._SerializeVisitor_visitCssKeyframeBlock_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._style === B.OutputStyle_1 ? "," : ", ",
        t3 = t1._serialize$_buffer;
      return t1._writeBetween$3(this.node.selector.value, t2, t3.get$write(t3));
    },
    $signature: 0
  };
  A._SerializeVisitor_visitCssStyleRule_closure.prototype = {
    call$0() {
      return this.$this.visitSelectorList$1(this.node._style_rule$_selector._box$_inner.value);
    },
    $signature: 0
  };
  A._SerializeVisitor_visitCssSupportsRule_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._serialize$_buffer;
      t2.write$1(0, "@supports");
      if (!(t1._style === B.OutputStyle_1 && J.codeUnitAt$1$s(this.node.condition.value, 0) === 40))
        t2.writeCharCode$1(32);
      t1._serialize$_write$1(this.node.condition);
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssDeclaration_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.node;
      if (t1._style === B.OutputStyle_1)
        t1._writeFoldedValue$1(t2);
      else
        t1._writeReindentedValue$1(t2);
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssDeclaration_closure0.prototype = {
    call$0() {
      return this.node.value.value.accept$1(this.$this);
    },
    $signature: 0
  };
  A._SerializeVisitor__writeCalculationValue_closure.prototype = {
    call$0() {
      return !isFinite(this._2_0._number$_value);
    },
    $signature: 1
  };
  A._SerializeVisitor_visitList_closure.prototype = {
    call$1(element) {
      return !element.get$isBlank();
    },
    $signature: 79
  };
  A._SerializeVisitor_visitList_closure0.prototype = {
    call$1(element) {
      var t1 = this.$this,
        needsParens = t1._elementNeedsParens$2(this.value._separator, element);
      if (needsParens)
        t1._serialize$_buffer.writeCharCode$1(40);
      element.accept$1(t1);
      if (needsParens)
        t1._serialize$_buffer.writeCharCode$1(41);
    },
    $signature: 63
  };
  A._SerializeVisitor_visitList_closure1.prototype = {
    call$1(element) {
      element.accept$1(this.$this);
    },
    $signature: 63
  };
  A._SerializeVisitor_visitMap_closure.prototype = {
    call$1(entry) {
      var t1 = this.$this;
      t1._writeMapElement$1(entry.key);
      t1._serialize$_buffer.write$1(0, ": ");
      t1._writeMapElement$1(entry.value);
    },
    $signature: 647
  };
  A._SerializeVisitor__visitQuotedString_closure.prototype = {
    call$0() {
      return 39 === this._1_0;
    },
    $signature: 1
  };
  A._SerializeVisitor__visitQuotedString_closure0.prototype = {
    call$0() {
      return 34 === this._1_0;
    },
    $signature: 1
  };
  A._SerializeVisitor_visitSelectorList_closure.prototype = {
    call$1(complex) {
      return !complex.accept$1(B._IsInvisibleVisitor_true);
    },
    $signature: 19
  };
  A._SerializeVisitor_visitPseudoSelector_closure.prototype = {
    call$0() {
      return this._0_0.selector;
    },
    $signature: 75
  };
  A._SerializeVisitor__write_closure.prototype = {
    call$0() {
      return this.$this._serialize$_buffer.write$1(0, this.value.value);
    },
    $signature: 0
  };
  A._SerializeVisitor__visitChildren_closure.prototype = {
    call$0() {
      return this.child.accept$1(this.$this);
    },
    $signature: 0
  };
  A._SerializeVisitor__visitChildren_closure0.prototype = {
    call$0() {
      this.child.accept$1(this.$this);
    },
    $signature: 0
  };
  A.OutputStyle.prototype = {
    _enumToString$0() {
      return "OutputStyle." + this._name;
    }
  };
  A.LineFeed.prototype = {
    _enumToString$0() {
      return "LineFeed." + this._name;
    },
    toString$0(_) {
      return "lf";
    }
  };
  A.StatementSearchVisitor.prototype = {
    visitAtRootRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitAtRule$1(node) {
      return A.NullableExtension_andThen(node.children, this.get$visitChildren());
    },
    visitContentBlock$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitContentRule$1(node) {
      return null;
    },
    visitDebugRule$1(node) {
      return null;
    },
    visitDeclaration$1(node) {
      return A.NullableExtension_andThen(node.children, this.get$visitChildren());
    },
    visitEachRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitErrorRule$1(node) {
      return null;
    },
    visitExtendRule$1(node) {
      return null;
    },
    visitForRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitForwardRule$1(node) {
      return null;
    },
    visitFunctionRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitIfRule$1(node) {
      var t1 = A.IterableExtension_search(node.clauses, new A.StatementSearchVisitor_visitIfRule_closure(this));
      return t1 == null ? A.NullableExtension_andThen(node.lastClause, new A.StatementSearchVisitor_visitIfRule_closure0(this)) : t1;
    },
    visitImportRule$1(node) {
      return null;
    },
    visitIncludeRule$1(node) {
      return A.NullableExtension_andThen(node.content, this.get$visitContentBlock());
    },
    visitLoudComment$1(node) {
      return null;
    },
    visitMediaRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitMixinRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitReturnRule$1(node) {
      return null;
    },
    visitSilentComment$1(node) {
      return null;
    },
    visitStyleRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitStylesheet$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitSupportsRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitUseRule$1(node) {
      return null;
    },
    visitVariableDeclaration$1(node) {
      return null;
    },
    visitWarnRule$1(node) {
      return null;
    },
    visitWhileRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitChildren$1(children) {
      return A.IterableExtension_search(children, new A.StatementSearchVisitor_visitChildren_closure(this));
    }
  };
  A.StatementSearchVisitor_visitIfRule_closure.prototype = {
    call$1(clause) {
      return A.IterableExtension_search(clause.children, new A.StatementSearchVisitor_visitIfRule__closure0(this.$this));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor.T?(IfClause)");
    }
  };
  A.StatementSearchVisitor_visitIfRule__closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor.T?(Statement)");
    }
  };
  A.StatementSearchVisitor_visitIfRule_closure0.prototype = {
    call$1(lastClause) {
      return A.IterableExtension_search(lastClause.children, new A.StatementSearchVisitor_visitIfRule__closure(this.$this));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor.T?(ElseClause)");
    }
  };
  A.StatementSearchVisitor_visitIfRule__closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor.T?(Statement)");
    }
  };
  A.StatementSearchVisitor_visitChildren_closure.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor.T?(Statement)");
    }
  };
  A.Entry.prototype = {
    compareTo$1(_, other) {
      var t1, t2,
        res = this.target.compareTo$1(0, other.target);
      if (res !== 0)
        return res;
      t1 = this.source;
      t2 = other.source;
      res = B.JSString_methods.compareTo$1(J.toString$0$(t1.file.url), J.toString$0$(t2.file.url));
      if (res !== 0)
        return res;
      return t1.compareTo$1(0, t2);
    },
    $isComparable: 1
  };
  A.Mapping.prototype = {};
  A.SingleMapping.prototype = {
    toJson$1$includeSourceContents(includeSourceContents) {
      var t1, t2, line, column, srcLine, srcColumn, srcUrlId, srcNameId, first, _i, entry, nextLine, i, t3, t4, column0, t5, newUrlId, srcLine0, srcColumn0, srcNameId0, result, _this = this,
        buff = new A.StringBuffer("");
      for (t1 = _this.lines, t2 = t1.length, line = 0, column = 0, srcLine = 0, srcColumn = 0, srcUrlId = 0, srcNameId = 0, first = true, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        entry = t1[_i];
        nextLine = entry.line;
        if (nextLine > line) {
          for (i = line; i < nextLine; ++i)
            buff._contents += ";";
          line = nextLine;
          column = 0;
          first = true;
        }
        for (t3 = J.get$iterator$ax(entry.entries); t3.moveNext$0(); column = column0, first = false) {
          t4 = t3.get$current(t3);
          if (!first)
            buff._contents += ",";
          column0 = t4.column;
          t5 = A.encodeVlq(column0 - column);
          t5 = A.StringBuffer__writeAll(buff._contents, t5, "");
          buff._contents = t5;
          newUrlId = t4.sourceUrlId;
          t5 = A.StringBuffer__writeAll(t5, A.encodeVlq(newUrlId - srcUrlId), "");
          buff._contents = t5;
          srcLine0 = t4.sourceLine;
          t5 = A.StringBuffer__writeAll(t5, A.encodeVlq(srcLine0 - srcLine), "");
          buff._contents = t5;
          srcColumn0 = t4.sourceColumn;
          t5 = A.StringBuffer__writeAll(t5, A.encodeVlq(srcColumn0 - srcColumn), "");
          buff._contents = t5;
          srcNameId0 = t4.sourceNameId;
          if (srcNameId0 == null) {
            srcUrlId = newUrlId;
            srcColumn = srcColumn0;
            srcLine = srcLine0;
            continue;
          }
          buff._contents = A.StringBuffer__writeAll(t5, A.encodeVlq(srcNameId0 - srcNameId), "");
          srcNameId = srcNameId0;
          srcUrlId = newUrlId;
          srcColumn = srcColumn0;
          srcLine = srcLine0;
        }
      }
      t1 = _this.sourceRoot;
      if (t1 == null)
        t1 = "";
      t2 = buff._contents;
      result = A.LinkedHashMap_LinkedHashMap$_literal(["version", 3, "sourceRoot", t1, "sources", _this.urls, "names", _this.names, "mappings", t2.charCodeAt(0) == 0 ? t2 : t2], type$.String, type$.dynamic);
      t1 = _this.targetUrl;
      if (t1 != null)
        result.$indexSet(0, "file", t1);
      if (includeSourceContents) {
        t1 = _this.files;
        t2 = A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String?>");
        result.$indexSet(0, "sourcesContent", A.List_List$of(new A.MappedListIterable(t1, new A.SingleMapping_toJson_closure(), t2), true, t2._eval$1("ListIterable.E")));
      }
      _this.extensions.forEach$1(0, new A.SingleMapping_toJson_closure0(result));
      return result;
    },
    toJson$0() {
      return this.toJson$1$includeSourceContents(false);
    },
    toString$0(_) {
      var _this = this,
        t1 = A.getRuntimeTypeOfDartObject(_this).toString$0(0) + " : [" + "targetUrl: " + A.S(_this.targetUrl) + ", sourceRoot: " + A.S(_this.sourceRoot) + ", urls: " + A.S(_this.urls) + ", names: " + A.S(_this.names) + ", lines: " + A.S(_this.lines) + "]";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A.SingleMapping_SingleMapping$fromEntries_closure.prototype = {
    call$0() {
      return this.urls.__js_helper$_length;
    },
    $signature: 3
  };
  A.SingleMapping_SingleMapping$fromEntries_closure0.prototype = {
    call$0() {
      return this.sourceEntry.source.file;
    },
    $signature: 296
  };
  A.SingleMapping_SingleMapping$fromEntries_closure1.prototype = {
    call$1(i) {
      return this.files.$index(0, i);
    },
    $signature: 297
  };
  A.SingleMapping_toJson_closure.prototype = {
    call$1(file) {
      return file == null ? null : A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(file._decodedChars, 0, null), 0, null);
    },
    $signature: 298
  };
  A.SingleMapping_toJson_closure0.prototype = {
    call$2($name, value) {
      this.result.$indexSet(0, $name, value);
      return value;
    },
    $signature: 208
  };
  A.TargetLineEntry.prototype = {
    toString$0(_) {
      return A.getRuntimeTypeOfDartObject(this).toString$0(0) + ": " + this.line + " " + A.S(this.entries);
    }
  };
  A.TargetEntry.prototype = {
    toString$0(_) {
      var _this = this;
      return A.getRuntimeTypeOfDartObject(_this).toString$0(0) + ": (" + _this.column + ", " + _this.sourceUrlId + ", " + _this.sourceLine + ", " + _this.sourceColumn + ", " + A.S(_this.sourceNameId) + ")";
    }
  };
  A.SourceFile.prototype = {
    get$length(_) {
      return this._decodedChars.length;
    },
    get$lines() {
      return this._lineStarts.length;
    },
    SourceFile$decoded$2$url(decodedChars, url) {
      var t1, t2, t3, i, c, j;
      for (t1 = this._decodedChars, t2 = t1.length, t3 = this._lineStarts, i = 0; i < t2; ++i) {
        c = t1[i];
        if (c === 13) {
          j = i + 1;
          if (j >= t2 || t1[j] !== 10)
            c = 10;
        }
        if (c === 10)
          t3.push(i + 1);
      }
    },
    span$2(_, start, end) {
      return A._FileSpan$(this, start, end == null ? this._decodedChars.length : end);
    },
    span$1($receiver, start) {
      return this.span$2($receiver, start, null);
    },
    getLine$1(offset) {
      var t1, _this = this;
      if (offset < 0)
        throw A.wrapException(A.RangeError$("Offset may not be negative, was " + offset + "."));
      else if (offset > _this._decodedChars.length)
        throw A.wrapException(A.RangeError$("Offset " + offset + string$.x20must_n + _this.get$length(_this) + "."));
      t1 = _this._lineStarts;
      if (offset < B.JSArray_methods.get$first(t1))
        return -1;
      if (offset >= B.JSArray_methods.get$last(t1))
        return t1.length - 1;
      if (_this._isNearCachedLine$1(offset)) {
        t1 = _this._cachedLine;
        t1.toString;
        return t1;
      }
      return _this._cachedLine = _this._binarySearch$1(offset) - 1;
    },
    _isNearCachedLine$1(offset) {
      var t2, t3,
        t1 = this._cachedLine;
      if (t1 == null)
        return false;
      t2 = this._lineStarts;
      if (offset < t2[t1])
        return false;
      t3 = t2.length;
      if (t1 >= t3 - 1 || offset < t2[t1 + 1])
        return true;
      if (t1 >= t3 - 2 || offset < t2[t1 + 2]) {
        this._cachedLine = t1 + 1;
        return true;
      }
      return false;
    },
    _binarySearch$1(offset) {
      var min, half,
        t1 = this._lineStarts,
        max = t1.length - 1;
      for (min = 0; min < max;) {
        half = min + B.JSInt_methods._tdivFast$1(max - min, 2);
        if (t1[half] > offset)
          max = half;
        else
          min = half + 1;
      }
      return max;
    },
    getColumn$1(offset) {
      var line, lineStart, _this = this;
      if (offset < 0)
        throw A.wrapException(A.RangeError$("Offset may not be negative, was " + offset + "."));
      else if (offset > _this._decodedChars.length)
        throw A.wrapException(A.RangeError$("Offset " + offset + " must be not be greater than the number of characters in the file, " + _this.get$length(_this) + "."));
      line = _this.getLine$1(offset);
      lineStart = _this._lineStarts[line];
      if (lineStart > offset)
        throw A.wrapException(A.RangeError$("Line " + line + " comes after offset " + offset + "."));
      return offset - lineStart;
    },
    getOffset$1(line) {
      var t1, t2, result, t3;
      if (line < 0)
        throw A.wrapException(A.RangeError$("Line may not be negative, was " + line + "."));
      else {
        t1 = this._lineStarts;
        t2 = t1.length;
        if (line >= t2)
          throw A.wrapException(A.RangeError$("Line " + line + " must be less than the number of lines in the file, " + this.get$lines() + "."));
      }
      result = t1[line];
      if (result <= this._decodedChars.length) {
        t3 = line + 1;
        t1 = t3 < t2 && result >= t1[t3];
      } else
        t1 = true;
      if (t1)
        throw A.wrapException(A.RangeError$("Line " + line + " doesn't have 0 columns."));
      return result;
    }
  };
  A.FileLocation.prototype = {
    get$sourceUrl(_) {
      return this.file.url;
    },
    get$line() {
      return this.file.getLine$1(this.offset);
    },
    get$column() {
      return this.file.getColumn$1(this.offset);
    },
    FileLocation$_$2(file, offset) {
      var t2,
        t1 = this.offset;
      if (t1 < 0)
        throw A.wrapException(A.RangeError$("Offset may not be negative, was " + t1 + "."));
      else {
        t2 = this.file;
        if (t1 > t2._decodedChars.length)
          throw A.wrapException(A.RangeError$("Offset " + t1 + string$.x20must_n + t2.get$length(t2) + "."));
      }
    },
    pointSpan$0() {
      var t1 = this.offset;
      return A._FileSpan$(this.file, t1, t1);
    },
    get$offset() {
      return this.offset;
    }
  };
  A._FileSpan.prototype = {
    get$sourceUrl(_) {
      return this.file.url;
    },
    get$length(_) {
      return this._end - this._file$_start;
    },
    get$start(_) {
      return A.FileLocation$_(this.file, this._file$_start);
    },
    get$end(_) {
      return A.FileLocation$_(this.file, this._end);
    },
    get$text() {
      return A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(this.file._decodedChars, this._file$_start, this._end), 0, null);
    },
    get$context(_) {
      var _this = this,
        t1 = _this.file,
        endOffset = _this._end,
        endLine = t1.getLine$1(endOffset);
      if (t1.getColumn$1(endOffset) === 0 && endLine !== 0) {
        if (endOffset - _this._file$_start === 0)
          return endLine === t1._lineStarts.length - 1 ? "" : A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1._decodedChars, t1.getOffset$1(endLine), t1.getOffset$1(endLine + 1)), 0, null);
      } else
        endOffset = endLine === t1._lineStarts.length - 1 ? t1._decodedChars.length : t1.getOffset$1(endLine + 1);
      return A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1._decodedChars, t1.getOffset$1(t1.getLine$1(_this._file$_start)), endOffset), 0, null);
    },
    _FileSpan$3(file, _start, _end) {
      var t3,
        t1 = this._end,
        t2 = this._file$_start;
      if (t1 < t2)
        throw A.wrapException(A.ArgumentError$("End " + t1 + " must come after start " + t2 + ".", null));
      else {
        t3 = this.file;
        if (t1 > t3._decodedChars.length)
          throw A.wrapException(A.RangeError$("End " + t1 + string$.x20must_n + t3.get$length(t3) + "."));
        else if (t2 < 0)
          throw A.wrapException(A.RangeError$("Start may not be negative, was " + t2 + "."));
      }
    },
    compareTo$1(_, other) {
      var result;
      if (!(other instanceof A._FileSpan))
        return this.super$SourceSpanMixin$compareTo(0, other);
      result = B.JSInt_methods.compareTo$1(this._file$_start, other._file$_start);
      return result === 0 ? B.JSInt_methods.compareTo$1(this._end, other._end) : result;
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      if (!type$.FileSpan._is(other))
        return _this.super$SourceSpanMixin$$eq(0, other);
      if (!(other instanceof A._FileSpan))
        return _this.super$SourceSpanMixin$$eq(0, other) && J.$eq$(_this.file.url, other.get$sourceUrl(other));
      return _this._file$_start === other._file$_start && _this._end === other._end && J.$eq$(_this.file.url, other.file.url);
    },
    get$hashCode(_) {
      return A.Object_hash(this._file$_start, this._end, this.file.url, B.C_SentinelValue);
    },
    expand$1(_, other) {
      var t2, t3, _this = this,
        t1 = _this.file;
      if (!J.$eq$(t1.url, other.get$sourceUrl(other)))
        throw A.wrapException(A.ArgumentError$('Source URLs "' + A.S(_this.get$sourceUrl(_this)) + '" and  "' + A.S(other.get$sourceUrl(other)) + "\" don't match.", null));
      t2 = _this._file$_start;
      t3 = _this._end;
      if (other instanceof A._FileSpan)
        return A._FileSpan$(t1, Math.min(t2, other._file$_start), Math.max(t3, other._end));
      else
        return A._FileSpan$(t1, Math.min(t2, other.get$start(other).offset), Math.max(t3, other.get$end(other).offset));
    },
    $isFileSpan: 1,
    $isSourceSpanWithContext: 1,
    get$file(receiver) {
      return this.file;
    }
  };
  A.Highlighter.prototype = {
    highlight$0() {
      var t2, highlightsByColumn, t3, t4, i, line, lastLine, t5, t6, t7, t8, t9, t10, t11, index, primaryIdx, primary, _i, highlight, _this = this, _null = null,
        t1 = _this._lines;
      _this._writeFileStart$1(B.JSArray_methods.get$first(t1).url);
      t2 = _this._maxMultilineSpans;
      highlightsByColumn = A.List_List$filled(t2, _null, false, type$.nullable__Highlight);
      for (t3 = _this._highlighter$_buffer, t2 = t2 !== 0, t4 = _this._primaryColor, i = 0; i < t1.length; ++i) {
        line = t1[i];
        if (i > 0) {
          lastLine = t1[i - 1];
          t5 = lastLine.url;
          t6 = line.url;
          if (!J.$eq$(t5, t6)) {
            _this._writeSidebar$1$end($._glyphs.get$upEnd());
            t3._contents += "\n";
            _this._writeFileStart$1(t6);
          } else if (lastLine.number + 1 !== line.number) {
            _this._writeSidebar$1$text("...");
            t3._contents += "\n";
          }
        }
        for (t5 = line.highlights, t6 = new A.ReversedListIterable(t5, A._arrayInstanceType(t5)._eval$1("ReversedListIterable<1>")), t6 = new A.ListIterator(t6, t6.get$length(t6)), t7 = A._instanceType(t6)._precomputed1, t8 = line.number, t9 = line.text; t6.moveNext$0();) {
          t10 = t6.__internal$_current;
          if (t10 == null)
            t10 = t7._as(t10);
          t11 = t10.span;
          if (t11.get$start(t11).get$line() !== t11.get$end(t11).get$line() && t11.get$start(t11).get$line() === t8 && _this._isOnlyWhitespace$1(B.JSString_methods.substring$2(t9, 0, t11.get$start(t11).get$column()))) {
            index = B.JSArray_methods.indexOf$1(highlightsByColumn, _null);
            if (index < 0)
              A.throwExpression(A.ArgumentError$(A.S(highlightsByColumn) + " contains no null elements.", _null));
            highlightsByColumn[index] = t10;
          }
        }
        _this._writeSidebar$1$line(t8);
        t3._contents += " ";
        _this._writeMultilineHighlights$2(line, highlightsByColumn);
        if (t2)
          t3._contents += " ";
        primaryIdx = B.JSArray_methods.indexWhere$1(t5, new A.Highlighter_highlight_closure());
        primary = primaryIdx === -1 ? _null : t5[primaryIdx];
        t6 = primary != null;
        if (t6) {
          t7 = primary.span;
          t10 = t7.get$start(t7).get$line() === t8 ? t7.get$start(t7).get$column() : 0;
          _this._writeHighlightedText$4$color(t9, t10, t7.get$end(t7).get$line() === t8 ? t7.get$end(t7).get$column() : t9.length, t4);
        } else
          _this._writeText$1(t9);
        t3._contents += "\n";
        if (t6)
          _this._writeIndicator$3(line, primary, highlightsByColumn);
        for (t6 = t5.length, _i = 0; _i < t5.length; t5.length === t6 || (0, A.throwConcurrentModificationError)(t5), ++_i) {
          highlight = t5[_i];
          if (highlight.isPrimary)
            continue;
          _this._writeIndicator$3(line, highlight, highlightsByColumn);
        }
      }
      _this._writeSidebar$1$end($._glyphs.get$upEnd());
      t1 = t3._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _writeFileStart$1(url) {
      var _this = this,
        t1 = !_this._multipleFiles || !type$.Uri._is(url),
        t2 = $._glyphs;
      if (t1)
        _this._writeSidebar$1$end(t2.get$downEnd());
      else {
        _this._writeSidebar$1$end(t2.get$topLeftCorner());
        _this._colorize$2$color(new A.Highlighter__writeFileStart_closure(_this), "\x1b[34m");
        _this._highlighter$_buffer._contents += " " + $.$get$context().prettyUri$1(url);
      }
      _this._highlighter$_buffer._contents += "\n";
    },
    _writeMultilineHighlights$3$current(line, highlightsByColumn, current) {
      var t1, currentColor, t2, t3, t4, t5, foundCurrent, _i, highlight, t6, startLine, t7, endLine, _this = this, _box_0 = {};
      _box_0.openedOnThisLine = false;
      _box_0.openedOnThisLineColor = null;
      t1 = current == null;
      if (t1)
        currentColor = null;
      else
        currentColor = current.isPrimary ? _this._primaryColor : _this._secondaryColor;
      for (t2 = highlightsByColumn.length, t3 = _this._secondaryColor, t1 = !t1, t4 = _this._primaryColor, t5 = _this._highlighter$_buffer, foundCurrent = false, _i = 0; _i < t2; ++_i) {
        highlight = highlightsByColumn[_i];
        t6 = highlight == null;
        if (t6)
          startLine = null;
        else {
          t7 = highlight.span;
          startLine = t7.get$start(t7).get$line();
        }
        if (t6)
          endLine = null;
        else {
          t7 = highlight.span;
          endLine = t7.get$end(t7).get$line();
        }
        if (t1 && highlight === current) {
          _this._colorize$2$color(new A.Highlighter__writeMultilineHighlights_closure(_this, startLine, line), currentColor);
          foundCurrent = true;
        } else if (foundCurrent)
          _this._colorize$2$color(new A.Highlighter__writeMultilineHighlights_closure0(_this, highlight), currentColor);
        else if (t6)
          if (_box_0.openedOnThisLine)
            _this._colorize$2$color(new A.Highlighter__writeMultilineHighlights_closure1(_this), _box_0.openedOnThisLineColor);
          else
            t5._contents += " ";
        else {
          t6 = highlight.isPrimary ? t4 : t3;
          _this._colorize$2$color(new A.Highlighter__writeMultilineHighlights_closure2(_box_0, _this, current, startLine, line, highlight, endLine), t6);
        }
      }
    },
    _writeMultilineHighlights$2(line, highlightsByColumn) {
      return this._writeMultilineHighlights$3$current(line, highlightsByColumn, null);
    },
    _writeHighlightedText$4$color(text, startColumn, endColumn, color) {
      var _this = this;
      _this._writeText$1(B.JSString_methods.substring$2(text, 0, startColumn));
      _this._colorize$2$color(new A.Highlighter__writeHighlightedText_closure(_this, text, startColumn, endColumn), color);
      _this._writeText$1(B.JSString_methods.substring$2(text, endColumn, text.length));
    },
    _writeIndicator$3(line, highlight, highlightsByColumn) {
      var t2, coversWholeLine, _this = this,
        color = highlight.isPrimary ? _this._primaryColor : _this._secondaryColor,
        t1 = highlight.span;
      if (t1.get$start(t1).get$line() === t1.get$end(t1).get$line()) {
        _this._writeSidebar$0();
        t1 = _this._highlighter$_buffer;
        t1._contents += " ";
        _this._writeMultilineHighlights$3$current(line, highlightsByColumn, highlight);
        if (highlightsByColumn.length !== 0)
          t1._contents += " ";
        _this._writeLabel$3(highlight, highlightsByColumn, _this._colorize$2$color(new A.Highlighter__writeIndicator_closure(_this, line, highlight), color));
      } else {
        t2 = line.number;
        if (t1.get$start(t1).get$line() === t2) {
          if (B.JSArray_methods.contains$1(highlightsByColumn, highlight))
            return;
          A.replaceFirstNull(highlightsByColumn, highlight);
          _this._writeSidebar$0();
          t1 = _this._highlighter$_buffer;
          t1._contents += " ";
          _this._writeMultilineHighlights$3$current(line, highlightsByColumn, highlight);
          _this._colorize$2$color(new A.Highlighter__writeIndicator_closure0(_this, line, highlight), color);
          t1._contents += "\n";
        } else if (t1.get$end(t1).get$line() === t2) {
          coversWholeLine = t1.get$end(t1).get$column() === line.text.length;
          if (coversWholeLine && highlight.label == null) {
            A.replaceWithNull(highlightsByColumn, highlight);
            return;
          }
          _this._writeSidebar$0();
          _this._highlighter$_buffer._contents += " ";
          _this._writeMultilineHighlights$3$current(line, highlightsByColumn, highlight);
          _this._writeLabel$3(highlight, highlightsByColumn, _this._colorize$2$color(new A.Highlighter__writeIndicator_closure1(_this, coversWholeLine, line, highlight), color));
          A.replaceWithNull(highlightsByColumn, highlight);
        }
      }
    },
    _writeArrow$3$beginning(line, column, beginning) {
      var t2,
        t1 = beginning ? 0 : 1,
        tabs = this._countTabs$1(B.JSString_methods.substring$2(line.text, 0, column + t1));
      t1 = this._highlighter$_buffer;
      t2 = t1._contents += B.JSString_methods.$mul($._glyphs.get$horizontalLine(), 1 + column + tabs * 3);
      t1._contents = t2 + "^";
    },
    _writeArrow$2(line, column) {
      return this._writeArrow$3$beginning(line, column, true);
    },
    _writeLabel$3(highlight, highlightsByColumn, underlineLength) {
      var lines, color, t1, t2, t3, t4, t5, t6, _i, columnHighlight, _this = this,
        label = highlight.label;
      if (label == null) {
        _this._highlighter$_buffer._contents += "\n";
        return;
      }
      lines = A._setArrayType(label.split("\n"), type$.JSArray_String);
      color = highlight.isPrimary ? _this._primaryColor : _this._secondaryColor;
      _this._colorize$2$color(new A.Highlighter__writeLabel_closure(_this, lines), color);
      t1 = _this._highlighter$_buffer;
      t1._contents += "\n";
      for (t2 = A.SubListIterable$(lines, 1, null, type$.String), t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = highlightsByColumn.length, t4 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t5 = t2.__internal$_current;
        if (t5 == null)
          t5 = t4._as(t5);
        _this._writeSidebar$0();
        t6 = t1._contents += " ";
        for (_i = 0; _i < t3; ++_i) {
          columnHighlight = highlightsByColumn[_i];
          if (columnHighlight == null || columnHighlight === highlight) {
            t6 += " ";
            t1._contents = t6;
          } else
            t6 = t1._contents += $._glyphs.get$verticalLine();
        }
        t1._contents += B.JSString_methods.$mul(" ", underlineLength);
        _this._colorize$2$color(new A.Highlighter__writeLabel_closure0(_this, t5), color);
        t1._contents += "\n";
      }
    },
    _writeText$1(text) {
      var t1, t2, t3, t4;
      for (t1 = new A.CodeUnits(text), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this._highlighter$_buffer, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        if (t4 == null)
          t4 = t3._as(t4);
        if (t4 === 9)
          t2._contents += B.JSString_methods.$mul(" ", 4);
        else
          t2._contents += A.Primitives_stringFromCharCode(t4);
      }
    },
    _writeSidebar$3$end$line$text(end, line, text) {
      var t1 = {};
      t1.text = text;
      if (line != null)
        t1.text = B.JSInt_methods.toString$0(line + 1);
      this._colorize$2$color(new A.Highlighter__writeSidebar_closure(t1, this, end), "\x1b[34m");
    },
    _writeSidebar$1$end(end) {
      return this._writeSidebar$3$end$line$text(end, null, null);
    },
    _writeSidebar$1$text(text) {
      return this._writeSidebar$3$end$line$text(null, null, text);
    },
    _writeSidebar$1$line(line) {
      return this._writeSidebar$3$end$line$text(null, line, null);
    },
    _writeSidebar$0() {
      return this._writeSidebar$3$end$line$text(null, null, null);
    },
    _countTabs$1(text) {
      var t1, t2, count, t3;
      for (t1 = new A.CodeUnits(text), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1, count = 0; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if ((t3 == null ? t2._as(t3) : t3) === 9)
          ++count;
      }
      return count;
    },
    _isOnlyWhitespace$1(text) {
      var t1, t2, t3;
      for (t1 = new A.CodeUnits(text), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        if (t3 !== 32 && t3 !== 9)
          return false;
      }
      return true;
    },
    _colorize$1$2$color(callback, color) {
      var result,
        t1 = this._primaryColor != null;
      if (t1 && color != null)
        this._highlighter$_buffer._contents += color;
      result = callback.call$0();
      if (t1 && color != null)
        this._highlighter$_buffer._contents += "\x1b[0m";
      return result;
    },
    _colorize$2$color(callback, color) {
      return this._colorize$1$2$color(callback, color, type$.dynamic);
    }
  };
  A.Highlighter_closure.prototype = {
    call$0() {
      var t1 = this.color,
        t2 = J.getInterceptor$(t1);
      if (t2.$eq(t1, true))
        return "\x1b[31m";
      if (t2.$eq(t1, false))
        return null;
      return A._asStringQ(t1);
    },
    $signature: 32
  };
  A.Highlighter$__closure.prototype = {
    call$1(line) {
      var t1 = line.highlights;
      t1 = new A.WhereIterable(t1, new A.Highlighter$___closure(), A._arrayInstanceType(t1)._eval$1("WhereIterable<1>"));
      return t1.get$length(t1);
    },
    $signature: 299
  };
  A.Highlighter$___closure.prototype = {
    call$1(highlight) {
      var t1 = highlight.span;
      return t1.get$start(t1).get$line() !== t1.get$end(t1).get$line();
    },
    $signature: 128
  };
  A.Highlighter$__closure0.prototype = {
    call$1(line) {
      return line.url;
    },
    $signature: 301
  };
  A.Highlighter__collateLines_closure.prototype = {
    call$1(highlight) {
      var t1 = highlight.span;
      t1 = t1.get$sourceUrl(t1);
      return t1 == null ? new A.Object() : t1;
    },
    $signature: 302
  };
  A.Highlighter__collateLines_closure0.prototype = {
    call$2(highlight1, highlight2) {
      return highlight1.span.compareTo$1(0, highlight2.span);
    },
    $signature: 303
  };
  A.Highlighter__collateLines_closure1.prototype = {
    call$1(entry) {
      var t1, t2, t3, t4, context, t5, linesBeforeSpan, lineNumber, _i, line, activeHighlights, highlightIndex, oldHighlightLength, t6,
        url = entry.key,
        highlightsForFile = entry.value,
        lines = A._setArrayType([], type$.JSArray__Line);
      for (t1 = J.getInterceptor$ax(highlightsForFile), t2 = t1.get$iterator(highlightsForFile), t3 = type$.JSArray__Highlight; t2.moveNext$0();) {
        t4 = t2.get$current(t2).span;
        context = t4.get$context(t4);
        t5 = A.findLineStart(context, t4.get$text(), t4.get$start(t4).get$column());
        t5.toString;
        t5 = B.JSString_methods.allMatches$1("\n", B.JSString_methods.substring$2(context, 0, t5));
        linesBeforeSpan = t5.get$length(t5);
        lineNumber = t4.get$start(t4).get$line() - linesBeforeSpan;
        for (t4 = context.split("\n"), t5 = t4.length, _i = 0; _i < t5; ++_i) {
          line = t4[_i];
          if (lines.length === 0 || lineNumber > B.JSArray_methods.get$last(lines).number)
            lines.push(new A._Line(line, lineNumber, url, A._setArrayType([], t3)));
          ++lineNumber;
        }
      }
      activeHighlights = A._setArrayType([], t3);
      for (t2 = lines.length, highlightIndex = 0, _i = 0; _i < lines.length; lines.length === t2 || (0, A.throwConcurrentModificationError)(lines), ++_i) {
        line = lines[_i];
        if (!!activeHighlights.fixed$length)
          A.throwExpression(A.UnsupportedError$("removeWhere"));
        B.JSArray_methods._removeWhere$2(activeHighlights, new A.Highlighter__collateLines__closure(line), true);
        oldHighlightLength = activeHighlights.length;
        for (t3 = t1.skip$1(highlightsForFile, highlightIndex), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
          t5 = t3.__internal$_current;
          if (t5 == null)
            t5 = t4._as(t5);
          t6 = t5.span;
          if (t6.get$start(t6).get$line() > line.number)
            break;
          activeHighlights.push(t5);
        }
        highlightIndex += activeHighlights.length - oldHighlightLength;
        B.JSArray_methods.addAll$1(line.highlights, activeHighlights);
      }
      return lines;
    },
    $signature: 304
  };
  A.Highlighter__collateLines__closure.prototype = {
    call$1(highlight) {
      var t1 = highlight.span;
      return t1.get$end(t1).get$line() < this.line.number;
    },
    $signature: 128
  };
  A.Highlighter_highlight_closure.prototype = {
    call$1(highlight) {
      return highlight.isPrimary;
    },
    $signature: 128
  };
  A.Highlighter__writeFileStart_closure.prototype = {
    call$0() {
      this.$this._highlighter$_buffer._contents += B.JSString_methods.$mul($._glyphs.get$horizontalLine(), 2) + ">";
      return null;
    },
    $signature: 0
  };
  A.Highlighter__writeMultilineHighlights_closure.prototype = {
    call$0() {
      var t1 = $._glyphs;
      t1 = this.startLine === this.line.number ? t1.get$topLeftCorner() : t1.get$bottomLeftCorner();
      this.$this._highlighter$_buffer._contents += t1;
    },
    $signature: 2
  };
  A.Highlighter__writeMultilineHighlights_closure0.prototype = {
    call$0() {
      var t1 = $._glyphs;
      t1 = this.highlight == null ? t1.get$horizontalLine() : t1.get$cross();
      this.$this._highlighter$_buffer._contents += t1;
    },
    $signature: 2
  };
  A.Highlighter__writeMultilineHighlights_closure1.prototype = {
    call$0() {
      this.$this._highlighter$_buffer._contents += $._glyphs.get$horizontalLine();
      return null;
    },
    $signature: 0
  };
  A.Highlighter__writeMultilineHighlights_closure2.prototype = {
    call$0() {
      var _this = this,
        t1 = _this._box_0,
        t2 = t1.openedOnThisLine,
        t3 = $._glyphs,
        vertical = t2 ? t3.get$cross() : t3.get$verticalLine();
      if (_this.current != null)
        _this.$this._highlighter$_buffer._contents += vertical;
      else {
        t2 = _this.line;
        t3 = t2.number;
        if (_this.startLine === t3) {
          t2 = _this.$this;
          t2._colorize$2$color(new A.Highlighter__writeMultilineHighlights__closure(t1, t2), t1.openedOnThisLineColor);
          t1.openedOnThisLine = true;
          if (t1.openedOnThisLineColor == null)
            t1.openedOnThisLineColor = _this.highlight.isPrimary ? t2._primaryColor : t2._secondaryColor;
        } else {
          if (_this.endLine === t3) {
            t3 = _this.highlight.span;
            t2 = t3.get$end(t3).get$column() === t2.text.length;
          } else
            t2 = false;
          t3 = _this.$this;
          if (t2) {
            t1 = _this.highlight.label == null ? $._glyphs.glyphOrAscii$2("\u2514", "\\") : vertical;
            t3._highlighter$_buffer._contents += t1;
          } else
            t3._colorize$2$color(new A.Highlighter__writeMultilineHighlights__closure0(t3, vertical), t1.openedOnThisLineColor);
        }
      }
    },
    $signature: 2
  };
  A.Highlighter__writeMultilineHighlights__closure.prototype = {
    call$0() {
      var t1 = this._box_0.openedOnThisLine ? "\u252c" : "\u250c";
      this.$this._highlighter$_buffer._contents += $._glyphs.glyphOrAscii$2(t1, "/");
    },
    $signature: 2
  };
  A.Highlighter__writeMultilineHighlights__closure0.prototype = {
    call$0() {
      this.$this._highlighter$_buffer._contents += this.vertical;
    },
    $signature: 2
  };
  A.Highlighter__writeHighlightedText_closure.prototype = {
    call$0() {
      var _this = this;
      return _this.$this._writeText$1(B.JSString_methods.substring$2(_this.text, _this.startColumn, _this.endColumn));
    },
    $signature: 0
  };
  A.Highlighter__writeIndicator_closure.prototype = {
    call$0() {
      var startColumn, endColumn, tabsBefore, tabsInside,
        t1 = this.$this,
        t2 = t1._highlighter$_buffer,
        t3 = t2._contents,
        t4 = this.highlight,
        t5 = t4.span;
      t4 = t4.isPrimary ? "^" : $._glyphs.get$horizontalLineBold();
      startColumn = t5.get$start(t5).get$column();
      endColumn = t5.get$end(t5).get$column();
      t5 = this.line.text;
      tabsBefore = t1._countTabs$1(B.JSString_methods.substring$2(t5, 0, startColumn));
      tabsInside = t1._countTabs$1(B.JSString_methods.substring$2(t5, startColumn, endColumn));
      startColumn += tabsBefore * 3;
      t2._contents += B.JSString_methods.$mul(" ", startColumn);
      t4 = t2._contents += B.JSString_methods.$mul(t4, Math.max(endColumn + (tabsBefore + tabsInside) * 3 - startColumn, 1));
      return t4.length - t3.length;
    },
    $signature: 3
  };
  A.Highlighter__writeIndicator_closure0.prototype = {
    call$0() {
      var t1 = this.highlight.span;
      return this.$this._writeArrow$2(this.line, t1.get$start(t1).get$column());
    },
    $signature: 0
  };
  A.Highlighter__writeIndicator_closure1.prototype = {
    call$0() {
      var t4, _this = this,
        t1 = _this.$this,
        t2 = t1._highlighter$_buffer,
        t3 = t2._contents;
      if (_this.coversWholeLine)
        t2._contents += B.JSString_methods.$mul($._glyphs.get$horizontalLine(), 3);
      else {
        t4 = _this.highlight.span;
        t1._writeArrow$3$beginning(_this.line, Math.max(t4.get$end(t4).get$column() - 1, 0), false);
      }
      return t2._contents.length - t3.length;
    },
    $signature: 3
  };
  A.Highlighter__writeLabel_closure.prototype = {
    call$0() {
      this.$this._highlighter$_buffer._contents += " " + A.S(B.JSArray_methods.get$first(this.lines));
      return null;
    },
    $signature: 0
  };
  A.Highlighter__writeLabel_closure0.prototype = {
    call$0() {
      this.$this._highlighter$_buffer._contents += " " + this.text;
      return null;
    },
    $signature: 0
  };
  A.Highlighter__writeSidebar_closure.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._highlighter$_buffer,
        t3 = this._box_0.text;
      if (t3 == null)
        t3 = "";
      t2._contents += B.JSString_methods.padRight$1(t3, t1._paddingBeforeSidebar);
      t1 = this.end;
      t2._contents += t1 == null ? $._glyphs.get$verticalLine() : t1;
    },
    $signature: 2
  };
  A._Highlight.prototype = {
    toString$0(_) {
      var t1 = this.isPrimary ? "" + "primary " : "",
        t2 = this.span;
      t2 = t1 + ("" + t2.get$start(t2).get$line() + ":" + t2.get$start(t2).get$column() + "-" + t2.get$end(t2).get$line() + ":" + t2.get$end(t2).get$column());
      t1 = this.label;
      t1 = t1 != null ? t2 + (" (" + t1 + ")") : t2;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A._Highlight_closure.prototype = {
    call$0() {
      var t2, t3, t4, t5,
        t1 = this.span;
      if (!(type$.SourceSpanWithContext._is(t1) && A.findLineStart(t1.get$context(t1), t1.get$text(), t1.get$start(t1).get$column()) != null)) {
        t2 = A.SourceLocation$(t1.get$start(t1).get$offset(), 0, 0, t1.get$sourceUrl(t1));
        t3 = t1.get$end(t1).get$offset();
        t4 = t1.get$sourceUrl(t1);
        t5 = A.countCodeUnits(t1.get$text(), 10);
        t1 = A.SourceSpanWithContext$(t2, A.SourceLocation$(t3, A._Highlight__lastLineLength(t1.get$text()), t5, t4), t1.get$text(), t1.get$text());
      }
      return A._Highlight__normalizeEndOfLine(A._Highlight__normalizeTrailingNewline(A._Highlight__normalizeNewlines(t1)));
    },
    $signature: 305
  };
  A._Line.prototype = {
    toString$0(_) {
      return "" + this.number + ': "' + this.text + '" (' + B.JSArray_methods.join$1(this.highlights, ", ") + ")";
    }
  };
  A.SourceLocation.prototype = {
    distance$1(other) {
      var t1 = this.sourceUrl;
      if (!J.$eq$(t1, other.get$sourceUrl(other)))
        throw A.wrapException(A.ArgumentError$('Source URLs "' + A.S(t1) + '" and "' + A.S(other.get$sourceUrl(other)) + "\" don't match.", null));
      return Math.abs(this.offset - other.get$offset());
    },
    compareTo$1(_, other) {
      var t1 = this.sourceUrl;
      if (!J.$eq$(t1, other.get$sourceUrl(other)))
        throw A.wrapException(A.ArgumentError$('Source URLs "' + A.S(t1) + '" and "' + A.S(other.get$sourceUrl(other)) + "\" don't match.", null));
      return this.offset - other.get$offset();
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return type$.SourceLocation._is(other) && J.$eq$(this.sourceUrl, other.get$sourceUrl(other)) && this.offset === other.get$offset();
    },
    get$hashCode(_) {
      var t1 = this.sourceUrl;
      t1 = t1 == null ? null : t1.get$hashCode(t1);
      if (t1 == null)
        t1 = 0;
      return t1 + this.offset;
    },
    toString$0(_) {
      var _this = this,
        t1 = A.getRuntimeTypeOfDartObject(_this).toString$0(0),
        source = _this.sourceUrl;
      return "<" + t1 + ": " + _this.offset + " " + (A.S(source == null ? "unknown source" : source) + ":" + (_this.line + 1) + ":" + (_this.column + 1)) + ">";
    },
    $isComparable: 1,
    get$sourceUrl(receiver) {
      return this.sourceUrl;
    },
    get$offset() {
      return this.offset;
    },
    get$line() {
      return this.line;
    },
    get$column() {
      return this.column;
    }
  };
  A.SourceLocationMixin.prototype = {
    distance$1(other) {
      var _this = this;
      if (!J.$eq$(_this.file.url, other.get$sourceUrl(other)))
        throw A.wrapException(A.ArgumentError$('Source URLs "' + A.S(_this.get$sourceUrl(_this)) + '" and "' + A.S(other.get$sourceUrl(other)) + "\" don't match.", null));
      return Math.abs(_this.offset - other.get$offset());
    },
    compareTo$1(_, other) {
      var _this = this;
      if (!J.$eq$(_this.file.url, other.get$sourceUrl(other)))
        throw A.wrapException(A.ArgumentError$('Source URLs "' + A.S(_this.get$sourceUrl(_this)) + '" and "' + A.S(other.get$sourceUrl(other)) + "\" don't match.", null));
      return _this.offset - other.get$offset();
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return type$.SourceLocation._is(other) && J.$eq$(this.file.url, other.get$sourceUrl(other)) && this.offset === other.get$offset();
    },
    get$hashCode(_) {
      var t1 = this.file.url;
      t1 = t1 == null ? null : t1.get$hashCode(t1);
      if (t1 == null)
        t1 = 0;
      return t1 + this.offset;
    },
    toString$0(_) {
      var t1 = A.getRuntimeTypeOfDartObject(this).toString$0(0),
        t2 = this.offset,
        t3 = this.file,
        source = t3.url;
      return "<" + t1 + ": " + t2 + " " + (A.S(source == null ? "unknown source" : source) + ":" + (t3.getLine$1(t2) + 1) + ":" + (t3.getColumn$1(t2) + 1)) + ">";
    },
    $isComparable: 1,
    $isSourceLocation: 1
  };
  A.SourceSpanBase.prototype = {
    SourceSpanBase$3(start, end, text) {
      var t3,
        t1 = this.end,
        t2 = this.start;
      if (!J.$eq$(t1.get$sourceUrl(t1), t2.get$sourceUrl(t2)))
        throw A.wrapException(A.ArgumentError$('Source URLs "' + A.S(t2.get$sourceUrl(t2)) + '" and  "' + A.S(t1.get$sourceUrl(t1)) + "\" don't match.", null));
      else if (t1.get$offset() < t2.get$offset())
        throw A.wrapException(A.ArgumentError$("End " + t1.toString$0(0) + " must come after start " + t2.toString$0(0) + ".", null));
      else {
        t3 = this.text;
        if (t3.length !== t2.distance$1(t1))
          throw A.wrapException(A.ArgumentError$('Text "' + t3 + '" must be ' + t2.distance$1(t1) + " characters long.", null));
      }
    },
    get$start(receiver) {
      return this.start;
    },
    get$end(receiver) {
      return this.end;
    },
    get$text() {
      return this.text;
    }
  };
  A.SourceSpanException.prototype = {
    get$message(_) {
      return this._span_exception$_message;
    },
    get$span(_) {
      return this._span;
    },
    toString$1$color(_, color) {
      var _this = this;
      _this.get$span(_this);
      return "Error on " + _this.get$span(_this).message$2$color(0, _this._span_exception$_message, color);
    },
    toString$0($receiver) {
      return this.toString$1$color($receiver, null);
    },
    $isException: 1
  };
  A.SourceSpanFormatException.prototype = {$isFormatException: 1,
    get$source() {
      return this.source;
    }
  };
  A.MultiSourceSpanException.prototype = {
    toString$0(_) {
      var _this = this;
      return "Error on " + A.SourceSpanExtension_messageMultiple(_this._span, _this._span_exception$_message, _this.primaryLabel, _this.secondarySpans, false, null, null);
    },
    get$primaryLabel() {
      return this.primaryLabel;
    },
    get$secondarySpans() {
      return this.secondarySpans;
    }
  };
  A.MultiSourceSpanFormatException.prototype = {$isFormatException: 1};
  A.SourceSpanMixin.prototype = {
    get$sourceUrl(_) {
      var t1 = this.get$start(this);
      return t1.get$sourceUrl(t1);
    },
    get$length(_) {
      var _this = this;
      return _this.get$end(_this).get$offset() - _this.get$start(_this).get$offset();
    },
    compareTo$1(_, other) {
      var _this = this,
        result = _this.get$start(_this).compareTo$1(0, other.get$start(other));
      return result === 0 ? _this.get$end(_this).compareTo$1(0, other.get$end(other)) : result;
    },
    message$2$color(_, message, color) {
      var t2, highlight, _this = this,
        t1 = "" + ("line " + (_this.get$start(_this).get$line() + 1) + ", column " + (_this.get$start(_this).get$column() + 1));
      if (_this.get$sourceUrl(_this) != null) {
        t2 = _this.get$sourceUrl(_this);
        t2 = t1 + (" of " + $.$get$context().prettyUri$1(t2));
        t1 = t2;
      }
      t1 += ": " + message;
      highlight = _this.highlight$1$color(color);
      if (highlight.length !== 0)
        t1 = t1 + "\n" + highlight;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    message$1($receiver, message) {
      return this.message$2$color($receiver, message, null);
    },
    highlight$1$color(color) {
      var _this = this;
      if (!type$.SourceSpanWithContext._is(_this) && _this.get$length(_this) === 0)
        return "";
      return A.Highlighter$(_this, color).highlight$0();
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return type$.SourceSpan._is(other) && _this.get$start(_this).$eq(0, other.get$start(other)) && _this.get$end(_this).$eq(0, other.get$end(other));
    },
    get$hashCode(_) {
      var _this = this;
      return A.Object_hash(_this.get$start(_this), _this.get$end(_this), B.C_SentinelValue, B.C_SentinelValue);
    },
    toString$0(_) {
      var _this = this;
      return "<" + A.getRuntimeTypeOfDartObject(_this).toString$0(0) + ": from " + _this.get$start(_this).toString$0(0) + " to " + _this.get$end(_this).toString$0(0) + ' "' + _this.get$text() + '">';
    },
    $isComparable: 1,
    $isSourceSpan: 1
  };
  A.SourceSpanWithContext.prototype = {
    get$context(_) {
      return this._context;
    }
  };
  A.Chain.prototype = {
    toTrace$0() {
      var t1 = this.traces;
      return A.Trace$(new A.ExpandIterable(t1, new A.Chain_toTrace_closure(), A._arrayInstanceType(t1)._eval$1("ExpandIterable<1,Frame>")), null);
    },
    toString$0(_) {
      var t1 = this.traces,
        t2 = A._arrayInstanceType(t1);
      return new A.MappedListIterable(t1, new A.Chain_toString_closure(new A.MappedListIterable(t1, new A.Chain_toString_closure0(), t2._eval$1("MappedListIterable<1,int>")).fold$2(0, 0, B.CONSTANT)), t2._eval$1("MappedListIterable<1,String>")).join$1(0, string$.x3d_____);
    },
    $isStackTrace: 1
  };
  A.Chain_Chain$parse_closure.prototype = {
    call$1(line) {
      return line.length !== 0;
    },
    $signature: 10
  };
  A.Chain_toTrace_closure.prototype = {
    call$1(trace) {
      return trace.get$frames();
    },
    $signature: 306
  };
  A.Chain_toString_closure0.prototype = {
    call$1(trace) {
      var t1 = trace.get$frames();
      return new A.MappedListIterable(t1, new A.Chain_toString__closure0(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,int>")).fold$2(0, 0, B.CONSTANT);
    },
    $signature: 307
  };
  A.Chain_toString__closure0.prototype = {
    call$1(frame) {
      return frame.get$location().length;
    },
    $signature: 165
  };
  A.Chain_toString_closure.prototype = {
    call$1(trace) {
      var t1 = trace.get$frames();
      return new A.MappedListIterable(t1, new A.Chain_toString__closure(this.longest), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$0(0);
    },
    $signature: 309
  };
  A.Chain_toString__closure.prototype = {
    call$1(frame) {
      return B.JSString_methods.padRight$1(frame.get$location(), this.longest) + "  " + A.S(frame.get$member()) + "\n";
    },
    $signature: 166
  };
  A.Frame.prototype = {
    get$isCore() {
      return this.uri.get$scheme() === "dart";
    },
    get$library() {
      var t1 = this.uri;
      if (t1.get$scheme() === "data")
        return "data:...";
      return $.$get$context().prettyUri$1(t1);
    },
    get$$package() {
      var t1 = this.uri;
      if (t1.get$scheme() !== "package")
        return null;
      return B.JSArray_methods.get$first(t1.get$path(t1).split("/"));
    },
    get$location() {
      var t2, _this = this,
        t1 = _this.line;
      if (t1 == null)
        return _this.get$library();
      t2 = _this.column;
      if (t2 == null)
        return _this.get$library() + " " + A.S(t1);
      return _this.get$library() + " " + A.S(t1) + ":" + A.S(t2);
    },
    toString$0(_) {
      return this.get$location() + " in " + A.S(this.member);
    },
    get$uri() {
      return this.uri;
    },
    get$line() {
      return this.line;
    },
    get$column() {
      return this.column;
    },
    get$member() {
      return this.member;
    }
  };
  A.Frame_Frame$parseVM_closure.prototype = {
    call$0() {
      var match, t2, t3, member, uri, lineAndColumn, line, _null = null,
        t1 = this.frame;
      if (t1 === "...")
        return new A.Frame(A._Uri__Uri(_null, _null, _null, _null), _null, _null, "...");
      match = $.$get$_vmFrame().firstMatch$1(t1);
      if (match == null)
        return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), t1);
      t1 = match._match;
      t2 = t1[1];
      t2.toString;
      t3 = $.$get$_asyncBody();
      t2 = A.stringReplaceAllUnchecked(t2, t3, "<async>");
      member = A.stringReplaceAllUnchecked(t2, "<anonymous closure>", "<fn>");
      t2 = t1[2];
      t3 = t2;
      t3.toString;
      if (B.JSString_methods.startsWith$1(t3, "<data:"))
        uri = A.Uri_Uri$dataFromString("", _null, _null);
      else {
        t2 = t2;
        t2.toString;
        uri = A.Uri_parse(t2);
      }
      lineAndColumn = t1[3].split(":");
      t1 = lineAndColumn.length;
      line = t1 > 1 ? A.int_parse(lineAndColumn[1], _null) : _null;
      return new A.Frame(uri, line, t1 > 2 ? A.int_parse(lineAndColumn[2], _null) : _null, member);
    },
    $signature: 74
  };
  A.Frame_Frame$parseV8_closure.prototype = {
    call$0() {
      var t2, t3, _s4_ = "<fn>",
        t1 = this.frame,
        match = $.$get$_v8Frame().firstMatch$1(t1);
      if (match == null)
        return new A.UnparsedFrame(A._Uri__Uri(null, "unparsed", null, null), t1);
      t1 = new A.Frame_Frame$parseV8_closure_parseLocation(t1);
      t2 = match._match;
      t3 = t2[2];
      if (t3 != null) {
        t3 = t3;
        t3.toString;
        t2 = t2[1];
        t2.toString;
        t2 = A.stringReplaceAllUnchecked(t2, "<anonymous>", _s4_);
        t2 = A.stringReplaceAllUnchecked(t2, "Anonymous function", _s4_);
        return t1.call$2(t3, A.stringReplaceAllUnchecked(t2, "(anonymous function)", _s4_));
      } else {
        t2 = t2[3];
        t2.toString;
        return t1.call$2(t2, _s4_);
      }
    },
    $signature: 74
  };
  A.Frame_Frame$parseV8_closure_parseLocation.prototype = {
    call$2($location, member) {
      var t2, urlMatch, uri, line, columnMatch, _null = null,
        t1 = $.$get$_v8EvalLocation(),
        evalMatch = t1.firstMatch$1($location);
      for (; evalMatch != null; $location = t2) {
        t2 = evalMatch._match[1];
        t2.toString;
        evalMatch = t1.firstMatch$1(t2);
      }
      if ($location === "native")
        return new A.Frame(A.Uri_parse("native"), _null, _null, member);
      urlMatch = $.$get$_v8UrlLocation().firstMatch$1($location);
      if (urlMatch == null)
        return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), this.frame);
      t1 = urlMatch._match;
      t2 = t1[1];
      t2.toString;
      uri = A.Frame__uriOrPathToUri(t2);
      t2 = t1[2];
      t2.toString;
      line = A.int_parse(t2, _null);
      columnMatch = t1[3];
      return new A.Frame(uri, line, columnMatch != null ? A.int_parse(columnMatch, _null) : _null, member);
    },
    $signature: 312
  };
  A.Frame_Frame$_parseFirefoxEval_closure.prototype = {
    call$0() {
      var t2, member, uri, line, _null = null,
        t1 = this.frame,
        match = $.$get$_firefoxEvalLocation().firstMatch$1(t1);
      if (match == null)
        return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), t1);
      t1 = match._match;
      t2 = t1[1];
      t2.toString;
      member = A.stringReplaceAllUnchecked(t2, "/<", "");
      t2 = t1[2];
      t2.toString;
      uri = A.Frame__uriOrPathToUri(t2);
      t1 = t1[3];
      t1.toString;
      line = A.int_parse(t1, _null);
      return new A.Frame(uri, line, _null, member.length === 0 || member === "anonymous" ? "<fn>" : member);
    },
    $signature: 74
  };
  A.Frame_Frame$parseFirefox_closure.prototype = {
    call$0() {
      var t2, t3, t4, uri, member, line, column, _null = null,
        t1 = this.frame,
        match = $.$get$_firefoxSafariFrame().firstMatch$1(t1);
      if (match == null)
        return new A.UnparsedFrame(A._Uri__Uri(_null, "unparsed", _null, _null), t1);
      t2 = match._match;
      t3 = t2[3];
      t4 = t3;
      t4.toString;
      if (B.JSString_methods.contains$1(t4, " line "))
        return A.Frame_Frame$_parseFirefoxEval(t1);
      t1 = t3;
      t1.toString;
      uri = A.Frame__uriOrPathToUri(t1);
      member = t2[1];
      if (member != null) {
        t1 = t2[2];
        t1.toString;
        t1 = B.JSString_methods.allMatches$1("/", t1);
        member += B.JSArray_methods.join$0(A.List_List$filled(t1.get$length(t1), ".<fn>", false, type$.String));
        if (member === "")
          member = "<fn>";
        member = B.JSString_methods.replaceFirst$2(member, $.$get$_initialDot(), "");
      } else
        member = "<fn>";
      t1 = t2[4];
      if (t1 === "")
        line = _null;
      else {
        t1 = t1;
        t1.toString;
        line = A.int_parse(t1, _null);
      }
      t1 = t2[5];
      if (t1 == null || t1 === "")
        column = _null;
      else {
        t1 = t1;
        t1.toString;
        column = A.int_parse(t1, _null);
      }
      return new A.Frame(uri, line, column, member);
    },
    $signature: 74
  };
  A.Frame_Frame$parseFriendly_closure.prototype = {
    call$0() {
      var t2, uri, line, column, _null = null,
        t1 = this.frame,
        match = $.$get$_friendlyFrame().firstMatch$1(t1);
      if (match == null)
        throw A.wrapException(A.FormatException$("Couldn't parse package:stack_trace stack trace line '" + t1 + "'.", _null, _null));
      t1 = match._match;
      t2 = t1[1];
      if (t2 === "data:...")
        uri = A.Uri_Uri$dataFromString("", _null, _null);
      else {
        t2 = t2;
        t2.toString;
        uri = A.Uri_parse(t2);
      }
      if (uri.get$scheme() === "") {
        t2 = $.$get$context();
        uri = t2.toUri$1(A.absolute(t2.style.pathFromUri$1(A._parseUri(uri)), _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null));
      }
      t2 = t1[2];
      if (t2 == null)
        line = _null;
      else {
        t2 = t2;
        t2.toString;
        line = A.int_parse(t2, _null);
      }
      t2 = t1[3];
      if (t2 == null)
        column = _null;
      else {
        t2 = t2;
        t2.toString;
        column = A.int_parse(t2, _null);
      }
      return new A.Frame(uri, line, column, t1[4]);
    },
    $signature: 74
  };
  A.LazyTrace.prototype = {
    get$_lazy_trace$_trace() {
      var result, _this = this,
        value = _this.__LazyTrace__trace_FI;
      if (value === $) {
        result = _this._thunk.call$0();
        _this.__LazyTrace__trace_FI !== $ && A.throwUnnamedLateFieldADI();
        _this.__LazyTrace__trace_FI = result;
        value = result;
      }
      return value;
    },
    get$frames() {
      return this.get$_lazy_trace$_trace().get$frames();
    },
    get$terse() {
      return new A.LazyTrace(new A.LazyTrace_terse_closure(this));
    },
    toString$0(_) {
      return this.get$_lazy_trace$_trace().toString$0(0);
    },
    $isStackTrace: 1,
    $isTrace: 1
  };
  A.LazyTrace_terse_closure.prototype = {
    call$0() {
      return this.$this.get$_lazy_trace$_trace().get$terse();
    },
    $signature: 168
  };
  A.Trace.prototype = {
    get$terse() {
      return this.foldFrames$2$terse(new A.Trace_terse_closure(), true);
    },
    foldFrames$2$terse(predicate, terse) {
      var newFrames, t1, t2, t3, _box_0 = {};
      _box_0.predicate = predicate;
      _box_0.predicate = new A.Trace_foldFrames_closure(predicate);
      newFrames = A._setArrayType([], type$.JSArray_Frame);
      for (t1 = this.frames, t1 = new A.ReversedListIterable(t1, A._arrayInstanceType(t1)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        if (t3 instanceof A.UnparsedFrame || !_box_0.predicate.call$1(t3))
          newFrames.push(t3);
        else if (newFrames.length === 0 || !_box_0.predicate.call$1(B.JSArray_methods.get$last(newFrames)))
          newFrames.push(new A.Frame(t3.get$uri(), t3.get$line(), t3.get$column(), t3.get$member()));
      }
      t1 = type$.MappedListIterable_Frame_Frame;
      newFrames = A.List_List$of(new A.MappedListIterable(newFrames, new A.Trace_foldFrames_closure0(_box_0), t1), true, t1._eval$1("ListIterable.E"));
      if (newFrames.length > 1 && _box_0.predicate.call$1(B.JSArray_methods.get$first(newFrames)))
        B.JSArray_methods.removeAt$1(newFrames, 0);
      return A.Trace$(new A.ReversedListIterable(newFrames, A._arrayInstanceType(newFrames)._eval$1("ReversedListIterable<1>")), this.original._stackTrace);
    },
    toString$0(_) {
      var t1 = this.frames,
        t2 = A._arrayInstanceType(t1);
      return new A.MappedListIterable(t1, new A.Trace_toString_closure(new A.MappedListIterable(t1, new A.Trace_toString_closure0(), t2._eval$1("MappedListIterable<1,int>")).fold$2(0, 0, B.CONSTANT)), t2._eval$1("MappedListIterable<1,String>")).join$0(0);
    },
    $isStackTrace: 1,
    get$frames() {
      return this.frames;
    }
  };
  A.Trace_Trace$from_closure.prototype = {
    call$0() {
      return A.Trace_Trace$parse(this.trace.toString$0(0));
    },
    $signature: 168
  };
  A.Trace__parseVM_closure.prototype = {
    call$1(line) {
      return line.length !== 0;
    },
    $signature: 10
  };
  A.Trace$parseV8_closure.prototype = {
    call$1(line) {
      return !B.JSString_methods.startsWith$1(line, $.$get$_v8TraceLine());
    },
    $signature: 10
  };
  A.Trace$parseJSCore_closure.prototype = {
    call$1(line) {
      return line !== "\tat ";
    },
    $signature: 10
  };
  A.Trace$parseFirefox_closure.prototype = {
    call$1(line) {
      return line.length !== 0 && line !== "[native code]";
    },
    $signature: 10
  };
  A.Trace$parseFriendly_closure.prototype = {
    call$1(line) {
      return !B.JSString_methods.startsWith$1(line, "=====");
    },
    $signature: 10
  };
  A.Trace_terse_closure.prototype = {
    call$1(_) {
      return false;
    },
    $signature: 169
  };
  A.Trace_foldFrames_closure.prototype = {
    call$1(frame) {
      var t1;
      if (this.oldPredicate.call$1(frame))
        return true;
      if (frame.get$isCore())
        return true;
      if (frame.get$$package() === "stack_trace")
        return true;
      t1 = frame.get$member();
      t1.toString;
      if (!B.JSString_methods.contains$1(t1, "<async>"))
        return false;
      return frame.get$line() == null;
    },
    $signature: 169
  };
  A.Trace_foldFrames_closure0.prototype = {
    call$1(frame) {
      var t1, t2;
      if (frame instanceof A.UnparsedFrame || !this._box_0.predicate.call$1(frame))
        return frame;
      t1 = frame.get$library();
      t2 = $.$get$_terseRegExp();
      return new A.Frame(A.Uri_parse(A.stringReplaceAllUnchecked(t1, t2, "")), null, null, frame.get$member());
    },
    $signature: 315
  };
  A.Trace_toString_closure0.prototype = {
    call$1(frame) {
      return frame.get$location().length;
    },
    $signature: 165
  };
  A.Trace_toString_closure.prototype = {
    call$1(frame) {
      if (frame instanceof A.UnparsedFrame)
        return frame.toString$0(0) + "\n";
      return B.JSString_methods.padRight$1(frame.get$location(), this.longest) + "  " + A.S(frame.get$member()) + "\n";
    },
    $signature: 166
  };
  A.UnparsedFrame.prototype = {
    toString$0(_) {
      return this.member;
    },
    $isFrame: 1,
    get$uri() {
      return this.uri;
    },
    get$line() {
      return null;
    },
    get$column() {
      return null;
    },
    get$isCore() {
      return false;
    },
    get$library() {
      return "unparsed";
    },
    get$$package() {
      return null;
    },
    get$location() {
      return "unparsed";
    },
    get$member() {
      return this.member;
    }
  };
  A.TransformByHandlers_transformByHandlers_closure.prototype = {
    call$0() {
      var t2, subscription, t3, t4, _this = this, t1 = {};
      t1.valuesDone = false;
      t2 = _this.controller;
      subscription = _this._this.listen$3$onDone$onError(0, new A.TransformByHandlers_transformByHandlers__closure(_this.handleData, t2, _this.S), new A.TransformByHandlers_transformByHandlers__closure0(t1, _this.handleDone, t2), new A.TransformByHandlers_transformByHandlers__closure1(_this.handleError, t2));
      t3 = _this._box_1;
      t3.subscription = subscription;
      t2.set$onPause(subscription.get$pause(subscription));
      t4 = t3.subscription;
      t2.set$onResume(t4.get$resume(t4));
      t2.set$onCancel(new A.TransformByHandlers_transformByHandlers__closure2(t3, t1));
    },
    $signature: 0
  };
  A.TransformByHandlers_transformByHandlers__closure.prototype = {
    call$1(value) {
      return this.handleData.call$2(value, this.controller);
    },
    $signature() {
      return this.S._eval$1("~(0)");
    }
  };
  A.TransformByHandlers_transformByHandlers__closure1.prototype = {
    call$2(error, stackTrace) {
      this.handleError.call$3(error, stackTrace, this.controller);
    },
    $signature: 62
  };
  A.TransformByHandlers_transformByHandlers__closure0.prototype = {
    call$0() {
      this._box_0.valuesDone = true;
      this.handleDone.call$1(this.controller);
    },
    $signature: 0
  };
  A.TransformByHandlers_transformByHandlers__closure2.prototype = {
    call$0() {
      var t1 = this._box_1,
        toCancel = t1.subscription;
      t1.subscription = null;
      if (!this._box_0.valuesDone)
        return toCancel.cancel$0();
      return null;
    },
    $signature: 284
  };
  A.RateLimit__debounceAggregate_closure.prototype = {
    call$2(value, sink) {
      var _this = this,
        t1 = _this._box_0,
        t2 = new A.RateLimit__debounceAggregate_closure_emit(t1, sink, _this.S),
        t3 = t1.timer;
      if (t3 != null)
        t3.cancel$0();
      t1.soFar = _this.collect.call$2(value, t1.soFar);
      t1.hasPending = true;
      if (t1.timer == null && _this.leading) {
        t1.emittedLatestAsLeading = true;
        t2.call$0();
      } else
        t1.emittedLatestAsLeading = false;
      t1.timer = A.Timer_Timer(_this.duration, new A.RateLimit__debounceAggregate__closure(t1, _this.trailing, t2, sink));
    },
    $signature() {
      return this.T._eval$1("@<0>")._bind$1(this.S)._eval$1("~(1,EventSink<2>)");
    }
  };
  A.RateLimit__debounceAggregate_closure_emit.prototype = {
    call$0() {
      var t1 = this._box_0,
        t2 = t1.soFar;
      if (t2 == null)
        t2 = this.S._as(t2);
      this.sink.add$1(0, t2);
      t1.soFar = null;
      t1.hasPending = false;
    },
    $signature: 0
  };
  A.RateLimit__debounceAggregate__closure.prototype = {
    call$0() {
      var t1 = this._box_0,
        t2 = t1.emittedLatestAsLeading;
      if (!t2)
        this.emit.call$0();
      if (t1.shouldClose)
        this.sink.close$0(0);
      t1.timer = null;
    },
    $signature: 0
  };
  A.RateLimit__debounceAggregate_closure0.prototype = {
    call$1(sink) {
      var t1 = this._box_0;
      if (t1.hasPending && this.trailing)
        t1.shouldClose = true;
      else {
        t1 = t1.timer;
        if (t1 != null)
          t1.cancel$0();
        sink.close$0(0);
      }
    },
    $signature() {
      return this.S._eval$1("~(EventSink<0>)");
    }
  };
  A.StringScannerException.prototype = {
    get$source() {
      return A._asString(this.source);
    }
  };
  A.LineScanner.prototype = {
    scanChar$1(character) {
      if (!this.super$StringScanner$scanChar(character))
        return false;
      this._adjustLineAndColumn$1(character);
      return true;
    },
    _adjustLineAndColumn$1(character) {
      var t1, _this = this;
      if (character !== 10)
        t1 = character === 13 && _this.peekChar$0() !== 10;
      else
        t1 = true;
      if (t1) {
        ++_this._line_scanner$_line;
        _this._line_scanner$_column = 0;
      } else {
        t1 = _this._line_scanner$_column;
        _this._line_scanner$_column = t1 + (character >= 65536 && character <= 1114111 ? 2 : 1);
      }
    },
    scan$1(pattern) {
      var t1, newlines, t2, _this = this;
      if (!_this.super$StringScanner$scan(pattern))
        return false;
      t1 = _this.get$lastMatch();
      newlines = _this._newlinesIn$1(t1.pattern);
      t1 = _this._line_scanner$_line;
      t2 = newlines.length;
      _this._line_scanner$_line = t1 + t2;
      if (t2 === 0) {
        t1 = _this._line_scanner$_column;
        t2 = _this.get$lastMatch();
        _this._line_scanner$_column = t1 + t2.pattern.length;
      } else {
        t1 = _this.get$lastMatch();
        _this._line_scanner$_column = t1.pattern.length - J.get$end$z(B.JSArray_methods.get$last(newlines));
      }
      return true;
    },
    _newlinesIn$1(text) {
      var t1 = $.$get$_newlineRegExp().allMatches$1(0, text),
        newlines = A.List_List$of(t1, true, A._instanceType(t1)._eval$1("Iterable.E"));
      if (this.peekChar$1(-1) === 13 && this.peekChar$0() === 10)
        B.JSArray_methods.removeLast$0(newlines);
      return newlines;
    }
  };
  A.SpanScanner.prototype = {
    set$state(state) {
      if (state._scanner !== this)
        throw A.wrapException(A.ArgumentError$(string$.The_gi, null));
      this.set$position(state.position);
    },
    spanFrom$2(startState, endState) {
      var endPosition = endState == null ? this._string_scanner$_position : endState.position;
      return this._sourceFile.span$2(0, startState.position, endPosition);
    },
    spanFrom$1(startState) {
      return this.spanFrom$2(startState, null);
    },
    matches$1(pattern) {
      var t1, t2, _this = this;
      if (!_this.super$StringScanner$matches(pattern))
        return false;
      t1 = _this._string_scanner$_position;
      t2 = _this.get$lastMatch();
      _this._sourceFile.span$2(0, t1, t2.start + t2.pattern.length);
      return true;
    },
    error$3$length$position(_, message, $length, position) {
      var match, t2, _this = this,
        t1 = _this.string;
      A.validateErrorArgs(t1, null, position, $length);
      match = position == null && $length == null ? _this.get$lastMatch() : null;
      if (position == null)
        position = match == null ? _this._string_scanner$_position : match.start;
      if ($length == null)
        if (match == null)
          $length = 0;
        else {
          t2 = match.start;
          $length = t2 + match.pattern.length - t2;
        }
      throw A.wrapException(A.StringScannerException$(message, _this._sourceFile.span$2(0, position, position + $length), t1));
    },
    error$1($receiver, message) {
      return this.error$3$length$position($receiver, message, null, null);
    },
    error$2$position($receiver, message, position) {
      return this.error$3$length$position($receiver, message, null, position);
    },
    error$2$length($receiver, message, $length) {
      return this.error$3$length$position($receiver, message, $length, null);
    }
  };
  A._SpanScannerState.prototype = {};
  A.StringScanner.prototype = {
    set$position(position) {
      if (B.JSInt_methods.get$isNegative(position) || position > this.string.length)
        throw A.wrapException(A.ArgumentError$("Invalid position " + position, null));
      this._string_scanner$_position = position;
      this._lastMatch = null;
    },
    get$lastMatch() {
      var _this = this;
      if (_this._string_scanner$_position !== _this._lastMatchPosition)
        _this._lastMatch = null;
      return _this._lastMatch;
    },
    readChar$0() {
      var _this = this,
        t1 = _this.string;
      if (_this._string_scanner$_position === t1.length)
        _this._fail$1("more input");
      return t1.charCodeAt(_this._string_scanner$_position++);
    },
    peekChar$1(offset) {
      var index;
      if (offset == null)
        offset = 0;
      index = this._string_scanner$_position + offset;
      if (index < 0 || index >= this.string.length)
        return null;
      return this.string.charCodeAt(index);
    },
    peekChar$0() {
      return this.peekChar$1(null);
    },
    scanChar$1(character) {
      var t1, t2, t3, t4, _this = this;
      if (character >= 65536 && character <= 1114111) {
        t1 = _this._string_scanner$_position;
        t2 = t1 + 1;
        t3 = _this.string;
        if (t2 < t3.length) {
          t4 = character - 65536;
          t2 = t3.charCodeAt(t1) !== B.JSInt_methods._shrOtherPositive$1(t4, 10) + 55296 || t3.charCodeAt(t2) !== (t4 & 1023) + 56320;
        } else
          t2 = true;
        if (t2)
          return false;
        else {
          _this._string_scanner$_position = t1 + 2;
          return true;
        }
      } else {
        t1 = _this._string_scanner$_position;
        t2 = _this.string;
        if (t1 === t2.length)
          return false;
        if (t2.charCodeAt(t1) !== character)
          return false;
        _this._string_scanner$_position = t1 + 1;
        return true;
      }
    },
    expectChar$2$name(character, $name) {
      if (this.scanChar$1(character))
        return;
      if ($name == null)
        if (character === 92)
          $name = '"\\"';
        else
          $name = character === 34 ? '"\\""' : '"' + A.Primitives_stringFromCharCode(character) + '"';
      this._fail$1($name);
    },
    expectChar$1(character) {
      return this.expectChar$2$name(character, null);
    },
    scan$1(pattern) {
      var t1, _this = this,
        success = _this.matches$1(pattern);
      if (success) {
        t1 = _this._lastMatch;
        _this._lastMatchPosition = _this._string_scanner$_position = t1.start + t1.pattern.length;
      }
      return success;
    },
    expect$1(pattern) {
      var t1, $name;
      if (this.scan$1(pattern))
        return;
      t1 = A.stringReplaceAllUnchecked(pattern, "\\", "\\\\");
      $name = '"' + A.stringReplaceAllUnchecked(t1, '"', '\\"') + '"';
      this._fail$1($name);
    },
    expectDone$0() {
      if (this._string_scanner$_position === this.string.length)
        return;
      this._fail$1("no more input");
    },
    matches$1(pattern) {
      var _this = this,
        t1 = B.JSString_methods.matchAsPrefix$2(pattern, _this.string, _this._string_scanner$_position);
      _this._lastMatch = t1;
      _this._lastMatchPosition = _this._string_scanner$_position;
      return t1 != null;
    },
    substring$1(_, start) {
      var end = this._string_scanner$_position;
      return B.JSString_methods.substring$2(this.string, start, end);
    },
    error$3$length$position(_, message, $length, position) {
      var t1 = this.string;
      A.validateErrorArgs(t1, null, position, $length);
      throw A.wrapException(A.StringScannerException$(message, A.SourceFile$fromString(t1, this.sourceUrl).span$2(0, position, position + $length), t1));
    },
    _fail$1($name) {
      this.error$3$length$position(0, "expected " + $name + ".", 0, this._string_scanner$_position);
    }
  };
  A.AsciiGlyphSet.prototype = {
    glyphOrAscii$2(glyph, alternative) {
      return alternative;
    },
    get$horizontalLine() {
      return "-";
    },
    get$verticalLine() {
      return "|";
    },
    get$topLeftCorner() {
      return ",";
    },
    get$bottomLeftCorner() {
      return "'";
    },
    get$cross() {
      return "+";
    },
    get$upEnd() {
      return "'";
    },
    get$downEnd() {
      return ",";
    },
    get$horizontalLineBold() {
      return "=";
    }
  };
  A.UnicodeGlyphSet.prototype = {
    glyphOrAscii$2(glyph, alternative) {
      return glyph;
    },
    get$horizontalLine() {
      return "\u2500";
    },
    get$verticalLine() {
      return "\u2502";
    },
    get$topLeftCorner() {
      return "\u250c";
    },
    get$bottomLeftCorner() {
      return "\u2514";
    },
    get$cross() {
      return "\u253c";
    },
    get$upEnd() {
      return "\u2575";
    },
    get$downEnd() {
      return "\u2577";
    },
    get$horizontalLineBold() {
      return "\u2501";
    }
  };
  A.WatchEvent.prototype = {
    toString$0(_) {
      return this.type.toString$0(0) + " " + this.path;
    }
  };
  A.ChangeType.prototype = {
    toString$0(_) {
      return this._watch_event$_name;
    }
  };
  A.AnySelectorVisitor0.prototype = {
    visitComplexSelector$1(complex) {
      return B.JSArray_methods.any$1(complex.components, new A.AnySelectorVisitor_visitComplexSelector_closure0(this));
    },
    visitCompoundSelector$1(compound) {
      return B.JSArray_methods.any$1(compound.components, new A.AnySelectorVisitor_visitCompoundSelector_closure0(this));
    },
    visitPseudoSelector$1(pseudo) {
      var selector = pseudo.selector;
      return selector == null ? false : this.visitSelectorList$1(selector);
    },
    visitSelectorList$1(list) {
      return B.JSArray_methods.any$1(list.components, this.get$visitComplexSelector());
    },
    visitAttributeSelector$1(attribute) {
      return false;
    },
    visitClassSelector$1(klass) {
      return false;
    },
    visitIDSelector$1(id) {
      return false;
    },
    visitParentSelector$1($parent) {
      return false;
    },
    visitPlaceholderSelector$1(placeholder) {
      return false;
    },
    visitTypeSelector$1(type) {
      return false;
    },
    visitUniversalSelector$1(universal) {
      return false;
    }
  };
  A.AnySelectorVisitor_visitComplexSelector_closure0.prototype = {
    call$1(component) {
      return this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature: 52
  };
  A.AnySelectorVisitor_visitCompoundSelector_closure0.prototype = {
    call$1(simple) {
      return simple.accept$1(this.$this);
    },
    $signature: 15
  };
  A.SupportsAnything0.prototype = {
    toString$0(_) {
      return "(" + this.contents.toString$0(0) + ")";
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Argument0.prototype = {
    toString$0(_) {
      var t1 = this.defaultValue,
        t2 = this.name;
      return t1 == null ? t2 : t2 + ": " + t1.toString$0(0);
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ArgumentDeclaration0.prototype = {
    get$spanWithName() {
      var t3, t4,
        t1 = this.span,
        t2 = t1.file,
        text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2._decodedChars, 0, null), 0, null),
        i = A.FileLocation$_(t2, t1._file$_start).offset - 1;
      while (true) {
        if (i > 0) {
          t3 = text.charCodeAt(i);
          t3 = t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12;
        } else
          t3 = false;
        if (!t3)
          break;
        --i;
      }
      t3 = text.charCodeAt(i);
      if (!(t3 === 95 || A.CharacterExtension_get_isAlphabetic0(t3) || t3 >= 128))
        t3 = t3 >= 48 && t3 <= 57 || t3 === 45;
      else
        t3 = true;
      if (!t3)
        return t1;
      --i;
      while (true) {
        if (i >= 0) {
          t3 = text.charCodeAt(i);
          if (t3 !== 95) {
            if (!(t3 >= 97 && t3 <= 122))
              t4 = t3 >= 65 && t3 <= 90;
            else
              t4 = true;
            t4 = t4 || t3 >= 128;
          } else
            t4 = true;
          if (!t4)
            t3 = t3 >= 48 && t3 <= 57 || t3 === 45;
          else
            t3 = true;
        } else
          t3 = false;
        if (!t3)
          break;
        --i;
      }
      t3 = i + 1;
      t4 = text.charCodeAt(t3);
      if (!(t4 === 95 || A.CharacterExtension_get_isAlphabetic0(t4) || t4 >= 128))
        return t1;
      return A.SpanExtensions_trimRight0(A.SpanExtensions_trimLeft0(t2.span$2(0, t3, A.FileLocation$_(t2, t1._end).offset)));
    },
    verify$2(positional, names) {
      var t1, t2, t3, namedUsed, i, argument, t4, unknownNames, _this = this,
        _s10_ = "invocation",
        _s8_ = "argument";
      for (t1 = _this.$arguments, t2 = t1.length, t3 = names._baseMap, namedUsed = 0, i = 0; i < t2; ++i) {
        argument = t1[i];
        if (i < positional) {
          t4 = argument.name;
          if (t3.containsKey$1(t4))
            throw A.wrapException(A.SassScriptException$0("Argument " + _this._argument_declaration$_originalArgumentName$1(t4) + string$.x20was_p, null));
        } else {
          t4 = argument.name;
          if (t3.containsKey$1(t4))
            ++namedUsed;
          else if (argument.defaultValue == null)
            throw A.wrapException(A.MultiSpanSassScriptException$0("Missing argument " + _this._argument_declaration$_originalArgumentName$1(t4) + ".", _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], type$.FileSpan, type$.String)));
        }
      }
      if (_this.restArgument != null)
        return;
      if (positional > t2) {
        t1 = names.get$isEmpty(names) ? "" : "positional ";
        throw A.wrapException(A.MultiSpanSassScriptException$0("Only " + t2 + " " + t1 + A.pluralize0(_s8_, t2, null) + " allowed, but " + positional + " " + A.pluralize0("was", positional, "were") + " passed.", _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], type$.FileSpan, type$.String)));
      }
      if (namedUsed < t3.get$length(t3)) {
        t2 = type$.String;
        unknownNames = A.LinkedHashSet_LinkedHashSet$of(names, t2);
        unknownNames.removeAll$1(new A.MappedListIterable(t1, new A.ArgumentDeclaration_verify_closure1(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Object?>")));
        throw A.wrapException(A.MultiSpanSassScriptException$0("No " + A.pluralize0(_s8_, unknownNames._collection$_length, null) + " named " + A.toSentence0(unknownNames.map$1$1(0, new A.ArgumentDeclaration_verify_closure2(), type$.Object), "or") + ".", _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_this.get$spanWithName(), "declaration"], type$.FileSpan, t2)));
      }
    },
    _argument_declaration$_originalArgumentName$1($name) {
      var t1, text, t2, _i, argument, t3, t4, end, _null = null;
      if ($name === this.restArgument) {
        t1 = this.span;
        text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.file._decodedChars, t1._file$_start, t1._end), 0, _null);
        return B.JSString_methods.substring$2(B.JSString_methods.substring$1(text, B.JSString_methods.lastIndexOf$1(text, "$")), 0, B.JSString_methods.indexOf$1(text, "."));
      }
      for (t1 = this.$arguments, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        argument = t1[_i];
        if (argument.name === $name) {
          t1 = argument.defaultValue;
          t2 = argument.span;
          t3 = t2.file;
          t4 = t2._file$_start;
          t2 = t2._end;
          if (t1 == null) {
            t1 = t3._decodedChars;
            t1 = A.String_String$fromCharCodes(new Uint32Array(t1.subarray(t4, A._checkValidRange(t4, t2, t1.length))), 0, _null);
          } else {
            t1 = t3._decodedChars;
            text = A.String_String$fromCharCodes(new Uint32Array(t1.subarray(t4, A._checkValidRange(t4, t2, t1.length))), 0, _null);
            t1 = B.JSString_methods.substring$2(text, 0, B.JSString_methods.indexOf$1(text, ":"));
            end = A._lastNonWhitespace0(t1, false);
            t1 = end == null ? "" : B.JSString_methods.substring$2(t1, 0, end + 1);
          }
          return t1;
        }
      }
      throw A.wrapException(A.ArgumentError$(string$.This_d + $name + '".', _null));
    },
    matches$2(positional, names) {
      var t1, t2, t3, namedUsed, i, argument;
      for (t1 = this.$arguments, t2 = t1.length, t3 = names._baseMap, namedUsed = 0, i = 0; i < t2; ++i) {
        argument = t1[i];
        if (i < positional) {
          if (t3.containsKey$1(argument.name))
            return false;
        } else if (t3.containsKey$1(argument.name))
          ++namedUsed;
        else if (argument.defaultValue == null)
          return false;
      }
      if (this.restArgument != null)
        return true;
      if (positional > t2)
        return false;
      if (namedUsed < t3.get$length(t3))
        return false;
      return true;
    },
    toString$0(_) {
      var t2, t3, _i,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = this.$arguments, t3 = t2.length, _i = 0; _i < t3; ++_i)
        t1.push("$" + A.S(t2[_i]));
      t2 = this.restArgument;
      if (t2 != null)
        t1.push("$" + t2 + "...");
      return B.JSArray_methods.join$1(t1, ", ");
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ArgumentDeclaration_verify_closure1.prototype = {
    call$1(argument) {
      return argument.name;
    },
    $signature: 319
  };
  A.ArgumentDeclaration_verify_closure2.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A.ArgumentInvocation0.prototype = {
    get$isEmpty(_) {
      var t1;
      if (this.positional.length === 0) {
        t1 = this.named;
        t1 = t1.get$isEmpty(t1) && this.rest == null;
      } else
        t1 = false;
      return t1;
    },
    toString$0(_) {
      var t2, t3, _i, $name, value, _1_0, rest, _2_0, keywordRest, _this = this,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = _this.positional, t3 = t2.length, _i = 0; _i < t3; ++_i)
        t1.push(_this._argument_invocation$_parenthesizeArgument$1(t2[_i]));
      for (t2 = A.MapExtensions_get_pairs0(_this.named, type$.String, type$.Expression_2), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        $name = t3._0;
        value = t3._1;
        t1.push("$" + $name + ": " + _this._argument_invocation$_parenthesizeArgument$1(value));
      }
      _1_0 = _this.rest;
      if (_1_0 != null) {
        rest = _1_0;
        t2 = true;
      } else {
        rest = null;
        t2 = false;
      }
      if (t2)
        t1.push(_this._argument_invocation$_parenthesizeArgument$1(rest) + "...");
      _2_0 = _this.keywordRest;
      if (_2_0 != null) {
        keywordRest = _2_0;
        t2 = true;
      } else {
        keywordRest = null;
        t2 = false;
      }
      if (t2)
        t1.push(_this._argument_invocation$_parenthesizeArgument$1(keywordRest) + "...");
      return "(" + B.JSArray_methods.join$1(t1, ", ") + ")";
    },
    _argument_invocation$_parenthesizeArgument$1(argument) {
      var t1;
      $label0$0: {
        if (argument instanceof A.ListExpression0 && B.ListSeparator_rXA0 === argument.separator && !argument.hasBrackets && argument.contents.length >= 2) {
          t1 = "(" + argument.toString$0(0) + ")";
          break $label0$0;
        }
        t1 = argument.toString$0(0);
        break $label0$0;
      }
      return t1;
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.argumentListClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassArgumentList", new A.argumentListClass__closure()));
      A.defineGetter(J.get$$prototype$x(jsClass), "keywords", new A.argumentListClass__closure0(), null);
      A.JSClassExtension_injectSuperclass(t1._as(A.SassArgumentList$0(A._setArrayType([], type$.JSArray_Value_2), A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.Value_2), B.ListSeparator_undecided_null_undecided0).constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.argumentListClass__closure.prototype = {
    call$4($self, contents, keywords, separator) {
      var t3,
        t1 = self.immutable.isOrderedMap(contents) ? J.toArray$0$x(type$.ImmutableList._as(contents)) : type$.List_dynamic._as(contents),
        t2 = type$.Value_2;
      t1 = J.cast$1$0$ax(t1, t2);
      t3 = self.immutable.isOrderedMap(keywords) ? A.immutableMapToDartMap(type$.ImmutableMap._as(keywords)) : A.objectToMap(keywords);
      return A.SassArgumentList$0(t1, t3.cast$2$0(0, type$.String, t2), A.jsToDartSeparator(separator));
    },
    call$3($self, contents, keywords) {
      return this.call$4($self, contents, keywords, ",");
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [","];
    },
    $signature: 321
  };
  A.argumentListClass__closure0.prototype = {
    call$1($self) {
      $self._argument_list$_wereKeywordsAccessed = true;
      return A.dartMapToImmutableMap($self._argument_list$_keywords);
    },
    $signature: 322
  };
  A.SassArgumentList0.prototype = {};
  A.JSArray1.prototype = {};
  A.AsyncImporter0.prototype = {
    isNonCanonicalScheme$1(scheme) {
      return false;
    }
  };
  A.JSToDartAsyncImporter.prototype = {
    canonicalize$1(_, url) {
      return this.canonicalize$body$JSToDartAsyncImporter(0, url);
    },
    canonicalize$body$JSToDartAsyncImporter(_, url) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Uri),
        $async$returnValue, $async$self = this, t1, result;
      var $async$canonicalize$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              result = A.wrapJSExceptions(new A.JSToDartAsyncImporter_canonicalize_closure($async$self, url));
              $async$goto = result != null && result instanceof self.Promise ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.promiseToFuture(type$.Promise._as(result), type$.nullable_Object), $async$canonicalize$1);
            case 5:
              // returning from await.
              result = $async$result;
            case 4:
              // join
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = self.URL;
              if (result instanceof t1) {
                $async$returnValue = A.Uri_parse(J.toString$0$(type$.JSUrl._as(result)));
                // goto return
                $async$goto = 1;
                break;
              }
              A.jsThrow(new self.Error(string$.The_ca));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$canonicalize$1, $async$completer);
    },
    load$1(_, url) {
      return this.load$body$JSToDartAsyncImporter(0, url);
    },
    load$body$JSToDartAsyncImporter(_, url) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_ImporterResult),
        $async$returnValue, $async$self = this, t1, contents, syntax, t2, result;
      var $async$load$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              result = A.wrapJSExceptions(new A.JSToDartAsyncImporter_load_closure($async$self, url));
              $async$goto = result != null && result instanceof self.Promise ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.promiseToFuture(type$.Promise._as(result), type$.nullable_Object), $async$load$1);
            case 5:
              // returning from await.
              result = $async$result;
            case 4:
              // join
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              type$.JSImporterResult._as(result);
              t1 = J.getInterceptor$x(result);
              contents = t1.get$contents(result);
              if (A._asString(new self.Function("value", "return typeof value").call$1(contents)) !== "string")
                A.jsThrow(new A.ArgumentError(true, contents, "contents", "must be a string but was: " + A.jsType(contents)));
              syntax = t1.get$syntax(result);
              if (contents == null || syntax == null)
                A.jsThrow(new self.Error(string$.The_lo));
              t2 = A.parseSyntax(syntax);
              $async$returnValue = A.ImporterResult$(contents, A.NullableExtension_andThen0(t1.get$sourceMapUrl(result), A.utils1__jsToDartUrl$closure()), t2);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$load$1, $async$completer);
    },
    isNonCanonicalScheme$1(scheme) {
      return this._nonCanonicalSchemes.contains$1(0, scheme);
    }
  };
  A.JSToDartAsyncImporter_canonicalize_closure.prototype = {
    call$0() {
      return this.$this._async0$_canonicalize.call$2(this.url.toString$0(0), {fromImport: A.fromImport0(), containingUrl: A.NullableExtension_andThen0(A.containingUrl(), A.utils1__dartToJSUrl$closure())});
    },
    $signature: 28
  };
  A.JSToDartAsyncImporter_load_closure.prototype = {
    call$0() {
      return this.$this._load.call$1(new self.URL(this.url.toString$0(0)));
    },
    $signature: 28
  };
  A.AsyncBuiltInCallable0.prototype = {
    callbackFor$2(positional, names) {
      return new A._Record_2(this._async_built_in0$_arguments, this._async_built_in0$_callback);
    },
    $isAsyncCallable0: 1,
    get$name(receiver) {
      return this.name;
    },
    get$acceptsContent() {
      return this.acceptsContent;
    }
  };
  A.AsyncBuiltInCallable$mixin_closure0.prototype = {
    call$1($arguments) {
      return this.$call$body$AsyncBuiltInCallable$mixin_closure0($arguments);
    },
    $call$body$AsyncBuiltInCallable$mixin_closure0($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self.callback.call$1($arguments), $async$call$1);
            case 3:
              // returning from await.
              $async$returnValue = B.C__SassNull0;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 99
  };
  A._compileStylesheet_closure2.prototype = {
    call$1(url) {
      return url === "" ? A.Uri_Uri$dataFromString(A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(this.stylesheet.span.file._decodedChars, 0, null), 0, null), B.C_Utf8Codec, null).get$_text() : this.importCache.sourceMapUrl$1(0, A.Uri_parse(url)).toString$0(0);
    },
    $signature: 7
  };
  A.AsyncEnvironment0.prototype = {
    closure$0() {
      var t4, t5, t6, _this = this,
        t1 = _this._async_environment0$_forwardedModules,
        t2 = _this._async_environment0$_nestedForwardedModules,
        t3 = _this._async_environment0$_variables;
      t3 = A._setArrayType(t3.slice(0), A._arrayInstanceType(t3));
      t4 = _this._async_environment0$_variableNodes;
      t4 = A._setArrayType(t4.slice(0), A._arrayInstanceType(t4));
      t5 = _this._async_environment0$_functions;
      t5 = A._setArrayType(t5.slice(0), A._arrayInstanceType(t5));
      t6 = _this._async_environment0$_mixins;
      t6 = A._setArrayType(t6.slice(0), A._arrayInstanceType(t6));
      return A.AsyncEnvironment$_0(_this._async_environment0$_modules, _this._async_environment0$_namespaceNodes, _this._async_environment0$_globalModules, _this._async_environment0$_importedModules, t1, t2, _this._async_environment0$_allModules, t3, t4, t5, t6, _this._async_environment0$_content);
    },
    forwardModule$2(module, rule) {
      var view, t1, t2, _this = this,
        forwardedModules = _this._async_environment0$_forwardedModules;
      if (forwardedModules == null)
        forwardedModules = _this._async_environment0$_forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_AsyncCallable_2, type$.AstNode_2);
      view = A.ForwardedModuleView_ifNecessary0(module, rule, type$.AsyncCallable_2);
      for (t1 = A.LinkedHashMapKeyIterator$(forwardedModules, forwardedModules._modifications); t1.moveNext$0();) {
        t2 = t1.__js_helper$_current;
        _this._async_environment0$_assertNoConflicts$5(view.get$variables(), t2.get$variables(), view, t2, "variable");
        _this._async_environment0$_assertNoConflicts$5(view.get$functions(view), t2.get$functions(t2), view, t2, "function");
        _this._async_environment0$_assertNoConflicts$5(view.get$mixins(), t2.get$mixins(), view, t2, "mixin");
      }
      _this._async_environment0$_allModules.push(module);
      forwardedModules.$indexSet(0, view, rule);
    },
    _async_environment0$_assertNoConflicts$5(newMembers, oldMembers, newModule, oldModule, type) {
      var larger, smaller, t1, t2, t3, t4, $name, small, large, span;
      if (newMembers.get$length(newMembers) < oldMembers.get$length(oldMembers)) {
        larger = oldMembers;
        smaller = newMembers;
      } else {
        larger = newMembers;
        smaller = oldMembers;
      }
      for (t1 = type$.String, t2 = A.MapExtensions_get_pairs0(smaller, t1, type$.Object), t2 = t2.get$iterator(t2), t3 = type === "variable"; t2.moveNext$0();) {
        t4 = t2.get$current(t2);
        $name = t4._0;
        small = t4._1;
        small = small;
        large = larger.$index(0, $name);
        if (large == null)
          continue;
        if (t3 ? newModule.variableIdentity$1($name) === oldModule.variableIdentity$1($name) : J.$eq$(large, small))
          continue;
        if (t3)
          $name = "$" + $name;
        t2 = this._async_environment0$_forwardedModules;
        if (t2 == null)
          span = null;
        else {
          t2 = t2.$index(0, oldModule);
          span = t2 == null ? null : J.get$span$z(t2);
        }
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, t1);
        if (span != null)
          t2.$indexSet(0, span, "original @forward");
        throw A.wrapException(A.MultiSpanSassScriptException$0("Two forwarded modules both define a " + type + " named " + $name + ".", "new @forward", t2));
      }
    },
    importForwards$1(module) {
      var forwardedModules, t1, t2, t3, t4, node, t5, t6, t7, t8, t9, t10, _i, t11, shadowed, _length, _list, _this = this,
        forwarded = module._async_environment0$_environment._async_environment0$_forwardedModules;
      if (forwarded == null)
        return;
      forwardedModules = _this._async_environment0$_forwardedModules;
      if (forwardedModules != null) {
        t1 = type$.Module_AsyncCallable_2;
        t2 = type$.AstNode_2;
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t1 = A.MapExtensions_get_pairs0(forwarded, t1, t2), t1 = t1.get$iterator(t1), t2 = _this._async_environment0$_globalModules; t1.moveNext$0();) {
          t4 = t1.get$current(t1);
          module = t4._0;
          node = t4._1;
          if (!forwardedModules.containsKey$1(module) || !t2.containsKey$1(module))
            t3.$indexSet(0, module, node);
        }
        forwarded = t3;
      } else
        forwardedModules = _this._async_environment0$_forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_AsyncCallable_2, type$.AstNode_2);
      t1 = type$.String;
      t2 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t3 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t3.moveNext$0();)
        for (t4 = t3.__js_helper$_current.get$variables(), t4 = J.get$iterator$ax(t4.get$keys(t4)); t4.moveNext$0();)
          t2.add$1(0, t4.get$current(t4));
      t3 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();) {
        t5 = t4.__js_helper$_current;
        for (t5 = t5.get$functions(t5), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t3.add$1(0, t5.get$current(t5));
      }
      t1 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();)
        for (t5 = t4.__js_helper$_current.get$mixins(), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t1.add$1(0, t5.get$current(t5));
      t4 = _this._async_environment0$_variables;
      t5 = t4.length;
      if (t5 === 1) {
        for (t5 = _this._async_environment0$_importedModules, t6 = type$.Module_AsyncCallable_2, t7 = type$.AstNode_2, t8 = A.MapExtensions_get_pairs0(t5, t6, t7).toList$0(0), t9 = t8.length, t10 = type$.AsyncCallable_2, _i = 0; _i < t8.length; t8.length === t9 || (0, A.throwConcurrentModificationError)(t8), ++_i) {
          t11 = t8[_i];
          module = t11._0;
          node = t11._1;
          shadowed = A.ShadowedModuleView_ifNecessary0(module, t3, t1, t2, t10);
          if (shadowed != null) {
            t5.remove$1(0, module);
            t11 = shadowed.variables;
            if (t11.get$isEmpty(t11)) {
              t11 = shadowed.functions;
              if (t11.get$isEmpty(t11)) {
                t11 = shadowed.mixins;
                if (t11.get$isEmpty(t11)) {
                  t11 = shadowed._shadowed_view0$_inner;
                  t11 = t11.get$css(t11);
                  t11 = J.get$isEmpty$asx(t11.get$children(t11));
                } else
                  t11 = false;
              } else
                t11 = false;
            } else
              t11 = false;
            if (!t11)
              t5.$indexSet(0, shadowed, node);
          }
        }
        for (t6 = A.MapExtensions_get_pairs0(forwardedModules, t6, t7).toList$0(0), t7 = t6.length, _i = 0; _i < t6.length; t6.length === t7 || (0, A.throwConcurrentModificationError)(t6), ++_i) {
          t8 = t6[_i];
          module = t8._0;
          node = t8._1;
          shadowed = A.ShadowedModuleView_ifNecessary0(module, t3, t1, t2, t10);
          if (shadowed != null) {
            forwardedModules.remove$1(0, module);
            t8 = shadowed.variables;
            if (t8.get$isEmpty(t8)) {
              t8 = shadowed.functions;
              if (t8.get$isEmpty(t8)) {
                t8 = shadowed.mixins;
                if (t8.get$isEmpty(t8)) {
                  t8 = shadowed._shadowed_view0$_inner;
                  t8 = t8.get$css(t8);
                  t8 = J.get$isEmpty$asx(t8.get$children(t8));
                } else
                  t8 = false;
              } else
                t8 = false;
            } else
              t8 = false;
            if (!t8)
              forwardedModules.$indexSet(0, shadowed, node);
          }
        }
        t5.addAll$1(0, forwarded);
        forwardedModules.addAll$1(0, forwarded);
      } else {
        t6 = _this._async_environment0$_nestedForwardedModules;
        if (t6 == null) {
          _length = t5 - 1;
          _list = J.JSArray_JSArray$allocateGrowable(_length, type$.List_Module_AsyncCallable_2);
          for (t5 = type$.JSArray_Module_AsyncCallable_2, _i = 0; _i < _length; ++_i)
            _list[_i] = A._setArrayType([], t5);
          _this._async_environment0$_nestedForwardedModules = _list;
          t5 = _list;
        } else
          t5 = t6;
        B.JSArray_methods.addAll$1(B.JSArray_methods.get$last(t5), new A.LinkedHashMapKeyIterable(forwarded, A._instanceType(forwarded)._eval$1("LinkedHashMapKeyIterable<1>")));
      }
      for (t2 = A._LinkedHashSetIterator$(t2, t2._collection$_modifications), t5 = _this._async_environment0$_variableIndices, t6 = _this._async_environment0$_variableNodes, t7 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t8 = t2._collection$_current;
        if (t8 == null)
          t8 = t7._as(t8);
        t5.remove$1(0, t8);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t8);
        J.remove$1$z(B.JSArray_methods.get$last(t6), t8);
      }
      for (t2 = A._LinkedHashSetIterator$(t3, t3._collection$_modifications), t3 = _this._async_environment0$_functionIndices, t4 = _this._async_environment0$_functions, t5 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t6 = t2._collection$_current;
        if (t6 == null)
          t6 = t5._as(t6);
        t3.remove$1(0, t6);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t6);
      }
      for (t1 = A._LinkedHashSetIterator$(t1, t1._collection$_modifications), t2 = _this._async_environment0$_mixinIndices, t3 = _this._async_environment0$_mixins, t4 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t5 = t1._collection$_current;
        if (t5 == null)
          t5 = t4._as(t5);
        t2.remove$1(0, t5);
        J.remove$1$z(B.JSArray_methods.get$last(t3), t5);
      }
    },
    getVariable$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._async_environment0$_getModule$1(namespace).get$variables().$index(0, $name);
      if (_this._async_environment0$_lastVariableName === $name) {
        t1 = _this._async_environment0$_lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._async_environment0$_variables[t1], $name);
        return t1 == null ? _this._async_environment0$_getVariableFromGlobalModule$1($name) : t1;
      }
      t1 = _this._async_environment0$_variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._async_environment0$_lastVariableName = $name;
        _this._async_environment0$_lastVariableIndex = index;
        t1 = J.$index$asx(_this._async_environment0$_variables[index], $name);
        return t1 == null ? _this._async_environment0$_getVariableFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment0$_variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._async_environment0$_lastVariableName = $name;
          _this._async_environment0$_lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment0$_variables[index], $name);
          return t1 == null ? _this._async_environment0$_getVariableFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment0$_getVariableFromGlobalModule$1($name);
      }
    },
    getVariable$1($name) {
      return this.getVariable$2$namespace($name, null);
    },
    _async_environment0$_getVariableFromGlobalModule$1($name) {
      return this._async_environment0$_fromOneModule$3($name, "variable", new A.AsyncEnvironment__getVariableFromGlobalModule_closure0($name));
    },
    getVariableNode$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._async_environment0$_getModule$1(namespace).get$variableNodes().$index(0, $name);
      if (_this._async_environment0$_lastVariableName === $name) {
        t1 = _this._async_environment0$_lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._async_environment0$_variableNodes[t1], $name);
        return t1 == null ? _this._async_environment0$_getVariableNodeFromGlobalModule$1($name) : t1;
      }
      t1 = _this._async_environment0$_variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._async_environment0$_lastVariableName = $name;
        _this._async_environment0$_lastVariableIndex = index;
        t1 = J.$index$asx(_this._async_environment0$_variableNodes[index], $name);
        return t1 == null ? _this._async_environment0$_getVariableNodeFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment0$_variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._async_environment0$_lastVariableName = $name;
          _this._async_environment0$_lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment0$_variableNodes[index], $name);
          return t1 == null ? _this._async_environment0$_getVariableNodeFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment0$_getVariableNodeFromGlobalModule$1($name);
      }
    },
    _async_environment0$_getVariableNodeFromGlobalModule$1($name) {
      var t1, t2, _0_0, value;
      for (t1 = this._async_environment0$_importedModules, t2 = this._async_environment0$_globalModules, t2 = new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>")).followedBy$1(0, new A.LinkedHashMapKeyIterable(t2, A._instanceType(t2)._eval$1("LinkedHashMapKeyIterable<1>"))), t2 = new A.FollowedByIterator(J.get$iterator$ax(t2.__internal$_first), t2._second); t2.moveNext$0();) {
        t1 = t2._currentIterator;
        _0_0 = t1.get$current(t1).get$variableNodes().$index(0, $name);
        if (_0_0 != null) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1)
          return value;
      }
      return null;
    },
    globalVariableExists$2$namespace($name, namespace) {
      if (namespace != null)
        return this._async_environment0$_getModule$1(namespace).get$variables().containsKey$1($name);
      if (B.JSArray_methods.get$first(this._async_environment0$_variables).containsKey$1($name))
        return true;
      return this._async_environment0$_getVariableFromGlobalModule$1($name) != null;
    },
    globalVariableExists$1($name) {
      return this.globalVariableExists$2$namespace($name, null);
    },
    _async_environment0$_variableIndex$1($name) {
      var t1, i;
      for (t1 = this._async_environment0$_variables, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    setVariable$5$global$namespace($name, value, nodeWithSpan, global, namespace) {
      var t1, moduleWithName, nestedForwardedModules, t2, t3, t4, t5, index, _this = this;
      if (namespace != null) {
        _this._async_environment0$_getModule$1(namespace).setVariable$3($name, value, nodeWithSpan);
        return;
      }
      if (global || _this._async_environment0$_variables.length === 1) {
        _this._async_environment0$_variableIndices.putIfAbsent$2($name, new A.AsyncEnvironment_setVariable_closure2(_this, $name));
        t1 = _this._async_environment0$_variables;
        if (!B.JSArray_methods.get$first(t1).containsKey$1($name)) {
          moduleWithName = _this._async_environment0$_fromOneModule$3($name, "variable", new A.AsyncEnvironment_setVariable_closure3($name));
          if (moduleWithName != null) {
            moduleWithName.setVariable$3($name, value, nodeWithSpan);
            return;
          }
        }
        J.$indexSet$ax(B.JSArray_methods.get$first(t1), $name, value);
        J.$indexSet$ax(B.JSArray_methods.get$first(_this._async_environment0$_variableNodes), $name, nodeWithSpan);
        return;
      }
      nestedForwardedModules = _this._async_environment0$_nestedForwardedModules;
      if (nestedForwardedModules != null && !_this._async_environment0$_variableIndices.containsKey$1($name) && _this._async_environment0$_variableIndex$1($name) == null)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            if (t5 == null)
              t5 = t4._as(t5);
            if (t5.get$variables().containsKey$1($name)) {
              t5.setVariable$3($name, value, nodeWithSpan);
              return;
            }
          }
        }
      if (_this._async_environment0$_lastVariableName === $name) {
        t1 = _this._async_environment0$_lastVariableIndex;
        t1.toString;
        index = t1;
      } else
        index = _this._async_environment0$_variableIndices.putIfAbsent$2($name, new A.AsyncEnvironment_setVariable_closure4(_this, $name));
      if (!_this._async_environment0$_inSemiGlobalScope && index === 0) {
        index = _this._async_environment0$_variables.length - 1;
        _this._async_environment0$_variableIndices.$indexSet(0, $name, index);
      }
      _this._async_environment0$_lastVariableName = $name;
      _this._async_environment0$_lastVariableIndex = index;
      J.$indexSet$ax(_this._async_environment0$_variables[index], $name, value);
      J.$indexSet$ax(_this._async_environment0$_variableNodes[index], $name, nodeWithSpan);
    },
    setVariable$4$global($name, value, nodeWithSpan, global) {
      return this.setVariable$5$global$namespace($name, value, nodeWithSpan, global, null);
    },
    setLocalVariable$3($name, value, nodeWithSpan) {
      var index, _this = this,
        t1 = _this._async_environment0$_variables,
        t2 = t1.length;
      _this._async_environment0$_lastVariableName = $name;
      index = _this._async_environment0$_lastVariableIndex = t2 - 1;
      _this._async_environment0$_variableIndices.$indexSet(0, $name, index);
      J.$indexSet$ax(t1[index], $name, value);
      J.$indexSet$ax(_this._async_environment0$_variableNodes[index], $name, nodeWithSpan);
    },
    getFunction$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null) {
        t1 = _this._async_environment0$_getModule$1(namespace);
        return t1.get$functions(t1).$index(0, $name);
      }
      t1 = _this._async_environment0$_functionIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._async_environment0$_functions[index], $name);
        return t1 == null ? _this._async_environment0$_getFunctionFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment0$_functionIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment0$_functions[index], $name);
          return t1 == null ? _this._async_environment0$_getFunctionFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment0$_getFunctionFromGlobalModule$1($name);
      }
    },
    getFunction$1($name) {
      return this.getFunction$2$namespace($name, null);
    },
    _async_environment0$_getFunctionFromGlobalModule$1($name) {
      return this._async_environment0$_fromOneModule$3($name, "function", new A.AsyncEnvironment__getFunctionFromGlobalModule_closure0($name));
    },
    _async_environment0$_functionIndex$1($name) {
      var t1, i;
      for (t1 = this._async_environment0$_functions, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    getMixin$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._async_environment0$_getModule$1(namespace).get$mixins().$index(0, $name);
      t1 = _this._async_environment0$_mixinIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._async_environment0$_mixins[index], $name);
        return t1 == null ? _this._async_environment0$_getMixinFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._async_environment0$_mixinIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._async_environment0$_mixins[index], $name);
          return t1 == null ? _this._async_environment0$_getMixinFromGlobalModule$1($name) : t1;
        } else
          return _this._async_environment0$_getMixinFromGlobalModule$1($name);
      }
    },
    _async_environment0$_getMixinFromGlobalModule$1($name) {
      return this._async_environment0$_fromOneModule$3($name, "mixin", new A.AsyncEnvironment__getMixinFromGlobalModule_closure0($name));
    },
    _async_environment0$_mixinIndex$1($name) {
      var t1, i;
      for (t1 = this._async_environment0$_mixins, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    withContent$2($content, callback) {
      return this.withContent$body$AsyncEnvironment0($content, callback);
    },
    withContent$body$AsyncEnvironment0($content, callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, oldContent;
      var $async$withContent$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldContent = $async$self._async_environment0$_content;
              $async$self._async_environment0$_content = $content;
              $async$goto = 2;
              return A._asyncAwait(callback.call$0(), $async$withContent$2);
            case 2:
              // returning from await.
              $async$self._async_environment0$_content = oldContent;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$withContent$2, $async$completer);
    },
    asMixin$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, oldInMixin;
      var $async$asMixin$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldInMixin = $async$self._async_environment0$_inMixin;
              $async$self._async_environment0$_inMixin = true;
              $async$goto = 2;
              return A._asyncAwait(callback.call$0(), $async$asMixin$1);
            case 2:
              // returning from await.
              $async$self._async_environment0$_inMixin = oldInMixin;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$asMixin$1, $async$completer);
    },
    scope$1$3$semiGlobal$when(callback, semiGlobal, when, $T) {
      return this.scope$body$AsyncEnvironment0(callback, semiGlobal, when, $T, $T);
    },
    scope$1$1(callback, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, true, $T);
    },
    scope$1$2$when(callback, when, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, when, $T);
    },
    scope$1$2$semiGlobal(callback, semiGlobal, $T) {
      return this.scope$1$3$semiGlobal$when(callback, semiGlobal, true, $T);
    },
    scope$body$AsyncEnvironment0(callback, semiGlobal, when, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, wasInSemiGlobalScope, $name, name0, name1, t1, t2, t3, t4, t5, t6;
      var $async$scope$1$3$semiGlobal$when = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              semiGlobal = semiGlobal && $async$self._async_environment0$_inSemiGlobalScope;
              wasInSemiGlobalScope = $async$self._async_environment0$_inSemiGlobalScope;
              $async$self._async_environment0$_inSemiGlobalScope = semiGlobal;
              $async$goto = !when ? 3 : 4;
              break;
            case 3:
              // then
              $async$handler = 5;
              $async$goto = 8;
              return A._asyncAwait(callback.call$0(), $async$scope$1$3$semiGlobal$when);
            case 8:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              $async$next = [1];
              // goto finally
              $async$goto = 6;
              break;
              $async$next.push(7);
              // goto finally
              $async$goto = 6;
              break;
            case 5:
              // uncaught
              $async$next = [2];
            case 6:
              // finally
              $async$handler = 2;
              $async$self._async_environment0$_inSemiGlobalScope = wasInSemiGlobalScope;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 7:
              // after finally
            case 4:
              // join
              t1 = $async$self._async_environment0$_variables;
              t2 = type$.String;
              B.JSArray_methods.add$1(t1, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.Value_2));
              t3 = $async$self._async_environment0$_variableNodes;
              B.JSArray_methods.add$1(t3, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.AstNode_2));
              t4 = $async$self._async_environment0$_functions;
              t5 = type$.AsyncCallable_2;
              B.JSArray_methods.add$1(t4, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
              t6 = $async$self._async_environment0$_mixins;
              B.JSArray_methods.add$1(t6, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
              t5 = $async$self._async_environment0$_nestedForwardedModules;
              if (t5 != null)
                t5.push(A._setArrayType([], type$.JSArray_Module_AsyncCallable_2));
              $async$handler = 9;
              $async$goto = 12;
              return A._asyncAwait(callback.call$0(), $async$scope$1$3$semiGlobal$when);
            case 12:
              // returning from await.
              t2 = $async$result;
              $async$returnValue = t2;
              $async$next = [1];
              // goto finally
              $async$goto = 10;
              break;
              $async$next.push(11);
              // goto finally
              $async$goto = 10;
              break;
            case 9:
              // uncaught
              $async$next = [2];
            case 10:
              // finally
              $async$handler = 2;
              $async$self._async_environment0$_inSemiGlobalScope = wasInSemiGlobalScope;
              $async$self._async_environment0$_lastVariableIndex = $async$self._async_environment0$_lastVariableName = null;
              for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t1))), t2 = $async$self._async_environment0$_variableIndices; t1.moveNext$0();) {
                $name = t1.get$current(t1);
                t2.remove$1(0, $name);
              }
              B.JSArray_methods.removeLast$0(t3);
              for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t4))), t2 = $async$self._async_environment0$_functionIndices; t1.moveNext$0();) {
                name0 = t1.get$current(t1);
                t2.remove$1(0, name0);
              }
              for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t6))), t2 = $async$self._async_environment0$_mixinIndices; t1.moveNext$0();) {
                name1 = t1.get$current(t1);
                t2.remove$1(0, name1);
              }
              t1 = $async$self._async_environment0$_nestedForwardedModules;
              if (t1 != null)
                t1.pop();
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 11:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$scope$1$3$semiGlobal$when, $async$completer);
    },
    toImplicitConfiguration$0() {
      var t2, t3, t4, i, values, nodes, t5, t6, $name, value,
        t1 = type$.String,
        configuration = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.ConfiguredValue_2);
      for (t2 = this._async_environment0$_variables, t3 = type$.Value_2, t4 = this._async_environment0$_variableNodes, i = 0; i < t2.length; ++i) {
        values = t2[i];
        nodes = t4[i];
        for (t5 = A.MapExtensions_get_pairs0(values, t1, t3), t5 = t5.get$iterator(t5); t5.moveNext$0();) {
          t6 = t5.get$current(t5);
          $name = t6._0;
          value = t6._1;
          t6 = nodes.$index(0, $name);
          t6.toString;
          configuration.$indexSet(0, $name, new A.ConfiguredValue0(value, null, t6));
        }
      }
      return new A.Configuration0(configuration, null);
    },
    toModule$3(css, preModuleComments, extensionStore) {
      return A._EnvironmentModule__EnvironmentModule2(this, css, preModuleComments, extensionStore, A.NullableExtension_andThen0(this._async_environment0$_forwardedModules, new A.AsyncEnvironment_toModule_closure0()));
    },
    toDummyModule$0() {
      return A._EnvironmentModule__EnvironmentModule2(this, new A.CssStylesheet0(new A.UnmodifiableListView(B.List_empty16, type$.UnmodifiableListView_CssNode_2), A.SourceFile$decoded(B.List_empty4, "<dummy module>").span$1(0, 0)), B.Map_empty15, B.C_EmptyExtensionStore0, A.NullableExtension_andThen0(this._async_environment0$_forwardedModules, new A.AsyncEnvironment_toDummyModule_closure0()));
    },
    _async_environment0$_getModule$1(namespace) {
      var module, t1,
        _0_0 = this._async_environment0$_modules.$index(0, namespace);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1)
        return module;
      throw A.wrapException(A.SassScriptException$0('There is no module with the namespace "' + namespace + '".', null));
    },
    _async_environment0$_fromOneModule$1$3($name, type, callback) {
      var nestedForwardedModules, t1, t2, t3, t4, t5, _1_0, value, _2_0, identity, valueInModule, identityFromModule, module, node, _null = null,
        _0_0 = this._async_environment0$_nestedForwardedModules;
      if (_0_0 != null) {
        nestedForwardedModules = _0_0;
        t1 = true;
      } else {
        nestedForwardedModules = _null;
        t1 = false;
      }
      if (t1)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            _1_0 = callback.call$1(t5 == null ? t4._as(t5) : t5);
            if (_1_0 != null) {
              value = _1_0;
              t5 = true;
            } else {
              value = _null;
              t5 = false;
            }
            if (t5)
              return value;
          }
        }
      for (t1 = this._async_environment0$_importedModules, t1 = A.LinkedHashMapKeyIterator$(t1, t1._modifications); t1.moveNext$0();) {
        _2_0 = callback.call$1(t1.__js_helper$_current);
        if (_2_0 != null) {
          value = _2_0;
          t2 = true;
        } else {
          value = _null;
          t2 = false;
        }
        if (t2)
          return value;
      }
      for (t1 = this._async_environment0$_globalModules, t2 = A.LinkedHashMapKeyIterator$(t1, t1._modifications), t3 = type$.AsyncCallable_2, identity = _null, value = identity; t2.moveNext$0();) {
        t4 = t2.__js_helper$_current;
        valueInModule = callback.call$1(t4);
        if (valueInModule == null)
          continue;
        identityFromModule = t3._is(valueInModule) ? valueInModule : t4.variableIdentity$1($name);
        if (identityFromModule.$eq(0, identity))
          continue;
        if (value != null) {
          t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          for (t3 = A.MapExtensions_get_pairs0(t1, type$.Module_AsyncCallable_2, type$.AstNode_2), t3 = t3.get$iterator(t3), t4 = "includes " + type; t3.moveNext$0();) {
            t1 = t3.get$current(t3);
            module = t1._0;
            node = t1._1;
            if (callback.call$1(module) != null)
              t2.$indexSet(0, node.get$span(node), t4);
          }
          throw A.wrapException(A.MultiSpanSassScriptException$0("This " + type + string$.x20is_av, type + " use", t2));
        }
        identity = identityFromModule;
        value = valueInModule;
      }
      return value;
    },
    _async_environment0$_fromOneModule$3($name, type, callback) {
      return this._async_environment0$_fromOneModule$1$3($name, type, callback, type$.dynamic);
    }
  };
  A.AsyncEnvironment__getVariableFromGlobalModule_closure0.prototype = {
    call$1(module) {
      return module.get$variables().$index(0, this.name);
    },
    $signature: 324
  };
  A.AsyncEnvironment_setVariable_closure2.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._async_environment0$_lastVariableName = this.name;
      return t1._async_environment0$_lastVariableIndex = 0;
    },
    $signature: 3
  };
  A.AsyncEnvironment_setVariable_closure3.prototype = {
    call$1(module) {
      return module.get$variables().containsKey$1(this.name) ? module : null;
    },
    $signature: 325
  };
  A.AsyncEnvironment_setVariable_closure4.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._async_environment0$_variableIndex$1(this.name);
      return t2 == null ? t1._async_environment0$_variables.length - 1 : t2;
    },
    $signature: 3
  };
  A.AsyncEnvironment__getFunctionFromGlobalModule_closure0.prototype = {
    call$1(module) {
      return module.get$functions(module).$index(0, this.name);
    },
    $signature: 175
  };
  A.AsyncEnvironment__getMixinFromGlobalModule_closure0.prototype = {
    call$1(module) {
      return module.get$mixins().$index(0, this.name);
    },
    $signature: 175
  };
  A.AsyncEnvironment_toModule_closure0.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_AsyncCallable_2);
    },
    $signature: 176
  };
  A.AsyncEnvironment_toDummyModule_closure0.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_AsyncCallable_2);
    },
    $signature: 176
  };
  A._EnvironmentModule2.prototype = {
    get$url(_) {
      var t1 = this.css;
      return t1.get$span(t1).file.url;
    },
    setVariable$3($name, value, nodeWithSpan) {
      var module, t1, t2,
        _0_0 = this._async_environment0$_modulesByVariable.$index(0, $name);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1) {
        module.setVariable$3($name, value, nodeWithSpan);
        return;
      }
      t1 = this._async_environment0$_environment;
      t2 = t1._async_environment0$_variables;
      if (!B.JSArray_methods.get$first(t2).containsKey$1($name))
        throw A.wrapException(A.SassScriptException$0("Undefined variable.", null));
      J.$indexSet$ax(B.JSArray_methods.get$first(t2), $name, value);
      J.$indexSet$ax(B.JSArray_methods.get$first(t1._async_environment0$_variableNodes), $name, nodeWithSpan);
      return;
    },
    variableIdentity$1($name) {
      var module = this._async_environment0$_modulesByVariable.$index(0, $name);
      return module == null ? this : module.variableIdentity$1($name);
    },
    cloneCss$0() {
      var _0_0, _this = this;
      if (!_this.transitivelyContainsCss)
        return _this;
      _0_0 = A.cloneCssStylesheet0(_this.css, _this.extensionStore);
      return A._EnvironmentModule$_2(_this._async_environment0$_environment, _0_0._0, _this.preModuleComments, _0_0._1, _this._async_environment0$_modulesByVariable, _this.variables, _this.variableNodes, _this.functions, _this.mixins, true, _this.transitivelyContainsExtensions);
    },
    toString$0(_) {
      var t1 = this.css;
      if (t1.get$span(t1).file.url == null)
        t1 = "<unknown url>";
      else {
        t1 = t1.get$span(t1);
        t1 = $.$get$context().prettyUri$1(t1.file.url);
      }
      return t1;
    },
    $isModule1: 1,
    get$upstream() {
      return this.upstream;
    },
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    },
    get$extensionStore() {
      return this.extensionStore;
    },
    get$css(receiver) {
      return this.css;
    },
    get$preModuleComments() {
      return this.preModuleComments;
    },
    get$transitivelyContainsCss() {
      return this.transitivelyContainsCss;
    },
    get$transitivelyContainsExtensions() {
      return this.transitivelyContainsExtensions;
    }
  };
  A._EnvironmentModule__EnvironmentModule_closure17.prototype = {
    call$1(module) {
      return module.get$variables();
    },
    $signature: 328
  };
  A._EnvironmentModule__EnvironmentModule_closure18.prototype = {
    call$1(module) {
      return module.get$variableNodes();
    },
    $signature: 329
  };
  A._EnvironmentModule__EnvironmentModule_closure19.prototype = {
    call$1(module) {
      return module.get$functions(module);
    },
    $signature: 177
  };
  A._EnvironmentModule__EnvironmentModule_closure20.prototype = {
    call$1(module) {
      return module.get$mixins();
    },
    $signature: 177
  };
  A._EnvironmentModule__EnvironmentModule_closure21.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 123
  };
  A._EnvironmentModule__EnvironmentModule_closure22.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsExtensions();
    },
    $signature: 123
  };
  A._EvaluateVisitor2.prototype = {
    _EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap2(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t2, metaModule, t3, _i, module, $function, t4, _this = this,
        _s20_ = "$name, $module: null",
        _s9_ = "sass:meta",
        _s7_ = "$module",
        t1 = type$.JSArray_AsyncBuiltInCallable_2,
        metaFunctions = A._setArrayType([A.BuiltInCallable$function0("global-variable-exists", _s20_, new A._EvaluateVisitor_closure38(_this), _s9_), A.BuiltInCallable$function0("variable-exists", "$name", new A._EvaluateVisitor_closure39(_this), _s9_), A.BuiltInCallable$function0("function-exists", _s20_, new A._EvaluateVisitor_closure40(_this), _s9_), A.BuiltInCallable$function0("mixin-exists", _s20_, new A._EvaluateVisitor_closure41(_this), _s9_), A.BuiltInCallable$function0("content-exists", "", new A._EvaluateVisitor_closure42(_this), _s9_), A.BuiltInCallable$function0("module-variables", _s7_, new A._EvaluateVisitor_closure43(_this), _s9_), A.BuiltInCallable$function0("module-functions", _s7_, new A._EvaluateVisitor_closure44(_this), _s9_), A.BuiltInCallable$function0("module-mixins", _s7_, new A._EvaluateVisitor_closure45(_this), _s9_), A.BuiltInCallable$function0("get-function", "$name, $css: false, $module: null", new A._EvaluateVisitor_closure46(_this), _s9_), A.BuiltInCallable$function0("get-mixin", _s20_, new A._EvaluateVisitor_closure47(_this), _s9_), new A.AsyncBuiltInCallable0("call", A.ScssParser$0("@function call($function, $args...) {", null, _s9_).parseArgumentDeclaration$0(), new A._EvaluateVisitor_closure48(_this), false)], t1),
        metaMixins = A._setArrayType([A.AsyncBuiltInCallable$mixin0("load-css", "$url, $with: null", new A._EvaluateVisitor_closure49(_this), _s9_), A.BuiltInCallable$mixin0("apply", "$mixin, $args...", new A._EvaluateVisitor_closure50(_this), true, _s9_)], t1);
      t1 = type$.AsyncBuiltInCallable_2;
      t2 = A.List_List$of($.$get$global6(), true, t1);
      B.JSArray_methods.addAll$1(t2, $.$get$local0());
      B.JSArray_methods.addAll$1(t2, metaFunctions);
      metaModule = A.BuiltInModule$0("meta", t2, metaMixins, null, t1);
      for (t1 = A.List_List$of($.$get$coreModules0(), true, type$.BuiltInModule_AsyncCallable_2), t1.push(metaModule), t2 = t1.length, t3 = _this._async_evaluate0$_builtInModules, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        module = t1[_i];
        t3.$indexSet(0, module.url, module);
      }
      t1 = A._setArrayType([], type$.JSArray_AsyncCallable_2);
      B.JSArray_methods.addAll$1(t1, functions);
      B.JSArray_methods.addAll$1(t1, $.$get$globalFunctions0());
      B.JSArray_methods.addAll$1(t1, metaFunctions);
      for (t2 = t1.length, t3 = _this._async_evaluate0$_builtInFunctions, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        $function = t1[_i];
        t4 = J.get$name$x($function);
        t3.$indexSet(0, A.stringReplaceAllUnchecked(t4, "_", "-"), $function);
      }
    },
    run$2(_, importer, node) {
      return this.run$body$_EvaluateVisitor0(0, importer, node);
    },
    run$body$_EvaluateVisitor0(_, importer, node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet_2),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, $async$exception;
      var $async$run$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              t1 = type$.nullable_Object;
              $async$goto = 7;
              return A._asyncAwait(A.runZoned(new A._EvaluateVisitor_run_closure2($async$self, node, importer), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__evaluationContext, new A._EvaluationContext2($async$self, node)], t1, t1), type$.FutureOr_Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet_2), $async$run$2);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException0) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                A.throwWithTrace0(error.withLoadedUrls$1($async$self._async_evaluate0$_loadedUrls), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$run$2, $async$completer);
    },
    _async_evaluate0$_assertInModule$1$2(value, $name) {
      if (value != null)
        return value;
      throw A.wrapException(A.StateError$("Can't access " + $name + " outside of a module."));
    },
    _async_evaluate0$_assertInModule$2(value, $name) {
      return this._async_evaluate0$_assertInModule$1$2(value, $name, type$.dynamic);
    },
    _async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
      return this._loadModule$body$_EvaluateVisitor0(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors);
    },
    _async_evaluate0$_loadModule$5$configuration(url, stackFrame, nodeWithSpan, callback, configuration) {
      return this._async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, configuration, false);
    },
    _async_evaluate0$_loadModule$4(url, stackFrame, nodeWithSpan, callback) {
      return this._async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, null, false);
    },
    _loadModule$body$_EvaluateVisitor0(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, _0_0, t2, t1;
      var $async$_async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              t1.builtInModule = null;
              _0_0 = $async$self._async_evaluate0$_builtInModules.$index(0, url);
              if (_0_0 != null) {
                t1.builtInModule = _0_0;
                t2 = true;
              } else
                t2 = false;
              $async$goto = t2 ? 3 : 4;
              break;
            case 3:
              // then
              if (configuration instanceof A.ExplicitConfiguration0) {
                t1 = namesInErrors ? "Built-in module " + url.toString$0(0) + " can't be configured." : "Built-in modules can't be configured.";
                t2 = configuration.nodeWithSpan;
                throw A.wrapException($async$self._async_evaluate0$_exception$2(t1, t2.get$span(t2)));
              }
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate0$_addExceptionSpanAsync$1$2(nodeWithSpan, new A._EvaluateVisitor__loadModule_closure5(t1, callback), type$.void), $async$_async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors);
            case 5:
              // returning from await.
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_withStackFrame$1$3(stackFrame, nodeWithSpan, new A._EvaluateVisitor__loadModule_closure6($async$self, url, nodeWithSpan, baseUrl, namesInErrors, configuration, callback), type$.Null), $async$_async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors);
            case 6:
              // returning from await.
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors, $async$completer);
    },
    _async_evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
      return this._execute$body$_EvaluateVisitor0(importer, stylesheet, configuration, namesInErrors, nodeWithSpan);
    },
    _async_evaluate0$_execute$2(importer, stylesheet) {
      return this._async_evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, null, false, null);
    },
    _execute$body$_EvaluateVisitor0(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Module_AsyncCallable_2),
        $async$returnValue, $async$self = this, alreadyLoaded, t2, currentConfiguration, t3, message, existingSpan, configurationSpan, environment, css, preModuleComments, extensionStore, module, url, t1, _0_0;
      var $async$_async_evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              url = stylesheet.span.file.url;
              t1 = $async$self._async_evaluate0$_modules;
              _0_0 = t1.$index(0, url);
              if (_0_0 != null) {
                alreadyLoaded = _0_0;
                t2 = true;
              } else {
                alreadyLoaded = null;
                t2 = false;
              }
              if (t2) {
                t1 = configuration == null;
                currentConfiguration = t1 ? $async$self._async_evaluate0$_configuration : configuration;
                t2 = $async$self._async_evaluate0$_moduleConfigurations.$index(0, url);
                t3 = t2._configuration0$__originalConfiguration;
                t2 = t3 == null ? t2 : t3;
                t3 = currentConfiguration._configuration0$__originalConfiguration;
                if (t2 !== (t3 == null ? currentConfiguration : t3) && currentConfiguration instanceof A.ExplicitConfiguration0) {
                  message = namesInErrors ? $.$get$context().prettyUri$1(url) + string$.x20was_a : string$.This_mw;
                  t2 = $async$self._async_evaluate0$_moduleNodes.$index(0, url);
                  existingSpan = t2 == null ? null : t2.get$span(t2);
                  if (t1) {
                    t1 = currentConfiguration.nodeWithSpan;
                    configurationSpan = t1.get$span(t1);
                  } else
                    configurationSpan = null;
                  t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
                  if (existingSpan != null)
                    t1.$indexSet(0, existingSpan, "original load");
                  if (configurationSpan != null)
                    t1.$indexSet(0, configurationSpan, "configuration");
                  throw A.wrapException(t1.get$isEmpty(t1) ? $async$self._async_evaluate0$_exception$1(message) : $async$self._async_evaluate0$_multiSpanException$3(message, "new load", t1));
                }
                $async$returnValue = alreadyLoaded;
                // goto return
                $async$goto = 1;
                break;
              }
              environment = A.AsyncEnvironment$0();
              css = A._Cell$();
              preModuleComments = A._Cell$();
              extensionStore = A.ExtensionStore$0();
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_withEnvironment$1$2(environment, new A._EvaluateVisitor__execute_closure2($async$self, importer, stylesheet, extensionStore, configuration, css, preModuleComments), type$.Null), $async$_async_evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan);
            case 3:
              // returning from await.
              t2 = css._readLocal$0();
              t3 = preModuleComments._readLocal$0();
              module = environment.toModule$3(t2, t3 == null ? B.Map_empty15 : t3, extensionStore);
              if (url != null) {
                t1.$indexSet(0, url, module);
                $async$self._async_evaluate0$_moduleConfigurations.$indexSet(0, url, $async$self._async_evaluate0$_configuration);
                if (nodeWithSpan != null)
                  $async$self._async_evaluate0$_moduleNodes.$indexSet(0, url, nodeWithSpan);
              }
              $async$returnValue = module;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan, $async$completer);
    },
    _async_evaluate0$_addOutOfOrderImports$0() {
      var t1, t2, _this = this, _s5_ = "_root",
        _s13_ = "_endOfImports",
        _0_0 = _this._async_evaluate0$_outOfOrderImports;
      $label0$0: {
        if (_0_0 == null) {
          t1 = _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_).children;
          break $label0$0;
        }
        t1 = _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_);
        t1 = t1.children;
        t1 = A.List_List$of(A.SubListIterable$(t1, 0, A.checkNotNullable(_this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__endOfImports, _s13_), "count", type$.int), t1.$ti._eval$1("ListBase.E")), true, type$.ModifiableCssNode_2);
        B.JSArray_methods.addAll$1(t1, _0_0);
        t2 = _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_).children;
        B.JSArray_methods.addAll$1(t1, A.SubListIterable$(t2, _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__endOfImports, _s13_), null, t2.$ti._eval$1("ListBase.E")));
        break $label0$0;
      }
      return t1;
    },
    _async_evaluate0$_combineCss$2$clone(root, clone) {
      var selectors, _0_0, unsatisfiedExtension, t1, imports, css, sorted, t2;
      if (!B.JSArray_methods.any$1(root.get$upstream(), new A._EvaluateVisitor__combineCss_closure5())) {
        selectors = root.get$extensionStore().get$simpleSelectors();
        _0_0 = A.IterableExtension_get_firstOrNull(root.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__combineCss_closure6(selectors)));
        if (_0_0 != null) {
          unsatisfiedExtension = _0_0;
          t1 = true;
        } else {
          unsatisfiedExtension = null;
          t1 = false;
        }
        if (t1)
          this._async_evaluate0$_throwForUnsatisfiedExtension$1(unsatisfiedExtension);
        return root.get$css(root);
      }
      t1 = type$.JSArray_CssNode_2;
      imports = A._setArrayType([], t1);
      css = A._setArrayType([], t1);
      t1 = type$.Module_AsyncCallable_2;
      sorted = A.ListQueue$(t1);
      new A._EvaluateVisitor__combineCss_visitModule2(this, A.LinkedHashSet_LinkedHashSet$_empty(t1), clone, css, imports, sorted).call$1(root);
      if (root.get$transitivelyContainsExtensions())
        this._async_evaluate0$_extendModules$1(sorted);
      t1 = B.JSArray_methods.$add(imports, css);
      t2 = root.get$css(root);
      return new A.CssStylesheet0(new A.UnmodifiableListView(t1, type$.UnmodifiableListView_CssNode_2), t2.get$span(t2));
    },
    _async_evaluate0$_combineCss$1(root) {
      return this._async_evaluate0$_combineCss$2$clone(root, false);
    },
    _async_evaluate0$_extendModules$1(sortedModules) {
      var t1, t2, t3, originalSelectors, $self, t4, t5, _i, upstream, _0_0, url, t6,
        downstreamExtensionStores = A.LinkedHashMap_LinkedHashMap$_empty(type$.Uri, type$.List_ExtensionStore_2),
        unsatisfiedExtensions = new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_Extension_2);
      for (t1 = A._ListQueueIterator$(sortedModules), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1._collection$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        originalSelectors = t3.get$extensionStore().get$simpleSelectors().toSet$0(0);
        unsatisfiedExtensions.addAll$1(0, t3.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__extendModules_closure5(originalSelectors)));
        $self = downstreamExtensionStores.$index(0, t3.get$url(t3));
        t4 = t3.get$extensionStore().get$addExtensions();
        if ($self != null)
          t4.call$1($self);
        t4 = t3.get$extensionStore();
        if (t4.get$isEmpty(t4))
          continue;
        for (t4 = t3.get$upstream(), t5 = t4.length, _i = 0; _i < t4.length; t4.length === t5 || (0, A.throwConcurrentModificationError)(t4), ++_i) {
          upstream = t4[_i];
          _0_0 = upstream.get$url(upstream);
          if (_0_0 != null) {
            url = _0_0;
            t6 = true;
          } else {
            url = null;
            t6 = false;
          }
          if (t6)
            J.add$1$ax(downstreamExtensionStores.putIfAbsent$2(url, new A._EvaluateVisitor__extendModules_closure6()), t3.get$extensionStore());
        }
        unsatisfiedExtensions.removeAll$1(t3.get$extensionStore().extensionsWhereTarget$1(originalSelectors.get$contains(originalSelectors)));
      }
      if (unsatisfiedExtensions._collection$_length !== 0)
        this._async_evaluate0$_throwForUnsatisfiedExtension$1(unsatisfiedExtensions.get$first(unsatisfiedExtensions));
    },
    _async_evaluate0$_throwForUnsatisfiedExtension$1(extension) {
      throw A.wrapException(A.SassException$0(string$.The_ta + extension.target.toString$0(0) + ' !optional" to avoid this error.', extension.span, null));
    },
    _async_evaluate0$_indexAfterImports$1(statements) {
      var t1, lastImport, i, _0_0;
      for (t1 = J.getInterceptor$asx(statements), lastImport = -1, i = 0; i < t1.get$length(statements); ++i) {
        $label0$0: {
          _0_0 = t1.$index(statements, i);
          if (_0_0 instanceof A.ModifiableCssImport0)
            break $label0$0;
          if (_0_0 instanceof A.ModifiableCssComment0)
            continue;
          break;
        }
        lastImport = i;
      }
      return lastImport + 1;
    },
    visitStylesheet$1(node) {
      return this.visitStylesheet$body$_EvaluateVisitor0(node);
    },
    visitStylesheet$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, _i;
      var $async$visitStylesheet$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.children, t2 = t1.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t1[_i].accept$1($async$self), $async$visitStylesheet$1);
            case 6:
              // returning from await.
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitStylesheet$1, $async$completer);
    },
    visitAtRootRule$1(node) {
      return this.visitAtRootRule$body$_EvaluateVisitor0(node);
    },
    visitAtRootRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, unparsedQuery, t1, _1_0, resolved, query, $parent, included, _2_0, grandparent, t2, root, first, rest, innerCopy, outerCopy, _i, copy, _0_0;
      var $async$visitAtRootRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _0_0 = node.query;
              if (_0_0 != null) {
                unparsedQuery = _0_0;
                t1 = true;
              } else {
                unparsedQuery = null;
                t1 = false;
              }
              $async$goto = t1 ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolationWithMap$2$warnForColor(unparsedQuery, true), $async$visitAtRootRule$1);
            case 6:
              // returning from await.
              _1_0 = $async$result;
              resolved = _1_0._0;
              _1_0._1;
              query = A.AtRootQueryParser$0(resolved, $async$self._async_evaluate0$_logger, null).parse$0();
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              query = B.AtRootQuery_UsS0;
            case 4:
              // join
              $parent = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent");
              included = A._setArrayType([], type$.JSArray_ModifiableCssParentNode_2);
              for (t1 = type$.CssStylesheet_2; !t1._is($parent); $parent = grandparent) {
                if (!query.excludes$1($parent))
                  included.push($parent);
                _2_0 = $parent._node$_parent;
                if (_2_0 != null) {
                  grandparent = _2_0;
                  t2 = true;
                } else {
                  grandparent = null;
                  t2 = false;
                }
                if (!t2)
                  throw A.wrapException(A.StateError$(string$.CssNod));
              }
              root = $async$self._async_evaluate0$_trimIncluded$1(included);
              $async$goto = root === $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent") ? 7 : 8;
              break;
            case 7:
              // then
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate0$_environment.scope$1$2$when(new A._EvaluateVisitor_visitAtRootRule_closure5($async$self, node), node.hasDeclarations, type$.Null), $async$visitAtRootRule$1);
            case 9:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 8:
              // join
              if (included.length >= 1) {
                first = included[0];
                rest = B.JSArray_methods.sublist$1(included, 1);
                t1 = true;
              } else {
                first = null;
                rest = null;
                t1 = false;
              }
              if (t1) {
                innerCopy = first.copyWithoutChildren$0();
                for (t1 = rest.length, outerCopy = innerCopy, _i = 0; _i < rest.length; rest.length === t1 || (0, A.throwConcurrentModificationError)(rest), ++_i, outerCopy = copy) {
                  copy = rest[_i].copyWithoutChildren$0();
                  copy.addChild$1(outerCopy);
                }
                root.addChild$1(outerCopy);
              } else
                innerCopy = root;
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate0$_scopeForAtRoot$4(node, innerCopy, query, included).call$1(new A._EvaluateVisitor_visitAtRootRule_closure6($async$self, node)), $async$visitAtRootRule$1);
            case 10:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitAtRootRule$1, $async$completer);
    },
    _async_evaluate0$_trimIncluded$1(nodes) {
      var $parent, t1, innermostContiguous, i, t2, _0_0, grandparent, t3, _1_0, root, _this = this, _null = null, _s5_ = "_root",
        _s22_ = " to be an ancestor of ";
      if (nodes.length === 0)
        return _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_);
      $parent = _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__parent, "__parent");
      for (t1 = nodes.length, innermostContiguous = _null, i = 0; i < t1; ++i, $parent = grandparent) {
        for (; t2 = nodes[i], $parent !== t2; innermostContiguous = _null, $parent = grandparent) {
          _0_0 = $parent._node$_parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t3 = true;
          } else {
            grandparent = _null;
            t3 = false;
          }
          if (!t3)
            throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
        }
        if (innermostContiguous == null)
          innermostContiguous = i;
        _1_0 = $parent._node$_parent;
        if (_1_0 != null) {
          grandparent = _1_0;
          t3 = true;
        } else {
          grandparent = _null;
          t3 = false;
        }
        if (!t3)
          throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
      }
      if ($parent !== _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_))
        return _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_);
      innermostContiguous.toString;
      root = nodes[innermostContiguous];
      B.JSArray_methods.removeRange$2(nodes, innermostContiguous, nodes.length);
      return root;
    },
    _async_evaluate0$_scopeForAtRoot$4(node, newParent, query, included) {
      var _this = this,
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure17(_this, newParent, node),
        t1 = query._at_root_query0$_all || query._at_root_query0$_rule;
      if (t1 !== query.include)
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure18(_this, scope);
      if (_this._async_evaluate0$_mediaQueries != null && query.excludesName$1("media"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure19(_this, scope);
      if (_this._async_evaluate0$_inKeyframes && query.excludesName$1("keyframes"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure20(_this, scope);
      return _this._async_evaluate0$_inUnknownAtRule && !B.JSArray_methods.any$1(included, new A._EvaluateVisitor__scopeForAtRoot_closure21()) ? new A._EvaluateVisitor__scopeForAtRoot_closure22(_this, scope) : scope;
    },
    visitContentBlock$1(node) {
      return A.throwExpression(A.UnsupportedError$(string$.Evalua));
    },
    visitContentRule$1(node) {
      return this.visitContentRule$body$_EvaluateVisitor0(node);
    },
    visitContentRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, $content;
      var $async$visitContentRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $content = $async$self._async_evaluate0$_environment._async_environment0$_content;
              if ($content == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_runUserDefinedCallable$1$4(node.$arguments, $content, node, new A._EvaluateVisitor_visitContentRule_closure2($async$self, $content), type$.Null), $async$visitContentRule$1);
            case 3:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitContentRule$1, $async$completer);
    },
    visitDebugRule$1(node) {
      return this.visitDebugRule$body$_EvaluateVisitor0(node);
    },
    visitDebugRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, value, t1;
      var $async$visitDebugRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(node.expression.accept$1($async$self), $async$visitDebugRule$1);
            case 3:
              // returning from await.
              value = $async$result;
              t1 = value instanceof A.SassString0 ? value._string0$_text : A.serializeValue0(value, true, true);
              $async$self._async_evaluate0$_logger.debug$2(0, t1, node.span);
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitDebugRule$1, $async$completer);
    },
    visitDeclaration$1(node) {
      return this.visitDeclaration$body$_EvaluateVisitor0(node);
    },
    visitDeclaration$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t2, $name, _0_0, declarationName, t3, _1_0, expression, value, t4, t5, _2_0, oldDeclarationName, t1;
      var $async$visitDeclaration$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              if (($async$self._async_evaluate0$_atRootExcludingStyleRule ? null : $async$self._async_evaluate0$_styleRuleIgnoringAtRoot) == null && !$async$self._async_evaluate0$_inUnknownAtRule && !$async$self._async_evaluate0$_inKeyframes)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Declarm, node.span));
              if ($async$self._async_evaluate0$_declarationName != null && B.JSString_methods.startsWith$1(node.name.get$initialPlain(), "--"))
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Declarw, node.span));
              t2 = node.name;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_interpolationToValue$2$warnForColor(t2, true), $async$visitDeclaration$1);
            case 3:
              // returning from await.
              $name = $async$result;
              _0_0 = $async$self._async_evaluate0$_declarationName;
              if (_0_0 != null) {
                declarationName = _0_0;
                t3 = true;
              } else {
                declarationName = null;
                t3 = false;
              }
              if (t3)
                $name = new A.CssValue0(A.S(declarationName) + "-" + A.S($name.value), $name.span, type$.CssValue_String_2);
              _1_0 = node.value;
              if (_1_0 != null) {
                expression = _1_0;
                t3 = true;
              } else {
                expression = null;
                t3 = false;
              }
              $async$goto = t3 ? 4 : 5;
              break;
            case 4:
              // then
              $async$goto = 6;
              return A._asyncAwait(expression.accept$1($async$self), $async$visitDeclaration$1);
            case 6:
              // returning from await.
              value = $async$result;
              if (!value.get$isBlank() || value.get$asList().length === 0) {
                t3 = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent");
                t4 = expression.get$span(expression);
                t2 = B.JSString_methods.startsWith$1(t2.get$initialPlain(), "--");
                if ($async$self._async_evaluate0$_sourceMap) {
                  t5 = A.NullableExtension_andThen0(_1_0, $async$self.get$_async_evaluate0$_expressionNode());
                  t5 = t5 == null ? null : J.get$span$z(t5);
                } else
                  t5 = null;
                t3.addChild$1(A.ModifiableCssDeclaration$0($name, new A.CssValue0(value, t4, type$.CssValue_Value_2), node.span, t2, t5));
              } else if (J.startsWith$1$s($name.value, "--"))
                throw A.wrapException($async$self._async_evaluate0$_exception$2("Custom property values may not be empty.", expression.get$span(expression)));
            case 5:
              // join
              t1.children = null;
              _2_0 = node.children;
              if (_2_0 != null) {
                t1.children = _2_0;
                t2 = true;
              } else
                t2 = false;
              $async$goto = t2 ? 7 : 8;
              break;
            case 7:
              // then
              oldDeclarationName = $async$self._async_evaluate0$_declarationName;
              $async$self._async_evaluate0$_declarationName = $name.value;
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate0$_environment.scope$1$2$when(new A._EvaluateVisitor_visitDeclaration_closure2(t1, $async$self), node.hasDeclarations, type$.Null), $async$visitDeclaration$1);
            case 9:
              // returning from await.
              $async$self._async_evaluate0$_declarationName = oldDeclarationName;
            case 8:
              // join
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitDeclaration$1, $async$completer);
    },
    visitEachRule$1(node) {
      return this.visitEachRule$body$_EvaluateVisitor0(node);
    },
    visitEachRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t2, _box_0, t1, list, nodeWithSpan, _0_0;
      var $async$visitEachRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              t1 = node.list;
              $async$goto = 3;
              return A._asyncAwait(t1.accept$1($async$self), $async$visitEachRule$1);
            case 3:
              // returning from await.
              list = $async$result;
              nodeWithSpan = $async$self._async_evaluate0$_expressionNode$1(t1);
              _0_0 = node.variables;
              $label0$0: {
                _box_0.variable = null;
                if (_0_0.length === 1) {
                  _box_0.variable = _0_0[0];
                  t1 = true;
                } else
                  t1 = false;
                if (t1) {
                  t1 = new A._EvaluateVisitor_visitEachRule_closure8(_box_0, $async$self, nodeWithSpan);
                  break $label0$0;
                }
                t1 = _box_0.variables = null;
                _box_0.variables = _0_0;
                t2 = new A._EvaluateVisitor_visitEachRule_closure9(_box_0, $async$self, nodeWithSpan);
                t1 = t2;
                break $label0$0;
              }
              $async$returnValue = $async$self._async_evaluate0$_environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitEachRule_closure10($async$self, list, t1, node), true, type$.nullable_Value_2);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitEachRule$1, $async$completer);
    },
    _async_evaluate0$_setMultipleVariables$3(variables, value, nodeWithSpan) {
      var i,
        list = value.get$asList(),
        t1 = variables.length,
        minLength = Math.min(t1, list.length);
      for (i = 0; i < minLength; ++i)
        this._async_evaluate0$_environment.setLocalVariable$3(variables[i], this._async_evaluate0$_withoutSlash$2(list[i], nodeWithSpan), nodeWithSpan);
      for (i = minLength; i < t1; ++i)
        this._async_evaluate0$_environment.setLocalVariable$3(variables[i], B.C__SassNull0, nodeWithSpan);
    },
    visitErrorRule$1(node) {
      return this.visitErrorRule$body$_EvaluateVisitor0(node);
    },
    visitErrorRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$self = this, $async$temp1, $async$temp2;
      var $async$visitErrorRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$temp2 = J;
              $async$goto = 2;
              return A._asyncAwait(node.expression.accept$1($async$self), $async$visitErrorRule$1);
            case 2:
              // returning from await.
              throw $async$temp1.wrapException($async$self._async_evaluate0$_exception$2($async$temp2.toString$0$($async$result), node.span));
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitErrorRule$1, $async$completer);
    },
    visitExtendRule$1(node) {
      return this.visitExtendRule$body$_EvaluateVisitor0(node);
    },
    visitExtendRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, _i, complex, visitor, t6, t7, _0_0, targetText, targetMap, compound, styleRule;
      var $async$visitExtendRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              styleRule = $async$self._async_evaluate0$_atRootExcludingStyleRule ? null : $async$self._async_evaluate0$_styleRuleIgnoringAtRoot;
              if (styleRule == null || $async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.x40exten, node.span));
              for (t1 = styleRule.originalSelector.components, t2 = t1.length, t3 = node.span, t4 = type$.SourceSpan, t5 = type$.String, _i = 0; _i < t2; ++_i) {
                complex = t1[_i];
                if (!complex.accept$1(B._IsBogusVisitor_true0))
                  continue;
                visitor = A._SerializeVisitor$0(null, true, null, true, false, null, true);
                complex.accept$1(visitor);
                t6 = B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0));
                t7 = complex.accept$1(B.C__IsUselessVisitor0) ? "can't" : "shouldn't";
                $async$self._async_evaluate0$_warn$3('The selector "' + t6 + '" is invalid CSS and ' + t7 + string$.x20be_an, new A.MultiSpan0(A.SpanExtensions_trimRight0(complex.span), "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t3, "@extend rule"], t4, t5), t4, t5)), B.Deprecation_XV6);
              }
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolationWithMap$2$warnForColor(node.selector, true), $async$visitExtendRule$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              targetText = _0_0._0;
              targetMap = _0_0._1;
              for (t1 = A.SelectorList_SelectorList$parse0(A.trimAscii0(targetText, true), false, true, targetMap, $async$self._async_evaluate0$_logger).components, t2 = t1.length, t3 = styleRule._style_rule0$_selector._box0$_inner, _i = 0; _i < t2; ++_i) {
                complex = t1[_i];
                compound = complex.get$singleCompound();
                if (compound == null)
                  throw A.wrapException(A.SassFormatException$0("complex selectors may not be extended.", complex.span, null));
                t4 = compound.components;
                t5 = t4.length === 1 ? B.JSArray_methods.get$first(t4) : null;
                if (t5 == null)
                  throw A.wrapException(A.SassFormatException$0(string$.compou + B.JSArray_methods.join$1(t4, ", ") + string$.x60_inst, compound.span, null));
                $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__extensionStore, "_extensionStore").addExtension$4(t3.value, t5, node, $async$self._async_evaluate0$_mediaQueries);
              }
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitExtendRule$1, $async$completer);
    },
    visitAtRule$1(node) {
      return this.visitAtRule$body$_EvaluateVisitor0(node);
    },
    visitAtRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, $name, value, children, wasInKeyframes, wasInUnknownAtRule;
      var $async$visitAtRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.At_rul, node.span));
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_interpolationToValue$1(node.name), $async$visitAtRule$1);
            case 3:
              // returning from await.
              $name = $async$result;
              $async$goto = 4;
              return A._asyncAwait(A.NullableExtension_andThen0(node.value, new A._EvaluateVisitor_visitAtRule_closure8($async$self)), $async$visitAtRule$1);
            case 4:
              // returning from await.
              value = $async$result;
              children = node.children;
              if (children == null) {
                $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").addChild$1(A.ModifiableCssAtRule$0($name, node.span, true, value));
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              wasInKeyframes = $async$self._async_evaluate0$_inKeyframes;
              wasInUnknownAtRule = $async$self._async_evaluate0$_inUnknownAtRule;
              if (A.unvendor0($name.value) === "keyframes")
                $async$self._async_evaluate0$_inKeyframes = true;
              else
                $async$self._async_evaluate0$_inUnknownAtRule = true;
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$0($name, node.span, false, value), new A._EvaluateVisitor_visitAtRule_closure9($async$self, $name, children), node.hasDeclarations, new A._EvaluateVisitor_visitAtRule_closure10(), type$.ModifiableCssAtRule_2, type$.Null), $async$visitAtRule$1);
            case 5:
              // returning from await.
              $async$self._async_evaluate0$_inUnknownAtRule = wasInUnknownAtRule;
              $async$self._async_evaluate0$_inKeyframes = wasInKeyframes;
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitAtRule$1, $async$completer);
    },
    visitForRule$1(node) {
      return this.visitForRule$body$_EvaluateVisitor0(node);
    },
    visitForRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, t3, fromNumber, t4, toNumber, from, to, direction;
      var $async$visitForRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              t2 = node.from;
              t3 = type$.SassNumber_2;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_addExceptionSpanAsync$1$2(t2, new A._EvaluateVisitor_visitForRule_closure14($async$self, node), t3), $async$visitForRule$1);
            case 3:
              // returning from await.
              fromNumber = $async$result;
              t4 = node.to;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate0$_addExceptionSpanAsync$1$2(t4, new A._EvaluateVisitor_visitForRule_closure15($async$self, node), t3), $async$visitForRule$1);
            case 4:
              // returning from await.
              toNumber = $async$result;
              from = $async$self._async_evaluate0$_addExceptionSpan$2(t2, new A._EvaluateVisitor_visitForRule_closure16(fromNumber));
              to = t1.to = $async$self._async_evaluate0$_addExceptionSpan$2(t4, new A._EvaluateVisitor_visitForRule_closure17(toNumber, fromNumber));
              direction = from > to ? -1 : 1;
              if (from === (!node.isExclusive ? t1.to = to + direction : to)) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$returnValue = $async$self._async_evaluate0$_environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitForRule_closure18(t1, $async$self, node, from, direction, fromNumber), true, type$.nullable_Value_2);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitForRule$1, $async$completer);
    },
    visitForwardRule$1(node) {
      return this.visitForwardRule$body$_EvaluateVisitor0(node);
    },
    visitForwardRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, newConfiguration, t4, _i, variable, $name, oldConfiguration, adjustedConfiguration, t1, t2, t3;
      var $async$visitForwardRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldConfiguration = $async$self._async_evaluate0$_configuration;
              adjustedConfiguration = oldConfiguration.throughForward$1(node);
              t1 = node.configuration;
              t2 = t1.length;
              t3 = node.url;
              $async$goto = t2 !== 0 ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_addForwardConfiguration$2(adjustedConfiguration, node), $async$visitForwardRule$1);
            case 6:
              // returning from await.
              newConfiguration = $async$result;
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate0$_loadModule$5$configuration(t3, "@forward", node, new A._EvaluateVisitor_visitForwardRule_closure5($async$self, node), newConfiguration), $async$visitForwardRule$1);
            case 7:
              // returning from await.
              t3 = type$.String;
              t4 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
              for (_i = 0; _i < t2; ++_i) {
                variable = t1[_i];
                if (!variable.isGuarded)
                  t4.add$1(0, variable.name);
              }
              $async$self._async_evaluate0$_removeUsedConfiguration$3$except(adjustedConfiguration, newConfiguration, t4);
              t3 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
              for (_i = 0; _i < t2; ++_i)
                t3.add$1(0, t1[_i].name);
              for (t1 = newConfiguration._configuration0$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t4 = t2.length, _i = 0; _i < t2.length; t2.length === t4 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
                $name = t2[_i];
                if (!t3.contains$1(0, $name))
                  if (!t1.get$isEmpty(t1))
                    t1.remove$1(0, $name);
              }
              $async$self._async_evaluate0$_assertConfigurationIsEmpty$1(newConfiguration);
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$self._async_evaluate0$_configuration = adjustedConfiguration;
              $async$goto = 8;
              return A._asyncAwait($async$self._async_evaluate0$_loadModule$4(t3, "@forward", node, new A._EvaluateVisitor_visitForwardRule_closure6($async$self, node)), $async$visitForwardRule$1);
            case 8:
              // returning from await.
              $async$self._async_evaluate0$_configuration = oldConfiguration;
            case 4:
              // join
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitForwardRule$1, $async$completer);
    },
    _async_evaluate0$_addForwardConfiguration$2(configuration, node) {
      return this._addForwardConfiguration$body$_EvaluateVisitor0(configuration, node);
    },
    _addForwardConfiguration$body$_EvaluateVisitor0(configuration, node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Configuration_2),
        $async$returnValue, $async$self = this, t2, t3, _i, variable, t4, oldValue, t5, variableNodeWithSpan, t1, newValues, $async$temp1, $async$temp2, $async$temp3;
      var $async$_async_evaluate0$_addForwardConfiguration$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = configuration._configuration0$_values;
              newValues = A.LinkedHashMap_LinkedHashMap$of(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue_2), type$.String, type$.ConfiguredValue_2);
              t2 = node.configuration, t3 = t2.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              variable = t2[_i];
              if (variable.isGuarded) {
                t4 = variable.name;
                oldValue = t1.get$isEmpty(t1) ? null : t1.remove$1(0, t4);
                if (oldValue != null)
                  t5 = true;
                else {
                  oldValue = null;
                  t5 = false;
                }
                if (t5 && !oldValue.value.$eq(0, B.C__SassNull0)) {
                  newValues.$indexSet(0, t4, oldValue);
                  // goto for update
                  $async$goto = 4;
                  break;
                }
              }
              t4 = variable.expression;
              variableNodeWithSpan = $async$self._async_evaluate0$_expressionNode$1(t4);
              $async$temp1 = newValues;
              $async$temp2 = variable.name;
              $async$temp3 = A;
              $async$goto = 6;
              return A._asyncAwait(t4.accept$1($async$self), $async$_async_evaluate0$_addForwardConfiguration$2);
            case 6:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, new $async$temp3.ConfiguredValue0($async$self._async_evaluate0$_withoutSlash$2($async$result, variableNodeWithSpan), variable.span, variableNodeWithSpan));
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              if (configuration instanceof A.ExplicitConfiguration0 || t1.get$isEmpty(t1)) {
                $async$returnValue = new A.ExplicitConfiguration0(node, newValues, null);
                // goto return
                $async$goto = 1;
                break;
              } else {
                $async$returnValue = new A.Configuration0(newValues, null);
                // goto return
                $async$goto = 1;
                break;
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_addForwardConfiguration$2, $async$completer);
    },
    _async_evaluate0$_registerCommentsForModule$1(module) {
      var _this = this, _s5_ = "_root",
        t1 = _this._async_evaluate0$__root;
      if (t1 == null)
        return;
      t1 = _this._async_evaluate0$_assertInModule$2(t1, _s5_).children;
      if (t1.get$length(t1) === 0 || !module.get$transitivelyContainsCss())
        return;
      t1 = _this._async_evaluate0$_preModuleComments;
      if (t1 == null)
        t1 = _this._async_evaluate0$_preModuleComments = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_AsyncCallable_2, type$.List_CssComment_2);
      J.addAll$1$ax(t1.putIfAbsent$2(module, new A._EvaluateVisitor__registerCommentsForModule_closure2()), new A.UnmodifiableListView(J.cast$1$0$ax(_this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_).children._collection$_source, type$.CssComment_2), type$.UnmodifiableListView_CssComment_2));
      _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__root, _s5_).clearChildren$0();
      _this._async_evaluate0$__endOfImports = 0;
    },
    _async_evaluate0$_removeUsedConfiguration$3$except(upstream, downstream, except) {
      var t1, t2, t3, t4, _i, $name;
      for (t1 = upstream._configuration0$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t3 = t2.length, t4 = downstream._configuration0$_values, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        $name = t2[_i];
        if (except.contains$1(0, $name))
          continue;
        if (!t4.containsKey$1($name))
          if (!t1.get$isEmpty(t1))
            t1.remove$1(0, $name);
      }
    },
    _async_evaluate0$_assertConfigurationIsEmpty$2$nameInError(configuration, nameInError) {
      var t1, _0_0, $name, value;
      if (!(configuration instanceof A.ExplicitConfiguration0))
        return;
      t1 = configuration._configuration0$_values;
      if (t1.get$isEmpty(t1))
        return;
      t1 = A.MapExtensions_get_pairs0(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue_2), type$.String, type$.ConfiguredValue_2);
      _0_0 = t1.get$first(t1);
      $name = _0_0._0;
      value = _0_0._1;
      t1 = nameInError ? "$" + $name + string$.x20was_n : string$.This_v;
      throw A.wrapException(this._async_evaluate0$_exception$2(t1, value.configurationSpan));
    },
    _async_evaluate0$_assertConfigurationIsEmpty$1(configuration) {
      return this._async_evaluate0$_assertConfigurationIsEmpty$2$nameInError(configuration, false);
    },
    visitFunctionRule$1(node) {
      return this.visitFunctionRule$body$_EvaluateVisitor0(node);
    },
    visitFunctionRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, index, t5;
      var $async$visitFunctionRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate0$_environment;
              t2 = t1.closure$0();
              t3 = $async$self._async_evaluate0$_inDependency;
              t4 = t1._async_environment0$_functions;
              index = t4.length - 1;
              t5 = node.name;
              t1._async_environment0$_functionIndices.$indexSet(0, t5, index);
              J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable0(node, t2, t3, type$.UserDefinedCallable_AsyncEnvironment_2));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitFunctionRule$1, $async$completer);
    },
    visitIfRule$1(node) {
      return this.visitIfRule$body$_EvaluateVisitor0(node);
    },
    visitIfRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, _i, clauseToCheck, clause;
      var $async$visitIfRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              clause = node.lastClause;
              t1 = node.clauses, t2 = t1.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              clauseToCheck = t1[_i];
              $async$goto = 6;
              return A._asyncAwait(clauseToCheck.expression.accept$1($async$self), $async$visitIfRule$1);
            case 6:
              // returning from await.
              if ($async$result.get$isTruthy()) {
                clause = clauseToCheck;
                // goto after for
                $async$goto = 5;
                break;
              }
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$goto = 7;
              return A._asyncAwait(A.NullableExtension_andThen0(clause, new A._EvaluateVisitor_visitIfRule_closure2($async$self)), $async$visitIfRule$1);
            case 7:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitIfRule$1, $async$completer);
    },
    visitImportRule$1(node) {
      return this.visitImportRule$body$_EvaluateVisitor0(node);
    },
    visitImportRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, t3, _i, $import;
      var $async$visitImportRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.imports, t2 = t1.length, t3 = type$.StaticImport_2, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $import = t1[_i];
              $async$goto = $import instanceof A.DynamicImport0 ? 6 : 8;
              break;
            case 6:
              // then
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate0$_visitDynamicImport$1($import), $async$visitImportRule$1);
            case 9:
              // returning from await.
              // goto join
              $async$goto = 7;
              break;
            case 8:
              // else
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate0$_visitStaticImport$1(t3._as($import)), $async$visitImportRule$1);
            case 10:
              // returning from await.
            case 7:
              // join
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitImportRule$1, $async$completer);
    },
    _async_evaluate0$_visitDynamicImport$1($import) {
      return this._async_evaluate0$_withStackFrame$1$3("@import", $import, new A._EvaluateVisitor__visitDynamicImport_closure2(this, $import), type$.void);
    },
    _async_evaluate0$_loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, forImport) {
      return this._loadStylesheet$body$_EvaluateVisitor0(url, span, baseUrl, forImport);
    },
    _async_evaluate0$_loadStylesheet$3$baseUrl(url, span, baseUrl) {
      return this._async_evaluate0$_loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, false);
    },
    _async_evaluate0$_loadStylesheet$3$forImport(url, span, forImport) {
      return this._async_evaluate0$_loadStylesheet$4$baseUrl$forImport(url, span, null, forImport);
    },
    _loadStylesheet$body$_EvaluateVisitor0(url, span, baseUrl, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency_2),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, importCache, _0_0, importer, canonicalUrl, originalUrl, _1_0, isDependency, stylesheet, _2_0, result, _3_0, error, stackTrace, error0, stackTrace0, message, t1, t2, t3, t4, exception, message0, $async$exception;
      var $async$_async_evaluate0$_loadStylesheet$4$baseUrl$forImport = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              baseUrl = baseUrl;
              $async$handler = 4;
              $async$self._async_evaluate0$_importSpan = span;
              importCache = null;
              _0_0 = $async$self._async_evaluate0$_importCache;
              if (_0_0 != null) {
                importCache = _0_0;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 7 : 9;
              break;
            case 7:
              // then
              if (baseUrl == null)
                baseUrl = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__stylesheet, "_stylesheet").span.file.url;
              importer = null;
              canonicalUrl = null;
              originalUrl = null;
              $async$goto = 10;
              return A._asyncAwait(J.canonicalize$4$baseImporter$baseUrl$forImport$x(importCache, A.Uri_parse(url), $async$self._async_evaluate0$_importer, baseUrl, forImport), $async$_async_evaluate0$_loadStylesheet$4$baseUrl$forImport);
            case 10:
              // returning from await.
              _1_0 = $async$result;
              if (type$.Record_3_nullable_Object_and_nullable_Object_and_nullable_Object_originalUrl._is(_1_0)) {
                importer = _1_0._0;
                canonicalUrl = _1_0._1;
                originalUrl = _1_0._2;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 11 : 12;
              break;
            case 11:
              // then
              $async$self._async_evaluate0$_loadedUrls.add$1(0, canonicalUrl);
              isDependency = $async$self._async_evaluate0$_inDependency || !J.$eq$(importer, $async$self._async_evaluate0$_importer);
              stylesheet = null;
              t1 = importCache;
              t2 = importer;
              t3 = canonicalUrl;
              t4 = originalUrl;
              $async$goto = 13;
              return A._asyncAwait(t1.importCanonical$4$originalUrl$quiet(t2, t3, t4, $async$self._async_evaluate0$_quietDeps && isDependency), $async$_async_evaluate0$_loadStylesheet$4$baseUrl$forImport);
            case 13:
              // returning from await.
              _2_0 = $async$result;
              if (_2_0 != null) {
                stylesheet = _2_0;
                t1 = true;
              } else
                t1 = false;
              if (t1) {
                t1 = stylesheet;
                t2 = importer;
                $async$returnValue = new A._Record_3_importer_isDependency(t1, t2, isDependency);
                $async$next = [1];
                // goto finally
                $async$goto = 5;
                break;
              }
            case 12:
              // join
              // goto join
              $async$goto = 8;
              break;
            case 9:
              // else
              result = null;
              t1 = baseUrl;
              $async$goto = 14;
              return A._asyncAwait($async$self._async_evaluate0$_importLikeNode$3(url, t1 == null ? $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__stylesheet, "_stylesheet").span.file.url : t1, forImport), $async$_async_evaluate0$_loadStylesheet$4$baseUrl$forImport);
            case 14:
              // returning from await.
              _3_0 = $async$result;
              if (_3_0 != null) {
                result = _3_0;
                t1 = true;
              } else
                t1 = false;
              if (t1) {
                t1 = $async$self._async_evaluate0$_loadedUrls;
                A.NullableExtension_andThen0(result._0.span.file.url, t1.get$add(t1));
                t1 = result;
                $async$returnValue = t1;
                $async$next = [1];
                // goto finally
                $async$goto = 5;
                break;
              }
            case 8:
              // join
              if (B.JSString_methods.startsWith$1(url, "package:") && true)
                throw A.wrapException(string$.x22packa);
              else
                throw A.wrapException("Can't find stylesheet to import.");
              $async$next.push(6);
              // goto finally
              $async$goto = 5;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException0)
                throw $async$exception;
              else if (t1 instanceof A.ArgumentError) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                A.throwWithTrace0($async$self._async_evaluate0$_exception$1(J.toString$0$(error)), error, stackTrace);
              } else {
                error0 = t1;
                stackTrace0 = A.getTraceFromException($async$exception);
                message = null;
                try {
                  message = A._asString(J.get$message$x(error0));
                } catch (exception) {
                  message0 = J.toString$0$(error0);
                  message = message0;
                }
                A.throwWithTrace0($async$self._async_evaluate0$_exception$1(message), error0, stackTrace0);
              }
              $async$next.push(6);
              // goto finally
              $async$goto = 5;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 5:
              // finally
              $async$handler = 2;
              $async$self._async_evaluate0$_importSpan = null;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_loadStylesheet$4$baseUrl$forImport, $async$completer);
    },
    _async_evaluate0$_importLikeNode$3(originalUrl, previous, forImport) {
      return this._importLikeNode$body$_EvaluateVisitor0(originalUrl, previous, forImport);
    },
    _importLikeNode$body$_EvaluateVisitor0(originalUrl, previous, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency_2),
        $async$returnValue, $async$self = this, isDependency, url, t2, t1, result;
      var $async$_async_evaluate0$_importLikeNode$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate0$_nodeImporter;
              result = t1.loadRelative$3(originalUrl, previous, forImport);
              $async$goto = result != null ? 3 : 5;
              break;
            case 3:
              // then
              isDependency = $async$self._async_evaluate0$_inDependency;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$goto = 6;
              return A._asyncAwait(t1.loadAsync$3(originalUrl, previous, forImport), $async$_async_evaluate0$_importLikeNode$3);
            case 6:
              // returning from await.
              result = $async$result;
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              isDependency = true;
            case 4:
              // join
              url = result._1;
              t1 = J.startsWith$1$s(url, "file") ? A.Syntax_forPath0(url) : B.Syntax_SCSS_scss0;
              t2 = $async$self._async_evaluate0$_quietDeps && isDependency ? $.$get$Logger_quiet0() : $async$self._async_evaluate0$_logger;
              $async$returnValue = new A._Record_3_importer_isDependency(A.Stylesheet_Stylesheet$parse0(result._0, t1, t2, url), null, isDependency);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_importLikeNode$3, $async$completer);
    },
    _async_evaluate0$_visitStaticImport$1($import) {
      return this._visitStaticImport$body$_EvaluateVisitor0($import);
    },
    _visitStaticImport$body$_EvaluateVisitor0($import) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, node, $async$temp1, $async$temp2;
      var $async$_async_evaluate0$_visitStaticImport$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate0$_interpolationToValue$1($import.url), $async$_async_evaluate0$_visitStaticImport$1);
            case 2:
              // returning from await.
              $async$temp2 = $async$result;
              $async$goto = 3;
              return A._asyncAwait(A.NullableExtension_andThen0($import.modifiers, $async$self.get$_async_evaluate0$_interpolationToValue()), $async$_async_evaluate0$_visitStaticImport$1);
            case 3:
              // returning from await.
              node = new $async$temp1.ModifiableCssImport0($async$temp2, $async$result, $import.span);
              if ($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent") !== $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root"))
                $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").addChild$1(node);
              else if ($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root").children._collection$_source)) {
                $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root").addChild$1(node);
                $async$self._async_evaluate0$__endOfImports = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") + 1;
              } else {
                t1 = $async$self._async_evaluate0$_outOfOrderImports;
                (t1 == null ? $async$self._async_evaluate0$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport_2) : t1).push(node);
              }
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_visitStaticImport$1, $async$completer);
    },
    _async_evaluate0$_applyMixin$5(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent) {
      return this._applyMixin$body$_EvaluateVisitor0(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent);
    },
    _applyMixin$body$_EvaluateVisitor0(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, _1_8, t1, _0_0;
      var $async$_async_evaluate0$_applyMixin$5 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _1_8 = A._InitializedCell$(new A._EvaluateVisitor__applyMixin_closure8(mixin));
              if (mixin == null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2("Undefined mixin.", nodeWithSpan.get$span(nodeWithSpan)));
              t1 = type$.AsyncBuiltInCallable_2._is(mixin);
              $async$goto = t1 && !mixin.get$acceptsContent() && contentCallable != null ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate0$_evaluateArguments$1($arguments), $async$_async_evaluate0$_applyMixin$5);
            case 5:
              // returning from await.
              t1 = $async$result._values;
              _0_0 = mixin.callbackFor$2(J.get$length$asx(t1[2]), new A.MapKeySet(t1[0], type$.MapKeySet_String));
              throw A.wrapException(A.MultiSpanSassRuntimeException$0("Mixin doesn't accept a content block.", nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([_0_0._0.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), $async$self._async_evaluate0$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
            case 4:
              // join
              $async$goto = t1 ? 6 : 7;
              break;
            case 6:
              // then
              $async$goto = 8;
              return A._asyncAwait($async$self._async_evaluate0$_environment.withContent$2(contentCallable, new A._EvaluateVisitor__applyMixin_closure9($async$self, $arguments, mixin, nodeWithSpanWithoutContent)), $async$_async_evaluate0$_applyMixin$5);
            case 8:
              // returning from await.
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 7:
              // join
              t1 = type$.UserDefinedCallable_AsyncEnvironment_2._is(mixin);
              if (t1 && _1_8._readFinal$0() instanceof A.MixinRule0 && !_1_8._readFinal$0().get$hasContent() && contentCallable != null)
                throw A.wrapException(A.MultiSpanSassRuntimeException$0("Mixin doesn't accept a content block.", nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([mixin.declaration.$arguments.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), $async$self._async_evaluate0$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
              $async$goto = t1 ? 9 : 10;
              break;
            case 9:
              // then
              $async$goto = 11;
              return A._asyncAwait($async$self._async_evaluate0$_runUserDefinedCallable$1$4($arguments, mixin, nodeWithSpanWithoutContent, new A._EvaluateVisitor__applyMixin_closure10($async$self, contentCallable, mixin, nodeWithSpanWithoutContent), type$.Null), $async$_async_evaluate0$_applyMixin$5);
            case 11:
              // returning from await.
              // goto break $label0$0
              $async$goto = 2;
              break;
            case 10:
              // join
              throw A.wrapException(A.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
            case 2:
              // break $label0$0
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_applyMixin$5, $async$completer);
    },
    visitIncludeRule$1(node) {
      return this.visitIncludeRule$body$_EvaluateVisitor0(node);
    },
    visitIncludeRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this;
      var $async$visitIncludeRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_applyMixin$5($async$self._async_evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitIncludeRule_closure8($async$self, node)), A.NullableExtension_andThen0(node.content, new A._EvaluateVisitor_visitIncludeRule_closure9($async$self)), node.$arguments, node, new A._FakeAstNode0(new A._EvaluateVisitor_visitIncludeRule_closure10(node))), $async$visitIncludeRule$1);
            case 3:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitIncludeRule$1, $async$completer);
    },
    visitMixinRule$1(node) {
      return this.visitMixinRule$body$_EvaluateVisitor0(node);
    },
    visitMixinRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, index, t5;
      var $async$visitMixinRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate0$_environment;
              t2 = t1.closure$0();
              t3 = $async$self._async_evaluate0$_inDependency;
              t4 = t1._async_environment0$_mixins;
              index = t4.length - 1;
              t5 = node.name;
              t1._async_environment0$_mixinIndices.$indexSet(0, t5, index);
              J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable0(node, t2, t3, type$.UserDefinedCallable_AsyncEnvironment_2));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitMixinRule$1, $async$completer);
    },
    visitLoudComment$1(node) {
      return this.visitLoudComment$body$_EvaluateVisitor0(node);
    },
    visitLoudComment$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, $async$temp1, $async$temp2;
      var $async$visitLoudComment$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_inFunction) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              if ($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent") === $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root") && $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root").children._collection$_source))
                $async$self._async_evaluate0$__endOfImports = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") + 1;
              t1 = node.text;
              $async$temp1 = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent");
              $async$temp2 = A;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolation$1(t1), $async$visitLoudComment$1);
            case 3:
              // returning from await.
              $async$temp1.addChild$1(new $async$temp2.ModifiableCssComment0($async$result, t1.span));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitLoudComment$1, $async$completer);
    },
    visitMediaRule$1(node) {
      return this.visitMediaRule$body$_EvaluateVisitor0(node);
    },
    visitMediaRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, queries, mergedQueries, t1, mergedSources, t2, t3;
      var $async$visitMediaRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Media_, node.span));
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_visitMediaQueries$1(node.query), $async$visitMediaRule$1);
            case 3:
              // returning from await.
              queries = $async$result;
              mergedQueries = A.NullableExtension_andThen0($async$self._async_evaluate0$_mediaQueries, new A._EvaluateVisitor_visitMediaRule_closure8($async$self, queries));
              t1 = mergedQueries == null;
              if (!t1 && J.get$isEmpty$asx(mergedQueries)) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              if (t1)
                mergedSources = B.Set_empty5;
              else {
                t2 = $async$self._async_evaluate0$_mediaQuerySources;
                t2.toString;
                t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery_2);
                t3 = $async$self._async_evaluate0$_mediaQueries;
                t3.toString;
                t2.addAll$1(0, t3);
                t2.addAll$1(0, queries);
                mergedSources = t2;
              }
              t1 = t1 ? queries : mergedQueries;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$0(t1, node.span), new A._EvaluateVisitor_visitMediaRule_closure9($async$self, mergedQueries, queries, mergedSources, node), node.hasDeclarations, new A._EvaluateVisitor_visitMediaRule_closure10(mergedSources), type$.ModifiableCssMediaRule_2, type$.Null), $async$visitMediaRule$1);
            case 4:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitMediaRule$1, $async$completer);
    },
    _async_evaluate0$_visitMediaQueries$1(interpolation) {
      return this._visitMediaQueries$body$_EvaluateVisitor0(interpolation);
    },
    _visitMediaQueries$body$_EvaluateVisitor0(interpolation) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.List_CssMediaQuery_2),
        $async$returnValue, $async$self = this, _0_0, resolved, map;
      var $async$_async_evaluate0$_visitMediaQueries$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolationWithMap$2$warnForColor(interpolation, true), $async$_async_evaluate0$_visitMediaQueries$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              resolved = _0_0._0;
              map = _0_0._1;
              $async$returnValue = A.CssMediaQuery_parseList0(resolved, map, $async$self._async_evaluate0$_logger);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_visitMediaQueries$1, $async$completer);
    },
    _async_evaluate0$_mergeMediaQueries$2(queries1, queries2) {
      var t1, t2, t3, t4, _0_0, result, t5,
        queries = A._setArrayType([], type$.JSArray_CssMediaQuery_2);
      for (t1 = J.get$iterator$ax(queries1), t2 = J.getInterceptor$ax(queries2); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        for (t4 = t2.get$iterator(queries2); t4.moveNext$0();) {
          _0_0 = t3.merge$1(t4.get$current(t4));
          if (B._SingletonCssMediaQueryMergeResult_00 === _0_0)
            continue;
          if (B._SingletonCssMediaQueryMergeResult_10 === _0_0)
            return null;
          if (_0_0 instanceof A.MediaQuerySuccessfulMergeResult0) {
            result = _0_0;
            t5 = true;
          } else {
            result = null;
            t5 = false;
          }
          if (t5)
            queries.push(result.query);
        }
      }
      return queries;
    },
    visitReturnRule$1(node) {
      return this.visitReturnRule$body$_EvaluateVisitor0(node);
    },
    visitReturnRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, t1;
      var $async$visitReturnRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.expression;
              $async$goto = 3;
              return A._asyncAwait(t1.accept$1($async$self), $async$visitReturnRule$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate0$_withoutSlash$2($async$result, t1);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitReturnRule$1, $async$completer);
    },
    visitSilentComment$1(node) {
      return this.visitSilentComment$body$_EvaluateVisitor0(node);
    },
    visitSilentComment$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue;
      var $async$visitSilentComment$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSilentComment$1, $async$completer);
    },
    visitStyleRule$1(node) {
      return this.visitStyleRule$body$_EvaluateVisitor0(node);
    },
    visitStyleRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, _0_0, selectorText, selectorMap, t2, parsedSelector, rule, oldAtRootExcludingStyleRule, t3, t4, t5, _i, complex, visitor, t6, t7, t8, t9;
      var $async$visitStyleRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Style_, node.span));
              t1 = node.selector;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolationWithMap$2$warnForColor(t1, true), $async$visitStyleRule$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              selectorText = _0_0._0;
              selectorMap = _0_0._1;
              $async$goto = $async$self._async_evaluate0$_inKeyframes ? 4 : 5;
              break;
            case 4:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$0(new A.CssValue0(A.List_List$unmodifiable(A.KeyframeSelectorParser$0(selectorText, selectorMap, $async$self._async_evaluate0$_logger).parse$0(), type$.String), t1.span, type$.CssValue_List_String_2), node.span), new A._EvaluateVisitor_visitStyleRule_closure14($async$self, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure15(), type$.ModifiableCssKeyframeBlock_2, type$.Null), $async$visitStyleRule$1);
            case 6:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 5:
              // join
              t1 = A.SelectorList_SelectorList$parse0(selectorText, !$async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__stylesheet, "_stylesheet").plainCss, !$async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__stylesheet, "_stylesheet").plainCss, selectorMap, $async$self._async_evaluate0$_logger);
              t2 = $async$self._async_evaluate0$_styleRuleIgnoringAtRoot;
              t2 = t2 == null ? null : t2.originalSelector;
              parsedSelector = t1.resolveParentSelectors$2$implicitParent(t2, !$async$self._async_evaluate0$_atRootExcludingStyleRule);
              rule = A.ModifiableCssStyleRule$0($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__extensionStore, "_extensionStore").addSelector$2(parsedSelector, $async$self._async_evaluate0$_mediaQueries), node.span, parsedSelector);
              oldAtRootExcludingStyleRule = $async$self._async_evaluate0$_atRootExcludingStyleRule;
              $async$self._async_evaluate0$_atRootExcludingStyleRule = false;
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitStyleRule_closure16($async$self, rule, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure17(), type$.ModifiableCssStyleRule_2, type$.Null), $async$visitStyleRule$1);
            case 7:
              // returning from await.
              $async$self._async_evaluate0$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
              if (!rule.accept$1(B._IsInvisibleVisitor_false_false0))
                for (t1 = parsedSelector.components, t2 = t1.length, t3 = type$.SourceSpan, t4 = type$.String, t5 = rule.children, _i = 0; _i < t2; ++_i) {
                  complex = t1[_i];
                  if (!complex.accept$1(B._IsBogusVisitor_true0))
                    continue;
                  if (complex.accept$1(B.C__IsUselessVisitor0)) {
                    visitor = A._SerializeVisitor$0(null, true, null, true, false, null, true);
                    complex.accept$1(visitor);
                    $async$self._async_evaluate0$_warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0)) + string$.x22x20is_ix20, A.SpanExtensions_trimRight0(complex.span), B.Deprecation_XV6);
                  } else if (complex.leadingCombinators.length !== 0) {
                    visitor = A._SerializeVisitor$0(null, true, null, true, false, null, true);
                    complex.accept$1(visitor);
                    $async$self._async_evaluate0$_warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0)) + string$.x22x20is_ix0a, A.SpanExtensions_trimRight0(complex.span), B.Deprecation_XV6);
                  } else {
                    visitor = A._SerializeVisitor$0(null, true, null, true, false, null, true);
                    complex.accept$1(visitor);
                    t6 = B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0));
                    t7 = complex.accept$1(B._IsBogusVisitor_false0) ? string$.x20It_wi : "";
                    t8 = A.SpanExtensions_trimRight0(complex.span);
                    if (t5.get$length(t5) === 0)
                      A.throwExpression(A.IterableElementError_noElement());
                    t9 = J.get$span$z(t5.$index(0, 0));
                    $async$self._async_evaluate0$_warn$3('The selector "' + t6 + string$.x22x20is_o + t7 + string$.x0aThis_, new A.MultiSpan0(t8, "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t9, "this is not a style rule" + (t5.every$1(t5, new A._EvaluateVisitor_visitStyleRule_closure18()) ? "\n(try converting to a //-style comment)" : "")], t3, t4), t3, t4)), B.Deprecation_XV6);
                  }
                }
              if (($async$self._async_evaluate0$_atRootExcludingStyleRule ? null : $async$self._async_evaluate0$_styleRuleIgnoringAtRoot) == null) {
                t1 = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").children;
                t1 = !t1.get$isEmpty(t1);
              } else
                t1 = false;
              if (t1) {
                t1 = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").children;
                t1.get$last(t1).isGroupEnd = true;
              }
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitStyleRule$1, $async$completer);
    },
    visitSupportsRule$1(node) {
      return this.visitSupportsRule$body$_EvaluateVisitor0(node);
    },
    visitSupportsRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, $async$temp1, $async$temp2;
      var $async$visitSupportsRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Suppor, node.span));
              t1 = node.condition;
              $async$temp1 = A;
              $async$temp2 = A;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate0$_visitSupportsCondition$1(t1), $async$visitSupportsRule$1);
            case 4:
              // returning from await.
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through($async$temp1.ModifiableCssSupportsRule$0(new $async$temp2.CssValue0($async$result, t1.get$span(t1), type$.CssValue_String_2), node.span), new A._EvaluateVisitor_visitSupportsRule_closure5($async$self, node), node.hasDeclarations, new A._EvaluateVisitor_visitSupportsRule_closure6(), type$.ModifiableCssSupportsRule_2, type$.Null), $async$visitSupportsRule$1);
            case 3:
              // returning from await.
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSupportsRule$1, $async$completer);
    },
    _async_evaluate0$_visitSupportsCondition$1(condition) {
      return this._visitSupportsCondition$body$_EvaluateVisitor0(condition);
    },
    _visitSupportsCondition$body$_EvaluateVisitor0(condition) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, operation, t1, t2, negation, interpolation, $function, anything, _box_0, $async$temp1, $async$temp2;
      var $async$_async_evaluate0$_visitSupportsCondition$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              if (condition instanceof A.SupportsOperation0) {
                operation = condition;
                t1 = true;
              } else {
                operation = null;
                t1 = false;
              }
              $async$goto = t1 ? 4 : 5;
              break;
            case 4:
              // then
              t1 = operation.left;
              t2 = operation.operator;
              $async$temp1 = A;
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_parenthesize$2(t1, t2), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 6:
              // returning from await.
              $async$temp1 = $async$temp1.S($async$result) + " " + t2 + " ";
              $async$temp2 = A;
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate0$_parenthesize$2(operation.right, t2), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 7:
              // returning from await.
              t2 = $async$temp1 + $async$temp2.S($async$result);
              t1 = t2;
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 5:
              // join
              if (condition instanceof A.SupportsNegation0) {
                negation = condition;
                t1 = true;
              } else {
                negation = null;
                t1 = false;
              }
              $async$goto = t1 ? 8 : 9;
              break;
            case 8:
              // then
              $async$temp1 = A;
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate0$_parenthesize$1(negation.condition), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 10:
              // returning from await.
              t1 = "not " + $async$temp1.S($async$result);
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 9:
              // join
              if (condition instanceof A.SupportsInterpolation0) {
                interpolation = condition;
                t1 = true;
              } else {
                interpolation = null;
                t1 = false;
              }
              $async$goto = t1 ? 11 : 12;
              break;
            case 11:
              // then
              $async$goto = 13;
              return A._asyncAwait($async$self._async_evaluate0$_evaluateToCss$2$quote(interpolation.expression, false), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 13:
              // returning from await.
              t1 = $async$result;
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 12:
              // join
              _box_0.declaration = null;
              if (condition instanceof A.SupportsDeclaration0) {
                _box_0.declaration = condition;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 14 : 15;
              break;
            case 14:
              // then
              $async$goto = 16;
              return A._asyncAwait($async$self._async_evaluate0$_withSupportsDeclaration$1$1(new A._EvaluateVisitor__visitSupportsCondition_closure2(_box_0, $async$self), type$.String), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 16:
              // returning from await.
              t1 = $async$result;
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 15:
              // join
              if (condition instanceof A.SupportsFunction0) {
                $function = condition;
                t1 = true;
              } else {
                $function = null;
                t1 = false;
              }
              $async$goto = t1 ? 17 : 18;
              break;
            case 17:
              // then
              $async$temp1 = A;
              $async$goto = 19;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolation$1($function.name), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 19:
              // returning from await.
              $async$temp1 = $async$temp1.S($async$result) + "(";
              $async$temp2 = A;
              $async$goto = 20;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolation$1($function.$arguments), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 20:
              // returning from await.
              t1 = $async$temp1 + $async$temp2.S($async$result) + ")";
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 18:
              // join
              if (condition instanceof A.SupportsAnything0) {
                anything = condition;
                t1 = true;
              } else {
                anything = null;
                t1 = false;
              }
              $async$goto = t1 ? 21 : 22;
              break;
            case 21:
              // then
              $async$temp1 = A;
              $async$goto = 23;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolation$1(anything.contents), $async$_async_evaluate0$_visitSupportsCondition$1);
            case 23:
              // returning from await.
              t1 = "(" + $async$temp1.S($async$result) + ")";
              // goto break $label0$0
              $async$goto = 3;
              break;
            case 22:
              // join
              t1 = A.throwExpression(A.ArgumentError$("Unknown supports condition type " + A.getRuntimeTypeOfDartObject(condition).toString$0(0) + ".", null));
            case 3:
              // break $label0$0
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_visitSupportsCondition$1, $async$completer);
    },
    _async_evaluate0$_withSupportsDeclaration$1$1(callback, $T) {
      return this._withSupportsDeclaration$body$_EvaluateVisitor0(callback, $T, $T);
    },
    _withSupportsDeclaration$body$_EvaluateVisitor0(callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$next = [], $async$self = this, t1, oldInSupportsDeclaration;
      var $async$_async_evaluate0$_withSupportsDeclaration$1$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldInSupportsDeclaration = $async$self._async_evaluate0$_inSupportsDeclaration;
              $async$self._async_evaluate0$_inSupportsDeclaration = true;
              $async$handler = 3;
              $async$goto = 6;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_withSupportsDeclaration$1$1);
            case 6:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              $async$next = [1];
              // goto finally
              $async$goto = 4;
              break;
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [2];
            case 4:
              // finally
              $async$handler = 2;
              $async$self._async_evaluate0$_inSupportsDeclaration = oldInSupportsDeclaration;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_withSupportsDeclaration$1$1, $async$completer);
    },
    _async_evaluate0$_parenthesize$2(condition, operator) {
      return this._parenthesize$body$_EvaluateVisitor0(condition, operator);
    },
    _async_evaluate0$_parenthesize$1(condition) {
      return this._async_evaluate0$_parenthesize$2(condition, null);
    },
    _parenthesize$body$_EvaluateVisitor0(condition, operator) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, t1, $async$temp1;
      var $async$_async_evaluate0$_parenthesize$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (!(condition instanceof A.SupportsNegation0))
                if (condition instanceof A.SupportsOperation0)
                  t1 = operator == null || operator !== condition.operator;
                else
                  t1 = false;
              else
                t1 = true;
              $async$goto = t1 ? 3 : 4;
              break;
            case 3:
              // then
              $async$temp1 = A;
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate0$_visitSupportsCondition$1(condition), $async$_async_evaluate0$_parenthesize$2);
            case 5:
              // returning from await.
              $async$returnValue = "(" + $async$temp1.S($async$result) + ")";
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_visitSupportsCondition$1(condition), $async$_async_evaluate0$_parenthesize$2);
            case 6:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_parenthesize$2, $async$completer);
    },
    visitVariableDeclaration$1(node) {
      return this.visitVariableDeclaration$body$_EvaluateVisitor0(node);
    },
    visitVariableDeclaration$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t2, t3, value, t1, $async$temp1, $async$temp2, $async$temp3;
      var $async$visitVariableDeclaration$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              if (node.isGuarded) {
                if (node.namespace == null && $async$self._async_evaluate0$_environment._async_environment0$_variables.length === 1) {
                  t1.override = null;
                  t2 = $async$self._async_evaluate0$_configuration._configuration0$_values;
                  t2 = t2.get$isEmpty(t2) ? null : t2.remove$1(0, node.name);
                  if (t2 != null) {
                    t1.override = t2;
                    t3 = t2;
                    t2 = true;
                  } else {
                    t2 = false;
                    t3 = null;
                  }
                  if (t2 && !t3.value.$eq(0, B.C__SassNull0)) {
                    $async$self._async_evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure8(t1, $async$self, node));
                    $async$returnValue = null;
                    // goto return
                    $async$goto = 1;
                    break;
                  }
                }
                value = $async$self._async_evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure9($async$self, node));
                if (value != null && !value.$eq(0, B.C__SassNull0)) {
                  $async$returnValue = null;
                  // goto return
                  $async$goto = 1;
                  break;
                }
              }
              if (node.isGlobal && !$async$self._async_evaluate0$_environment.globalVariableExists$1(node.name)) {
                t1 = $async$self._async_evaluate0$_environment._async_environment0$_variables.length === 1 ? string$.As_of_S : string$.As_of_R + A.declarationName0(node.span) + ": null` at the stylesheet root.";
                $async$self._async_evaluate0$_warn$3(t1, node.span, B.Deprecation_wKk);
              }
              t1 = node.expression;
              $async$temp1 = node;
              $async$temp2 = A;
              $async$temp3 = node;
              $async$goto = 3;
              return A._asyncAwait(t1.accept$1($async$self), $async$visitVariableDeclaration$1);
            case 3:
              // returning from await.
              $async$self._async_evaluate0$_addExceptionSpan$2($async$temp1, new $async$temp2._EvaluateVisitor_visitVariableDeclaration_closure10($async$self, $async$temp3, $async$self._async_evaluate0$_withoutSlash$2($async$result, t1)));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitVariableDeclaration$1, $async$completer);
    },
    visitUseRule$1(node) {
      return this.visitUseRule$body$_EvaluateVisitor0(node);
    },
    visitUseRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, values, _i, variable, t3, variableNodeWithSpan, configuration, t1, t2, $async$temp1, $async$temp2, $async$temp3;
      var $async$visitUseRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = node.configuration;
              t2 = t1.length;
              $async$goto = t2 !== 0 ? 3 : 5;
              break;
            case 3:
              // then
              values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue_2);
              _i = 0;
            case 6:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 8;
                break;
              }
              variable = t1[_i];
              t3 = variable.expression;
              variableNodeWithSpan = $async$self._async_evaluate0$_expressionNode$1(t3);
              $async$temp1 = values;
              $async$temp2 = variable.name;
              $async$temp3 = A;
              $async$goto = 9;
              return A._asyncAwait(t3.accept$1($async$self), $async$visitUseRule$1);
            case 9:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, new $async$temp3.ConfiguredValue0($async$self._async_evaluate0$_withoutSlash$2($async$result, variableNodeWithSpan), variable.span, variableNodeWithSpan));
            case 7:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 6;
              break;
            case 8:
              // after for
              configuration = new A.ExplicitConfiguration0(node, values, null);
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              configuration = B.Configuration_Map_empty_null0;
            case 4:
              // join
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate0$_loadModule$5$configuration(node.url, "@use", node, new A._EvaluateVisitor_visitUseRule_closure2($async$self, node), configuration), $async$visitUseRule$1);
            case 10:
              // returning from await.
              $async$self._async_evaluate0$_assertConfigurationIsEmpty$1(configuration);
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitUseRule$1, $async$completer);
    },
    visitWarnRule$1(node) {
      return this.visitWarnRule$body$_EvaluateVisitor0(node);
    },
    visitWarnRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, value, t1;
      var $async$visitWarnRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_addExceptionSpanAsync$1$2(node, new A._EvaluateVisitor_visitWarnRule_closure2($async$self, node), type$.Value_2), $async$visitWarnRule$1);
            case 3:
              // returning from await.
              value = $async$result;
              t1 = value instanceof A.SassString0 ? value._string0$_text : $async$self._async_evaluate0$_serialize$2(value, node.expression);
              $async$self._async_evaluate0$_logger.warn$2$trace(0, t1, $async$self._async_evaluate0$_stackTrace$1(node.span));
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitWarnRule$1, $async$completer);
    },
    visitWhileRule$1(node) {
      return this._async_evaluate0$_environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitWhileRule_closure2(this, node), true, node.hasDeclarations, type$.nullable_Value_2);
    },
    visitBinaryOperationExpression$1(node) {
      var t1, _this = this;
      if (_this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__stylesheet, "_stylesheet").plainCss) {
        t1 = node.operator;
        t1 = t1 !== B.BinaryOperator_2jN0 && t1 !== B.BinaryOperator_t8B0;
      } else
        t1 = false;
      if (t1)
        throw A.wrapException(_this._async_evaluate0$_exception$2("Operators aren't allowed in plain CSS.", node.get$operatorSpan()));
      return _this._async_evaluate0$_addExceptionSpanAsync$1$2(node, new A._EvaluateVisitor_visitBinaryOperationExpression_closure2(_this, node), type$.Value_2);
    },
    _async_evaluate0$_slash$3(left, right, node) {
      var t1, _null = null,
        result = left.dividedBy$1(right),
        _1_0 = new A._Record_2(left, right),
        _1_1 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure5(_1_0)),
        _1_2 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure6(_1_0));
      if (_1_1._readFinal$0() instanceof A.SassNumber0) {
        left = _1_1._readFinal$0();
        if (_1_2._readFinal$0() instanceof A.SassNumber0) {
          right = _1_2._readFinal$0();
          t1 = node.allowsSlash && this._async_evaluate0$_operandAllowsSlash$1(node.left) && this._async_evaluate0$_operandAllowsSlash$1(node.right);
        } else {
          right = _null;
          t1 = false;
        }
      } else {
        right = _null;
        left = right;
        t1 = false;
      }
      if (t1)
        return type$.SassNumber_2._as(result).withSlash$2(left, right);
      if (_1_1._readFinal$0() instanceof A.SassNumber0 && _1_2._readFinal$0() instanceof A.SassNumber0) {
        this._async_evaluate0$_warn$3(string$.Using__o + A.S(new A._EvaluateVisitor__slash_recommendation2().call$1(node)) + " or " + A.expressionToCalc0(node).toString$0(0) + string$.x0a_Morex20, node.get$span(node), B.Deprecation_wWh);
        return result;
      }
      return result;
    },
    _async_evaluate0$_operandAllowsSlash$1(node) {
      var t1, t2;
      if (node instanceof A.FunctionExpression0)
        if (node.namespace == null) {
          t1 = node.originalName;
          if (B.Set_WfnXb.contains$1(0, A.stringReplaceAllUnchecked(t1, "_", "-").toLowerCase())) {
            t2 = this._async_evaluate0$_environment;
            t1 = t2.getFunction$1(A.stringReplaceAllUnchecked(t1, "_", "-")) == null;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = true;
      return t1;
    },
    visitValueExpression$1(node) {
      return this.visitValueExpression$body$_EvaluateVisitor0(node);
    },
    visitValueExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue;
      var $async$visitValueExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = node.value;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitValueExpression$1, $async$completer);
    },
    visitVariableExpression$1(node) {
      return this.visitVariableExpression$body$_EvaluateVisitor0(node);
    },
    visitVariableExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, result;
      var $async$visitVariableExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              result = $async$self._async_evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableExpression_closure2($async$self, node));
              if (result != null) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              throw A.wrapException($async$self._async_evaluate0$_exception$2("Undefined variable.", node.span));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitVariableExpression$1, $async$completer);
    },
    visitUnaryOperationExpression$1(node) {
      return this.visitUnaryOperationExpression$body$_EvaluateVisitor0(node);
    },
    visitUnaryOperationExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, $async$temp1, $async$temp2, $async$temp3;
      var $async$visitUnaryOperationExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = node;
              $async$temp2 = A;
              $async$temp3 = node;
              $async$goto = 3;
              return A._asyncAwait(node.operand.accept$1($async$self), $async$visitUnaryOperationExpression$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate0$_addExceptionSpan$2($async$temp1, new $async$temp2._EvaluateVisitor_visitUnaryOperationExpression_closure2($async$temp3, $async$result));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitUnaryOperationExpression$1, $async$completer);
    },
    visitBooleanExpression$1(node) {
      return this.visitBooleanExpression$body$_EvaluateVisitor0(node);
    },
    visitBooleanExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassBoolean_2),
        $async$returnValue;
      var $async$visitBooleanExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = node.value ? B.SassBoolean_true0 : B.SassBoolean_false0;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitBooleanExpression$1, $async$completer);
    },
    visitIfExpression$1(node) {
      return this.visitIfExpression$body$_EvaluateVisitor0(node);
    },
    visitIfExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, condition, t1, ifTrue, ifFalse, result, _0_0, positional, named;
      var $async$visitIfExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_evaluateMacroArguments$1(node), $async$visitIfExpression$1);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              positional = _0_0._0;
              named = _0_0._1;
              $async$self._async_evaluate0$_verifyArguments$4(J.get$length$asx(positional), named, $.$get$IfExpression_declaration0(), node);
              condition = A.ListExtensions_elementAtOrNull(positional, 0);
              if (condition == null) {
                t1 = named.$index(0, "condition");
                t1.toString;
                condition = t1;
              }
              ifTrue = A.ListExtensions_elementAtOrNull(positional, 1);
              if (ifTrue == null) {
                t1 = named.$index(0, "if-true");
                t1.toString;
                ifTrue = t1;
              }
              ifFalse = A.ListExtensions_elementAtOrNull(positional, 2);
              if (ifFalse == null) {
                t1 = named.$index(0, "if-false");
                t1.toString;
                ifFalse = t1;
              }
              $async$goto = 4;
              return A._asyncAwait(condition.accept$1($async$self), $async$visitIfExpression$1);
            case 4:
              // returning from await.
              result = $async$result.get$isTruthy() ? ifTrue : ifFalse;
              $async$goto = 5;
              return A._asyncAwait(result.accept$1($async$self), $async$visitIfExpression$1);
            case 5:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate0$_withoutSlash$2($async$result, $async$self._async_evaluate0$_expressionNode$1(result));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitIfExpression$1, $async$completer);
    },
    visitNullExpression$1(node) {
      return this.visitNullExpression$body$_EvaluateVisitor0(node);
    },
    visitNullExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue;
      var $async$visitNullExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = B.C__SassNull0;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitNullExpression$1, $async$completer);
    },
    visitNumberExpression$1(node) {
      return this.visitNumberExpression$body$_EvaluateVisitor0(node);
    },
    visitNumberExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassNumber_2),
        $async$returnValue;
      var $async$visitNumberExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = A.SassNumber_SassNumber0(node.value, node.unit);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitNumberExpression$1, $async$completer);
    },
    visitParenthesizedExpression$1(node) {
      var _this = this;
      return _this._async_evaluate0$_assertInModule$2(_this._async_evaluate0$__stylesheet, "_stylesheet").plainCss ? A.throwExpression(_this._async_evaluate0$_exception$2("Parentheses aren't allowed in plain CSS.", node.span)) : node.expression.accept$1(_this);
    },
    visitColorExpression$1(node) {
      return this.visitColorExpression$body$_EvaluateVisitor0(node);
    },
    visitColorExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassColor_2),
        $async$returnValue;
      var $async$visitColorExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$returnValue = node.value;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitColorExpression$1, $async$completer);
    },
    visitListExpression$1(node) {
      return this.visitListExpression$body$_EvaluateVisitor0(node);
    },
    visitListExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassList_2),
        $async$returnValue, $async$self = this, $async$temp1;
      var $async$visitListExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(A.mapAsync0(node.contents, new A._EvaluateVisitor_visitListExpression_closure2($async$self), type$.Expression_2, type$.Value_2), $async$visitListExpression$1);
            case 3:
              // returning from await.
              $async$returnValue = $async$temp1.SassList$0($async$result, node.separator, node.hasBrackets);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitListExpression$1, $async$completer);
    },
    visitMapExpression$1(node) {
      return this.visitMapExpression$body$_EvaluateVisitor0(node);
    },
    visitMapExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassMap_2),
        $async$returnValue, $async$self = this, t2, t3, _i, t4, key, value, keyValue, valueValue, oldValueSpan, t1, map, keyNodes;
      var $async$visitMapExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = type$.Value_2;
              map = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
              keyNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode_2);
              t2 = node.pairs, t3 = t2.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              t4 = t2[_i];
              key = t4._0;
              value = t4._1;
              $async$goto = 6;
              return A._asyncAwait(key.accept$1($async$self), $async$visitMapExpression$1);
            case 6:
              // returning from await.
              keyValue = $async$result;
              $async$goto = 7;
              return A._asyncAwait(value.accept$1($async$self), $async$visitMapExpression$1);
            case 7:
              // returning from await.
              valueValue = $async$result;
              if (map.containsKey$1(keyValue)) {
                t1 = keyNodes.$index(0, keyValue);
                oldValueSpan = t1 == null ? null : t1.get$span(t1);
                t1 = key.get$span(key);
                t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
                if (oldValueSpan != null)
                  t2.$indexSet(0, oldValueSpan, "first key");
                throw A.wrapException(A.MultiSpanSassRuntimeException$0("Duplicate key.", t1, "second key", t2, $async$self._async_evaluate0$_stackTrace$1(key.get$span(key)), null));
              }
              map.$indexSet(0, keyValue, valueValue);
              keyNodes.$indexSet(0, keyValue, key);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = new A.SassMap0(A.ConstantMap_ConstantMap$from(map, t1, t1));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitMapExpression$1, $async$completer);
    },
    visitFunctionExpression$1(node) {
      return this.visitFunctionExpression$body$_EvaluateVisitor0(node);
    },
    visitFunctionExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, t2, _0_0, t3, t4, oldInFunction, result, t1, $function;
      var $async$visitFunctionExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              $function = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__stylesheet, "_stylesheet").plainCss ? null : $async$self._async_evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure8($async$self, node));
              t1.$function = $function;
              $async$goto = $function == null ? 3 : 4;
              break;
            case 3:
              // then
              if (node.namespace != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2("Undefined function.", node.span));
              t2 = node.originalName;
              _0_0 = A.stringReplaceAllUnchecked(t2, "_", "-").toLowerCase();
              if ("min" === _0_0 || "max" === _0_0 || "round" === _0_0 || "abs" === _0_0) {
                t3 = node.$arguments;
                t4 = t3.named;
                t3 = t4.get$isEmpty(t4) && t3.rest == null && B.JSArray_methods.every$1(t3.positional, new A._EvaluateVisitor_visitFunctionExpression_closure9());
              } else
                t3 = false;
              $async$goto = t3 ? 5 : 6;
              break;
            case 5:
              // then
              $async$goto = 7;
              return A._asyncAwait($async$self._async_evaluate0$_visitCalculation$2$inLegacySassFunction(node, true), $async$visitFunctionExpression$1);
            case 7:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 6:
              // join
              $async$goto = "calc" === _0_0 || "clamp" === _0_0 || "hypot" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "sqrt" === _0_0 || "exp" === _0_0 || "sign" === _0_0 || "mod" === _0_0 || "rem" === _0_0 || "atan2" === _0_0 || "pow" === _0_0 || "log" === _0_0 ? 8 : 9;
              break;
            case 8:
              // then
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate0$_visitCalculation$1(node), $async$visitFunctionExpression$1);
            case 10:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 9:
              // join
              if ($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__stylesheet, "_stylesheet").plainCss)
                $function = null;
              else {
                t3 = $async$self._async_evaluate0$_builtInFunctions.$index(0, A.stringReplaceAllUnchecked(t2, "_", "-"));
                $function = t3;
              }
              t1.$function = $function == null ? new A.PlainCssCallable0(t2) : $function;
            case 4:
              // join
              oldInFunction = $async$self._async_evaluate0$_inFunction;
              $async$self._async_evaluate0$_inFunction = true;
              $async$goto = 11;
              return A._asyncAwait($async$self._async_evaluate0$_addErrorSpan$1$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure10(t1, $async$self, node), type$.Value_2), $async$visitFunctionExpression$1);
            case 11:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$_inFunction = oldInFunction;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitFunctionExpression$1, $async$completer);
    },
    _async_evaluate0$_visitCalculation$2$inLegacySassFunction(node, inLegacySassFunction) {
      return this._visitCalculation$body$_EvaluateVisitor0(node, inLegacySassFunction);
    },
    _async_evaluate0$_visitCalculation$1(node) {
      return this._async_evaluate0$_visitCalculation$2$inLegacySassFunction(node, false);
    },
    _visitCalculation$body$_EvaluateVisitor0(node, inLegacySassFunction) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$next = [], $async$self = this, $arguments, oldCallableNode, t1, _0_0, error, stackTrace, t4, _i, exception, t2, t3, $async$temp1;
      var $async$_async_evaluate0$_visitCalculation$2$inLegacySassFunction = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t2 = node.$arguments;
              t3 = t2.named;
              if (t3.get$isNotEmpty(t3))
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Keywor, node.span));
              else if (t2.rest != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Rest_a, node.span));
              $async$self._async_evaluate0$_checkCalculationArguments$1(node);
              t3 = A._setArrayType([], type$.JSArray_Object);
              t2 = t2.positional, t4 = t2.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t4)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$temp1 = t3;
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction), $async$_async_evaluate0$_visitCalculation$2$inLegacySassFunction);
            case 6:
              // returning from await.
              $async$temp1.push($async$result);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $arguments = t3;
              if ($async$self._async_evaluate0$_inSupportsDeclaration) {
                $async$returnValue = new A.SassCalculation0(A.stringReplaceAllUnchecked(node.originalName, "_", "-"), A.List_List$unmodifiable($arguments, type$.Object));
                // goto return
                $async$goto = 1;
                break;
              }
              oldCallableNode = $async$self._async_evaluate0$_callableNode;
              $async$self._async_evaluate0$_callableNode = node;
              try {
                t1 = null;
                _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
                $label0$0: {
                  if ("calc" === _0_0) {
                    t1 = A.SassCalculation_calc0(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("sqrt" === _0_0) {
                    t1 = A.SassCalculation__singleArgument0("sqrt", J.$index$asx($arguments, 0), A.number2__sqrt$closure(), true);
                    break $label0$0;
                  }
                  if ("sin" === _0_0) {
                    t1 = A.SassCalculation__singleArgument0("sin", J.$index$asx($arguments, 0), A.number2__sin$closure(), false);
                    break $label0$0;
                  }
                  if ("cos" === _0_0) {
                    t1 = A.SassCalculation__singleArgument0("cos", J.$index$asx($arguments, 0), A.number2__cos$closure(), false);
                    break $label0$0;
                  }
                  if ("tan" === _0_0) {
                    t1 = A.SassCalculation__singleArgument0("tan", J.$index$asx($arguments, 0), A.number2__tan$closure(), false);
                    break $label0$0;
                  }
                  if ("asin" === _0_0) {
                    t1 = A.SassCalculation__singleArgument0("asin", J.$index$asx($arguments, 0), A.number2__asin$closure(), true);
                    break $label0$0;
                  }
                  if ("acos" === _0_0) {
                    t1 = A.SassCalculation__singleArgument0("acos", J.$index$asx($arguments, 0), A.number2__acos$closure(), true);
                    break $label0$0;
                  }
                  if ("atan" === _0_0) {
                    t1 = A.SassCalculation__singleArgument0("atan", J.$index$asx($arguments, 0), A.number2__atan$closure(), true);
                    break $label0$0;
                  }
                  if ("abs" === _0_0) {
                    t1 = A.SassCalculation_abs0(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("exp" === _0_0) {
                    t1 = A.SassCalculation_exp0(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("sign" === _0_0) {
                    t1 = A.SassCalculation_sign0(J.$index$asx($arguments, 0));
                    break $label0$0;
                  }
                  if ("min" === _0_0) {
                    t1 = A.SassCalculation_min0($arguments);
                    break $label0$0;
                  }
                  if ("max" === _0_0) {
                    t1 = A.SassCalculation_max0($arguments);
                    break $label0$0;
                  }
                  if ("hypot" === _0_0) {
                    t1 = A.SassCalculation_hypot0($arguments);
                    break $label0$0;
                  }
                  if ("pow" === _0_0) {
                    t1 = A.SassCalculation_pow0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("atan2" === _0_0) {
                    t1 = A.SassCalculation_atan20(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("log" === _0_0) {
                    t1 = A.SassCalculation_log0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("mod" === _0_0) {
                    t1 = A.SassCalculation_mod0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("rem" === _0_0) {
                    t1 = A.SassCalculation_rem0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
                    break $label0$0;
                  }
                  if ("round" === _0_0) {
                    t1 = A.SassCalculation_round0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
                    break $label0$0;
                  }
                  if ("clamp" === _0_0) {
                    t1 = A.SassCalculation_clamp0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
                    break $label0$0;
                  }
                  t3 = A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".');
                  t1 = A.throwExpression(t3);
                }
                t1 = t1;
                $async$returnValue = t1;
                // goto return
                $async$goto = 1;
                break;
              } catch (exception) {
                t1 = A.unwrapException(exception);
                if (t1 instanceof A.SassScriptException0) {
                  error = t1;
                  stackTrace = A.getTraceFromException(exception);
                  if (B.JSString_methods.contains$1(error.message, "compatible"))
                    $async$self._async_evaluate0$_verifyCompatibleNumbers$2($arguments, t2);
                  A.throwWithTrace0($async$self._async_evaluate0$_exception$2(error.message, node.span), error, stackTrace);
                } else
                  throw exception;
              } finally {
                $async$self._async_evaluate0$_callableNode = oldCallableNode;
              }
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_visitCalculation$2$inLegacySassFunction, $async$completer);
    },
    _async_evaluate0$_checkCalculationArguments$1(node) {
      var _0_0,
        check = new A._EvaluateVisitor__checkCalculationArguments_check2(this, node);
      $label0$0: {
        _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
        if ("calc" === _0_0 || "sqrt" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "abs" === _0_0 || "exp" === _0_0 || "sign" === _0_0) {
          check.call$1(1);
          break $label0$0;
        }
        if ("min" === _0_0 || "max" === _0_0 || "hypot" === _0_0) {
          check.call$0();
          break $label0$0;
        }
        if ("pow" === _0_0 || "atan2" === _0_0 || "log" === _0_0 || "mod" === _0_0 || "rem" === _0_0) {
          check.call$1(2);
          break $label0$0;
        }
        if ("round" === _0_0 || "clamp" === _0_0) {
          check.call$1(3);
          break $label0$0;
        }
        throw A.wrapException(A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".'));
      }
    },
    _async_evaluate0$_verifyCompatibleNumbers$2(args, nodesWithSpans) {
      var i, t1, _0_0, arg, number1, j, number2;
      for (i = 0; t1 = args.length, i < t1; ++i) {
        _0_0 = args[i];
        if (_0_0 instanceof A.SassNumber0) {
          t1 = _0_0.get$hasComplexUnits();
          arg = _0_0;
        } else {
          arg = null;
          t1 = false;
        }
        if (t1)
          throw A.wrapException(this._async_evaluate0$_exception$2("Number " + A.S(arg) + " isn't compatible with CSS calculations.", J.get$span$z(nodesWithSpans[i])));
      }
      for (i = 0; i < t1 - 1; ++i) {
        number1 = args[i];
        if (!(number1 instanceof A.SassNumber0))
          continue;
        for (j = i + 1; t1 = args.length, j < t1; ++j) {
          number2 = args[j];
          if (!(number2 instanceof A.SassNumber0))
            continue;
          if (number1.hasPossiblyCompatibleUnits$1(number2))
            continue;
          throw A.wrapException(A.MultiSpanSassRuntimeException$0(number1.toString$0(0) + " and " + number2.toString$0(0) + " are incompatible.", J.get$span$z(nodesWithSpans[i]), number1.toString$0(0), A.LinkedHashMap_LinkedHashMap$_literal([J.get$span$z(nodesWithSpans[j]), number2.toString$0(0)], type$.FileSpan, type$.String), this._async_evaluate0$_stackTrace$1(J.get$span$z(nodesWithSpans[i])), null));
        }
      }
    },
    _async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction(node, inLegacySassFunction) {
      return this._visitCalculationExpression$body$_EvaluateVisitor0(node, inLegacySassFunction);
    },
    _visitCalculationExpression$body$_EvaluateVisitor0(node, inLegacySassFunction) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Object),
        $async$returnValue, $async$self = this, inner, t1, result, t2, _0_0, _1_0, t3, _i, i, _box_0, $async$temp1;
      var $async$_async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              if (node instanceof A.ParenthesizedExpression0) {
                inner = node.expression;
                t1 = true;
              } else {
                inner = null;
                t1 = false;
              }
              $async$goto = t1 ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait($async$self._async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction(inner, inLegacySassFunction), $async$_async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction);
            case 5:
              // returning from await.
              result = $async$result;
              $async$returnValue = result instanceof A.SassString0 ? new A.SassString0("(" + result._string0$_text + ")", false) : result;
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              $async$goto = node instanceof A.StringExpression0 && node.accept$1(new A._IsCalculationSafeVisitor0()) ? 6 : 7;
              break;
            case 6:
              // then
              t1 = node.text;
              t2 = t1.get$asPlain();
              _0_0 = t2 == null ? null : t2.toLowerCase();
              if ("pi" === _0_0) {
                t1 = A.SassNumber_SassNumber0(3.141592653589793, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("e" === _0_0) {
                t1 = A.SassNumber_SassNumber0(2.718281828459045, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("infinity" === _0_0) {
                t1 = A.SassNumber_SassNumber0(1 / 0, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("-infinity" === _0_0) {
                t1 = A.SassNumber_SassNumber0(-1 / 0, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              if ("nan" === _0_0) {
                t1 = A.SassNumber_SassNumber0(0 / 0, null);
                // goto break $label0$0
                $async$goto = 8;
                break;
              }
              $async$temp1 = A;
              $async$goto = 9;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolation$1(t1), $async$_async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction);
            case 9:
              // returning from await.
              t1 = new $async$temp1.SassString0($async$result, false);
              // goto break $label0$0
              $async$goto = 8;
              break;
            case 8:
              // break $label0$0
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 7:
              // join
              _box_0.right = _box_0.left = _box_0.operator = null;
              if (node instanceof A.BinaryOperationExpression0) {
                _box_0.operator = node.operator;
                _box_0.left = node.left;
                _box_0.right = node.right;
                t1 = true;
              } else
                t1 = false;
              $async$goto = t1 ? 10 : 11;
              break;
            case 10:
              // then
              $async$self._async_evaluate0$_checkWhitespaceAroundCalculationOperator$1(node);
              $async$goto = 12;
              return A._asyncAwait($async$self._async_evaluate0$_addExceptionSpanAsync$1$2(node, new A._EvaluateVisitor__visitCalculationExpression_closure2(_box_0, $async$self, node, inLegacySassFunction), type$.Object), $async$_async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction);
            case 12:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 11:
              // join
              $async$goto = node instanceof A.NumberExpression0 || node instanceof A.VariableExpression0 || node instanceof A.FunctionExpression0 || node instanceof A.IfExpression0 ? 13 : 14;
              break;
            case 13:
              // then
              $async$goto = 15;
              return A._asyncAwait(node.accept$1($async$self), $async$_async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction);
            case 15:
              // returning from await.
              _1_0 = $async$result;
              $label1$1: {
                if (_1_0 instanceof A.SassNumber0) {
                  result = _1_0;
                  t1 = true;
                } else {
                  result = null;
                  t1 = false;
                }
                if (t1) {
                  t1 = result;
                  break $label1$1;
                }
                if (_1_0 instanceof A.SassCalculation0) {
                  result = _1_0;
                  t1 = true;
                } else {
                  result = null;
                  t1 = false;
                }
                if (t1) {
                  t1 = result;
                  break $label1$1;
                }
                if (_1_0 instanceof A.SassString0) {
                  t1 = !_1_0._string0$_hasQuotes;
                  result = _1_0;
                } else {
                  result = null;
                  t1 = false;
                }
                if (t1) {
                  t1 = result;
                  break $label1$1;
                }
                t1 = A.throwExpression($async$self._async_evaluate0$_exception$2("Value " + _1_0.toString$0(0) + " can't be used in a calculation.", node.get$span(node)));
              }
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 14:
              // join
              $async$goto = node instanceof A.ListExpression0 && !node.hasBrackets && B.ListSeparator_EVt0 === node.separator && node.contents.length >= 2 ? 16 : 17;
              break;
            case 16:
              // then
              t1 = A._setArrayType([], type$.JSArray_Object);
              t2 = node.contents, t3 = t2.length, _i = 0;
            case 18:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 20;
                break;
              }
              $async$temp1 = t1;
              $async$goto = 21;
              return A._asyncAwait($async$self._async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction), $async$_async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction);
            case 21:
              // returning from await.
              $async$temp1.push($async$result);
            case 19:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 18;
              break;
            case 20:
              // after for
              $async$self._async_evaluate0$_checkAdjacentCalculationValues$2(t1, node);
              for (i = 0; i < t1.length; ++i) {
                t3 = t1[i];
                if (t3 instanceof A.CalculationOperation0 && t2[i] instanceof A.ParenthesizedExpression0)
                  t1[i] = new A.SassString0("(" + A.S(t3) + ")", false);
              }
              $async$returnValue = new A.SassString0(B.JSArray_methods.join$1(t1, " "), false);
              // goto return
              $async$goto = 1;
              break;
            case 17:
              // join
              throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.This_e, node.get$span(node)));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction, $async$completer);
    },
    _async_evaluate0$_checkWhitespaceAroundCalculationOperator$1(node) {
      var t2, t3, t4, textBetweenOperands, first, last,
        t1 = node.operator;
      if (t1 !== B.BinaryOperator_anB0 && t1 !== B.BinaryOperator_olz0)
        return;
      t1 = node.left;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t3 = node.right;
      t4 = t3.get$span(t3);
      if (t2 !== t4.get$file(t4))
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$end(t2);
      t4 = t3.get$span(t3);
      if (t2.offset >= t4.get$start(t4).offset)
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t1 = t1.get$span(t1);
      t1 = t1.get$end(t1);
      t3 = t3.get$span(t3);
      textBetweenOperands = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2._decodedChars, t1.offset, t3.get$start(t3).offset), 0, null);
      first = textBetweenOperands.charCodeAt(0);
      last = textBetweenOperands.charCodeAt(textBetweenOperands.length - 1);
      if (first === 32 || first === 9 || first === 10 || first === 13 || first === 12 || first === 47)
        t1 = !(last === 32 || last === 9 || last === 10 || last === 13 || last === 12 || last === 47);
      else
        t1 = true;
      if (t1)
        throw A.wrapException(this._async_evaluate0$_exception$2(string$.x22x2b__an, node.get$operatorSpan()));
    },
    _async_evaluate0$_binaryOperatorToCalculationOperator$2(operator, node) {
      var t1;
      $label0$0: {
        if (B.BinaryOperator_anB0 === operator) {
          t1 = B.CalculationOperator_IyK0;
          break $label0$0;
        }
        if (B.BinaryOperator_olz0 === operator) {
          t1 = B.CalculationOperator_2bx0;
          break $label0$0;
        }
        if (B.BinaryOperator_qN20 === operator) {
          t1 = B.CalculationOperator_jFr0;
          break $label0$0;
        }
        if (B.BinaryOperator_t8B0 === operator) {
          t1 = B.CalculationOperator_OvN0;
          break $label0$0;
        }
        t1 = A.throwExpression(this._async_evaluate0$_exception$2(string$.This_o, node.get$operatorSpan()));
      }
      return t1;
    },
    _async_evaluate0$_checkAdjacentCalculationValues$2(elements, node) {
      var t1, i, t2, previous, current, previousNode, currentNode, _0_2;
      for (t1 = elements.length, i = 1; i < t1; ++i) {
        t2 = i - 1;
        previous = elements[t2];
        current = elements[i];
        if (previous instanceof A.SassString0 || current instanceof A.SassString0)
          continue;
        t1 = node.contents;
        previousNode = t1[t2];
        currentNode = t1[i];
        _0_2 = A._InitializedCell$(new A._EvaluateVisitor__checkAdjacentCalculationValues_closure2(currentNode));
        if (currentNode instanceof A.UnaryOperationExpression0)
          t1 = B.UnaryOperator_TLI0 === _0_2._readFinal$0() || B.UnaryOperator_gg40 === _0_2._readFinal$0();
        else
          t1 = false;
        if (!t1)
          t1 = currentNode instanceof A.NumberExpression0 && currentNode.value < 0;
        else
          t1 = true;
        if (t1)
          throw A.wrapException(this._async_evaluate0$_exception$2(string$.x22x2b__an, A.FileSpanExtension_subspan(currentNode.get$span(currentNode), 0, 1)));
        else
          throw A.wrapException(this._async_evaluate0$_exception$2("Missing math operator.", previousNode.get$span(previousNode).expand$1(0, currentNode.get$span(currentNode))));
      }
    },
    visitInterpolatedFunctionExpression$1(node) {
      return this.visitInterpolatedFunctionExpression$body$_EvaluateVisitor0(node);
    },
    visitInterpolatedFunctionExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, result, t1, oldInFunction;
      var $async$visitInterpolatedFunctionExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolation$1(node.name), $async$visitInterpolatedFunctionExpression$1);
            case 3:
              // returning from await.
              t1 = $async$result;
              oldInFunction = $async$self._async_evaluate0$_inFunction;
              $async$self._async_evaluate0$_inFunction = true;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate0$_addErrorSpan$1$2(node, new A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure2($async$self, node, new A.PlainCssCallable0(t1)), type$.Value_2), $async$visitInterpolatedFunctionExpression$1);
            case 4:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$_inFunction = oldInFunction;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitInterpolatedFunctionExpression$1, $async$completer);
    },
    _async_evaluate0$_runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, run, $V) {
      return this._runUserDefinedCallable$body$_EvaluateVisitor0($arguments, callable, nodeWithSpan, run, $V, $V);
    },
    _runUserDefinedCallable$body$_EvaluateVisitor0($arguments, callable, nodeWithSpan, run, $V, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, oldCallable, result, evaluated, $name;
      var $async$_async_evaluate0$_runUserDefinedCallable$1$4 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_evaluateArguments$1($arguments), $async$_async_evaluate0$_runUserDefinedCallable$1$4);
            case 3:
              // returning from await.
              evaluated = $async$result;
              $name = callable.declaration.name;
              if ($name !== "@content")
                $name += "()";
              oldCallable = $async$self._async_evaluate0$_currentCallable;
              $async$self._async_evaluate0$_currentCallable = callable;
              $async$goto = 4;
              return A._asyncAwait($async$self._async_evaluate0$_withStackFrame$1$3($name, nodeWithSpan, new A._EvaluateVisitor__runUserDefinedCallable_closure2($async$self, callable, evaluated, nodeWithSpan, run, $V), $V), $async$_async_evaluate0$_runUserDefinedCallable$1$4);
            case 4:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$_currentCallable = oldCallable;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_runUserDefinedCallable$1$4, $async$completer);
    },
    _async_evaluate0$_runFunctionCallable$3($arguments, callable, nodeWithSpan) {
      return this._runFunctionCallable$body$_EvaluateVisitor0($arguments, callable, nodeWithSpan);
    },
    _runFunctionCallable$body$_EvaluateVisitor0($arguments, callable, nodeWithSpan) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, buffer, first, argument, restArg, rest, error, t1, t2, _i, exception, $async$exception, $async$temp1, $async$temp2;
      var $async$_async_evaluate0$_runFunctionCallable$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = type$.AsyncBuiltInCallable_2._is(callable) ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait($async$self._async_evaluate0$_runBuiltInCallable$3($arguments, callable, nodeWithSpan), $async$_async_evaluate0$_runFunctionCallable$3);
            case 6:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate0$_withoutSlash$2($async$result, nodeWithSpan);
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$goto = type$.UserDefinedCallable_AsyncEnvironment_2._is(callable) ? 7 : 9;
              break;
            case 7:
              // then
              $async$goto = 10;
              return A._asyncAwait($async$self._async_evaluate0$_runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, new A._EvaluateVisitor__runFunctionCallable_closure2($async$self, callable), type$.Value_2), $async$_async_evaluate0$_runFunctionCallable$3);
            case 10:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 8;
              break;
            case 9:
              // else
              $async$goto = callable instanceof A.PlainCssCallable0 ? 11 : 13;
              break;
            case 11:
              // then
              t1 = $arguments.named;
              if (t1.get$isNotEmpty(t1) || $arguments.keywordRest != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Plain_, nodeWithSpan.get$span(nodeWithSpan)));
              buffer = new A.StringBuffer(callable.name + "(");
              $async$handler = 15;
              first = true;
              t1 = $arguments.positional, t2 = t1.length, _i = 0;
            case 18:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 20;
                break;
              }
              argument = t1[_i];
              if (first)
                first = false;
              else
                buffer._contents += ", ";
              $async$temp1 = buffer;
              $async$temp2 = A;
              $async$goto = 21;
              return A._asyncAwait($async$self._async_evaluate0$_evaluateToCss$1(argument), $async$_async_evaluate0$_runFunctionCallable$3);
            case 21:
              // returning from await.
              $async$temp1._contents += $async$temp2.S($async$result);
            case 19:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 18;
              break;
            case 20:
              // after for
              restArg = $arguments.rest;
              $async$goto = restArg != null ? 22 : 23;
              break;
            case 22:
              // then
              $async$goto = 24;
              return A._asyncAwait(restArg.accept$1($async$self), $async$_async_evaluate0$_runFunctionCallable$3);
            case 24:
              // returning from await.
              rest = $async$result;
              if (!first)
                buffer._contents += ", ";
              buffer._contents += $async$self._async_evaluate0$_serialize$2(rest, restArg);
            case 23:
              // join
              $async$handler = 2;
              // goto after finally
              $async$goto = 17;
              break;
            case 15:
              // catch
              $async$handler = 14;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (type$.SassRuntimeException_2._is(t1)) {
                error = t1;
                if (!B.JSString_methods.endsWith$1(error._span_exception$_message, "isn't a valid CSS value."))
                  throw $async$exception;
                throw A.wrapException(A.MultiSpanSassRuntimeException$0(error._span_exception$_message, J.get$span$z(error), "value", A.LinkedHashMap_LinkedHashMap$_literal([nodeWithSpan.get$span(nodeWithSpan), "unknown function treated as plain CSS"], type$.FileSpan, type$.String), J.get$trace$z(error), null));
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 17;
              break;
            case 14:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 17:
              // after finally
              buffer._contents += A.Primitives_stringFromCharCode(41);
              t1 = buffer._contents;
              $async$returnValue = new A.SassString0(t1.charCodeAt(0) == 0 ? t1 : t1, false);
              // goto return
              $async$goto = 1;
              break;
              // goto join
              $async$goto = 12;
              break;
            case 13:
              // else
              throw A.wrapException(A.ArgumentError$("Unknown callable type " + J.get$runtimeType$(callable).toString$0(0) + ".", null));
            case 12:
              // join
            case 8:
              // join
            case 4:
              // join
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_runFunctionCallable$3, $async$completer);
    },
    _async_evaluate0$_runBuiltInCallable$3($arguments, callable, nodeWithSpan) {
      return this._runBuiltInCallable$body$_EvaluateVisitor0($arguments, callable, nodeWithSpan);
    },
    _runBuiltInCallable$body$_EvaluateVisitor0($arguments, callable, nodeWithSpan) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, result, error, stackTrace, message, namedSet, _0_0, declaredArguments, i, t1, argument, t2, t3, rest, argumentList, exception, message0, _box_0, evaluated, oldCallableNode, $async$exception;
      var $async$_async_evaluate0$_runBuiltInCallable$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_evaluateArguments$1($arguments), $async$_async_evaluate0$_runBuiltInCallable$3);
            case 3:
              // returning from await.
              evaluated = $async$result;
              oldCallableNode = $async$self._async_evaluate0$_callableNode;
              $async$self._async_evaluate0$_callableNode = nodeWithSpan;
              namedSet = new A.MapKeySet(evaluated._values[0], type$.MapKeySet_String);
              _box_0.callback = _box_0.overload = null;
              _0_0 = callable.callbackFor$2(J.get$length$asx(evaluated._values[2]), namedSet);
              _box_0.overload = _0_0._0;
              _box_0.callback = _0_0._1;
              $async$self._async_evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure8(_box_0, evaluated, namedSet));
              declaredArguments = _box_0.overload.$arguments;
              i = J.get$length$asx(evaluated._values[2]), t1 = declaredArguments.length;
            case 4:
              // for condition
              if (!(i < t1)) {
                // goto after for
                $async$goto = 6;
                break;
              }
              argument = declaredArguments[i];
              t2 = evaluated._values[2];
              t3 = evaluated._values[0].remove$1(0, argument.name);
              $async$goto = t3 == null ? 7 : 8;
              break;
            case 7:
              // then
              t3 = argument.defaultValue;
              $async$goto = 9;
              return A._asyncAwait(t3.accept$1($async$self), $async$_async_evaluate0$_runBuiltInCallable$3);
            case 9:
              // returning from await.
              t3 = $async$self._async_evaluate0$_withoutSlash$2($async$result, t3);
            case 8:
              // join
              J.add$1$ax(t2, t3);
            case 5:
              // for update
              ++i;
              // goto for condition
              $async$goto = 4;
              break;
            case 6:
              // after for
              if (_box_0.overload.restArgument != null) {
                if (J.get$length$asx(evaluated._values[2]) > t1) {
                  rest = J.sublist$1$ax(evaluated._values[2], t1);
                  J.removeRange$2$ax(evaluated._values[2], t1, J.get$length$asx(evaluated._values[2]));
                } else
                  rest = B.List_empty19;
                t1 = evaluated._values[0];
                argumentList = A.SassArgumentList$0(rest, t1, evaluated._values[4] === B.ListSeparator_undecided_null_undecided0 ? B.ListSeparator_rXA0 : evaluated._values[4]);
                J.add$1$ax(evaluated._values[2], argumentList);
              } else
                argumentList = null;
              result = null;
              $async$handler = 11;
              $async$goto = 14;
              return A._asyncAwait($async$self._async_evaluate0$_addExceptionSpanAsync$1$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure9(_box_0, evaluated), type$.Value_2), $async$_async_evaluate0$_runBuiltInCallable$3);
            case 14:
              // returning from await.
              result = $async$result;
              $async$handler = 2;
              // goto after finally
              $async$goto = 13;
              break;
            case 11:
              // catch
              $async$handler = 10;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassException0)
                throw $async$exception;
              else {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                message = null;
                try {
                  message = A._asString(J.get$message$x(error));
                } catch (exception) {
                  message0 = J.toString$0$(error);
                  message = message0;
                }
                A.throwWithTrace0($async$self._async_evaluate0$_exception$2(message, nodeWithSpan.get$span(nodeWithSpan)), error, stackTrace);
              }
              // goto after finally
              $async$goto = 13;
              break;
            case 10:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 13:
              // after finally
              $async$self._async_evaluate0$_callableNode = oldCallableNode;
              if (argumentList == null) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = evaluated._values[0];
              if (t1.get$isEmpty(t1)) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              if (argumentList._argument_list$_wereKeywordsAccessed) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = evaluated._values[0];
              t1 = A.pluralize0("argument", J.get$length$asx(t1.get$keys(t1)), null);
              t2 = evaluated._values[0];
              throw A.wrapException(A.MultiSpanSassRuntimeException$0("No " + t1 + " named " + A.toSentence0(J.map$1$1$ax(t2.get$keys(t2), new A._EvaluateVisitor__runBuiltInCallable_closure10(), type$.Object), "or") + ".", nodeWithSpan.get$span(nodeWithSpan), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([_box_0.overload.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), $async$self._async_evaluate0$_stackTrace$1(nodeWithSpan.get$span(nodeWithSpan)), null));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_runBuiltInCallable$3, $async$completer);
    },
    _async_evaluate0$_evaluateArguments$1($arguments) {
      return this._evaluateArguments$body$_EvaluateVisitor0($arguments);
    },
    _evaluateArguments$body$_EvaluateVisitor0($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_5_Map_String_Value_named_and_Map_String_AstNode_namedNodes_and_List_Value_positional_and_List_AstNode_positionalNodes_and_ListSeparator_separator_2),
        $async$returnValue, $async$self = this, t1, t2, _i, expression, nodeForSpan, named, namedNodes, t3, t4, $name, value, restArgs, rest, restNodeForSpan, t5, separator, keywordRestArgs, keywordRest, keywordRestNodeForSpan, positional, positionalNodes, $async$temp1, $async$temp2;
      var $async$_async_evaluate0$_evaluateArguments$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              positional = A._setArrayType([], type$.JSArray_Value_2);
              positionalNodes = A._setArrayType([], type$.JSArray_AstNode_2);
              t1 = $arguments.positional, t2 = t1.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              expression = t1[_i];
              nodeForSpan = $async$self._async_evaluate0$_expressionNode$1(expression);
              $async$temp1 = positional;
              $async$goto = 6;
              return A._asyncAwait(expression.accept$1($async$self), $async$_async_evaluate0$_evaluateArguments$1);
            case 6:
              // returning from await.
              $async$temp1.push($async$self._async_evaluate0$_withoutSlash$2($async$result, nodeForSpan));
              positionalNodes.push(nodeForSpan);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              t1 = type$.String;
              named = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value_2);
              t2 = type$.AstNode_2;
              namedNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
              t3 = A.MapExtensions_get_pairs0($arguments.named, t1, type$.Expression_2), t3 = t3.get$iterator(t3);
            case 7:
              // for condition
              if (!t3.moveNext$0()) {
                // goto after for
                $async$goto = 8;
                break;
              }
              t4 = t3.get$current(t3);
              $name = t4._0;
              value = t4._1;
              nodeForSpan = $async$self._async_evaluate0$_expressionNode$1(value);
              $async$temp1 = named;
              $async$temp2 = $name;
              $async$goto = 9;
              return A._asyncAwait(value.accept$1($async$self), $async$_async_evaluate0$_evaluateArguments$1);
            case 9:
              // returning from await.
              $async$temp1.$indexSet(0, $async$temp2, $async$self._async_evaluate0$_withoutSlash$2($async$result, nodeForSpan));
              namedNodes.$indexSet(0, $name, nodeForSpan);
              // goto for condition
              $async$goto = 7;
              break;
            case 8:
              // after for
              restArgs = $arguments.rest;
              if (restArgs == null) {
                $async$returnValue = new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, B.ListSeparator_undecided_null_undecided0]);
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 10;
              return A._asyncAwait(restArgs.accept$1($async$self), $async$_async_evaluate0$_evaluateArguments$1);
            case 10:
              // returning from await.
              rest = $async$result;
              restNodeForSpan = $async$self._async_evaluate0$_expressionNode$1(restArgs);
              if (rest instanceof A.SassMap0) {
                $async$self._async_evaluate0$_addRestMap$4(named, rest, restArgs, new A._EvaluateVisitor__evaluateArguments_closure11());
                t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
                for (t4 = rest._map0$_contents, t4 = J.get$iterator$ax(t4.get$keys(t4)), t5 = type$.SassString_2; t4.moveNext$0();)
                  t3.$indexSet(0, t5._as(t4.get$current(t4))._string0$_text, restNodeForSpan);
                namedNodes.addAll$1(0, t3);
                separator = B.ListSeparator_undecided_null_undecided0;
              } else if (rest instanceof A.SassList0) {
                t3 = rest._list1$_contents;
                B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t3, new A._EvaluateVisitor__evaluateArguments_closure12($async$self, restNodeForSpan), A._arrayInstanceType(t3)._eval$1("MappedListIterable<1,Value0>")));
                B.JSArray_methods.addAll$1(positionalNodes, A.List_List$filled(t3.length, restNodeForSpan, false, t2));
                separator = rest._list1$_separator;
                if (rest instanceof A.SassArgumentList0) {
                  rest._argument_list$_wereKeywordsAccessed = true;
                  rest._argument_list$_keywords.forEach$1(0, new A._EvaluateVisitor__evaluateArguments_closure13($async$self, named, restNodeForSpan, namedNodes));
                }
              } else {
                positional.push($async$self._async_evaluate0$_withoutSlash$2(rest, restNodeForSpan));
                positionalNodes.push(restNodeForSpan);
                separator = B.ListSeparator_undecided_null_undecided0;
              }
              keywordRestArgs = $arguments.keywordRest;
              if (keywordRestArgs == null) {
                $async$returnValue = new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 11;
              return A._asyncAwait(keywordRestArgs.accept$1($async$self), $async$_async_evaluate0$_evaluateArguments$1);
            case 11:
              // returning from await.
              keywordRest = $async$result;
              keywordRestNodeForSpan = $async$self._async_evaluate0$_expressionNode$1(keywordRestArgs);
              if (keywordRest instanceof A.SassMap0) {
                $async$self._async_evaluate0$_addRestMap$4(named, keywordRest, keywordRestArgs, new A._EvaluateVisitor__evaluateArguments_closure14());
                t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
                for (t2 = keywordRest._map0$_contents, t2 = J.get$iterator$ax(t2.get$keys(t2)), t3 = type$.SassString_2; t2.moveNext$0();)
                  t1.$indexSet(0, t3._as(t2.get$current(t2))._string0$_text, keywordRestNodeForSpan);
                namedNodes.addAll$1(0, t1);
                $async$returnValue = new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
                // goto return
                $async$goto = 1;
                break;
              } else
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs.get$span(keywordRestArgs)));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_evaluateArguments$1, $async$completer);
    },
    _async_evaluate0$_evaluateMacroArguments$1(invocation) {
      return this._evaluateMacroArguments$body$_EvaluateVisitor0(invocation);
    },
    _evaluateMacroArguments$body$_EvaluateVisitor0(invocation) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_List_Expression_and_Map_String_Expression_2),
        $async$returnValue, $async$self = this, t2, positional, named, rest, restNodeForSpan, keywordRestArgs_, keywordRest, keywordRestNodeForSpan, t1, restArgs_;
      var $async$_async_evaluate0$_evaluateMacroArguments$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = invocation.$arguments;
              restArgs_ = t1.rest;
              if (restArgs_ == null) {
                $async$returnValue = new A._Record_2(t1.positional, t1.named);
                // goto return
                $async$goto = 1;
                break;
              }
              t2 = t1.positional;
              positional = A._setArrayType(t2.slice(0), A._arrayInstanceType(t2));
              named = A.LinkedHashMap_LinkedHashMap$of(t1.named, type$.String, type$.Expression_2);
              $async$goto = 3;
              return A._asyncAwait(restArgs_.accept$1($async$self), $async$_async_evaluate0$_evaluateMacroArguments$1);
            case 3:
              // returning from await.
              rest = $async$result;
              restNodeForSpan = $async$self._async_evaluate0$_expressionNode$1(restArgs_);
              if (rest instanceof A.SassMap0)
                $async$self._async_evaluate0$_addRestMap$4(named, rest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure11(restArgs_));
              else if (rest instanceof A.SassList0) {
                t2 = rest._list1$_contents;
                B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t2, new A._EvaluateVisitor__evaluateMacroArguments_closure12($async$self, restNodeForSpan, restArgs_), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,Expression0>")));
                if (rest instanceof A.SassArgumentList0) {
                  rest._argument_list$_wereKeywordsAccessed = true;
                  rest._argument_list$_keywords.forEach$1(0, new A._EvaluateVisitor__evaluateMacroArguments_closure13($async$self, named, restNodeForSpan, restArgs_));
                }
              } else
                positional.push(new A.ValueExpression0($async$self._async_evaluate0$_withoutSlash$2(rest, restNodeForSpan), restArgs_.get$span(restArgs_)));
              keywordRestArgs_ = t1.keywordRest;
              if (keywordRestArgs_ == null) {
                $async$returnValue = new A._Record_2(positional, named);
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = 4;
              return A._asyncAwait(keywordRestArgs_.accept$1($async$self), $async$_async_evaluate0$_evaluateMacroArguments$1);
            case 4:
              // returning from await.
              keywordRest = $async$result;
              keywordRestNodeForSpan = $async$self._async_evaluate0$_expressionNode$1(keywordRestArgs_);
              if (keywordRest instanceof A.SassMap0) {
                $async$self._async_evaluate0$_addRestMap$4(named, keywordRest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure14($async$self, keywordRestNodeForSpan, keywordRestArgs_));
                $async$returnValue = new A._Record_2(positional, named);
                // goto return
                $async$goto = 1;
                break;
              } else
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs_.get$span(keywordRestArgs_)));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_evaluateMacroArguments$1, $async$completer);
    },
    _async_evaluate0$_addRestMap$1$4(values, map, nodeWithSpan, convert) {
      map._map0$_contents.forEach$1(0, new A._EvaluateVisitor__addRestMap_closure2(this, values, convert, this._async_evaluate0$_expressionNode$1(nodeWithSpan), map, nodeWithSpan));
    },
    _async_evaluate0$_addRestMap$4(values, map, nodeWithSpan, convert) {
      return this._async_evaluate0$_addRestMap$1$4(values, map, nodeWithSpan, convert, type$.dynamic);
    },
    _async_evaluate0$_verifyArguments$4(positional, named, $arguments, nodeWithSpan) {
      return this._async_evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__verifyArguments_closure2($arguments, positional, named));
    },
    visitSelectorExpression$1(node) {
      return this.visitSelectorExpression$body$_EvaluateVisitor0(node);
    },
    visitSelectorExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, t1;
      var $async$visitSelectorExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate0$_styleRuleIgnoringAtRoot;
              t1 = t1 == null ? null : t1.originalSelector.get$asSassList();
              $async$returnValue = t1 == null ? B.C__SassNull0 : t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSelectorExpression$1, $async$completer);
    },
    visitStringExpression$1(node) {
      return this.visitStringExpression$body$_EvaluateVisitor0(node);
    },
    visitStringExpression$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassString_2),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, _i, value, t5, _0_0, text, oldInSupportsDeclaration;
      var $async$visitStringExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldInSupportsDeclaration = $async$self._async_evaluate0$_inSupportsDeclaration;
              $async$self._async_evaluate0$_inSupportsDeclaration = false;
              t1 = A._setArrayType([], type$.JSArray_String);
              t2 = node.text.contents, t3 = t2.length, t4 = type$.Expression_2, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              value = t2[_i];
              if (typeof value == "string") {
                t5 = value;
                // goto break $label0$0
                $async$goto = 6;
                break;
              }
              $async$goto = t4._is(value) ? 7 : 8;
              break;
            case 7:
              // then
              $async$goto = 9;
              return A._asyncAwait(value.accept$1($async$self), $async$visitStringExpression$1);
            case 9:
              // returning from await.
              _0_0 = $async$result;
              $label1$1: {
                if (_0_0 instanceof A.SassString0) {
                  text = _0_0._string0$_text;
                  t5 = true;
                } else {
                  text = null;
                  t5 = false;
                }
                if (t5) {
                  t5 = text;
                  break $label1$1;
                }
                t5 = $async$self._async_evaluate0$_serialize$3$quote(_0_0, value, false);
                break $label1$1;
              }
              // goto break $label0$0
              $async$goto = 6;
              break;
            case 8:
              // join
              t5 = A.throwExpression(A.UnsupportedError$("Unknown interpolation value " + A.S(value)));
            case 6:
              // break $label0$0
              t1.push(t5);
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              t1 = B.JSArray_methods.join$0(t1);
              $async$self._async_evaluate0$_inSupportsDeclaration = oldInSupportsDeclaration;
              $async$returnValue = new A.SassString0(t1, node.hasQuotes);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitStringExpression$1, $async$completer);
    },
    visitSupportsExpression$1(expression) {
      return this.visitSupportsExpression$body$_EvaluateVisitor0(expression);
    },
    visitSupportsExpression$body$_EvaluateVisitor0(expression) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassString_2),
        $async$returnValue, $async$self = this, $async$temp1;
      var $async$visitSupportsExpression$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_visitSupportsCondition$1(expression.condition), $async$visitSupportsExpression$1);
            case 3:
              // returning from await.
              $async$returnValue = new $async$temp1.SassString0($async$result, false);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitSupportsExpression$1, $async$completer);
    },
    visitCssAtRule$1(node) {
      return this.visitCssAtRule$body$_EvaluateVisitor0(node);
    },
    visitCssAtRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, wasInKeyframes, wasInUnknownAtRule, t1;
      var $async$visitCssAtRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.At_rul, node.span));
              if (node.isChildless) {
                $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").addChild$1(A.ModifiableCssAtRule$0(node.name, node.span, true, node.value));
                // goto return
                $async$goto = 1;
                break;
              }
              wasInKeyframes = $async$self._async_evaluate0$_inKeyframes;
              wasInUnknownAtRule = $async$self._async_evaluate0$_inUnknownAtRule;
              t1 = node.name;
              if (A.unvendor0(t1.value) === "keyframes")
                $async$self._async_evaluate0$_inKeyframes = true;
              else
                $async$self._async_evaluate0$_inUnknownAtRule = true;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$0(t1, node.span, false, node.value), new A._EvaluateVisitor_visitCssAtRule_closure5($async$self, node), false, new A._EvaluateVisitor_visitCssAtRule_closure6(), type$.ModifiableCssAtRule_2, type$.Null), $async$visitCssAtRule$1);
            case 3:
              // returning from await.
              $async$self._async_evaluate0$_inUnknownAtRule = wasInUnknownAtRule;
              $async$self._async_evaluate0$_inKeyframes = wasInKeyframes;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssAtRule$1, $async$completer);
    },
    visitCssComment$1(node) {
      return this.visitCssComment$body$_EvaluateVisitor0(node);
    },
    visitCssComment$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssComment$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent") === $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root") && $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root").children._collection$_source))
                $async$self._async_evaluate0$__endOfImports = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") + 1;
              $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").addChild$1(new A.ModifiableCssComment0(node.text, node.span));
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssComment$1, $async$completer);
    },
    visitCssDeclaration$1(node) {
      return this.visitCssDeclaration$body$_EvaluateVisitor0(node);
    },
    visitCssDeclaration$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssDeclaration$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").addChild$1(A.ModifiableCssDeclaration$0(node.name, node.value, node.span, node.parsedAsCustomProperty, node.valueSpanForMap));
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssDeclaration$1, $async$completer);
    },
    visitCssImport$1(node) {
      return this.visitCssImport$body$_EvaluateVisitor0(node);
    },
    visitCssImport$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, modifiableNode;
      var $async$visitCssImport$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              modifiableNode = new A.ModifiableCssImport0(node.url, node.modifiers, node.span);
              if ($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent") !== $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root"))
                $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").addChild$1(modifiableNode);
              else if ($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") === J.get$length$asx($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root").children._collection$_source)) {
                $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__root, "_root").addChild$1(modifiableNode);
                $async$self._async_evaluate0$__endOfImports = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__endOfImports, "_endOfImports") + 1;
              } else {
                t1 = $async$self._async_evaluate0$_outOfOrderImports;
                (t1 == null ? $async$self._async_evaluate0$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport_2) : t1).push(modifiableNode);
              }
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssImport$1, $async$completer);
    },
    visitCssKeyframeBlock$1(node) {
      return this.visitCssKeyframeBlock$body$_EvaluateVisitor0(node);
    },
    visitCssKeyframeBlock$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssKeyframeBlock$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$0(node.selector, node.span), new A._EvaluateVisitor_visitCssKeyframeBlock_closure5($async$self, node), false, new A._EvaluateVisitor_visitCssKeyframeBlock_closure6(), type$.ModifiableCssKeyframeBlock_2, type$.Null), $async$visitCssKeyframeBlock$1);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssKeyframeBlock$1, $async$completer);
    },
    visitCssMediaRule$1(node) {
      return this.visitCssMediaRule$body$_EvaluateVisitor0(node);
    },
    visitCssMediaRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, mergedQueries, t1, mergedSources, t2, t3;
      var $async$visitCssMediaRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Media_, node.span));
              mergedQueries = A.NullableExtension_andThen0($async$self._async_evaluate0$_mediaQueries, new A._EvaluateVisitor_visitCssMediaRule_closure8($async$self, node));
              t1 = mergedQueries == null;
              if (!t1 && J.get$isEmpty$asx(mergedQueries)) {
                // goto return
                $async$goto = 1;
                break;
              }
              if (t1)
                mergedSources = B.Set_empty5;
              else {
                t2 = $async$self._async_evaluate0$_mediaQuerySources;
                t2.toString;
                t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery_2);
                t3 = $async$self._async_evaluate0$_mediaQueries;
                t3.toString;
                t2.addAll$1(0, t3);
                t2.addAll$1(0, node.queries);
                mergedSources = t2;
              }
              t1 = t1 ? node.queries : mergedQueries;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$0(t1, node.span), new A._EvaluateVisitor_visitCssMediaRule_closure9($async$self, mergedQueries, node, mergedSources), false, new A._EvaluateVisitor_visitCssMediaRule_closure10(mergedSources), type$.ModifiableCssMediaRule_2, type$.Null), $async$visitCssMediaRule$1);
            case 3:
              // returning from await.
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssMediaRule$1, $async$completer);
    },
    visitCssStyleRule$1(node) {
      return this.visitCssStyleRule$body$_EvaluateVisitor0(node);
    },
    visitCssStyleRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, styleRule, t2, t3, t4, originalSelector, rule, oldAtRootExcludingStyleRule, _0_0, _0_1, lastChild;
      var $async$visitCssStyleRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Style_, node.span));
              t1 = $async$self._async_evaluate0$_atRootExcludingStyleRule;
              styleRule = t1 ? null : $async$self._async_evaluate0$_styleRuleIgnoringAtRoot;
              t2 = node._style_rule0$_selector._box0$_inner.value;
              t3 = styleRule == null;
              t4 = t3 ? null : styleRule.originalSelector;
              originalSelector = t2.resolveParentSelectors$2$implicitParent(t4, !t1);
              rule = A.ModifiableCssStyleRule$0($async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__extensionStore, "_extensionStore").addSelector$2(originalSelector, $async$self._async_evaluate0$_mediaQueries), node.span, originalSelector);
              oldAtRootExcludingStyleRule = $async$self._async_evaluate0$_atRootExcludingStyleRule;
              $async$self._async_evaluate0$_atRootExcludingStyleRule = false;
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitCssStyleRule_closure8($async$self, rule, node), false, new A._EvaluateVisitor_visitCssStyleRule_closure9(), type$.ModifiableCssStyleRule_2, type$.Null), $async$visitCssStyleRule$1);
            case 2:
              // returning from await.
              $async$self._async_evaluate0$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
              _0_0 = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent").children;
              _0_1 = A._InitializedCell$(new A._EvaluateVisitor_visitCssStyleRule_closure10(_0_0));
              if (_0_1._readFinal$0() >= 1) {
                lastChild = J.elementAt$1$ax(_0_0._collection$_source, _0_1._readFinal$0() - 1);
                t1 = t3;
              } else {
                lastChild = null;
                t1 = false;
              }
              if (t1)
                lastChild.isGroupEnd = true;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssStyleRule$1, $async$completer);
    },
    visitCssStylesheet$1(node) {
      return this.visitCssStylesheet$body$_EvaluateVisitor0(node);
    },
    visitCssStylesheet$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$visitCssStylesheet$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.get$iterator$ax(node.get$children(node));
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              $async$goto = 4;
              return A._asyncAwait(t1.get$current(t1).accept$1($async$self), $async$visitCssStylesheet$1);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssStylesheet$1, $async$completer);
    },
    visitCssSupportsRule$1(node) {
      return this.visitCssSupportsRule$body$_EvaluateVisitor0(node);
    },
    visitCssSupportsRule$body$_EvaluateVisitor0(node) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$visitCssSupportsRule$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if ($async$self._async_evaluate0$_declarationName != null)
                throw A.wrapException($async$self._async_evaluate0$_exception$2(string$.Suppor, node.span));
              $async$goto = 2;
              return A._asyncAwait($async$self._async_evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssSupportsRule$0(node.condition, node.span), new A._EvaluateVisitor_visitCssSupportsRule_closure5($async$self, node), false, new A._EvaluateVisitor_visitCssSupportsRule_closure6(), type$.ModifiableCssSupportsRule_2, type$.Null), $async$visitCssSupportsRule$1);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$visitCssSupportsRule$1, $async$completer);
    },
    _async_evaluate0$_handleReturn$1$2(list, callback) {
      return this._handleReturn$body$_EvaluateVisitor0(list, callback);
    },
    _async_evaluate0$_handleReturn$2(list, callback) {
      return this._async_evaluate0$_handleReturn$1$2(list, callback, type$.dynamic);
    },
    _handleReturn$body$_EvaluateVisitor0(list, callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, t1, _i, _0_0, result, t2;
      var $async$_async_evaluate0$_handleReturn$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = list.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < list.length)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(callback.call$1(list[_i]), $async$_async_evaluate0$_handleReturn$1$2);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t2 = true;
              } else {
                result = null;
                t2 = false;
              }
              if (t2) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              list.length === t1 || (0, A.throwConcurrentModificationError)(list), ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_handleReturn$1$2, $async$completer);
    },
    _async_evaluate0$_withEnvironment$1$2(environment, callback, $T) {
      return this._withEnvironment$body$_EvaluateVisitor0(environment, callback, $T, $T);
    },
    _withEnvironment$body$_EvaluateVisitor0(environment, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, result, oldEnvironment;
      var $async$_async_evaluate0$_withEnvironment$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldEnvironment = $async$self._async_evaluate0$_environment;
              $async$self._async_evaluate0$_environment = environment;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_withEnvironment$1$2);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$_environment = oldEnvironment;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_withEnvironment$1$2, $async$completer);
    },
    _async_evaluate0$_interpolationToValue$3$trim$warnForColor(interpolation, trim, warnForColor) {
      return this._interpolationToValue$body$_EvaluateVisitor0(interpolation, trim, warnForColor);
    },
    _async_evaluate0$_interpolationToValue$1(interpolation) {
      return this._async_evaluate0$_interpolationToValue$3$trim$warnForColor(interpolation, false, false);
    },
    _async_evaluate0$_interpolationToValue$2$warnForColor(interpolation, warnForColor) {
      return this._async_evaluate0$_interpolationToValue$3$trim$warnForColor(interpolation, false, warnForColor);
    },
    _interpolationToValue$body$_EvaluateVisitor0(interpolation, trim, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.CssValue_String_2),
        $async$returnValue, $async$self = this, result, t1;
      var $async$_async_evaluate0$_interpolationToValue$3$trim$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolation$2$warnForColor(interpolation, warnForColor), $async$_async_evaluate0$_interpolationToValue$3$trim$warnForColor);
            case 3:
              // returning from await.
              result = $async$result;
              t1 = trim ? A.trimAscii0(result, true) : result;
              $async$returnValue = new A.CssValue0(t1, interpolation.span, type$.CssValue_String_2);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_interpolationToValue$3$trim$warnForColor, $async$completer);
    },
    _async_evaluate0$_performInterpolation$2$warnForColor(interpolation, warnForColor) {
      return this._performInterpolation$body$_EvaluateVisitor0(interpolation, warnForColor);
    },
    _async_evaluate0$_performInterpolation$1(interpolation) {
      return this._async_evaluate0$_performInterpolation$2$warnForColor(interpolation, false);
    },
    _performInterpolation$body$_EvaluateVisitor0(interpolation, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, result;
      var $async$_async_evaluate0$_performInterpolation$2$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, false, warnForColor), $async$_async_evaluate0$_performInterpolation$2$warnForColor);
            case 3:
              // returning from await.
              result = $async$result._0;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_performInterpolation$2$warnForColor, $async$completer);
    },
    _async_evaluate0$_performInterpolationWithMap$2$warnForColor(interpolation, warnForColor) {
      return this._performInterpolationWithMap$body$_EvaluateVisitor0(interpolation, true);
    },
    _performInterpolationWithMap$body$_EvaluateVisitor0(interpolation, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_String_and_InterpolationMap_2),
        $async$returnValue, $async$self = this, _0_0, result, map;
      var $async$_async_evaluate0$_performInterpolationWithMap$2$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, true, true), $async$_async_evaluate0$_performInterpolationWithMap$2$warnForColor);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              result = _0_0._0;
              map = _0_0._1;
              map.toString;
              $async$returnValue = new A._Record_2(result, map);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_performInterpolationWithMap$2$warnForColor, $async$completer);
    },
    _async_evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, sourceMap, warnForColor) {
      return this._performInterpolationHelper$body$_EvaluateVisitor0(interpolation, sourceMap, warnForColor);
    },
    _performInterpolationHelper$body$_EvaluateVisitor0(interpolation, sourceMap, warnForColor) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_String_and_nullable_InterpolationMap_2),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, t6, t7, first, _i, t8, value, result, t9, result0, targetLocations, oldInSupportsDeclaration;
      var $async$_async_evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              targetLocations = sourceMap ? A._setArrayType([], type$.JSArray_SourceLocation) : null;
              oldInSupportsDeclaration = $async$self._async_evaluate0$_inSupportsDeclaration;
              $async$self._async_evaluate0$_inSupportsDeclaration = false;
              t1 = interpolation.contents, t2 = t1.length, t3 = type$.Expression_2, t4 = targetLocations == null, t5 = type$.JSArray_Object, t6 = interpolation.span, t7 = type$.Object, first = true, _i = 0, t8 = "";
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              value = t1[_i];
              if (!first)
                if (!t4)
                  targetLocations.push(A.SourceLocation$(t8.length, null, null, null));
              if (typeof value == "string") {
                t8 += value;
                // goto for update
                $async$goto = 4;
                break;
              }
              t3._as(value);
              $async$goto = 6;
              return A._asyncAwait(value.accept$1($async$self), $async$_async_evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor);
            case 6:
              // returning from await.
              result = $async$result;
              if (warnForColor && $.$get$namesByColor0().containsKey$1(result)) {
                t9 = A._setArrayType([""], t5);
                result0 = A.List_List$from(t9, false, t7);
                result0.fixed$length = Array;
                result0.immutable$list = Array;
                result0 = new A.Interpolation0(result0, t6);
                result0.Interpolation$20(t9, t6);
                t9 = $.$get$namesByColor0();
                $async$self._async_evaluate0$_warn$2(string$.You_pr + A.S(t9.$index(0, result)) + string$.x20in_in + result.toString$0(0) + string$.x2c_whicw + A.S(t9.$index(0, result)) + string$.x22x29__If + new A.BinaryOperationExpression0(B.BinaryOperator_anB0, new A.StringExpression0(result0, true), value, false).toString$0(0) + "'.", value.get$span(value));
              }
              t8 += $async$self._async_evaluate0$_serialize$3$quote(result, value, false);
            case 4:
              // for update
              ++_i, first = false;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$self._async_evaluate0$_inSupportsDeclaration = oldInSupportsDeclaration;
              $async$returnValue = new A._Record_2(t8.charCodeAt(0) == 0 ? t8 : t8, A.NullableExtension_andThen0(targetLocations, new A._EvaluateVisitor__performInterpolationHelper_closure2(interpolation)));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor, $async$completer);
    },
    _async_evaluate0$_evaluateToCss$2$quote(expression, quote) {
      return this._evaluateToCss$body$_EvaluateVisitor0(expression, quote);
    },
    _async_evaluate0$_evaluateToCss$1(expression) {
      return this._async_evaluate0$_evaluateToCss$2$quote(expression, true);
    },
    _evaluateToCss$body$_EvaluateVisitor0(expression, quote) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this;
      var $async$_async_evaluate0$_evaluateToCss$2$quote = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(expression.accept$1($async$self), $async$_async_evaluate0$_evaluateToCss$2$quote);
            case 3:
              // returning from await.
              $async$returnValue = $async$self._async_evaluate0$_serialize$3$quote($async$result, expression, quote);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_evaluateToCss$2$quote, $async$completer);
    },
    _async_evaluate0$_serialize$3$quote(value, nodeWithSpan, quote) {
      return this._async_evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__serialize_closure2(value, quote));
    },
    _async_evaluate0$_serialize$2(value, nodeWithSpan) {
      return this._async_evaluate0$_serialize$3$quote(value, nodeWithSpan, true);
    },
    _async_evaluate0$_expressionNode$1(expression) {
      var t1;
      if (expression instanceof A.VariableExpression0) {
        t1 = this._async_evaluate0$_addExceptionSpan$2(expression, new A._EvaluateVisitor__expressionNode_closure2(this, expression));
        return t1 == null ? expression : t1;
      } else
        return expression;
    },
    _async_evaluate0$_withParent$2$4$scopeWhen$through(node, callback, scopeWhen, through, $S, $T) {
      return this._withParent$body$_EvaluateVisitor0(node, callback, scopeWhen, through, $S, $T, $T);
    },
    _async_evaluate0$_withParent$2$2(node, callback, $S, $T) {
      return this._async_evaluate0$_withParent$2$4$scopeWhen$through(node, callback, true, null, $S, $T);
    },
    _async_evaluate0$_withParent$2$3$scopeWhen(node, callback, scopeWhen, $S, $T) {
      return this._async_evaluate0$_withParent$2$4$scopeWhen$through(node, callback, scopeWhen, null, $S, $T);
    },
    _withParent$body$_EvaluateVisitor0(node, callback, scopeWhen, through, $S, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, t1, result;
      var $async$_async_evaluate0$_withParent$2$4$scopeWhen$through = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$self._async_evaluate0$_addChild$2$through(node, through);
              t1 = $async$self._async_evaluate0$_assertInModule$2($async$self._async_evaluate0$__parent, "__parent");
              $async$self._async_evaluate0$__parent = node;
              $async$goto = 3;
              return A._asyncAwait($async$self._async_evaluate0$_environment.scope$1$2$when(callback, scopeWhen, $T), $async$_async_evaluate0$_withParent$2$4$scopeWhen$through);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$__parent = t1;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_withParent$2$4$scopeWhen$through, $async$completer);
    },
    _async_evaluate0$_addChild$2$through(node, through) {
      var _0_0, grandparent, t1,
        $parent = this._async_evaluate0$_assertInModule$2(this._async_evaluate0$__parent, "__parent");
      if (through != null) {
        for (; through.call$1($parent); $parent = grandparent) {
          _0_0 = $parent._node$_parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t1 = true;
          } else {
            grandparent = null;
            t1 = false;
          }
          if (!t1)
            throw A.wrapException(A.ArgumentError$(string$.throug + node.toString$0(0) + ".", null));
        }
        if ($parent.get$hasFollowingSibling()) {
          grandparent = $parent._node$_parent;
          t1 = grandparent.children;
          if ($parent.equalsIgnoringChildren$1(t1.get$last(t1)))
            $parent = type$.ModifiableCssParentNode_2._as(t1.get$last(t1));
          else {
            $parent = $parent.copyWithoutChildren$0();
            grandparent.addChild$1($parent);
          }
        }
      }
      $parent.addChild$1(node);
    },
    _async_evaluate0$_addChild$1(node) {
      return this._async_evaluate0$_addChild$2$through(node, null);
    },
    _async_evaluate0$_withStyleRule$1$2(rule, callback, $T) {
      return this._withStyleRule$body$_EvaluateVisitor0(rule, callback, $T, $T);
    },
    _withStyleRule$body$_EvaluateVisitor0(rule, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, result, oldRule;
      var $async$_async_evaluate0$_withStyleRule$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldRule = $async$self._async_evaluate0$_styleRuleIgnoringAtRoot;
              $async$self._async_evaluate0$_styleRuleIgnoringAtRoot = rule;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_withStyleRule$1$2);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$_styleRuleIgnoringAtRoot = oldRule;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_withStyleRule$1$2, $async$completer);
    },
    _async_evaluate0$_withMediaQueries$1$3(queries, sources, callback, $T) {
      return this._withMediaQueries$body$_EvaluateVisitor0(queries, sources, callback, $T, $T);
    },
    _withMediaQueries$body$_EvaluateVisitor0(queries, sources, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, result, oldMediaQueries, oldSources;
      var $async$_async_evaluate0$_withMediaQueries$1$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              oldMediaQueries = $async$self._async_evaluate0$_mediaQueries;
              oldSources = $async$self._async_evaluate0$_mediaQuerySources;
              $async$self._async_evaluate0$_mediaQueries = queries;
              $async$self._async_evaluate0$_mediaQuerySources = sources;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_withMediaQueries$1$3);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$_mediaQueries = oldMediaQueries;
              $async$self._async_evaluate0$_mediaQuerySources = oldSources;
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_withMediaQueries$1$3, $async$completer);
    },
    _async_evaluate0$_withStackFrame$1$3(member, nodeWithSpan, callback, $T) {
      return this._withStackFrame$body$_EvaluateVisitor0(member, nodeWithSpan, callback, $T, $T);
    },
    _withStackFrame$body$_EvaluateVisitor0(member, nodeWithSpan, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, oldMember, result, t1;
      var $async$_async_evaluate0$_withStackFrame$1$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._async_evaluate0$_stack;
              t1.push(new A._Record_2($async$self._async_evaluate0$_member, nodeWithSpan));
              oldMember = $async$self._async_evaluate0$_member;
              $async$self._async_evaluate0$_member = member;
              $async$goto = 3;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_withStackFrame$1$3);
            case 3:
              // returning from await.
              result = $async$result;
              $async$self._async_evaluate0$_member = oldMember;
              t1.pop();
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_withStackFrame$1$3, $async$completer);
    },
    _async_evaluate0$_withoutSlash$2(value, nodeForSpan) {
      if (value instanceof A.SassNumber0 && value.asSlash != null && true)
        this._async_evaluate0$_warn$3(string$.Using__i + A.S(new A._EvaluateVisitor__withoutSlash_recommendation2().call$1(value)) + string$.x0a_Morex20, nodeForSpan.get$span(nodeForSpan), B.Deprecation_wWh);
      return value.withoutSlash$0();
    },
    _async_evaluate0$_stackFrame$2(member, span) {
      return A.frameForSpan0(span, member, A.NullableExtension_andThen0(span.get$sourceUrl(span), new A._EvaluateVisitor__stackFrame_closure2(this)));
    },
    _async_evaluate0$_stackTrace$1(span) {
      var t2, t3, _i, t4, nodeWithSpan, _this = this,
        t1 = A._setArrayType([], type$.JSArray_Frame);
      for (t2 = _this._async_evaluate0$_stack, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        t4 = t2[_i];
        nodeWithSpan = t4._1;
        t1.push(_this._async_evaluate0$_stackFrame$2(t4._0, nodeWithSpan.get$span(nodeWithSpan)));
      }
      if (span != null)
        t1.push(_this._async_evaluate0$_stackFrame$2(_this._async_evaluate0$_member, span));
      return A.Trace$(new A.ReversedListIterable(t1, type$.ReversedListIterable_Frame), null);
    },
    _async_evaluate0$_stackTrace$0() {
      return this._async_evaluate0$_stackTrace$1(null);
    },
    _async_evaluate0$_warn$3(message, span, deprecation) {
      var t1, trace, _this = this;
      if (_this._async_evaluate0$_quietDeps)
        if (!_this._async_evaluate0$_inDependency) {
          t1 = _this._async_evaluate0$_currentCallable;
          t1 = t1 == null ? null : t1.inDependency;
          t1 = t1 === true;
        } else
          t1 = true;
      else
        t1 = false;
      if (t1)
        return;
      if (!_this._async_evaluate0$_warningsEmitted.add$1(0, new A._Record_2(message, span)))
        return;
      trace = _this._async_evaluate0$_stackTrace$1(span);
      t1 = _this._async_evaluate0$_logger;
      if (deprecation == null)
        t1.warn$3$span$trace(0, message, span, trace);
      else
        A.WarnForDeprecation_warnForDeprecation0(t1, deprecation, message, span, trace);
    },
    _async_evaluate0$_warn$2(message, span) {
      return this._async_evaluate0$_warn$3(message, span, null);
    },
    _async_evaluate0$_exception$2(message, span) {
      var t1, t2;
      if (span == null) {
        t1 = B.JSArray_methods.get$last(this._async_evaluate0$_stack)._1;
        t1 = t1.get$span(t1);
      } else
        t1 = span;
      t2 = this._async_evaluate0$_stackTrace$1(span);
      return new A.SassRuntimeException0(t2, B.Set_empty, message, t1);
    },
    _async_evaluate0$_exception$1(message) {
      return this._async_evaluate0$_exception$2(message, null);
    },
    _async_evaluate0$_multiSpanException$3(message, primaryLabel, secondaryLabels) {
      var t1 = B.JSArray_methods.get$last(this._async_evaluate0$_stack)._1;
      return A.MultiSpanSassRuntimeException$0(message, t1.get$span(t1), primaryLabel, secondaryLabels, this._async_evaluate0$_stackTrace$0(), null);
    },
    _async_evaluate0$_addExceptionSpan$1$2(nodeWithSpan, callback) {
      var error, stackTrace, t1, exception,
        addStackFrame = true;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassScriptException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error.withSpan$1(nodeWithSpan.get$span(nodeWithSpan));
          A.throwWithTrace0(t1.withTrace$1(this._async_evaluate0$_stackTrace$1(addStackFrame ? nodeWithSpan.get$span(nodeWithSpan) : null)), error, stackTrace);
        } else
          throw exception;
      }
    },
    _async_evaluate0$_addExceptionSpan$2(nodeWithSpan, callback) {
      return this._async_evaluate0$_addExceptionSpan$1$2(nodeWithSpan, callback, type$.dynamic);
    },
    _async_evaluate0$_addExceptionSpanAsync$1$3$addStackFrame(nodeWithSpan, callback, addStackFrame, $T) {
      return this._addExceptionSpanAsync$body$_EvaluateVisitor0(nodeWithSpan, callback, addStackFrame, $T, $T);
    },
    _async_evaluate0$_addExceptionSpanAsync$1$2(nodeWithSpan, callback, $T) {
      return this._async_evaluate0$_addExceptionSpanAsync$1$3$addStackFrame(nodeWithSpan, callback, true, $T);
    },
    _addExceptionSpanAsync$body$_EvaluateVisitor0(nodeWithSpan, callback, addStackFrame, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, $async$exception;
      var $async$_async_evaluate0$_addExceptionSpanAsync$1$3$addStackFrame = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_addExceptionSpanAsync$1$3$addStackFrame);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (t1 instanceof A.SassScriptException0) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                t1 = error.withSpan$1(nodeWithSpan.get$span(nodeWithSpan));
                A.throwWithTrace0(t1.withTrace$1($async$self._async_evaluate0$_stackTrace$1(addStackFrame ? nodeWithSpan.get$span(nodeWithSpan) : null)), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_addExceptionSpanAsync$1$3$addStackFrame, $async$completer);
    },
    _async_evaluate0$_addExceptionTrace$1$1(callback, $T) {
      return this._addExceptionTrace$body$_EvaluateVisitor0(callback, $T, $T);
    },
    _addExceptionTrace$body$_EvaluateVisitor0(callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, t2, $async$exception;
      var $async$_async_evaluate0$_addExceptionTrace$1$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_addExceptionTrace$1$1);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (type$.SassRuntimeException_2._is(t1))
                throw $async$exception;
              else if (t1 instanceof A.SassException0) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                t1 = error;
                t2 = J.getInterceptor$z(t1);
                A.throwWithTrace0(error.withTrace$1($async$self._async_evaluate0$_stackTrace$1(A.SourceSpanException.prototype.get$span.call(t2, t1))), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_addExceptionTrace$1$1, $async$completer);
    },
    _async_evaluate0$_addErrorSpan$1$2(nodeWithSpan, callback, $T) {
      return this._addErrorSpan$body$_EvaluateVisitor0(nodeWithSpan, callback, $T, $T);
    },
    _addErrorSpan$body$_EvaluateVisitor0(nodeWithSpan, callback, $T, $async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$handler = 2, $async$currentError, $async$self = this, error, stackTrace, t1, exception, t2, t3, $async$exception;
      var $async$_async_evaluate0$_addErrorSpan$1$2 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$handler = 4;
              $async$goto = 7;
              return A._asyncAwait(callback.call$0(), $async$_async_evaluate0$_addErrorSpan$1$2);
            case 7:
              // returning from await.
              t1 = $async$result;
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
              $async$handler = 2;
              // goto after finally
              $async$goto = 6;
              break;
            case 4:
              // catch
              $async$handler = 3;
              $async$exception = $async$currentError;
              t1 = A.unwrapException($async$exception);
              if (type$.SassRuntimeException_2._is(t1)) {
                error = t1;
                stackTrace = A.getTraceFromException($async$exception);
                if (!B.JSString_methods.startsWith$1(J.get$span$z(error).get$text(), "@error"))
                  throw $async$exception;
                t1 = error._span_exception$_message;
                t2 = nodeWithSpan.get$span(nodeWithSpan);
                t3 = $async$self._async_evaluate0$_stackTrace$0();
                A.throwWithTrace0(new A.SassRuntimeException0(t3, B.Set_empty, t1, t2), error, stackTrace);
              } else
                throw $async$exception;
              // goto after finally
              $async$goto = 6;
              break;
            case 3:
              // uncaught
              // goto rethrow
              $async$goto = 2;
              break;
            case 6:
              // after finally
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
            case 2:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_evaluate0$_addErrorSpan$1$2, $async$completer);
    }
  };
  A._EvaluateVisitor_closure38.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._async_evaluate0$_environment;
      t2 = A.stringReplaceAllUnchecked(variable._string0$_text, "_", "-");
      return t1.globalVariableExists$2$namespace(t2, module == null ? null : module._string0$_text) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure39.prototype = {
    call$1($arguments) {
      var variable = J.$index$asx($arguments, 0).assertString$1("name"),
        t1 = this.$this._async_evaluate0$_environment;
      return t1.getVariable$1(A.stringReplaceAllUnchecked(variable._string0$_text, "_", "-")) != null ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure40.prototype = {
    call$1($arguments) {
      var module, t2, t3, t4,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._async_evaluate0$_environment;
      t3 = variable._string0$_text;
      t4 = A.stringReplaceAllUnchecked(t3, "_", "-");
      return t2.getFunction$2$namespace(t4, module == null ? null : module._string0$_text) != null || t1._async_evaluate0$_builtInFunctions.containsKey$1(t3) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure41.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._async_evaluate0$_environment;
      t2 = A.stringReplaceAllUnchecked(variable._string0$_text, "_", "-");
      return t1.getMixin$2$namespace(t2, module == null ? null : module._string0$_text) != null ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure42.prototype = {
    call$1($arguments) {
      var t1 = this.$this._async_evaluate0$_environment;
      if (!t1._async_environment0$_inMixin)
        throw A.wrapException(A.SassScriptException$0(string$.conten, null));
      return t1._async_environment0$_content != null ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure43.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string0$_text,
        module = this.$this._async_evaluate0$_environment._async_environment0$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs0(module.get$variables(), type$.String, t1), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString0($name, true), value);
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 38
  };
  A._EvaluateVisitor_closure44.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string0$_text,
        module = this.$this._async_evaluate0$_environment._async_environment0$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs0(module.get$functions(module), type$.String, type$.AsyncCallable_2), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString0($name, true), new A.SassFunction0(value));
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 38
  };
  A._EvaluateVisitor_closure45.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string0$_text,
        module = this.$this._async_evaluate0$_environment._async_environment0$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs0(module.get$mixins(), type$.String, type$.AsyncCallable_2), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString0($name, true), new A.SassMixin0(value));
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 38
  };
  A._EvaluateVisitor_closure46.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name"),
        css = t1.$index($arguments, 1).get$isTruthy();
      t1 = t1.$index($arguments, 2).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      if (css) {
        if (module != null)
          throw A.wrapException(string$.x24css_a);
        return new A.SassFunction0(new A.PlainCssCallable0($name._string0$_text));
      }
      t1 = this.$this;
      t2 = t1._async_evaluate0$_callableNode;
      t2.toString;
      callable = t1._async_evaluate0$_addExceptionSpan$2(t2, new A._EvaluateVisitor__closure14(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Function not found: " + $name.toString$0(0));
      return new A.SassFunction0(callable);
    },
    $signature: 182
  };
  A._EvaluateVisitor__closure14.prototype = {
    call$0() {
      var local,
        normalizedName = A.stringReplaceAllUnchecked(this.name._string0$_text, "_", "-"),
        t1 = this.module,
        namespace = t1 == null ? null : t1._string0$_text;
      t1 = this.$this;
      local = t1._async_evaluate0$_environment.getFunction$2$namespace(normalizedName, namespace);
      if (local != null || namespace != null)
        return local;
      return t1._async_evaluate0$_builtInFunctions.$index(0, normalizedName);
    },
    $signature: 103
  };
  A._EvaluateVisitor_closure47.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._async_evaluate0$_callableNode;
      t2.toString;
      callable = t1._async_evaluate0$_addExceptionSpan$2(t2, new A._EvaluateVisitor__closure13(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Mixin not found: " + $name.toString$0(0));
      return new A.SassMixin0(callable);
    },
    $signature: 184
  };
  A._EvaluateVisitor__closure13.prototype = {
    call$0() {
      var t1 = this.$this._async_evaluate0$_environment,
        t2 = A.stringReplaceAllUnchecked(this.name._string0$_text, "_", "-"),
        t3 = this.module;
      return t1.getMixin$2$namespace(t2, t3 == null ? null : t3._string0$_text);
    },
    $signature: 103
  };
  A._EvaluateVisitor_closure48.prototype = {
    call$1($arguments) {
      return this.$call$body$_EvaluateVisitor_closure4($arguments);
    },
    $call$body$_EvaluateVisitor_closure4($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, $name, value, invocation, callableNode, t1, $function, args;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.getInterceptor$asx($arguments);
              $function = t1.$index($arguments, 0);
              args = type$.SassArgumentList_2._as(t1.$index($arguments, 1));
              t1 = $async$self.$this;
              t2 = t1._async_evaluate0$_callableNode;
              t2.toString;
              t3 = A._setArrayType([], type$.JSArray_Expression_2);
              t4 = type$.String;
              t5 = type$.Expression_2;
              t6 = t2.get$span(t2);
              t7 = t2.get$span(t2);
              args._argument_list$_wereKeywordsAccessed = true;
              t8 = args._argument_list$_keywords;
              if (t8.get$isEmpty(t8))
                t2 = null;
              else {
                t9 = type$.Value_2;
                t10 = A.LinkedHashMap_LinkedHashMap$_empty(t9, t9);
                for (args._argument_list$_wereKeywordsAccessed = true, t8 = A.MapExtensions_get_pairs0(t8, t4, t9), t8 = t8.get$iterator(t8); t8.moveNext$0();) {
                  t11 = t8.get$current(t8);
                  $name = t11._0;
                  value = t11._1;
                  value = value;
                  t10.$indexSet(0, new A.SassString0($name, false), value);
                }
                t2 = new A.ValueExpression0(new A.SassMap0(A.ConstantMap_ConstantMap$from(t10, t9, t9)), t2.get$span(t2));
              }
              invocation = new A.ArgumentInvocation0(A.List_List$unmodifiable(t3, t5), A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t4, t5), new A.ValueExpression0(args, t7), t2, t6);
              $async$goto = $function instanceof A.SassString0 ? 3 : 4;
              break;
            case 3:
              // then
              t2 = $function.toString$0(0);
              A.EvaluationContext_current0().warn$2(0, string$.Passina + t2 + "))", B.Deprecation_4iQ);
              callableNode = t1._async_evaluate0$_callableNode;
              $async$goto = 5;
              return A._asyncAwait(t1.visitFunctionExpression$1(new A.FunctionExpression0(null, $function._string0$_text, invocation, callableNode.get$span(callableNode))), $async$call$1);
            case 5:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              t2 = $function.assertFunction$1("function");
              t3 = t1._async_evaluate0$_callableNode;
              t3.toString;
              $async$goto = 6;
              return A._asyncAwait(t1._async_evaluate0$_runFunctionCallable$3(invocation, t2.callable, t3), $async$call$1);
            case 6:
              // returning from await.
              t3 = $async$result;
              $async$returnValue = t3;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 99
  };
  A._EvaluateVisitor_closure49.prototype = {
    call$1($arguments) {
      return this.$call$body$_EvaluateVisitor_closure3($arguments);
    },
    $call$body$_EvaluateVisitor_closure3($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, withMap, t2, values, configuration, t3, t1, url;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.getInterceptor$asx($arguments);
              url = A.Uri_parse(t1.$index($arguments, 0).assertString$1("url")._string0$_text);
              t1 = t1.$index($arguments, 1).get$realNull();
              withMap = t1 == null ? null : t1.assertMap$1("with")._map0$_contents;
              t1 = $async$self.$this;
              t2 = t1._async_evaluate0$_callableNode;
              t2.toString;
              if (withMap != null) {
                values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue_2);
                withMap.forEach$1(0, new A._EvaluateVisitor__closure11(values, t2.get$span(t2), t2));
                configuration = new A.ExplicitConfiguration0(t2, values, null);
              } else
                configuration = B.Configuration_Map_empty_null0;
              t3 = t2.get$span(t2);
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, "load-css()", t2, new A._EvaluateVisitor__closure12(t1), t3.get$sourceUrl(t3), configuration, true), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate0$_assertConfigurationIsEmpty$2$nameInError(configuration, true);
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 185
  };
  A._EvaluateVisitor__closure11.prototype = {
    call$2(variable, value) {
      var t1 = variable.assertString$1("with key"),
        $name = A.stringReplaceAllUnchecked(t1._string0$_text, "_", "-");
      t1 = this.values;
      if (t1.containsKey$1($name))
        throw A.wrapException("The variable $" + $name + " was configured twice.");
      t1.$indexSet(0, $name, new A.ConfiguredValue0(value, this.span, this.callableNode));
    },
    $signature: 104
  };
  A._EvaluateVisitor__closure12.prototype = {
    call$2(module, _) {
      var t1 = this.$this;
      return t1._async_evaluate0$_combineCss$2$clone(module, true).accept$1(t1);
    },
    $signature: 341
  };
  A._EvaluateVisitor_closure50.prototype = {
    call$1($arguments) {
      return this.$call$body$_EvaluateVisitor_closure2($arguments);
    },
    $call$body$_EvaluateVisitor_closure2($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, callableNode, t2, t3, t4, t5, t1, mixin, args;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = J.getInterceptor$asx($arguments);
              mixin = t1.$index($arguments, 0);
              args = type$.SassArgumentList_2._as(t1.$index($arguments, 1));
              t1 = $async$self.$this;
              callableNode = t1._async_evaluate0$_callableNode;
              t2 = callableNode.get$span(callableNode);
              t3 = callableNode.get$span(callableNode);
              t4 = type$.Expression_2;
              t5 = A.List_List$unmodifiable(B.List_empty20, t4);
              t4 = A.ConstantMap_ConstantMap$from(B.Map_empty14, type$.String, t4);
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_applyMixin$5(mixin.assertMixin$1("mixin").callable, t1._async_evaluate0$_environment._async_environment0$_content, new A.ArgumentInvocation0(t5, t4, new A.ValueExpression0(args, t3), null, t2), callableNode, callableNode), $async$call$1);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 185
  };
  A._EvaluateVisitor_run_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet_2),
        $async$returnValue, $async$self = this, module, t2, url, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              url = null;
              t1 = $async$self.node;
              _0_0 = t1.span.file.url;
              if (_0_0 != null) {
                url = _0_0;
                t2 = true;
              } else
                t2 = false;
              if (t2) {
                t2 = $async$self.$this;
                t2._async_evaluate0$_activeModules.$indexSet(0, url, null);
                if (!(t2._async_evaluate0$_nodeImporter != null && J.toString$0$(url) === "stdin"))
                  t2._async_evaluate0$_loadedUrls.add$1(0, url);
              }
              t2 = $async$self.$this;
              $async$goto = 3;
              return A._asyncAwait(t2._async_evaluate0$_addExceptionTrace$1$1(new A._EvaluateVisitor_run__closure2(t2, $async$self.importer, t1), type$.Module_AsyncCallable_2), $async$call$0);
            case 3:
              // returning from await.
              module = $async$result;
              $async$returnValue = new A._Record_2_loadedUrls_stylesheet(t2._async_evaluate0$_loadedUrls, t2._async_evaluate0$_combineCss$1(module));
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 342
  };
  A._EvaluateVisitor_run__closure2.prototype = {
    call$0() {
      return this.$this._async_evaluate0$_execute$2(this.importer, this.node);
    },
    $signature: 343
  };
  A._EvaluateVisitor__loadModule_closure5.prototype = {
    call$0() {
      return this.callback.call$2(this._box_1.builtInModule, false);
    },
    $signature: 0
  };
  A._EvaluateVisitor__loadModule_closure6.prototype = {
    call$0() {
      return this.$call$body$_EvaluateVisitor__loadModule_closure0();
    },
    $call$body$_EvaluateVisitor__loadModule_closure0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$handler = 1, $async$currentError, $async$next = [], $async$self = this, canonicalUrl, oldInDependency, isDependency, t4, message, t1, stylesheet, importer, t2, t3, _1_0, $async$temp1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1) {
          $async$currentError = $async$result;
          $async$goto = $async$handler;
        }
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = {};
              stylesheet = null;
              importer = null;
              t2 = $async$self.$this;
              t3 = $async$self.nodeWithSpan;
              $async$goto = 2;
              return A._asyncAwait(t2._async_evaluate0$_loadStylesheet$3$baseUrl($async$self.url.toString$0(0), t3.get$span(t3), $async$self.baseUrl), $async$call$0);
            case 2:
              // returning from await.
              _1_0 = $async$result;
              stylesheet = _1_0._0;
              importer = _1_0._1;
              isDependency = _1_0._2;
              isDependency = isDependency;
              canonicalUrl = stylesheet.span.file.url;
              if (canonicalUrl != null) {
                t4 = t2._async_evaluate0$_activeModules;
                if (t4.containsKey$1(canonicalUrl)) {
                  message = $async$self.namesInErrors ? "Module loop: " + $.$get$context().prettyUri$1(canonicalUrl) + " is already being loaded." : string$.Modulel;
                  t1 = A.NullableExtension_andThen0(t4.$index(0, canonicalUrl), new A._EvaluateVisitor__loadModule__closure5(t2, message));
                  throw A.wrapException(t1 == null ? t2._async_evaluate0$_exception$1(message) : t1);
                } else
                  t4.$indexSet(0, canonicalUrl, t3);
              }
              t4 = t2._async_evaluate0$_modules.containsKey$1(canonicalUrl);
              oldInDependency = t2._async_evaluate0$_inDependency;
              t2._async_evaluate0$_inDependency = isDependency;
              t1.module = null;
              $async$handler = 3;
              $async$temp1 = t1;
              $async$goto = 6;
              return A._asyncAwait(t2._async_evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, $async$self.configuration, $async$self.namesInErrors, t3), $async$call$0);
            case 6:
              // returning from await.
              $async$temp1.module = $async$result;
              $async$next.push(5);
              // goto finally
              $async$goto = 4;
              break;
            case 3:
              // uncaught
              $async$next = [1];
            case 4:
              // finally
              $async$handler = 1;
              t2._async_evaluate0$_activeModules.remove$1(0, canonicalUrl);
              t2._async_evaluate0$_inDependency = oldInDependency;
              // goto the next finally handler
              $async$goto = $async$next.pop();
              break;
            case 5:
              // after finally
              $async$goto = 7;
              return A._asyncAwait(t2._async_evaluate0$_addExceptionSpanAsync$1$3$addStackFrame(t3, new A._EvaluateVisitor__loadModule__closure6(t1, $async$self.callback, !t4), false, type$.void), $async$call$0);
            case 7:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
            case 1:
              // rethrow
              return A._asyncRethrow($async$currentError, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__loadModule__closure5.prototype = {
    call$1(previousLoad) {
      return this.$this._async_evaluate0$_multiSpanException$3(this.message, "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 105
  };
  A._EvaluateVisitor__loadModule__closure6.prototype = {
    call$0() {
      return this.callback.call$2(this._box_0.module, this.firstLoad);
    },
    $signature: 0
  };
  A._EvaluateVisitor__execute_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t3, t4, t5, t6, t1, oldImporter, oldStylesheet, oldRoot, oldPreModuleComments, oldParent, oldEndOfImports, oldOutOfOrderImports, oldExtensionStore, t2, oldStyleRule, oldMediaQueries, oldDeclarationName, oldInUnknownAtRule, oldInKeyframes, oldConfiguration;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              oldImporter = t1._async_evaluate0$_importer;
              oldStylesheet = t1._async_evaluate0$__stylesheet;
              oldRoot = t1._async_evaluate0$__root;
              oldPreModuleComments = t1._async_evaluate0$_preModuleComments;
              oldParent = t1._async_evaluate0$__parent;
              oldEndOfImports = t1._async_evaluate0$__endOfImports;
              oldOutOfOrderImports = t1._async_evaluate0$_outOfOrderImports;
              oldExtensionStore = t1._async_evaluate0$__extensionStore;
              t2 = t1._async_evaluate0$_atRootExcludingStyleRule;
              oldStyleRule = t2 ? null : t1._async_evaluate0$_styleRuleIgnoringAtRoot;
              oldMediaQueries = t1._async_evaluate0$_mediaQueries;
              oldDeclarationName = t1._async_evaluate0$_declarationName;
              oldInUnknownAtRule = t1._async_evaluate0$_inUnknownAtRule;
              oldInKeyframes = t1._async_evaluate0$_inKeyframes;
              oldConfiguration = t1._async_evaluate0$_configuration;
              t1._async_evaluate0$_importer = $async$self.importer;
              t3 = t1._async_evaluate0$__stylesheet = $async$self.stylesheet;
              t4 = t3.span;
              t5 = t1._async_evaluate0$__parent = t1._async_evaluate0$__root = A.ModifiableCssStylesheet$0(t4);
              t1._async_evaluate0$__endOfImports = 0;
              t1._async_evaluate0$_outOfOrderImports = null;
              t1._async_evaluate0$__extensionStore = $async$self.extensionStore;
              t1._async_evaluate0$_declarationName = t1._async_evaluate0$_mediaQueries = t1._async_evaluate0$_styleRuleIgnoringAtRoot = null;
              t1._async_evaluate0$_inKeyframes = t1._async_evaluate0$_atRootExcludingStyleRule = t1._async_evaluate0$_inUnknownAtRule = false;
              t6 = $async$self.configuration;
              if (t6 != null)
                t1._async_evaluate0$_configuration = t6;
              $async$goto = 2;
              return A._asyncAwait(t1.visitStylesheet$1(t3), $async$call$0);
            case 2:
              // returning from await.
              t3 = t1._async_evaluate0$_outOfOrderImports == null ? t5 : new A.CssStylesheet0(new A.UnmodifiableListView(t1._async_evaluate0$_addOutOfOrderImports$0(), type$.UnmodifiableListView_CssNode_2), t4);
              $async$self.css._value = t3;
              $async$self.preModuleComments._value = t1._async_evaluate0$_preModuleComments;
              t1._async_evaluate0$_importer = oldImporter;
              t1._async_evaluate0$__stylesheet = oldStylesheet;
              t1._async_evaluate0$__root = oldRoot;
              t1._async_evaluate0$_preModuleComments = oldPreModuleComments;
              t1._async_evaluate0$__parent = oldParent;
              t1._async_evaluate0$__endOfImports = oldEndOfImports;
              t1._async_evaluate0$_outOfOrderImports = oldOutOfOrderImports;
              t1._async_evaluate0$__extensionStore = oldExtensionStore;
              t1._async_evaluate0$_styleRuleIgnoringAtRoot = oldStyleRule;
              t1._async_evaluate0$_mediaQueries = oldMediaQueries;
              t1._async_evaluate0$_declarationName = oldDeclarationName;
              t1._async_evaluate0$_inUnknownAtRule = oldInUnknownAtRule;
              t1._async_evaluate0$_atRootExcludingStyleRule = t2;
              t1._async_evaluate0$_inKeyframes = oldInKeyframes;
              t1._async_evaluate0$_configuration = oldConfiguration;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__combineCss_closure5.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 123
  };
  A._EvaluateVisitor__combineCss_closure6.prototype = {
    call$1(target) {
      return !this.selectors.contains$1(0, target);
    },
    $signature: 15
  };
  A._EvaluateVisitor__combineCss_visitModule2.prototype = {
    call$1(module) {
      var t1, t2, t3, t4, _i, upstream, _1_0, comments, t5, statements, index, _this = this;
      if (!_this.seen.add$1(0, module))
        return;
      if (_this.clone)
        module = module.cloneCss$0();
      for (t1 = module.get$upstream(), t2 = t1.length, t3 = _this.css, t4 = _this.imports, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        upstream = t1[_i];
        if (upstream.get$transitivelyContainsCss()) {
          _1_0 = module.get$preModuleComments().$index(0, upstream);
          if (_1_0 != null) {
            comments = _1_0;
            t5 = true;
          } else {
            comments = null;
            t5 = false;
          }
          if (t5)
            B.JSArray_methods.addAll$1(t3.length === 0 ? t4 : t3, comments);
          _this.call$1(upstream);
        }
      }
      _this.sorted.addFirst$1(module);
      t1 = module.get$css(module);
      statements = t1.get$children(t1);
      index = _this.$this._async_evaluate0$_indexAfterImports$1(statements);
      t1 = J.getInterceptor$ax(statements);
      B.JSArray_methods.addAll$1(t4, t1.getRange$2(statements, 0, index));
      B.JSArray_methods.addAll$1(t3, t1.getRange$2(statements, index, t1.get$length(statements)));
    },
    $signature: 345
  };
  A._EvaluateVisitor__extendModules_closure5.prototype = {
    call$1(target) {
      return !this.originalSelectors.contains$1(0, target);
    },
    $signature: 15
  };
  A._EvaluateVisitor__extendModules_closure6.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_ExtensionStore_2);
    },
    $signature: 188
  };
  A._EvaluateVisitor_visitAtRootRule_closure5.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitAtRootRule_closure6.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__scopeForAtRoot_closure17.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__parent, "__parent");
              t1._async_evaluate0$__parent = $async$self.newParent;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_environment.scope$1$2$when(callback, $async$self.node.hasDeclarations, type$.void), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate0$__parent = t2;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot_closure18.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, oldAtRootExcludingStyleRule;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              oldAtRootExcludingStyleRule = t1._async_evaluate0$_atRootExcludingStyleRule;
              t1._async_evaluate0$_atRootExcludingStyleRule = true;
              $async$goto = 2;
              return A._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate0$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot_closure19.prototype = {
    call$1(callback) {
      return this.$this._async_evaluate0$_withMediaQueries$1$3(null, null, new A._EvaluateVisitor__scopeForAtRoot__closure2(this.innerScope, callback), type$.Null);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot__closure2.prototype = {
    call$0() {
      return this.innerScope.call$1(this.callback);
    },
    $signature: 4
  };
  A._EvaluateVisitor__scopeForAtRoot_closure20.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, wasInKeyframes;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              wasInKeyframes = t1._async_evaluate0$_inKeyframes;
              t1._async_evaluate0$_inKeyframes = false;
              $async$goto = 2;
              return A._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate0$_inKeyframes = wasInKeyframes;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor__scopeForAtRoot_closure21.prototype = {
    call$1($parent) {
      return $parent instanceof A.ModifiableCssAtRule0;
    },
    $signature: 189
  };
  A._EvaluateVisitor__scopeForAtRoot_closure22.prototype = {
    call$1(callback) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, wasInUnknownAtRule;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              wasInUnknownAtRule = t1._async_evaluate0$_inUnknownAtRule;
              t1._async_evaluate0$_inUnknownAtRule = false;
              $async$goto = 2;
              return A._asyncAwait($async$self.innerScope.call$1(callback), $async$call$1);
            case 2:
              // returning from await.
              t1._async_evaluate0$_inUnknownAtRule = wasInUnknownAtRule;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 41
  };
  A._EvaluateVisitor_visitContentRule_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$returnValue, $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.content.declaration.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 6:
              // returning from await.
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitDeclaration_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self._box_0.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitEachRule_closure8.prototype = {
    call$1(value) {
      var t1 = this.$this,
        t2 = this.nodeWithSpan;
      return t1._async_evaluate0$_environment.setLocalVariable$3(this._box_0.variable, t1._async_evaluate0$_withoutSlash$2(value, t2), t2);
    },
    $signature: 57
  };
  A._EvaluateVisitor_visitEachRule_closure9.prototype = {
    call$1(value) {
      return this.$this._async_evaluate0$_setMultipleVariables$3(this._box_0.variables, value, this.nodeWithSpan);
    },
    $signature: 57
  };
  A._EvaluateVisitor_visitEachRule_closure10.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      return t1._async_evaluate0$_handleReturn$2(_this.list.get$asList(), new A._EvaluateVisitor_visitEachRule__closure2(t1, _this.setVariables, _this.node));
    },
    $signature: 76
  };
  A._EvaluateVisitor_visitEachRule__closure2.prototype = {
    call$1(element) {
      var t1;
      this.setVariables.call$1(element);
      t1 = this.$this;
      return t1._async_evaluate0$_handleReturn$2(this.node.children, new A._EvaluateVisitor_visitEachRule___closure2(t1));
    },
    $signature: 350
  };
  A._EvaluateVisitor_visitEachRule___closure2.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 108
  };
  A._EvaluateVisitor_visitAtRule_closure8.prototype = {
    call$1(value) {
      return this.$this._async_evaluate0$_interpolationToValue$3$trim$warnForColor(value, true, true);
    },
    $signature: 352
  };
  A._EvaluateVisitor_visitAtRule_closure9.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t2, t3, _i, t1, styleRule;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              styleRule = t1._async_evaluate0$_atRootExcludingStyleRule ? null : t1._async_evaluate0$_styleRuleIgnoringAtRoot;
              $async$goto = styleRule == null || t1._async_evaluate0$_inKeyframes || J.$eq$($async$self.name.value, "font-face") ? 2 : 4;
              break;
            case 2:
              // then
              t2 = $async$self.children, t3 = t2.length, _i = 0;
            case 5:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 7;
                break;
              }
              $async$goto = 8;
              return A._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
            case 6:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 5;
              break;
            case 7:
              // after for
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              $async$goto = 9;
              return A._asyncAwait(t1._async_evaluate0$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitAtRule__closure2(t1, $async$self.children), false, type$.ModifiableCssStyleRule_2, type$.Null), $async$call$0);
            case 9:
              // returning from await.
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitAtRule__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitAtRule_closure10.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitForRule_closure14.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassNumber_2),
        $async$returnValue, $async$self = this;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self.node.from.accept$1($async$self.$this), $async$call$0);
            case 3:
              // returning from await.
              $async$returnValue = $async$result.assertNumber$0();
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 194
  };
  A._EvaluateVisitor_visitForRule_closure15.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.SassNumber_2),
        $async$returnValue, $async$self = this;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait($async$self.node.to.accept$1($async$self.$this), $async$call$0);
            case 3:
              // returning from await.
              $async$returnValue = $async$result.assertNumber$0();
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 194
  };
  A._EvaluateVisitor_visitForRule_closure16.prototype = {
    call$0() {
      return this.fromNumber.assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure17.prototype = {
    call$0() {
      var t1 = this.fromNumber;
      return this.toNumber.coerce$2(t1.get$numeratorUnits(t1), t1.get$denominatorUnits(t1)).assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure18.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, i, t3, t4, t5, t6, t7, t8, _0_0, result, t1, t2, nodeWithSpan;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.node;
              nodeWithSpan = t1._async_evaluate0$_expressionNode$1(t2.from);
              i = $async$self.from, t3 = $async$self._box_0, t4 = $async$self.direction, t5 = t2.variable, t6 = $async$self.fromNumber, t2 = t2.children;
            case 3:
              // for condition
              if (!(i !== t3.to)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              t7 = t1._async_evaluate0$_environment;
              t8 = t6.get$numeratorUnits(t6);
              t7.setLocalVariable$3(t5, A.SassNumber_SassNumber$withUnits0(i, t6.get$denominatorUnits(t6), t8), nodeWithSpan);
              $async$goto = 6;
              return A._asyncAwait(t1._async_evaluate0$_handleReturn$2(t2, new A._EvaluateVisitor_visitForRule__closure2(t1)), $async$call$0);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t7 = true;
              } else {
                result = null;
                t7 = false;
              }
              if (t7) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              i += t4;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 76
  };
  A._EvaluateVisitor_visitForRule__closure2.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 108
  };
  A._EvaluateVisitor_visitForwardRule_closure5.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._async_evaluate0$_registerCommentsForModule$1(module);
      this.$this._async_evaluate0$_environment.forwardModule$2(module, this.node);
    },
    $signature: 121
  };
  A._EvaluateVisitor_visitForwardRule_closure6.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._async_evaluate0$_registerCommentsForModule$1(module);
      this.$this._async_evaluate0$_environment.forwardModule$2(module, this.node);
    },
    $signature: 121
  };
  A._EvaluateVisitor__registerCommentsForModule_closure2.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_CssComment_2);
    },
    $signature: 245
  };
  A._EvaluateVisitor_visitIfRule_closure2.prototype = {
    call$1(clause) {
      var t1 = this.$this;
      return t1._async_evaluate0$_environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitIfRule__closure2(t1, clause), true, clause.hasDeclarations, type$.nullable_Value_2);
    },
    $signature: 357
  };
  A._EvaluateVisitor_visitIfRule__closure2.prototype = {
    call$0() {
      var t1 = this.$this;
      return t1._async_evaluate0$_handleReturn$2(this.clause.children, new A._EvaluateVisitor_visitIfRule___closure2(t1));
    },
    $signature: 76
  };
  A._EvaluateVisitor_visitIfRule___closure2.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 108
  };
  A._EvaluateVisitor__visitDynamicImport_closure2.prototype = {
    call$0() {
      return this.$call$body$_EvaluateVisitor__visitDynamicImport_closure0();
    },
    $call$body$_EvaluateVisitor__visitDynamicImport_closure0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$returnValue, $async$self = this, t1, t2, _0_0, stylesheet, t3, isDependency, t4, url, t5, t6, oldImporter, oldInDependency, loadsUserDefinedModules, children, t7, t8, t9, t10, environment, module, visitor, _box_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              _box_0 = {};
              _box_0.isDependency = _box_0.importer = _box_0.stylesheet = null;
              t1 = $async$self.$this;
              t2 = $async$self.$import;
              $async$goto = 3;
              return A._asyncAwait(t1._async_evaluate0$_loadStylesheet$3$forImport(t2.urlString, t2.span, true), $async$call$0);
            case 3:
              // returning from await.
              _0_0 = $async$result;
              stylesheet = _box_0.stylesheet = _0_0._0;
              t3 = _box_0.importer = _0_0._1;
              isDependency = _0_0._2;
              _box_0.isDependency = isDependency;
              t4 = isDependency;
              url = stylesheet.span.file.url;
              if (url != null) {
                t5 = t1._async_evaluate0$_activeModules;
                if (t5.containsKey$1(url)) {
                  t2 = A.NullableExtension_andThen0(t5.$index(0, url), new A._EvaluateVisitor__visitDynamicImport__closure11(t1));
                  throw A.wrapException(t2 == null ? t1._async_evaluate0$_exception$1("This file is already being loaded.") : t2);
                }
                t5.$indexSet(0, url, t2);
              }
              t2 = stylesheet._stylesheet1$_uses;
              t5 = type$.UnmodifiableListView_UseRule_2;
              t6 = new A.UnmodifiableListView(t2, t5);
              if (t6.get$length(t6) === 0) {
                t6 = new A.UnmodifiableListView(stylesheet._stylesheet1$_forwards, type$.UnmodifiableListView_ForwardRule_2);
                t6 = t6.get$length(t6) === 0;
              } else
                t6 = false;
              $async$goto = t6 ? 4 : 5;
              break;
            case 4:
              // then
              oldImporter = t1._async_evaluate0$_importer;
              t2 = t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__stylesheet, "_stylesheet");
              oldInDependency = t1._async_evaluate0$_inDependency;
              t1._async_evaluate0$_importer = t3;
              t1._async_evaluate0$__stylesheet = stylesheet;
              t1._async_evaluate0$_inDependency = t4;
              $async$goto = 6;
              return A._asyncAwait(t1.visitStylesheet$1(stylesheet), $async$call$0);
            case 6:
              // returning from await.
              t1._async_evaluate0$_importer = oldImporter;
              t1._async_evaluate0$__stylesheet = t2;
              t1._async_evaluate0$_inDependency = oldInDependency;
              t1._async_evaluate0$_activeModules.remove$1(0, url);
              // goto return
              $async$goto = 1;
              break;
            case 5:
              // join
              t2 = new A.UnmodifiableListView(t2, t5);
              if (!t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure12())) {
                t2 = new A.UnmodifiableListView(stylesheet._stylesheet1$_forwards, type$.UnmodifiableListView_ForwardRule_2);
                loadsUserDefinedModules = t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure13());
              } else
                loadsUserDefinedModules = true;
              children = A._Cell$();
              t2 = t1._async_evaluate0$_environment;
              t3 = type$.String;
              t4 = type$.Module_AsyncCallable_2;
              t5 = type$.AstNode_2;
              t6 = A._setArrayType([], type$.JSArray_Module_AsyncCallable_2);
              t7 = t2._async_environment0$_variables;
              t7 = A._setArrayType(t7.slice(0), A._arrayInstanceType(t7));
              t8 = t2._async_environment0$_variableNodes;
              t8 = A._setArrayType(t8.slice(0), A._arrayInstanceType(t8));
              t9 = t2._async_environment0$_functions;
              t9 = A._setArrayType(t9.slice(0), A._arrayInstanceType(t9));
              t10 = t2._async_environment0$_mixins;
              t10 = A._setArrayType(t10.slice(0), A._arrayInstanceType(t10));
              environment = A.AsyncEnvironment$_0(A.LinkedHashMap_LinkedHashMap$_empty(t3, t4), A.LinkedHashMap_LinkedHashMap$_empty(t3, t5), A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t2._async_environment0$_importedModules, null, null, t6, t7, t8, t9, t10, t2._async_environment0$_content);
              $async$goto = 7;
              return A._asyncAwait(t1._async_evaluate0$_withEnvironment$1$2(environment, new A._EvaluateVisitor__visitDynamicImport__closure14(_box_0, t1, loadsUserDefinedModules, environment, children), type$.Null), $async$call$0);
            case 7:
              // returning from await.
              module = environment.toDummyModule$0();
              t1._async_evaluate0$_environment.importForwards$1(module);
              $async$goto = loadsUserDefinedModules ? 8 : 9;
              break;
            case 8:
              // then
              $async$goto = module.transitivelyContainsCss ? 10 : 11;
              break;
            case 10:
              // then
              $async$goto = 12;
              return A._asyncAwait(t1._async_evaluate0$_combineCss$2$clone(module, module.transitivelyContainsExtensions).accept$1(t1), $async$call$0);
            case 12:
              // returning from await.
            case 11:
              // join
              visitor = new A._ImportedCssVisitor2(t1);
              for (t2 = J.get$iterator$ax(children._readLocal$0()); t2.moveNext$0();)
                t2.get$current(t2).accept$1(visitor);
            case 9:
              // join
              t1._async_evaluate0$_activeModules.remove$1(0, url);
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__visitDynamicImport__closure11.prototype = {
    call$1(previousLoad) {
      return this.$this._async_evaluate0$_multiSpanException$3("This file is already being loaded.", "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 105
  };
  A._EvaluateVisitor__visitDynamicImport__closure12.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 197
  };
  A._EvaluateVisitor__visitDynamicImport__closure13.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 198
  };
  A._EvaluateVisitor__visitDynamicImport__closure14.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t7, t8, t1, oldImporter, t2, t3, t4, t5, oldOutOfOrderImports, oldConfiguration, oldInDependency, t6;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              oldImporter = t1._async_evaluate0$_importer;
              t2 = t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__stylesheet, "_stylesheet");
              t3 = t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__root, "_root");
              t4 = t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__parent, "__parent");
              t5 = t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__endOfImports, "_endOfImports");
              oldOutOfOrderImports = t1._async_evaluate0$_outOfOrderImports;
              oldConfiguration = t1._async_evaluate0$_configuration;
              oldInDependency = t1._async_evaluate0$_inDependency;
              t6 = $async$self._box_0;
              t1._async_evaluate0$_importer = t6.importer;
              t7 = t6.stylesheet;
              t1._async_evaluate0$__stylesheet = t7;
              t8 = $async$self.loadsUserDefinedModules;
              if (t8) {
                t7 = A.ModifiableCssStylesheet$0(t7.span);
                t1._async_evaluate0$__root = t7;
                t1._async_evaluate0$__parent = t1._async_evaluate0$_assertInModule$2(t7, "_root");
                t1._async_evaluate0$__endOfImports = 0;
                t1._async_evaluate0$_outOfOrderImports = null;
              }
              t1._async_evaluate0$_inDependency = t6.isDependency;
              t7 = new A.UnmodifiableListView(t6.stylesheet._stylesheet1$_forwards, type$.UnmodifiableListView_ForwardRule_2);
              if (!t7.get$isEmpty(t7))
                t1._async_evaluate0$_configuration = $async$self.environment.toImplicitConfiguration$0();
              $async$goto = 2;
              return A._asyncAwait(t1.visitStylesheet$1(t6.stylesheet), $async$call$0);
            case 2:
              // returning from await.
              t6 = t8 ? t1._async_evaluate0$_addOutOfOrderImports$0() : A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
              $async$self.children._value = t6;
              t1._async_evaluate0$_importer = oldImporter;
              t1._async_evaluate0$__stylesheet = t2;
              if (t8) {
                t1._async_evaluate0$__root = t3;
                t1._async_evaluate0$__parent = t4;
                t1._async_evaluate0$__endOfImports = t5;
                t1._async_evaluate0$_outOfOrderImports = oldOutOfOrderImports;
              }
              t1._async_evaluate0$_configuration = oldConfiguration;
              t1._async_evaluate0$_inDependency = oldInDependency;
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__applyMixin_closure9.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_environment.asMixin$1(new A._EvaluateVisitor__applyMixin__closure6(t1, $async$self.$arguments, $async$self.mixin, $async$self.nodeWithSpanWithoutContent)), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin__closure6.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 2;
              return A._asyncAwait($async$self.$this._async_evaluate0$_runBuiltInCallable$3($async$self.$arguments, $async$self.mixin, $async$self.nodeWithSpanWithoutContent), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin_closure8.prototype = {
    call$0() {
      var t1 = this._1_0;
      if (t1 == null)
        t1 = type$.AsyncCallable_2._as(t1);
      return type$.UserDefinedCallable_AsyncEnvironment_2._as(t1).declaration;
    },
    $signature: 130
  };
  A._EvaluateVisitor__applyMixin_closure10.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_environment.withContent$2($async$self.contentCallable, new A._EvaluateVisitor__applyMixin__closure5(t1, $async$self.mixin, $async$self.nodeWithSpanWithoutContent)), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor__applyMixin__closure5.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_environment.asMixin$1(new A._EvaluateVisitor__applyMixin___closure2(t1, $async$self.mixin, $async$self.nodeWithSpanWithoutContent)), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin___closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.void),
        $async$self = this, t1, t2, t3, t4, t5, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.mixin.declaration.children, t2 = t1.length, t3 = $async$self.$this, t4 = $async$self.nodeWithSpanWithoutContent, t5 = type$.nullable_Value_2, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t3._async_evaluate0$_addErrorSpan$1$2(t4, new A._EvaluateVisitor__applyMixin____closure2(t3, t1[_i]), t5), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 30
  };
  A._EvaluateVisitor__applyMixin____closure2.prototype = {
    call$0() {
      return this.statement.accept$1(this.$this);
    },
    $signature: 76
  };
  A._EvaluateVisitor_visitIncludeRule_closure8.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate0$_environment.getMixin$2$namespace(t1.name, t1.namespace);
    },
    $signature: 103
  };
  A._EvaluateVisitor_visitIncludeRule_closure9.prototype = {
    call$1($content) {
      var t1 = this.$this;
      return new A.UserDefinedCallable0($content, t1._async_evaluate0$_environment.closure$0(), t1._async_evaluate0$_inDependency, type$.UserDefinedCallable_AsyncEnvironment_2);
    },
    $signature: 361
  };
  A._EvaluateVisitor_visitIncludeRule_closure10.prototype = {
    call$0() {
      return this.node.get$spanWithoutContent();
    },
    $signature: 33
  };
  A._EvaluateVisitor_visitMediaRule_closure8.prototype = {
    call$1(mediaQueries) {
      return this.$this._async_evaluate0$_mergeMediaQueries$2(mediaQueries, this.queries);
    },
    $signature: 113
  };
  A._EvaluateVisitor_visitMediaRule_closure9.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.mergedQueries;
              if (t2 == null)
                t2 = $async$self.queries;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_withMediaQueries$1$3(t2, $async$self.mergedSources, new A._EvaluateVisitor_visitMediaRule__closure2(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitMediaRule__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, _i, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate0$_atRootExcludingStyleRule ? null : t1._async_evaluate0$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate0$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitMediaRule___closure2(t1, $async$self.node), false, type$.ModifiableCssStyleRule_2, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t3 = t2.length, _i = 0;
            case 6:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 8;
                break;
              }
              $async$goto = 9;
              return A._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
            case 9:
              // returning from await.
            case 7:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 6;
              break;
            case 8:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitMediaRule___closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitMediaRule_closure10.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule0)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule0 && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitStyleRule_closure14.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitStyleRule_closure15.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitStyleRule_closure16.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_withStyleRule$1$2($async$self.rule, new A._EvaluateVisitor_visitStyleRule__closure2(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitStyleRule__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitStyleRule_closure17.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitStyleRule_closure18.prototype = {
    call$1(child) {
      return child instanceof A.ModifiableCssComment0;
    },
    $signature: 148
  };
  A._EvaluateVisitor_visitSupportsRule_closure5.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, _i, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate0$_atRootExcludingStyleRule ? null : t1._async_evaluate0$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate0$_withParent$2$2(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitSupportsRule__closure2(t1, $async$self.node), type$.ModifiableCssStyleRule_2, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t3 = t2.length, _i = 0;
            case 6:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 8;
                break;
              }
              $async$goto = 9;
              return A._asyncAwait(t2[_i].accept$1(t1), $async$call$0);
            case 9:
              // returning from await.
            case 7:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 6;
              break;
            case 8:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitSupportsRule__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, _i;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t2 = t1.length, t3 = $async$self.$this, _i = 0;
            case 2:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 5;
              return A._asyncAwait(t1[_i].accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
            case 3:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 2;
              break;
            case 4:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitSupportsRule_closure6.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor__visitSupportsCondition_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.String),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, $async$temp1, $async$temp2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self._box_0;
              $async$temp1 = A;
              $async$goto = 3;
              return A._asyncAwait(t1._async_evaluate0$_evaluateToCss$1(t2.declaration.name), $async$call$0);
            case 3:
              // returning from await.
              t3 = $async$temp1.S($async$result);
              t4 = t2.declaration.get$isCustomProperty() ? "" : " ";
              $async$temp1 = "(" + t3 + ":" + t4;
              $async$temp2 = A;
              $async$goto = 4;
              return A._asyncAwait(t1._async_evaluate0$_evaluateToCss$1(t2.declaration.value), $async$call$0);
            case 4:
              // returning from await.
              $async$returnValue = $async$temp1 + $async$temp2.S($async$result) + ")";
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 288
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure8.prototype = {
    call$0() {
      var t1 = this.$this._async_evaluate0$_environment,
        t2 = this._box_0.override;
      t1.setVariable$4$global(this.node.name, t2.value, t2.assignmentNode, true);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure9.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate0$_environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure10.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.node;
      t1._async_evaluate0$_environment.setVariable$5$global$namespace(t2.name, this.value, t1._async_evaluate0$_expressionNode$1(t2.expression), t2.isGlobal, t2.namespace);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitUseRule_closure2.prototype = {
    call$2(module, firstLoad) {
      var t1, t2, t3, _0_0, $name, t4, t5, span;
      if (firstLoad)
        this.$this._async_evaluate0$_registerCommentsForModule$1(module);
      t1 = this.$this._async_evaluate0$_environment;
      t2 = this.node;
      t3 = t2.namespace;
      if (t3 == null) {
        t1._async_environment0$_globalModules.$indexSet(0, module, t2);
        t1._async_environment0$_allModules.push(module);
        _0_0 = A.IterableExtension_firstWhereOrNull(J.get$keys$z(B.JSArray_methods.get$first(t1._async_environment0$_variables)), module.get$variables().get$containsKey());
        if (_0_0 != null) {
          $name = _0_0;
          t1 = true;
        } else {
          $name = null;
          t1 = false;
        }
        if (t1)
          A.throwExpression(A.SassScriptException$0(string$.This_ma + A.S($name) + '".', null));
      } else {
        t4 = t1._async_environment0$_modules;
        if (t4.containsKey$1(t3)) {
          t5 = t1._async_environment0$_namespaceNodes.$index(0, t3);
          span = t5 == null ? null : t5.span;
          t5 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (span != null)
            t5.$indexSet(0, span, "original @use");
          A.throwExpression(A.MultiSpanSassScriptException$0(string$.There_ + t3 + '".', "new @use", t5));
        }
        t4.$indexSet(0, t3, module);
        t1._async_environment0$_namespaceNodes.$indexSet(0, t3, t2);
        t1._async_environment0$_allModules.push(module);
      }
    },
    $signature: 121
  };
  A._EvaluateVisitor_visitWarnRule_closure2.prototype = {
    call$0() {
      return this.node.expression.accept$1(this.$this);
    },
    $signature: 80
  };
  A._EvaluateVisitor_visitWhileRule_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Value_2),
        $async$returnValue, $async$self = this, t1, t2, t3, _0_0, result, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node, t2 = t1.condition, t3 = $async$self.$this, t1 = t1.children;
            case 3:
              // for condition
              $async$goto = 5;
              return A._asyncAwait(t2.accept$1(t3), $async$call$0);
            case 5:
              // returning from await.
              if (!$async$result.get$isTruthy()) {
                // goto after for
                $async$goto = 4;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t3._async_evaluate0$_handleReturn$2(t1, new A._EvaluateVisitor_visitWhileRule__closure2(t3)), $async$call$0);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t4 = true;
              } else {
                result = null;
                t4 = false;
              }
              if (t4) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              // goto for condition
              $async$goto = 3;
              break;
            case 4:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 76
  };
  A._EvaluateVisitor_visitWhileRule__closure2.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 108
  };
  A._EvaluateVisitor_visitBinaryOperationExpression_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, t1, t2, left, $async$temp1, $async$temp2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node;
              t2 = $async$self.$this;
              $async$goto = 3;
              return A._asyncAwait(t1.left.accept$1(t2), $async$call$0);
            case 3:
              // returning from await.
              left = $async$result;
            case 4:
              // switch
              switch (t1.operator) {
                case B.BinaryOperator_2jN0:
                  // goto case
                  $async$goto = 6;
                  break;
                case B.BinaryOperator_M6L0:
                  // goto case
                  $async$goto = 7;
                  break;
                case B.BinaryOperator_SNp0:
                  // goto case
                  $async$goto = 8;
                  break;
                case B.BinaryOperator_ql50:
                  // goto case
                  $async$goto = 9;
                  break;
                case B.BinaryOperator_ViB0:
                  // goto case
                  $async$goto = 10;
                  break;
                case B.BinaryOperator_cIH0:
                  // goto case
                  $async$goto = 11;
                  break;
                case B.BinaryOperator_7Tg0:
                  // goto case
                  $async$goto = 12;
                  break;
                case B.BinaryOperator_U8c0:
                  // goto case
                  $async$goto = 13;
                  break;
                case B.BinaryOperator_kpg0:
                  // goto case
                  $async$goto = 14;
                  break;
                case B.BinaryOperator_anB0:
                  // goto case
                  $async$goto = 15;
                  break;
                case B.BinaryOperator_olz0:
                  // goto case
                  $async$goto = 16;
                  break;
                case B.BinaryOperator_qN20:
                  // goto case
                  $async$goto = 17;
                  break;
                case B.BinaryOperator_t8B0:
                  // goto case
                  $async$goto = 18;
                  break;
                case B.BinaryOperator_OTG0:
                  // goto case
                  $async$goto = 19;
                  break;
                default:
                  // goto default
                  $async$goto = 20;
                  break;
              }
              break;
            case 6:
              // case
              $async$goto = 21;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 21:
              // returning from await.
              t1 = $async$result;
              t1 = new A.SassString0(A.serializeValue0(left, false, true) + "=" + A.serializeValue0(t1, false, true), false);
              // goto after switch
              $async$goto = 5;
              break;
            case 7:
              // case
              $async$goto = left.get$isTruthy() ? 22 : 24;
              break;
            case 22:
              // then
              $async$result = left;
              // goto join
              $async$goto = 23;
              break;
            case 24:
              // else
              $async$goto = 25;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 25:
              // returning from await.
            case 23:
              // join
              t1 = $async$result;
              // goto after switch
              $async$goto = 5;
              break;
            case 8:
              // case
              $async$goto = left.get$isTruthy() ? 26 : 28;
              break;
            case 26:
              // then
              $async$goto = 29;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 29:
              // returning from await.
              // goto join
              $async$goto = 27;
              break;
            case 28:
              // else
              $async$result = left;
            case 27:
              // join
              t1 = $async$result;
              // goto after switch
              $async$goto = 5;
              break;
            case 9:
              // case
              $async$temp1 = left;
              $async$goto = 30;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 30:
              // returning from await.
              t1 = $async$temp1.$eq(0, $async$result) ? B.SassBoolean_true0 : B.SassBoolean_false0;
              // goto after switch
              $async$goto = 5;
              break;
            case 10:
              // case
              $async$temp1 = left;
              $async$goto = 31;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 31:
              // returning from await.
              t1 = !$async$temp1.$eq(0, $async$result) ? B.SassBoolean_true0 : B.SassBoolean_false0;
              // goto after switch
              $async$goto = 5;
              break;
            case 11:
              // case
              $async$temp1 = left;
              $async$goto = 32;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 32:
              // returning from await.
              t1 = $async$temp1.greaterThan$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 12:
              // case
              $async$temp1 = left;
              $async$goto = 33;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 33:
              // returning from await.
              t1 = $async$temp1.greaterThanOrEquals$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 13:
              // case
              $async$temp1 = left;
              $async$goto = 34;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 34:
              // returning from await.
              t1 = $async$temp1.lessThan$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 14:
              // case
              $async$temp1 = left;
              $async$goto = 35;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 35:
              // returning from await.
              t1 = $async$temp1.lessThanOrEquals$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 15:
              // case
              $async$temp1 = left;
              $async$goto = 36;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 36:
              // returning from await.
              t1 = $async$temp1.plus$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 16:
              // case
              $async$temp1 = left;
              $async$goto = 37;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 37:
              // returning from await.
              t1 = $async$temp1.minus$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 17:
              // case
              $async$temp1 = left;
              $async$goto = 38;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 38:
              // returning from await.
              t1 = $async$temp1.times$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 18:
              // case
              $async$temp1 = t2;
              $async$temp2 = left;
              $async$goto = 39;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 39:
              // returning from await.
              t1 = $async$temp1._async_evaluate0$_slash$3($async$temp2, $async$result, t1);
              // goto after switch
              $async$goto = 5;
              break;
            case 19:
              // case
              $async$temp1 = left;
              $async$goto = 40;
              return A._asyncAwait(t1.right.accept$1(t2), $async$call$0);
            case 40:
              // returning from await.
              t1 = $async$temp1.modulo$1($async$result);
              // goto after switch
              $async$goto = 5;
              break;
            case 20:
              // default
              t1 = null;
            case 5:
              // after switch
              $async$returnValue = t1;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 80
  };
  A._EvaluateVisitor__slash_closure5.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 31
  };
  A._EvaluateVisitor__slash_closure6.prototype = {
    call$0() {
      return this._1_0._1;
    },
    $signature: 31
  };
  A._EvaluateVisitor__slash_recommendation2.prototype = {
    call$1(expression) {
      var left, right, t1, _null = null;
      $label0$0: {
        if (expression instanceof A.BinaryOperationExpression0)
          if (B.BinaryOperator_t8B0 === expression.operator) {
            left = expression.left;
            right = expression.right;
            t1 = true;
          } else {
            right = _null;
            left = right;
            t1 = false;
          }
        else {
          right = _null;
          left = right;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(left)) + ", " + A.S(this.call$1(right)) + ")";
          break $label0$0;
        }
        if (expression instanceof A.ParenthesizedExpression0) {
          t1 = expression.expression.toString$0(0);
          break $label0$0;
        }
        t1 = expression.toString$0(0);
        break $label0$0;
      }
      return t1;
    },
    $signature: 118
  };
  A._EvaluateVisitor_visitVariableExpression_closure2.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate0$_environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitUnaryOperationExpression_closure2.prototype = {
    call$0() {
      var t1, _this = this;
      switch (_this.node.operator) {
        case B.UnaryOperator_gg40:
          t1 = _this.operand.unaryPlus$0();
          break;
        case B.UnaryOperator_TLI0:
          t1 = _this.operand.unaryMinus$0();
          break;
        case B.UnaryOperator_Ix10:
          t1 = new A.SassString0("/" + A.serializeValue0(_this.operand, false, true), false);
          break;
        case B.UnaryOperator_not_not_not0:
          t1 = _this.operand.unaryNot$0();
          break;
        default:
          t1 = null;
      }
      return t1;
    },
    $signature: 31
  };
  A._EvaluateVisitor_visitListExpression_closure2.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 368
  };
  A._EvaluateVisitor_visitFunctionExpression_closure8.prototype = {
    call$0() {
      var t1 = this.$this._async_evaluate0$_environment,
        t2 = this.node;
      return t1.getFunction$2$namespace(A.stringReplaceAllUnchecked(t2.originalName, "_", "-"), t2.namespace);
    },
    $signature: 103
  };
  A._EvaluateVisitor_visitFunctionExpression_closure9.prototype = {
    call$1(argument) {
      return argument.accept$1(new A._IsCalculationSafeVisitor0());
    },
    $signature: 119
  };
  A._EvaluateVisitor_visitFunctionExpression_closure10.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate0$_runFunctionCallable$3(t1.$arguments, this._box_0.$function, t1);
    },
    $signature: 80
  };
  A._EvaluateVisitor__checkCalculationArguments_check2.prototype = {
    call$1(maxArgs) {
      var t1 = this.node,
        t2 = t1.$arguments.positional.length;
      if (t2 === 0)
        throw A.wrapException(this.$this._async_evaluate0$_exception$2("Missing argument.", t1.span));
      else if (maxArgs != null && t2 > maxArgs)
        throw A.wrapException(this.$this._async_evaluate0$_exception$2("Only " + A.S(maxArgs) + " " + A.pluralize0("argument", maxArgs, null) + " allowed, but " + t2 + " " + A.pluralize0("was", t2, "were") + " passed.", t1.span));
    },
    call$0() {
      return this.call$1(null);
    },
    $signature: 86
  };
  A._EvaluateVisitor__visitCalculationExpression_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Object),
        $async$returnValue, $async$self = this, t1, t2, t3, $async$temp1, $async$temp2, $async$temp3;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self._box_0;
              t3 = $async$self.inLegacySassFunction;
              $async$temp1 = A;
              $async$temp2 = t1._async_evaluate0$_binaryOperatorToCalculationOperator$2(t2.operator, $async$self.node);
              $async$goto = 3;
              return A._asyncAwait(t1._async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2.left, t3), $async$call$0);
            case 3:
              // returning from await.
              $async$temp3 = $async$result;
              $async$goto = 4;
              return A._asyncAwait(t1._async_evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2.right, t3), $async$call$0);
            case 4:
              // returning from await.
              $async$returnValue = $async$temp1.SassCalculation_operateInternal0($async$temp2, $async$temp3, $async$result, t3, !t1._async_evaluate0$_inSupportsDeclaration);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 151
  };
  A._EvaluateVisitor__checkAdjacentCalculationValues_closure2.prototype = {
    call$0() {
      return type$.UnaryOperationExpression_2._as(this._0_0).operator;
    },
    $signature: 120
  };
  A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure2.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._async_evaluate0$_runFunctionCallable$3(t1.$arguments, this.$function, t1);
    },
    $signature: 80
  };
  A._EvaluateVisitor__runUserDefinedCallable_closure2.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.callable,
        t3 = _this.V;
      return t1._async_evaluate0$_withEnvironment$1$2(t2.environment.closure$0(), new A._EvaluateVisitor__runUserDefinedCallable__closure2(t1, _this.evaluated, t2, _this.nodeWithSpan, _this.run, t3), t3);
    },
    $signature() {
      return this.V._eval$1("Future<0>()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable__closure2.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.V;
      return t1._async_evaluate0$_environment.scope$1$1(new A._EvaluateVisitor__runUserDefinedCallable___closure2(t1, _this.evaluated, _this.callable, _this.nodeWithSpan, _this.run, t2), t2);
    },
    $signature() {
      return this.V._eval$1("Future<0>()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable___closure2.prototype = {
    call$0() {
      return this.$call$body$_EvaluateVisitor__runUserDefinedCallable___closure0(this.V);
    },
    $call$body$_EvaluateVisitor__runUserDefinedCallable___closure0($async$type) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter($async$type),
        $async$returnValue, $async$self = this, declaredArguments, t5, minLength, i, argument, t6, t7, value, t8, restArgument, rest, argumentList, result, t1, t2, t3, t4, $async$temp1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.evaluated._values;
              t3 = $async$self.callable.declaration.$arguments;
              t4 = $async$self.nodeWithSpan;
              t1._async_evaluate0$_verifyArguments$4(J.get$length$asx(t2[2]), t2[0], t3, t4);
              declaredArguments = t3.$arguments;
              t5 = declaredArguments.length;
              minLength = Math.min(J.get$length$asx(t2[2]), t5);
              for (i = 0; i < minLength; ++i)
                t1._async_evaluate0$_environment.setLocalVariable$3(declaredArguments[i].name, J.$index$asx(t2[2], i), J.$index$asx(t2[3], i));
              i = J.get$length$asx(t2[2]);
            case 3:
              // for condition
              if (!(i < t5)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              argument = declaredArguments[i];
              t6 = t2[0];
              t7 = argument.name;
              value = J.remove$1$z(t6, t7);
              $async$goto = value == null ? 6 : 7;
              break;
            case 6:
              // then
              t6 = argument.defaultValue;
              $async$temp1 = t1;
              $async$goto = 8;
              return A._asyncAwait(t6.accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
              value = $async$temp1._async_evaluate0$_withoutSlash$2($async$result, t1._async_evaluate0$_expressionNode$1(t6));
            case 7:
              // join
              t6 = t1._async_evaluate0$_environment;
              t8 = J.$index$asx(t2[1], t7);
              if (t8 == null) {
                t8 = argument.defaultValue;
                t8.toString;
                t8 = t1._async_evaluate0$_expressionNode$1(t8);
              }
              t6.setLocalVariable$3(t7, value, t8);
            case 4:
              // for update
              ++i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              restArgument = t3.restArgument;
              if (restArgument != null) {
                rest = J.get$length$asx(t2[2]) > t5 ? J.sublist$1$ax(t2[2], t5) : B.List_empty19;
                t5 = t2[0];
                t6 = t2[4];
                argumentList = A.SassArgumentList$0(rest, t5, t6 === B.ListSeparator_undecided_null_undecided0 ? B.ListSeparator_rXA0 : t6);
                t1._async_evaluate0$_environment.setLocalVariable$3(restArgument, argumentList, t4);
              } else
                argumentList = null;
              $async$goto = 9;
              return A._asyncAwait($async$self.run.call$0(), $async$call$0);
            case 9:
              // returning from await.
              result = $async$result;
              if (argumentList == null) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              if (J.get$isEmpty$asx(t2[0])) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              if (argumentList._argument_list$_wereKeywordsAccessed) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
              throw A.wrapException(A.MultiSpanSassRuntimeException$0("No " + A.pluralize0("argument", J.get$length$asx(J.get$keys$z(t2[0])), null) + " named " + A.toSentence0(J.map$1$1$ax(J.get$keys$z(t2[0]), new A._EvaluateVisitor__runUserDefinedCallable____closure2(), type$.Object), "or") + ".", t4.get$span(t4), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([t3.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), t1._async_evaluate0$_stackTrace$1(t4.get$span(t4)), null));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature() {
      return this.V._eval$1("Future<0>()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable____closure2.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__runFunctionCallable_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, _i, $returnValue;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.callable.declaration, t2 = t1.children, t3 = t2.length, t4 = $async$self.$this, _i = 0;
            case 3:
              // for condition
              if (!(_i < t3)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t2[_i].accept$1(t4), $async$call$0);
            case 6:
              // returning from await.
              $returnValue = $async$result;
              if ($returnValue instanceof A.Value0) {
                $async$returnValue = $returnValue;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              throw A.wrapException(t4._async_evaluate0$_exception$2("Function finished without @return.", t1.span));
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 80
  };
  A._EvaluateVisitor__runBuiltInCallable_closure8.prototype = {
    call$0() {
      return this._box_0.overload.verify$2(J.get$length$asx(this.evaluated._values[2]), this.namedSet);
    },
    $signature: 0
  };
  A._EvaluateVisitor__runBuiltInCallable_closure9.prototype = {
    call$0() {
      return this._box_0.callback.call$1(this.evaluated._values[2]);
    },
    $signature: 371
  };
  A._EvaluateVisitor__runBuiltInCallable_closure10.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__evaluateArguments_closure11.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 45
  };
  A._EvaluateVisitor__evaluateArguments_closure12.prototype = {
    call$1(value) {
      return this.$this._async_evaluate0$_withoutSlash$2(value, this.restNodeForSpan);
    },
    $signature: 45
  };
  A._EvaluateVisitor__evaluateArguments_closure13.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restNodeForSpan;
      _this.named.$indexSet(0, key, _this.$this._async_evaluate0$_withoutSlash$2(value, t1));
      _this.namedNodes.$indexSet(0, key, t1);
    },
    $signature: 109
  };
  A._EvaluateVisitor__evaluateArguments_closure14.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 45
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure11.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression0(value, t1.get$span(t1));
    },
    $signature: 60
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure12.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression0(this.$this._async_evaluate0$_withoutSlash$2(value, this.restNodeForSpan), t1.get$span(t1));
    },
    $signature: 60
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure13.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restArgs;
      _this.named.$indexSet(0, key, new A.ValueExpression0(_this.$this._async_evaluate0$_withoutSlash$2(value, _this.restNodeForSpan), t1.get$span(t1)));
    },
    $signature: 109
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure14.prototype = {
    call$1(value) {
      var t1 = this.keywordRestArgs;
      return new A.ValueExpression0(this.$this._async_evaluate0$_withoutSlash$2(value, this.keywordRestNodeForSpan), t1.get$span(t1));
    },
    $signature: 60
  };
  A._EvaluateVisitor__addRestMap_closure2.prototype = {
    call$2(key, value) {
      var t2, _this = this,
        t1 = _this.$this;
      if (key instanceof A.SassString0)
        _this.values.$indexSet(0, key._string0$_text, _this.convert.call$1(t1._async_evaluate0$_withoutSlash$2(value, _this.expressionNode)));
      else {
        t2 = _this.nodeWithSpan;
        throw A.wrapException(t1._async_evaluate0$_exception$2(string$.Variab_ + key.toString$0(0) + " is not a string in " + _this.map.toString$0(0) + ".", t2.get$span(t2)));
      }
    },
    $signature: 104
  };
  A._EvaluateVisitor__verifyArguments_closure2.prototype = {
    call$0() {
      return this.$arguments.verify$2(this.positional, new A.MapKeySet(this.named, type$.MapKeySet_String));
    },
    $signature: 0
  };
  A._EvaluateVisitor_visitCssAtRule_closure5.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssAtRule_closure6.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure5.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure6.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssMediaRule_closure8.prototype = {
    call$1(mediaQueries) {
      return this.$this._async_evaluate0$_mergeMediaQueries$2(mediaQueries, this.node.queries);
    },
    $signature: 113
  };
  A._EvaluateVisitor_visitCssMediaRule_closure9.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              t2 = $async$self.mergedQueries;
              if (t2 == null)
                t2 = $async$self.node.queries;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_withMediaQueries$1$3(t2, $async$self.mergedSources, new A._EvaluateVisitor_visitCssMediaRule__closure2(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssMediaRule__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, t4, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate0$_atRootExcludingStyleRule ? null : t1._async_evaluate0$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate0$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssMediaRule___closure2(t1, $async$self.node), false, type$.ModifiableCssStyleRule_2, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1;
            case 6:
              // for condition
              if (!t2.moveNext$0()) {
                // goto after for
                $async$goto = 7;
                break;
              }
              t4 = t2.__internal$_current;
              $async$goto = 8;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
              // goto for condition
              $async$goto = 6;
              break;
            case 7:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssMediaRule___closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssMediaRule_closure10.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule0)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule0 && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssStyleRule_closure8.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              $async$goto = 2;
              return A._asyncAwait(t1._async_evaluate0$_withStyleRule$1$2($async$self.rule, new A._EvaluateVisitor_visitCssStyleRule__closure2(t1, $async$self.node), type$.Null), $async$call$0);
            case 2:
              // returning from await.
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssStyleRule__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssStyleRule_closure9.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssStyleRule_closure10.prototype = {
    call$0() {
      return J.get$length$asx(this._0_0._collection$_source);
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure5.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, styleRule, t2, t3, t4, t1, _0_0;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this;
              _0_0 = t1._async_evaluate0$_atRootExcludingStyleRule ? null : t1._async_evaluate0$_styleRuleIgnoringAtRoot;
              if (_0_0 != null) {
                styleRule = _0_0;
                t2 = true;
              } else {
                styleRule = null;
                t2 = false;
              }
              $async$goto = t2 ? 2 : 4;
              break;
            case 2:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1._async_evaluate0$_withParent$2$2(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssSupportsRule__closure2(t1, $async$self.node), type$.ModifiableCssStyleRule_2, type$.Null), $async$call$0);
            case 5:
              // returning from await.
              // goto join
              $async$goto = 3;
              break;
            case 4:
              // else
              t2 = $async$self.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1;
            case 6:
              // for condition
              if (!t2.moveNext$0()) {
                // goto after for
                $async$goto = 7;
                break;
              }
              t4 = t2.__internal$_current;
              $async$goto = 8;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t1), $async$call$0);
            case 8:
              // returning from await.
              // goto for condition
              $async$goto = 6;
              break;
            case 7:
              // after for
            case 3:
              // join
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssSupportsRule__closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Null),
        $async$self = this, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = $async$self.$this, t3 = A._instanceType(t1)._precomputed1;
            case 2:
              // for condition
              if (!t1.moveNext$0()) {
                // goto after for
                $async$goto = 3;
                break;
              }
              t4 = t1.__internal$_current;
              $async$goto = 4;
              return A._asyncAwait((t4 == null ? t3._as(t4) : t4).accept$1(t2), $async$call$0);
            case 4:
              // returning from await.
              // goto for condition
              $async$goto = 2;
              break;
            case 3:
              // after for
              // implicit return
              return A._asyncReturn(null, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 4
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure6.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor__performInterpolationHelper_closure2.prototype = {
    call$1(targetLocations) {
      return A.InterpolationMap$0(this.interpolation, targetLocations);
    },
    $signature: 211
  };
  A._EvaluateVisitor__serialize_closure2.prototype = {
    call$0() {
      return A.serializeValue0(this.value, false, this.quote);
    },
    $signature: 22
  };
  A._EvaluateVisitor__expressionNode_closure2.prototype = {
    call$0() {
      var t1 = this.expression;
      return this.$this._async_evaluate0$_environment.getVariableNode$2$namespace(t1.name, t1.namespace);
    },
    $signature: 212
  };
  A._EvaluateVisitor__withoutSlash_recommendation2.prototype = {
    call$1(number) {
      var t1, before, after,
        _1_0 = number.asSlash;
      $label0$0: {
        if (type$.Record_2_nullable_Object_and_nullable_Object._is(_1_0)) {
          t1 = type$.SassNumber_2;
          before = t1._as(_1_0._0);
          after = t1._as(_1_0._1);
          t1 = true;
        } else {
          before = null;
          after = null;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(before)) + ", " + A.S(this.call$1(after)) + ")";
          break $label0$0;
        }
        t1 = A.serializeValue0(number, true, true);
        break $label0$0;
      }
      return t1;
    },
    $signature: 213
  };
  A._EvaluateVisitor__stackFrame_closure2.prototype = {
    call$1(url) {
      var t1 = this.$this._async_evaluate0$_importCache;
      t1 = t1 == null ? null : t1.humanize$1(url);
      return t1 == null ? url : t1;
    },
    $signature: 48
  };
  A._ImportedCssVisitor2.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.isChildless ? null : new A._ImportedCssVisitor_visitCssAtRule_closure2();
      this._async_evaluate0$_visitor._async_evaluate0$_addChild$2$through(node, t1);
    },
    visitCssComment$1(node) {
      return this._async_evaluate0$_visitor._async_evaluate0$_addChild$1(node);
    },
    visitCssDeclaration$1(node) {
    },
    visitCssImport$1(node) {
      var t2,
        _s13_ = "_endOfImports",
        t1 = this._async_evaluate0$_visitor;
      if (t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__parent, "__parent") !== t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__root, "_root"))
        t1._async_evaluate0$_addChild$1(node);
      else if (t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__endOfImports, _s13_) === J.get$length$asx(t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__root, "_root").children._collection$_source)) {
        t1._async_evaluate0$_addChild$1(node);
        t1._async_evaluate0$__endOfImports = t1._async_evaluate0$_assertInModule$2(t1._async_evaluate0$__endOfImports, _s13_) + 1;
      } else {
        t2 = t1._async_evaluate0$_outOfOrderImports;
        (t2 == null ? t1._async_evaluate0$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport_2) : t2).push(node);
      }
    },
    visitCssKeyframeBlock$1(node) {
    },
    visitCssMediaRule$1(node) {
      var t1 = this._async_evaluate0$_visitor,
        mediaQueries = t1._async_evaluate0$_mediaQueries;
      t1._async_evaluate0$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssMediaRule_closure2(mediaQueries == null || t1._async_evaluate0$_mergeMediaQueries$2(mediaQueries, node.queries) != null));
    },
    visitCssStyleRule$1(node) {
      return this._async_evaluate0$_visitor._async_evaluate0$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssStyleRule_closure2());
    },
    visitCssStylesheet$1(node) {
      var t1, t2, t3;
      for (t1 = node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        (t3 == null ? t2._as(t3) : t3).accept$1(this);
      }
    },
    visitCssSupportsRule$1(node) {
      return this._async_evaluate0$_visitor._async_evaluate0$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssSupportsRule_closure2());
    }
  };
  A._ImportedCssVisitor_visitCssAtRule_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._ImportedCssVisitor_visitCssMediaRule_closure2.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule0))
        t1 = this.hasBeenMerged && node instanceof A.ModifiableCssMediaRule0;
      else
        t1 = true;
      return t1;
    },
    $signature: 8
  };
  A._ImportedCssVisitor_visitCssStyleRule_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._ImportedCssVisitor_visitCssSupportsRule_closure2.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluationContext2.prototype = {
    get$currentCallableSpan() {
      var callableNode, t1,
        _0_0 = this._async_evaluate0$_visitor._async_evaluate0$_callableNode;
      if (_0_0 != null) {
        callableNode = _0_0;
        t1 = true;
      } else {
        callableNode = null;
        t1 = false;
      }
      if (t1)
        return callableNode.get$span(callableNode);
      throw A.wrapException(A.StateError$(string$.No_Sasc));
    },
    warn$2(_, message, deprecation) {
      var t1 = this._async_evaluate0$_visitor,
        t2 = t1._async_evaluate0$_importSpan;
      if (t2 == null) {
        t2 = t1._async_evaluate0$_callableNode;
        t2 = t2 == null ? null : t2.get$span(t2);
      }
      t1._async_evaluate0$_warn$3(message, t2 == null ? this._async_evaluate0$_defaultWarnNodeWithSpan.span : t2, deprecation);
    },
    $isEvaluationContext0: 1
  };
  A.JSToDartAsyncFileImporter.prototype = {
    canonicalize$1(_, url) {
      return this.canonicalize$body$JSToDartAsyncFileImporter(0, url);
    },
    canonicalize$body$JSToDartAsyncFileImporter(_, url) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Uri),
        $async$returnValue, $async$self = this, result, t1, resultUrl;
      var $async$canonicalize$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (url.get$scheme() === "file") {
                $async$returnValue = $.$get$_filesystemImporter().canonicalize$1(0, url);
                // goto return
                $async$goto = 1;
                break;
              }
              result = A.wrapJSExceptions(new A.JSToDartAsyncFileImporter_canonicalize_closure($async$self, url));
              $async$goto = result != null && result instanceof self.Promise ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.promiseToFuture(type$.Promise._as(result), type$.nullable_Object), $async$canonicalize$1);
            case 5:
              // returning from await.
              result = $async$result;
            case 4:
              // join
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              t1 = self.URL;
              if (!(result instanceof t1))
                A.jsThrow(new self.Error(string$.The_fie));
              resultUrl = A.Uri_parse(J.toString$0$(type$.JSUrl._as(result)));
              if (resultUrl.get$scheme() !== "file")
                A.jsThrow(new self.Error(string$.The_fiu + url.toString$0(0) + '".'));
              $async$returnValue = $.$get$_filesystemImporter().canonicalize$1(0, resultUrl);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$canonicalize$1, $async$completer);
    },
    load$1(_, url) {
      return $.$get$_filesystemImporter().load$1(0, url);
    },
    isNonCanonicalScheme$1(scheme) {
      return scheme !== "file";
    }
  };
  A.JSToDartAsyncFileImporter_canonicalize_closure.prototype = {
    call$0() {
      return this.$this._findFileUrl.call$2(this.url.toString$0(0), {fromImport: A.fromImport0(), containingUrl: A.NullableExtension_andThen0(A.containingUrl(), A.utils1__dartToJSUrl$closure())});
    },
    $signature: 28
  };
  A.AsyncImportCache0.prototype = {
    canonicalize$4$baseImporter$baseUrl$forImport(_, url, baseImporter, baseUrl, forImport) {
      return this.canonicalize$body$AsyncImportCache0(0, url, baseImporter, baseUrl, forImport);
    },
    canonicalize$body$AsyncImportCache0(_, url, baseImporter, baseUrl, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2),
        $async$returnValue, $async$self = this, t1, relativeResult;
      var $async$canonicalize$4$baseImporter$baseUrl$forImport = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              if (A.isBrowser())
                t1 = (baseImporter == null || baseImporter instanceof A.NoOpImporter0) && $async$self._async_import_cache0$_importers.length === 0;
              else
                t1 = false;
              if (t1)
                throw A.wrapException(string$.Custom);
              $async$goto = baseImporter != null && url.get$scheme() === "" ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.putIfAbsentAsync0($async$self._async_import_cache0$_relativeCanonicalizeCache, new A._Record_4_baseImporter_baseUrl_forImport([url, baseImporter, baseUrl, forImport]), new A.AsyncImportCache_canonicalize_closure1($async$self, baseImporter, baseUrl, url, forImport), type$.Record_4_Uri_and_AsyncImporter_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport_2, type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2), $async$canonicalize$4$baseImporter$baseUrl$forImport);
            case 5:
              // returning from await.
              relativeResult = $async$result;
              if (relativeResult != null) {
                $async$returnValue = relativeResult;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // join
              $async$goto = 6;
              return A._asyncAwait(A.putIfAbsentAsync0($async$self._async_import_cache0$_canonicalizeCache, new A._Record_2_forImport(url, forImport), new A.AsyncImportCache_canonicalize_closure2($async$self, url, baseUrl, forImport), type$.Record_2_Uri_and_bool_forImport, type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2), $async$canonicalize$4$baseImporter$baseUrl$forImport);
            case 6:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$canonicalize$4$baseImporter$baseUrl$forImport, $async$completer);
    },
    _async_import_cache0$_canonicalize$4(importer, url, baseUrl, forImport) {
      return this._canonicalize$body$AsyncImportCache0(importer, url, baseUrl, forImport);
    },
    _canonicalize$body$AsyncImportCache0(importer, url, baseUrl, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2),
        $async$returnValue, $async$self = this, passContainingUrl, t1, result, canonicalize, $async$temp1;
      var $async$_async_import_cache0$_canonicalize$4 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              canonicalize = forImport ? new A.AsyncImportCache__canonicalize_closure1(importer, url) : new A.AsyncImportCache__canonicalize_closure2(importer, url);
              $async$goto = baseUrl != null ? 3 : 5;
              break;
            case 3:
              // then
              $async$temp1 = url.get$scheme() === "";
              if ($async$temp1)
                $async$result = $async$temp1;
              else {
                // goto then
                $async$goto = 6;
                break;
              }
              // goto join
              $async$goto = 7;
              break;
            case 6:
              // then
              $async$goto = 8;
              return A._asyncAwait(importer.isNonCanonicalScheme$1(url.get$scheme()), $async$_async_import_cache0$_canonicalize$4);
            case 8:
              // returning from await.
            case 7:
              // join
              passContainingUrl = $async$result;
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              passContainingUrl = false;
            case 4:
              // join
              t1 = passContainingUrl ? baseUrl : null;
              $async$goto = 9;
              return A._asyncAwait(A.withContainingUrl0(t1, canonicalize, type$.FutureOr_nullable_Uri), $async$_async_import_cache0$_canonicalize$4);
            case 9:
              // returning from await.
              result = $async$result;
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              $async$goto = result.get$scheme() === "" ? 10 : 12;
              break;
            case 10:
              // then
              A.WarnForDeprecation_warnForDeprecation0($async$self._async_import_cache0$_logger, B.Deprecation_E5x, "Importer " + importer.toString$0(0) + " canonicalized " + url.toString$0(0) + " to " + result.toString$0(0) + string$.x2e_Rela, null, null);
              // goto join
              $async$goto = 11;
              break;
            case 12:
              // else
              $async$goto = 13;
              return A._asyncAwait(importer.isNonCanonicalScheme$1(result.get$scheme()), $async$_async_import_cache0$_canonicalize$4);
            case 13:
              // returning from await.
              if ($async$result)
                throw A.wrapException("Importer " + importer.toString$0(0) + " canonicalized " + url.toString$0(0) + " to " + result.toString$0(0) + string$.x2c_whicu);
            case 11:
              // join
              $async$returnValue = new A._Record_3_originalUrl(importer, result, url);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_async_import_cache0$_canonicalize$4, $async$completer);
    },
    importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, quiet) {
      return this.importCanonical$body$AsyncImportCache0(importer, canonicalUrl, originalUrl, quiet);
    },
    importCanonical$3$originalUrl(importer, canonicalUrl, originalUrl) {
      return this.importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, false);
    },
    importCanonical$body$AsyncImportCache0(importer, canonicalUrl, originalUrl, quiet) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Stylesheet_2),
        $async$returnValue, $async$self = this;
      var $async$importCanonical$4$originalUrl$quiet = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              $async$goto = 3;
              return A._asyncAwait(A.putIfAbsentAsync0($async$self._async_import_cache0$_importCache, canonicalUrl, new A.AsyncImportCache_importCanonical_closure0($async$self, importer, canonicalUrl, originalUrl, quiet), type$.Uri, type$.nullable_Stylesheet_2), $async$importCanonical$4$originalUrl$quiet);
            case 3:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$importCanonical$4$originalUrl$quiet, $async$completer);
    },
    humanize$1(canonicalUrl) {
      var t2,
        t1 = this._async_import_cache0$_canonicalizeCache;
      t1 = A.IterableNullableExtension_whereNotNull(t1.get$values(t1), type$.Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2);
      t2 = t1.$ti;
      t2 = A.NullableExtension_andThen0(A.minBy(new A.MappedIterable(new A.WhereIterable(t1, new A.AsyncImportCache_humanize_closure3(canonicalUrl), t2._eval$1("WhereIterable<Iterable.E>")), new A.AsyncImportCache_humanize_closure4(), t2._eval$1("MappedIterable<Iterable.E,Uri>")), new A.AsyncImportCache_humanize_closure5()), new A.AsyncImportCache_humanize_closure6(canonicalUrl));
      return t2 == null ? canonicalUrl : t2;
    },
    sourceMapUrl$1(_, canonicalUrl) {
      var t1 = this._async_import_cache0$_resultsCache.$index(0, canonicalUrl);
      t1 = t1 == null ? null : t1.get$sourceMapUrl(t1);
      return t1 == null ? canonicalUrl : t1;
    }
  };
  A.AsyncImportCache_canonicalize_closure1.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.baseUrl,
        t2 = t1 == null ? null : t1.resolveUri$1(_this.url);
      if (t2 == null)
        t2 = _this.url;
      return _this.$this._async_import_cache0$_canonicalize$4(_this.baseImporter, t2, t1, _this.forImport);
    },
    $signature: 214
  };
  A.AsyncImportCache_canonicalize_closure2.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2),
        $async$returnValue, $async$self = this, t1, t2, t3, t4, t5, t6, _i, _0_0, result, t7;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.$this, t2 = t1._async_import_cache0$_importers, t3 = t2.length, t4 = $async$self.url, t5 = $async$self.baseUrl, t6 = $async$self.forImport, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2.length)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait(t1._async_import_cache0$_canonicalize$4(t2[_i], t4, t5, t6), $async$call$0);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                result = _0_0;
                t7 = true;
              } else {
                result = null;
                t7 = false;
              }
              if (t7) {
                $async$returnValue = result;
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = null;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 214
  };
  A.AsyncImportCache__canonicalize_closure1.prototype = {
    call$0() {
      var t1 = type$.nullable_Object;
      return A.runZoned(new A.AsyncImportCache__canonicalize__closure0(this.importer, this.resolved), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__inImportRule, true], t1, t1), type$.FutureOr_nullable_Uri);
    },
    $signature: 55
  };
  A.AsyncImportCache__canonicalize__closure0.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 55
  };
  A.AsyncImportCache__canonicalize_closure2.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 55
  };
  A.AsyncImportCache_importCanonical_closure0.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Stylesheet_2),
        $async$returnValue, $async$self = this, t2, t3, t4, t1, result;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.canonicalUrl;
              $async$goto = 3;
              return A._asyncAwait($async$self.importer.load$1(0, t1), $async$call$0);
            case 3:
              // returning from await.
              result = $async$result;
              if (result == null) {
                $async$returnValue = null;
                // goto return
                $async$goto = 1;
                break;
              }
              t2 = $async$self.$this;
              t2._async_import_cache0$_resultsCache.$indexSet(0, t1, result);
              t3 = result.contents;
              t4 = result.syntax;
              t1 = $async$self.originalUrl.resolveUri$1(t1);
              $async$returnValue = A.Stylesheet_Stylesheet$parse0(t3, t4, $async$self.quiet ? $.$get$Logger_quiet0() : t2._async_import_cache0$_logger, t1);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 379
  };
  A.AsyncImportCache_humanize_closure3.prototype = {
    call$1(result) {
      return J.$eq$(result._1, this.canonicalUrl);
    },
    $signature: 380
  };
  A.AsyncImportCache_humanize_closure4.prototype = {
    call$1(result) {
      return result._2;
    },
    $signature: 381
  };
  A.AsyncImportCache_humanize_closure5.prototype = {
    call$1(url) {
      return url.get$path(url).length;
    },
    $signature: 111
  };
  A.AsyncImportCache_humanize_closure6.prototype = {
    call$1(url) {
      var t1 = $.$get$url(),
        t2 = this.canonicalUrl;
      return url.resolve$1(A.ParsedPath_ParsedPath$parse(t2.get$path(t2), t1.style).get$basename());
    },
    $signature: 48
  };
  A.AtRootQueryParser0.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.AtRootQueryParser_parse_closure0(this));
    }
  };
  A.AtRootQueryParser_parse_closure0.prototype = {
    call$0() {
      var include, atRules,
        t1 = this.$this,
        t2 = t1.scanner;
      t2.expectChar$1(40);
      t1.whitespace$0();
      include = t1.scanIdentifier$1("with");
      if (!include)
        t1.expectIdentifier$2$name("without", '"with" or "without"');
      t1.whitespace$0();
      t2.expectChar$1(58);
      t1.whitespace$0();
      atRules = A.LinkedHashSet_LinkedHashSet$_empty(type$.String);
      do {
        atRules.add$1(0, t1.identifier$0().toLowerCase());
        t1.whitespace$0();
      } while (t1.lookingAtIdentifier$0());
      t2.expectChar$1(41);
      t2.expectDone$0();
      return new A.AtRootQuery0(include, atRules, atRules.contains$1(0, "all"), atRules.contains$1(0, "rule"));
    },
    $signature: 382
  };
  A.AtRootQuery0.prototype = {
    excludes$1(node) {
      var t1, _this = this;
      if (_this._at_root_query0$_all)
        return !_this.include;
      $label0$0: {
        if (node instanceof A.ModifiableCssStyleRule0) {
          t1 = _this._at_root_query0$_rule !== _this.include;
          break $label0$0;
        }
        if (node instanceof A.ModifiableCssMediaRule0) {
          t1 = _this.excludesName$1("media");
          break $label0$0;
        }
        if (node instanceof A.ModifiableCssSupportsRule0) {
          t1 = _this.excludesName$1("supports");
          break $label0$0;
        }
        if (node instanceof A.ModifiableCssAtRule0) {
          t1 = _this.excludesName$1(node.name.value.toLowerCase());
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    excludesName$1($name) {
      var t1 = this._at_root_query0$_all || this.names.contains$1(0, $name);
      return t1 !== this.include;
    }
  };
  A.AtRootRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitAtRootRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var buffer = new A.StringBuffer("@at-root "),
        t1 = this.query;
      if (t1 != null)
        buffer._contents = "@at-root " + (t1.toString$0(0) + " ");
      t1 = this.children;
      return buffer.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssAtRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssAtRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      var t1, t2;
      if (other instanceof A.ModifiableCssAtRule0) {
        t1 = this.name;
        t2 = other.name;
        t1 = t1.$ti._is(t2) && J.$eq$(t2.value, t1.value) && J.$eq$(this.value, other.value) && this.isChildless === other.isChildless;
      } else
        t1 = false;
      return t1;
    },
    copyWithoutChildren$0() {
      var _this = this;
      return A.ModifiableCssAtRule$0(_this.name, _this.span, _this.isChildless, _this.value);
    },
    addChild$1(child) {
      this.super$ModifiableCssParentNode$addChild0(child);
    },
    get$isChildless() {
      return this.isChildless;
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.AtRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitAtRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var children,
        t1 = "@" + this.name.toString$0(0),
        buffer = new A.StringBuffer(t1),
        t2 = this.value;
      if (t2 != null)
        buffer._contents = t1 + (" " + t2.toString$0(0));
      children = this.children;
      return children == null ? buffer.toString$0(0) + ";" : buffer.toString$0(0) + " {" + B.JSArray_methods.join$1(children, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.AttributeSelector0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitAttributeSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A.AttributeSelector0 && other.name.$eq(0, _this.name) && other.op == _this.op && other.value == _this.value && other.modifier == _this.modifier;
    },
    get$hashCode(_) {
      var _this = this,
        t1 = _this.name;
      return (B.JSString_methods.get$hashCode(t1.name) ^ J.get$hashCode$(t1.namespace) ^ J.get$hashCode$(_this.op) ^ J.get$hashCode$(_this.value) ^ J.get$hashCode$(_this.modifier)) >>> 0;
    }
  };
  A.AttributeOperator0.prototype = {
    _enumToString$0() {
      return "AttributeOperator." + this._name;
    },
    toString$0(_) {
      return this._attribute0$_text;
    }
  };
  A.BinaryOperationExpression0.prototype = {
    get$span(_) {
      var right,
        left = this.left;
      for (; left instanceof A.BinaryOperationExpression0;)
        left = left.left;
      right = this.right;
      for (; right instanceof A.BinaryOperationExpression0;)
        right = right.right;
      return left.get$span(left).expand$1(0, right.get$span(right));
    },
    get$operatorSpan() {
      var t3, t4, _this = this,
        t1 = _this.left,
        t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t3 = _this.right;
      t4 = t3.get$span(t3);
      if (t2 === t4.get$file(t4)) {
        t2 = t1.get$span(t1);
        t2 = t2.get$end(t2);
        t4 = t3.get$span(t3);
        t4 = t2.offset < t4.get$start(t4).offset;
        t2 = t4;
      } else
        t2 = false;
      if (t2) {
        t2 = t1.get$span(t1);
        t2 = t2.get$file(t2);
        t1 = t1.get$span(t1);
        t1 = t1.get$end(t1);
        t3 = t3.get$span(t3);
        t3 = A.SpanExtensions_trimRight0(A.SpanExtensions_trimLeft0(t2.span$2(0, t1.offset, t3.get$start(t3).offset)));
        t1 = t3;
      } else
        t1 = _this.get$span(_this);
      return t1;
    },
    accept$1$1(visitor) {
      return visitor.visitBinaryOperationExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var precedence, t1, t2, right, operator, t3, _this = this,
        _0_0 = _this.left;
      $label0$0: {
        if (_0_0 instanceof A.BinaryOperationExpression0) {
          precedence = _0_0.operator.precedence;
          t1 = true;
        } else {
          precedence = null;
          t1 = false;
        }
        if (t1) {
          t1 = precedence < _this.operator.precedence;
          break $label0$0;
        }
        if (_0_0 instanceof A.ListExpression0 && !_0_0.hasBrackets && _0_0.contents.length >= 2) {
          t1 = true;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      t2 = t1 ? "" + A.Primitives_stringFromCharCode(40) : "";
      t2 += _0_0.toString$0(0);
      t1 = t1 ? t2 + A.Primitives_stringFromCharCode(41) : t2;
      t2 = _this.operator;
      t1 = t1 + A.Primitives_stringFromCharCode(32) + t2.operator + A.Primitives_stringFromCharCode(32);
      right = _this.right;
      $label1$1: {
        if (right instanceof A.BinaryOperationExpression0) {
          operator = right.operator;
          t3 = true;
        } else {
          operator = null;
          t3 = false;
        }
        if (t3) {
          if (operator.precedence <= t2.precedence) {
            t3 = !(operator === t2 && operator.isAssociative);
            t2 = t3;
          } else
            t2 = false;
          break $label1$1;
        }
        if (right instanceof A.ListExpression0 && !right.hasBrackets && right.contents.length >= 2) {
          t2 = true;
          break $label1$1;
        }
        t2 = false;
        break $label1$1;
      }
      if (t2)
        t1 += A.Primitives_stringFromCharCode(40);
      t1 += right.toString$0(0);
      if (t2)
        t1 += A.Primitives_stringFromCharCode(41);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isExpression0: 1,
    $isAstNode0: 1
  };
  A.BinaryOperator0.prototype = {
    _enumToString$0() {
      return "BinaryOperator." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.BooleanExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitBooleanExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return String(this.value);
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.booleanClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassBoolean", new A.booleanClass__closure()));
      A.JSClassExtension_injectSuperclass(t1._as(B.SassBoolean_true0.constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.booleanClass__closure.prototype = {
    call$2($self, _) {
      A.jsThrow(new self.Error("new sass.SassBoolean() isn't allowed.\nUse sass.sassTrue or sass.sassFalse instead."));
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 215
  };
  A.legacyBooleanClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.types.Boolean", new A.legacyBooleanClass__closure()));
      J.get$$prototype$x(jsClass).getValue = A.allowInteropCaptureThisNamed("getValue", new A.legacyBooleanClass__closure0());
      jsClass.TRUE = B.SassBoolean_true0;
      jsClass.FALSE = B.SassBoolean_false0;
      A.JSClassExtension_injectSuperclass(t1._as(B.SassBoolean_true0.constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.legacyBooleanClass__closure.prototype = {
    call$2(_, __) {
      throw A.wrapException("new sass.types.Boolean() isn't allowed.\nUse sass.types.Boolean.TRUE or sass.types.Boolean.FALSE instead.");
    },
    call$1(_) {
      return this.call$2(_, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 216
  };
  A.legacyBooleanClass__closure0.prototype = {
    call$1($self) {
      return $self === B.SassBoolean_true0;
    },
    $signature: 77
  };
  A.SassBoolean0.prototype = {
    get$isTruthy() {
      return this.value;
    },
    accept$1$1(visitor) {
      return visitor._serialize0$_buffer.write$1(0, String(this.value));
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertBoolean$1($name) {
      return this;
    },
    unaryNot$0() {
      return this.value ? B.SassBoolean_false0 : B.SassBoolean_true0;
    }
  };
  A.Box0.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return this.$ti._is(other) && other._box0$_inner === this._box0$_inner;
    },
    get$hashCode(_) {
      return A.Primitives_objectHashCode(this._box0$_inner);
    }
  };
  A.ModifiableBox0.prototype = {};
  A.BuiltInCallable0.prototype = {
    callbackFor$2(positional, names) {
      var t1, t2, fuzzyMatch, minMismatchDistance, _i, overload, t3, mismatchDistance, t4;
      for (t1 = this._built_in$_overloads, t2 = t1.length, fuzzyMatch = null, minMismatchDistance = null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        overload = t1[_i];
        t3 = overload._0;
        if (t3.matches$2(positional, names))
          return overload;
        mismatchDistance = t3.$arguments.length - positional;
        if (minMismatchDistance != null) {
          t3 = Math.abs(mismatchDistance);
          t4 = Math.abs(minMismatchDistance);
          if (t3 > t4)
            continue;
          if (t3 === t4 && mismatchDistance < 0)
            continue;
        }
        minMismatchDistance = mismatchDistance;
        fuzzyMatch = overload;
      }
      if (fuzzyMatch != null)
        return fuzzyMatch;
      throw A.wrapException(A.StateError$("BuiltInCallable " + this.name + " may not have empty overloads."));
    },
    withName$1($name) {
      return new A.BuiltInCallable0($name, this._built_in$_overloads, this.acceptsContent);
    },
    $isAsyncCallable0: 1,
    $isAsyncBuiltInCallable0: 1,
    $isCallable: 1,
    get$name(receiver) {
      return this.name;
    },
    get$acceptsContent() {
      return this.acceptsContent;
    }
  };
  A.BuiltInCallable$mixin_closure0.prototype = {
    call$1($arguments) {
      this.callback.call$1($arguments);
      return B.C__SassNull0;
    },
    $signature: 5
  };
  A.BuiltInModule0.prototype = {
    get$upstream() {
      return B.List_empty18;
    },
    get$variableNodes() {
      return B.Map_empty12;
    },
    get$extensionStore() {
      return B.C_EmptyExtensionStore0;
    },
    get$css(_) {
      return new A.CssStylesheet0(B.List_empty16, A.SourceFile$decoded(B.List_empty4, this.url).span$2(0, 0, 0));
    },
    get$preModuleComments() {
      return B.Map_empty11;
    },
    get$transitivelyContainsCss() {
      return false;
    },
    get$transitivelyContainsExtensions() {
      return false;
    },
    setVariable$3($name, value, nodeWithSpan) {
      if (!this.variables.containsKey$1($name))
        throw A.wrapException(A.SassScriptException$0("Undefined variable.", null));
      throw A.wrapException(A.SassScriptException$0("Cannot modify built-in variable.", null));
    },
    variableIdentity$1($name) {
      return this;
    },
    cloneCss$0() {
      return this;
    },
    $isModule1: 1,
    get$url(receiver) {
      return this.url;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    },
    get$variables() {
      return this.variables;
    }
  };
  A.calculationClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassCalculation", new A.calculationClass__closure())),
        t2 = type$.String,
        t3 = type$.Function;
      A.LinkedHashMap_LinkedHashMap$_literal(["calc", new A.calculationClass__closure0(), "min", new A.calculationClass__closure1(), "max", new A.calculationClass__closure2(), "clamp", new A.calculationClass__closure3()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineStaticMethod(jsClass));
      A.LinkedHashMap_LinkedHashMap$_literal(["assertCalculation", new A.calculationClass__closure4()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineMethod(jsClass));
      A.LinkedHashMap_LinkedHashMap$_literal(["arguments", new A.calculationClass__closure5()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      A.JSClassExtension_injectSuperclass(t1._as(new A.SassCalculation0("calc", A.List_List$unmodifiable(A._setArrayType([A.SassNumber_SassNumber0(1, null)], type$.JSArray_Object), type$.Object)).constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.calculationClass__closure.prototype = {
    call$2($self, _) {
      A.jsThrow0(new self.Error("new sass.SassCalculation() isn't allowed"));
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 215
  };
  A.calculationClass__closure0.prototype = {
    call$1(argument) {
      A._assertCalculationValue(argument);
      return new A.SassCalculation0("calc", A.List_List$unmodifiable(A._setArrayType([argument], type$.JSArray_Object), type$.Object));
    },
    $signature: 125
  };
  A.calculationClass__closure1.prototype = {
    call$1($arguments) {
      var t1 = self.immutable.isOrderedMap($arguments) ? J.toArray$0$x(type$.ImmutableList_2._as($arguments)) : type$.List_dynamic._as($arguments),
        t2 = type$.Object,
        argList = J.cast$1$0$ax(t1, t2);
      argList.forEach$1(argList, A.calculation1___assertCalculationValue$closure());
      return new A.SassCalculation0("min", A.List_List$unmodifiable(argList, t2));
    },
    $signature: 125
  };
  A.calculationClass__closure2.prototype = {
    call$1($arguments) {
      var t1 = self.immutable.isOrderedMap($arguments) ? J.toArray$0$x(type$.ImmutableList_2._as($arguments)) : type$.List_dynamic._as($arguments),
        t2 = type$.Object,
        argList = J.cast$1$0$ax(t1, t2);
      argList.forEach$1(argList, A.calculation1___assertCalculationValue$closure());
      return new A.SassCalculation0("max", A.List_List$unmodifiable(argList, t2));
    },
    $signature: 125
  };
  A.calculationClass__closure3.prototype = {
    call$3(min, value, max) {
      var t1;
      if (!(value == null && !A._isValidClampArg(min)))
        t1 = max == null && !B.JSArray_methods.any$1([min, value], A.calculation1___isValidClampArg$closure());
      else
        t1 = true;
      if (t1)
        A.jsThrow0(new self.Error("Expected at least one SassString or CalculationInterpolation in `" + A.IterableNullableExtension_whereNotNull([min, value, max], type$.Object).toString$0(0) + "`"));
      t1 = type$.Object;
      A.IterableNullableExtension_whereNotNull([min, value, max], t1).forEach$1(0, A.calculation1___assertCalculationValue$closure());
      return new A.SassCalculation0("clamp", A.List_List$unmodifiable(A.IterableNullableExtension_whereNotNull([min, value, max], t1), t1));
    },
    call$1(min) {
      return this.call$3(min, null, null);
    },
    call$2(min, value) {
      return this.call$3(min, value, null);
    },
    "call*": "call$3",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null, null];
    },
    $signature: 387
  };
  A.calculationClass__closure4.prototype = {
    call$2($self, $name) {
      return $self;
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 388
  };
  A.calculationClass__closure5.prototype = {
    call$1($self) {
      return new self.immutable.List($self.$arguments);
    },
    $signature: 389
  };
  A.calculationOperationClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.CalculationOperation", new A.calculationOperationClass__closure())),
        t2 = type$.String,
        t3 = type$.Function;
      A.LinkedHashMap_LinkedHashMap$_literal(["equals", new A.calculationOperationClass__closure0(), "hashCode", new A.calculationOperationClass__closure1()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineMethod(jsClass));
      A.LinkedHashMap_LinkedHashMap$_literal(["operator", new A.calculationOperationClass__closure2(), "left", new A.calculationOperationClass__closure3(), "right", new A.calculationOperationClass__closure4()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      A.JSClassExtension_injectSuperclass(t1._as(A.SassCalculation_operateInternal0(B.CalculationOperator_IyK0, A.SassNumber_SassNumber0(1, null), A.SassNumber_SassNumber0(1, null), false, false).constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.calculationOperationClass__closure.prototype = {
    call$4($self, strOperator, left, right) {
      var operator = A.IterableExtension_firstWhereOrNull(B.List_cUt, new A.calculationOperationClass___closure(strOperator));
      if (operator == null)
        A.jsThrow0(new self.Error("Invalid operator: " + strOperator));
      A._assertCalculationValue(left);
      A._assertCalculationValue(right);
      return A.SassCalculation_operateInternal0(operator, left, right, false, false);
    },
    "call*": "call$4",
    $requiredArgCount: 4,
    $signature: 390
  };
  A.calculationOperationClass___closure.prototype = {
    call$1(value) {
      return value.operator === this.strOperator;
    },
    $signature: 391
  };
  A.calculationOperationClass__closure0.prototype = {
    call$2($self, other) {
      return $self.$eq(0, other);
    },
    $signature: 392
  };
  A.calculationOperationClass__closure1.prototype = {
    call$1($self) {
      return $self.get$hashCode($self);
    },
    $signature: 393
  };
  A.calculationOperationClass__closure2.prototype = {
    call$1($self) {
      return $self._calculation0$_operator.operator;
    },
    $signature: 394
  };
  A.calculationOperationClass__closure3.prototype = {
    call$1($self) {
      return $self._calculation0$_left;
    },
    $signature: 219
  };
  A.calculationOperationClass__closure4.prototype = {
    call$1($self) {
      return $self._calculation0$_right;
    },
    $signature: 219
  };
  A.calculationInterpolationClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.CalculationInterpolation", new A.calculationInterpolationClass__closure())),
        t2 = type$.String,
        t3 = type$.Function;
      A.LinkedHashMap_LinkedHashMap$_literal(["equals", new A.calculationInterpolationClass__closure0(), "hashCode", new A.calculationInterpolationClass__closure1()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineMethod(jsClass));
      A.LinkedHashMap_LinkedHashMap$_literal(["value", new A.calculationInterpolationClass__closure2()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      A.JSClassExtension_injectSuperclass(t1._as(new A.CalculationInterpolation("").constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.calculationInterpolationClass__closure.prototype = {
    call$2($self, value) {
      return new A.CalculationInterpolation(value);
    },
    $signature: 396
  };
  A.calculationInterpolationClass__closure0.prototype = {
    call$2($self, other) {
      return other instanceof A.CalculationInterpolation && $self._calculation0$_value === other._calculation0$_value;
    },
    $signature: 397
  };
  A.calculationInterpolationClass__closure1.prototype = {
    call$1($self) {
      return B.JSString_methods.get$hashCode($self._calculation0$_value);
    },
    $signature: 398
  };
  A.calculationInterpolationClass__closure2.prototype = {
    call$1($self) {
      return $self._calculation0$_value;
    },
    $signature: 399
  };
  A.SassCalculation0.prototype = {
    get$isSpecialNumber() {
      return true;
    },
    accept$1$1(visitor) {
      return visitor.visitCalculation$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertCalculation$1($name) {
      return this;
    },
    plus$1(other) {
      if (other instanceof A.SassString0)
        return this.super$Value$plus0(other);
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
    },
    minus$1(other) {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " - " + other.toString$0(0) + '".', null));
    },
    unaryPlus$0() {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "+' + this.toString$0(0) + '".', null));
    },
    unaryMinus$0() {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "-' + this.toString$0(0) + '".', null));
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassCalculation0 && this.name === other.name && B.C_ListEquality.equals$2(0, this.$arguments, other.$arguments);
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name) ^ B.C_ListEquality0.hash$1(this.$arguments);
    }
  };
  A.SassCalculation_sign_closure0.prototype = {
    call$0() {
      return type$.SassNumber_2._as(this._0_0)._number1$_value;
    },
    $signature: 92
  };
  A.SassCalculation_round_closure9.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 14
  };
  A.SassCalculation_round_closure10.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 28
  };
  A.SassCalculation_round_closure11.prototype = {
    call$0() {
      return this._0_2._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassCalculation_round_closure12.prototype = {
    call$0() {
      return this._0_0._2;
    },
    $signature: 28
  };
  A.SassCalculation_round_closure13.prototype = {
    call$0() {
      return this._0_5._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassCalculation_round_closure14.prototype = {
    call$0() {
      return type$.SassString_2._as(this._0_1._readFinal$0())._string0$_text;
    },
    $signature: 22
  };
  A.SassCalculation_round_closure15.prototype = {
    call$0() {
      return "nearest" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation_round_closure16.prototype = {
    call$0() {
      return "up" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation_round_closure17.prototype = {
    call$0() {
      return "down" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation_round_closure18.prototype = {
    call$0() {
      return "to-zero" === this._0_8._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure7.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 22
  };
  A.SassCalculation__roundWithStep_closure6.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 92
  };
  A.SassCalculation__roundWithStep_closure8.prototype = {
    call$0() {
      return "nearest" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure9.prototype = {
    call$0() {
      return "to-zero" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure10.prototype = {
    call$0() {
      return this._0_2._readFinal$0() > 0;
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure11.prototype = {
    call$0() {
      return "up" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__roundWithStep_closure12.prototype = {
    call$0() {
      return "down" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A.SassCalculation__simplify_closure3.prototype = {
    call$0() {
      return "calc" === this._0_0.name;
    },
    $signature: 1
  };
  A.SassCalculation__simplify_closure4.prototype = {
    call$0() {
      return type$.SassCalculation_2._as(this._0_0).$arguments;
    },
    $signature: 138
  };
  A.SassCalculation__simplify_closure5.prototype = {
    call$0() {
      return J.get$length$asx(this._0_12._readFinal$0()) === 1;
    },
    $signature: 1
  };
  A.SassCalculation__simplify_closure6.prototype = {
    call$0() {
      return J.$index$asx(this._0_12._readFinal$0(), 0);
    },
    $signature: 14
  };
  A.SassCalculation__verifyLength_closure0.prototype = {
    call$1(arg) {
      return arg instanceof A.SassString0;
    },
    $signature: 77
  };
  A.CalculationOperation0.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.CalculationOperation0 && this._calculation0$_operator === other._calculation0$_operator && J.$eq$(this._calculation0$_left, other._calculation0$_left) && J.$eq$(this._calculation0$_right, other._calculation0$_right);
    },
    get$hashCode(_) {
      return (A.Primitives_objectHashCode(this._calculation0$_operator) ^ J.get$hashCode$(this._calculation0$_left) ^ J.get$hashCode$(this._calculation0$_right)) >>> 0;
    },
    toString$0(_) {
      var parenthesized = A.serializeValue0(new A.SassCalculation0("", A._setArrayType([this], type$.JSArray_Object)), true, true);
      return B.JSString_methods.substring$2(parenthesized, 1, parenthesized.length - 1);
    }
  };
  A.CalculationOperator0.prototype = {
    _enumToString$0() {
      return "CalculationOperator." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.CalculationInterpolation.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.CalculationInterpolation && this._calculation0$_value === other._calculation0$_value;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this._calculation0$_value);
    },
    toString$0(_) {
      return this._calculation0$_value;
    }
  };
  A.CallableDeclaration0.prototype = {
    get$span(receiver) {
      return this.span;
    }
  };
  A.Chokidar0.prototype = {};
  A.ChokidarOptions0.prototype = {};
  A.ChokidarWatcher0.prototype = {};
  A.ClassSelector0.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ClassSelector0 && other.name === this.name;
    },
    accept$1$1(visitor) {
      return visitor.visitClassSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      return new A.ClassSelector0(this.name + suffix, this.span);
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    }
  };
  A._CloneCssVisitor0.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.isChildless,
        rule = A.ModifiableCssAtRule$0(node.name, node.span, t1, node.value);
      return t1 ? rule : this._clone_css$_visitChildren$2(rule, node);
    },
    visitCssComment$1(node) {
      return new A.ModifiableCssComment0(node.text, node.span);
    },
    visitCssDeclaration$1(node) {
      return A.ModifiableCssDeclaration$0(node.name, node.value, node.span, node.parsedAsCustomProperty, node.valueSpanForMap);
    },
    visitCssImport$1(node) {
      return new A.ModifiableCssImport0(node.url, node.modifiers, node.span);
    },
    visitCssKeyframeBlock$1(node) {
      return this._clone_css$_visitChildren$2(A.ModifiableCssKeyframeBlock$0(node.selector, node.span), node);
    },
    visitCssMediaRule$1(node) {
      return this._clone_css$_visitChildren$2(A.ModifiableCssMediaRule$0(node.queries, node.span), node);
    },
    visitCssStyleRule$1(node) {
      var newSelector, t1,
        _0_0 = this._clone_css$_oldToNewSelectors.$index(0, node._style_rule0$_selector._box0$_inner.value);
      if (_0_0 != null) {
        newSelector = _0_0;
        t1 = true;
      } else {
        newSelector = null;
        t1 = false;
      }
      if (t1)
        return this._clone_css$_visitChildren$2(A.ModifiableCssStyleRule$0(newSelector, node.span, node.originalSelector), node);
      else
        throw A.wrapException(A.StateError$(string$.The_Ex));
    },
    visitCssStylesheet$1(node) {
      return this._clone_css$_visitChildren$2(A.ModifiableCssStylesheet$0(node.get$span(node)), node);
    },
    visitCssSupportsRule$1(node) {
      return this._clone_css$_visitChildren$2(A.ModifiableCssSupportsRule$0(node.condition, node.span), node);
    },
    _clone_css$_visitChildren$1$2(newParent, oldParent) {
      var t1, t2, newChild;
      for (t1 = J.get$iterator$ax(oldParent.get$children(oldParent)); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        newChild = t2.accept$1(this);
        newChild.isGroupEnd = t2.get$isGroupEnd();
        newParent.addChild$1(newChild);
      }
      return newParent;
    },
    _clone_css$_visitChildren$2(newParent, oldParent) {
      return this._clone_css$_visitChildren$1$2(newParent, oldParent, type$.ModifiableCssParentNode_2);
    }
  };
  A.ColorExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitColorExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return A.serializeValue0(this.value, true, true);
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.global_closure32.prototype = {
    call$1($arguments) {
      return A._rgb0("rgb", $arguments);
    },
    $signature: 5
  };
  A.global_closure33.prototype = {
    call$1($arguments) {
      return A._rgb0("rgb", $arguments);
    },
    $signature: 5
  };
  A.global_closure34.prototype = {
    call$1($arguments) {
      return A._rgbTwoArg0("rgb", $arguments);
    },
    $signature: 5
  };
  A.global_closure35.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels0("rgb", A._setArrayType(["$red", "$green", "$blue"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString0 ? parsed : A._rgb0("rgb", type$.List_Value_2._as(parsed));
    },
    $signature: 5
  };
  A.global_closure36.prototype = {
    call$1($arguments) {
      return A._rgb0("rgba", $arguments);
    },
    $signature: 5
  };
  A.global_closure37.prototype = {
    call$1($arguments) {
      return A._rgb0("rgba", $arguments);
    },
    $signature: 5
  };
  A.global_closure38.prototype = {
    call$1($arguments) {
      return A._rgbTwoArg0("rgba", $arguments);
    },
    $signature: 5
  };
  A.global_closure39.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels0("rgba", A._setArrayType(["$red", "$green", "$blue"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString0 ? parsed : A._rgb0("rgba", type$.List_Value_2._as(parsed));
    },
    $signature: 5
  };
  A.global_closure40.prototype = {
    call$1($arguments) {
      var color, t2,
        t1 = J.getInterceptor$asx($arguments),
        weight = t1.$index($arguments, 1).assertNumber$1("weight");
      if (t1.$index($arguments, 0) instanceof A.SassNumber0 || t1.$index($arguments, 0).get$isSpecialNumber()) {
        if (weight._number1$_value !== 100 || !weight.hasUnit$1("%"))
          throw A.wrapException(string$.Only_oa);
        return A._functionString0("invert", t1.take$1($arguments, 1));
      }
      color = t1.$index($arguments, 0).assertColor$1("color");
      t1 = color.get$red(color);
      t2 = color.get$green(color);
      return A._mixColors0(color.changeRgb$3$blue$green$red(255 - color.get$blue(color), 255 - t2, 255 - t1), color, weight);
    },
    $signature: 5
  };
  A.global_closure41.prototype = {
    call$1($arguments) {
      return A._hsl0("hsl", $arguments);
    },
    $signature: 5
  };
  A.global_closure42.prototype = {
    call$1($arguments) {
      return A._hsl0("hsl", $arguments);
    },
    $signature: 5
  };
  A.global_closure43.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0).get$isVar() || t1.$index($arguments, 1).get$isVar())
        return A._functionString0("hsl", $arguments);
      else
        throw A.wrapException(A.SassScriptException$0("Missing argument $lightness.", null));
    },
    $signature: 17
  };
  A.global_closure44.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels0("hsl", A._setArrayType(["$hue", "$saturation", "$lightness"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString0 ? parsed : A._hsl0("hsl", type$.List_Value_2._as(parsed));
    },
    $signature: 5
  };
  A.global_closure45.prototype = {
    call$1($arguments) {
      return A._hsl0("hsla", $arguments);
    },
    $signature: 5
  };
  A.global_closure46.prototype = {
    call$1($arguments) {
      return A._hsl0("hsla", $arguments);
    },
    $signature: 5
  };
  A.global_closure47.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0).get$isVar() || t1.$index($arguments, 1).get$isVar())
        return A._functionString0("hsla", $arguments);
      else
        throw A.wrapException(A.SassScriptException$0("Missing argument $lightness.", null));
    },
    $signature: 17
  };
  A.global_closure48.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels0("hsla", A._setArrayType(["$hue", "$saturation", "$lightness"], type$.JSArray_String), J.get$first$ax($arguments));
      return parsed instanceof A.SassString0 ? parsed : A._hsl0("hsla", type$.List_Value_2._as(parsed));
    },
    $signature: 5
  };
  A.global_closure49.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber0 || t1.$index($arguments, 0).get$isSpecialNumber())
        return A._functionString0("grayscale", $arguments);
      return t1.$index($arguments, 0).assertColor$1("color").changeHsl$1$saturation(0);
    },
    $signature: 5
  };
  A.global_closure50.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        degrees = A._angleValue0(t1.$index($arguments, 1), "degrees");
      return color.changeHsl$1$hue(color.get$hue(color) + degrees);
    },
    $signature: 36
  };
  A.global_closure51.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$lightness(B.JSNumber_methods.clamp$2(color.get$lightness(color) + amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 36
  };
  A.global_closure52.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$lightness(B.JSNumber_methods.clamp$2(color.get$lightness(color) - amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 36
  };
  A.global_closure53.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber0 || t1.$index($arguments, 0).get$isSpecialNumber())
        return A._functionString0("saturate", $arguments);
      return new A.SassString0("saturate(" + A.serializeValue0(t1.$index($arguments, 0).assertNumber$1("amount"), false, true) + ")", false);
    },
    $signature: 17
  };
  A.global_closure54.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$saturation(B.JSNumber_methods.clamp$2(color.get$saturation(color) + amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 36
  };
  A.global_closure55.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        color = t1.$index($arguments, 0).assertColor$1("color"),
        amount = t1.$index($arguments, 1).assertNumber$1("amount");
      return color.changeHsl$1$saturation(B.JSNumber_methods.clamp$2(color.get$saturation(color) - amount.valueInRange$3(0, 100, "amount"), 0, 100));
    },
    $signature: 36
  };
  A.global_closure56.prototype = {
    call$1($arguments) {
      var argument = J.$index$asx($arguments, 0);
      if (argument instanceof A.SassString0 && !argument._string0$_hasQuotes && B.JSString_methods.contains$1(argument._string0$_text, $.$get$_microsoftFilterStart0()))
        return A._functionString0("alpha", $arguments);
      return A.SassNumber_SassNumber0(argument.assertColor$1("color")._color1$_alpha, null);
    },
    $signature: 5
  };
  A.global_closure57.prototype = {
    call$1($arguments) {
      var t1,
        argList = J.$index$asx($arguments, 0).get$asList();
      if (argList.length !== 0 && B.JSArray_methods.every$1(argList, new A.global__closure0()))
        return A._functionString0("alpha", $arguments);
      t1 = argList.length;
      if (t1 === 0)
        throw A.wrapException(A.SassScriptException$0("Missing argument $color.", null));
      else
        throw A.wrapException(A.SassScriptException$0("Only 1 argument allowed, but " + t1 + " were passed.", null));
    },
    $signature: 17
  };
  A.global__closure0.prototype = {
    call$1(argument) {
      return argument instanceof A.SassString0 && !argument._string0$_hasQuotes && B.JSString_methods.contains$1(argument._string0$_text, $.$get$_microsoftFilterStart0());
    },
    $signature: 54
  };
  A.global_closure58.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber0 || t1.$index($arguments, 0).get$isSpecialNumber())
        return A._functionString0("opacity", $arguments);
      return A.SassNumber_SassNumber0(t1.$index($arguments, 0).assertColor$1("color")._color1$_alpha, null);
    },
    $signature: 5
  };
  A.module_closure12.prototype = {
    call$1($arguments) {
      var result, t2, color,
        t1 = J.getInterceptor$asx($arguments),
        weight = t1.$index($arguments, 1).assertNumber$1("weight");
      if (t1.$index($arguments, 0) instanceof A.SassNumber0) {
        if (weight._number1$_value !== 100 || !weight.hasUnit$1("%"))
          throw A.wrapException(string$.Only_oa);
        result = A._functionString0("invert", t1.take$1($arguments, 1));
        t1 = A.S(t1.$index($arguments, 0));
        t2 = result.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, "Passing a number (" + t1 + string$.x29x20to_ci + t2, B.Deprecation_LT8);
        return result;
      }
      color = t1.$index($arguments, 0).assertColor$1("color");
      t1 = color.get$red(color);
      t2 = color.get$green(color);
      return A._mixColors0(color.changeRgb$3$blue$green$red(255 - color.get$blue(color), 255 - t2, 255 - t1), color, weight);
    },
    $signature: 5
  };
  A.module_closure13.prototype = {
    call$1($arguments) {
      var result, t2,
        t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber0) {
        result = A._functionString0("grayscale", t1.take$1($arguments, 1));
        t1 = A.S(t1.$index($arguments, 0));
        t2 = result.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, "Passing a number (" + t1 + string$.x29x20to_cg + t2, B.Deprecation_LT8);
        return result;
      }
      return t1.$index($arguments, 0).assertColor$1("color").changeHsl$1$saturation(0);
    },
    $signature: 5
  };
  A.module_closure14.prototype = {
    call$1($arguments) {
      return A._hwb0($arguments);
    },
    $signature: 5
  };
  A.module_closure15.prototype = {
    call$1($arguments) {
      var parsed = A._parseChannels0("hwb", A._setArrayType(["$hue", "$whiteness", "$blackness"], type$.JSArray_String), J.get$first$ax($arguments));
      if (parsed instanceof A.SassString0)
        throw A.wrapException(A.SassScriptException$0('Expected numeric channels, got "' + parsed.toString$0(0) + '".', null));
      else
        return A._hwb0(type$.List_Value_2._as(parsed));
    },
    $signature: 5
  };
  A.module_closure16.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$whiteness(t1), "%");
    },
    $signature: 12
  };
  A.module_closure17.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$blackness(t1), "%");
    },
    $signature: 12
  };
  A.module_closure18.prototype = {
    call$1($arguments) {
      var result, t1,
        argument = J.$index$asx($arguments, 0);
      if (argument instanceof A.SassString0 && !argument._string0$_hasQuotes && B.JSString_methods.contains$1(argument._string0$_text, $.$get$_microsoftFilterStart0())) {
        result = A._functionString0("alpha", $arguments);
        t1 = result.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, string$.Using_c + t1, B.Deprecation_LT8);
        return result;
      }
      return A.SassNumber_SassNumber0(argument.assertColor$1("color")._color1$_alpha, null);
    },
    $signature: 5
  };
  A.module_closure19.prototype = {
    call$1($arguments) {
      var result,
        t1 = J.getInterceptor$asx($arguments);
      if (B.JSArray_methods.every$1(t1.$index($arguments, 0).get$asList(), new A.module__closure4())) {
        result = A._functionString0("alpha", $arguments);
        t1 = result.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, string$.Using_c + t1, B.Deprecation_LT8);
        return result;
      }
      throw A.wrapException(A.SassScriptException$0("Only 1 argument allowed, but " + t1.get$length($arguments) + " were passed.", null));
    },
    $signature: 17
  };
  A.module__closure4.prototype = {
    call$1(argument) {
      return argument instanceof A.SassString0 && !argument._string0$_hasQuotes && B.JSString_methods.contains$1(argument._string0$_text, $.$get$_microsoftFilterStart0());
    },
    $signature: 54
  };
  A.module_closure20.prototype = {
    call$1($arguments) {
      var result, t2,
        t1 = J.getInterceptor$asx($arguments);
      if (t1.$index($arguments, 0) instanceof A.SassNumber0) {
        result = A._functionString0("opacity", $arguments);
        t1 = A.S(t1.$index($arguments, 0));
        t2 = result.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, "Passing a number (" + t1 + string$.x20to_co + t2, B.Deprecation_LT8);
        return result;
      }
      return A.SassNumber_SassNumber0(t1.$index($arguments, 0).assertColor$1("color")._color1$_alpha, null);
    },
    $signature: 5
  };
  A._red_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$red(t1), null);
    },
    $signature: 12
  };
  A._green_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$green(t1), null);
    },
    $signature: 12
  };
  A._blue_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$blue(t1), null);
    },
    $signature: 12
  };
  A._mix_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A._mixColors0(t1.$index($arguments, 0).assertColor$1("color1"), t1.$index($arguments, 1).assertColor$1("color2"), t1.$index($arguments, 2).assertNumber$1("weight"));
    },
    $signature: 36
  };
  A._hue_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$hue(t1), "deg");
    },
    $signature: 12
  };
  A._saturation_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$saturation(t1), "%");
    },
    $signature: 12
  };
  A._lightness_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.get$first$ax($arguments).assertColor$1("color");
      return A.SassNumber_SassNumber0(t1.get$lightness(t1), "%");
    },
    $signature: 12
  };
  A._complement_closure0.prototype = {
    call$1($arguments) {
      var color = J.$index$asx($arguments, 0).assertColor$1("color");
      return color.changeHsl$1$hue(color.get$hue(color) + 180);
    },
    $signature: 36
  };
  A._adjust_closure0.prototype = {
    call$1($arguments) {
      return A._updateComponents0($arguments, true, false, false);
    },
    $signature: 36
  };
  A._scale_closure0.prototype = {
    call$1($arguments) {
      return A._updateComponents0($arguments, false, false, true);
    },
    $signature: 36
  };
  A._change_closure0.prototype = {
    call$1($arguments) {
      return A._updateComponents0($arguments, false, true, false);
    },
    $signature: 36
  };
  A._ieHexStr_closure0.prototype = {
    call$1($arguments) {
      var color = J.$index$asx($arguments, 0).assertColor$1("color"),
        t1 = new A._ieHexStr_closure_hexString0();
      return new A.SassString0("#" + A.S(t1.call$1(A.fuzzyRound0(color._color1$_alpha * 255))) + A.S(t1.call$1(color.get$red(color))) + A.S(t1.call$1(color.get$green(color))) + A.S(t1.call$1(color.get$blue(color))), false);
    },
    $signature: 17
  };
  A._ieHexStr_closure_hexString0.prototype = {
    call$1(component) {
      return B.JSString_methods.padLeft$2(B.JSInt_methods.toRadixString$1(component, 16), 2, "0").toUpperCase();
    },
    $signature: 223
  };
  A._updateComponents_getParam0.prototype = {
    call$5$assertPercent$checkPercent$checkUnitless($name, max, assertPercent, checkPercent, checkUnitless) {
      var t2, t3, t4, _this = this,
        t1 = _this.keywords.remove$1(0, $name),
        number = t1 == null ? null : t1.assertNumber$1($name);
      if (number == null)
        return null;
      t1 = _this.scale;
      t2 = !t1;
      if (t2 && checkUnitless)
        if (number.get$hasUnits()) {
          t3 = number.get$unitString();
          t4 = number.unitSuggestion$1($name);
          A.EvaluationContext_current0().warn$2(0, "$" + $name + ": Passing a number with unit " + t3 + string$.x20is_de + t4 + string$.x0a_Morex3a, B.Deprecation_0bn);
        }
      if (t2 && checkPercent)
        A._checkPercent0(number, $name);
      if (!t2 || assertPercent)
        number.assertUnit$2("%", $name);
      if (t1)
        max = 100;
      if (!t2 || assertPercent)
        t1 = number.valueInRange$3(_this.change ? 0 : -max, max, $name);
      else {
        t1 = _this.change ? 0 : -max;
        t1 = number.valueInRangeWithUnit$4(t1, max, $name, checkPercent ? "%" : "");
      }
      return t1;
    },
    call$2($name, max) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, false, false, false);
    },
    call$3$checkUnitless($name, max, checkUnitless) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, false, false, checkUnitless);
    },
    call$3$checkPercent($name, max, checkPercent) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, false, checkPercent, false);
    },
    call$3$assertPercent($name, max, assertPercent) {
      return this.call$5$assertPercent$checkPercent$checkUnitless($name, max, assertPercent, false, false);
    },
    $signature: 227
  };
  A._updateComponents_closure1.prototype = {
    call$1(hue) {
      return A._angleValue0(hue, "hue");
    },
    $signature: 116
  };
  A._updateComponents_closure2.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._updateComponents_updateValue0.prototype = {
    call$3(current, param, max) {
      var t1;
      if (param == null)
        return current;
      if (this.change)
        return param;
      if (this.adjust)
        return B.JSNumber_methods.clamp$2(current + param, 0, max);
      t1 = param > 0 ? max - current : current;
      return current + t1 * (param / 100);
    },
    $signature: 232
  };
  A._updateComponents_updateRgb0.prototype = {
    call$2(current, param) {
      return A.fuzzyRound0(this.updateValue.call$3(current, param, 255));
    },
    $signature: 238
  };
  A._functionString_closure0.prototype = {
    call$1(argument) {
      return A.serializeValue0(argument, false, true);
    },
    $signature: 225
  };
  A._removedColorFunction_closure0.prototype = {
    call$1($arguments) {
      var t1 = this.name,
        t2 = J.getInterceptor$asx($arguments),
        t3 = A.S(t2.$index($arguments, 0)),
        t4 = this.negative ? "-" : "";
      throw A.wrapException(A.SassScriptException$0("The function " + t1 + string$.x28__isn + t3 + ", $" + this.argument + ": " + t4 + A.S(t2.$index($arguments, 1)) + string$.x29x0a_Mor + t1, null));
    },
    $signature: 406
  };
  A._rgb_closure0.prototype = {
    call$1(alpha) {
      return A._percentageOrUnitless0(alpha.assertNumber$1("alpha"), 1, "alpha");
    },
    $signature: 116
  };
  A._hsl_closure0.prototype = {
    call$1(alpha) {
      return A._percentageOrUnitless0(alpha.assertNumber$1("alpha"), 1, "alpha");
    },
    $signature: 116
  };
  A._hwb_closure0.prototype = {
    call$1(alpha) {
      return A._percentageOrUnitless0(alpha.assertNumber$1("alpha"), 1, "alpha");
    },
    $signature: 116
  };
  A._parseChannels_closure2.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 31
  };
  A._parseChannels_closure3.prototype = {
    call$1(value) {
      return value.get$isVar();
    },
    $signature: 54
  };
  A._parseChannels_closure4.prototype = {
    call$0() {
      return type$.SassNumber_2._as(this._1_0).asSlash;
    },
    $signature: 407
  };
  A.colorClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassColor", new A.colorClass__closure()));
      J.get$$prototype$x(jsClass).change = A.allowInteropCaptureThisNamed("change", new A.colorClass__closure0());
      A.LinkedHashMap_LinkedHashMap$_literal(["red", new A.colorClass__closure1(), "green", new A.colorClass__closure2(), "blue", new A.colorClass__closure3(), "hue", new A.colorClass__closure4(), "saturation", new A.colorClass__closure5(), "lightness", new A.colorClass__closure6(), "whiteness", new A.colorClass__closure7(), "blackness", new A.colorClass__closure8(), "alpha", new A.colorClass__closure9()], type$.String, type$.Function).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      A.JSClassExtension_injectSuperclass(t1._as(A.SassColor$rgb0(0, 0, 0, 1).constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.colorClass__closure.prototype = {
    call$2($self, color) {
      var t2, t3, t4,
        t1 = J.getInterceptor$x(color);
      if (t1.get$red(color) != null) {
        t2 = t1.get$red(color);
        t2.toString;
        t2 = A.fuzzyRound0(t2);
        t3 = t1.get$green(color);
        t3.toString;
        t3 = A.fuzzyRound0(t3);
        t4 = t1.get$blue(color);
        t4.toString;
        t4 = A.fuzzyRound0(t4);
        t1 = t1.get$alpha(color);
        return A.SassColor$rgb0(t2, t3, t4, A._asBool($.$get$_isUndefined().call$1(t1)) ? 1 : t1);
      } else if (t1.get$saturation(color) != null) {
        t2 = t1.get$hue(color);
        t2.toString;
        t3 = t1.get$saturation(color);
        t3.toString;
        t4 = t1.get$lightness(color);
        t4.toString;
        t1 = t1.get$alpha(color);
        return A.SassColor$hsl(t2, t3, t4, A._asBool($.$get$_isUndefined().call$1(t1)) ? 1 : t1);
      } else {
        t2 = t1.get$hue(color);
        t2.toString;
        t3 = t1.get$whiteness(color);
        t3.toString;
        t4 = t1.get$blackness(color);
        t4.toString;
        t1 = t1.get$alpha(color);
        return A.SassColor_SassColor$hwb0(t2, t3, t4, A._asBool($.$get$_isUndefined().call$1(t1)) ? 1 : t1);
      }
    },
    $signature: 408
  };
  A.colorClass__closure0.prototype = {
    call$2($self, options) {
      var t2, t3, t4,
        t1 = J.getInterceptor$x(options);
      if (t1.get$whiteness(options) != null || t1.get$blackness(options) != null) {
        t2 = t1.get$hue(options);
        if (t2 == null)
          t2 = $self.get$hue($self);
        t3 = t1.get$whiteness(options);
        if (t3 == null)
          t3 = $self.get$whiteness($self);
        t4 = t1.get$blackness(options);
        if (t4 == null)
          t4 = $self.get$blackness($self);
        t1 = t1.get$alpha(options);
        return $self.changeHwb$4$alpha$blackness$hue$whiteness(t1 == null ? $self._color1$_alpha : t1, t4, t2, t3);
      } else if (t1.get$hue(options) != null || t1.get$saturation(options) != null || t1.get$lightness(options) != null) {
        t2 = t1.get$hue(options);
        if (t2 == null)
          t2 = $self.get$hue($self);
        t3 = t1.get$saturation(options);
        if (t3 == null)
          t3 = $self.get$saturation($self);
        t4 = t1.get$lightness(options);
        if (t4 == null)
          t4 = $self.get$lightness($self);
        t1 = t1.get$alpha(options);
        return $self.changeHsl$4$alpha$hue$lightness$saturation(t1 == null ? $self._color1$_alpha : t1, t2, t4, t3);
      } else if (t1.get$red(options) != null || t1.get$green(options) != null || t1.get$blue(options) != null) {
        t2 = A.NullableExtension_andThen0(t1.get$red(options), A.number2__fuzzyRound$closure());
        if (t2 == null)
          t2 = $self.get$red($self);
        t3 = A.NullableExtension_andThen0(t1.get$green(options), A.number2__fuzzyRound$closure());
        if (t3 == null)
          t3 = $self.get$green($self);
        t4 = A.NullableExtension_andThen0(t1.get$blue(options), A.number2__fuzzyRound$closure());
        if (t4 == null)
          t4 = $self.get$blue($self);
        t1 = t1.get$alpha(options);
        return $self.changeRgb$4$alpha$blue$green$red(t1 == null ? $self._color1$_alpha : t1, t4, t3, t2);
      } else {
        t1 = t1.get$alpha(options);
        return $self.changeAlpha$1(t1 == null ? $self._color1$_alpha : t1);
      }
    },
    $signature: 409
  };
  A.colorClass__closure1.prototype = {
    call$1($self) {
      return $self.get$red($self);
    },
    $signature: 131
  };
  A.colorClass__closure2.prototype = {
    call$1($self) {
      return $self.get$green($self);
    },
    $signature: 131
  };
  A.colorClass__closure3.prototype = {
    call$1($self) {
      return $self.get$blue($self);
    },
    $signature: 131
  };
  A.colorClass__closure4.prototype = {
    call$1($self) {
      return $self.get$hue($self);
    },
    $signature: 64
  };
  A.colorClass__closure5.prototype = {
    call$1($self) {
      return $self.get$saturation($self);
    },
    $signature: 64
  };
  A.colorClass__closure6.prototype = {
    call$1($self) {
      return $self.get$lightness($self);
    },
    $signature: 64
  };
  A.colorClass__closure7.prototype = {
    call$1($self) {
      return $self.get$whiteness($self);
    },
    $signature: 64
  };
  A.colorClass__closure8.prototype = {
    call$1($self) {
      return $self.get$blackness($self);
    },
    $signature: 64
  };
  A.colorClass__closure9.prototype = {
    call$1($self) {
      return $self._color1$_alpha;
    },
    $signature: 64
  };
  A._Channels.prototype = {};
  A._NodeSassColor.prototype = {};
  A.legacyColorClass_closure.prototype = {
    call$6(thisArg, redOrArgb, green, blue, alpha, dartValue) {
      var red, t1, t2, t3, t4;
      if (dartValue != null) {
        J.set$dartValue$x(thisArg, dartValue);
        return;
      }
      if (green == null || blue == null) {
        A._asInt(redOrArgb);
        alpha = B.JSInt_methods._shrOtherPositive$1(redOrArgb, 24) / 255;
        red = B.JSInt_methods.$mod(B.JSInt_methods._shrOtherPositive$1(redOrArgb, 16), 256);
        green = B.JSInt_methods.$mod(B.JSInt_methods._shrOtherPositive$1(redOrArgb, 8), 256);
        blue = B.JSInt_methods.$mod(redOrArgb, 256);
      } else {
        redOrArgb.toString;
        red = redOrArgb;
      }
      t1 = A.fuzzyRound0(B.JSNumber_methods.clamp$2(red, 0, 255));
      t2 = A.fuzzyRound0(B.JSNumber_methods.clamp$2(green, 0, 255));
      t3 = A.fuzzyRound0(B.JSNumber_methods.clamp$2(blue, 0, 255));
      t4 = alpha == null ? null : B.JSNumber_methods.clamp$2(alpha, 0, 1);
      J.set$dartValue$x(thisArg, A.SassColor$rgb0(t1, t2, t3, t4 == null ? 1 : t4));
    },
    call$2(thisArg, redOrArgb) {
      return this.call$6(thisArg, redOrArgb, null, null, null, null);
    },
    call$3(thisArg, redOrArgb, green) {
      return this.call$6(thisArg, redOrArgb, green, null, null, null);
    },
    call$4(thisArg, redOrArgb, green, blue) {
      return this.call$6(thisArg, redOrArgb, green, blue, null, null);
    },
    call$5(thisArg, redOrArgb, green, blue, alpha) {
      return this.call$6(thisArg, redOrArgb, green, blue, alpha, null);
    },
    "call*": "call$6",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null, null, null, null];
    },
    $signature: 412
  };
  A.legacyColorClass_closure0.prototype = {
    call$1(thisArg) {
      return J.get$red$x(J.get$dartValue$x(thisArg));
    },
    $signature: 133
  };
  A.legacyColorClass_closure1.prototype = {
    call$1(thisArg) {
      return J.get$green$x(J.get$dartValue$x(thisArg));
    },
    $signature: 133
  };
  A.legacyColorClass_closure2.prototype = {
    call$1(thisArg) {
      return J.get$blue$x(J.get$dartValue$x(thisArg));
    },
    $signature: 133
  };
  A.legacyColorClass_closure3.prototype = {
    call$1(thisArg) {
      return J.get$dartValue$x(thisArg)._color1$_alpha;
    },
    $signature: 414
  };
  A.legacyColorClass_closure4.prototype = {
    call$2(thisArg, value) {
      var t1 = J.getInterceptor$x(thisArg);
      t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$red(A.fuzzyRound0(B.JSNumber_methods.clamp$2(value, 0, 255))));
    },
    $signature: 107
  };
  A.legacyColorClass_closure5.prototype = {
    call$2(thisArg, value) {
      var t1 = J.getInterceptor$x(thisArg);
      t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$green(A.fuzzyRound0(B.JSNumber_methods.clamp$2(value, 0, 255))));
    },
    $signature: 107
  };
  A.legacyColorClass_closure6.prototype = {
    call$2(thisArg, value) {
      var t1 = J.getInterceptor$x(thisArg);
      t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$blue(A.fuzzyRound0(B.JSNumber_methods.clamp$2(value, 0, 255))));
    },
    $signature: 107
  };
  A.legacyColorClass_closure7.prototype = {
    call$2(thisArg, value) {
      var t1 = J.getInterceptor$x(thisArg);
      t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).changeRgb$1$alpha(B.JSNumber_methods.clamp$2(value, 0, 1)));
    },
    $signature: 107
  };
  A.SassColor0.prototype = {
    get$red(_) {
      var t1;
      if (this._color1$_red == null)
        this._color1$_hslToRgb$0();
      t1 = this._color1$_red;
      t1.toString;
      return t1;
    },
    get$green(_) {
      var t1;
      if (this._color1$_green == null)
        this._color1$_hslToRgb$0();
      t1 = this._color1$_green;
      t1.toString;
      return t1;
    },
    get$blue(_) {
      var t1;
      if (this._color1$_blue == null)
        this._color1$_hslToRgb$0();
      t1 = this._color1$_blue;
      t1.toString;
      return t1;
    },
    get$hue(_) {
      var t1;
      if (this._color1$_hue == null)
        this._color1$_rgbToHsl$0();
      t1 = this._color1$_hue;
      t1.toString;
      return t1;
    },
    get$saturation(_) {
      var t1;
      if (this._color1$_saturation == null)
        this._color1$_rgbToHsl$0();
      t1 = this._color1$_saturation;
      t1.toString;
      return t1;
    },
    get$lightness(_) {
      var t1;
      if (this._color1$_lightness == null)
        this._color1$_rgbToHsl$0();
      t1 = this._color1$_lightness;
      t1.toString;
      return t1;
    },
    get$whiteness(_) {
      var _this = this;
      return Math.min(Math.min(_this.get$red(_this), _this.get$green(_this)), _this.get$blue(_this)) / 255 * 100;
    },
    get$blackness(_) {
      var _this = this;
      return 100 - Math.max(Math.max(_this.get$red(_this), _this.get$green(_this)), _this.get$blue(_this)) / 255 * 100;
    },
    accept$1$1(visitor) {
      return visitor.visitColor$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertColor$1($name) {
      return this;
    },
    changeRgb$4$alpha$blue$green$red(alpha, blue, green, red) {
      var _this = this,
        t1 = red == null ? _this.get$red(_this) : red,
        t2 = green == null ? _this.get$green(_this) : green,
        t3 = blue == null ? _this.get$blue(_this) : blue;
      return A.SassColor$rgb0(t1, t2, t3, alpha == null ? _this._color1$_alpha : alpha);
    },
    changeRgb$3$blue$green$red(blue, green, red) {
      return this.changeRgb$4$alpha$blue$green$red(null, blue, green, red);
    },
    changeRgb$1$alpha(alpha) {
      return this.changeRgb$4$alpha$blue$green$red(alpha, null, null, null);
    },
    changeRgb$1$blue(blue) {
      return this.changeRgb$4$alpha$blue$green$red(null, blue, null, null);
    },
    changeRgb$1$green(green) {
      return this.changeRgb$4$alpha$blue$green$red(null, null, green, null);
    },
    changeRgb$1$red(red) {
      return this.changeRgb$4$alpha$blue$green$red(null, null, null, red);
    },
    changeHsl$4$alpha$hue$lightness$saturation(alpha, hue, lightness, saturation) {
      var _this = this,
        t1 = hue == null ? _this.get$hue(_this) : hue,
        t2 = saturation == null ? _this.get$saturation(_this) : saturation,
        t3 = lightness == null ? _this.get$lightness(_this) : lightness;
      return A.SassColor$hsl(t1, t2, t3, alpha == null ? _this._color1$_alpha : alpha);
    },
    changeHsl$1$saturation(saturation) {
      return this.changeHsl$4$alpha$hue$lightness$saturation(null, null, null, saturation);
    },
    changeHsl$1$lightness(lightness) {
      return this.changeHsl$4$alpha$hue$lightness$saturation(null, null, lightness, null);
    },
    changeHsl$1$hue(hue) {
      return this.changeHsl$4$alpha$hue$lightness$saturation(null, hue, null, null);
    },
    changeHwb$4$alpha$blackness$hue$whiteness(alpha, blackness, hue, whiteness) {
      var t1 = hue == null ? this.get$hue(this) : hue;
      return A.SassColor_SassColor$hwb0(t1, whiteness, blackness, alpha);
    },
    changeAlpha$1(alpha) {
      var _this = this;
      return new A.SassColor0(_this._color1$_red, _this._color1$_green, _this._color1$_blue, _this._color1$_hue, _this._color1$_saturation, _this._color1$_lightness, A.fuzzyAssertRange0(alpha, 0, 1, "alpha"), null);
    },
    plus$1(other) {
      if (!(other instanceof A.SassNumber0) && !(other instanceof A.SassColor0))
        return this.super$Value$plus0(other);
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
    },
    minus$1(other) {
      if (!(other instanceof A.SassNumber0) && !(other instanceof A.SassColor0))
        return this.super$Value$minus0(other);
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " - " + other.toString$0(0) + '".', null));
    },
    dividedBy$1(other) {
      if (!(other instanceof A.SassNumber0) && !(other instanceof A.SassColor0))
        return this.super$Value$dividedBy0(other);
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " / " + other.toString$0(0) + '".', null));
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A.SassColor0 && other.get$red(other) === _this.get$red(_this) && other.get$green(other) === _this.get$green(_this) && other.get$blue(other) === _this.get$blue(_this) && other._color1$_alpha === _this._color1$_alpha;
    },
    get$hashCode(_) {
      var _this = this;
      return B.JSInt_methods.get$hashCode(_this.get$red(_this)) ^ B.JSInt_methods.get$hashCode(_this.get$green(_this)) ^ B.JSInt_methods.get$hashCode(_this.get$blue(_this)) ^ B.JSNumber_methods.get$hashCode(_this._color1$_alpha);
    },
    _color1$_rgbToHsl$0() {
      var t2, lightness, _this = this,
        scaledRed = _this.get$red(_this) / 255,
        scaledGreen = _this.get$green(_this) / 255,
        scaledBlue = _this.get$blue(_this) / 255,
        max = Math.max(Math.max(scaledRed, scaledGreen), scaledBlue),
        min = Math.min(Math.min(scaledRed, scaledGreen), scaledBlue),
        delta = max - min,
        t1 = max === min;
      if (t1)
        _this._color1$_hue = 0;
      else if (max === scaledRed)
        _this._color1$_hue = B.JSNumber_methods.$mod(60 * (scaledGreen - scaledBlue) / delta, 360);
      else if (max === scaledGreen)
        _this._color1$_hue = B.JSNumber_methods.$mod(120 + 60 * (scaledBlue - scaledRed) / delta, 360);
      else if (max === scaledBlue)
        _this._color1$_hue = B.JSNumber_methods.$mod(240 + 60 * (scaledRed - scaledGreen) / delta, 360);
      t2 = max + min;
      lightness = 50 * t2;
      _this._color1$_lightness = lightness;
      if (t1)
        _this._color1$_saturation = 0;
      else {
        t1 = 100 * delta;
        if (lightness < 50)
          _this._color1$_saturation = t1 / t2;
        else
          _this._color1$_saturation = t1 / (2 - max - min);
      }
    },
    _color1$_hslToRgb$0() {
      var _this = this,
        scaledHue = _this.get$hue(_this) / 360,
        scaledSaturation = _this.get$saturation(_this) / 100,
        scaledLightness = _this.get$lightness(_this) / 100,
        m2 = scaledLightness <= 0.5 ? scaledLightness * (scaledSaturation + 1) : scaledLightness + scaledSaturation - scaledLightness * scaledSaturation,
        m1 = scaledLightness * 2 - m2;
      _this._color1$_red = A.fuzzyRound0(A.SassColor__hueToRgb0(m1, m2, scaledHue + 0.3333333333333333) * 255);
      _this._color1$_green = A.fuzzyRound0(A.SassColor__hueToRgb0(m1, m2, scaledHue) * 255);
      _this._color1$_blue = A.fuzzyRound0(A.SassColor__hueToRgb0(m1, m2, scaledHue - 0.3333333333333333) * 255);
    }
  };
  A.SassColor_SassColor$hwb_toRgb0.prototype = {
    call$1(hue) {
      return A.fuzzyRound0((A.SassColor__hueToRgb0(0, 1, hue) * this.factor + this._box_0.scaledWhiteness) * 255);
    },
    $signature: 210
  };
  A._ColorFormatEnum0.prototype = {
    toString$0(_) {
      return this._color1$_name;
    }
  };
  A.SpanColorFormat0.prototype = {};
  A.Combinator0.prototype = {
    _enumToString$0() {
      return "Combinator." + this._name;
    },
    toString$0(_) {
      return this._combinator0$_text;
    }
  };
  A.ModifiableCssComment0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssComment$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    $isCssComment0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.compileAsync_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.NodeCompileResult),
        $async$returnValue, $async$self = this, t5, t6, t7, t8, t9, t10, t11, result, t1, t2, t3, t4;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.options;
              t2 = t1 == null;
              t3 = t2 ? null : J.get$loadPaths$x(t1);
              t4 = t2 ? null : J.get$quietDeps$x(t1);
              if (t4 == null)
                t4 = false;
              t5 = A._parseOutputStyle0(t2 ? null : J.get$style$x(t1));
              t6 = t2 ? null : J.get$verbose$x(t1);
              if (t6 == null)
                t6 = false;
              t7 = t2 ? null : J.get$charset$x(t1);
              if (t7 == null)
                t7 = true;
              t8 = t2 ? null : J.get$sourceMap$x(t1);
              if (t8 == null)
                t8 = false;
              t9 = t2 ? null : J.get$logger$x(t1);
              t9 = new A.JSToDartLogger(t9, new A.StderrLogger0($async$self.color), $async$self.ascii);
              if (t2)
                t10 = null;
              else {
                t10 = J.get$importers$x(t1);
                t10 = t10 == null ? null : J.map$1$1$ax(t10, new A.compileAsync__closure(), type$.AsyncImporter);
              }
              t11 = A._parseFunctions0(t2 ? null : J.get$functions$x(t1), true);
              $async$goto = 3;
              return A._asyncAwait(A.compileAsync0($async$self.path, t7, null, t11, null, A.AsyncImportCache$(t10, t3, t9, null), null, null, t9, null, t4, t8, t5, null, true, t6), $async$call$0);
            case 3:
              // returning from await.
              result = $async$result;
              t1 = t2 ? null : J.get$sourceMapIncludeSources$x(t1);
              $async$returnValue = A._convertResult(result, t1 == null ? false : t1);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 230
  };
  A.compileAsync__closure.prototype = {
    call$1(importer) {
      return A._parseAsyncImporter(importer);
    },
    $signature: 231
  };
  A.compileStringAsync_closure.prototype = {
    call$0() {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.NodeCompileResult),
        $async$returnValue, $async$self = this, t7, t8, t9, t10, t11, t12, t13, t14, result, t1, t2, t3, t4, t5, t6;
      var $async$call$0 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = $async$self.options;
              t2 = t1 == null;
              t3 = A.parseSyntax(t2 ? null : J.get$syntax$x(t1));
              t4 = t2 ? null : A.NullableExtension_andThen0(J.get$url$x(t1), A.utils1__jsToDartUrl$closure());
              t5 = t2 ? null : J.get$loadPaths$x(t1);
              t6 = t2 ? null : J.get$quietDeps$x(t1);
              if (t6 == null)
                t6 = false;
              t7 = A._parseOutputStyle0(t2 ? null : J.get$style$x(t1));
              t8 = t2 ? null : J.get$verbose$x(t1);
              if (t8 == null)
                t8 = false;
              t9 = t2 ? null : J.get$charset$x(t1);
              if (t9 == null)
                t9 = true;
              t10 = t2 ? null : J.get$sourceMap$x(t1);
              if (t10 == null)
                t10 = false;
              t11 = t2 ? null : J.get$logger$x(t1);
              t11 = new A.JSToDartLogger(t11, new A.StderrLogger0($async$self.color), $async$self.ascii);
              if (t2)
                t12 = null;
              else {
                t12 = J.get$importers$x(t1);
                t12 = t12 == null ? null : J.map$1$1$ax(t12, new A.compileStringAsync__closure(), type$.AsyncImporter);
              }
              t13 = t2 ? null : A.NullableExtension_andThen0(J.get$importer$x(t1), new A.compileStringAsync__closure0());
              if (t13 == null)
                t13 = (t2 ? null : J.get$url$x(t1)) == null ? new A.NoOpImporter0() : null;
              t14 = A._parseFunctions0(t2 ? null : J.get$functions$x(t1), true);
              $async$goto = 3;
              return A._asyncAwait(A.compileStringAsync0($async$self.text, t9, t14, A.AsyncImportCache$(t12, t5, t11, null), t13, null, null, t11, null, t6, t10, t7, t3, t4, true, t8), $async$call$0);
            case 3:
              // returning from await.
              result = $async$result;
              t1 = t2 ? null : J.get$sourceMapIncludeSources$x(t1);
              $async$returnValue = A._convertResult(result, t1 == null ? false : t1);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$0, $async$completer);
    },
    $signature: 230
  };
  A.compileStringAsync__closure.prototype = {
    call$1(importer) {
      return A._parseAsyncImporter(importer);
    },
    $signature: 231
  };
  A.compileStringAsync__closure0.prototype = {
    call$1(importer) {
      return A._parseAsyncImporter(importer);
    },
    $signature: 418
  };
  A._wrapAsyncSassExceptions_closure.prototype = {
    call$1(error) {
      var t1;
      if (error instanceof A.SassException0)
        t1 = A.throwNodeException(error, this.ascii, this.color, null);
      else
        t1 = A.jsThrow(error == null ? type$.Object._as(error) : error);
      return t1;
    },
    $signature: 419
  };
  A._simplifyValue_closure.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 22
  };
  A._simplifyValue_closure0.prototype = {
    call$0() {
      return "calc" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A._simplifyValue_closure1.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 138
  };
  A._simplifyValue_closure2.prototype = {
    call$0() {
      return J.get$length$asx(this._0_4._readFinal$0());
    },
    $signature: 3
  };
  A._simplifyValue_closure3.prototype = {
    call$0() {
      return J.$index$asx(this._0_4._readFinal$0(), 0);
    },
    $signature: 14
  };
  A._simplifyValue_closure4.prototype = {
    call$0() {
      return "clamp" === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A._parseFunctions_closure0.prototype = {
    call$2(signature, callback) {
      var callable,
        t1 = this.result;
      if (!this.asynch) {
        callable = A._Cell$();
        callable._value = A.Callable_Callable$fromSignature(signature, new A._parseFunctions__closure2(callback, callable), true);
        t1.push(callable._readLocal$0());
      } else {
        callable = A._Cell$();
        callable._value = A.AsyncCallable_AsyncCallable$fromSignature(signature, new A._parseFunctions__closure3(callback, callable), true);
        t1.push(callable._readLocal$0());
      }
    },
    $signature: 135
  };
  A._parseFunctions__closure2.prototype = {
    call$1($arguments) {
      var t1, t2,
        _s42_ = string$.Invali,
        result = A.wrapJSExceptions(new A._parseFunctions___closure6(this.callback, $arguments));
      if (result instanceof A.Value0)
        return A._simplifyValue(result);
      t1 = result != null && result instanceof self.Promise;
      t2 = this.callable;
      if (t1)
        throw A.wrapException(_s42_ + J.get$name$x(t2.readLocal$0()) + '":\nPromises may only be returned for sass.compileAsync() and sass.compileStringAsync().');
      else
        throw A.wrapException(_s42_ + J.get$name$x(t2.readLocal$0()) + '": ' + A.S(result) + " is not a sass.Value.");
    },
    $signature: 5
  };
  A._parseFunctions___closure6.prototype = {
    call$0() {
      return type$.Function._as(this.callback).call$1(A.toJSArray(this.$arguments));
    },
    $signature: 58
  };
  A._parseFunctions__closure3.prototype = {
    call$1($arguments) {
      return this.$call$body$_parseFunctions__closure0($arguments);
    },
    $call$body$_parseFunctions__closure0($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, result;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              result = A.wrapJSExceptions(new A._parseFunctions___closure5($async$self.callback, $arguments));
              $async$goto = result != null && result instanceof self.Promise ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(A.promiseToFuture(type$.Promise._as(result), type$.Object), $async$call$1);
            case 5:
              // returning from await.
              result = $async$result;
            case 4:
              // join
              if (result instanceof A.Value0) {
                $async$returnValue = A._simplifyValue(result);
                // goto return
                $async$goto = 1;
                break;
              }
              throw A.wrapException(string$.Invali + J.get$name$x($async$self.callable.readLocal$0()) + '": ' + A.S(result) + " is not a sass.Value.");
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 99
  };
  A._parseFunctions___closure5.prototype = {
    call$0() {
      return type$.Function._as(this.callback).call$1(A.toJSArray(this.$arguments));
    },
    $signature: 58
  };
  A._compileStylesheet_closure1.prototype = {
    call$1(url) {
      return url === "" ? A.Uri_Uri$dataFromString(A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(this.stylesheet.span.file._decodedChars, 0, null), 0, null), B.C_Utf8Codec, null).get$_text() : this.importCache.sourceMapUrl$1(0, A.Uri_parse(url)).toString$0(0);
    },
    $signature: 7
  };
  A.CompileOptions.prototype = {};
  A.CompileStringOptions.prototype = {};
  A.NodeCompileResult.prototype = {};
  A.CompileResult0.prototype = {};
  A.ComplexSassNumber0.prototype = {
    get$numeratorUnits(_) {
      return this._complex0$_numeratorUnits;
    },
    get$denominatorUnits(_) {
      return this._complex0$_denominatorUnits;
    },
    get$hasUnits() {
      return true;
    },
    get$hasComplexUnits() {
      return true;
    },
    hasUnit$1(unit) {
      return false;
    },
    compatibleWithUnit$1(unit) {
      return false;
    },
    hasPossiblyCompatibleUnits$1(other) {
      throw A.wrapException(A.UnimplementedError$(string$.Comple));
    },
    withValue$1(value) {
      return new A.ComplexSassNumber0(this._complex0$_numeratorUnits, this._complex0$_denominatorUnits, value, null);
    },
    withSlash$2(numerator, denominator) {
      return new A.ComplexSassNumber0(this._complex0$_numeratorUnits, this._complex0$_denominatorUnits, this._number1$_value, new A._Record_2(numerator, denominator));
    }
  };
  A.ComplexSelector0.prototype = {
    get$specificity() {
      var result, _this = this,
        value = _this._complex$__ComplexSelector_specificity_FI;
      if (value === $) {
        result = B.JSArray_methods.fold$2(_this.components, 0, new A.ComplexSelector_specificity_closure0());
        _this._complex$__ComplexSelector_specificity_FI !== $ && A.throwUnnamedLateFieldADI();
        _this._complex$__ComplexSelector_specificity_FI = result;
        value = result;
      }
      return value;
    },
    get$singleCompound() {
      var _0_0, _0_4, selector, t1;
      if (this.leadingCombinators.length !== 0)
        return null;
      _0_0 = this.components;
      _0_4 = A._InitializedCell$(new A.ComplexSelector_singleCompound_closure0(_0_0));
      $label0$0: {
        if (_0_0.length === 1) {
          selector = _0_4._readFinal$0().selector;
          t1 = _0_4._readFinal$0().combinators.length <= 0;
        } else {
          selector = null;
          t1 = false;
        }
        if (t1) {
          t1 = selector;
          break $label0$0;
        }
        t1 = null;
        break $label0$0;
      }
      return t1;
    },
    accept$1$1(visitor) {
      return visitor.visitComplexSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    isSuperselector$1(other) {
      return this.leadingCombinators.length === 0 && other.leadingCombinators.length === 0 && A.complexIsSuperselector0(this.components, other.components);
    },
    withAdditionalCombinators$1(combinators) {
      var _0_0, _0_1, initial, last, t1, t2, _this = this, _null = null;
      if (combinators.length === 0)
        return _this;
      _0_0 = _this.components;
      _0_1 = A._InitializedCell$(new A.ComplexSelector_withAdditionalCombinators_closure0(_0_0));
      $label0$0: {
        if (_0_1._readFinal$0() >= 1) {
          initial = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
          last = _0_0[_0_1._readFinal$0() - 1];
          last = last;
          t1 = true;
        } else {
          last = _null;
          initial = last;
          t1 = false;
        }
        if (t1) {
          t1 = A.List_List$of(initial, true, type$.ComplexSelectorComponent_2);
          t1.push(last.withAdditionalCombinators$1(combinators));
          t2 = _this.lineBreak || false;
          t2 = A.ComplexSelector$0(_this.leadingCombinators, t1, _this.span, t2);
          t1 = t2;
          break $label0$0;
        }
        if (_0_1._readFinal$0() <= 0) {
          t1 = A.List_List$of(_this.leadingCombinators, true, type$.CssValue_Combinator_2);
          B.JSArray_methods.addAll$1(t1, combinators);
          t2 = _this.lineBreak || false;
          t2 = A.ComplexSelector$0(t1, B.List_empty13, _this.span, t2);
          t1 = t2;
          break $label0$0;
        }
        t1 = _null;
      }
      return t1;
    },
    concatenate$3$forceLineBreak(child, span, forceLineBreak) {
      var t2, _0_1, initial, last, t3, t4, _this = this,
        t1 = child.leadingCombinators,
        _0_0 = _this.components;
      if (t1.length === 0) {
        t1 = A.List_List$of(_0_0, true, type$.ComplexSelectorComponent_2);
        B.JSArray_methods.addAll$1(t1, child.components);
        t2 = _this.lineBreak || child.lineBreak || forceLineBreak;
        return A.ComplexSelector$0(_this.leadingCombinators, t1, span, t2);
      } else {
        _0_1 = A._InitializedCell$(new A.ComplexSelector_concatenate_closure0(_0_0));
        if (_0_1._readFinal$0() >= 1) {
          initial = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
          last = _0_0[_0_1._readFinal$0() - 1];
          last = last;
          t2 = true;
        } else {
          initial = null;
          last = null;
          t2 = false;
        }
        t3 = _this.leadingCombinators;
        t4 = child.components;
        if (t2) {
          t2 = A.List_List$of(initial, true, type$.ComplexSelectorComponent_2);
          t2.push(last.withAdditionalCombinators$1(t1));
          B.JSArray_methods.addAll$1(t2, t4);
          return A.ComplexSelector$0(t3, t2, span, _this.lineBreak || child.lineBreak || forceLineBreak);
        } else {
          t2 = A.List_List$of(t3, true, type$.CssValue_Combinator_2);
          B.JSArray_methods.addAll$1(t2, t1);
          return A.ComplexSelector$0(t2, t4, span, _this.lineBreak || child.lineBreak || forceLineBreak);
        }
      }
    },
    concatenate$2(child, span) {
      return this.concatenate$3$forceLineBreak(child, span, false);
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.leadingCombinators) ^ B.C_ListEquality0.hash$1(this.components);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ComplexSelector0 && B.C_ListEquality.equals$2(0, this.leadingCombinators, other.leadingCombinators) && B.C_ListEquality.equals$2(0, this.components, other.components);
    }
  };
  A.ComplexSelector_specificity_closure0.prototype = {
    call$2(sum, component) {
      return sum + component.selector.get$specificity();
    },
    $signature: 421
  };
  A.ComplexSelector_singleCompound_closure0.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 422
  };
  A.ComplexSelector_withAdditionalCombinators_closure0.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.ComplexSelector_concatenate_closure0.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.ComplexSelectorComponent0.prototype = {
    withAdditionalCombinators$1(combinators) {
      var t1, t2, _this = this;
      if (combinators.length === 0)
        t1 = _this;
      else {
        t1 = type$.CssValue_Combinator_2;
        t2 = A.List_List$of(_this.combinators, true, t1);
        B.JSArray_methods.addAll$1(t2, combinators);
        t1 = new A.ComplexSelectorComponent0(_this.selector, A.List_List$unmodifiable(t2, t1), _this.span);
      }
      return t1;
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.selector.components) ^ B.C_ListEquality0.hash$1(this.combinators);
    },
    $eq(_, other) {
      var t1;
      if (other == null)
        return false;
      if (other instanceof A.ComplexSelectorComponent0) {
        t1 = B.C_ListEquality.equals$2(0, this.selector.components, other.selector.components);
        t1 = t1 && B.C_ListEquality.equals$2(0, this.combinators, other.combinators);
      } else
        t1 = false;
      return t1;
    },
    toString$0(_) {
      var t1 = this.combinators;
      return A.serializeSelector0(this.selector, true) + new A.MappedListIterable(t1, new A.ComplexSelectorComponent_toString_closure0(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$1(0, "");
    }
  };
  A.ComplexSelectorComponent_toString_closure0.prototype = {
    call$1(combinator) {
      return " " + combinator.toString$0(0);
    },
    $signature: 423
  };
  A.CompoundSelector0.prototype = {
    get$specificity() {
      var result, _this = this,
        value = _this._compound$__CompoundSelector_specificity_FI;
      if (value === $) {
        result = B.JSArray_methods.fold$2(_this.components, 0, new A.CompoundSelector_specificity_closure0());
        _this._compound$__CompoundSelector_specificity_FI !== $ && A.throwUnnamedLateFieldADI();
        _this._compound$__CompoundSelector_specificity_FI = result;
        value = result;
      }
      return value;
    },
    accept$1$1(visitor) {
      return visitor.visitCompoundSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.components);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.CompoundSelector0 && B.C_ListEquality.equals$2(0, this.components, other.components);
    }
  };
  A.CompoundSelector_specificity_closure0.prototype = {
    call$2(sum, component) {
      return sum + component.get$specificity();
    },
    $signature: 424
  };
  A.Configuration0.prototype = {
    throughForward$1($forward) {
      var _0_0, prefix, t1, _1_0, shownVariables, _2_0, hiddenVariables,
        newValues = this._configuration0$_values;
      if (newValues.get$isEmpty(newValues))
        return B.Configuration_Map_empty_null0;
      _0_0 = $forward.prefix;
      if (_0_0 != null) {
        prefix = _0_0;
        t1 = true;
      } else {
        prefix = null;
        t1 = false;
      }
      if (t1)
        newValues = new A.UnprefixedMapView0(newValues, prefix, type$.UnprefixedMapView_ConfiguredValue_2);
      _1_0 = $forward.shownVariables;
      if (_1_0 != null) {
        shownVariables = _1_0;
        t1 = true;
      } else {
        shownVariables = null;
        t1 = false;
      }
      if (t1)
        newValues = new A.LimitedMapView0(newValues, shownVariables._base.intersection$1(new A.MapKeySet(newValues, type$.MapKeySet_nullable_Object)), type$.LimitedMapView_String_ConfiguredValue_2);
      else {
        _2_0 = $forward.hiddenVariables;
        if (_2_0 != null) {
          hiddenVariables = _2_0;
          t1 = true;
        } else {
          hiddenVariables = null;
          t1 = false;
        }
        if (t1) {
          t1 = hiddenVariables._base;
          t1 = t1.get$isNotEmpty(t1);
        } else
          t1 = false;
        if (t1)
          newValues = A.LimitedMapView$blocklist0(newValues, hiddenVariables, type$.String, type$.ConfiguredValue_2);
      }
      return this._configuration0$_withValues$1(newValues);
    },
    _configuration0$_withValues$1(values) {
      var t1 = this._configuration0$__originalConfiguration;
      return new A.Configuration0(values, t1 == null ? this : t1);
    },
    toString$0(_) {
      var t2, t3, $name, value,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = A.MapExtensions_get_pairs0(new A.UnmodifiableMapView(this._configuration0$_values, type$.UnmodifiableMapView_String_ConfiguredValue_2), type$.String, type$.ConfiguredValue_2), t2 = t2.get$iterator(t2); t2.moveNext$0();) {
        t3 = t2.get$current(t2);
        $name = t3._0;
        value = t3._1;
        t1.push("$" + $name + ": " + value.toString$0(0));
      }
      return "(" + B.JSArray_methods.join$1(t1, ",") + ")";
    }
  };
  A.ExplicitConfiguration0.prototype = {
    _configuration0$_withValues$1(values) {
      var t1 = this._configuration0$__originalConfiguration;
      if (t1 == null)
        t1 = this;
      return new A.ExplicitConfiguration0(this.nodeWithSpan, values, t1);
    }
  };
  A.ConfiguredValue0.prototype = {
    toString$0(_) {
      return A.serializeValue0(this.value, true, true);
    }
  };
  A.ConfiguredVariable0.prototype = {
    toString$0(_) {
      var t1 = this.expression.toString$0(0),
        t2 = this.isGuarded ? " !default" : "";
      return "$" + this.name + ": " + t1 + t2;
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ContentBlock0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitContentBlock$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2,
        t1 = this.$arguments;
      t1 = t1.$arguments.length === 0 && t1.restArgument == null ? "" : " using (" + t1.toString$0(0) + ")";
      t2 = this.children;
      return t1 + (" {" + (t2 && B.JSArray_methods).join$1(t2, " ") + "}");
    }
  };
  A.ContentRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitContentRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.$arguments;
      return t1.get$isEmpty(t1) ? "@content;" : "@content(" + t1.toString$0(0) + ");";
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._disallowedFunctionNames_closure0.prototype = {
    call$1($function) {
      return $function.name;
    },
    $signature: 425
  };
  A.CssParser0.prototype = {
    get$plainCss() {
      return true;
    },
    silentComment$0() {
      var t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      this.super$Parser$silentComment0();
      this.error$2(0, string$.Silent, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    atRule$2$root(child, root) {
      var $name, _0_0, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(64);
      $name = _this.interpolatedIdentifier$0();
      _this.whitespace$0();
      _0_0 = $name.get$asPlain();
      $label0$0: {
        if ("at-root" === _0_0 || "content" === _0_0 || "debug" === _0_0 || "each" === _0_0 || "error" === _0_0 || "extend" === _0_0 || "for" === _0_0 || "function" === _0_0 || "if" === _0_0 || "include" === _0_0 || "mixin" === _0_0 || "return" === _0_0 || "warn" === _0_0 || "while" === _0_0)
          _this._css$_forbiddenAtRoot$1(start);
        if ("import" === _0_0) {
          t1 = _this._css$_cssImportRule$1(start);
          break $label0$0;
        }
        if ("media" === _0_0) {
          t1 = _this.mediaRule$1(start);
          break $label0$0;
        }
        if ("-moz-document" === _0_0) {
          t1 = _this.mozDocumentRule$2(start, $name);
          break $label0$0;
        }
        if ("supports" === _0_0) {
          t1 = _this.supportsRule$1(start);
          break $label0$0;
        }
        t1 = _this.unknownAtRule$2(start, $name);
        break $label0$0;
      }
      return t1;
    },
    _css$_forbiddenAtRoot$1(start) {
      this.almostAnyValue$0();
      this.error$2(0, "This at-rule isn't allowed in plain CSS.", this.scanner.spanFrom$1(start));
    },
    _css$_cssImportRule$1(start) {
      var t2, urlSpan, modifiers, _this = this,
        t1 = _this.scanner,
        urlStart = new A._SpanScannerState(t1, t1._string_scanner$_position),
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (117 === _0_0 || 85 === _0_0) {
          t2 = _this.dynamicUrl$0();
          break $label0$0;
        }
        t2 = new A.StringExpression0(_this.interpolatedString$0().asInterpolation$1$static(true), false);
        break $label0$0;
      }
      urlSpan = t1.spanFrom$1(urlStart);
      _this.whitespace$0();
      modifiers = _this.tryImportModifiers$0();
      _this.expectStatementSeparator$1("@import rule");
      t2 = A._setArrayType([new A.StaticImport0(A.Interpolation$0(A._setArrayType([t2], type$.JSArray_Object), urlSpan), modifiers, t1.spanFrom$1(urlStart))], type$.JSArray_Import_2);
      t1 = t1.spanFrom$1(start);
      return new A.ImportRule0(A.List_List$unmodifiable(t2, type$.Import_2), t1);
    },
    parentheses$0() {
      var expression,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expectChar$1(40);
      this.whitespace$0();
      expression = this.expressionUntilComma$0();
      t1.expectChar$1(41);
      return new A.ParenthesizedExpression0(expression, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    identifierLike$0() {
      var specialFunction, t2, allowEmptySecondArg, $arguments, t3, t4, _this = this, _null = null,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        identifier = _this.interpolatedIdentifier$0(),
        plain = identifier.get$asPlain(),
        lower = plain.toLowerCase(),
        _0_0 = _this.trySpecialFunction$2(lower, start);
      if (_0_0 != null) {
        specialFunction = _0_0;
        t2 = true;
      } else {
        specialFunction = _null;
        t2 = false;
      }
      if (t2)
        return specialFunction;
      t2 = t1._string_scanner$_position;
      if (t1.scanChar$1(46))
        return _this.namespacedExpression$2(plain, start);
      if (!t1.scanChar$1(40))
        return new A.StringExpression0(identifier, false);
      allowEmptySecondArg = lower === "var";
      $arguments = A._setArrayType([], type$.JSArray_Expression_2);
      if (!t1.scanChar$1(41)) {
        do {
          _this.whitespace$0();
          if (allowEmptySecondArg && $arguments.length === 1 && t1.peekChar$0() === 41) {
            t3 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
            t4 = t3.offset;
            t4 = A._FileSpan$(t3.file, t4, t4);
            $arguments.push(new A.StringExpression0(A.Interpolation$0(A._setArrayType([""], type$.JSArray_Object), t4), false));
            break;
          }
          $arguments.push(_this.expressionUntilComma$1$singleEquals(true));
          _this.whitespace$0();
        } while (t1.scanChar$1(44));
        t1.expectChar$1(41);
      }
      if ($.$get$_disallowedFunctionNames0().contains$1(0, plain))
        _this.error$2(0, string$.This_f, t1.spanFrom$1(start));
      t2 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      t3 = type$.Expression_2;
      return new A.FunctionExpression0(_null, plain, new A.ArgumentInvocation0(A.List_List$unmodifiable($arguments, t3), A.ConstantMap_ConstantMap$from(B.Map_empty14, type$.String, t3), _null, _null, t2), t1.spanFrom$1(start));
    },
    namespacedExpression$2(namespace, start) {
      var expression = this.super$StylesheetParser$namespacedExpression0(namespace, start);
      this.error$2(0, string$.Modulen, expression.get$span(expression));
    }
  };
  A.DebugRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitDebugRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@debug " + this.expression.toString$0(0) + ";";
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssDeclaration0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssDeclaration$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.name.toString$0(0) + ": " + this.value.toString$0(0) + ";";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.Declaration0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitDeclaration$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t3, _0_0, children,
        buffer = new A.StringBuffer(""),
        t1 = this.name,
        t2 = "" + t1.toString$0(0);
      buffer._contents = t2;
      t2 = buffer._contents = t2 + A.Primitives_stringFromCharCode(58);
      t3 = this.value;
      if (t3 != null) {
        t1 = !B.JSString_methods.startsWith$1(t1.get$initialPlain(), "--") ? buffer._contents = t2 + A.Primitives_stringFromCharCode(32) : t2;
        buffer._contents = t1 + t3.toString$0(0);
      }
      _0_0 = this.children;
      if (_0_0 != null) {
        children = _0_0;
        t1 = true;
      } else {
        children = null;
        t1 = false;
      }
      if (t1)
        return buffer.toString$0(0) + " {" + (children && B.JSArray_methods).join$1(children, " ") + "}";
      else
        return buffer.toString$0(0) + ";";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsDeclaration0.prototype = {
    get$isCustomProperty() {
      var text, t1,
        _0_0 = this.name;
      $label0$0: {
        if (_0_0 instanceof A.StringExpression0)
          if (!_0_0.hasQuotes) {
            text = _0_0.text;
            t1 = true;
          } else {
            text = null;
            t1 = false;
          }
        else {
          text = null;
          t1 = false;
        }
        if (t1) {
          t1 = B.JSString_methods.startsWith$1(text.get$initialPlain(), "--");
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    toString$0(_) {
      return "(" + this.name.toString$0(0) + ": " + this.value.toString$0(0) + ")";
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Deprecation0.prototype = {
    _enumToString$0() {
      return "Deprecation." + this._name;
    },
    toString$0(_) {
      return this.id;
    }
  };
  A.DeprecationHandlingLogger0.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
      this._deprecation_handling$_inner.warn$4$deprecation$span$trace(0, message, deprecation, span, trace);
    },
    warn$3$span$trace($receiver, message, span, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, trace);
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    },
    warn$2$trace($receiver, message, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, trace);
    },
    warnForDeprecation$4$span$trace(deprecation, message, span, trace) {
      var _0_0, _0_1, _0_3, t1, t2, count, _this = this, _null = null;
      if (_this.fatalDeprecations.contains$1(0, deprecation)) {
        message += string$.x0a_This + deprecation.toString$0(0) + string$.x20depre;
        _0_0 = new A._Record_2(span, trace);
        _0_1 = A._InitializedCell$(new A.DeprecationHandlingLogger_warnForDeprecation_closure1(_0_0));
        _0_3 = A._InitializedCell$(new A.DeprecationHandlingLogger_warnForDeprecation_closure2(_0_0));
        $label0$0: {
          if (_0_1.readFinal$0() != null) {
            span = _0_1.readFinal$0();
            t1 = true;
          } else {
            span = _null;
            t1 = false;
          }
          if (t1)
            if (_0_3.readFinal$0() != null) {
              trace = _0_3.readFinal$0();
              t1 = true;
            } else {
              trace = _null;
              t1 = false;
            }
          else {
            trace = _null;
            t1 = false;
          }
          if (t1) {
            t1 = A.SassRuntimeException$0(message, span, trace, _null);
            break $label0$0;
          }
          if (_0_1.readFinal$0() != null) {
            span = _0_1.readFinal$0();
            t1 = true;
          } else {
            span = _null;
            t1 = false;
          }
          if (t1 && _0_3.readFinal$0() == null) {
            t1 = A.SassException$0(message, span, _null);
            break $label0$0;
          }
          t1 = A.SassScriptException$0(message, _null);
          break $label0$0;
        }
        throw A.wrapException(t1);
      }
      if (deprecation.isFuture && !_this.futureDeprecations.contains$1(0, deprecation))
        return;
      if (_this.limitRepetition) {
        t1 = _this._deprecation_handling$_warningCounts;
        t2 = t1.$index(0, deprecation);
        count = (t2 == null ? 0 : t2) + 1;
        t1.$indexSet(0, deprecation, count);
        if (count > 5)
          return;
      }
      _this._deprecation_handling$_inner.warn$4$deprecation$span$trace(0, message, true, span, trace);
    },
    debug$2(_, message, span) {
      return this._deprecation_handling$_inner.debug$2(0, message, span);
    },
    summarize$1$js(js) {
      var t2, total,
        t1 = this._deprecation_handling$_warningCounts;
      t1 = t1.get$values(t1);
      t2 = A._instanceType(t1);
      total = A.IterableIntegerExtension_get_sum(new A.MappedIterable(new A.WhereIterable(t1, new A.DeprecationHandlingLogger_summarize_closure1(), t2._eval$1("WhereIterable<Iterable.E>")), new A.DeprecationHandlingLogger_summarize_closure2(), t2._eval$1("MappedIterable<Iterable.E,int>")));
      if (total > 0) {
        t1 = js ? "" : string$.x0aRun_i;
        this._deprecation_handling$_inner.warn$1(0, "" + total + string$.x20repet + t1);
      }
    }
  };
  A.DeprecationHandlingLogger_warnForDeprecation_closure1.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 186
  };
  A.DeprecationHandlingLogger_warnForDeprecation_closure2.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 187
  };
  A.DeprecationHandlingLogger_summarize_closure1.prototype = {
    call$1(count) {
      return count > 5;
    },
    $signature: 47
  };
  A.DeprecationHandlingLogger_summarize_closure2.prototype = {
    call$1(count) {
      return count - 5;
    },
    $signature: 191
  };
  A.DynamicImport0.prototype = {
    toString$0(_) {
      return A.StringExpression_quoteText0(this.urlString);
    },
    $isImport0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.EachRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitEachRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.variables,
        t2 = this.children;
      return "@each " + new A.MappedListIterable(t1, new A.EachRule_toString_closure0(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$1(0, ", ") + " in " + this.list.toString$0(0) + " {" + (t2 && B.JSArray_methods).join$1(t2, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.EachRule_toString_closure0.prototype = {
    call$1(variable) {
      return "$" + variable;
    },
    $signature: 7
  };
  A.EmptyExtensionStore0.prototype = {
    get$_extension_store$_extensions() {
      return A.throwExpression(A.NoSuchMethodError_NoSuchMethodError$withInvocation(this, A.JSInvocationMirror$(B.Symbol__extensions, "get$_empty_extension_store0$_extensions", 1, [], [], 0)));
    },
    get$_extension_store$_sourceSpecificity() {
      return A.throwExpression(A.NoSuchMethodError_NoSuchMethodError$withInvocation(this, A.JSInvocationMirror$(B.Symbol__sourceSpecificity, "get$_empty_extension_store0$_sourceSpecificity", 1, [], [], 0)));
    },
    get$isEmpty(_) {
      return true;
    },
    get$simpleSelectors() {
      return B.C_EmptyUnmodifiableSet0;
    },
    extensionsWhereTarget$1(callback) {
      return B.List_empty17;
    },
    addExtensions$1(extenders) {
      throw A.wrapException(A.UnsupportedError$(string$.addExt));
    },
    clone$0() {
      return B.Record2_EmptyExtensionStore_Map_empty0;
    },
    $isExtensionStore0: 1
  };
  A.Environment0.prototype = {
    closure$0() {
      var t4, t5, t6, _this = this,
        t1 = _this._environment0$_forwardedModules,
        t2 = _this._environment0$_nestedForwardedModules,
        t3 = _this._environment0$_variables;
      t3 = A._setArrayType(t3.slice(0), A._arrayInstanceType(t3));
      t4 = _this._environment0$_variableNodes;
      t4 = A._setArrayType(t4.slice(0), A._arrayInstanceType(t4));
      t5 = _this._environment0$_functions;
      t5 = A._setArrayType(t5.slice(0), A._arrayInstanceType(t5));
      t6 = _this._environment0$_mixins;
      t6 = A._setArrayType(t6.slice(0), A._arrayInstanceType(t6));
      return A.Environment$_0(_this._environment0$_modules, _this._environment0$_namespaceNodes, _this._environment0$_globalModules, _this._environment0$_importedModules, t1, t2, _this._environment0$_allModules, t3, t4, t5, t6, _this._environment0$_content);
    },
    forwardModule$2(module, rule) {
      var view, t1, t2, _this = this,
        forwardedModules = _this._environment0$_forwardedModules;
      if (forwardedModules == null)
        forwardedModules = _this._environment0$_forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_Callable_2, type$.AstNode_2);
      view = A.ForwardedModuleView_ifNecessary0(module, rule, type$.Callable_2);
      for (t1 = A.LinkedHashMapKeyIterator$(forwardedModules, forwardedModules._modifications); t1.moveNext$0();) {
        t2 = t1.__js_helper$_current;
        _this._environment0$_assertNoConflicts$5(view.get$variables(), t2.get$variables(), view, t2, "variable");
        _this._environment0$_assertNoConflicts$5(view.get$functions(view), t2.get$functions(t2), view, t2, "function");
        _this._environment0$_assertNoConflicts$5(view.get$mixins(), t2.get$mixins(), view, t2, "mixin");
      }
      _this._environment0$_allModules.push(module);
      forwardedModules.$indexSet(0, view, rule);
    },
    _environment0$_assertNoConflicts$5(newMembers, oldMembers, newModule, oldModule, type) {
      var larger, smaller, t1, t2, t3, t4, $name, small, large, span;
      if (newMembers.get$length(newMembers) < oldMembers.get$length(oldMembers)) {
        larger = oldMembers;
        smaller = newMembers;
      } else {
        larger = newMembers;
        smaller = oldMembers;
      }
      for (t1 = type$.String, t2 = A.MapExtensions_get_pairs0(smaller, t1, type$.Object), t2 = t2.get$iterator(t2), t3 = type === "variable"; t2.moveNext$0();) {
        t4 = t2.get$current(t2);
        $name = t4._0;
        small = t4._1;
        small = small;
        large = larger.$index(0, $name);
        if (large == null)
          continue;
        if (t3 ? newModule.variableIdentity$1($name) === oldModule.variableIdentity$1($name) : J.$eq$(large, small))
          continue;
        if (t3)
          $name = "$" + $name;
        t2 = this._environment0$_forwardedModules;
        if (t2 == null)
          span = null;
        else {
          t2 = t2.$index(0, oldModule);
          span = t2 == null ? null : J.get$span$z(t2);
        }
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, t1);
        if (span != null)
          t2.$indexSet(0, span, "original @forward");
        throw A.wrapException(A.MultiSpanSassScriptException$0("Two forwarded modules both define a " + type + " named " + $name + ".", "new @forward", t2));
      }
    },
    importForwards$1(module) {
      var forwardedModules, t1, t2, t3, t4, node, t5, t6, t7, t8, t9, t10, _i, t11, shadowed, _length, _list, _this = this,
        forwarded = module._environment0$_environment._environment0$_forwardedModules;
      if (forwarded == null)
        return;
      forwardedModules = _this._environment0$_forwardedModules;
      if (forwardedModules != null) {
        t1 = type$.Module_Callable_2;
        t2 = type$.AstNode_2;
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t1 = A.MapExtensions_get_pairs0(forwarded, t1, t2), t1 = t1.get$iterator(t1), t2 = _this._environment0$_globalModules; t1.moveNext$0();) {
          t4 = t1.get$current(t1);
          module = t4._0;
          node = t4._1;
          if (!forwardedModules.containsKey$1(module) || !t2.containsKey$1(module))
            t3.$indexSet(0, module, node);
        }
        forwarded = t3;
      } else
        forwardedModules = _this._environment0$_forwardedModules = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_Callable_2, type$.AstNode_2);
      t1 = type$.String;
      t2 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t3 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t3.moveNext$0();)
        for (t4 = t3.__js_helper$_current.get$variables(), t4 = J.get$iterator$ax(t4.get$keys(t4)); t4.moveNext$0();)
          t2.add$1(0, t4.get$current(t4));
      t3 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();) {
        t5 = t4.__js_helper$_current;
        for (t5 = t5.get$functions(t5), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t3.add$1(0, t5.get$current(t5));
      }
      t1 = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      for (t4 = A.LinkedHashMapKeyIterator$(forwarded, forwarded._modifications); t4.moveNext$0();)
        for (t5 = t4.__js_helper$_current.get$mixins(), t5 = J.get$iterator$ax(t5.get$keys(t5)); t5.moveNext$0();)
          t1.add$1(0, t5.get$current(t5));
      t4 = _this._environment0$_variables;
      t5 = t4.length;
      if (t5 === 1) {
        for (t5 = _this._environment0$_importedModules, t6 = type$.Module_Callable_2, t7 = type$.AstNode_2, t8 = A.MapExtensions_get_pairs0(t5, t6, t7).toList$0(0), t9 = t8.length, t10 = type$.Callable_2, _i = 0; _i < t8.length; t8.length === t9 || (0, A.throwConcurrentModificationError)(t8), ++_i) {
          t11 = t8[_i];
          module = t11._0;
          node = t11._1;
          shadowed = A.ShadowedModuleView_ifNecessary0(module, t3, t1, t2, t10);
          if (shadowed != null) {
            t5.remove$1(0, module);
            t11 = shadowed.variables;
            if (t11.get$isEmpty(t11)) {
              t11 = shadowed.functions;
              if (t11.get$isEmpty(t11)) {
                t11 = shadowed.mixins;
                if (t11.get$isEmpty(t11)) {
                  t11 = shadowed._shadowed_view0$_inner;
                  t11 = t11.get$css(t11);
                  t11 = J.get$isEmpty$asx(t11.get$children(t11));
                } else
                  t11 = false;
              } else
                t11 = false;
            } else
              t11 = false;
            if (!t11)
              t5.$indexSet(0, shadowed, node);
          }
        }
        for (t6 = A.MapExtensions_get_pairs0(forwardedModules, t6, t7).toList$0(0), t7 = t6.length, _i = 0; _i < t6.length; t6.length === t7 || (0, A.throwConcurrentModificationError)(t6), ++_i) {
          t8 = t6[_i];
          module = t8._0;
          node = t8._1;
          shadowed = A.ShadowedModuleView_ifNecessary0(module, t3, t1, t2, t10);
          if (shadowed != null) {
            forwardedModules.remove$1(0, module);
            t8 = shadowed.variables;
            if (t8.get$isEmpty(t8)) {
              t8 = shadowed.functions;
              if (t8.get$isEmpty(t8)) {
                t8 = shadowed.mixins;
                if (t8.get$isEmpty(t8)) {
                  t8 = shadowed._shadowed_view0$_inner;
                  t8 = t8.get$css(t8);
                  t8 = J.get$isEmpty$asx(t8.get$children(t8));
                } else
                  t8 = false;
              } else
                t8 = false;
            } else
              t8 = false;
            if (!t8)
              forwardedModules.$indexSet(0, shadowed, node);
          }
        }
        t5.addAll$1(0, forwarded);
        forwardedModules.addAll$1(0, forwarded);
      } else {
        t6 = _this._environment0$_nestedForwardedModules;
        if (t6 == null) {
          _length = t5 - 1;
          _list = J.JSArray_JSArray$allocateGrowable(_length, type$.List_Module_Callable_2);
          for (t5 = type$.JSArray_Module_Callable_2, _i = 0; _i < _length; ++_i)
            _list[_i] = A._setArrayType([], t5);
          _this._environment0$_nestedForwardedModules = _list;
          t5 = _list;
        } else
          t5 = t6;
        B.JSArray_methods.addAll$1(B.JSArray_methods.get$last(t5), new A.LinkedHashMapKeyIterable(forwarded, A._instanceType(forwarded)._eval$1("LinkedHashMapKeyIterable<1>")));
      }
      for (t2 = A._LinkedHashSetIterator$(t2, t2._collection$_modifications), t5 = _this._environment0$_variableIndices, t6 = _this._environment0$_variableNodes, t7 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t8 = t2._collection$_current;
        if (t8 == null)
          t8 = t7._as(t8);
        t5.remove$1(0, t8);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t8);
        J.remove$1$z(B.JSArray_methods.get$last(t6), t8);
      }
      for (t2 = A._LinkedHashSetIterator$(t3, t3._collection$_modifications), t3 = _this._environment0$_functionIndices, t4 = _this._environment0$_functions, t5 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t6 = t2._collection$_current;
        if (t6 == null)
          t6 = t5._as(t6);
        t3.remove$1(0, t6);
        J.remove$1$z(B.JSArray_methods.get$last(t4), t6);
      }
      for (t1 = A._LinkedHashSetIterator$(t1, t1._collection$_modifications), t2 = _this._environment0$_mixinIndices, t3 = _this._environment0$_mixins, t4 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t5 = t1._collection$_current;
        if (t5 == null)
          t5 = t4._as(t5);
        t2.remove$1(0, t5);
        J.remove$1$z(B.JSArray_methods.get$last(t3), t5);
      }
    },
    getVariable$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._environment0$_getModule$1(namespace).get$variables().$index(0, $name);
      if (_this._environment0$_lastVariableName === $name) {
        t1 = _this._environment0$_lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._environment0$_variables[t1], $name);
        return t1 == null ? _this._environment0$_getVariableFromGlobalModule$1($name) : t1;
      }
      t1 = _this._environment0$_variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._environment0$_lastVariableName = $name;
        _this._environment0$_lastVariableIndex = index;
        t1 = J.$index$asx(_this._environment0$_variables[index], $name);
        return t1 == null ? _this._environment0$_getVariableFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._environment0$_variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._environment0$_lastVariableName = $name;
          _this._environment0$_lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._environment0$_variables[index], $name);
          return t1 == null ? _this._environment0$_getVariableFromGlobalModule$1($name) : t1;
        } else
          return _this._environment0$_getVariableFromGlobalModule$1($name);
      }
    },
    getVariable$1($name) {
      return this.getVariable$2$namespace($name, null);
    },
    _environment0$_getVariableFromGlobalModule$1($name) {
      return this._environment0$_fromOneModule$3($name, "variable", new A.Environment__getVariableFromGlobalModule_closure0($name));
    },
    getVariableNode$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._environment0$_getModule$1(namespace).get$variableNodes().$index(0, $name);
      if (_this._environment0$_lastVariableName === $name) {
        t1 = _this._environment0$_lastVariableIndex;
        t1.toString;
        t1 = J.$index$asx(_this._environment0$_variableNodes[t1], $name);
        return t1 == null ? _this._environment0$_getVariableNodeFromGlobalModule$1($name) : t1;
      }
      t1 = _this._environment0$_variableIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        _this._environment0$_lastVariableName = $name;
        _this._environment0$_lastVariableIndex = index;
        t1 = J.$index$asx(_this._environment0$_variableNodes[index], $name);
        return t1 == null ? _this._environment0$_getVariableNodeFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._environment0$_variableIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          _this._environment0$_lastVariableName = $name;
          _this._environment0$_lastVariableIndex = index;
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._environment0$_variableNodes[index], $name);
          return t1 == null ? _this._environment0$_getVariableNodeFromGlobalModule$1($name) : t1;
        } else
          return _this._environment0$_getVariableNodeFromGlobalModule$1($name);
      }
    },
    _environment0$_getVariableNodeFromGlobalModule$1($name) {
      var t1, t2, _0_0, value;
      for (t1 = this._environment0$_importedModules, t2 = this._environment0$_globalModules, t2 = new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>")).followedBy$1(0, new A.LinkedHashMapKeyIterable(t2, A._instanceType(t2)._eval$1("LinkedHashMapKeyIterable<1>"))), t2 = new A.FollowedByIterator(J.get$iterator$ax(t2.__internal$_first), t2._second); t2.moveNext$0();) {
        t1 = t2._currentIterator;
        _0_0 = t1.get$current(t1).get$variableNodes().$index(0, $name);
        if (_0_0 != null) {
          value = _0_0;
          t1 = true;
        } else {
          value = null;
          t1 = false;
        }
        if (t1)
          return value;
      }
      return null;
    },
    globalVariableExists$2$namespace($name, namespace) {
      if (namespace != null)
        return this._environment0$_getModule$1(namespace).get$variables().containsKey$1($name);
      if (B.JSArray_methods.get$first(this._environment0$_variables).containsKey$1($name))
        return true;
      return this._environment0$_getVariableFromGlobalModule$1($name) != null;
    },
    globalVariableExists$1($name) {
      return this.globalVariableExists$2$namespace($name, null);
    },
    _environment0$_variableIndex$1($name) {
      var t1, i;
      for (t1 = this._environment0$_variables, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    setVariable$5$global$namespace($name, value, nodeWithSpan, global, namespace) {
      var t1, moduleWithName, nestedForwardedModules, t2, t3, t4, t5, index, _this = this;
      if (namespace != null) {
        _this._environment0$_getModule$1(namespace).setVariable$3($name, value, nodeWithSpan);
        return;
      }
      if (global || _this._environment0$_variables.length === 1) {
        _this._environment0$_variableIndices.putIfAbsent$2($name, new A.Environment_setVariable_closure2(_this, $name));
        t1 = _this._environment0$_variables;
        if (!B.JSArray_methods.get$first(t1).containsKey$1($name)) {
          moduleWithName = _this._environment0$_fromOneModule$3($name, "variable", new A.Environment_setVariable_closure3($name));
          if (moduleWithName != null) {
            moduleWithName.setVariable$3($name, value, nodeWithSpan);
            return;
          }
        }
        J.$indexSet$ax(B.JSArray_methods.get$first(t1), $name, value);
        J.$indexSet$ax(B.JSArray_methods.get$first(_this._environment0$_variableNodes), $name, nodeWithSpan);
        return;
      }
      nestedForwardedModules = _this._environment0$_nestedForwardedModules;
      if (nestedForwardedModules != null && !_this._environment0$_variableIndices.containsKey$1($name) && _this._environment0$_variableIndex$1($name) == null)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            if (t5 == null)
              t5 = t4._as(t5);
            if (t5.get$variables().containsKey$1($name)) {
              t5.setVariable$3($name, value, nodeWithSpan);
              return;
            }
          }
        }
      if (_this._environment0$_lastVariableName === $name) {
        t1 = _this._environment0$_lastVariableIndex;
        t1.toString;
        index = t1;
      } else
        index = _this._environment0$_variableIndices.putIfAbsent$2($name, new A.Environment_setVariable_closure4(_this, $name));
      if (!_this._environment0$_inSemiGlobalScope && index === 0) {
        index = _this._environment0$_variables.length - 1;
        _this._environment0$_variableIndices.$indexSet(0, $name, index);
      }
      _this._environment0$_lastVariableName = $name;
      _this._environment0$_lastVariableIndex = index;
      J.$indexSet$ax(_this._environment0$_variables[index], $name, value);
      J.$indexSet$ax(_this._environment0$_variableNodes[index], $name, nodeWithSpan);
    },
    setVariable$4$global($name, value, nodeWithSpan, global) {
      return this.setVariable$5$global$namespace($name, value, nodeWithSpan, global, null);
    },
    setLocalVariable$3($name, value, nodeWithSpan) {
      var index, _this = this,
        t1 = _this._environment0$_variables,
        t2 = t1.length;
      _this._environment0$_lastVariableName = $name;
      index = _this._environment0$_lastVariableIndex = t2 - 1;
      _this._environment0$_variableIndices.$indexSet(0, $name, index);
      J.$indexSet$ax(t1[index], $name, value);
      J.$indexSet$ax(_this._environment0$_variableNodes[index], $name, nodeWithSpan);
    },
    getFunction$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null) {
        t1 = _this._environment0$_getModule$1(namespace);
        return t1.get$functions(t1).$index(0, $name);
      }
      t1 = _this._environment0$_functionIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._environment0$_functions[index], $name);
        return t1 == null ? _this._environment0$_getFunctionFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._environment0$_functionIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._environment0$_functions[index], $name);
          return t1 == null ? _this._environment0$_getFunctionFromGlobalModule$1($name) : t1;
        } else
          return _this._environment0$_getFunctionFromGlobalModule$1($name);
      }
    },
    getFunction$1($name) {
      return this.getFunction$2$namespace($name, null);
    },
    _environment0$_getFunctionFromGlobalModule$1($name) {
      return this._environment0$_fromOneModule$3($name, "function", new A.Environment__getFunctionFromGlobalModule_closure0($name));
    },
    _environment0$_functionIndex$1($name) {
      var t1, i;
      for (t1 = this._environment0$_functions, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    getMixin$2$namespace($name, namespace) {
      var t1, _0_0, index, t2, _1_0, _this = this;
      if (namespace != null)
        return _this._environment0$_getModule$1(namespace).get$mixins().$index(0, $name);
      t1 = _this._environment0$_mixinIndices;
      _0_0 = t1.$index(0, $name);
      if (_0_0 != null) {
        index = _0_0;
        t2 = true;
      } else {
        index = null;
        t2 = false;
      }
      if (t2) {
        t1 = J.$index$asx(_this._environment0$_mixins[index], $name);
        return t1 == null ? _this._environment0$_getMixinFromGlobalModule$1($name) : t1;
      } else {
        _1_0 = _this._environment0$_mixinIndex$1($name);
        if (_1_0 != null) {
          index = _1_0;
          t2 = true;
        } else {
          index = null;
          t2 = false;
        }
        if (t2) {
          t1.$indexSet(0, $name, index);
          t1 = J.$index$asx(_this._environment0$_mixins[index], $name);
          return t1 == null ? _this._environment0$_getMixinFromGlobalModule$1($name) : t1;
        } else
          return _this._environment0$_getMixinFromGlobalModule$1($name);
      }
    },
    _environment0$_getMixinFromGlobalModule$1($name) {
      return this._environment0$_fromOneModule$3($name, "mixin", new A.Environment__getMixinFromGlobalModule_closure0($name));
    },
    _environment0$_mixinIndex$1($name) {
      var t1, i;
      for (t1 = this._environment0$_mixins, i = t1.length - 1; i >= 0; --i)
        if (t1[i].containsKey$1($name))
          return i;
      return null;
    },
    withContent$2($content, callback) {
      var oldContent = this._environment0$_content;
      this._environment0$_content = $content;
      callback.call$0();
      this._environment0$_content = oldContent;
    },
    asMixin$1(callback) {
      var oldInMixin = this._environment0$_inMixin;
      this._environment0$_inMixin = true;
      callback.call$0();
      this._environment0$_inMixin = oldInMixin;
    },
    scope$1$3$semiGlobal$when(callback, semiGlobal, when) {
      var wasInSemiGlobalScope, $name, name0, name1, t1, t2, t3, t4, t5, t6, _this = this;
      semiGlobal = semiGlobal && _this._environment0$_inSemiGlobalScope;
      wasInSemiGlobalScope = _this._environment0$_inSemiGlobalScope;
      _this._environment0$_inSemiGlobalScope = semiGlobal;
      if (!when)
        try {
          t1 = callback.call$0();
          return t1;
        } finally {
          _this._environment0$_inSemiGlobalScope = wasInSemiGlobalScope;
        }
      t1 = _this._environment0$_variables;
      t2 = type$.String;
      B.JSArray_methods.add$1(t1, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.Value_2));
      t3 = _this._environment0$_variableNodes;
      B.JSArray_methods.add$1(t3, A.LinkedHashMap_LinkedHashMap$_empty(t2, type$.AstNode_2));
      t4 = _this._environment0$_functions;
      t5 = type$.Callable_2;
      B.JSArray_methods.add$1(t4, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
      t6 = _this._environment0$_mixins;
      B.JSArray_methods.add$1(t6, A.LinkedHashMap_LinkedHashMap$_empty(t2, t5));
      t5 = _this._environment0$_nestedForwardedModules;
      if (t5 != null)
        t5.push(A._setArrayType([], type$.JSArray_Module_Callable_2));
      try {
        t2 = callback.call$0();
        return t2;
      } finally {
        _this._environment0$_inSemiGlobalScope = wasInSemiGlobalScope;
        _this._environment0$_lastVariableIndex = _this._environment0$_lastVariableName = null;
        for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t1))), t2 = _this._environment0$_variableIndices; t1.moveNext$0();) {
          $name = t1.get$current(t1);
          t2.remove$1(0, $name);
        }
        B.JSArray_methods.removeLast$0(t3);
        for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t4))), t2 = _this._environment0$_functionIndices; t1.moveNext$0();) {
          name0 = t1.get$current(t1);
          t2.remove$1(0, name0);
        }
        for (t1 = J.get$iterator$ax(J.get$keys$z(B.JSArray_methods.removeLast$0(t6))), t2 = _this._environment0$_mixinIndices; t1.moveNext$0();) {
          name1 = t1.get$current(t1);
          t2.remove$1(0, name1);
        }
        t1 = _this._environment0$_nestedForwardedModules;
        if (t1 != null)
          t1.pop();
      }
    },
    scope$1$1(callback, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, true, $T);
    },
    scope$1$2$when(callback, when, $T) {
      return this.scope$1$3$semiGlobal$when(callback, false, when, $T);
    },
    scope$1$2$semiGlobal(callback, semiGlobal, $T) {
      return this.scope$1$3$semiGlobal$when(callback, semiGlobal, true, $T);
    },
    toImplicitConfiguration$0() {
      var t2, t3, t4, i, values, nodes, t5, t6, $name, value,
        t1 = type$.String,
        configuration = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.ConfiguredValue_2);
      for (t2 = this._environment0$_variables, t3 = type$.Value_2, t4 = this._environment0$_variableNodes, i = 0; i < t2.length; ++i) {
        values = t2[i];
        nodes = t4[i];
        for (t5 = A.MapExtensions_get_pairs0(values, t1, t3), t5 = t5.get$iterator(t5); t5.moveNext$0();) {
          t6 = t5.get$current(t5);
          $name = t6._0;
          value = t6._1;
          t6 = nodes.$index(0, $name);
          t6.toString;
          configuration.$indexSet(0, $name, new A.ConfiguredValue0(value, null, t6));
        }
      }
      return new A.Configuration0(configuration, null);
    },
    toModule$3(css, preModuleComments, extensionStore) {
      return A._EnvironmentModule__EnvironmentModule1(this, css, preModuleComments, extensionStore, A.NullableExtension_andThen0(this._environment0$_forwardedModules, new A.Environment_toModule_closure0()));
    },
    toDummyModule$0() {
      return A._EnvironmentModule__EnvironmentModule1(this, new A.CssStylesheet0(new A.UnmodifiableListView(B.List_empty16, type$.UnmodifiableListView_CssNode_2), A.SourceFile$decoded(B.List_empty4, "<dummy module>").span$1(0, 0)), B.Map_empty9, B.C_EmptyExtensionStore0, A.NullableExtension_andThen0(this._environment0$_forwardedModules, new A.Environment_toDummyModule_closure0()));
    },
    _environment0$_getModule$1(namespace) {
      var module, t1,
        _0_0 = this._environment0$_modules.$index(0, namespace);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1)
        return module;
      throw A.wrapException(A.SassScriptException$0('There is no module with the namespace "' + namespace + '".', null));
    },
    _environment0$_fromOneModule$1$3($name, type, callback) {
      var nestedForwardedModules, t1, t2, t3, t4, t5, _1_0, value, _2_0, identity, valueInModule, identityFromModule, module, node, _null = null,
        _0_0 = this._environment0$_nestedForwardedModules;
      if (_0_0 != null) {
        nestedForwardedModules = _0_0;
        t1 = true;
      } else {
        nestedForwardedModules = _null;
        t1 = false;
      }
      if (t1)
        for (t1 = new A.ReversedListIterable(nestedForwardedModules, A.instanceType(nestedForwardedModules)._eval$1("ReversedListIterable<1>")), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
          t3 = t1.__internal$_current;
          for (t3 = J.get$reversed$ax(t3 == null ? t2._as(t3) : t3), t3 = new A.ListIterator(t3, t3.get$length(t3)), t4 = A._instanceType(t3)._precomputed1; t3.moveNext$0();) {
            t5 = t3.__internal$_current;
            _1_0 = callback.call$1(t5 == null ? t4._as(t5) : t5);
            if (_1_0 != null) {
              value = _1_0;
              t5 = true;
            } else {
              value = _null;
              t5 = false;
            }
            if (t5)
              return value;
          }
        }
      for (t1 = this._environment0$_importedModules, t1 = A.LinkedHashMapKeyIterator$(t1, t1._modifications); t1.moveNext$0();) {
        _2_0 = callback.call$1(t1.__js_helper$_current);
        if (_2_0 != null) {
          value = _2_0;
          t2 = true;
        } else {
          value = _null;
          t2 = false;
        }
        if (t2)
          return value;
      }
      for (t1 = this._environment0$_globalModules, t2 = A.LinkedHashMapKeyIterator$(t1, t1._modifications), t3 = type$.Callable_2, identity = _null, value = identity; t2.moveNext$0();) {
        t4 = t2.__js_helper$_current;
        valueInModule = callback.call$1(t4);
        if (valueInModule == null)
          continue;
        identityFromModule = t3._is(valueInModule) ? valueInModule : t4.variableIdentity$1($name);
        if (identityFromModule.$eq(0, identity))
          continue;
        if (value != null) {
          t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          for (t3 = A.MapExtensions_get_pairs0(t1, type$.Module_Callable_2, type$.AstNode_2), t3 = t3.get$iterator(t3), t4 = "includes " + type; t3.moveNext$0();) {
            t1 = t3.get$current(t3);
            module = t1._0;
            node = t1._1;
            if (callback.call$1(module) != null)
              t2.$indexSet(0, node.get$span(node), t4);
          }
          throw A.wrapException(A.MultiSpanSassScriptException$0("This " + type + string$.x20is_av, type + " use", t2));
        }
        identity = identityFromModule;
        value = valueInModule;
      }
      return value;
    },
    _environment0$_fromOneModule$3($name, type, callback) {
      return this._environment0$_fromOneModule$1$3($name, type, callback, type$.dynamic);
    }
  };
  A.Environment__getVariableFromGlobalModule_closure0.prototype = {
    call$1(module) {
      return module.get$variables().$index(0, this.name);
    },
    $signature: 427
  };
  A.Environment_setVariable_closure2.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._environment0$_lastVariableName = this.name;
      return t1._environment0$_lastVariableIndex = 0;
    },
    $signature: 3
  };
  A.Environment_setVariable_closure3.prototype = {
    call$1(module) {
      return module.get$variables().containsKey$1(this.name) ? module : null;
    },
    $signature: 428
  };
  A.Environment_setVariable_closure4.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._environment0$_variableIndex$1(this.name);
      return t2 == null ? t1._environment0$_variables.length - 1 : t2;
    },
    $signature: 3
  };
  A.Environment__getFunctionFromGlobalModule_closure0.prototype = {
    call$1(module) {
      return module.get$functions(module).$index(0, this.name);
    },
    $signature: 234
  };
  A.Environment__getMixinFromGlobalModule_closure0.prototype = {
    call$1(module) {
      return module.get$mixins().$index(0, this.name);
    },
    $signature: 234
  };
  A.Environment_toModule_closure0.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_Callable_2);
    },
    $signature: 235
  };
  A.Environment_toDummyModule_closure0.prototype = {
    call$1(modules) {
      return new A.MapKeySet(modules, type$.MapKeySet_Module_Callable_2);
    },
    $signature: 235
  };
  A._EnvironmentModule1.prototype = {
    get$url(_) {
      var t1 = this.css;
      return t1.get$span(t1).file.url;
    },
    setVariable$3($name, value, nodeWithSpan) {
      var module, t1, t2,
        _0_0 = this._environment0$_modulesByVariable.$index(0, $name);
      if (_0_0 != null) {
        module = _0_0;
        t1 = true;
      } else {
        module = null;
        t1 = false;
      }
      if (t1) {
        module.setVariable$3($name, value, nodeWithSpan);
        return;
      }
      t1 = this._environment0$_environment;
      t2 = t1._environment0$_variables;
      if (!B.JSArray_methods.get$first(t2).containsKey$1($name))
        throw A.wrapException(A.SassScriptException$0("Undefined variable.", null));
      J.$indexSet$ax(B.JSArray_methods.get$first(t2), $name, value);
      J.$indexSet$ax(B.JSArray_methods.get$first(t1._environment0$_variableNodes), $name, nodeWithSpan);
      return;
    },
    variableIdentity$1($name) {
      var module = this._environment0$_modulesByVariable.$index(0, $name);
      return module == null ? this : module.variableIdentity$1($name);
    },
    cloneCss$0() {
      var _0_0, _this = this;
      if (!_this.transitivelyContainsCss)
        return _this;
      _0_0 = A.cloneCssStylesheet0(_this.css, _this.extensionStore);
      return A._EnvironmentModule$_1(_this._environment0$_environment, _0_0._0, _this.preModuleComments, _0_0._1, _this._environment0$_modulesByVariable, _this.variables, _this.variableNodes, _this.functions, _this.mixins, true, _this.transitivelyContainsExtensions);
    },
    toString$0(_) {
      var t1 = this.css;
      if (t1.get$span(t1).file.url == null)
        t1 = "<unknown url>";
      else {
        t1 = t1.get$span(t1);
        t1 = $.$get$context().prettyUri$1(t1.file.url);
      }
      return t1;
    },
    $isModule1: 1,
    get$upstream() {
      return this.upstream;
    },
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    },
    get$extensionStore() {
      return this.extensionStore;
    },
    get$css(receiver) {
      return this.css;
    },
    get$preModuleComments() {
      return this.preModuleComments;
    },
    get$transitivelyContainsCss() {
      return this.transitivelyContainsCss;
    },
    get$transitivelyContainsExtensions() {
      return this.transitivelyContainsExtensions;
    }
  };
  A._EnvironmentModule__EnvironmentModule_closure11.prototype = {
    call$1(module) {
      return module.get$variables();
    },
    $signature: 431
  };
  A._EnvironmentModule__EnvironmentModule_closure12.prototype = {
    call$1(module) {
      return module.get$variableNodes();
    },
    $signature: 649
  };
  A._EnvironmentModule__EnvironmentModule_closure13.prototype = {
    call$1(module) {
      return module.get$functions(module);
    },
    $signature: 236
  };
  A._EnvironmentModule__EnvironmentModule_closure14.prototype = {
    call$1(module) {
      return module.get$mixins();
    },
    $signature: 236
  };
  A._EnvironmentModule__EnvironmentModule_closure15.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 136
  };
  A._EnvironmentModule__EnvironmentModule_closure16.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsExtensions();
    },
    $signature: 136
  };
  A.ErrorRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitErrorRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@error " + this.expression.toString$0(0) + ";";
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._EvaluateVisitor1.prototype = {
    _EvaluateVisitor$6$functions$importCache$logger$nodeImporter$quietDeps$sourceMap1(functions, importCache, logger, nodeImporter, quietDeps, sourceMap) {
      var t2, metaModule, t3, _i, module, $function, t4, _this = this,
        _s20_ = "$name, $module: null",
        _s9_ = "sass:meta",
        _s7_ = "$module",
        t1 = type$.JSArray_BuiltInCallable_2,
        metaFunctions = A._setArrayType([A.BuiltInCallable$function0("global-variable-exists", _s20_, new A._EvaluateVisitor_closure25(_this), _s9_), A.BuiltInCallable$function0("variable-exists", "$name", new A._EvaluateVisitor_closure26(_this), _s9_), A.BuiltInCallable$function0("function-exists", _s20_, new A._EvaluateVisitor_closure27(_this), _s9_), A.BuiltInCallable$function0("mixin-exists", _s20_, new A._EvaluateVisitor_closure28(_this), _s9_), A.BuiltInCallable$function0("content-exists", "", new A._EvaluateVisitor_closure29(_this), _s9_), A.BuiltInCallable$function0("module-variables", _s7_, new A._EvaluateVisitor_closure30(_this), _s9_), A.BuiltInCallable$function0("module-functions", _s7_, new A._EvaluateVisitor_closure31(_this), _s9_), A.BuiltInCallable$function0("module-mixins", _s7_, new A._EvaluateVisitor_closure32(_this), _s9_), A.BuiltInCallable$function0("get-function", "$name, $css: false, $module: null", new A._EvaluateVisitor_closure33(_this), _s9_), A.BuiltInCallable$function0("get-mixin", _s20_, new A._EvaluateVisitor_closure34(_this), _s9_), A.BuiltInCallable$function0("call", "$function, $args...", new A._EvaluateVisitor_closure35(_this), _s9_)], t1),
        metaMixins = A._setArrayType([A.BuiltInCallable$mixin0("load-css", "$url, $with: null", new A._EvaluateVisitor_closure36(_this), false, _s9_), A.BuiltInCallable$mixin0("apply", "$mixin, $args...", new A._EvaluateVisitor_closure37(_this), true, _s9_)], t1);
      t1 = type$.BuiltInCallable_2;
      t2 = A.List_List$of($.$get$global6(), true, t1);
      B.JSArray_methods.addAll$1(t2, $.$get$local0());
      B.JSArray_methods.addAll$1(t2, metaFunctions);
      metaModule = A.BuiltInModule$0("meta", t2, metaMixins, null, t1);
      for (t1 = A.List_List$of($.$get$coreModules0(), true, type$.BuiltInModule_Callable_2), t1.push(metaModule), t2 = t1.length, t3 = _this._evaluate0$_builtInModules, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        module = t1[_i];
        t3.$indexSet(0, module.url, module);
      }
      t1 = A._setArrayType([], type$.JSArray_Callable_2);
      B.JSArray_methods.addAll$1(t1, functions);
      B.JSArray_methods.addAll$1(t1, $.$get$globalFunctions0());
      B.JSArray_methods.addAll$1(t1, metaFunctions);
      for (t2 = t1.length, t3 = _this._evaluate0$_builtInFunctions, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        $function = t1[_i];
        t4 = J.get$name$x($function);
        t3.$indexSet(0, A.stringReplaceAllUnchecked(t4, "_", "-"), $function);
      }
    },
    run$2(_, importer, node) {
      var error, stackTrace, t1, exception;
      try {
        t1 = type$.nullable_Object;
        t1 = A.runZoned(new A._EvaluateVisitor_run_closure1(this, node, importer), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__evaluationContext, new A._EvaluationContext1(this, node)], t1, t1), type$.Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet_2);
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace0(error.withLoadedUrls$1(this._evaluate0$_loadedUrls), error, stackTrace);
        } else
          throw exception;
      }
    },
    _evaluate0$_assertInModule$1$2(value, $name) {
      if (value != null)
        return value;
      throw A.wrapException(A.StateError$("Can't access " + $name + " outside of a module."));
    },
    _evaluate0$_assertInModule$2(value, $name) {
      return this._evaluate0$_assertInModule$1$2(value, $name, type$.dynamic);
    },
    _evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, baseUrl, configuration, namesInErrors) {
      var _0_0, t2, _this = this, t1 = {};
      t1.builtInModule = null;
      _0_0 = _this._evaluate0$_builtInModules.$index(0, url);
      if (_0_0 != null) {
        t1.builtInModule = _0_0;
        t2 = true;
      } else
        t2 = false;
      if (t2) {
        if (configuration instanceof A.ExplicitConfiguration0) {
          t1 = namesInErrors ? "Built-in module " + url.toString$0(0) + " can't be configured." : "Built-in modules can't be configured.";
          t2 = configuration.nodeWithSpan;
          throw A.wrapException(_this._evaluate0$_exception$2(t1, t2.get$span(t2)));
        }
        _this._evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__loadModule_closure3(t1, callback));
        return;
      }
      _this._evaluate0$_withStackFrame$3(stackFrame, nodeWithSpan, new A._EvaluateVisitor__loadModule_closure4(_this, url, nodeWithSpan, baseUrl, namesInErrors, configuration, callback));
    },
    _evaluate0$_loadModule$5$configuration(url, stackFrame, nodeWithSpan, callback, configuration) {
      return this._evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, configuration, false);
    },
    _evaluate0$_loadModule$4(url, stackFrame, nodeWithSpan, callback) {
      return this._evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, stackFrame, nodeWithSpan, callback, null, null, false);
    },
    _evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, configuration, namesInErrors, nodeWithSpan) {
      var alreadyLoaded, t2, currentConfiguration, t3, message, existingSpan, configurationSpan, environment, css, preModuleComments, extensionStore, module, _this = this,
        url = stylesheet.span.file.url,
        t1 = _this._evaluate0$_modules,
        _0_0 = t1.$index(0, url);
      if (_0_0 != null) {
        alreadyLoaded = _0_0;
        t2 = true;
      } else {
        alreadyLoaded = null;
        t2 = false;
      }
      if (t2) {
        t1 = configuration == null;
        currentConfiguration = t1 ? _this._evaluate0$_configuration : configuration;
        t2 = _this._evaluate0$_moduleConfigurations.$index(0, url);
        t3 = t2._configuration0$__originalConfiguration;
        t2 = t3 == null ? t2 : t3;
        t3 = currentConfiguration._configuration0$__originalConfiguration;
        if (t2 !== (t3 == null ? currentConfiguration : t3) && currentConfiguration instanceof A.ExplicitConfiguration0) {
          message = namesInErrors ? $.$get$context().prettyUri$1(url) + string$.x20was_a : string$.This_mw;
          t2 = _this._evaluate0$_moduleNodes.$index(0, url);
          existingSpan = t2 == null ? null : t2.get$span(t2);
          if (t1) {
            t1 = currentConfiguration.nodeWithSpan;
            configurationSpan = t1.get$span(t1);
          } else
            configurationSpan = null;
          t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (existingSpan != null)
            t1.$indexSet(0, existingSpan, "original load");
          if (configurationSpan != null)
            t1.$indexSet(0, configurationSpan, "configuration");
          throw A.wrapException(t1.get$isEmpty(t1) ? _this._evaluate0$_exception$1(message) : _this._evaluate0$_multiSpanException$3(message, "new load", t1));
        }
        return alreadyLoaded;
      }
      environment = A.Environment$0();
      css = A._Cell$();
      preModuleComments = A._Cell$();
      extensionStore = A.ExtensionStore$0();
      _this._evaluate0$_withEnvironment$2(environment, new A._EvaluateVisitor__execute_closure1(_this, importer, stylesheet, extensionStore, configuration, css, preModuleComments));
      t2 = css._readLocal$0();
      t3 = preModuleComments._readLocal$0();
      module = environment.toModule$3(t2, t3 == null ? B.Map_empty9 : t3, extensionStore);
      if (url != null) {
        t1.$indexSet(0, url, module);
        _this._evaluate0$_moduleConfigurations.$indexSet(0, url, _this._evaluate0$_configuration);
        if (nodeWithSpan != null)
          _this._evaluate0$_moduleNodes.$indexSet(0, url, nodeWithSpan);
      }
      return module;
    },
    _evaluate0$_execute$2(importer, stylesheet) {
      return this._evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, null, false, null);
    },
    _evaluate0$_addOutOfOrderImports$0() {
      var t1, t2, _this = this, _s5_ = "_root",
        _s13_ = "_endOfImports",
        _0_0 = _this._evaluate0$_outOfOrderImports;
      $label0$0: {
        if (_0_0 == null) {
          t1 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_).children;
          break $label0$0;
        }
        t1 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_);
        t1 = t1.children;
        t1 = A.List_List$of(A.SubListIterable$(t1, 0, A.checkNotNullable(_this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_), "count", type$.int), t1.$ti._eval$1("ListBase.E")), true, type$.ModifiableCssNode_2);
        B.JSArray_methods.addAll$1(t1, _0_0);
        t2 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_).children;
        B.JSArray_methods.addAll$1(t1, A.SubListIterable$(t2, _this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_), null, t2.$ti._eval$1("ListBase.E")));
        break $label0$0;
      }
      return t1;
    },
    _evaluate0$_combineCss$2$clone(root, clone) {
      var selectors, _0_0, unsatisfiedExtension, t1, imports, css, sorted, t2;
      if (!B.JSArray_methods.any$1(root.get$upstream(), new A._EvaluateVisitor__combineCss_closure3())) {
        selectors = root.get$extensionStore().get$simpleSelectors();
        _0_0 = A.IterableExtension_get_firstOrNull(root.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__combineCss_closure4(selectors)));
        if (_0_0 != null) {
          unsatisfiedExtension = _0_0;
          t1 = true;
        } else {
          unsatisfiedExtension = null;
          t1 = false;
        }
        if (t1)
          this._evaluate0$_throwForUnsatisfiedExtension$1(unsatisfiedExtension);
        return root.get$css(root);
      }
      t1 = type$.JSArray_CssNode_2;
      imports = A._setArrayType([], t1);
      css = A._setArrayType([], t1);
      t1 = type$.Module_Callable_2;
      sorted = A.ListQueue$(t1);
      new A._EvaluateVisitor__combineCss_visitModule1(this, A.LinkedHashSet_LinkedHashSet$_empty(t1), clone, css, imports, sorted).call$1(root);
      if (root.get$transitivelyContainsExtensions())
        this._evaluate0$_extendModules$1(sorted);
      t1 = B.JSArray_methods.$add(imports, css);
      t2 = root.get$css(root);
      return new A.CssStylesheet0(new A.UnmodifiableListView(t1, type$.UnmodifiableListView_CssNode_2), t2.get$span(t2));
    },
    _evaluate0$_combineCss$1(root) {
      return this._evaluate0$_combineCss$2$clone(root, false);
    },
    _evaluate0$_extendModules$1(sortedModules) {
      var t1, t2, t3, originalSelectors, $self, t4, t5, _i, upstream, _0_0, url, t6,
        downstreamExtensionStores = A.LinkedHashMap_LinkedHashMap$_empty(type$.Uri, type$.List_ExtensionStore_2),
        unsatisfiedExtensions = new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_Extension_2);
      for (t1 = A._ListQueueIterator$(sortedModules), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1._collection$_current;
        if (t3 == null)
          t3 = t2._as(t3);
        originalSelectors = t3.get$extensionStore().get$simpleSelectors().toSet$0(0);
        unsatisfiedExtensions.addAll$1(0, t3.get$extensionStore().extensionsWhereTarget$1(new A._EvaluateVisitor__extendModules_closure3(originalSelectors)));
        $self = downstreamExtensionStores.$index(0, t3.get$url(t3));
        t4 = t3.get$extensionStore().get$addExtensions();
        if ($self != null)
          t4.call$1($self);
        t4 = t3.get$extensionStore();
        if (t4.get$isEmpty(t4))
          continue;
        for (t4 = t3.get$upstream(), t5 = t4.length, _i = 0; _i < t4.length; t4.length === t5 || (0, A.throwConcurrentModificationError)(t4), ++_i) {
          upstream = t4[_i];
          _0_0 = upstream.get$url(upstream);
          if (_0_0 != null) {
            url = _0_0;
            t6 = true;
          } else {
            url = null;
            t6 = false;
          }
          if (t6)
            J.add$1$ax(downstreamExtensionStores.putIfAbsent$2(url, new A._EvaluateVisitor__extendModules_closure4()), t3.get$extensionStore());
        }
        unsatisfiedExtensions.removeAll$1(t3.get$extensionStore().extensionsWhereTarget$1(originalSelectors.get$contains(originalSelectors)));
      }
      if (unsatisfiedExtensions._collection$_length !== 0)
        this._evaluate0$_throwForUnsatisfiedExtension$1(unsatisfiedExtensions.get$first(unsatisfiedExtensions));
    },
    _evaluate0$_throwForUnsatisfiedExtension$1(extension) {
      throw A.wrapException(A.SassException$0(string$.The_ta + extension.target.toString$0(0) + ' !optional" to avoid this error.', extension.span, null));
    },
    _evaluate0$_indexAfterImports$1(statements) {
      var t1, lastImport, i, _0_0;
      for (t1 = J.getInterceptor$asx(statements), lastImport = -1, i = 0; i < t1.get$length(statements); ++i) {
        $label0$0: {
          _0_0 = t1.$index(statements, i);
          if (_0_0 instanceof A.ModifiableCssImport0)
            break $label0$0;
          if (_0_0 instanceof A.ModifiableCssComment0)
            continue;
          break;
        }
        lastImport = i;
      }
      return lastImport + 1;
    },
    visitStylesheet$1(node) {
      var t1, t2, _i;
      for (t1 = node.children, t2 = t1.length, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(this);
      return null;
    },
    visitAtRootRule$1(node) {
      var unparsedQuery, t1, _1_0, query, $parent, included, _2_0, grandparent, t2, root, first, rest, innerCopy, outerCopy, _i, copy, _this = this, _null = null,
        _s8_ = "__parent",
        _0_0 = node.query;
      if (_0_0 != null) {
        unparsedQuery = _0_0;
        t1 = true;
      } else {
        unparsedQuery = _null;
        t1 = false;
      }
      if (t1) {
        _1_0 = _this._evaluate0$_performInterpolationWithMap$2$warnForColor(unparsedQuery, true);
        query = A.AtRootQueryParser$0(_1_0._0, _this._evaluate0$_logger, _null).parse$0();
      } else
        query = B.AtRootQuery_UsS0;
      $parent = _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_);
      included = A._setArrayType([], type$.JSArray_ModifiableCssParentNode_2);
      for (t1 = type$.CssStylesheet_2; !t1._is($parent); $parent = grandparent) {
        if (!query.excludes$1($parent))
          included.push($parent);
        _2_0 = $parent._node$_parent;
        if (_2_0 != null) {
          grandparent = _2_0;
          t2 = true;
        } else {
          grandparent = _null;
          t2 = false;
        }
        if (!t2)
          throw A.wrapException(A.StateError$(string$.CssNod));
      }
      root = _this._evaluate0$_trimIncluded$1(included);
      if (root === _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_)) {
        _this._evaluate0$_environment.scope$1$2$when(new A._EvaluateVisitor_visitAtRootRule_closure3(_this, node), node.hasDeclarations, type$.Null);
        return _null;
      }
      if (included.length >= 1) {
        first = included[0];
        rest = B.JSArray_methods.sublist$1(included, 1);
        t1 = true;
      } else {
        rest = _null;
        first = rest;
        t1 = false;
      }
      if (t1) {
        innerCopy = first.copyWithoutChildren$0();
        for (t1 = rest.length, outerCopy = innerCopy, _i = 0; _i < rest.length; rest.length === t1 || (0, A.throwConcurrentModificationError)(rest), ++_i, outerCopy = copy) {
          copy = rest[_i].copyWithoutChildren$0();
          copy.addChild$1(outerCopy);
        }
        root.addChild$1(outerCopy);
      } else
        innerCopy = root;
      _this._evaluate0$_scopeForAtRoot$4(node, innerCopy, query, included).call$1(new A._EvaluateVisitor_visitAtRootRule_closure4(_this, node));
      return _null;
    },
    _evaluate0$_trimIncluded$1(nodes) {
      var $parent, t1, innermostContiguous, i, t2, _0_0, grandparent, t3, _1_0, root, _this = this, _null = null, _s5_ = "_root",
        _s22_ = " to be an ancestor of ";
      if (nodes.length === 0)
        return _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_);
      $parent = _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, "__parent");
      for (t1 = nodes.length, innermostContiguous = _null, i = 0; i < t1; ++i, $parent = grandparent) {
        for (; t2 = nodes[i], $parent !== t2; innermostContiguous = _null, $parent = grandparent) {
          _0_0 = $parent._node$_parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t3 = true;
          } else {
            grandparent = _null;
            t3 = false;
          }
          if (!t3)
            throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
        }
        if (innermostContiguous == null)
          innermostContiguous = i;
        _1_0 = $parent._node$_parent;
        if (_1_0 != null) {
          grandparent = _1_0;
          t3 = true;
        } else {
          grandparent = _null;
          t3 = false;
        }
        if (!t3)
          throw A.wrapException(A.ArgumentError$("Expected " + t2.toString$0(0) + _s22_ + _this.toString$0(0) + ".", _null));
      }
      if ($parent !== _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_))
        return _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_);
      innermostContiguous.toString;
      root = nodes[innermostContiguous];
      B.JSArray_methods.removeRange$2(nodes, innermostContiguous, nodes.length);
      return root;
    },
    _evaluate0$_scopeForAtRoot$4(node, newParent, query, included) {
      var _this = this,
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure11(_this, newParent, node),
        t1 = query._at_root_query0$_all || query._at_root_query0$_rule;
      if (t1 !== query.include)
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure12(_this, scope);
      if (_this._evaluate0$_mediaQueries != null && query.excludesName$1("media"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure13(_this, scope);
      if (_this._evaluate0$_inKeyframes && query.excludesName$1("keyframes"))
        scope = new A._EvaluateVisitor__scopeForAtRoot_closure14(_this, scope);
      return _this._evaluate0$_inUnknownAtRule && !B.JSArray_methods.any$1(included, new A._EvaluateVisitor__scopeForAtRoot_closure15()) ? new A._EvaluateVisitor__scopeForAtRoot_closure16(_this, scope) : scope;
    },
    visitContentBlock$1(node) {
      return A.throwExpression(A.UnsupportedError$(string$.Evalua));
    },
    visitContentRule$1(node) {
      var $content = this._evaluate0$_environment._environment0$_content;
      if ($content == null)
        return null;
      this._evaluate0$_runUserDefinedCallable$1$4(node.$arguments, $content, node, new A._EvaluateVisitor_visitContentRule_closure1(this, $content), type$.Null);
      return null;
    },
    visitDebugRule$1(node) {
      var value = node.expression.accept$1(this),
        t1 = value instanceof A.SassString0 ? value._string0$_text : A.serializeValue0(value, true, true);
      this._evaluate0$_logger.debug$2(0, t1, node.span);
      return null;
    },
    visitDeclaration$1(node) {
      var t2, $name, _0_0, declarationName, t3, _1_0, expression, value, t4, t5, _2_0, oldDeclarationName, _this = this, _null = null, t1 = {};
      if ((_this._evaluate0$_atRootExcludingStyleRule ? _null : _this._evaluate0$_styleRuleIgnoringAtRoot) == null && !_this._evaluate0$_inUnknownAtRule && !_this._evaluate0$_inKeyframes)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Declarm, node.span));
      if (_this._evaluate0$_declarationName != null && B.JSString_methods.startsWith$1(node.name.get$initialPlain(), "--"))
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Declarw, node.span));
      t2 = node.name;
      $name = _this._evaluate0$_interpolationToValue$2$warnForColor(t2, true);
      _0_0 = _this._evaluate0$_declarationName;
      if (_0_0 != null) {
        declarationName = _0_0;
        t3 = true;
      } else {
        declarationName = _null;
        t3 = false;
      }
      if (t3)
        $name = new A.CssValue0(A.S(declarationName) + "-" + A.S($name.value), $name.span, type$.CssValue_String_2);
      _1_0 = node.value;
      if (_1_0 != null) {
        expression = _1_0;
        t3 = true;
      } else {
        expression = _null;
        t3 = false;
      }
      if (t3) {
        value = expression.accept$1(_this);
        if (!value.get$isBlank() || value.get$asList().length === 0) {
          t3 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, "__parent");
          t4 = expression.get$span(expression);
          t2 = B.JSString_methods.startsWith$1(t2.get$initialPlain(), "--");
          if (_this._evaluate0$_sourceMap) {
            t5 = A.NullableExtension_andThen0(_1_0, _this.get$_evaluate0$_expressionNode());
            t5 = t5 == null ? _null : J.get$span$z(t5);
          } else
            t5 = _null;
          t3.addChild$1(A.ModifiableCssDeclaration$0($name, new A.CssValue0(value, t4, type$.CssValue_Value_2), node.span, t2, t5));
        } else if (J.startsWith$1$s($name.value, "--"))
          throw A.wrapException(_this._evaluate0$_exception$2("Custom property values may not be empty.", expression.get$span(expression)));
      }
      t1.children = null;
      _2_0 = node.children;
      if (_2_0 != null) {
        t1.children = _2_0;
        t2 = true;
      } else
        t2 = false;
      if (t2) {
        oldDeclarationName = _this._evaluate0$_declarationName;
        _this._evaluate0$_declarationName = $name.value;
        _this._evaluate0$_environment.scope$1$2$when(new A._EvaluateVisitor_visitDeclaration_closure1(t1, _this), node.hasDeclarations, type$.Null);
        _this._evaluate0$_declarationName = oldDeclarationName;
      }
      return _null;
    },
    visitEachRule$1(node) {
      var t2, _this = this, _box_0 = {},
        t1 = node.list,
        list = t1.accept$1(_this),
        nodeWithSpan = _this._evaluate0$_expressionNode$1(t1),
        _0_0 = node.variables;
      $label0$0: {
        _box_0.variable = null;
        if (_0_0.length === 1) {
          _box_0.variable = _0_0[0];
          t1 = true;
        } else
          t1 = false;
        if (t1) {
          t1 = new A._EvaluateVisitor_visitEachRule_closure5(_box_0, _this, nodeWithSpan);
          break $label0$0;
        }
        t1 = _box_0.variables = null;
        _box_0.variables = _0_0;
        t2 = new A._EvaluateVisitor_visitEachRule_closure6(_box_0, _this, nodeWithSpan);
        t1 = t2;
        break $label0$0;
      }
      return _this._evaluate0$_environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitEachRule_closure7(_this, list, t1, node), true, type$.nullable_Value_2);
    },
    _evaluate0$_setMultipleVariables$3(variables, value, nodeWithSpan) {
      var i,
        list = value.get$asList(),
        t1 = variables.length,
        minLength = Math.min(t1, list.length);
      for (i = 0; i < minLength; ++i)
        this._evaluate0$_environment.setLocalVariable$3(variables[i], this._evaluate0$_withoutSlash$2(list[i], nodeWithSpan), nodeWithSpan);
      for (i = minLength; i < t1; ++i)
        this._evaluate0$_environment.setLocalVariable$3(variables[i], B.C__SassNull0, nodeWithSpan);
    },
    visitErrorRule$1(node) {
      throw A.wrapException(this._evaluate0$_exception$2(J.toString$0$(node.expression.accept$1(this)), node.span));
    },
    visitExtendRule$1(node) {
      var t1, t2, t3, t4, t5, _i, complex, visitor, t6, t7, _0_0, compound, _this = this, _null = null,
        styleRule = _this._evaluate0$_atRootExcludingStyleRule ? _null : _this._evaluate0$_styleRuleIgnoringAtRoot;
      if (styleRule == null || _this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.x40exten, node.span));
      for (t1 = styleRule.originalSelector.components, t2 = t1.length, t3 = node.span, t4 = type$.SourceSpan, t5 = type$.String, _i = 0; _i < t2; ++_i) {
        complex = t1[_i];
        if (!complex.accept$1(B._IsBogusVisitor_true0))
          continue;
        visitor = A._SerializeVisitor$0(_null, true, _null, true, false, _null, true);
        complex.accept$1(visitor);
        t6 = B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0));
        t7 = complex.accept$1(B.C__IsUselessVisitor0) ? "can't" : "shouldn't";
        _this._evaluate0$_warn$3('The selector "' + t6 + '" is invalid CSS and ' + t7 + string$.x20be_an, new A.MultiSpan0(A.SpanExtensions_trimRight0(complex.span), "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t3, "@extend rule"], t4, t5), t4, t5)), B.Deprecation_XV6);
      }
      _0_0 = _this._evaluate0$_performInterpolationWithMap$2$warnForColor(node.selector, true);
      for (t1 = A.SelectorList_SelectorList$parse0(A.trimAscii0(_0_0._0, true), false, true, _0_0._1, _this._evaluate0$_logger).components, t2 = t1.length, t3 = styleRule._style_rule0$_selector._box0$_inner, _i = 0; _i < t2; ++_i) {
        complex = t1[_i];
        compound = complex.get$singleCompound();
        if (compound == null)
          throw A.wrapException(A.SassFormatException$0("complex selectors may not be extended.", complex.span, _null));
        t4 = compound.components;
        t5 = t4.length === 1 ? B.JSArray_methods.get$first(t4) : _null;
        if (t5 == null)
          throw A.wrapException(A.SassFormatException$0(string$.compou + B.JSArray_methods.join$1(t4, ", ") + string$.x60_inst, compound.span, _null));
        _this._evaluate0$_assertInModule$2(_this._evaluate0$__extensionStore, "_extensionStore").addExtension$4(t3.value, t5, node, _this._evaluate0$_mediaQueries);
      }
      return _null;
    },
    visitAtRule$1(node) {
      var $name, value, children, wasInKeyframes, wasInUnknownAtRule, _this = this;
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.At_rul, node.span));
      $name = _this._evaluate0$_interpolationToValue$1(node.name);
      value = A.NullableExtension_andThen0(node.value, new A._EvaluateVisitor_visitAtRule_closure5(_this));
      children = node.children;
      if (children == null) {
        _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, "__parent").addChild$1(A.ModifiableCssAtRule$0($name, node.span, true, value));
        return null;
      }
      wasInKeyframes = _this._evaluate0$_inKeyframes;
      wasInUnknownAtRule = _this._evaluate0$_inUnknownAtRule;
      if (A.unvendor0($name.value) === "keyframes")
        _this._evaluate0$_inKeyframes = true;
      else
        _this._evaluate0$_inUnknownAtRule = true;
      _this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$0($name, node.span, false, value), new A._EvaluateVisitor_visitAtRule_closure6(_this, $name, children), node.hasDeclarations, new A._EvaluateVisitor_visitAtRule_closure7(), type$.ModifiableCssAtRule_2, type$.Null);
      _this._evaluate0$_inUnknownAtRule = wasInUnknownAtRule;
      _this._evaluate0$_inKeyframes = wasInKeyframes;
      return null;
    },
    visitForRule$1(node) {
      var _this = this, t1 = {},
        t2 = node.from,
        fromNumber = _this._evaluate0$_addExceptionSpan$2(t2, new A._EvaluateVisitor_visitForRule_closure9(_this, node)),
        t3 = node.to,
        toNumber = _this._evaluate0$_addExceptionSpan$2(t3, new A._EvaluateVisitor_visitForRule_closure10(_this, node)),
        from = _this._evaluate0$_addExceptionSpan$2(t2, new A._EvaluateVisitor_visitForRule_closure11(fromNumber)),
        to = t1.to = _this._evaluate0$_addExceptionSpan$2(t3, new A._EvaluateVisitor_visitForRule_closure12(toNumber, fromNumber)),
        direction = from > to ? -1 : 1;
      if (from === (!node.isExclusive ? t1.to = to + direction : to))
        return null;
      return _this._evaluate0$_environment.scope$1$2$semiGlobal(new A._EvaluateVisitor_visitForRule_closure13(t1, _this, node, from, direction, fromNumber), true, type$.nullable_Value_2);
    },
    visitForwardRule$1(node) {
      var newConfiguration, t4, _i, variable, $name, _this = this,
        _s8_ = "@forward",
        oldConfiguration = _this._evaluate0$_configuration,
        adjustedConfiguration = oldConfiguration.throughForward$1(node),
        t1 = node.configuration,
        t2 = t1.length,
        t3 = node.url;
      if (t2 !== 0) {
        newConfiguration = _this._evaluate0$_addForwardConfiguration$2(adjustedConfiguration, node);
        _this._evaluate0$_loadModule$5$configuration(t3, _s8_, node, new A._EvaluateVisitor_visitForwardRule_closure3(_this, node), newConfiguration);
        t3 = type$.String;
        t4 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
        for (_i = 0; _i < t2; ++_i) {
          variable = t1[_i];
          if (!variable.isGuarded)
            t4.add$1(0, variable.name);
        }
        _this._evaluate0$_removeUsedConfiguration$3$except(adjustedConfiguration, newConfiguration, t4);
        t3 = A.LinkedHashSet_LinkedHashSet$_empty(t3);
        for (_i = 0; _i < t2; ++_i)
          t3.add$1(0, t1[_i].name);
        for (t1 = newConfiguration._configuration0$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t4 = t2.length, _i = 0; _i < t2.length; t2.length === t4 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
          $name = t2[_i];
          if (!t3.contains$1(0, $name))
            if (!t1.get$isEmpty(t1))
              t1.remove$1(0, $name);
        }
        _this._evaluate0$_assertConfigurationIsEmpty$1(newConfiguration);
      } else {
        _this._evaluate0$_configuration = adjustedConfiguration;
        _this._evaluate0$_loadModule$4(t3, _s8_, node, new A._EvaluateVisitor_visitForwardRule_closure4(_this, node));
        _this._evaluate0$_configuration = oldConfiguration;
      }
      return null;
    },
    _evaluate0$_addForwardConfiguration$2(configuration, node) {
      var t2, t3, _i, variable, t4, oldValue, t5, variableNodeWithSpan, _null = null,
        t1 = configuration._configuration0$_values,
        newValues = A.LinkedHashMap_LinkedHashMap$of(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue_2), type$.String, type$.ConfiguredValue_2);
      for (t2 = node.configuration, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        variable = t2[_i];
        if (variable.isGuarded) {
          t4 = variable.name;
          oldValue = t1.get$isEmpty(t1) ? _null : t1.remove$1(0, t4);
          if (oldValue != null)
            t5 = true;
          else {
            oldValue = _null;
            t5 = false;
          }
          if (t5 && !oldValue.value.$eq(0, B.C__SassNull0)) {
            newValues.$indexSet(0, t4, oldValue);
            continue;
          }
        }
        t4 = variable.expression;
        variableNodeWithSpan = this._evaluate0$_expressionNode$1(t4);
        newValues.$indexSet(0, variable.name, new A.ConfiguredValue0(this._evaluate0$_withoutSlash$2(t4.accept$1(this), variableNodeWithSpan), variable.span, variableNodeWithSpan));
      }
      if (configuration instanceof A.ExplicitConfiguration0 || t1.get$isEmpty(t1))
        return new A.ExplicitConfiguration0(node, newValues, _null);
      else
        return new A.Configuration0(newValues, _null);
    },
    _evaluate0$_registerCommentsForModule$1(module) {
      var _this = this, _s5_ = "_root",
        t1 = _this._evaluate0$__root;
      if (t1 == null)
        return;
      t1 = _this._evaluate0$_assertInModule$2(t1, _s5_).children;
      if (t1.get$length(t1) === 0 || !module.get$transitivelyContainsCss())
        return;
      t1 = _this._evaluate0$_preModuleComments;
      if (t1 == null)
        t1 = _this._evaluate0$_preModuleComments = A.LinkedHashMap_LinkedHashMap$_empty(type$.Module_Callable_2, type$.List_CssComment_2);
      J.addAll$1$ax(t1.putIfAbsent$2(module, new A._EvaluateVisitor__registerCommentsForModule_closure1()), new A.UnmodifiableListView(J.cast$1$0$ax(_this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_).children._collection$_source, type$.CssComment_2), type$.UnmodifiableListView_CssComment_2));
      _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_).clearChildren$0();
      _this._evaluate0$__endOfImports = 0;
    },
    _evaluate0$_removeUsedConfiguration$3$except(upstream, downstream, except) {
      var t1, t2, t3, t4, _i, $name;
      for (t1 = upstream._configuration0$_values, t2 = J.toList$0$ax(t1.get$keys(t1)), t3 = t2.length, t4 = downstream._configuration0$_values, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        $name = t2[_i];
        if (except.contains$1(0, $name))
          continue;
        if (!t4.containsKey$1($name))
          if (!t1.get$isEmpty(t1))
            t1.remove$1(0, $name);
      }
    },
    _evaluate0$_assertConfigurationIsEmpty$2$nameInError(configuration, nameInError) {
      var t1, _0_0, $name, value;
      if (!(configuration instanceof A.ExplicitConfiguration0))
        return;
      t1 = configuration._configuration0$_values;
      if (t1.get$isEmpty(t1))
        return;
      t1 = A.MapExtensions_get_pairs0(new A.UnmodifiableMapView(t1, type$.UnmodifiableMapView_String_ConfiguredValue_2), type$.String, type$.ConfiguredValue_2);
      _0_0 = t1.get$first(t1);
      $name = _0_0._0;
      value = _0_0._1;
      t1 = nameInError ? "$" + $name + string$.x20was_n : string$.This_v;
      throw A.wrapException(this._evaluate0$_exception$2(t1, value.configurationSpan));
    },
    _evaluate0$_assertConfigurationIsEmpty$1(configuration) {
      return this._evaluate0$_assertConfigurationIsEmpty$2$nameInError(configuration, false);
    },
    visitFunctionRule$1(node) {
      var t1 = this._evaluate0$_environment,
        t2 = t1.closure$0(),
        t3 = this._evaluate0$_inDependency,
        t4 = t1._environment0$_functions,
        index = t4.length - 1,
        t5 = node.name;
      t1._environment0$_functionIndices.$indexSet(0, t5, index);
      J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable0(node, t2, t3, type$.UserDefinedCallable_Environment_2));
      return null;
    },
    visitIfRule$1(node) {
      var t1, t2, _i, clauseToCheck,
        clause = node.lastClause;
      for (t1 = node.clauses, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        clauseToCheck = t1[_i];
        if (clauseToCheck.expression.accept$1(this).get$isTruthy()) {
          clause = clauseToCheck;
          break;
        }
      }
      return A.NullableExtension_andThen0(clause, new A._EvaluateVisitor_visitIfRule_closure1(this));
    },
    visitImportRule$1(node) {
      var t1, t2, t3, t4, t5, t6, _i, $import, t7, _0_0, $self, t8, _this = this,
        _s8_ = "__parent",
        _s5_ = "_root",
        _s13_ = "_endOfImports";
      for (t1 = node.imports, t2 = t1.length, t3 = type$.CssValue_String_2, t4 = _this.get$_evaluate0$_interpolationToValue(), t5 = type$.StaticImport_2, t6 = type$.JSArray_ModifiableCssImport_2, _i = 0; _i < t2; ++_i) {
        $import = t1[_i];
        if ($import instanceof A.DynamicImport0)
          _this._evaluate0$_visitDynamicImport$1($import);
        else {
          t5._as($import);
          t7 = $import.url;
          _0_0 = _this._evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor(t7, false, false);
          $self = $import.modifiers;
          t8 = $self == null ? null : t4.call$1($self);
          node = new A.ModifiableCssImport0(new A.CssValue0(_0_0._0, t7.span, t3), t8, $import.span);
          if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_) !== _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_))
            _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_).addChild$1(node);
          else if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) === J.get$length$asx(_this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_).children._collection$_source)) {
            t7 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_);
            node._node$_parent = t7;
            t7 = t7._node$_children;
            node._node$_indexInParent = t7.length;
            t7.push(node);
            _this._evaluate0$__endOfImports = _this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) + 1;
          } else {
            t7 = _this._evaluate0$_outOfOrderImports;
            (t7 == null ? _this._evaluate0$_outOfOrderImports = A._setArrayType([], t6) : t7).push(node);
          }
        }
      }
      return null;
    },
    _evaluate0$_visitDynamicImport$1($import) {
      return this._evaluate0$_withStackFrame$3("@import", $import, new A._EvaluateVisitor__visitDynamicImport_closure1(this, $import));
    },
    _evaluate0$_loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, forImport) {
      var importCache, _0_0, importer, canonicalUrl, originalUrl, _1_0, isDependency, stylesheet, _2_0, result, _3_0, error, stackTrace, error0, stackTrace0, message, t1, t2, t3, t4, exception, message0, _this = this,
        _s11_ = "_stylesheet";
      baseUrl = baseUrl;
      try {
        _this._evaluate0$_importSpan = span;
        importCache = null;
        _0_0 = _this._evaluate0$_importCache;
        if (_0_0 != null) {
          importCache = _0_0;
          t1 = true;
        } else
          t1 = false;
        if (t1) {
          if (baseUrl == null)
            baseUrl = _this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, _s11_).span.file.url;
          importer = null;
          canonicalUrl = null;
          originalUrl = null;
          _1_0 = J.canonicalize$4$baseImporter$baseUrl$forImport$x(importCache, A.Uri_parse(url), _this._evaluate0$_importer, baseUrl, forImport);
          if (type$.Record_3_nullable_Object_and_nullable_Object_and_nullable_Object_originalUrl._is(_1_0)) {
            importer = _1_0._0;
            canonicalUrl = _1_0._1;
            originalUrl = _1_0._2;
            t1 = true;
          } else
            t1 = false;
          if (t1) {
            _this._evaluate0$_loadedUrls.add$1(0, canonicalUrl);
            isDependency = _this._evaluate0$_inDependency || !J.$eq$(importer, _this._evaluate0$_importer);
            stylesheet = null;
            t1 = importCache;
            t2 = importer;
            t3 = canonicalUrl;
            t4 = originalUrl;
            _2_0 = t1.importCanonical$4$originalUrl$quiet(t2, t3, t4, _this._evaluate0$_quietDeps && isDependency);
            if (_2_0 != null) {
              stylesheet = _2_0;
              t1 = true;
            } else
              t1 = false;
            if (t1) {
              t1 = stylesheet;
              t2 = importer;
              return new A._Record_3_importer_isDependency(t1, t2, isDependency);
            }
          }
        } else {
          result = null;
          t1 = baseUrl;
          _3_0 = _this._evaluate0$_importLikeNode$3(url, t1 == null ? _this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, _s11_).span.file.url : t1, forImport);
          if (_3_0 != null) {
            result = _3_0;
            t1 = true;
          } else
            t1 = false;
          if (t1) {
            t1 = _this._evaluate0$_loadedUrls;
            A.NullableExtension_andThen0(result._0.span.file.url, t1.get$add(t1));
            t1 = result;
            return t1;
          }
        }
        if (B.JSString_methods.startsWith$1(url, "package:") && true)
          throw A.wrapException(string$.x22packa);
        else
          throw A.wrapException("Can't find stylesheet to import.");
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0)
          throw exception;
        else if (t1 instanceof A.ArgumentError) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace0(_this._evaluate0$_exception$1(J.toString$0$(error)), error, stackTrace);
        } else {
          error0 = t1;
          stackTrace0 = A.getTraceFromException(exception);
          message = null;
          try {
            message = A._asString(J.get$message$x(error0));
          } catch (exception) {
            message0 = J.toString$0$(error0);
            message = message0;
          }
          A.throwWithTrace0(_this._evaluate0$_exception$1(message), error0, stackTrace0);
        }
      } finally {
        _this._evaluate0$_importSpan = null;
      }
    },
    _evaluate0$_loadStylesheet$3$baseUrl(url, span, baseUrl) {
      return this._evaluate0$_loadStylesheet$4$baseUrl$forImport(url, span, baseUrl, false);
    },
    _evaluate0$_loadStylesheet$3$forImport(url, span, forImport) {
      return this._evaluate0$_loadStylesheet$4$baseUrl$forImport(url, span, null, forImport);
    },
    _evaluate0$_importLikeNode$3(originalUrl, previous, forImport) {
      var isDependency, url, t2, _this = this,
        t1 = _this._evaluate0$_nodeImporter,
        result = t1.loadRelative$3(originalUrl, previous, forImport);
      if (result != null)
        isDependency = _this._evaluate0$_inDependency;
      else {
        result = t1.load$3(0, originalUrl, previous, forImport);
        if (result == null)
          return null;
        isDependency = true;
      }
      url = result._1;
      t1 = J.startsWith$1$s(url, "file") ? A.Syntax_forPath0(url) : B.Syntax_SCSS_scss0;
      t2 = _this._evaluate0$_quietDeps && isDependency ? $.$get$Logger_quiet0() : _this._evaluate0$_logger;
      return new A._Record_3_importer_isDependency(A.Stylesheet_Stylesheet$parse0(result._0, t1, t2, url), null, isDependency);
    },
    _evaluate0$_applyMixin$5(mixin, contentCallable, $arguments, nodeWithSpan, nodeWithSpanWithoutContent) {
      var _1_8, t1, _0_0, _this = this,
        _s37_ = "Mixin doesn't accept a content block.",
        _s10_ = "invocation";
      $label0$0: {
        _1_8 = A._InitializedCell$(new A._EvaluateVisitor__applyMixin_closure5(mixin));
        if (mixin == null)
          throw A.wrapException(_this._evaluate0$_exception$2("Undefined mixin.", nodeWithSpan.get$span(nodeWithSpan)));
        t1 = mixin instanceof A.BuiltInCallable0;
        if (t1 && !mixin.acceptsContent && contentCallable != null) {
          t1 = _this._evaluate0$_evaluateArguments$1($arguments)._values;
          _0_0 = mixin.callbackFor$2(t1[2].length, new A.MapKeySet(t1[0], type$.MapKeySet_String));
          throw A.wrapException(A.MultiSpanSassRuntimeException$0(_s37_, nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), _s10_, A.LinkedHashMap_LinkedHashMap$_literal([_0_0._0.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), _this._evaluate0$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
        }
        if (t1) {
          _this._evaluate0$_environment.withContent$2(contentCallable, new A._EvaluateVisitor__applyMixin_closure6(_this, $arguments, mixin, nodeWithSpanWithoutContent));
          break $label0$0;
        }
        t1 = type$.UserDefinedCallable_Environment_2._is(mixin);
        if (t1 && _1_8._readFinal$0() instanceof A.MixinRule0 && !_1_8._readFinal$0().get$hasContent() && contentCallable != null)
          throw A.wrapException(A.MultiSpanSassRuntimeException$0(_s37_, nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent), _s10_, A.LinkedHashMap_LinkedHashMap$_literal([mixin.declaration.$arguments.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), _this._evaluate0$_stackTrace$1(nodeWithSpanWithoutContent.get$span(nodeWithSpanWithoutContent)), null));
        if (t1) {
          _this._evaluate0$_runUserDefinedCallable$1$4($arguments, mixin, nodeWithSpanWithoutContent, new A._EvaluateVisitor__applyMixin_closure7(_this, contentCallable, mixin, nodeWithSpanWithoutContent), type$.Null);
          break $label0$0;
        }
        throw A.wrapException(A.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
      }
    },
    visitIncludeRule$1(node) {
      var _this = this;
      _this._evaluate0$_applyMixin$5(_this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitIncludeRule_closure5(_this, node)), A.NullableExtension_andThen0(node.content, new A._EvaluateVisitor_visitIncludeRule_closure6(_this)), node.$arguments, node, new A._FakeAstNode0(new A._EvaluateVisitor_visitIncludeRule_closure7(node)));
      return null;
    },
    visitMixinRule$1(node) {
      var t1 = this._evaluate0$_environment,
        t2 = t1.closure$0(),
        t3 = this._evaluate0$_inDependency,
        t4 = t1._environment0$_mixins,
        index = t4.length - 1,
        t5 = node.name;
      t1._environment0$_mixinIndices.$indexSet(0, t5, index);
      J.$indexSet$ax(t4[index], t5, new A.UserDefinedCallable0(node, t2, t3, type$.UserDefinedCallable_Environment_2));
      return null;
    },
    visitLoudComment$1(node) {
      var t1, _this = this,
        _s8_ = "__parent",
        _s13_ = "_endOfImports";
      if (_this._evaluate0$_inFunction)
        return null;
      if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_) === _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, "_root") && _this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) === J.get$length$asx(_this._evaluate0$_assertInModule$2(_this._evaluate0$__root, "_root").children._collection$_source))
        _this._evaluate0$__endOfImports = _this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) + 1;
      t1 = node.text;
      _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_).addChild$1(new A.ModifiableCssComment0(_this._evaluate0$_performInterpolation$1(t1), t1.span));
      return null;
    },
    visitMediaRule$1(node) {
      var _0_0, queries, mergedQueries, t1, mergedSources, t2, t3, _this = this;
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Media_, node.span));
      _0_0 = _this._evaluate0$_performInterpolationWithMap$2$warnForColor(node.query, true);
      queries = A.CssMediaQuery_parseList0(_0_0._0, _0_0._1, _this._evaluate0$_logger);
      mergedQueries = A.NullableExtension_andThen0(_this._evaluate0$_mediaQueries, new A._EvaluateVisitor_visitMediaRule_closure5(_this, queries));
      t1 = mergedQueries == null;
      if (!t1 && J.get$isEmpty$asx(mergedQueries))
        return null;
      if (t1)
        mergedSources = B.Set_empty5;
      else {
        t2 = _this._evaluate0$_mediaQuerySources;
        t2.toString;
        t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery_2);
        t3 = _this._evaluate0$_mediaQueries;
        t3.toString;
        t2.addAll$1(0, t3);
        t2.addAll$1(0, queries);
        mergedSources = t2;
      }
      t1 = t1 ? queries : mergedQueries;
      _this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$0(t1, node.span), new A._EvaluateVisitor_visitMediaRule_closure6(_this, mergedQueries, queries, mergedSources, node), node.hasDeclarations, new A._EvaluateVisitor_visitMediaRule_closure7(mergedSources), type$.ModifiableCssMediaRule_2, type$.Null);
      return null;
    },
    _evaluate0$_mergeMediaQueries$2(queries1, queries2) {
      var t1, t2, t3, t4, _0_0, result, t5,
        queries = A._setArrayType([], type$.JSArray_CssMediaQuery_2);
      for (t1 = J.get$iterator$ax(queries1), t2 = J.getInterceptor$ax(queries2); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        for (t4 = t2.get$iterator(queries2); t4.moveNext$0();) {
          _0_0 = t3.merge$1(t4.get$current(t4));
          if (B._SingletonCssMediaQueryMergeResult_00 === _0_0)
            continue;
          if (B._SingletonCssMediaQueryMergeResult_10 === _0_0)
            return null;
          if (_0_0 instanceof A.MediaQuerySuccessfulMergeResult0) {
            result = _0_0;
            t5 = true;
          } else {
            result = null;
            t5 = false;
          }
          if (t5)
            queries.push(result.query);
        }
      }
      return queries;
    },
    visitReturnRule$1(node) {
      var t1 = node.expression;
      return this._evaluate0$_withoutSlash$2(t1.accept$1(this), t1);
    },
    visitSilentComment$1(node) {
      return null;
    },
    visitStyleRule$1(node) {
      var t1, _0_0, selectorText, selectorMap, t2, parsedSelector, rule, oldAtRootExcludingStyleRule, t3, t4, t5, _i, complex, visitor, t6, t7, t8, t9, _this = this, _null = null,
        _s11_ = "_stylesheet",
        _s8_ = "__parent";
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Style_, node.span));
      t1 = node.selector;
      _0_0 = _this._evaluate0$_performInterpolationWithMap$2$warnForColor(t1, true);
      selectorText = _0_0._0;
      selectorMap = _0_0._1;
      if (_this._evaluate0$_inKeyframes) {
        _this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$0(new A.CssValue0(A.List_List$unmodifiable(A.KeyframeSelectorParser$0(selectorText, selectorMap, _this._evaluate0$_logger).parse$0(), type$.String), t1.span, type$.CssValue_List_String_2), node.span), new A._EvaluateVisitor_visitStyleRule_closure9(_this, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure10(), type$.ModifiableCssKeyframeBlock_2, type$.Null);
        return _null;
      }
      t1 = A.SelectorList_SelectorList$parse0(selectorText, !_this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, _s11_).plainCss, !_this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, _s11_).plainCss, selectorMap, _this._evaluate0$_logger);
      t2 = _this._evaluate0$_styleRuleIgnoringAtRoot;
      t2 = t2 == null ? _null : t2.originalSelector;
      parsedSelector = t1.resolveParentSelectors$2$implicitParent(t2, !_this._evaluate0$_atRootExcludingStyleRule);
      rule = A.ModifiableCssStyleRule$0(_this._evaluate0$_assertInModule$2(_this._evaluate0$__extensionStore, "_extensionStore").addSelector$2(parsedSelector, _this._evaluate0$_mediaQueries), node.span, parsedSelector);
      oldAtRootExcludingStyleRule = _this._evaluate0$_atRootExcludingStyleRule;
      _this._evaluate0$_atRootExcludingStyleRule = false;
      _this._evaluate0$_withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitStyleRule_closure11(_this, rule, node), node.hasDeclarations, new A._EvaluateVisitor_visitStyleRule_closure12(), type$.ModifiableCssStyleRule_2, type$.Null);
      _this._evaluate0$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
      if (!rule.accept$1(B._IsInvisibleVisitor_false_false0))
        for (t1 = parsedSelector.components, t2 = t1.length, t3 = type$.SourceSpan, t4 = type$.String, t5 = rule.children, _i = 0; _i < t2; ++_i) {
          complex = t1[_i];
          if (!complex.accept$1(B._IsBogusVisitor_true0))
            continue;
          if (complex.accept$1(B.C__IsUselessVisitor0)) {
            visitor = A._SerializeVisitor$0(_null, true, _null, true, false, _null, true);
            complex.accept$1(visitor);
            _this._evaluate0$_warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0)) + string$.x22x20is_ix20, A.SpanExtensions_trimRight0(complex.span), B.Deprecation_XV6);
          } else if (complex.leadingCombinators.length !== 0) {
            visitor = A._SerializeVisitor$0(_null, true, _null, true, false, _null, true);
            complex.accept$1(visitor);
            _this._evaluate0$_warn$3('The selector "' + B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0)) + string$.x22x20is_ix0a, A.SpanExtensions_trimRight0(complex.span), B.Deprecation_XV6);
          } else {
            visitor = A._SerializeVisitor$0(_null, true, _null, true, false, _null, true);
            complex.accept$1(visitor);
            t6 = B.JSString_methods.trim$0(visitor._serialize0$_buffer.toString$0(0));
            t7 = complex.accept$1(B._IsBogusVisitor_false0) ? string$.x20It_wi : "";
            t8 = A.SpanExtensions_trimRight0(complex.span);
            if (t5.get$length(t5) === 0)
              A.throwExpression(A.IterableElementError_noElement());
            t9 = J.get$span$z(t5.$index(0, 0));
            _this._evaluate0$_warn$3('The selector "' + t6 + string$.x22x20is_o + t7 + string$.x0aThis_, new A.MultiSpan0(t8, "invalid selector", A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_literal([t9, "this is not a style rule" + (t5.every$1(t5, new A._EvaluateVisitor_visitStyleRule_closure13()) ? "\n(try converting to a //-style comment)" : "")], t3, t4), t3, t4)), B.Deprecation_XV6);
          }
        }
      if ((_this._evaluate0$_atRootExcludingStyleRule ? _null : _this._evaluate0$_styleRuleIgnoringAtRoot) == null) {
        t1 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_).children;
        t1 = !t1.get$isEmpty(t1);
      } else
        t1 = false;
      if (t1) {
        t1 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_).children;
        t1.get$last(t1).isGroupEnd = true;
      }
      return _null;
    },
    visitSupportsRule$1(node) {
      var t1, _this = this;
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Suppor, node.span));
      t1 = node.condition;
      _this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssSupportsRule$0(new A.CssValue0(_this._evaluate0$_visitSupportsCondition$1(t1), t1.get$span(t1), type$.CssValue_String_2), node.span), new A._EvaluateVisitor_visitSupportsRule_closure3(_this, node), node.hasDeclarations, new A._EvaluateVisitor_visitSupportsRule_closure4(), type$.ModifiableCssSupportsRule_2, type$.Null);
      return null;
    },
    _evaluate0$_visitSupportsCondition$1(condition) {
      var operation, t1, t2, negation, interpolation, $function, anything, _this = this, _null = null, _box_0 = {};
      $label0$0: {
        if (condition instanceof A.SupportsOperation0) {
          operation = condition;
          t1 = true;
        } else {
          operation = _null;
          t1 = false;
        }
        if (t1) {
          t1 = operation.left;
          t2 = operation.operator;
          t2 = _this._evaluate0$_parenthesize$2(t1, t2) + " " + t2 + " " + _this._evaluate0$_parenthesize$2(operation.right, t2);
          t1 = t2;
          break $label0$0;
        }
        if (condition instanceof A.SupportsNegation0) {
          negation = condition;
          t1 = true;
        } else {
          negation = _null;
          t1 = false;
        }
        if (t1) {
          t1 = "not " + _this._evaluate0$_parenthesize$1(negation.condition);
          break $label0$0;
        }
        if (condition instanceof A.SupportsInterpolation0) {
          interpolation = condition;
          t1 = true;
        } else {
          interpolation = _null;
          t1 = false;
        }
        if (t1) {
          t1 = interpolation.expression;
          t1 = _this._evaluate0$_serialize$3$quote(t1.accept$1(_this), t1, false);
          break $label0$0;
        }
        _box_0.declaration = null;
        if (condition instanceof A.SupportsDeclaration0) {
          _box_0.declaration = condition;
          t1 = true;
        } else
          t1 = false;
        if (t1) {
          t1 = _this._evaluate0$_withSupportsDeclaration$1(new A._EvaluateVisitor__visitSupportsCondition_closure1(_box_0, _this));
          break $label0$0;
        }
        if (condition instanceof A.SupportsFunction0) {
          $function = condition;
          t1 = true;
        } else {
          $function = _null;
          t1 = false;
        }
        if (t1) {
          t1 = _this._evaluate0$_performInterpolation$1($function.name) + "(" + _this._evaluate0$_performInterpolation$1($function.$arguments) + ")";
          break $label0$0;
        }
        if (condition instanceof A.SupportsAnything0) {
          anything = condition;
          t1 = true;
        } else {
          anything = _null;
          t1 = false;
        }
        if (t1) {
          t1 = "(" + _this._evaluate0$_performInterpolation$1(anything.contents) + ")";
          break $label0$0;
        }
        t1 = A.throwExpression(A.ArgumentError$("Unknown supports condition type " + A.getRuntimeTypeOfDartObject(condition).toString$0(0) + ".", _null));
      }
      return t1;
    },
    _evaluate0$_withSupportsDeclaration$1$1(callback) {
      var t1,
        oldInSupportsDeclaration = this._evaluate0$_inSupportsDeclaration;
      this._evaluate0$_inSupportsDeclaration = true;
      try {
        t1 = callback.call$0();
        return t1;
      } finally {
        this._evaluate0$_inSupportsDeclaration = oldInSupportsDeclaration;
      }
    },
    _evaluate0$_withSupportsDeclaration$1(callback) {
      return this._evaluate0$_withSupportsDeclaration$1$1(callback, type$.dynamic);
    },
    _evaluate0$_parenthesize$2(condition, operator) {
      var t1;
      if (!(condition instanceof A.SupportsNegation0))
        if (condition instanceof A.SupportsOperation0)
          t1 = operator == null || operator !== condition.operator;
        else
          t1 = false;
      else
        t1 = true;
      if (t1)
        return "(" + this._evaluate0$_visitSupportsCondition$1(condition) + ")";
      return this._evaluate0$_visitSupportsCondition$1(condition);
    },
    _evaluate0$_parenthesize$1(condition) {
      return this._evaluate0$_parenthesize$2(condition, null);
    },
    visitVariableDeclaration$1(node) {
      var t2, t3, value, _this = this, _null = null, t1 = {};
      if (node.isGuarded) {
        if (node.namespace == null && _this._evaluate0$_environment._environment0$_variables.length === 1) {
          t1.override = null;
          t2 = _this._evaluate0$_configuration._configuration0$_values;
          t2 = t2.get$isEmpty(t2) ? _null : t2.remove$1(0, node.name);
          if (t2 != null) {
            t1.override = t2;
            t3 = t2;
            t2 = true;
          } else {
            t3 = _null;
            t2 = false;
          }
          if (t2 && !t3.value.$eq(0, B.C__SassNull0)) {
            _this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure5(t1, _this, node));
            return _null;
          }
        }
        value = _this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure6(_this, node));
        if (value != null && !value.$eq(0, B.C__SassNull0))
          return _null;
      }
      if (node.isGlobal && !_this._evaluate0$_environment.globalVariableExists$1(node.name)) {
        t1 = _this._evaluate0$_environment._environment0$_variables.length === 1 ? string$.As_of_S : string$.As_of_R + A.declarationName0(node.span) + ": null` at the stylesheet root.";
        _this._evaluate0$_warn$3(t1, node.span, B.Deprecation_wKk);
      }
      t1 = node.expression;
      _this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableDeclaration_closure7(_this, node, _this._evaluate0$_withoutSlash$2(t1.accept$1(_this), t1)));
      return _null;
    },
    visitUseRule$1(node) {
      var values, _i, variable, t3, variableNodeWithSpan, configuration, _this = this,
        t1 = node.configuration,
        t2 = t1.length;
      if (t2 !== 0) {
        values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue_2);
        for (_i = 0; _i < t2; ++_i) {
          variable = t1[_i];
          t3 = variable.expression;
          variableNodeWithSpan = _this._evaluate0$_expressionNode$1(t3);
          values.$indexSet(0, variable.name, new A.ConfiguredValue0(_this._evaluate0$_withoutSlash$2(t3.accept$1(_this), variableNodeWithSpan), variable.span, variableNodeWithSpan));
        }
        configuration = new A.ExplicitConfiguration0(node, values, null);
      } else
        configuration = B.Configuration_Map_empty_null0;
      _this._evaluate0$_loadModule$5$configuration(node.url, "@use", node, new A._EvaluateVisitor_visitUseRule_closure1(_this, node), configuration);
      _this._evaluate0$_assertConfigurationIsEmpty$1(configuration);
      return null;
    },
    visitWarnRule$1(node) {
      var _this = this,
        value = _this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitWarnRule_closure1(_this, node)),
        t1 = value instanceof A.SassString0 ? value._string0$_text : _this._evaluate0$_serialize$2(value, node.expression);
      _this._evaluate0$_logger.warn$2$trace(0, t1, _this._evaluate0$_stackTrace$1(node.span));
      return null;
    },
    visitWhileRule$1(node) {
      return this._evaluate0$_environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitWhileRule_closure1(this, node), true, node.hasDeclarations, type$.nullable_Value_2);
    },
    visitBinaryOperationExpression$1(node) {
      var t1, _this = this;
      if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, "_stylesheet").plainCss) {
        t1 = node.operator;
        t1 = t1 !== B.BinaryOperator_2jN0 && t1 !== B.BinaryOperator_t8B0;
      } else
        t1 = false;
      if (t1)
        throw A.wrapException(_this._evaluate0$_exception$2("Operators aren't allowed in plain CSS.", node.get$operatorSpan()));
      return _this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitBinaryOperationExpression_closure1(_this, node));
    },
    _evaluate0$_slash$3(left, right, node) {
      var t1, _null = null,
        result = left.dividedBy$1(right),
        _1_0 = new A._Record_2(left, right),
        _1_1 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure3(_1_0)),
        _1_2 = A._InitializedCell$(new A._EvaluateVisitor__slash_closure4(_1_0));
      if (_1_1._readFinal$0() instanceof A.SassNumber0) {
        left = _1_1._readFinal$0();
        if (_1_2._readFinal$0() instanceof A.SassNumber0) {
          right = _1_2._readFinal$0();
          t1 = node.allowsSlash && this._evaluate0$_operandAllowsSlash$1(node.left) && this._evaluate0$_operandAllowsSlash$1(node.right);
        } else {
          right = _null;
          t1 = false;
        }
      } else {
        right = _null;
        left = right;
        t1 = false;
      }
      if (t1)
        return type$.SassNumber_2._as(result).withSlash$2(left, right);
      if (_1_1._readFinal$0() instanceof A.SassNumber0 && _1_2._readFinal$0() instanceof A.SassNumber0) {
        this._evaluate0$_warn$3(string$.Using__o + A.S(new A._EvaluateVisitor__slash_recommendation1().call$1(node)) + " or " + A.expressionToCalc0(node).toString$0(0) + string$.x0a_Morex20, node.get$span(node), B.Deprecation_wWh);
        return result;
      }
      return result;
    },
    _evaluate0$_operandAllowsSlash$1(node) {
      var t1, t2;
      if (node instanceof A.FunctionExpression0)
        if (node.namespace == null) {
          t1 = node.originalName;
          if (B.Set_WfnXb.contains$1(0, A.stringReplaceAllUnchecked(t1, "_", "-").toLowerCase())) {
            t2 = this._evaluate0$_environment;
            t1 = t2.getFunction$1(A.stringReplaceAllUnchecked(t1, "_", "-")) == null;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = true;
      return t1;
    },
    visitValueExpression$1(node) {
      return node.value;
    },
    visitVariableExpression$1(node) {
      var result = this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitVariableExpression_closure1(this, node));
      if (result != null)
        return result;
      throw A.wrapException(this._evaluate0$_exception$2("Undefined variable.", node.span));
    },
    visitUnaryOperationExpression$1(node) {
      return this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitUnaryOperationExpression_closure1(node, node.operand.accept$1(this)));
    },
    visitBooleanExpression$1(node) {
      return node.value ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    visitIfExpression$1(node) {
      var condition, t1, ifTrue, ifFalse, result, _this = this,
        _0_0 = _this._evaluate0$_evaluateMacroArguments$1(node),
        positional = _0_0._0,
        named = _0_0._1;
      _this._evaluate0$_verifyArguments$4(positional.length, named, $.$get$IfExpression_declaration0(), node);
      condition = A.ListExtensions_elementAtOrNull(positional, 0);
      if (condition == null) {
        t1 = named.$index(0, "condition");
        t1.toString;
        condition = t1;
      }
      ifTrue = A.ListExtensions_elementAtOrNull(positional, 1);
      if (ifTrue == null) {
        t1 = named.$index(0, "if-true");
        t1.toString;
        ifTrue = t1;
      }
      ifFalse = A.ListExtensions_elementAtOrNull(positional, 2);
      if (ifFalse == null) {
        t1 = named.$index(0, "if-false");
        t1.toString;
        ifFalse = t1;
      }
      result = condition.accept$1(_this).get$isTruthy() ? ifTrue : ifFalse;
      return _this._evaluate0$_withoutSlash$2(result.accept$1(_this), _this._evaluate0$_expressionNode$1(result));
    },
    visitNullExpression$1(node) {
      return B.C__SassNull0;
    },
    visitNumberExpression$1(node) {
      return A.SassNumber_SassNumber0(node.value, node.unit);
    },
    visitParenthesizedExpression$1(node) {
      var _this = this;
      return _this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, "_stylesheet").plainCss ? A.throwExpression(_this._evaluate0$_exception$2("Parentheses aren't allowed in plain CSS.", node.span)) : node.expression.accept$1(_this);
    },
    visitColorExpression$1(node) {
      return node.value;
    },
    visitListExpression$1(node) {
      var t1 = node.contents;
      return A.SassList$0(new A.MappedListIterable(t1, new A._EvaluateVisitor_visitListExpression_closure1(this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value0>")), node.separator, node.hasBrackets);
    },
    visitMapExpression$1(node) {
      var t2, t3, _i, t4, key, value, keyValue, valueValue, oldValueSpan,
        t1 = type$.Value_2,
        map = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1),
        keyNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.AstNode_2);
      for (t2 = node.pairs, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        t4 = t2[_i];
        key = t4._0;
        value = t4._1;
        keyValue = key.accept$1(this);
        valueValue = value.accept$1(this);
        if (map.containsKey$1(keyValue)) {
          t1 = keyNodes.$index(0, keyValue);
          oldValueSpan = t1 == null ? null : t1.get$span(t1);
          t1 = key.get$span(key);
          t2 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (oldValueSpan != null)
            t2.$indexSet(0, oldValueSpan, "first key");
          throw A.wrapException(A.MultiSpanSassRuntimeException$0("Duplicate key.", t1, "second key", t2, this._evaluate0$_stackTrace$1(key.get$span(key)), null));
        }
        map.$indexSet(0, keyValue, valueValue);
        keyNodes.$indexSet(0, keyValue, key);
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(map, t1, t1));
    },
    visitFunctionExpression$1(node) {
      var t2, _0_0, t3, t4, oldInFunction, result, _this = this,
        _s11_ = "_stylesheet",
        t1 = {},
        $function = _this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, _s11_).plainCss ? null : _this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure5(_this, node));
      t1.$function = $function;
      if ($function == null) {
        if (node.namespace != null)
          throw A.wrapException(_this._evaluate0$_exception$2("Undefined function.", node.span));
        t2 = node.originalName;
        _0_0 = A.stringReplaceAllUnchecked(t2, "_", "-").toLowerCase();
        if ("min" === _0_0 || "max" === _0_0 || "round" === _0_0 || "abs" === _0_0) {
          t3 = node.$arguments;
          t4 = t3.named;
          t3 = t4.get$isEmpty(t4) && t3.rest == null && B.JSArray_methods.every$1(t3.positional, new A._EvaluateVisitor_visitFunctionExpression_closure6());
        } else
          t3 = false;
        if (t3)
          return _this._evaluate0$_visitCalculation$2$inLegacySassFunction(node, true);
        if ("calc" === _0_0 || "clamp" === _0_0 || "hypot" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "sqrt" === _0_0 || "exp" === _0_0 || "sign" === _0_0 || "mod" === _0_0 || "rem" === _0_0 || "atan2" === _0_0 || "pow" === _0_0 || "log" === _0_0)
          return _this._evaluate0$_visitCalculation$1(node);
        if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__stylesheet, _s11_).plainCss)
          $function = null;
        else {
          t3 = _this._evaluate0$_builtInFunctions.$index(0, A.stringReplaceAllUnchecked(t2, "_", "-"));
          $function = t3;
        }
        t1.$function = $function == null ? new A.PlainCssCallable0(t2) : $function;
      }
      oldInFunction = _this._evaluate0$_inFunction;
      _this._evaluate0$_inFunction = true;
      result = _this._evaluate0$_addErrorSpan$2(node, new A._EvaluateVisitor_visitFunctionExpression_closure7(t1, _this, node));
      _this._evaluate0$_inFunction = oldInFunction;
      return result;
    },
    _evaluate0$_visitCalculation$2$inLegacySassFunction(node, inLegacySassFunction) {
      var $arguments, oldCallableNode, t1, _0_0, error, stackTrace, t4, _i, exception, _this = this,
        t2 = node.$arguments,
        t3 = t2.named;
      if (t3.get$isNotEmpty(t3))
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Keywor, node.span));
      else if (t2.rest != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Rest_a, node.span));
      _this._evaluate0$_checkCalculationArguments$1(node);
      t3 = A._setArrayType([], type$.JSArray_Object);
      for (t2 = t2.positional, t4 = t2.length, _i = 0; _i < t4; ++_i)
        t3.push(_this._evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction));
      $arguments = t3;
      if (_this._evaluate0$_inSupportsDeclaration)
        return new A.SassCalculation0(A.stringReplaceAllUnchecked(node.originalName, "_", "-"), A.List_List$unmodifiable($arguments, type$.Object));
      oldCallableNode = _this._evaluate0$_callableNode;
      _this._evaluate0$_callableNode = node;
      try {
        t1 = null;
        _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
        $label0$0: {
          if ("calc" === _0_0) {
            t1 = A.SassCalculation_calc0(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("sqrt" === _0_0) {
            t1 = A.SassCalculation__singleArgument0("sqrt", J.$index$asx($arguments, 0), A.number2__sqrt$closure(), true);
            break $label0$0;
          }
          if ("sin" === _0_0) {
            t1 = A.SassCalculation__singleArgument0("sin", J.$index$asx($arguments, 0), A.number2__sin$closure(), false);
            break $label0$0;
          }
          if ("cos" === _0_0) {
            t1 = A.SassCalculation__singleArgument0("cos", J.$index$asx($arguments, 0), A.number2__cos$closure(), false);
            break $label0$0;
          }
          if ("tan" === _0_0) {
            t1 = A.SassCalculation__singleArgument0("tan", J.$index$asx($arguments, 0), A.number2__tan$closure(), false);
            break $label0$0;
          }
          if ("asin" === _0_0) {
            t1 = A.SassCalculation__singleArgument0("asin", J.$index$asx($arguments, 0), A.number2__asin$closure(), true);
            break $label0$0;
          }
          if ("acos" === _0_0) {
            t1 = A.SassCalculation__singleArgument0("acos", J.$index$asx($arguments, 0), A.number2__acos$closure(), true);
            break $label0$0;
          }
          if ("atan" === _0_0) {
            t1 = A.SassCalculation__singleArgument0("atan", J.$index$asx($arguments, 0), A.number2__atan$closure(), true);
            break $label0$0;
          }
          if ("abs" === _0_0) {
            t1 = A.SassCalculation_abs0(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("exp" === _0_0) {
            t1 = A.SassCalculation_exp0(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("sign" === _0_0) {
            t1 = A.SassCalculation_sign0(J.$index$asx($arguments, 0));
            break $label0$0;
          }
          if ("min" === _0_0) {
            t1 = A.SassCalculation_min0($arguments);
            break $label0$0;
          }
          if ("max" === _0_0) {
            t1 = A.SassCalculation_max0($arguments);
            break $label0$0;
          }
          if ("hypot" === _0_0) {
            t1 = A.SassCalculation_hypot0($arguments);
            break $label0$0;
          }
          if ("pow" === _0_0) {
            t1 = A.SassCalculation_pow0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("atan2" === _0_0) {
            t1 = A.SassCalculation_atan20(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("log" === _0_0) {
            t1 = A.SassCalculation_log0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("mod" === _0_0) {
            t1 = A.SassCalculation_mod0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("rem" === _0_0) {
            t1 = A.SassCalculation_rem0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1));
            break $label0$0;
          }
          if ("round" === _0_0) {
            t1 = A.SassCalculation_round0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
            break $label0$0;
          }
          if ("clamp" === _0_0) {
            t1 = A.SassCalculation_clamp0(J.$index$asx($arguments, 0), A.ListExtensions_elementAtOrNull($arguments, 1), A.ListExtensions_elementAtOrNull($arguments, 2));
            break $label0$0;
          }
          t3 = A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".');
          t1 = A.throwExpression(t3);
        }
        t1 = t1;
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassScriptException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          if (B.JSString_methods.contains$1(error.message, "compatible"))
            _this._evaluate0$_verifyCompatibleNumbers$2($arguments, t2);
          A.throwWithTrace0(_this._evaluate0$_exception$2(error.message, node.span), error, stackTrace);
        } else
          throw exception;
      } finally {
        _this._evaluate0$_callableNode = oldCallableNode;
      }
    },
    _evaluate0$_visitCalculation$1(node) {
      return this._evaluate0$_visitCalculation$2$inLegacySassFunction(node, false);
    },
    _evaluate0$_checkCalculationArguments$1(node) {
      var _0_0,
        check = new A._EvaluateVisitor__checkCalculationArguments_check1(this, node);
      $label0$0: {
        _0_0 = A.stringReplaceAllUnchecked(node.originalName, "_", "-").toLowerCase();
        if ("calc" === _0_0 || "sqrt" === _0_0 || "sin" === _0_0 || "cos" === _0_0 || "tan" === _0_0 || "asin" === _0_0 || "acos" === _0_0 || "atan" === _0_0 || "abs" === _0_0 || "exp" === _0_0 || "sign" === _0_0) {
          check.call$1(1);
          break $label0$0;
        }
        if ("min" === _0_0 || "max" === _0_0 || "hypot" === _0_0) {
          check.call$0();
          break $label0$0;
        }
        if ("pow" === _0_0 || "atan2" === _0_0 || "log" === _0_0 || "mod" === _0_0 || "rem" === _0_0) {
          check.call$1(2);
          break $label0$0;
        }
        if ("round" === _0_0 || "clamp" === _0_0) {
          check.call$1(3);
          break $label0$0;
        }
        throw A.wrapException(A.UnsupportedError$('Unknown calculation name "' + node.get$name(node) + '".'));
      }
    },
    _evaluate0$_verifyCompatibleNumbers$2(args, nodesWithSpans) {
      var i, t1, _0_0, arg, number1, j, number2;
      for (i = 0; t1 = args.length, i < t1; ++i) {
        _0_0 = args[i];
        if (_0_0 instanceof A.SassNumber0) {
          t1 = _0_0.get$hasComplexUnits();
          arg = _0_0;
        } else {
          arg = null;
          t1 = false;
        }
        if (t1)
          throw A.wrapException(this._evaluate0$_exception$2("Number " + A.S(arg) + " isn't compatible with CSS calculations.", J.get$span$z(nodesWithSpans[i])));
      }
      for (i = 0; i < t1 - 1; ++i) {
        number1 = args[i];
        if (!(number1 instanceof A.SassNumber0))
          continue;
        for (j = i + 1; t1 = args.length, j < t1; ++j) {
          number2 = args[j];
          if (!(number2 instanceof A.SassNumber0))
            continue;
          if (number1.hasPossiblyCompatibleUnits$1(number2))
            continue;
          throw A.wrapException(A.MultiSpanSassRuntimeException$0(number1.toString$0(0) + " and " + number2.toString$0(0) + " are incompatible.", J.get$span$z(nodesWithSpans[i]), number1.toString$0(0), A.LinkedHashMap_LinkedHashMap$_literal([J.get$span$z(nodesWithSpans[j]), number2.toString$0(0)], type$.FileSpan, type$.String), this._evaluate0$_stackTrace$1(J.get$span$z(nodesWithSpans[i])), null));
        }
      }
    },
    _evaluate0$_visitCalculationExpression$2$inLegacySassFunction(node, inLegacySassFunction) {
      var inner, t1, result, t2, _0_0, _1_0, t3, _i, i, _this = this, _null = null, _box_0 = {};
      if (node instanceof A.ParenthesizedExpression0) {
        inner = node.expression;
        t1 = true;
      } else {
        inner = _null;
        t1 = false;
      }
      if (t1) {
        result = _this._evaluate0$_visitCalculationExpression$2$inLegacySassFunction(inner, inLegacySassFunction);
        return result instanceof A.SassString0 ? new A.SassString0("(" + result._string0$_text + ")", false) : result;
      }
      if (node instanceof A.StringExpression0 && node.accept$1(new A._IsCalculationSafeVisitor0())) {
        t1 = node.text;
        t2 = t1.get$asPlain();
        _0_0 = t2 == null ? _null : t2.toLowerCase();
        $label0$0: {
          if ("pi" === _0_0) {
            t1 = A.SassNumber_SassNumber0(3.141592653589793, _null);
            break $label0$0;
          }
          if ("e" === _0_0) {
            t1 = A.SassNumber_SassNumber0(2.718281828459045, _null);
            break $label0$0;
          }
          if ("infinity" === _0_0) {
            t1 = A.SassNumber_SassNumber0(1 / 0, _null);
            break $label0$0;
          }
          if ("-infinity" === _0_0) {
            t1 = A.SassNumber_SassNumber0(-1 / 0, _null);
            break $label0$0;
          }
          if ("nan" === _0_0) {
            t1 = A.SassNumber_SassNumber0(0 / 0, _null);
            break $label0$0;
          }
          t1 = new A.SassString0(_this._evaluate0$_performInterpolation$1(t1), false);
          break $label0$0;
        }
        return t1;
      }
      _box_0.right = _box_0.left = _box_0.operator = null;
      if (node instanceof A.BinaryOperationExpression0) {
        _box_0.operator = node.operator;
        _box_0.left = node.left;
        _box_0.right = node.right;
        t1 = true;
      } else
        t1 = false;
      if (t1) {
        _this._evaluate0$_checkWhitespaceAroundCalculationOperator$1(node);
        return _this._evaluate0$_addExceptionSpan$2(node, new A._EvaluateVisitor__visitCalculationExpression_closure1(_box_0, _this, node, inLegacySassFunction));
      }
      if (node instanceof A.NumberExpression0 || node instanceof A.VariableExpression0 || node instanceof A.FunctionExpression0 || node instanceof A.IfExpression0) {
        _1_0 = node.accept$1(_this);
        $label1$1: {
          if (_1_0 instanceof A.SassNumber0) {
            result = _1_0;
            t1 = true;
          } else {
            result = _null;
            t1 = false;
          }
          if (t1) {
            t1 = result;
            break $label1$1;
          }
          if (_1_0 instanceof A.SassCalculation0) {
            result = _1_0;
            t1 = true;
          } else {
            result = _null;
            t1 = false;
          }
          if (t1) {
            t1 = result;
            break $label1$1;
          }
          if (_1_0 instanceof A.SassString0) {
            t1 = !_1_0._string0$_hasQuotes;
            result = _1_0;
          } else {
            result = _null;
            t1 = false;
          }
          if (t1) {
            t1 = result;
            break $label1$1;
          }
          t1 = A.throwExpression(_this._evaluate0$_exception$2("Value " + _1_0.toString$0(0) + " can't be used in a calculation.", node.get$span(node)));
        }
        return t1;
      }
      if (node instanceof A.ListExpression0 && !node.hasBrackets && B.ListSeparator_EVt0 === node.separator && node.contents.length >= 2) {
        t1 = A._setArrayType([], type$.JSArray_Object);
        for (t2 = node.contents, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t1.push(_this._evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2[_i], inLegacySassFunction));
        _this._evaluate0$_checkAdjacentCalculationValues$2(t1, node);
        for (i = 0; i < t1.length; ++i) {
          t3 = t1[i];
          if (t3 instanceof A.CalculationOperation0 && t2[i] instanceof A.ParenthesizedExpression0)
            t1[i] = new A.SassString0("(" + A.S(t3) + ")", false);
        }
        return new A.SassString0(B.JSArray_methods.join$1(t1, " "), false);
      }
      throw A.wrapException(_this._evaluate0$_exception$2(string$.This_e, node.get$span(node)));
    },
    _evaluate0$_checkWhitespaceAroundCalculationOperator$1(node) {
      var t2, t3, t4, textBetweenOperands, first, last,
        t1 = node.operator;
      if (t1 !== B.BinaryOperator_anB0 && t1 !== B.BinaryOperator_olz0)
        return;
      t1 = node.left;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t3 = node.right;
      t4 = t3.get$span(t3);
      if (t2 !== t4.get$file(t4))
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$end(t2);
      t4 = t3.get$span(t3);
      if (t2.offset >= t4.get$start(t4).offset)
        return;
      t2 = t1.get$span(t1);
      t2 = t2.get$file(t2);
      t1 = t1.get$span(t1);
      t1 = t1.get$end(t1);
      t3 = t3.get$span(t3);
      textBetweenOperands = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2._decodedChars, t1.offset, t3.get$start(t3).offset), 0, null);
      first = textBetweenOperands.charCodeAt(0);
      last = textBetweenOperands.charCodeAt(textBetweenOperands.length - 1);
      if (first === 32 || first === 9 || first === 10 || first === 13 || first === 12 || first === 47)
        t1 = !(last === 32 || last === 9 || last === 10 || last === 13 || last === 12 || last === 47);
      else
        t1 = true;
      if (t1)
        throw A.wrapException(this._evaluate0$_exception$2(string$.x22x2b__an, node.get$operatorSpan()));
    },
    _evaluate0$_binaryOperatorToCalculationOperator$2(operator, node) {
      var t1;
      $label0$0: {
        if (B.BinaryOperator_anB0 === operator) {
          t1 = B.CalculationOperator_IyK0;
          break $label0$0;
        }
        if (B.BinaryOperator_olz0 === operator) {
          t1 = B.CalculationOperator_2bx0;
          break $label0$0;
        }
        if (B.BinaryOperator_qN20 === operator) {
          t1 = B.CalculationOperator_jFr0;
          break $label0$0;
        }
        if (B.BinaryOperator_t8B0 === operator) {
          t1 = B.CalculationOperator_OvN0;
          break $label0$0;
        }
        t1 = A.throwExpression(this._evaluate0$_exception$2(string$.This_o, node.get$operatorSpan()));
      }
      return t1;
    },
    _evaluate0$_checkAdjacentCalculationValues$2(elements, node) {
      var t1, i, t2, previous, current, previousNode, currentNode, _0_2;
      for (t1 = elements.length, i = 1; i < t1; ++i) {
        t2 = i - 1;
        previous = elements[t2];
        current = elements[i];
        if (previous instanceof A.SassString0 || current instanceof A.SassString0)
          continue;
        t1 = node.contents;
        previousNode = t1[t2];
        currentNode = t1[i];
        _0_2 = A._InitializedCell$(new A._EvaluateVisitor__checkAdjacentCalculationValues_closure1(currentNode));
        if (currentNode instanceof A.UnaryOperationExpression0)
          t1 = B.UnaryOperator_TLI0 === _0_2._readFinal$0() || B.UnaryOperator_gg40 === _0_2._readFinal$0();
        else
          t1 = false;
        if (!t1)
          t1 = currentNode instanceof A.NumberExpression0 && currentNode.value < 0;
        else
          t1 = true;
        if (t1)
          throw A.wrapException(this._evaluate0$_exception$2(string$.x22x2b__an, A.FileSpanExtension_subspan(currentNode.get$span(currentNode), 0, 1)));
        else
          throw A.wrapException(this._evaluate0$_exception$2("Missing math operator.", previousNode.get$span(previousNode).expand$1(0, currentNode.get$span(currentNode))));
      }
    },
    visitInterpolatedFunctionExpression$1(node) {
      var result, _this = this,
        t1 = _this._evaluate0$_performInterpolation$1(node.name),
        oldInFunction = _this._evaluate0$_inFunction;
      _this._evaluate0$_inFunction = true;
      result = _this._evaluate0$_addErrorSpan$2(node, new A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure1(_this, node, new A.PlainCssCallable0(t1)));
      _this._evaluate0$_inFunction = oldInFunction;
      return result;
    },
    _evaluate0$_runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, run, $V) {
      var oldCallable, result, _this = this,
        evaluated = _this._evaluate0$_evaluateArguments$1($arguments),
        $name = callable.declaration.name;
      if ($name !== "@content")
        $name += "()";
      oldCallable = _this._evaluate0$_currentCallable;
      _this._evaluate0$_currentCallable = callable;
      result = _this._evaluate0$_withStackFrame$3($name, nodeWithSpan, new A._EvaluateVisitor__runUserDefinedCallable_closure1(_this, callable, evaluated, nodeWithSpan, run, $V));
      _this._evaluate0$_currentCallable = oldCallable;
      return result;
    },
    _evaluate0$_runFunctionCallable$3($arguments, callable, nodeWithSpan) {
      var buffer, first, argument, restArg, rest, error, t1, t2, _i, t3, exception, _this = this;
      if (callable instanceof A.BuiltInCallable0)
        return _this._evaluate0$_withoutSlash$2(_this._evaluate0$_runBuiltInCallable$3($arguments, callable, nodeWithSpan), nodeWithSpan);
      else if (type$.UserDefinedCallable_Environment_2._is(callable))
        return _this._evaluate0$_runUserDefinedCallable$1$4($arguments, callable, nodeWithSpan, new A._EvaluateVisitor__runFunctionCallable_closure1(_this, callable), type$.Value_2);
      else if (callable instanceof A.PlainCssCallable0) {
        t1 = $arguments.named;
        if (t1.get$isNotEmpty(t1) || $arguments.keywordRest != null)
          throw A.wrapException(_this._evaluate0$_exception$2(string$.Plain_, nodeWithSpan.get$span(nodeWithSpan)));
        buffer = new A.StringBuffer(callable.name + "(");
        try {
          first = true;
          for (t1 = $arguments.positional, t2 = t1.length, _i = 0; _i < t2; ++_i) {
            argument = t1[_i];
            if (first)
              first = false;
            else
              buffer._contents += ", ";
            t3 = argument;
            buffer._contents += _this._evaluate0$_serialize$3$quote(t3.accept$1(_this), t3, true);
          }
          restArg = $arguments.rest;
          if (restArg != null) {
            rest = restArg.accept$1(_this);
            if (!first)
              buffer._contents += ", ";
            buffer._contents += _this._evaluate0$_serialize$2(rest, restArg);
          }
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (type$.SassRuntimeException_2._is(t1)) {
            error = t1;
            if (!B.JSString_methods.endsWith$1(error._span_exception$_message, "isn't a valid CSS value."))
              throw exception;
            throw A.wrapException(A.MultiSpanSassRuntimeException$0(error._span_exception$_message, J.get$span$z(error), "value", A.LinkedHashMap_LinkedHashMap$_literal([nodeWithSpan.get$span(nodeWithSpan), "unknown function treated as plain CSS"], type$.FileSpan, type$.String), J.get$trace$z(error), null));
          } else
            throw exception;
        }
        buffer._contents += A.Primitives_stringFromCharCode(41);
        t1 = buffer._contents;
        return new A.SassString0(t1.charCodeAt(0) == 0 ? t1 : t1, false);
      } else
        throw A.wrapException(A.ArgumentError$("Unknown callable type " + J.get$runtimeType$(callable).toString$0(0) + ".", null));
    },
    _evaluate0$_runBuiltInCallable$3($arguments, callable, nodeWithSpan) {
      var result, error, stackTrace, message, namedSet, _0_0, declaredArguments, i, t1, argument, t2, t3, rest, argumentList, exception, message0, _this = this, _box_0 = {},
        evaluated = _this._evaluate0$_evaluateArguments$1($arguments),
        oldCallableNode = _this._evaluate0$_callableNode;
      _this._evaluate0$_callableNode = nodeWithSpan;
      namedSet = new A.MapKeySet(evaluated._values[0], type$.MapKeySet_String);
      _box_0.callback = _box_0.overload = null;
      _0_0 = callable.callbackFor$2(evaluated._values[2].length, namedSet);
      _box_0.overload = _0_0._0;
      _box_0.callback = _0_0._1;
      _this._evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure5(_box_0, evaluated, namedSet));
      declaredArguments = _box_0.overload.$arguments;
      for (i = evaluated._values[2].length, t1 = declaredArguments.length; i < t1; ++i) {
        argument = declaredArguments[i];
        t2 = evaluated._values[2];
        t3 = evaluated._values[0].remove$1(0, argument.name);
        if (t3 == null) {
          t3 = argument.defaultValue;
          t3 = _this._evaluate0$_withoutSlash$2(t3.accept$1(_this), t3);
        }
        t2.push(t3);
      }
      if (_box_0.overload.restArgument != null) {
        if (evaluated._values[2].length > t1) {
          rest = B.JSArray_methods.sublist$1(evaluated._values[2], t1);
          B.JSArray_methods.removeRange$2(evaluated._values[2], t1, evaluated._values[2].length);
        } else
          rest = B.List_empty19;
        t1 = evaluated._values[0];
        argumentList = A.SassArgumentList$0(rest, t1, evaluated._values[4] === B.ListSeparator_undecided_null_undecided0 ? B.ListSeparator_rXA0 : evaluated._values[4]);
        evaluated._values[2].push(argumentList);
      } else
        argumentList = null;
      result = null;
      try {
        result = _this._evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__runBuiltInCallable_closure6(_box_0, evaluated));
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0)
          throw exception;
        else {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          message = null;
          try {
            message = A._asString(J.get$message$x(error));
          } catch (exception) {
            message0 = J.toString$0$(error);
            message = message0;
          }
          A.throwWithTrace0(_this._evaluate0$_exception$2(message, nodeWithSpan.get$span(nodeWithSpan)), error, stackTrace);
        }
      }
      _this._evaluate0$_callableNode = oldCallableNode;
      if (argumentList == null)
        return result;
      if (evaluated._values[0].__js_helper$_length === 0)
        return result;
      if (argumentList._argument_list$_wereKeywordsAccessed)
        return result;
      t1 = evaluated._values[0];
      t1 = t1.get$keys(t1);
      t1 = A.pluralize0("argument", t1.get$length(t1), null);
      t2 = evaluated._values[0];
      throw A.wrapException(A.MultiSpanSassRuntimeException$0("No " + t1 + " named " + A.toSentence0(t2.get$keys(t2).map$1$1(0, new A._EvaluateVisitor__runBuiltInCallable_closure7(), type$.Object), "or") + ".", nodeWithSpan.get$span(nodeWithSpan), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([_box_0.overload.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), _this._evaluate0$_stackTrace$1(nodeWithSpan.get$span(nodeWithSpan)), null));
    },
    _evaluate0$_evaluateArguments$1($arguments) {
      var t1, t2, _i, expression, nodeForSpan, named, namedNodes, t3, t4, $name, value, restArgs, rest, restNodeForSpan, t5, separator, keywordRestArgs, keywordRest, keywordRestNodeForSpan, _this = this,
        positional = A._setArrayType([], type$.JSArray_Value_2),
        positionalNodes = A._setArrayType([], type$.JSArray_AstNode_2);
      for (t1 = $arguments.positional, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        expression = t1[_i];
        nodeForSpan = _this._evaluate0$_expressionNode$1(expression);
        positional.push(_this._evaluate0$_withoutSlash$2(expression.accept$1(_this), nodeForSpan));
        positionalNodes.push(nodeForSpan);
      }
      t1 = type$.String;
      named = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Value_2);
      t2 = type$.AstNode_2;
      namedNodes = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
      for (t3 = A.MapExtensions_get_pairs0($arguments.named, t1, type$.Expression_2), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        nodeForSpan = _this._evaluate0$_expressionNode$1(value);
        named.$indexSet(0, $name, _this._evaluate0$_withoutSlash$2(value.accept$1(_this), nodeForSpan));
        namedNodes.$indexSet(0, $name, nodeForSpan);
      }
      restArgs = $arguments.rest;
      if (restArgs == null)
        return new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, B.ListSeparator_undecided_null_undecided0]);
      rest = restArgs.accept$1(_this);
      restNodeForSpan = _this._evaluate0$_expressionNode$1(restArgs);
      if (rest instanceof A.SassMap0) {
        _this._evaluate0$_addRestMap$4(named, rest, restArgs, new A._EvaluateVisitor__evaluateArguments_closure7());
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t4 = rest._map0$_contents, t4 = J.get$iterator$ax(t4.get$keys(t4)), t5 = type$.SassString_2; t4.moveNext$0();)
          t3.$indexSet(0, t5._as(t4.get$current(t4))._string0$_text, restNodeForSpan);
        namedNodes.addAll$1(0, t3);
        separator = B.ListSeparator_undecided_null_undecided0;
      } else if (rest instanceof A.SassList0) {
        t3 = rest._list1$_contents;
        B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t3, new A._EvaluateVisitor__evaluateArguments_closure8(_this, restNodeForSpan), A._arrayInstanceType(t3)._eval$1("MappedListIterable<1,Value0>")));
        B.JSArray_methods.addAll$1(positionalNodes, A.List_List$filled(t3.length, restNodeForSpan, false, t2));
        separator = rest._list1$_separator;
        if (rest instanceof A.SassArgumentList0) {
          rest._argument_list$_wereKeywordsAccessed = true;
          rest._argument_list$_keywords.forEach$1(0, new A._EvaluateVisitor__evaluateArguments_closure9(_this, named, restNodeForSpan, namedNodes));
        }
      } else {
        positional.push(_this._evaluate0$_withoutSlash$2(rest, restNodeForSpan));
        positionalNodes.push(restNodeForSpan);
        separator = B.ListSeparator_undecided_null_undecided0;
      }
      keywordRestArgs = $arguments.keywordRest;
      if (keywordRestArgs == null)
        return new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
      keywordRest = keywordRestArgs.accept$1(_this);
      keywordRestNodeForSpan = _this._evaluate0$_expressionNode$1(keywordRestArgs);
      if (keywordRest instanceof A.SassMap0) {
        _this._evaluate0$_addRestMap$4(named, keywordRest, keywordRestArgs, new A._EvaluateVisitor__evaluateArguments_closure10());
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
        for (t2 = keywordRest._map0$_contents, t2 = J.get$iterator$ax(t2.get$keys(t2)), t3 = type$.SassString_2; t2.moveNext$0();)
          t1.$indexSet(0, t3._as(t2.get$current(t2))._string0$_text, keywordRestNodeForSpan);
        namedNodes.addAll$1(0, t1);
        return new A._Record_5_named_namedNodes_positional_positionalNodes_separator([named, namedNodes, positional, positionalNodes, separator]);
      } else
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs.get$span(keywordRestArgs)));
    },
    _evaluate0$_evaluateMacroArguments$1(invocation) {
      var t2, positional, named, rest, restNodeForSpan, keywordRestArgs_, keywordRest, keywordRestNodeForSpan, _this = this,
        t1 = invocation.$arguments,
        restArgs_ = t1.rest;
      if (restArgs_ == null)
        return new A._Record_2(t1.positional, t1.named);
      t2 = t1.positional;
      positional = A._setArrayType(t2.slice(0), A._arrayInstanceType(t2));
      named = A.LinkedHashMap_LinkedHashMap$of(t1.named, type$.String, type$.Expression_2);
      rest = restArgs_.accept$1(_this);
      restNodeForSpan = _this._evaluate0$_expressionNode$1(restArgs_);
      if (rest instanceof A.SassMap0)
        _this._evaluate0$_addRestMap$4(named, rest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure7(restArgs_));
      else if (rest instanceof A.SassList0) {
        t2 = rest._list1$_contents;
        B.JSArray_methods.addAll$1(positional, new A.MappedListIterable(t2, new A._EvaluateVisitor__evaluateMacroArguments_closure8(_this, restNodeForSpan, restArgs_), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,Expression0>")));
        if (rest instanceof A.SassArgumentList0) {
          rest._argument_list$_wereKeywordsAccessed = true;
          rest._argument_list$_keywords.forEach$1(0, new A._EvaluateVisitor__evaluateMacroArguments_closure9(_this, named, restNodeForSpan, restArgs_));
        }
      } else
        positional.push(new A.ValueExpression0(_this._evaluate0$_withoutSlash$2(rest, restNodeForSpan), restArgs_.get$span(restArgs_)));
      keywordRestArgs_ = t1.keywordRest;
      if (keywordRestArgs_ == null)
        return new A._Record_2(positional, named);
      keywordRest = keywordRestArgs_.accept$1(_this);
      keywordRestNodeForSpan = _this._evaluate0$_expressionNode$1(keywordRestArgs_);
      if (keywordRest instanceof A.SassMap0) {
        _this._evaluate0$_addRestMap$4(named, keywordRest, invocation, new A._EvaluateVisitor__evaluateMacroArguments_closure10(_this, keywordRestNodeForSpan, keywordRestArgs_));
        return new A._Record_2(positional, named);
      } else
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Variabs + keywordRest.toString$0(0) + ").", keywordRestArgs_.get$span(keywordRestArgs_)));
    },
    _evaluate0$_addRestMap$1$4(values, map, nodeWithSpan, convert) {
      map._map0$_contents.forEach$1(0, new A._EvaluateVisitor__addRestMap_closure1(this, values, convert, this._evaluate0$_expressionNode$1(nodeWithSpan), map, nodeWithSpan));
    },
    _evaluate0$_addRestMap$4(values, map, nodeWithSpan, convert) {
      return this._evaluate0$_addRestMap$1$4(values, map, nodeWithSpan, convert, type$.dynamic);
    },
    _evaluate0$_verifyArguments$4(positional, named, $arguments, nodeWithSpan) {
      return this._evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__verifyArguments_closure1($arguments, positional, named));
    },
    visitSelectorExpression$1(node) {
      var t1 = this._evaluate0$_styleRuleIgnoringAtRoot;
      t1 = t1 == null ? null : t1.originalSelector.get$asSassList();
      return t1 == null ? B.C__SassNull0 : t1;
    },
    visitStringExpression$1(node) {
      var t1, t2, t3, t4, _i, value, t5, _0_0, text, _this = this,
        oldInSupportsDeclaration = _this._evaluate0$_inSupportsDeclaration;
      _this._evaluate0$_inSupportsDeclaration = false;
      t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = node.text.contents, t3 = t2.length, t4 = type$.Expression_2, _i = 0; _i < t3; ++_i) {
        value = t2[_i];
        $label0$0: {
          if (typeof value == "string") {
            t5 = value;
            break $label0$0;
          }
          if (t4._is(value)) {
            _0_0 = value.accept$1(_this);
            $label1$1: {
              if (_0_0 instanceof A.SassString0) {
                text = _0_0._string0$_text;
                t5 = true;
              } else {
                text = null;
                t5 = false;
              }
              if (t5) {
                t5 = text;
                break $label1$1;
              }
              t5 = _this._evaluate0$_serialize$3$quote(_0_0, value, false);
              break $label1$1;
            }
            break $label0$0;
          }
          t5 = A.throwExpression(A.UnsupportedError$("Unknown interpolation value " + A.S(value)));
        }
        t1.push(t5);
      }
      t1 = B.JSArray_methods.join$0(t1);
      _this._evaluate0$_inSupportsDeclaration = oldInSupportsDeclaration;
      return new A.SassString0(t1, node.hasQuotes);
    },
    visitSupportsExpression$1(expression) {
      return new A.SassString0(this._evaluate0$_visitSupportsCondition$1(expression.condition), false);
    },
    visitCssAtRule$1(node) {
      var wasInKeyframes, wasInUnknownAtRule, t1, _this = this;
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.At_rul, node.span));
      if (node.isChildless) {
        _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, "__parent").addChild$1(A.ModifiableCssAtRule$0(node.name, node.span, true, node.value));
        return;
      }
      wasInKeyframes = _this._evaluate0$_inKeyframes;
      wasInUnknownAtRule = _this._evaluate0$_inUnknownAtRule;
      t1 = node.name;
      if (A.unvendor0(t1.value) === "keyframes")
        _this._evaluate0$_inKeyframes = true;
      else
        _this._evaluate0$_inUnknownAtRule = true;
      _this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssAtRule$0(t1, node.span, false, node.value), new A._EvaluateVisitor_visitCssAtRule_closure3(_this, node), false, new A._EvaluateVisitor_visitCssAtRule_closure4(), type$.ModifiableCssAtRule_2, type$.Null);
      _this._evaluate0$_inUnknownAtRule = wasInUnknownAtRule;
      _this._evaluate0$_inKeyframes = wasInKeyframes;
    },
    visitCssComment$1(node) {
      var _this = this,
        _s8_ = "__parent",
        _s13_ = "_endOfImports";
      if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_) === _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, "_root") && _this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) === J.get$length$asx(_this._evaluate0$_assertInModule$2(_this._evaluate0$__root, "_root").children._collection$_source))
        _this._evaluate0$__endOfImports = _this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) + 1;
      _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_).addChild$1(new A.ModifiableCssComment0(node.text, node.span));
    },
    visitCssDeclaration$1(node) {
      this._evaluate0$_assertInModule$2(this._evaluate0$__parent, "__parent").addChild$1(A.ModifiableCssDeclaration$0(node.name, node.value, node.span, node.parsedAsCustomProperty, node.valueSpanForMap));
    },
    visitCssImport$1(node) {
      var t1, _this = this,
        _s8_ = "__parent",
        _s5_ = "_root",
        _s13_ = "_endOfImports",
        modifiableNode = new A.ModifiableCssImport0(node.url, node.modifiers, node.span);
      if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_) !== _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_))
        _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, _s8_).addChild$1(modifiableNode);
      else if (_this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) === J.get$length$asx(_this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_).children._collection$_source)) {
        _this._evaluate0$_assertInModule$2(_this._evaluate0$__root, _s5_).addChild$1(modifiableNode);
        _this._evaluate0$__endOfImports = _this._evaluate0$_assertInModule$2(_this._evaluate0$__endOfImports, _s13_) + 1;
      } else {
        t1 = _this._evaluate0$_outOfOrderImports;
        (t1 == null ? _this._evaluate0$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport_2) : t1).push(modifiableNode);
      }
    },
    visitCssKeyframeBlock$1(node) {
      this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssKeyframeBlock$0(node.selector, node.span), new A._EvaluateVisitor_visitCssKeyframeBlock_closure3(this, node), false, new A._EvaluateVisitor_visitCssKeyframeBlock_closure4(), type$.ModifiableCssKeyframeBlock_2, type$.Null);
    },
    visitCssMediaRule$1(node) {
      var mergedQueries, t1, mergedSources, t2, t3, _this = this;
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Media_, node.span));
      mergedQueries = A.NullableExtension_andThen0(_this._evaluate0$_mediaQueries, new A._EvaluateVisitor_visitCssMediaRule_closure5(_this, node));
      t1 = mergedQueries == null;
      if (!t1 && J.get$isEmpty$asx(mergedQueries))
        return;
      if (t1)
        mergedSources = B.Set_empty5;
      else {
        t2 = _this._evaluate0$_mediaQuerySources;
        t2.toString;
        t2 = A.LinkedHashSet_LinkedHashSet$of(t2, type$.CssMediaQuery_2);
        t3 = _this._evaluate0$_mediaQueries;
        t3.toString;
        t2.addAll$1(0, t3);
        t2.addAll$1(0, node.queries);
        mergedSources = t2;
      }
      t1 = t1 ? node.queries : mergedQueries;
      _this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssMediaRule$0(t1, node.span), new A._EvaluateVisitor_visitCssMediaRule_closure6(_this, mergedQueries, node, mergedSources), false, new A._EvaluateVisitor_visitCssMediaRule_closure7(mergedSources), type$.ModifiableCssMediaRule_2, type$.Null);
    },
    visitCssStyleRule$1(node) {
      var t1, styleRule, t2, t3, t4, originalSelector, rule, oldAtRootExcludingStyleRule, _0_0, _0_1, lastChild, _this = this;
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Style_, node.span));
      t1 = _this._evaluate0$_atRootExcludingStyleRule;
      styleRule = t1 ? null : _this._evaluate0$_styleRuleIgnoringAtRoot;
      t2 = node._style_rule0$_selector._box0$_inner.value;
      t3 = styleRule == null;
      t4 = t3 ? null : styleRule.originalSelector;
      originalSelector = t2.resolveParentSelectors$2$implicitParent(t4, !t1);
      rule = A.ModifiableCssStyleRule$0(_this._evaluate0$_assertInModule$2(_this._evaluate0$__extensionStore, "_extensionStore").addSelector$2(originalSelector, _this._evaluate0$_mediaQueries), node.span, originalSelector);
      oldAtRootExcludingStyleRule = _this._evaluate0$_atRootExcludingStyleRule;
      _this._evaluate0$_atRootExcludingStyleRule = false;
      _this._evaluate0$_withParent$2$4$scopeWhen$through(rule, new A._EvaluateVisitor_visitCssStyleRule_closure5(_this, rule, node), false, new A._EvaluateVisitor_visitCssStyleRule_closure6(), type$.ModifiableCssStyleRule_2, type$.Null);
      _this._evaluate0$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
      _0_0 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, "__parent").children;
      _0_1 = A._InitializedCell$(new A._EvaluateVisitor_visitCssStyleRule_closure7(_0_0));
      if (_0_1._readFinal$0() >= 1) {
        lastChild = J.elementAt$1$ax(_0_0._collection$_source, _0_1._readFinal$0() - 1);
        t1 = t3;
      } else {
        lastChild = null;
        t1 = false;
      }
      if (t1)
        lastChild.isGroupEnd = true;
    },
    visitCssStylesheet$1(node) {
      var t1;
      for (t1 = J.get$iterator$ax(node.get$children(node)); t1.moveNext$0();)
        t1.get$current(t1).accept$1(this);
    },
    visitCssSupportsRule$1(node) {
      var _this = this;
      if (_this._evaluate0$_declarationName != null)
        throw A.wrapException(_this._evaluate0$_exception$2(string$.Suppor, node.span));
      _this._evaluate0$_withParent$2$4$scopeWhen$through(A.ModifiableCssSupportsRule$0(node.condition, node.span), new A._EvaluateVisitor_visitCssSupportsRule_closure3(_this, node), false, new A._EvaluateVisitor_visitCssSupportsRule_closure4(), type$.ModifiableCssSupportsRule_2, type$.Null);
    },
    _evaluate0$_handleReturn$1$2(list, callback) {
      var t1, _i, _0_0, result, t2;
      for (t1 = list.length, _i = 0; _i < list.length; list.length === t1 || (0, A.throwConcurrentModificationError)(list), ++_i) {
        _0_0 = callback.call$1(list[_i]);
        if (_0_0 != null) {
          result = _0_0;
          t2 = true;
        } else {
          result = null;
          t2 = false;
        }
        if (t2)
          return result;
      }
      return null;
    },
    _evaluate0$_handleReturn$2(list, callback) {
      return this._evaluate0$_handleReturn$1$2(list, callback, type$.dynamic);
    },
    _evaluate0$_withEnvironment$1$2(environment, callback) {
      var result,
        oldEnvironment = this._evaluate0$_environment;
      this._evaluate0$_environment = environment;
      result = callback.call$0();
      this._evaluate0$_environment = oldEnvironment;
      return result;
    },
    _evaluate0$_withEnvironment$2(environment, callback) {
      return this._evaluate0$_withEnvironment$1$2(environment, callback, type$.dynamic);
    },
    _evaluate0$_interpolationToValue$3$trim$warnForColor(interpolation, trim, warnForColor) {
      var result = this._evaluate0$_performInterpolation$2$warnForColor(interpolation, warnForColor),
        t1 = trim ? A.trimAscii0(result, true) : result;
      return new A.CssValue0(t1, interpolation.span, type$.CssValue_String_2);
    },
    _evaluate0$_interpolationToValue$1(interpolation) {
      return this._evaluate0$_interpolationToValue$3$trim$warnForColor(interpolation, false, false);
    },
    _evaluate0$_interpolationToValue$2$warnForColor(interpolation, warnForColor) {
      return this._evaluate0$_interpolationToValue$3$trim$warnForColor(interpolation, false, warnForColor);
    },
    _evaluate0$_performInterpolation$2$warnForColor(interpolation, warnForColor) {
      var _0_0 = this._evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, false, warnForColor);
      return _0_0._0;
    },
    _evaluate0$_performInterpolation$1(interpolation) {
      return this._evaluate0$_performInterpolation$2$warnForColor(interpolation, false);
    },
    _evaluate0$_performInterpolationWithMap$2$warnForColor(interpolation, warnForColor) {
      var _0_0 = this._evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, true, true),
        map = _0_0._1;
      map.toString;
      return new A._Record_2(_0_0._0, map);
    },
    _evaluate0$_performInterpolationHelper$3$sourceMap$warnForColor(interpolation, sourceMap, warnForColor) {
      var t1, t2, t3, t4, t5, t6, t7, first, _i, t8, value, result, t9, result0, _this = this, _null = null,
        targetLocations = sourceMap ? A._setArrayType([], type$.JSArray_SourceLocation) : _null,
        oldInSupportsDeclaration = _this._evaluate0$_inSupportsDeclaration;
      _this._evaluate0$_inSupportsDeclaration = false;
      for (t1 = interpolation.contents, t2 = t1.length, t3 = type$.Expression_2, t4 = targetLocations == null, t5 = type$.JSArray_Object, t6 = interpolation.span, t7 = type$.Object, first = true, _i = 0, t8 = ""; _i < t2; ++_i, first = false) {
        value = t1[_i];
        if (!first)
          if (!t4)
            targetLocations.push(A.SourceLocation$(t8.length, _null, _null, _null));
        if (typeof value == "string") {
          t8 += value;
          continue;
        }
        t3._as(value);
        result = value.accept$1(_this);
        if (warnForColor && $.$get$namesByColor0().containsKey$1(result)) {
          t9 = A._setArrayType([""], t5);
          result0 = A.List_List$from(t9, false, t7);
          result0.fixed$length = Array;
          result0.immutable$list = Array;
          result0 = new A.Interpolation0(result0, t6);
          result0.Interpolation$20(t9, t6);
          t9 = $.$get$namesByColor0();
          _this._evaluate0$_warn$2(string$.You_pr + A.S(t9.$index(0, result)) + string$.x20in_in + result.toString$0(0) + string$.x2c_whicw + A.S(t9.$index(0, result)) + string$.x22x29__If + new A.BinaryOperationExpression0(B.BinaryOperator_anB0, new A.StringExpression0(result0, true), value, false).toString$0(0) + "'.", value.get$span(value));
        }
        t8 += _this._evaluate0$_serialize$3$quote(result, value, false);
      }
      _this._evaluate0$_inSupportsDeclaration = oldInSupportsDeclaration;
      return new A._Record_2(t8.charCodeAt(0) == 0 ? t8 : t8, A.NullableExtension_andThen0(targetLocations, new A._EvaluateVisitor__performInterpolationHelper_closure1(interpolation)));
    },
    _evaluate0$_serialize$3$quote(value, nodeWithSpan, quote) {
      return this._evaluate0$_addExceptionSpan$2(nodeWithSpan, new A._EvaluateVisitor__serialize_closure1(value, quote));
    },
    _evaluate0$_serialize$2(value, nodeWithSpan) {
      return this._evaluate0$_serialize$3$quote(value, nodeWithSpan, true);
    },
    _evaluate0$_expressionNode$1(expression) {
      var t1;
      if (expression instanceof A.VariableExpression0) {
        t1 = this._evaluate0$_addExceptionSpan$2(expression, new A._EvaluateVisitor__expressionNode_closure1(this, expression));
        return t1 == null ? expression : t1;
      } else
        return expression;
    },
    _evaluate0$_withParent$2$4$scopeWhen$through(node, callback, scopeWhen, through, $S, $T) {
      var t1, result, _this = this;
      _this._evaluate0$_addChild$2$through(node, through);
      t1 = _this._evaluate0$_assertInModule$2(_this._evaluate0$__parent, "__parent");
      _this._evaluate0$__parent = node;
      result = _this._evaluate0$_environment.scope$1$2$when(callback, scopeWhen, $T);
      _this._evaluate0$__parent = t1;
      return result;
    },
    _evaluate0$_withParent$2$3$scopeWhen(node, callback, scopeWhen, $S, $T) {
      return this._evaluate0$_withParent$2$4$scopeWhen$through(node, callback, scopeWhen, null, $S, $T);
    },
    _evaluate0$_withParent$2$2(node, callback, $S, $T) {
      return this._evaluate0$_withParent$2$4$scopeWhen$through(node, callback, true, null, $S, $T);
    },
    _evaluate0$_addChild$2$through(node, through) {
      var _0_0, grandparent, t1,
        $parent = this._evaluate0$_assertInModule$2(this._evaluate0$__parent, "__parent");
      if (through != null) {
        for (; through.call$1($parent); $parent = grandparent) {
          _0_0 = $parent._node$_parent;
          if (_0_0 != null) {
            grandparent = _0_0;
            t1 = true;
          } else {
            grandparent = null;
            t1 = false;
          }
          if (!t1)
            throw A.wrapException(A.ArgumentError$(string$.throug + node.toString$0(0) + ".", null));
        }
        if ($parent.get$hasFollowingSibling()) {
          grandparent = $parent._node$_parent;
          t1 = grandparent.children;
          if ($parent.equalsIgnoringChildren$1(t1.get$last(t1)))
            $parent = type$.ModifiableCssParentNode_2._as(t1.get$last(t1));
          else {
            $parent = $parent.copyWithoutChildren$0();
            grandparent.addChild$1($parent);
          }
        }
      }
      $parent.addChild$1(node);
    },
    _evaluate0$_addChild$1(node) {
      return this._evaluate0$_addChild$2$through(node, null);
    },
    _evaluate0$_withStyleRule$1$2(rule, callback) {
      var result,
        oldRule = this._evaluate0$_styleRuleIgnoringAtRoot;
      this._evaluate0$_styleRuleIgnoringAtRoot = rule;
      result = callback.call$0();
      this._evaluate0$_styleRuleIgnoringAtRoot = oldRule;
      return result;
    },
    _evaluate0$_withStyleRule$2(rule, callback) {
      return this._evaluate0$_withStyleRule$1$2(rule, callback, type$.dynamic);
    },
    _evaluate0$_withMediaQueries$1$3(queries, sources, callback) {
      var result, _this = this,
        oldMediaQueries = _this._evaluate0$_mediaQueries,
        oldSources = _this._evaluate0$_mediaQuerySources;
      _this._evaluate0$_mediaQueries = queries;
      _this._evaluate0$_mediaQuerySources = sources;
      result = callback.call$0();
      _this._evaluate0$_mediaQueries = oldMediaQueries;
      _this._evaluate0$_mediaQuerySources = oldSources;
      return result;
    },
    _evaluate0$_withMediaQueries$3(queries, sources, callback) {
      return this._evaluate0$_withMediaQueries$1$3(queries, sources, callback, type$.dynamic);
    },
    _evaluate0$_withStackFrame$1$3(member, nodeWithSpan, callback) {
      var oldMember, result, _this = this,
        t1 = _this._evaluate0$_stack;
      t1.push(new A._Record_2(_this._evaluate0$_member, nodeWithSpan));
      oldMember = _this._evaluate0$_member;
      _this._evaluate0$_member = member;
      result = callback.call$0();
      _this._evaluate0$_member = oldMember;
      t1.pop();
      return result;
    },
    _evaluate0$_withStackFrame$3(member, nodeWithSpan, callback) {
      return this._evaluate0$_withStackFrame$1$3(member, nodeWithSpan, callback, type$.dynamic);
    },
    _evaluate0$_withoutSlash$2(value, nodeForSpan) {
      if (value instanceof A.SassNumber0 && value.asSlash != null && true)
        this._evaluate0$_warn$3(string$.Using__i + A.S(new A._EvaluateVisitor__withoutSlash_recommendation1().call$1(value)) + string$.x0a_Morex20, nodeForSpan.get$span(nodeForSpan), B.Deprecation_wWh);
      return value.withoutSlash$0();
    },
    _evaluate0$_stackFrame$2(member, span) {
      return A.frameForSpan0(span, member, A.NullableExtension_andThen0(span.get$sourceUrl(span), new A._EvaluateVisitor__stackFrame_closure1(this)));
    },
    _evaluate0$_stackTrace$1(span) {
      var t2, t3, _i, t4, nodeWithSpan, _this = this,
        t1 = A._setArrayType([], type$.JSArray_Frame);
      for (t2 = _this._evaluate0$_stack, t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        t4 = t2[_i];
        nodeWithSpan = t4._1;
        t1.push(_this._evaluate0$_stackFrame$2(t4._0, nodeWithSpan.get$span(nodeWithSpan)));
      }
      if (span != null)
        t1.push(_this._evaluate0$_stackFrame$2(_this._evaluate0$_member, span));
      return A.Trace$(new A.ReversedListIterable(t1, type$.ReversedListIterable_Frame), null);
    },
    _evaluate0$_stackTrace$0() {
      return this._evaluate0$_stackTrace$1(null);
    },
    _evaluate0$_warn$3(message, span, deprecation) {
      var t1, trace, _this = this;
      if (_this._evaluate0$_quietDeps)
        if (!_this._evaluate0$_inDependency) {
          t1 = _this._evaluate0$_currentCallable;
          t1 = t1 == null ? null : t1.inDependency;
          t1 = t1 === true;
        } else
          t1 = true;
      else
        t1 = false;
      if (t1)
        return;
      if (!_this._evaluate0$_warningsEmitted.add$1(0, new A._Record_2(message, span)))
        return;
      trace = _this._evaluate0$_stackTrace$1(span);
      t1 = _this._evaluate0$_logger;
      if (deprecation == null)
        t1.warn$3$span$trace(0, message, span, trace);
      else
        A.WarnForDeprecation_warnForDeprecation0(t1, deprecation, message, span, trace);
    },
    _evaluate0$_warn$2(message, span) {
      return this._evaluate0$_warn$3(message, span, null);
    },
    _evaluate0$_exception$2(message, span) {
      var t1, t2;
      if (span == null) {
        t1 = B.JSArray_methods.get$last(this._evaluate0$_stack)._1;
        t1 = t1.get$span(t1);
      } else
        t1 = span;
      t2 = this._evaluate0$_stackTrace$1(span);
      return new A.SassRuntimeException0(t2, B.Set_empty, message, t1);
    },
    _evaluate0$_exception$1(message) {
      return this._evaluate0$_exception$2(message, null);
    },
    _evaluate0$_multiSpanException$3(message, primaryLabel, secondaryLabels) {
      var t1 = B.JSArray_methods.get$last(this._evaluate0$_stack)._1;
      return A.MultiSpanSassRuntimeException$0(message, t1.get$span(t1), primaryLabel, secondaryLabels, this._evaluate0$_stackTrace$0(), null);
    },
    _evaluate0$_addExceptionSpan$1$3$addStackFrame(nodeWithSpan, callback, addStackFrame) {
      var error, stackTrace, t1, exception;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassScriptException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error.withSpan$1(nodeWithSpan.get$span(nodeWithSpan));
          A.throwWithTrace0(t1.withTrace$1(this._evaluate0$_stackTrace$1(addStackFrame ? nodeWithSpan.get$span(nodeWithSpan) : null)), error, stackTrace);
        } else
          throw exception;
      }
    },
    _evaluate0$_addExceptionSpan$2(nodeWithSpan, callback) {
      return this._evaluate0$_addExceptionSpan$1$3$addStackFrame(nodeWithSpan, callback, true, type$.dynamic);
    },
    _evaluate0$_addExceptionSpan$3$addStackFrame(nodeWithSpan, callback, addStackFrame) {
      return this._evaluate0$_addExceptionSpan$1$3$addStackFrame(nodeWithSpan, callback, addStackFrame, type$.dynamic);
    },
    _evaluate0$_addExceptionTrace$1$1(callback) {
      var error, stackTrace, t1, exception, t2;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassRuntimeException_2._is(t1))
          throw exception;
        else if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = error;
          t2 = J.getInterceptor$z(t1);
          A.throwWithTrace0(error.withTrace$1(this._evaluate0$_stackTrace$1(A.SourceSpanException.prototype.get$span.call(t2, t1))), error, stackTrace);
        } else
          throw exception;
      }
    },
    _evaluate0$_addExceptionTrace$1(callback) {
      return this._evaluate0$_addExceptionTrace$1$1(callback, type$.dynamic);
    },
    _evaluate0$_addErrorSpan$1$2(nodeWithSpan, callback) {
      var error, stackTrace, t1, exception, t2, t3;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SassRuntimeException_2._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          if (!B.JSString_methods.startsWith$1(J.get$span$z(error).get$text(), "@error"))
            throw exception;
          t1 = error._span_exception$_message;
          t2 = nodeWithSpan.get$span(nodeWithSpan);
          t3 = this._evaluate0$_stackTrace$0();
          A.throwWithTrace0(new A.SassRuntimeException0(t3, B.Set_empty, t1, t2), error, stackTrace);
        } else
          throw exception;
      }
    },
    _evaluate0$_addErrorSpan$2(nodeWithSpan, callback) {
      return this._evaluate0$_addErrorSpan$1$2(nodeWithSpan, callback, type$.dynamic);
    }
  };
  A._EvaluateVisitor_closure25.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._evaluate0$_environment;
      t2 = A.stringReplaceAllUnchecked(variable._string0$_text, "_", "-");
      return t1.globalVariableExists$2$namespace(t2, module == null ? null : module._string0$_text) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure26.prototype = {
    call$1($arguments) {
      var variable = J.$index$asx($arguments, 0).assertString$1("name"),
        t1 = this.$this._evaluate0$_environment;
      return t1.getVariable$1(A.stringReplaceAllUnchecked(variable._string0$_text, "_", "-")) != null ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure27.prototype = {
    call$1($arguments) {
      var module, t2, t3, t4,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._evaluate0$_environment;
      t3 = variable._string0$_text;
      t4 = A.stringReplaceAllUnchecked(t3, "_", "-");
      return t2.getFunction$2$namespace(t4, module == null ? null : module._string0$_text) != null || t1._evaluate0$_builtInFunctions.containsKey$1(t3) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure28.prototype = {
    call$1($arguments) {
      var module, t2,
        t1 = J.getInterceptor$asx($arguments),
        variable = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this._evaluate0$_environment;
      t2 = A.stringReplaceAllUnchecked(variable._string0$_text, "_", "-");
      return t1.getMixin$2$namespace(t2, module == null ? null : module._string0$_text) != null ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure29.prototype = {
    call$1($arguments) {
      var t1 = this.$this._evaluate0$_environment;
      if (!t1._environment0$_inMixin)
        throw A.wrapException(A.SassScriptException$0(string$.conten, null));
      return t1._environment0$_content != null ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._EvaluateVisitor_closure30.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string0$_text,
        module = this.$this._evaluate0$_environment._environment0$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs0(module.get$variables(), type$.String, t1), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString0($name, true), value);
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 38
  };
  A._EvaluateVisitor_closure31.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string0$_text,
        module = this.$this._evaluate0$_environment._environment0$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs0(module.get$functions(module), type$.String, type$.Callable_2), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString0($name, true), new A.SassFunction0(value));
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 38
  };
  A._EvaluateVisitor_closure32.prototype = {
    call$1($arguments) {
      var t2, t3, t4, $name, value,
        t1 = J.$index$asx($arguments, 0).assertString$1("module")._string0$_text,
        module = this.$this._evaluate0$_environment._environment0$_modules.$index(0, t1);
      if (module == null)
        throw A.wrapException('There is no module with namespace "' + t1 + '".');
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t3 = A.MapExtensions_get_pairs0(module.get$mixins(), type$.String, type$.Callable_2), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        $name = t4._0;
        value = t4._1;
        value = value;
        t2.$indexSet(0, new A.SassString0($name, true), new A.SassMixin0(value));
      }
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 38
  };
  A._EvaluateVisitor_closure33.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name"),
        css = t1.$index($arguments, 1).get$isTruthy();
      t1 = t1.$index($arguments, 2).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      if (css) {
        if (module != null)
          throw A.wrapException(string$.x24css_a);
        return new A.SassFunction0(new A.PlainCssCallable0($name._string0$_text));
      }
      t1 = this.$this;
      t2 = t1._evaluate0$_callableNode;
      t2.toString;
      callable = t1._evaluate0$_addExceptionSpan$2(t2, new A._EvaluateVisitor__closure10(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Function not found: " + $name.toString$0(0));
      return new A.SassFunction0(callable);
    },
    $signature: 182
  };
  A._EvaluateVisitor__closure10.prototype = {
    call$0() {
      var local,
        normalizedName = A.stringReplaceAllUnchecked(this.name._string0$_text, "_", "-"),
        t1 = this.module,
        namespace = t1 == null ? null : t1._string0$_text;
      t1 = this.$this;
      local = t1._evaluate0$_environment.getFunction$2$namespace(normalizedName, namespace);
      if (local != null || namespace != null)
        return local;
      return t1._evaluate0$_builtInFunctions.$index(0, normalizedName);
    },
    $signature: 102
  };
  A._EvaluateVisitor_closure34.prototype = {
    call$1($arguments) {
      var module, t2, callable,
        t1 = J.getInterceptor$asx($arguments),
        $name = t1.$index($arguments, 0).assertString$1("name");
      t1 = t1.$index($arguments, 1).get$realNull();
      module = t1 == null ? null : t1.assertString$1("module");
      t1 = this.$this;
      t2 = t1._evaluate0$_callableNode;
      t2.toString;
      callable = t1._evaluate0$_addExceptionSpan$2(t2, new A._EvaluateVisitor__closure9(t1, $name, module));
      if (callable == null)
        throw A.wrapException("Mixin not found: " + $name.toString$0(0));
      return new A.SassMixin0(callable);
    },
    $signature: 184
  };
  A._EvaluateVisitor__closure9.prototype = {
    call$0() {
      var t1 = this.$this._evaluate0$_environment,
        t2 = A.stringReplaceAllUnchecked(this.name._string0$_text, "_", "-"),
        t3 = this.module;
      return t1.getMixin$2$namespace(t2, t3 == null ? null : t3._string0$_text);
    },
    $signature: 102
  };
  A._EvaluateVisitor_closure35.prototype = {
    call$1($arguments) {
      var t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, $name, value, invocation, callableNode, callable, _null = null,
        t1 = J.getInterceptor$asx($arguments),
        $function = t1.$index($arguments, 0),
        args = type$.SassArgumentList_2._as(t1.$index($arguments, 1));
      t1 = this.$this;
      t2 = t1._evaluate0$_callableNode;
      t2.toString;
      t3 = A._setArrayType([], type$.JSArray_Expression_2);
      t4 = type$.String;
      t5 = type$.Expression_2;
      t6 = t2.get$span(t2);
      t7 = t2.get$span(t2);
      args._argument_list$_wereKeywordsAccessed = true;
      t8 = args._argument_list$_keywords;
      if (t8.get$isEmpty(t8))
        t2 = _null;
      else {
        t9 = type$.Value_2;
        t10 = A.LinkedHashMap_LinkedHashMap$_empty(t9, t9);
        for (args._argument_list$_wereKeywordsAccessed = true, t8 = A.MapExtensions_get_pairs0(t8, t4, t9), t8 = t8.get$iterator(t8); t8.moveNext$0();) {
          t11 = t8.get$current(t8);
          $name = t11._0;
          value = t11._1;
          value = value;
          t10.$indexSet(0, new A.SassString0($name, false), value);
        }
        t2 = new A.ValueExpression0(new A.SassMap0(A.ConstantMap_ConstantMap$from(t10, t9, t9)), t2.get$span(t2));
      }
      invocation = new A.ArgumentInvocation0(A.List_List$unmodifiable(t3, t5), A.ConstantMap_ConstantMap$from(A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t4, t5), new A.ValueExpression0(args, t7), t2, t6);
      if ($function instanceof A.SassString0) {
        t2 = $function.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, string$.Passina + t2 + "))", B.Deprecation_4iQ);
        callableNode = t1._evaluate0$_callableNode;
        return t1.visitFunctionExpression$1(new A.FunctionExpression0(_null, $function._string0$_text, invocation, callableNode.get$span(callableNode)));
      }
      callable = $function.assertFunction$1("function").callable;
      if (type$.Callable_2._is(callable)) {
        t2 = t1._evaluate0$_callableNode;
        t2.toString;
        return t1._evaluate0$_runFunctionCallable$3(invocation, callable, t2);
      } else
        throw A.wrapException(A.SassScriptException$0("The function " + callable.get$name(callable) + string$.x20is_as, _null));
    },
    $signature: 5
  };
  A._EvaluateVisitor_closure36.prototype = {
    call$1($arguments) {
      var withMap, t2, values, configuration, t3,
        t1 = J.getInterceptor$asx($arguments),
        url = A.Uri_parse(t1.$index($arguments, 0).assertString$1("url")._string0$_text);
      t1 = t1.$index($arguments, 1).get$realNull();
      withMap = t1 == null ? null : t1.assertMap$1("with")._map0$_contents;
      t1 = this.$this;
      t2 = t1._evaluate0$_callableNode;
      t2.toString;
      if (withMap != null) {
        values = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.ConfiguredValue_2);
        withMap.forEach$1(0, new A._EvaluateVisitor__closure7(values, t2.get$span(t2), t2));
        configuration = new A.ExplicitConfiguration0(t2, values, null);
      } else
        configuration = B.Configuration_Map_empty_null0;
      t3 = t2.get$span(t2);
      t1._evaluate0$_loadModule$7$baseUrl$configuration$namesInErrors(url, "load-css()", t2, new A._EvaluateVisitor__closure8(t1), t3.get$sourceUrl(t3), configuration, true);
      t1._evaluate0$_assertConfigurationIsEmpty$2$nameInError(configuration, true);
    },
    $signature: 239
  };
  A._EvaluateVisitor__closure7.prototype = {
    call$2(variable, value) {
      var t1 = variable.assertString$1("with key"),
        $name = A.stringReplaceAllUnchecked(t1._string0$_text, "_", "-");
      t1 = this.values;
      if (t1.containsKey$1($name))
        throw A.wrapException("The variable $" + $name + " was configured twice.");
      t1.$indexSet(0, $name, new A.ConfiguredValue0(value, this.span, this.callableNode));
    },
    $signature: 104
  };
  A._EvaluateVisitor__closure8.prototype = {
    call$2(module, _) {
      var t1 = this.$this;
      return t1._evaluate0$_combineCss$2$clone(module, true).accept$1(t1);
    },
    $signature: 95
  };
  A._EvaluateVisitor_closure37.prototype = {
    call$1($arguments) {
      var callableNode, t2, t3, t4, t5, callable, $content,
        t1 = J.getInterceptor$asx($arguments),
        mixin = t1.$index($arguments, 0),
        args = type$.SassArgumentList_2._as(t1.$index($arguments, 1));
      t1 = this.$this;
      callableNode = t1._evaluate0$_callableNode;
      t2 = callableNode.get$span(callableNode);
      t3 = callableNode.get$span(callableNode);
      t4 = type$.Expression_2;
      t5 = A.List_List$unmodifiable(B.List_empty20, t4);
      t4 = A.ConstantMap_ConstantMap$from(B.Map_empty14, type$.String, t4);
      callable = mixin.assertMixin$1("mixin").callable;
      $content = t1._evaluate0$_environment._environment0$_content;
      if (type$.Callable_2._is(callable))
        t1._evaluate0$_applyMixin$5(callable, $content, new A.ArgumentInvocation0(t5, t4, new A.ValueExpression0(args, t3), null, t2), callableNode, callableNode);
      else
        throw A.wrapException(A.SassScriptException$0("The mixin " + callable.get$name(callable) + string$.x20is_as, null));
    },
    $signature: 239
  };
  A._EvaluateVisitor_run_closure1.prototype = {
    call$0() {
      var module, t2, _this = this, url = null,
        t1 = _this.node,
        _0_0 = t1.span.file.url;
      if (_0_0 != null) {
        url = _0_0;
        t2 = true;
      } else
        t2 = false;
      if (t2) {
        t2 = _this.$this;
        t2._evaluate0$_activeModules.$indexSet(0, url, null);
        if (!(t2._evaluate0$_nodeImporter != null && J.toString$0$(url) === "stdin"))
          t2._evaluate0$_loadedUrls.add$1(0, url);
      }
      t2 = _this.$this;
      module = t2._evaluate0$_addExceptionTrace$1(new A._EvaluateVisitor_run__closure1(t2, _this.importer, t1));
      return new A._Record_2_loadedUrls_stylesheet(t2._evaluate0$_loadedUrls, t2._evaluate0$_combineCss$1(module));
    },
    $signature: 439
  };
  A._EvaluateVisitor_run__closure1.prototype = {
    call$0() {
      return this.$this._evaluate0$_execute$2(this.importer, this.node);
    },
    $signature: 440
  };
  A._EvaluateVisitor__loadModule_closure3.prototype = {
    call$0() {
      return this.callback.call$2(this._box_1.builtInModule, false);
    },
    $signature: 0
  };
  A._EvaluateVisitor__loadModule_closure4.prototype = {
    call$0() {
      var canonicalUrl, oldInDependency, isDependency, t4, message, _this = this, t1 = {}, stylesheet = null, importer = null,
        t2 = _this.$this,
        t3 = _this.nodeWithSpan,
        _1_0 = t2._evaluate0$_loadStylesheet$3$baseUrl(_this.url.toString$0(0), t3.get$span(t3), _this.baseUrl);
      stylesheet = _1_0._0;
      importer = _1_0._1;
      isDependency = _1_0._2;
      isDependency = isDependency;
      canonicalUrl = stylesheet.span.file.url;
      if (canonicalUrl != null) {
        t4 = t2._evaluate0$_activeModules;
        if (t4.containsKey$1(canonicalUrl)) {
          message = _this.namesInErrors ? "Module loop: " + $.$get$context().prettyUri$1(canonicalUrl) + " is already being loaded." : string$.Modulel;
          t1 = A.NullableExtension_andThen0(t4.$index(0, canonicalUrl), new A._EvaluateVisitor__loadModule__closure3(t2, message));
          throw A.wrapException(t1 == null ? t2._evaluate0$_exception$1(message) : t1);
        } else
          t4.$indexSet(0, canonicalUrl, t3);
      }
      t4 = t2._evaluate0$_modules.containsKey$1(canonicalUrl);
      oldInDependency = t2._evaluate0$_inDependency;
      t2._evaluate0$_inDependency = isDependency;
      t1.module = null;
      try {
        t1.module = t2._evaluate0$_execute$5$configuration$namesInErrors$nodeWithSpan(importer, stylesheet, _this.configuration, _this.namesInErrors, t3);
      } finally {
        t2._evaluate0$_activeModules.remove$1(0, canonicalUrl);
        t2._evaluate0$_inDependency = oldInDependency;
      }
      t2._evaluate0$_addExceptionSpan$3$addStackFrame(t3, new A._EvaluateVisitor__loadModule__closure4(t1, _this.callback, !t4), false);
    },
    $signature: 2
  };
  A._EvaluateVisitor__loadModule__closure3.prototype = {
    call$1(previousLoad) {
      return this.$this._evaluate0$_multiSpanException$3(this.message, "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 105
  };
  A._EvaluateVisitor__loadModule__closure4.prototype = {
    call$0() {
      return this.callback.call$2(this._box_0.module, this.firstLoad);
    },
    $signature: 0
  };
  A._EvaluateVisitor__execute_closure1.prototype = {
    call$0() {
      var t3, t4, t5, t6, _this = this,
        t1 = _this.$this,
        oldImporter = t1._evaluate0$_importer,
        oldStylesheet = t1._evaluate0$__stylesheet,
        oldRoot = t1._evaluate0$__root,
        oldPreModuleComments = t1._evaluate0$_preModuleComments,
        oldParent = t1._evaluate0$__parent,
        oldEndOfImports = t1._evaluate0$__endOfImports,
        oldOutOfOrderImports = t1._evaluate0$_outOfOrderImports,
        oldExtensionStore = t1._evaluate0$__extensionStore,
        t2 = t1._evaluate0$_atRootExcludingStyleRule,
        oldStyleRule = t2 ? null : t1._evaluate0$_styleRuleIgnoringAtRoot,
        oldMediaQueries = t1._evaluate0$_mediaQueries,
        oldDeclarationName = t1._evaluate0$_declarationName,
        oldInUnknownAtRule = t1._evaluate0$_inUnknownAtRule,
        oldInKeyframes = t1._evaluate0$_inKeyframes,
        oldConfiguration = t1._evaluate0$_configuration;
      t1._evaluate0$_importer = _this.importer;
      t3 = t1._evaluate0$__stylesheet = _this.stylesheet;
      t4 = t3.span;
      t5 = t1._evaluate0$__parent = t1._evaluate0$__root = A.ModifiableCssStylesheet$0(t4);
      t1._evaluate0$__endOfImports = 0;
      t1._evaluate0$_outOfOrderImports = null;
      t1._evaluate0$__extensionStore = _this.extensionStore;
      t1._evaluate0$_declarationName = t1._evaluate0$_mediaQueries = t1._evaluate0$_styleRuleIgnoringAtRoot = null;
      t1._evaluate0$_inKeyframes = t1._evaluate0$_atRootExcludingStyleRule = t1._evaluate0$_inUnknownAtRule = false;
      t6 = _this.configuration;
      if (t6 != null)
        t1._evaluate0$_configuration = t6;
      t1.visitStylesheet$1(t3);
      t3 = t1._evaluate0$_outOfOrderImports == null ? t5 : new A.CssStylesheet0(new A.UnmodifiableListView(t1._evaluate0$_addOutOfOrderImports$0(), type$.UnmodifiableListView_CssNode_2), t4);
      _this.css._value = t3;
      _this.preModuleComments._value = t1._evaluate0$_preModuleComments;
      t1._evaluate0$_importer = oldImporter;
      t1._evaluate0$__stylesheet = oldStylesheet;
      t1._evaluate0$__root = oldRoot;
      t1._evaluate0$_preModuleComments = oldPreModuleComments;
      t1._evaluate0$__parent = oldParent;
      t1._evaluate0$__endOfImports = oldEndOfImports;
      t1._evaluate0$_outOfOrderImports = oldOutOfOrderImports;
      t1._evaluate0$__extensionStore = oldExtensionStore;
      t1._evaluate0$_styleRuleIgnoringAtRoot = oldStyleRule;
      t1._evaluate0$_mediaQueries = oldMediaQueries;
      t1._evaluate0$_declarationName = oldDeclarationName;
      t1._evaluate0$_inUnknownAtRule = oldInUnknownAtRule;
      t1._evaluate0$_atRootExcludingStyleRule = t2;
      t1._evaluate0$_inKeyframes = oldInKeyframes;
      t1._evaluate0$_configuration = oldConfiguration;
    },
    $signature: 2
  };
  A._EvaluateVisitor__combineCss_closure3.prototype = {
    call$1(module) {
      return module.get$transitivelyContainsCss();
    },
    $signature: 136
  };
  A._EvaluateVisitor__combineCss_closure4.prototype = {
    call$1(target) {
      return !this.selectors.contains$1(0, target);
    },
    $signature: 15
  };
  A._EvaluateVisitor__combineCss_visitModule1.prototype = {
    call$1(module) {
      var t1, t2, t3, t4, _i, upstream, _1_0, comments, t5, statements, index, _this = this;
      if (!_this.seen.add$1(0, module))
        return;
      if (_this.clone)
        module = module.cloneCss$0();
      for (t1 = module.get$upstream(), t2 = t1.length, t3 = _this.css, t4 = _this.imports, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        upstream = t1[_i];
        if (upstream.get$transitivelyContainsCss()) {
          _1_0 = module.get$preModuleComments().$index(0, upstream);
          if (_1_0 != null) {
            comments = _1_0;
            t5 = true;
          } else {
            comments = null;
            t5 = false;
          }
          if (t5)
            B.JSArray_methods.addAll$1(t3.length === 0 ? t4 : t3, comments);
          _this.call$1(upstream);
        }
      }
      _this.sorted.addFirst$1(module);
      t1 = module.get$css(module);
      statements = t1.get$children(t1);
      index = _this.$this._evaluate0$_indexAfterImports$1(statements);
      t1 = J.getInterceptor$ax(statements);
      B.JSArray_methods.addAll$1(t4, t1.getRange$2(statements, 0, index));
      B.JSArray_methods.addAll$1(t3, t1.getRange$2(statements, index, t1.get$length(statements)));
    },
    $signature: 441
  };
  A._EvaluateVisitor__extendModules_closure3.prototype = {
    call$1(target) {
      return !this.originalSelectors.contains$1(0, target);
    },
    $signature: 15
  };
  A._EvaluateVisitor__extendModules_closure4.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_ExtensionStore_2);
    },
    $signature: 188
  };
  A._EvaluateVisitor_visitAtRootRule_closure3.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitAtRootRule_closure4.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 0
  };
  A._EvaluateVisitor__scopeForAtRoot_closure11.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        t2 = t1._evaluate0$_assertInModule$2(t1._evaluate0$__parent, "__parent");
      t1._evaluate0$__parent = this.newParent;
      t1._evaluate0$_environment.scope$1$2$when(callback, this.node.hasDeclarations, type$.void);
      t1._evaluate0$__parent = t2;
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot_closure12.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        oldAtRootExcludingStyleRule = t1._evaluate0$_atRootExcludingStyleRule;
      t1._evaluate0$_atRootExcludingStyleRule = true;
      this.innerScope.call$1(callback);
      t1._evaluate0$_atRootExcludingStyleRule = oldAtRootExcludingStyleRule;
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot_closure13.prototype = {
    call$1(callback) {
      return this.$this._evaluate0$_withMediaQueries$3(null, null, new A._EvaluateVisitor__scopeForAtRoot__closure1(this.innerScope, callback));
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot__closure1.prototype = {
    call$0() {
      return this.innerScope.call$1(this.callback);
    },
    $signature: 2
  };
  A._EvaluateVisitor__scopeForAtRoot_closure14.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        wasInKeyframes = t1._evaluate0$_inKeyframes;
      t1._evaluate0$_inKeyframes = false;
      this.innerScope.call$1(callback);
      t1._evaluate0$_inKeyframes = wasInKeyframes;
    },
    $signature: 39
  };
  A._EvaluateVisitor__scopeForAtRoot_closure15.prototype = {
    call$1($parent) {
      return $parent instanceof A.ModifiableCssAtRule0;
    },
    $signature: 189
  };
  A._EvaluateVisitor__scopeForAtRoot_closure16.prototype = {
    call$1(callback) {
      var t1 = this.$this,
        wasInUnknownAtRule = t1._evaluate0$_inUnknownAtRule;
      t1._evaluate0$_inUnknownAtRule = false;
      this.innerScope.call$1(callback);
      t1._evaluate0$_inUnknownAtRule = wasInUnknownAtRule;
    },
    $signature: 39
  };
  A._EvaluateVisitor_visitContentRule_closure1.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.content.declaration.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
      return null;
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitDeclaration_closure1.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this._box_0.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitEachRule_closure5.prototype = {
    call$1(value) {
      var t1 = this.$this,
        t2 = this.nodeWithSpan;
      return t1._evaluate0$_environment.setLocalVariable$3(this._box_0.variable, t1._evaluate0$_withoutSlash$2(value, t2), t2);
    },
    $signature: 57
  };
  A._EvaluateVisitor_visitEachRule_closure6.prototype = {
    call$1(value) {
      return this.$this._evaluate0$_setMultipleVariables$3(this._box_0.variables, value, this.nodeWithSpan);
    },
    $signature: 57
  };
  A._EvaluateVisitor_visitEachRule_closure7.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      return t1._evaluate0$_handleReturn$2(_this.list.get$asList(), new A._EvaluateVisitor_visitEachRule__closure1(t1, _this.setVariables, _this.node));
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitEachRule__closure1.prototype = {
    call$1(element) {
      var t1;
      this.setVariables.call$1(element);
      t1 = this.$this;
      return t1._evaluate0$_handleReturn$2(this.node.children, new A._EvaluateVisitor_visitEachRule___closure1(t1));
    },
    $signature: 241
  };
  A._EvaluateVisitor_visitEachRule___closure1.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 93
  };
  A._EvaluateVisitor_visitAtRule_closure5.prototype = {
    call$1(value) {
      return this.$this._evaluate0$_interpolationToValue$3$trim$warnForColor(value, true, true);
    },
    $signature: 444
  };
  A._EvaluateVisitor_visitAtRule_closure6.prototype = {
    call$0() {
      var t2, t3, _i, _this = this,
        t1 = _this.$this,
        styleRule = t1._evaluate0$_atRootExcludingStyleRule ? null : t1._evaluate0$_styleRuleIgnoringAtRoot;
      if (styleRule == null || t1._evaluate0$_inKeyframes || J.$eq$(_this.name.value, "font-face"))
        for (t2 = _this.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t2[_i].accept$1(t1);
      else
        t1._evaluate0$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitAtRule__closure1(t1, _this.children), false, type$.ModifiableCssStyleRule_2, type$.Null);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitAtRule__closure1.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitAtRule_closure7.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitForRule_closure9.prototype = {
    call$0() {
      return this.node.from.accept$1(this.$this).assertNumber$0();
    },
    $signature: 243
  };
  A._EvaluateVisitor_visitForRule_closure10.prototype = {
    call$0() {
      return this.node.to.accept$1(this.$this).assertNumber$0();
    },
    $signature: 243
  };
  A._EvaluateVisitor_visitForRule_closure11.prototype = {
    call$0() {
      return this.fromNumber.assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure12.prototype = {
    call$0() {
      var t1 = this.fromNumber;
      return this.toNumber.coerce$2(t1.get$numeratorUnits(t1), t1.get$denominatorUnits(t1)).assertInt$0();
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitForRule_closure13.prototype = {
    call$0() {
      var i, t3, t4, t5, t6, t7, t8, _0_0, result, _this = this,
        t1 = _this.$this,
        t2 = _this.node,
        nodeWithSpan = t1._evaluate0$_expressionNode$1(t2.from);
      for (i = _this.from, t3 = _this._box_0, t4 = _this.direction, t5 = t2.variable, t6 = _this.fromNumber, t2 = t2.children; i !== t3.to; i += t4) {
        t7 = t1._evaluate0$_environment;
        t8 = t6.get$numeratorUnits(t6);
        t7.setLocalVariable$3(t5, A.SassNumber_SassNumber$withUnits0(i, t6.get$denominatorUnits(t6), t8), nodeWithSpan);
        _0_0 = t1._evaluate0$_handleReturn$2(t2, new A._EvaluateVisitor_visitForRule__closure1(t1));
        if (_0_0 != null) {
          result = _0_0;
          t7 = true;
        } else {
          result = null;
          t7 = false;
        }
        if (t7)
          return result;
      }
      return null;
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitForRule__closure1.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 93
  };
  A._EvaluateVisitor_visitForwardRule_closure3.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._evaluate0$_registerCommentsForModule$1(module);
      this.$this._evaluate0$_environment.forwardModule$2(module, this.node);
    },
    $signature: 95
  };
  A._EvaluateVisitor_visitForwardRule_closure4.prototype = {
    call$2(module, firstLoad) {
      if (firstLoad)
        this.$this._evaluate0$_registerCommentsForModule$1(module);
      this.$this._evaluate0$_environment.forwardModule$2(module, this.node);
    },
    $signature: 95
  };
  A._EvaluateVisitor__registerCommentsForModule_closure1.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_CssComment_2);
    },
    $signature: 245
  };
  A._EvaluateVisitor_visitIfRule_closure1.prototype = {
    call$1(clause) {
      var t1 = this.$this;
      return t1._evaluate0$_environment.scope$1$3$semiGlobal$when(new A._EvaluateVisitor_visitIfRule__closure1(t1, clause), true, clause.hasDeclarations, type$.nullable_Value_2);
    },
    $signature: 446
  };
  A._EvaluateVisitor_visitIfRule__closure1.prototype = {
    call$0() {
      var t1 = this.$this;
      return t1._evaluate0$_handleReturn$2(this.clause.children, new A._EvaluateVisitor_visitIfRule___closure1(t1));
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitIfRule___closure1.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 93
  };
  A._EvaluateVisitor__visitDynamicImport_closure1.prototype = {
    call$0() {
      var t1, t2, _0_0, stylesheet, t3, isDependency, t4, url, t5, t6, oldImporter, oldInDependency, loadsUserDefinedModules, children, t7, t8, t9, t10, environment, module, visitor, _null = null, _box_0 = {};
      _box_0.isDependency = _box_0.importer = _box_0.stylesheet = null;
      t1 = this.$this;
      t2 = this.$import;
      _0_0 = t1._evaluate0$_loadStylesheet$3$forImport(t2.urlString, t2.span, true);
      stylesheet = _box_0.stylesheet = _0_0._0;
      t3 = _box_0.importer = _0_0._1;
      isDependency = _0_0._2;
      _box_0.isDependency = isDependency;
      t4 = isDependency;
      url = stylesheet.span.file.url;
      if (url != null) {
        t5 = t1._evaluate0$_activeModules;
        if (t5.containsKey$1(url)) {
          t2 = A.NullableExtension_andThen0(t5.$index(0, url), new A._EvaluateVisitor__visitDynamicImport__closure7(t1));
          throw A.wrapException(t2 == null ? t1._evaluate0$_exception$1("This file is already being loaded.") : t2);
        }
        t5.$indexSet(0, url, t2);
      }
      t2 = stylesheet._stylesheet1$_uses;
      t5 = type$.UnmodifiableListView_UseRule_2;
      t6 = new A.UnmodifiableListView(t2, t5);
      if (t6.get$length(t6) === 0) {
        t6 = new A.UnmodifiableListView(stylesheet._stylesheet1$_forwards, type$.UnmodifiableListView_ForwardRule_2);
        t6 = t6.get$length(t6) === 0;
      } else
        t6 = false;
      if (t6) {
        oldImporter = t1._evaluate0$_importer;
        t2 = t1._evaluate0$_assertInModule$2(t1._evaluate0$__stylesheet, "_stylesheet");
        oldInDependency = t1._evaluate0$_inDependency;
        t1._evaluate0$_importer = t3;
        t1._evaluate0$__stylesheet = stylesheet;
        t1._evaluate0$_inDependency = t4;
        t1.visitStylesheet$1(stylesheet);
        t1._evaluate0$_importer = oldImporter;
        t1._evaluate0$__stylesheet = t2;
        t1._evaluate0$_inDependency = oldInDependency;
        t1._evaluate0$_activeModules.remove$1(0, url);
        return;
      }
      t2 = new A.UnmodifiableListView(t2, t5);
      if (!t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure8())) {
        t2 = new A.UnmodifiableListView(stylesheet._stylesheet1$_forwards, type$.UnmodifiableListView_ForwardRule_2);
        loadsUserDefinedModules = t2.any$1(t2, new A._EvaluateVisitor__visitDynamicImport__closure9());
      } else
        loadsUserDefinedModules = true;
      children = A._Cell$();
      t2 = t1._evaluate0$_environment;
      t3 = type$.String;
      t4 = type$.Module_Callable_2;
      t5 = type$.AstNode_2;
      t6 = A._setArrayType([], type$.JSArray_Module_Callable_2);
      t7 = t2._environment0$_variables;
      t7 = A._setArrayType(t7.slice(0), A._arrayInstanceType(t7));
      t8 = t2._environment0$_variableNodes;
      t8 = A._setArrayType(t8.slice(0), A._arrayInstanceType(t8));
      t9 = t2._environment0$_functions;
      t9 = A._setArrayType(t9.slice(0), A._arrayInstanceType(t9));
      t10 = t2._environment0$_mixins;
      t10 = A._setArrayType(t10.slice(0), A._arrayInstanceType(t10));
      environment = A.Environment$_0(A.LinkedHashMap_LinkedHashMap$_empty(t3, t4), A.LinkedHashMap_LinkedHashMap$_empty(t3, t5), A.LinkedHashMap_LinkedHashMap$_empty(t4, t5), t2._environment0$_importedModules, _null, _null, t6, t7, t8, t9, t10, t2._environment0$_content);
      t1._evaluate0$_withEnvironment$2(environment, new A._EvaluateVisitor__visitDynamicImport__closure10(_box_0, t1, loadsUserDefinedModules, environment, children));
      module = environment.toDummyModule$0();
      t1._evaluate0$_environment.importForwards$1(module);
      if (loadsUserDefinedModules) {
        if (module.transitivelyContainsCss)
          t1._evaluate0$_combineCss$2$clone(module, module.transitivelyContainsExtensions).accept$1(t1);
        visitor = new A._ImportedCssVisitor1(t1);
        for (t2 = J.get$iterator$ax(children._readLocal$0()); t2.moveNext$0();)
          t2.get$current(t2).accept$1(visitor);
      }
      t1._evaluate0$_activeModules.remove$1(0, url);
    },
    $signature: 0
  };
  A._EvaluateVisitor__visitDynamicImport__closure7.prototype = {
    call$1(previousLoad) {
      return this.$this._evaluate0$_multiSpanException$3("This file is already being loaded.", "new load", A.LinkedHashMap_LinkedHashMap$_literal([previousLoad.get$span(previousLoad), "original load"], type$.FileSpan, type$.String));
    },
    $signature: 105
  };
  A._EvaluateVisitor__visitDynamicImport__closure8.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 197
  };
  A._EvaluateVisitor__visitDynamicImport__closure9.prototype = {
    call$1(rule) {
      return rule.url.get$scheme() !== "sass";
    },
    $signature: 198
  };
  A._EvaluateVisitor__visitDynamicImport__closure10.prototype = {
    call$0() {
      var t7, t8, _this = this,
        t1 = _this.$this,
        oldImporter = t1._evaluate0$_importer,
        t2 = t1._evaluate0$_assertInModule$2(t1._evaluate0$__stylesheet, "_stylesheet"),
        t3 = t1._evaluate0$_assertInModule$2(t1._evaluate0$__root, "_root"),
        t4 = t1._evaluate0$_assertInModule$2(t1._evaluate0$__parent, "__parent"),
        t5 = t1._evaluate0$_assertInModule$2(t1._evaluate0$__endOfImports, "_endOfImports"),
        oldOutOfOrderImports = t1._evaluate0$_outOfOrderImports,
        oldConfiguration = t1._evaluate0$_configuration,
        oldInDependency = t1._evaluate0$_inDependency,
        t6 = _this._box_0;
      t1._evaluate0$_importer = t6.importer;
      t7 = t6.stylesheet;
      t1._evaluate0$__stylesheet = t7;
      t8 = _this.loadsUserDefinedModules;
      if (t8) {
        t7 = A.ModifiableCssStylesheet$0(t7.span);
        t1._evaluate0$__root = t7;
        t1._evaluate0$__parent = t1._evaluate0$_assertInModule$2(t7, "_root");
        t1._evaluate0$__endOfImports = 0;
        t1._evaluate0$_outOfOrderImports = null;
      }
      t1._evaluate0$_inDependency = t6.isDependency;
      t7 = new A.UnmodifiableListView(t6.stylesheet._stylesheet1$_forwards, type$.UnmodifiableListView_ForwardRule_2);
      if (!t7.get$isEmpty(t7))
        t1._evaluate0$_configuration = _this.environment.toImplicitConfiguration$0();
      t1.visitStylesheet$1(t6.stylesheet);
      t6 = t8 ? t1._evaluate0$_addOutOfOrderImports$0() : A._setArrayType([], type$.JSArray_ModifiableCssNode_2);
      _this.children._value = t6;
      t1._evaluate0$_importer = oldImporter;
      t1._evaluate0$__stylesheet = t2;
      if (t8) {
        t1._evaluate0$__root = t3;
        t1._evaluate0$__parent = t4;
        t1._evaluate0$__endOfImports = t5;
        t1._evaluate0$_outOfOrderImports = oldOutOfOrderImports;
      }
      t1._evaluate0$_configuration = oldConfiguration;
      t1._evaluate0$_inDependency = oldInDependency;
    },
    $signature: 2
  };
  A._EvaluateVisitor__applyMixin_closure6.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      t1._evaluate0$_environment.asMixin$1(new A._EvaluateVisitor__applyMixin__closure4(t1, _this.$arguments, _this.mixin, _this.nodeWithSpanWithoutContent));
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin__closure4.prototype = {
    call$0() {
      var _this = this;
      _this.$this._evaluate0$_runBuiltInCallable$3(_this.$arguments, _this.mixin, _this.nodeWithSpanWithoutContent);
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin_closure5.prototype = {
    call$0() {
      var t1 = this._1_0;
      if (t1 == null)
        t1 = type$.Callable_2._as(t1);
      return type$.UserDefinedCallable_Environment_2._as(t1).declaration;
    },
    $signature: 130
  };
  A._EvaluateVisitor__applyMixin_closure7.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this;
      t1._evaluate0$_environment.withContent$2(_this.contentCallable, new A._EvaluateVisitor__applyMixin__closure3(t1, _this.mixin, _this.nodeWithSpanWithoutContent));
    },
    $signature: 2
  };
  A._EvaluateVisitor__applyMixin__closure3.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._evaluate0$_environment.asMixin$1(new A._EvaluateVisitor__applyMixin___closure1(t1, this.mixin, this.nodeWithSpanWithoutContent));
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin___closure1.prototype = {
    call$0() {
      var t1, t2, t3, t4, _i;
      for (t1 = this.mixin.declaration.children, t2 = t1.length, t3 = this.$this, t4 = this.nodeWithSpanWithoutContent, _i = 0; _i < t2; ++_i)
        t3._evaluate0$_addErrorSpan$2(t4, new A._EvaluateVisitor__applyMixin____closure1(t3, t1[_i]));
    },
    $signature: 0
  };
  A._EvaluateVisitor__applyMixin____closure1.prototype = {
    call$0() {
      return this.statement.accept$1(this.$this);
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitIncludeRule_closure5.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._evaluate0$_environment.getMixin$2$namespace(t1.name, t1.namespace);
    },
    $signature: 102
  };
  A._EvaluateVisitor_visitIncludeRule_closure6.prototype = {
    call$1($content) {
      var t1 = this.$this;
      return new A.UserDefinedCallable0($content, t1._evaluate0$_environment.closure$0(), t1._evaluate0$_inDependency, type$.UserDefinedCallable_Environment_2);
    },
    $signature: 447
  };
  A._EvaluateVisitor_visitIncludeRule_closure7.prototype = {
    call$0() {
      return this.node.get$spanWithoutContent();
    },
    $signature: 33
  };
  A._EvaluateVisitor_visitMediaRule_closure5.prototype = {
    call$1(mediaQueries) {
      return this.$this._evaluate0$_mergeMediaQueries$2(mediaQueries, this.queries);
    },
    $signature: 113
  };
  A._EvaluateVisitor_visitMediaRule_closure6.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.mergedQueries;
      if (t2 == null)
        t2 = _this.queries;
      t1._evaluate0$_withMediaQueries$3(t2, _this.mergedSources, new A._EvaluateVisitor_visitMediaRule__closure1(t1, _this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitMediaRule__closure1.prototype = {
    call$0() {
      var styleRule, t2, t3, _i,
        t1 = this.$this,
        _0_0 = t1._evaluate0$_atRootExcludingStyleRule ? null : t1._evaluate0$_styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._evaluate0$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitMediaRule___closure1(t1, this.node), false, type$.ModifiableCssStyleRule_2, type$.Null);
      else
        for (t2 = this.node.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t2[_i].accept$1(t1);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitMediaRule___closure1.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitMediaRule_closure7.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule0)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule0 && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitStyleRule_closure9.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitStyleRule_closure10.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitStyleRule_closure11.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._evaluate0$_withStyleRule$2(this.rule, new A._EvaluateVisitor_visitStyleRule__closure1(t1, this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitStyleRule__closure1.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitStyleRule_closure12.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitStyleRule_closure13.prototype = {
    call$1(child) {
      return child instanceof A.ModifiableCssComment0;
    },
    $signature: 148
  };
  A._EvaluateVisitor_visitSupportsRule_closure3.prototype = {
    call$0() {
      var styleRule, t2, t3, _i,
        t1 = this.$this,
        _0_0 = t1._evaluate0$_atRootExcludingStyleRule ? null : t1._evaluate0$_styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._evaluate0$_withParent$2$2(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitSupportsRule__closure1(t1, this.node), type$.ModifiableCssStyleRule_2, type$.Null);
      else
        for (t2 = this.node.children, t3 = t2.length, _i = 0; _i < t3; ++_i)
          t2[_i].accept$1(t1);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitSupportsRule__closure1.prototype = {
    call$0() {
      var t1, t2, t3, _i;
      for (t1 = this.node.children, t2 = t1.length, t3 = this.$this, _i = 0; _i < t2; ++_i)
        t1[_i].accept$1(t3);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitSupportsRule_closure4.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor__visitSupportsCondition_closure1.prototype = {
    call$0() {
      var t4,
        t1 = this.$this,
        t2 = this._box_0,
        t3 = t2.declaration.name;
      t3 = t1._evaluate0$_serialize$3$quote(t3.accept$1(t1), t3, true);
      t4 = t2.declaration.get$isCustomProperty() ? "" : " ";
      t2 = t2.declaration.value;
      return "(" + t3 + ":" + t4 + t1._evaluate0$_serialize$3$quote(t2.accept$1(t1), t2, true) + ")";
    },
    $signature: 22
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure5.prototype = {
    call$0() {
      var t1 = this.$this._evaluate0$_environment,
        t2 = this._box_0.override;
      t1.setVariable$4$global(this.node.name, t2.value, t2.assignmentNode, true);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure6.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._evaluate0$_environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitVariableDeclaration_closure7.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.node;
      t1._evaluate0$_environment.setVariable$5$global$namespace(t2.name, this.value, t1._evaluate0$_expressionNode$1(t2.expression), t2.isGlobal, t2.namespace);
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitUseRule_closure1.prototype = {
    call$2(module, firstLoad) {
      var t1, t2, t3, _0_0, $name, t4, t5, span;
      if (firstLoad)
        this.$this._evaluate0$_registerCommentsForModule$1(module);
      t1 = this.$this._evaluate0$_environment;
      t2 = this.node;
      t3 = t2.namespace;
      if (t3 == null) {
        t1._environment0$_globalModules.$indexSet(0, module, t2);
        t1._environment0$_allModules.push(module);
        _0_0 = A.IterableExtension_firstWhereOrNull(J.get$keys$z(B.JSArray_methods.get$first(t1._environment0$_variables)), module.get$variables().get$containsKey());
        if (_0_0 != null) {
          $name = _0_0;
          t1 = true;
        } else {
          $name = null;
          t1 = false;
        }
        if (t1)
          A.throwExpression(A.SassScriptException$0(string$.This_ma + A.S($name) + '".', null));
      } else {
        t4 = t1._environment0$_modules;
        if (t4.containsKey$1(t3)) {
          t5 = t1._environment0$_namespaceNodes.$index(0, t3);
          span = t5 == null ? null : t5.span;
          t5 = A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String);
          if (span != null)
            t5.$indexSet(0, span, "original @use");
          A.throwExpression(A.MultiSpanSassScriptException$0(string$.There_ + t3 + '".', "new @use", t5));
        }
        t4.$indexSet(0, t3, module);
        t1._environment0$_namespaceNodes.$indexSet(0, t3, t2);
        t1._environment0$_allModules.push(module);
      }
    },
    $signature: 95
  };
  A._EvaluateVisitor_visitWarnRule_closure1.prototype = {
    call$0() {
      return this.node.expression.accept$1(this.$this);
    },
    $signature: 31
  };
  A._EvaluateVisitor_visitWhileRule_closure1.prototype = {
    call$0() {
      var t1, t2, t3, _0_0, result, t4;
      for (t1 = this.node, t2 = t1.condition, t3 = this.$this, t1 = t1.children; t2.accept$1(t3).get$isTruthy();) {
        _0_0 = t3._evaluate0$_handleReturn$2(t1, new A._EvaluateVisitor_visitWhileRule__closure1(t3));
        if (_0_0 != null) {
          result = _0_0;
          t4 = true;
        } else {
          result = null;
          t4 = false;
        }
        if (t4)
          return result;
      }
      return null;
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitWhileRule__closure1.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 93
  };
  A._EvaluateVisitor_visitBinaryOperationExpression_closure1.prototype = {
    call$0() {
      var t1 = this.node,
        t2 = this.$this,
        left = t1.left.accept$1(t2);
      switch (t1.operator) {
        case B.BinaryOperator_2jN0:
          t1 = t1.right.accept$1(t2);
          t1 = new A.SassString0(A.serializeValue0(left, false, true) + "=" + A.serializeValue0(t1, false, true), false);
          break;
        case B.BinaryOperator_M6L0:
          t1 = left.get$isTruthy() ? left : t1.right.accept$1(t2);
          break;
        case B.BinaryOperator_SNp0:
          t1 = left.get$isTruthy() ? t1.right.accept$1(t2) : left;
          break;
        case B.BinaryOperator_ql50:
          t1 = left.$eq(0, t1.right.accept$1(t2)) ? B.SassBoolean_true0 : B.SassBoolean_false0;
          break;
        case B.BinaryOperator_ViB0:
          t1 = !left.$eq(0, t1.right.accept$1(t2)) ? B.SassBoolean_true0 : B.SassBoolean_false0;
          break;
        case B.BinaryOperator_cIH0:
          t1 = left.greaterThan$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_7Tg0:
          t1 = left.greaterThanOrEquals$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_U8c0:
          t1 = left.lessThan$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_kpg0:
          t1 = left.lessThanOrEquals$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_anB0:
          t1 = left.plus$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_olz0:
          t1 = left.minus$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_qN20:
          t1 = left.times$1(t1.right.accept$1(t2));
          break;
        case B.BinaryOperator_t8B0:
          t1 = t2._evaluate0$_slash$3(left, t1.right.accept$1(t2), t1);
          break;
        case B.BinaryOperator_OTG0:
          t1 = left.modulo$1(t1.right.accept$1(t2));
          break;
        default:
          t1 = null;
      }
      return t1;
    },
    $signature: 31
  };
  A._EvaluateVisitor__slash_closure3.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 31
  };
  A._EvaluateVisitor__slash_closure4.prototype = {
    call$0() {
      return this._1_0._1;
    },
    $signature: 31
  };
  A._EvaluateVisitor__slash_recommendation1.prototype = {
    call$1(expression) {
      var left, right, t1, _null = null;
      $label0$0: {
        if (expression instanceof A.BinaryOperationExpression0)
          if (B.BinaryOperator_t8B0 === expression.operator) {
            left = expression.left;
            right = expression.right;
            t1 = true;
          } else {
            right = _null;
            left = right;
            t1 = false;
          }
        else {
          right = _null;
          left = right;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(left)) + ", " + A.S(this.call$1(right)) + ")";
          break $label0$0;
        }
        if (expression instanceof A.ParenthesizedExpression0) {
          t1 = expression.expression.toString$0(0);
          break $label0$0;
        }
        t1 = expression.toString$0(0);
        break $label0$0;
      }
      return t1;
    },
    $signature: 118
  };
  A._EvaluateVisitor_visitVariableExpression_closure1.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._evaluate0$_environment.getVariable$2$namespace(t1.name, t1.namespace);
    },
    $signature: 46
  };
  A._EvaluateVisitor_visitUnaryOperationExpression_closure1.prototype = {
    call$0() {
      var t1, _this = this;
      switch (_this.node.operator) {
        case B.UnaryOperator_gg40:
          t1 = _this.operand.unaryPlus$0();
          break;
        case B.UnaryOperator_TLI0:
          t1 = _this.operand.unaryMinus$0();
          break;
        case B.UnaryOperator_Ix10:
          t1 = new A.SassString0("/" + A.serializeValue0(_this.operand, false, true), false);
          break;
        case B.UnaryOperator_not_not_not0:
          t1 = _this.operand.unaryNot$0();
          break;
        default:
          t1 = null;
      }
      return t1;
    },
    $signature: 31
  };
  A._EvaluateVisitor_visitListExpression_closure1.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 448
  };
  A._EvaluateVisitor_visitFunctionExpression_closure5.prototype = {
    call$0() {
      var t1 = this.$this._evaluate0$_environment,
        t2 = this.node;
      return t1.getFunction$2$namespace(A.stringReplaceAllUnchecked(t2.originalName, "_", "-"), t2.namespace);
    },
    $signature: 102
  };
  A._EvaluateVisitor_visitFunctionExpression_closure6.prototype = {
    call$1(argument) {
      return argument.accept$1(new A._IsCalculationSafeVisitor0());
    },
    $signature: 119
  };
  A._EvaluateVisitor_visitFunctionExpression_closure7.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._evaluate0$_runFunctionCallable$3(t1.$arguments, this._box_0.$function, t1);
    },
    $signature: 31
  };
  A._EvaluateVisitor__checkCalculationArguments_check1.prototype = {
    call$1(maxArgs) {
      var t1 = this.node,
        t2 = t1.$arguments.positional.length;
      if (t2 === 0)
        throw A.wrapException(this.$this._evaluate0$_exception$2("Missing argument.", t1.span));
      else if (maxArgs != null && t2 > maxArgs)
        throw A.wrapException(this.$this._evaluate0$_exception$2("Only " + A.S(maxArgs) + " " + A.pluralize0("argument", maxArgs, null) + " allowed, but " + t2 + " " + A.pluralize0("was", t2, "were") + " passed.", t1.span));
    },
    call$0() {
      return this.call$1(null);
    },
    $signature: 86
  };
  A._EvaluateVisitor__visitCalculationExpression_closure1.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this._box_0,
        t3 = _this.inLegacySassFunction;
      return A.SassCalculation_operateInternal0(t1._evaluate0$_binaryOperatorToCalculationOperator$2(t2.operator, _this.node), t1._evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2.left, t3), t1._evaluate0$_visitCalculationExpression$2$inLegacySassFunction(t2.right, t3), t3, !t1._evaluate0$_inSupportsDeclaration);
    },
    $signature: 14
  };
  A._EvaluateVisitor__checkAdjacentCalculationValues_closure1.prototype = {
    call$0() {
      return type$.UnaryOperationExpression_2._as(this._0_0).operator;
    },
    $signature: 120
  };
  A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure1.prototype = {
    call$0() {
      var t1 = this.node;
      return this.$this._evaluate0$_runFunctionCallable$3(t1.$arguments, this.$function, t1);
    },
    $signature: 31
  };
  A._EvaluateVisitor__runUserDefinedCallable_closure1.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.callable;
      return t1._evaluate0$_withEnvironment$2(t2.environment.closure$0(), new A._EvaluateVisitor__runUserDefinedCallable__closure1(t1, _this.evaluated, t2, _this.nodeWithSpan, _this.run, _this.V));
    },
    $signature() {
      return this.V._eval$1("0()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable__closure1.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.V;
      return t1._evaluate0$_environment.scope$1$1(new A._EvaluateVisitor__runUserDefinedCallable___closure1(t1, _this.evaluated, _this.callable, _this.nodeWithSpan, _this.run, t2), t2);
    },
    $signature() {
      return this.V._eval$1("0()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable___closure1.prototype = {
    call$0() {
      var declaredArguments, t5, minLength, i, argument, t6, t7, value, t8, restArgument, rest, argumentList, result, argumentWord, _this = this,
        t1 = _this.$this,
        t2 = _this.evaluated._values,
        t3 = _this.callable.declaration.$arguments,
        t4 = _this.nodeWithSpan;
      t1._evaluate0$_verifyArguments$4(J.get$length$asx(t2[2]), t2[0], t3, t4);
      declaredArguments = t3.$arguments;
      t5 = declaredArguments.length;
      minLength = Math.min(J.get$length$asx(t2[2]), t5);
      for (i = 0; i < minLength; ++i)
        t1._evaluate0$_environment.setLocalVariable$3(declaredArguments[i].name, J.$index$asx(t2[2], i), J.$index$asx(t2[3], i));
      for (i = J.get$length$asx(t2[2]); i < t5; ++i) {
        argument = declaredArguments[i];
        t6 = t2[0];
        t7 = argument.name;
        value = J.remove$1$z(t6, t7);
        if (value == null) {
          t6 = argument.defaultValue;
          value = t1._evaluate0$_withoutSlash$2(t6.accept$1(t1), t1._evaluate0$_expressionNode$1(t6));
        }
        t6 = t1._evaluate0$_environment;
        t8 = J.$index$asx(t2[1], t7);
        if (t8 == null) {
          t8 = argument.defaultValue;
          t8.toString;
          t8 = t1._evaluate0$_expressionNode$1(t8);
        }
        t6.setLocalVariable$3(t7, value, t8);
      }
      restArgument = t3.restArgument;
      if (restArgument != null) {
        rest = J.get$length$asx(t2[2]) > t5 ? J.sublist$1$ax(t2[2], t5) : B.List_empty19;
        t5 = t2[0];
        t6 = t2[4];
        argumentList = A.SassArgumentList$0(rest, t5, t6 === B.ListSeparator_undecided_null_undecided0 ? B.ListSeparator_rXA0 : t6);
        t1._evaluate0$_environment.setLocalVariable$3(restArgument, argumentList, t4);
      } else
        argumentList = null;
      result = _this.run.call$0();
      if (argumentList == null)
        return result;
      t5 = t2[0].__js_helper$_length;
      if (t5 === 0)
        return result;
      if (argumentList._argument_list$_wereKeywordsAccessed)
        return result;
      argumentWord = A.pluralize0("argument", t5, null);
      t2 = t2[0];
      t5 = A.instanceType(t2)._eval$1("LinkedHashMapKeyIterable<1>");
      throw A.wrapException(A.MultiSpanSassRuntimeException$0("No " + argumentWord + " named " + A.toSentence0(A.MappedIterable_MappedIterable(new A.LinkedHashMapKeyIterable(t2, t5), new A._EvaluateVisitor__runUserDefinedCallable____closure1(), t5._eval$1("Iterable.E"), type$.Object), "or") + ".", t4.get$span(t4), "invocation", A.LinkedHashMap_LinkedHashMap$_literal([t3.get$spanWithName(), "declaration"], type$.FileSpan, type$.String), t1._evaluate0$_stackTrace$1(t4.get$span(t4)), null));
    },
    $signature() {
      return this.V._eval$1("0()");
    }
  };
  A._EvaluateVisitor__runUserDefinedCallable____closure1.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__runFunctionCallable_closure1.prototype = {
    call$0() {
      var t1, t2, t3, t4, _i, $returnValue;
      for (t1 = this.callable.declaration, t2 = t1.children, t3 = t2.length, t4 = this.$this, _i = 0; _i < t3; ++_i) {
        $returnValue = t2[_i].accept$1(t4);
        if ($returnValue instanceof A.Value0)
          return $returnValue;
      }
      throw A.wrapException(t4._evaluate0$_exception$2("Function finished without @return.", t1.span));
    },
    $signature: 31
  };
  A._EvaluateVisitor__runBuiltInCallable_closure5.prototype = {
    call$0() {
      return this._box_0.overload.verify$2(J.get$length$asx(this.evaluated._values[2]), this.namedSet);
    },
    $signature: 0
  };
  A._EvaluateVisitor__runBuiltInCallable_closure6.prototype = {
    call$0() {
      return this._box_0.callback.call$1(this.evaluated._values[2]);
    },
    $signature: 31
  };
  A._EvaluateVisitor__runBuiltInCallable_closure7.prototype = {
    call$1($name) {
      return "$" + $name;
    },
    $signature: 7
  };
  A._EvaluateVisitor__evaluateArguments_closure7.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 45
  };
  A._EvaluateVisitor__evaluateArguments_closure8.prototype = {
    call$1(value) {
      return this.$this._evaluate0$_withoutSlash$2(value, this.restNodeForSpan);
    },
    $signature: 45
  };
  A._EvaluateVisitor__evaluateArguments_closure9.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restNodeForSpan;
      _this.named.$indexSet(0, key, _this.$this._evaluate0$_withoutSlash$2(value, t1));
      _this.namedNodes.$indexSet(0, key, t1);
    },
    $signature: 109
  };
  A._EvaluateVisitor__evaluateArguments_closure10.prototype = {
    call$1(value) {
      return value;
    },
    $signature: 45
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure7.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression0(value, t1.get$span(t1));
    },
    $signature: 60
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure8.prototype = {
    call$1(value) {
      var t1 = this.restArgs;
      return new A.ValueExpression0(this.$this._evaluate0$_withoutSlash$2(value, this.restNodeForSpan), t1.get$span(t1));
    },
    $signature: 60
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure9.prototype = {
    call$2(key, value) {
      var _this = this,
        t1 = _this.restArgs;
      _this.named.$indexSet(0, key, new A.ValueExpression0(_this.$this._evaluate0$_withoutSlash$2(value, _this.restNodeForSpan), t1.get$span(t1)));
    },
    $signature: 109
  };
  A._EvaluateVisitor__evaluateMacroArguments_closure10.prototype = {
    call$1(value) {
      var t1 = this.keywordRestArgs;
      return new A.ValueExpression0(this.$this._evaluate0$_withoutSlash$2(value, this.keywordRestNodeForSpan), t1.get$span(t1));
    },
    $signature: 60
  };
  A._EvaluateVisitor__addRestMap_closure1.prototype = {
    call$2(key, value) {
      var t2, _this = this,
        t1 = _this.$this;
      if (key instanceof A.SassString0)
        _this.values.$indexSet(0, key._string0$_text, _this.convert.call$1(t1._evaluate0$_withoutSlash$2(value, _this.expressionNode)));
      else {
        t2 = _this.nodeWithSpan;
        throw A.wrapException(t1._evaluate0$_exception$2(string$.Variab_ + key.toString$0(0) + " is not a string in " + _this.map.toString$0(0) + ".", t2.get$span(t2)));
      }
    },
    $signature: 104
  };
  A._EvaluateVisitor__verifyArguments_closure1.prototype = {
    call$0() {
      return this.$arguments.verify$2(this.positional, new A.MapKeySet(this.named, type$.MapKeySet_String));
    },
    $signature: 0
  };
  A._EvaluateVisitor_visitCssAtRule_closure3.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssAtRule_closure4.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure3.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssKeyframeBlock_closure4.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssMediaRule_closure5.prototype = {
    call$1(mediaQueries) {
      return this.$this._evaluate0$_mergeMediaQueries$2(mediaQueries, this.node.queries);
    },
    $signature: 113
  };
  A._EvaluateVisitor_visitCssMediaRule_closure6.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.$this,
        t2 = _this.mergedQueries;
      if (t2 == null)
        t2 = _this.node.queries;
      t1._evaluate0$_withMediaQueries$3(t2, _this.mergedSources, new A._EvaluateVisitor_visitCssMediaRule__closure1(t1, _this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssMediaRule__closure1.prototype = {
    call$0() {
      var styleRule, t2, t3, t4,
        t1 = this.$this,
        _0_0 = t1._evaluate0$_atRootExcludingStyleRule ? null : t1._evaluate0$_styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._evaluate0$_withParent$2$3$scopeWhen(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssMediaRule___closure1(t1, this.node), false, type$.ModifiableCssStyleRule_2, type$.Null);
      else
        for (t2 = this.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
          t4 = t2.__internal$_current;
          (t4 == null ? t3._as(t4) : t4).accept$1(t1);
        }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssMediaRule___closure1.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssMediaRule_closure7.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule0)) {
        t1 = this.mergedSources;
        t1 = t1.get$isNotEmpty(t1) && node instanceof A.ModifiableCssMediaRule0 && B.JSArray_methods.every$1(node.queries, t1.get$contains(t1));
      } else
        t1 = true;
      return t1;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssStyleRule_closure5.prototype = {
    call$0() {
      var t1 = this.$this;
      t1._evaluate0$_withStyleRule$2(this.rule, new A._EvaluateVisitor_visitCssStyleRule__closure1(t1, this.node));
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssStyleRule__closure1.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssStyleRule_closure6.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor_visitCssStyleRule_closure7.prototype = {
    call$0() {
      return J.get$length$asx(this._0_0._collection$_source);
    },
    $signature: 3
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure3.prototype = {
    call$0() {
      var styleRule, t2, t3, t4,
        t1 = this.$this,
        _0_0 = t1._evaluate0$_atRootExcludingStyleRule ? null : t1._evaluate0$_styleRuleIgnoringAtRoot;
      if (_0_0 != null) {
        styleRule = _0_0;
        t2 = true;
      } else {
        styleRule = null;
        t2 = false;
      }
      if (t2)
        t1._evaluate0$_withParent$2$2(A.ModifiableCssStyleRule$0(styleRule._style_rule0$_selector, styleRule.span, styleRule.originalSelector), new A._EvaluateVisitor_visitCssSupportsRule__closure1(t1, this.node), type$.ModifiableCssStyleRule_2, type$.Null);
      else
        for (t2 = this.node.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
          t4 = t2.__internal$_current;
          (t4 == null ? t3._as(t4) : t4).accept$1(t1);
        }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssSupportsRule__closure1.prototype = {
    call$0() {
      var t1, t2, t3, t4;
      for (t1 = this.node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = this.$this, t3 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t4 = t1.__internal$_current;
        (t4 == null ? t3._as(t4) : t4).accept$1(t2);
      }
    },
    $signature: 2
  };
  A._EvaluateVisitor_visitCssSupportsRule_closure4.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluateVisitor__performInterpolationHelper_closure1.prototype = {
    call$1(targetLocations) {
      return A.InterpolationMap$0(this.interpolation, targetLocations);
    },
    $signature: 211
  };
  A._EvaluateVisitor__serialize_closure1.prototype = {
    call$0() {
      return A.serializeValue0(this.value, false, this.quote);
    },
    $signature: 22
  };
  A._EvaluateVisitor__expressionNode_closure1.prototype = {
    call$0() {
      var t1 = this.expression;
      return this.$this._evaluate0$_environment.getVariableNode$2$namespace(t1.name, t1.namespace);
    },
    $signature: 212
  };
  A._EvaluateVisitor__withoutSlash_recommendation1.prototype = {
    call$1(number) {
      var t1, before, after,
        _1_0 = number.asSlash;
      $label0$0: {
        if (type$.Record_2_nullable_Object_and_nullable_Object._is(_1_0)) {
          t1 = type$.SassNumber_2;
          before = t1._as(_1_0._0);
          after = t1._as(_1_0._1);
          t1 = true;
        } else {
          before = null;
          after = null;
          t1 = false;
        }
        if (t1) {
          t1 = "math.div(" + A.S(this.call$1(before)) + ", " + A.S(this.call$1(after)) + ")";
          break $label0$0;
        }
        t1 = A.serializeValue0(number, true, true);
        break $label0$0;
      }
      return t1;
    },
    $signature: 213
  };
  A._EvaluateVisitor__stackFrame_closure1.prototype = {
    call$1(url) {
      var t1 = this.$this._evaluate0$_importCache;
      t1 = t1 == null ? null : t1.humanize$1(url);
      return t1 == null ? url : t1;
    },
    $signature: 48
  };
  A._ImportedCssVisitor1.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.isChildless ? null : new A._ImportedCssVisitor_visitCssAtRule_closure1();
      this._evaluate0$_visitor._evaluate0$_addChild$2$through(node, t1);
    },
    visitCssComment$1(node) {
      return this._evaluate0$_visitor._evaluate0$_addChild$1(node);
    },
    visitCssDeclaration$1(node) {
    },
    visitCssImport$1(node) {
      var t2,
        _s13_ = "_endOfImports",
        t1 = this._evaluate0$_visitor;
      if (t1._evaluate0$_assertInModule$2(t1._evaluate0$__parent, "__parent") !== t1._evaluate0$_assertInModule$2(t1._evaluate0$__root, "_root"))
        t1._evaluate0$_addChild$1(node);
      else if (t1._evaluate0$_assertInModule$2(t1._evaluate0$__endOfImports, _s13_) === J.get$length$asx(t1._evaluate0$_assertInModule$2(t1._evaluate0$__root, "_root").children._collection$_source)) {
        t1._evaluate0$_addChild$1(node);
        t1._evaluate0$__endOfImports = t1._evaluate0$_assertInModule$2(t1._evaluate0$__endOfImports, _s13_) + 1;
      } else {
        t2 = t1._evaluate0$_outOfOrderImports;
        (t2 == null ? t1._evaluate0$_outOfOrderImports = A._setArrayType([], type$.JSArray_ModifiableCssImport_2) : t2).push(node);
      }
    },
    visitCssKeyframeBlock$1(node) {
    },
    visitCssMediaRule$1(node) {
      var t1 = this._evaluate0$_visitor,
        mediaQueries = t1._evaluate0$_mediaQueries;
      t1._evaluate0$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssMediaRule_closure1(mediaQueries == null || t1._evaluate0$_mergeMediaQueries$2(mediaQueries, node.queries) != null));
    },
    visitCssStyleRule$1(node) {
      return this._evaluate0$_visitor._evaluate0$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssStyleRule_closure1());
    },
    visitCssStylesheet$1(node) {
      var t1, t2, t3;
      for (t1 = node.children, t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        (t3 == null ? t2._as(t3) : t3).accept$1(this);
      }
    },
    visitCssSupportsRule$1(node) {
      return this._evaluate0$_visitor._evaluate0$_addChild$2$through(node, new A._ImportedCssVisitor_visitCssSupportsRule_closure1());
    }
  };
  A._ImportedCssVisitor_visitCssAtRule_closure1.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._ImportedCssVisitor_visitCssMediaRule_closure1.prototype = {
    call$1(node) {
      var t1;
      if (!(node instanceof A.ModifiableCssStyleRule0))
        t1 = this.hasBeenMerged && node instanceof A.ModifiableCssMediaRule0;
      else
        t1 = true;
      return t1;
    },
    $signature: 8
  };
  A._ImportedCssVisitor_visitCssStyleRule_closure1.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._ImportedCssVisitor_visitCssSupportsRule_closure1.prototype = {
    call$1(node) {
      return node instanceof A.ModifiableCssStyleRule0;
    },
    $signature: 8
  };
  A._EvaluationContext1.prototype = {
    get$currentCallableSpan() {
      var callableNode, t1,
        _0_0 = this._evaluate0$_visitor._evaluate0$_callableNode;
      if (_0_0 != null) {
        callableNode = _0_0;
        t1 = true;
      } else {
        callableNode = null;
        t1 = false;
      }
      if (t1)
        return callableNode.get$span(callableNode);
      throw A.wrapException(A.StateError$(string$.No_Sasc));
    },
    warn$2(_, message, deprecation) {
      var t1 = this._evaluate0$_visitor,
        t2 = t1._evaluate0$_importSpan;
      if (t2 == null) {
        t2 = t1._evaluate0$_callableNode;
        t2 = t2 == null ? null : t2.get$span(t2);
      }
      t1._evaluate0$_warn$3(message, t2 == null ? this._evaluate0$_defaultWarnNodeWithSpan.span : t2, deprecation);
    },
    $isEvaluationContext0: 1
  };
  A.EveryCssVisitor0.prototype = {
    visitCssAtRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssAtRule_closure0(this));
    },
    visitCssComment$1(node) {
      return false;
    },
    visitCssDeclaration$1(node) {
      return false;
    },
    visitCssImport$1(node) {
      return false;
    },
    visitCssKeyframeBlock$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssKeyframeBlock_closure0(this));
    },
    visitCssMediaRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssMediaRule_closure0(this));
    },
    visitCssStyleRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssStyleRule_closure0(this));
    },
    visitCssStylesheet$1(node) {
      return J.every$1$ax(node.get$children(node), new A.EveryCssVisitor_visitCssStylesheet_closure0(this));
    },
    visitCssSupportsRule$1(node) {
      var t1 = node.children;
      return t1.every$1(t1, new A.EveryCssVisitor_visitCssSupportsRule_closure0(this));
    }
  };
  A.EveryCssVisitor_visitCssAtRule_closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 8
  };
  A.EveryCssVisitor_visitCssKeyframeBlock_closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 8
  };
  A.EveryCssVisitor_visitCssMediaRule_closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 8
  };
  A.EveryCssVisitor_visitCssStyleRule_closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 8
  };
  A.EveryCssVisitor_visitCssStylesheet_closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 8
  };
  A.EveryCssVisitor_visitCssSupportsRule_closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature: 8
  };
  A._NodeException.prototype = {};
  A.exceptionClass_closure.prototype = {
    call$0() {
      var jsClass = type$.JSClass._as(new self.Function("", "    return class Exception extends Error {\n      constructor(dartException, message) {\n        super(message);\n\n        // Define this as non-enumerable so that it doesn't show up when the\n        // exception hits the top level.\n        Object.defineProperty(this, '_dartException', {\n          value: dartException,\n          enumerable: false\n        });\n      }\n\n      toString() {\n        return this.message;\n      }\n    }\n  ").call$0());
      A.defineGetter(jsClass, "name", null, "sass.Exception");
      A.LinkedHashMap_LinkedHashMap$_literal(["sassMessage", new A.exceptionClass__closure(), "sassStack", new A.exceptionClass__closure0(), "span", new A.exceptionClass__closure1()], type$.String, type$.Function).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      return jsClass;
    },
    $signature: 24
  };
  A.exceptionClass__closure.prototype = {
    call$1(exception) {
      return J.get$_dartException$x(exception)._span_exception$_message;
    },
    $signature: 244
  };
  A.exceptionClass__closure0.prototype = {
    call$1(exception) {
      return J.get$trace$z(J.get$_dartException$x(exception)).toString$0(0);
    },
    $signature: 244
  };
  A.exceptionClass__closure1.prototype = {
    call$1(exception) {
      var t1 = J.get$_dartException$x(exception),
        t2 = J.getInterceptor$z(t1);
      return A.SourceSpanException.prototype.get$span.call(t2, t1);
    },
    $signature: 450
  };
  A.SassException0.prototype = {
    get$trace(_) {
      return A.Trace$(A._setArrayType([A.frameForSpan0(A.SourceSpanException.prototype.get$span.call(this, this), "root stylesheet", null)], type$.JSArray_Frame), null);
    },
    get$span(_) {
      return A.SourceSpanException.prototype.get$span.call(this, this);
    },
    withAdditionalSpan$2(span, label) {
      var _this = this;
      return A.MultiSpanSassException$0(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), "", A.LinkedHashMap_LinkedHashMap$_literal([span, label], type$.FileSpan, type$.String), _this.loadedUrls);
    },
    withTrace$1(trace) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.Set_Set$unmodifiable(_this.loadedUrls, type$.Uri);
      return new A.SassRuntimeException0(trace, t2, _this._span_exception$_message, t1);
    },
    withLoadedUrls$1(loadedUrls) {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this),
        t2 = A.Set_Set$unmodifiable(loadedUrls, type$.Uri);
      return new A.SassException0(t2, this._span_exception$_message, t1);
    },
    toString$1$color(_, color) {
      var t2, _i, frame, t3, _this = this,
        buffer = new A.StringBuffer(""),
        t1 = "" + ("Error: " + _this._span_exception$_message + "\n");
      buffer._contents = t1;
      buffer._contents = t1 + A.SourceSpanException.prototype.get$span.call(_this, _this).highlight$1$color(color);
      for (t1 = _this.get$trace(_this).toString$0(0).split("\n"), t2 = t1.length, _i = 0; _i < t2; ++_i) {
        frame = t1[_i];
        if (J.get$length$asx(frame) === 0)
          continue;
        t3 = buffer._contents += "\n";
        buffer._contents = t3 + ("  " + A.S(frame));
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    toString$0($receiver) {
      return this.toString$1$color($receiver, null);
    }
  };
  A.MultiSpanSassException0.prototype = {
    withAdditionalSpan$2(span, label) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.LinkedHashMap_LinkedHashMap$of(_this.secondarySpans, type$.FileSpan, type$.String);
      t2.$indexSet(0, span, label);
      return A.MultiSpanSassException$0(_this._span_exception$_message, t1, _this.primaryLabel, t2, _this.loadedUrls);
    },
    withTrace$1(trace) {
      var _this = this;
      return A.MultiSpanSassRuntimeException$0(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, trace, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this;
      return A.MultiSpanSassException$0(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, loadedUrls);
    },
    toString$1$color(_, color) {
      var t1, t2, _i, frame, _this = this,
        useColor = color === true && true,
        buffer = new A.StringBuffer("Error: " + _this._span_exception$_message + "\n");
      A.NullableExtension_andThen0(A.Highlighter$multiple(A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, useColor, null, null).highlight$0(), buffer.get$write(buffer));
      for (t1 = _this.get$trace(_this).toString$0(0).split("\n"), t2 = t1.length, _i = 0; _i < t2; ++_i) {
        frame = t1[_i];
        if (J.get$length$asx(frame) === 0)
          continue;
        buffer._contents += "\n";
        buffer._contents += "  " + A.S(frame);
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    toString$0($receiver) {
      return this.toString$1$color($receiver, null);
    },
    get$primaryLabel() {
      return this.primaryLabel;
    },
    get$secondarySpans() {
      return this.secondarySpans;
    }
  };
  A.SassRuntimeException0.prototype = {
    withAdditionalSpan$2(span, label) {
      var _this = this;
      return A.MultiSpanSassRuntimeException$0(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), "", A.LinkedHashMap_LinkedHashMap$_literal([span, label], type$.FileSpan, type$.String), _this.trace, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.Set_Set$unmodifiable(loadedUrls, type$.Uri);
      return new A.SassRuntimeException0(_this.trace, t2, _this._span_exception$_message, t1);
    },
    get$trace(receiver) {
      return this.trace;
    }
  };
  A.MultiSpanSassRuntimeException0.prototype = {
    withAdditionalSpan$2(span, label) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.LinkedHashMap_LinkedHashMap$of(_this.secondarySpans, type$.FileSpan, type$.String);
      t2.$indexSet(0, span, label);
      return A.MultiSpanSassRuntimeException$0(_this._span_exception$_message, t1, _this.primaryLabel, t2, _this.trace, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this;
      return A.MultiSpanSassRuntimeException$0(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, _this.trace, loadedUrls);
    },
    $isSassRuntimeException0: 1,
    get$trace(receiver) {
      return this.trace;
    }
  };
  A.SassFormatException0.prototype = {
    get$source() {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this);
      return A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.get$file(t1)._decodedChars, 0, null), 0, null);
    },
    withAdditionalSpan$2(span, label) {
      var _this = this;
      return A.MultiSpanSassFormatException$0(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), "", A.LinkedHashMap_LinkedHashMap$_literal([span, label], type$.FileSpan, type$.String), _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this),
        t2 = A.Set_Set$unmodifiable(loadedUrls, type$.Uri);
      return new A.SassFormatException0(t2, this._span_exception$_message, t1);
    },
    $isFormatException: 1,
    $isSourceSpanFormatException: 1
  };
  A.MultiSpanSassFormatException0.prototype = {
    get$source() {
      var t1 = A.SourceSpanException.prototype.get$span.call(this, this);
      return A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1.get$file(t1)._decodedChars, 0, null), 0, null);
    },
    withAdditionalSpan$2(span, label) {
      var _this = this,
        t1 = A.SourceSpanException.prototype.get$span.call(_this, _this),
        t2 = A.LinkedHashMap_LinkedHashMap$of(_this.secondarySpans, type$.FileSpan, type$.String);
      t2.$indexSet(0, span, label);
      return A.MultiSpanSassFormatException$0(_this._span_exception$_message, t1, _this.primaryLabel, t2, _this.loadedUrls);
    },
    withLoadedUrls$1(loadedUrls) {
      var _this = this;
      return A.MultiSpanSassFormatException$0(_this._span_exception$_message, A.SourceSpanException.prototype.get$span.call(_this, _this), _this.primaryLabel, _this.secondarySpans, loadedUrls);
    },
    $isFormatException: 1,
    $isSourceSpanFormatException: 1,
    $isMultiSourceSpanFormatException: 1,
    $isSassFormatException0: 1
  };
  A.SassScriptException0.prototype = {
    withSpan$1(span) {
      return new A.SassException0(B.Set_empty, this.message, span);
    },
    toString$0(_) {
      return this.message + string$.x0a_BUG_;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A.MultiSpanSassScriptException0.prototype = {
    withSpan$1(span) {
      return A.MultiSpanSassException$0(this.message, span, this.primaryLabel, this.secondarySpans, null);
    }
  };
  A.Exports.prototype = {};
  A.LoggerNamespace.prototype = {};
  A._IsCalculationSafeVisitor0.prototype = {
    visitBinaryOperationExpression$1(node) {
      var t1;
      if (B.Set_FIwG40.contains$1(0, node.operator))
        t1 = node.left.accept$1(this) || node.right.accept$1(this);
      else
        t1 = false;
      return t1;
    },
    visitBooleanExpression$1(node) {
      return false;
    },
    visitColorExpression$1(node) {
      return false;
    },
    visitFunctionExpression$1(node) {
      return true;
    },
    visitInterpolatedFunctionExpression$1(node) {
      return true;
    },
    visitIfExpression$1(node) {
      return true;
    },
    visitListExpression$1(node) {
      var t1;
      if (node.separator === B.ListSeparator_EVt0)
        if (!node.hasBrackets) {
          t1 = node.contents;
          t1 = t1.length > 1 && B.JSArray_methods.every$1(t1, new A._IsCalculationSafeVisitor_visitListExpression_closure0(this));
        } else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    visitMapExpression$1(node) {
      return false;
    },
    visitNullExpression$1(node) {
      return false;
    },
    visitNumberExpression$1(node) {
      return true;
    },
    visitParenthesizedExpression$1(node) {
      return node.expression.accept$1(this);
    },
    visitSelectorExpression$1(node) {
      return false;
    },
    visitStringExpression$1(node) {
      var text, t1, t2;
      if (node.hasQuotes)
        return false;
      text = node.text.get$initialPlain();
      if (!B.JSString_methods.startsWith$1(text, "!"))
        if (!B.JSString_methods.startsWith$1(text, "#")) {
          t1 = text.length;
          if ((1 >= t1 ? null : text.charCodeAt(1)) !== 43) {
            t2 = (3 >= t1 ? null : text.charCodeAt(3)) !== 40;
            t1 = t2;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    visitSupportsExpression$1(node) {
      return false;
    },
    visitUnaryOperationExpression$1(node) {
      return false;
    },
    visitValueExpression$1(node) {
      return false;
    },
    visitVariableExpression$1(node) {
      return true;
    }
  };
  A._IsCalculationSafeVisitor_visitListExpression_closure0.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 119
  };
  A._MakeExpressionCalculationSafe0.prototype = {
    visitBinaryOperationExpression$1(node) {
      var t1, t2, t3;
      if (node.operator === B.BinaryOperator_OTG0) {
        t1 = A._setArrayType([node], type$.JSArray_Expression_2);
        t2 = node.get$span(node);
        t3 = type$.Expression_2;
        t2 = new A.FunctionExpression0("math", "max", new A.ArgumentInvocation0(A.List_List$unmodifiable(t1, t3), A.ConstantMap_ConstantMap$from(B.Map_empty14, type$.String, t3), null, null, t2), node.get$span(node));
        t1 = t2;
      } else
        t1 = this.super$ReplaceExpressionVisitor$visitBinaryOperationExpression0(node);
      return t1;
    },
    visitInterpolatedFunctionExpression$1(node) {
      return node;
    },
    visitUnaryOperationExpression$1(node) {
      var t1,
        _0_0 = node.operator;
      $label0$0: {
        if (B.UnaryOperator_gg40 === _0_0) {
          t1 = node.operand;
          break $label0$0;
        }
        if (B.UnaryOperator_TLI0 === _0_0) {
          t1 = new A.BinaryOperationExpression0(B.BinaryOperator_qN20, new A.NumberExpression0(-1, null, node.span), node.operand, false);
          break $label0$0;
        }
        t1 = this.super$ReplaceExpressionVisitor$visitUnaryOperationExpression0(node);
        break $label0$0;
      }
      return t1;
    }
  };
  A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor0.prototype = {};
  A.ExtendRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitExtendRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.selector.toString$0(0),
        t2 = this.isOptional ? " !optional" : "";
      return "@extend " + t1 + t2 + ";";
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Extension0.prototype = {
    toString$0(_) {
      var t1 = this.extender.toString$0(0),
        t2 = this.target.toString$0(0),
        t3 = this.isOptional ? " !optional" : "";
      return t1 + " {@extend " + t2 + t3 + "}";
    }
  };
  A.Extender0.prototype = {
    assertCompatibleMediaContext$1(mediaContext) {
      var expectedMediaContext,
        extension = this._extension$_extension;
      if (extension == null)
        return;
      expectedMediaContext = extension.mediaContext;
      if (expectedMediaContext == null)
        return;
      if (mediaContext != null && B.C_ListEquality.equals$2(0, expectedMediaContext, mediaContext))
        return;
      throw A.wrapException(A.SassException$0(string$.You_ma, extension.span, null));
    },
    toString$0(_) {
      return A.serializeSelector0(this.selector, true);
    }
  };
  A.ExtensionStore0.prototype = {
    get$isEmpty(_) {
      return this._extension_store$_extensions.__js_helper$_length === 0;
    },
    get$simpleSelectors() {
      return new A.MapKeySet(this._extension_store$_selectors, type$.MapKeySet_SimpleSelector_2);
    },
    extensionsWhereTarget$1(callback) {
      return new A._SyncStarIterable(this.extensionsWhereTarget$body$ExtensionStore0(callback), type$._SyncStarIterable_Extension_2);
    },
    extensionsWhereTarget$body$ExtensionStore0($async$callback) {
      var $async$self = this;
      return function() {
        var callback = $async$callback;
        var $async$goto = 0, $async$handler = 1, $async$currentError, t1, t2, simple, sources, t3;
        return function $async$extensionsWhereTarget$1($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = A.MapExtensions_get_pairs0($async$self._extension_store$_extensions, type$.SimpleSelector_2, type$.Map_ComplexSelector_Extension_2), t1 = t1.get$iterator(t1);
              case 2:
                // for condition
                if (!t1.moveNext$0()) {
                  // goto after for
                  $async$goto = 3;
                  break;
                }
                t2 = t1.get$current(t1);
                simple = t2._0;
                sources = t2._1;
                if (!callback.call$1(simple)) {
                  // goto for condition
                  $async$goto = 2;
                  break;
                }
                t2 = sources.get$values(sources), t2 = t2.get$iterator(t2);
              case 4:
                // for condition
                if (!t2.moveNext$0()) {
                  // goto after for
                  $async$goto = 5;
                  break;
                }
                t3 = t2.get$current(t2);
                $async$goto = t3 instanceof A.MergedExtension0 ? 6 : 8;
                break;
              case 6:
                // then
                t3 = t3.unmerge$0();
                $async$goto = 9;
                return $async$iterator._yieldStar$1(new A.WhereIterable(t3, new A.ExtensionStore_extensionsWhereTarget_closure0(), t3.$ti._eval$1("WhereIterable<Iterable.E>")));
              case 9:
                // after yield
                // goto join
                $async$goto = 7;
                break;
              case 8:
                // else
                $async$goto = !t3.isOptional ? 10 : 11;
                break;
              case 10:
                // then
                $async$goto = 12;
                return $async$iterator._async$_current = t3, 1;
              case 12:
                // after yield
              case 11:
                // join
              case 7:
                // join
                // goto for condition
                $async$goto = 4;
                break;
              case 5:
                // after for
                // goto for condition
                $async$goto = 2;
                break;
              case 3:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    addSelector$2(selector, mediaContext) {
      var originalSelector, error, stackTrace, t1, exception, t2, t3, t4, modifiableSelector, _this = this;
      selector = selector;
      originalSelector = selector;
      if (!originalSelector.accept$1(B._IsInvisibleVisitor_true0))
        _this._extension_store$_originals.addAll$1(0, originalSelector.components);
      t1 = _this._extension_store$_extensions;
      if (t1.__js_helper$_length !== 0)
        try {
          selector = _this._extension_store$_extendList$3(originalSelector, t1, mediaContext);
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (t1 instanceof A.SassException0) {
            error = t1;
            stackTrace = A.getTraceFromException(exception);
            t1 = error;
            t2 = J.getInterceptor$z(t1);
            t1 = A.SourceSpanException.prototype.get$span.call(t2, t1).message$1(0, "");
            t2 = error._span_exception$_message;
            t3 = error;
            t4 = J.getInterceptor$z(t3);
            t3 = A.SourceSpanException.prototype.get$span.call(t4, t3);
            A.throwWithTrace0(new A.SassException0(B.Set_empty, "From " + t1 + "\n" + t2, t3), error, stackTrace);
          } else
            throw exception;
        }
      modifiableSelector = new A.ModifiableBox0(selector, type$.ModifiableBox_SelectorList_2);
      if (mediaContext != null)
        _this._extension_store$_mediaContexts.$indexSet(0, modifiableSelector, mediaContext);
      _this._extension_store$_registerSelector$2(selector, modifiableSelector);
      return new A.Box0(modifiableSelector, type$.Box_SelectorList_2);
    },
    _extension_store$_registerSelector$2(list, selector) {
      var t1, t2, t3, _i, t4, t5, _i0, t6, t7, _i1, simple, _0_2, selectorInPseudo, t8;
      for (t1 = list.components, t2 = t1.length, t3 = this._extension_store$_selectors, _i = 0; _i < t2; ++_i)
        for (t4 = t1[_i].components, t5 = t4.length, _i0 = 0; _i0 < t5; ++_i0)
          for (t6 = t4[_i0].selector.components, t7 = t6.length, _i1 = 0; _i1 < t7; ++_i1) {
            simple = t6[_i1];
            J.add$1$ax(t3.putIfAbsent$2(simple, new A.ExtensionStore__registerSelector_closure1()), selector);
            _0_2 = A._InitializedCell$(new A.ExtensionStore__registerSelector_closure2(simple));
            if (simple instanceof A.PseudoSelector0)
              if (_0_2._readFinal$0() != null) {
                selectorInPseudo = _0_2._readFinal$0();
                t8 = true;
              } else {
                selectorInPseudo = null;
                t8 = false;
              }
            else {
              selectorInPseudo = null;
              t8 = false;
            }
            if (t8)
              this._extension_store$_registerSelector$2(selectorInPseudo, selector);
          }
    },
    addExtension$4(extender, target, extend, mediaContext) {
      var t2, t3, t4, t5, t6, t7, t8, t9, t10, newExtensions, _i, complex, t11, extension, _0_0, existingExtension, t12, newExtensionsByTarget, additionalExtensions, _this = this,
        selectors = _this._extension_store$_selectors.$index(0, target),
        t1 = _this._extension_store$_extensionsByExtender,
        existingExtensions = t1.$index(0, target),
        sources = _this._extension_store$_extensions.putIfAbsent$2(target, new A.ExtensionStore_addExtension_closure2());
      for (t2 = extender.components, t3 = t2.length, t4 = selectors == null, t5 = _this._extension_store$_sourceSpecificity, t6 = extend.span, t7 = extend.isOptional, t8 = existingExtensions != null, t9 = type$.ComplexSelector_2, t10 = type$.Extension_2, newExtensions = null, _i = 0; _i < t3; ++_i) {
        complex = t2[_i];
        if (complex.accept$1(B.C__IsUselessVisitor0))
          continue;
        complex.get$specificity();
        t11 = new A.Extender0(complex, false);
        extension = t11._extension$_extension = new A.Extension0(t11, target, mediaContext, t7, t6);
        _0_0 = sources.$index(0, complex);
        if (_0_0 != null) {
          existingExtension = _0_0;
          t11 = true;
        } else {
          existingExtension = null;
          t11 = false;
        }
        if (t11) {
          sources.$indexSet(0, complex, A.MergedExtension_merge0(existingExtension, extension));
          continue;
        }
        sources.$indexSet(0, complex, extension);
        for (t11 = new A._SyncStarIterator(_this._extension_store$_simpleSelectors$1(complex)._outerHelper()); t11.moveNext$0();) {
          t12 = t11._async$_current;
          J.add$1$ax(t1.putIfAbsent$2(t12, new A.ExtensionStore_addExtension_closure3()), extension);
          t5.putIfAbsent$2(t12, new A.ExtensionStore_addExtension_closure4(complex));
        }
        if (!t4 || t8) {
          if (newExtensions == null)
            newExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t9, t10);
          newExtensions.$indexSet(0, complex, extension);
        }
      }
      if (newExtensions == null)
        return;
      t1 = type$.SimpleSelector_2;
      newExtensionsByTarget = A.LinkedHashMap_LinkedHashMap$_literal([target, newExtensions], t1, type$.Map_ComplexSelector_Extension_2);
      if (t8) {
        additionalExtensions = _this._extension_store$_extendExistingExtensions$2(existingExtensions, newExtensionsByTarget);
        if (additionalExtensions != null)
          A.mapAddAll20(newExtensionsByTarget, additionalExtensions, t1, t9, t10);
      }
      if (!t4)
        _this._extension_store$_extendExistingSelectors$2(selectors, newExtensionsByTarget);
    },
    _extension_store$_simpleSelectors$1(complex) {
      return new A._SyncStarIterable(this._simpleSelectors$body$ExtensionStore0(complex), type$._SyncStarIterable_SimpleSelector_2);
    },
    _simpleSelectors$body$ExtensionStore0($async$complex) {
      var $async$self = this;
      return function() {
        var complex = $async$complex;
        var $async$goto = 0, $async$handler = 1, $async$currentError, t1, t2, _i, t3, t4, _i0, simple, _0_2, selector, t5, t6, _i1;
        return function $async$_extension_store$_simpleSelectors$1($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                t1 = complex.components, t2 = t1.length, _i = 0;
              case 2:
                // for condition
                if (!(_i < t2)) {
                  // goto after for
                  $async$goto = 4;
                  break;
                }
                t3 = t1[_i].selector.components, t4 = t3.length, _i0 = 0;
              case 5:
                // for condition
                if (!(_i0 < t4)) {
                  // goto after for
                  $async$goto = 7;
                  break;
                }
                simple = t3[_i0];
                $async$goto = 8;
                return $async$iterator._async$_current = simple, 1;
              case 8:
                // after yield
                _0_2 = A._InitializedCell$(new A.ExtensionStore__simpleSelectors_closure0(simple));
                if (simple instanceof A.PseudoSelector0)
                  if (_0_2._readFinal$0() != null) {
                    selector = _0_2._readFinal$0();
                    t5 = true;
                  } else {
                    selector = null;
                    t5 = false;
                  }
                else {
                  selector = null;
                  t5 = false;
                }
                $async$goto = t5 ? 9 : 10;
                break;
              case 9:
                // then
                t5 = selector.components, t6 = t5.length, _i1 = 0;
              case 11:
                // for condition
                if (!(_i1 < t6)) {
                  // goto after for
                  $async$goto = 13;
                  break;
                }
                $async$goto = 14;
                return $async$iterator._yieldStar$1($async$self._extension_store$_simpleSelectors$1(t5[_i1]));
              case 14:
                // after yield
              case 12:
                // for update
                ++_i1;
                // goto for condition
                $async$goto = 11;
                break;
              case 13:
                // after for
              case 10:
                // join
              case 6:
                // for update
                ++_i0;
                // goto for condition
                $async$goto = 5;
                break;
              case 7:
                // after for
              case 3:
                // for update
                ++_i;
                // goto for condition
                $async$goto = 2;
                break;
              case 4:
                // after for
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    },
    _extension_store$_extendExistingExtensions$2(extensions, newExtensions) {
      var extension, selectors, error, stackTrace, t1, t2, t3, t4, t5, t6, additionalExtensions, _i, t7, exception, t8, t9, containsExtension, selectors0, t10, t11, t12, t13, t14, withExtender, _0_0, existingExtension, _i0, _i1, _null = null;
      for (t1 = J.toList$0$ax(extensions), t2 = t1.length, t3 = this._extension_store$_extensionsByExtender, t4 = type$.SimpleSelector_2, t5 = type$.Map_ComplexSelector_Extension_2, t6 = this._extension_store$_extensions, additionalExtensions = _null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        extension = t1[_i];
        t7 = t6.$index(0, extension.target);
        t7.toString;
        selectors = null;
        try {
          selectors = this._extension_store$_extendComplex$3(extension.extender.selector, newExtensions, extension.mediaContext);
          if (selectors == null)
            continue;
        } catch (exception) {
          t8 = A.unwrapException(exception);
          if (t8 instanceof A.SassException0) {
            error = t8;
            stackTrace = A.getTraceFromException(exception);
            A.throwWithTrace0(error.withAdditionalSpan$2(extension.extender.selector.span, "target selector"), error, stackTrace);
          } else
            throw exception;
        }
        t8 = J.get$first$ax(selectors);
        t9 = extension.extender.selector;
        containsExtension = B.C_ListEquality.equals$2(0, t8.leadingCombinators, t9.leadingCombinators) && B.C_ListEquality.equals$2(0, t8.components, t9.components);
        if (containsExtension) {
          t8 = selectors;
          t9 = A.instanceType(t8);
          selectors0 = new A.SubListIterable(t8, 1, _null, t9._eval$1("SubListIterable<1>"));
          selectors0.SubListIterable$3(t8, 1, _null, t9._precomputed1);
          selectors = selectors0;
        }
        for (t8 = J.get$iterator$ax(selectors); t8.moveNext$0();) {
          t9 = t8.get$current(t8);
          t10 = extension;
          t11 = t10.target;
          t12 = t10.span;
          t13 = t10.mediaContext;
          t10 = t10.isOptional;
          t9.get$specificity();
          t14 = new A.Extender0(t9, false);
          withExtender = t14._extension$_extension = new A.Extension0(t14, t11, t13, t10, t12);
          _0_0 = t7.$index(0, t9);
          if (_0_0 != null) {
            existingExtension = _0_0;
            t10 = true;
          } else {
            existingExtension = _null;
            t10 = false;
          }
          if (t10)
            t7.$indexSet(0, t9, A.MergedExtension_merge0(existingExtension, withExtender));
          else {
            t7.$indexSet(0, t9, withExtender);
            for (t10 = t9.components, t11 = t10.length, _i0 = 0; _i0 < t11; ++_i0)
              for (t12 = t10[_i0].selector.components, t13 = t12.length, _i1 = 0; _i1 < t13; ++_i1)
                J.add$1$ax(t3.putIfAbsent$2(t12[_i1], new A.ExtensionStore__extendExistingExtensions_closure1()), withExtender);
            if (newExtensions.containsKey$1(extension.target)) {
              if (additionalExtensions == null)
                additionalExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t4, t5);
              additionalExtensions.putIfAbsent$2(extension.target, new A.ExtensionStore__extendExistingExtensions_closure2()).$indexSet(0, t9, withExtender);
            }
          }
        }
        if (!containsExtension)
          t7.remove$1(0, extension.extender);
      }
      return additionalExtensions;
    },
    _extension_store$_extendExistingSelectors$2(selectors, newExtensions) {
      var selector, error, stackTrace, t1, t2, oldValue, exception, t3, t4, t5, t6;
      for (t1 = selectors.get$iterator(selectors), t2 = this._extension_store$_mediaContexts; t1.moveNext$0();) {
        selector = t1.get$current(t1);
        oldValue = selector.value;
        try {
          selector.value = this._extension_store$_extendList$3(selector.value, newExtensions, t2.$index(0, selector));
        } catch (exception) {
          t3 = A.unwrapException(exception);
          if (t3 instanceof A.SassException0) {
            error = t3;
            stackTrace = A.getTraceFromException(exception);
            t3 = selector.value.span.message$1(0, "");
            t4 = error._span_exception$_message;
            t5 = error;
            t6 = J.getInterceptor$z(t5);
            t5 = A.SourceSpanException.prototype.get$span.call(t6, t5);
            A.throwWithTrace0(new A.SassException0(B.Set_empty, "From " + t3 + "\n" + t4, t5), error, stackTrace);
          } else
            throw exception;
        }
        if (oldValue === selector.value)
          continue;
        this._extension_store$_registerSelector$2(selector.value, selector);
      }
    },
    addExtensions$1(extensionStores) {
      var t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, newExtensions, selectorsToExtend, extensionsToExtend, t12, t13, target, newSources, first, extensionsForTarget, t14, selectorsForTarget, t15, _2_0, existingSources, t16, extender, extension, _this = this, _null = null;
      for (t1 = J.get$iterator$ax(extensionStores), t2 = type$.SimpleSelector_2, t3 = type$.Map_ComplexSelector_Extension_2, t4 = _this._extension_store$_extensions, t5 = type$.ComplexSelector_2, t6 = type$.Extension_2, t7 = _this._extension_store$_selectors, t8 = _this._extension_store$_extensionsByExtender, t9 = type$.JSArray_Extension_2, t10 = type$.ModifiableBox_SelectorList_2, t11 = _this._extension_store$_sourceSpecificity, newExtensions = _null, selectorsToExtend = newExtensions, extensionsToExtend = selectorsToExtend; t1.moveNext$0();) {
        t12 = t1.get$current(t1);
        if (t12.get$isEmpty(t12))
          continue;
        t11.addAll$1(0, t12.get$_extension_store$_sourceSpecificity());
        for (t12 = A.MapExtensions_get_pairs0(t12.get$_extension_store$_extensions(), t2, t3), t12 = t12.get$iterator(t12); t12.moveNext$0();) {
          t13 = t12.get$current(t12);
          target = t13._0;
          newSources = t13._1;
          if (target instanceof A.PlaceholderSelector0) {
            first = target.name.charCodeAt(0);
            t13 = first === 45 || first === 95;
          } else
            t13 = false;
          if (t13)
            continue;
          extensionsForTarget = t8.$index(0, target);
          t13 = extensionsForTarget == null;
          if (!t13) {
            if (extensionsToExtend == null) {
              extensionsToExtend = A._setArrayType([], t9);
              t14 = extensionsToExtend;
            } else
              t14 = extensionsToExtend;
            B.JSArray_methods.addAll$1(t14, extensionsForTarget);
          }
          selectorsForTarget = t7.$index(0, target);
          t14 = selectorsForTarget != null;
          if (t14) {
            if (selectorsToExtend == null) {
              selectorsToExtend = A.LinkedHashSet_LinkedHashSet$_empty(t10);
              t15 = selectorsToExtend;
            } else
              t15 = selectorsToExtend;
            t15.addAll$1(0, selectorsForTarget);
          }
          _2_0 = t4.$index(0, target);
          if (_2_0 != null) {
            existingSources = _2_0;
            t15 = true;
          } else {
            existingSources = _null;
            t15 = false;
          }
          if (t15)
            for (t15 = A.MapExtensions_get_pairs0(newSources, t5, t6), t15 = t15.get$iterator(t15); t15.moveNext$0();) {
              t16 = t15.get$current(t15);
              extender = t16._0;
              extension = t16._1;
              if (existingSources.containsKey$1(extender)) {
                t16 = existingSources.$index(0, extender);
                extension = A.MergedExtension_merge0(t16, extension);
                existingSources.$indexSet(0, extender, extension);
              } else
                existingSources.$indexSet(0, extender, extension);
              if (!t13 || t14) {
                if (newExtensions == null) {
                  newExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t2, t3);
                  t16 = newExtensions;
                } else
                  t16 = newExtensions;
                J.$indexSet$ax(t16.putIfAbsent$2(target, new A.ExtensionStore_addExtensions_closure0()), extender, extension);
              }
            }
          else {
            t15 = A.LinkedHashMap_LinkedHashMap(_null, _null, _null, t5, t6);
            t15.addAll$1(0, newSources);
            t4.$indexSet(0, target, t15);
            if (!t13 || t14) {
              if (newExtensions == null) {
                newExtensions = A.LinkedHashMap_LinkedHashMap$_empty(t2, t3);
                t13 = newExtensions;
              } else
                t13 = newExtensions;
              t14 = A.LinkedHashMap_LinkedHashMap(_null, _null, _null, t5, t6);
              t14.addAll$1(0, newSources);
              t13.$indexSet(0, target, t14);
            }
          }
        }
      }
      if (newExtensions != null) {
        if (extensionsToExtend != null)
          _this._extension_store$_extendExistingExtensions$2(extensionsToExtend, newExtensions);
        if (selectorsToExtend != null)
          _this._extension_store$_extendExistingSelectors$2(selectorsToExtend, newExtensions);
      }
    },
    _extension_store$_extendList$3(list, extensions, mediaQueryContext) {
      var t1, t2, t3, extended, i, complex, result, t4;
      for (t1 = list.components, t2 = t1.length, t3 = type$.JSArray_ComplexSelector_2, extended = null, i = 0; i < t2; ++i) {
        complex = t1[i];
        result = this._extension_store$_extendComplex$3(complex, extensions, mediaQueryContext);
        if (result == null) {
          if (extended != null)
            extended.push(complex);
        } else {
          if (extended == null)
            if (i === 0)
              extended = A._setArrayType([], t3);
            else {
              t4 = B.JSArray_methods.sublist$2(t1, 0, i);
              extended = A._setArrayType(t4.slice(0), A._arrayInstanceType(t4));
            }
          B.JSArray_methods.addAll$1(extended, result);
        }
      }
      if (extended == null)
        return list;
      t1 = this._extension_store$_originals;
      return A.SelectorList$0(this._extension_store$_trim$2(extended, t1.get$contains(t1)), list.span);
    },
    _extension_store$_extendList$2(list, extensions) {
      return this._extension_store$_extendList$3(list, extensions, null);
    },
    _extension_store$_extendComplex$3(complex, extensions, mediaQueryContext) {
      var isOriginal, t3, t4, t5, t6, t7, t8, t9, t10, extendedNotExpanded, i, component, extended, t11, t12, t13, t14, _box_0 = {},
        t1 = complex.leadingCombinators,
        t2 = t1.length;
      if (t2 > 1)
        return null;
      isOriginal = this._extension_store$_originals.contains$1(0, complex);
      for (t3 = complex.components, t4 = t3.length, t5 = type$.JSArray_List_ComplexSelector_2, t6 = complex.lineBreak, t7 = !t6, t8 = complex.span, t9 = type$.JSArray_ComplexSelector_2, t2 = t2 === 0, t10 = type$.JSArray_ComplexSelectorComponent_2, extendedNotExpanded = null, i = 0; i < t4; ++i) {
        component = t3[i];
        extended = this._extension_store$_extendCompound$4$inOriginal(component, extensions, mediaQueryContext, isOriginal);
        if (extended == null) {
          if (extendedNotExpanded != null)
            extendedNotExpanded.push(A._setArrayType([A.ComplexSelector$0(B.List_empty14, A._setArrayType([component], t10), t8, t6)], t9));
        } else if (extendedNotExpanded != null)
          extendedNotExpanded.push(extended);
        else if (i !== 0) {
          t11 = A._arrayInstanceType(t3);
          t12 = new A.SubListIterable(t3, 0, i, t11._eval$1("SubListIterable<1>"));
          t12.SubListIterable$3(t3, 0, i, t11._precomputed1);
          extendedNotExpanded = A._setArrayType([A._setArrayType([A.ComplexSelector$0(t1, t12, t8, t6)], t9), extended], t5);
        } else if (t2)
          extendedNotExpanded = A._setArrayType([extended], t5);
        else {
          t11 = A._setArrayType([], t9);
          for (t12 = J.get$iterator$ax(extended); t12.moveNext$0();) {
            t13 = t12.get$current(t12);
            t14 = t13.leadingCombinators;
            if (t14.length === 0 || B.C_ListEquality.equals$2(0, t1, t14)) {
              t14 = t13.components;
              t11.push(A.ComplexSelector$0(t1, t14, t8, !t7 || t13.lineBreak));
            }
          }
          extendedNotExpanded = A._setArrayType([t11], t5);
        }
      }
      if (extendedNotExpanded == null)
        return null;
      _box_0.first = true;
      t1 = type$.ComplexSelector_2;
      t1 = J.expand$1$1$ax(A.paths0(extendedNotExpanded, t1), new A.ExtensionStore__extendComplex_closure0(_box_0, this, complex), t1);
      return A.List_List$of(t1, true, t1.$ti._eval$1("Iterable.E"));
    },
    _extension_store$_extendCompound$4$inOriginal(component, extensions, mediaQueryContext, inOriginal) {
      var t3, t4, t5, t6, t7, t8, t9, t10, t11, options, i, simple, extended, t12, result, compound, extenders, complex, extenderPaths, withCombinators, isOriginal, _this = this, _null = null,
        t1 = _this._extension_store$_mode,
        targetsUsed = t1 === B.ExtendMode_normal_normal0 || extensions.__js_helper$_length < 2 ? _null : A.LinkedHashSet_LinkedHashSet$_empty(type$.SimpleSelector_2),
        t2 = component.selector,
        simples = t2.components;
      for (t3 = simples.length, t4 = type$.JSArray_List_Extender_2, t5 = type$.JSArray_Extender_2, t6 = type$.CssValue_Combinator_2, t7 = type$.JSArray_ComplexSelectorComponent_2, t8 = A._arrayInstanceType(simples), t9 = t8._precomputed1, t8 = t8._eval$1("SubListIterable<1>"), t10 = component.span, t11 = type$.SimpleSelector_2, options = _null, i = 0; i < t3; ++i) {
        simple = simples[i];
        extended = _this._extension_store$_extendSimple$4(simple, extensions, mediaQueryContext, targetsUsed);
        if (extended == null) {
          if (options != null)
            options.push(A._setArrayType([_this._extension_store$_extenderForSimple$1(simple)], t5));
        } else {
          if (options == null) {
            options = A._setArrayType([], t4);
            if (i !== 0) {
              t12 = new A.SubListIterable(simples, 0, i, t8);
              t12.SubListIterable$3(simples, 0, i, t9);
              result = A.List_List$from(t12, false, t11);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t12 = result;
              compound = new A.CompoundSelector0(t12, t10);
              if (t12.length === 0)
                A.throwExpression(A.ArgumentError$("components may not be empty.", _null));
              result = A.List_List$from(B.List_empty14, false, t6);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t12 = A.ComplexSelector$0(B.List_empty14, A._setArrayType([new A.ComplexSelectorComponent0(compound, result, t10)], t7), t10, false);
              _this._extension_store$_sourceSpecificityFor$1(compound);
              options.push(A._setArrayType([new A.Extender0(t12, true)], t5));
            }
          }
          B.JSArray_methods.addAll$1(options, extended);
        }
      }
      if (options == null)
        return _null;
      if (targetsUsed != null && targetsUsed._collection$_length !== extensions.__js_helper$_length)
        return _null;
      if (options.length === 1) {
        extenders = options[0];
        t3 = true;
      } else {
        extenders = _null;
        t3 = false;
      }
      if (t3) {
        for (t1 = J.get$iterator$ax(extenders), t2 = component.combinators, t3 = type$.JSArray_ComplexSelector_2, result = _null; t1.moveNext$0();) {
          t4 = t1.get$current(t1);
          t4.assertCompatibleMediaContext$1(mediaQueryContext);
          complex = t4.selector.withAdditionalCombinators$1(t2);
          if (complex.accept$1(B.C__IsUselessVisitor0))
            continue;
          if (result == null)
            result = A._setArrayType([], t3);
          result.push(complex);
        }
        return result;
      }
      extenderPaths = A.paths0(options, type$.Extender_2);
      t3 = A._setArrayType([], type$.JSArray_ComplexSelector_2);
      t1 = t1 === B.ExtendMode_replace_replace0;
      t4 = !t1;
      if (t4)
        t3.push(A.ComplexSelector$0(B.List_empty14, A._setArrayType([new A.ComplexSelectorComponent0(A.CompoundSelector$0(J.expand$1$1$ax(J.get$first$ax(extenderPaths), new A.ExtensionStore__extendCompound_closure2(), t11), t2.span), A.List_List$unmodifiable(component.combinators, t6), t10)], t7), t10, false));
      t2 = J.skip$1$ax(extenderPaths, t1 ? 0 : 1);
      t2 = new A.ListIterator(t2, t2.get$length(t2));
      t5 = component.combinators;
      t6 = A._instanceType(t2)._precomputed1;
      for (; t2.moveNext$0();) {
        t1 = t2.__internal$_current;
        extended = _this._extension_store$_unifyExtenders$3(t1 == null ? t6._as(t1) : t1, mediaQueryContext, t10);
        if (extended == null)
          continue;
        for (t1 = J.get$iterator$ax(extended); t1.moveNext$0();) {
          withCombinators = t1.get$current(t1).withAdditionalCombinators$1(t5);
          if (!withCombinators.accept$1(B.C__IsUselessVisitor0))
            t3.push(withCombinators);
        }
      }
      isOriginal = new A.ExtensionStore__extendCompound_closure3();
      return _this._extension_store$_trim$2(t3, inOriginal && t4 ? new A.ExtensionStore__extendCompound_closure4(B.JSArray_methods.get$first(t3)) : isOriginal);
    },
    _extension_store$_unifyExtenders$3(extenders, mediaQueryContext, span) {
      var t1, t2, t3, originals, originalsLineBreak, t4, complexes, _null = null,
        toUnify = A.QueueList$(_null, type$.ComplexSelector_2);
      for (t1 = J.getInterceptor$ax(extenders), t2 = t1.get$iterator(extenders), t3 = type$.JSArray_SimpleSelector_2, originals = _null, originalsLineBreak = false; t2.moveNext$0();) {
        t4 = t2.get$current(t2);
        if (t4.isOriginal) {
          if (originals == null)
            originals = A._setArrayType([], t3);
          t4 = t4.selector;
          B.JSArray_methods.addAll$1(originals, B.JSArray_methods.get$last(t4.components).selector.components);
          originalsLineBreak = originalsLineBreak || t4.lineBreak;
        } else {
          t4 = t4.selector;
          if (t4.accept$1(B.C__IsUselessVisitor0))
            return _null;
          else
            toUnify._queue_list$_add$1(t4);
        }
      }
      if (originals != null)
        toUnify.addFirst$1(A.ComplexSelector$0(B.List_empty14, A._setArrayType([new A.ComplexSelectorComponent0(A.CompoundSelector$0(originals, span), A.List_List$unmodifiable(B.List_empty14, type$.CssValue_Combinator_2), span)], type$.JSArray_ComplexSelectorComponent_2), span, originalsLineBreak));
      complexes = A.unifyComplex0(toUnify, span);
      if (complexes == null)
        return _null;
      for (t1 = t1.get$iterator(extenders); t1.moveNext$0();)
        t1.get$current(t1).assertCompatibleMediaContext$1(mediaQueryContext);
      return complexes;
    },
    _extension_store$_extendSimple$4(simple, extensions, mediaQueryContext, targetsUsed) {
      var _1_0, extended, t2,
        t1 = new A.ExtensionStore__extendSimple_withoutPseudo0(this, extensions, targetsUsed);
      if (simple instanceof A.PseudoSelector0 && simple.selector != null && true) {
        _1_0 = this._extension_store$_extendPseudo$3(simple, extensions, mediaQueryContext);
        if (_1_0 != null) {
          extended = _1_0;
          t2 = true;
        } else {
          extended = null;
          t2 = false;
        }
        if (t2)
          return new A.MappedListIterable(extended, new A.ExtensionStore__extendSimple_closure1(this, t1), A.instanceType(extended)._eval$1("MappedListIterable<1,List<Extender0>>"));
      }
      return A.NullableExtension_andThen0(t1.call$1(simple), new A.ExtensionStore__extendSimple_closure2());
    },
    _extension_store$_extenderForSimple$1(simple) {
      var t1 = simple.span;
      t1 = A.ComplexSelector$0(B.List_empty14, A._setArrayType([new A.ComplexSelectorComponent0(A.CompoundSelector$0(A._setArrayType([simple], type$.JSArray_SimpleSelector_2), t1), A.List_List$unmodifiable(B.List_empty14, type$.CssValue_Combinator_2), t1)], type$.JSArray_ComplexSelectorComponent_2), t1, false);
      this._extension_store$_sourceSpecificity.$index(0, simple);
      return new A.Extender0(t1, true);
    },
    _extension_store$_extendPseudo$3(pseudo, extensions, mediaQueryContext) {
      var extended, complexes, t1, result,
        selector = pseudo.selector;
      if (selector == null)
        throw A.wrapException(A.ArgumentError$("Selector " + pseudo.toString$0(0) + " must have a selector argument.", null));
      extended = this._extension_store$_extendList$3(selector, extensions, mediaQueryContext);
      if (extended === selector)
        return null;
      complexes = extended.components;
      t1 = pseudo.normalizedName === "not";
      if (t1 && !B.JSArray_methods.any$1(selector.components, new A.ExtensionStore__extendPseudo_closure4()) && B.JSArray_methods.any$1(complexes, new A.ExtensionStore__extendPseudo_closure5()))
        complexes = new A.WhereIterable(complexes, new A.ExtensionStore__extendPseudo_closure6(), A._arrayInstanceType(complexes)._eval$1("WhereIterable<1>"));
      complexes = J.expand$1$1$ax(complexes, new A.ExtensionStore__extendPseudo_closure7(pseudo), type$.ComplexSelector_2);
      if (t1 && selector.components.length === 1) {
        t1 = A.MappedIterable_MappedIterable(complexes, new A.ExtensionStore__extendPseudo_closure8(pseudo, selector), complexes.$ti._eval$1("Iterable.E"), type$.PseudoSelector_2);
        result = A.List_List$of(t1, true, A._instanceType(t1)._eval$1("Iterable.E"));
        return result.length === 0 ? null : result;
      } else
        return A._setArrayType([pseudo.withSelector$1(A.SelectorList$0(complexes, selector.span))], type$.JSArray_PseudoSelector_2);
    },
    _extension_store$_trim$2(selectors, isOriginal) {
      var result, i, t1, t2, numOriginals, _box_0, complex1, j, t3, t4, _i, t5, maxSpecificity;
      if (selectors.length > 100)
        return selectors;
      result = A.QueueList$(null, type$.ComplexSelector_2);
      $label0$0:
        for (i = selectors.length - 1, t1 = A._arrayInstanceType(selectors), t2 = t1._precomputed1, t1 = t1._eval$1("SubListIterable<1>"), numOriginals = 0; i >= 0; --i) {
          _box_0 = {};
          complex1 = selectors[i];
          if (isOriginal.call$1(complex1)) {
            for (j = 0; j < numOriginals; ++j)
              if (J.$eq$(result.$index(0, j), complex1)) {
                A.rotateSlice0(result, 0, j + 1);
                continue $label0$0;
              }
            ++numOriginals;
            result.addFirst$1(complex1);
            continue $label0$0;
          }
          _box_0.maxSpecificity = 0;
          for (t3 = complex1.components, t4 = t3.length, _i = 0, t5 = 0; _i < t4; ++_i, t5 = maxSpecificity) {
            maxSpecificity = Math.max(t5, this._extension_store$_sourceSpecificityFor$1(t3[_i].selector));
            _box_0.maxSpecificity = maxSpecificity;
          }
          if (result.any$1(result, new A.ExtensionStore__trim_closure1(_box_0, complex1)))
            continue $label0$0;
          t3 = new A.SubListIterable(selectors, 0, i, t1);
          t3.SubListIterable$3(selectors, 0, i, t2);
          if (t3.any$1(0, new A.ExtensionStore__trim_closure2(_box_0, complex1)))
            continue $label0$0;
          result.addFirst$1(complex1);
        }
      return result;
    },
    _extension_store$_sourceSpecificityFor$1(compound) {
      var t1, t2, t3, specificity, _i, t4;
      for (t1 = compound.components, t2 = t1.length, t3 = this._extension_store$_sourceSpecificity, specificity = 0, _i = 0; _i < t2; ++_i) {
        t4 = t3.$index(0, t1[_i]);
        specificity = Math.max(specificity, A.checkNum(t4 == null ? 0 : t4));
      }
      return specificity;
    },
    clone$0() {
      var t2, t3, t4, _this = this,
        t1 = type$.SimpleSelector_2,
        newSelectors = A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.Set_ModifiableBox_SelectorList_2),
        newMediaContexts = A.LinkedHashMap_LinkedHashMap$_empty(type$.ModifiableBox_SelectorList_2, type$.List_CssMediaQuery_2),
        oldToNewSelectors = new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_of_SelectorList_and_Box_SelectorList_2);
      _this._extension_store$_selectors.forEach$1(0, new A.ExtensionStore_clone_closure0(_this, newSelectors, oldToNewSelectors, newMediaContexts));
      t2 = type$.Extension_2;
      t3 = A.copyMapOfMap0(_this._extension_store$_extensions, t1, type$.ComplexSelector_2, t2);
      t2 = A.copyMapOfList0(_this._extension_store$_extensionsByExtender, t1, t2);
      t1 = new A.JsIdentityLinkedHashMap(type$.JsIdentityLinkedHashMap_SimpleSelector_int_2);
      t1.addAll$1(0, _this._extension_store$_sourceSpecificity);
      t4 = new A._LinkedIdentityHashSet(type$._LinkedIdentityHashSet_ComplexSelector_2);
      t4.addAll$1(0, _this._extension_store$_originals);
      return new A._Record_2(new A.ExtensionStore0(newSelectors, t3, t2, newMediaContexts, t1, t4, B.ExtendMode_normal_normal0), oldToNewSelectors);
    },
    get$_extension_store$_extensions() {
      return this._extension_store$_extensions;
    },
    get$_extension_store$_sourceSpecificity() {
      return this._extension_store$_sourceSpecificity;
    }
  };
  A.ExtensionStore_extensionsWhereTarget_closure0.prototype = {
    call$1(extension) {
      return !extension.isOptional;
    },
    $signature: 451
  };
  A.ExtensionStore__registerSelector_closure1.prototype = {
    call$0() {
      return A.LinkedHashSet_LinkedHashSet$_empty(type$.ModifiableBox_SelectorList_2);
    },
    $signature: 452
  };
  A.ExtensionStore__registerSelector_closure2.prototype = {
    call$0() {
      return type$.PseudoSelector_2._as(this._0_0).selector;
    },
    $signature: 78
  };
  A.ExtensionStore_addExtension_closure2.prototype = {
    call$0() {
      return A.LinkedHashMap_LinkedHashMap$_empty(type$.ComplexSelector_2, type$.Extension_2);
    },
    $signature: 140
  };
  A.ExtensionStore_addExtension_closure3.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_Extension_2);
    },
    $signature: 247
  };
  A.ExtensionStore_addExtension_closure4.prototype = {
    call$0() {
      return this.complex.get$specificity();
    },
    $signature: 3
  };
  A.ExtensionStore__simpleSelectors_closure0.prototype = {
    call$0() {
      return type$.PseudoSelector_2._as(this._0_0).selector;
    },
    $signature: 78
  };
  A.ExtensionStore__extendExistingExtensions_closure1.prototype = {
    call$0() {
      return A._setArrayType([], type$.JSArray_Extension_2);
    },
    $signature: 247
  };
  A.ExtensionStore__extendExistingExtensions_closure2.prototype = {
    call$0() {
      return A.LinkedHashMap_LinkedHashMap$_empty(type$.ComplexSelector_2, type$.Extension_2);
    },
    $signature: 140
  };
  A.ExtensionStore_addExtensions_closure0.prototype = {
    call$0() {
      return A.LinkedHashMap_LinkedHashMap$_empty(type$.ComplexSelector_2, type$.Extension_2);
    },
    $signature: 140
  };
  A.ExtensionStore__extendComplex_closure0.prototype = {
    call$1(path) {
      var t1 = this.complex;
      return J.map$1$1$ax(A.weave0(path, t1.span, t1.lineBreak), new A.ExtensionStore__extendComplex__closure0(this._box_0, this.$this, t1), type$.ComplexSelector_2);
    },
    $signature: 456
  };
  A.ExtensionStore__extendComplex__closure0.prototype = {
    call$1(outputComplex) {
      var _this = this,
        t1 = _this._box_0;
      if (t1.first && _this.$this._extension_store$_originals.contains$1(0, _this.complex))
        _this.$this._extension_store$_originals.add$1(0, outputComplex);
      t1.first = false;
      return outputComplex;
    },
    $signature: 61
  };
  A.ExtensionStore__extendCompound_closure2.prototype = {
    call$1(extender) {
      return B.JSArray_methods.get$last(extender.selector.components).selector.components;
    },
    $signature: 458
  };
  A.ExtensionStore__extendCompound_closure3.prototype = {
    call$1(_) {
      return false;
    },
    $signature: 18
  };
  A.ExtensionStore__extendCompound_closure4.prototype = {
    call$1(complex) {
      return complex.$eq(0, this.original);
    },
    $signature: 18
  };
  A.ExtensionStore__extendSimple_withoutPseudo0.prototype = {
    call$1(simple) {
      var t1, t2,
        extensionsForSimple = this.extensions.$index(0, simple);
      if (extensionsForSimple == null)
        return null;
      t1 = this.targetsUsed;
      if (t1 != null)
        t1.add$1(0, simple);
      t1 = A._setArrayType([], type$.JSArray_Extender_2);
      t2 = this.$this;
      if (t2._extension_store$_mode !== B.ExtendMode_replace_replace0)
        t1.push(t2._extension_store$_extenderForSimple$1(simple));
      for (t2 = extensionsForSimple.get$values(extensionsForSimple), t2 = t2.get$iterator(t2); t2.moveNext$0();)
        t1.push(t2.get$current(t2).extender);
      return t1;
    },
    $signature: 459
  };
  A.ExtensionStore__extendSimple_closure1.prototype = {
    call$1(pseudo) {
      var t1 = this.withoutPseudo.call$1(pseudo);
      return t1 == null ? A._setArrayType([this.$this._extension_store$_extenderForSimple$1(pseudo)], type$.JSArray_Extender_2) : t1;
    },
    $signature: 460
  };
  A.ExtensionStore__extendSimple_closure2.prototype = {
    call$1(result) {
      return A._setArrayType([result], type$.JSArray_List_Extender_2);
    },
    $signature: 461
  };
  A.ExtensionStore__extendPseudo_closure4.prototype = {
    call$1(complex) {
      return complex.components.length > 1;
    },
    $signature: 18
  };
  A.ExtensionStore__extendPseudo_closure5.prototype = {
    call$1(complex) {
      return complex.components.length === 1;
    },
    $signature: 18
  };
  A.ExtensionStore__extendPseudo_closure6.prototype = {
    call$1(complex) {
      return complex.components.length <= 1;
    },
    $signature: 18
  };
  A.ExtensionStore__extendPseudo_closure7.prototype = {
    call$1(complex) {
      var innerPseudo, innerSelector,
        t1 = complex.get$singleCompound();
      if (t1 == null)
        innerPseudo = null;
      else {
        t1 = t1.components;
        innerPseudo = t1.length === 1 ? B.JSArray_methods.get$first(t1) : null;
      }
      if (!(innerPseudo instanceof A.PseudoSelector0))
        return A._setArrayType([complex], type$.JSArray_ComplexSelector_2);
      innerSelector = innerPseudo.selector;
      if (innerSelector == null)
        return A._setArrayType([complex], type$.JSArray_ComplexSelector_2);
      t1 = this.pseudo;
      switch (t1.normalizedName) {
        case "not":
          if (!B.Set_aAXJu.contains$1(0, innerPseudo.normalizedName))
            return A._setArrayType([], type$.JSArray_ComplexSelector_2);
          return innerSelector.components;
        case "is":
        case "matches":
        case "where":
        case "any":
        case "current":
        case "nth-child":
        case "nth-last-child":
          if (innerPseudo.name !== t1.name)
            return A._setArrayType([], type$.JSArray_ComplexSelector_2);
          if (innerPseudo.argument != t1.argument)
            return A._setArrayType([], type$.JSArray_ComplexSelector_2);
          return innerSelector.components;
        case "has":
        case "host":
        case "host-context":
        case "slotted":
          return A._setArrayType([complex], type$.JSArray_ComplexSelector_2);
        default:
          return A._setArrayType([], type$.JSArray_ComplexSelector_2);
      }
    },
    $signature: 462
  };
  A.ExtensionStore__extendPseudo_closure8.prototype = {
    call$1(complex) {
      return this.pseudo.withSelector$1(A.SelectorList$0(A._setArrayType([complex], type$.JSArray_ComplexSelector_2), this.selector.span));
    },
    $signature: 463
  };
  A.ExtensionStore__trim_closure1.prototype = {
    call$1(complex2) {
      return complex2.get$specificity() >= this._box_0.maxSpecificity && complex2.isSuperselector$1(this.complex1);
    },
    $signature: 18
  };
  A.ExtensionStore__trim_closure2.prototype = {
    call$1(complex2) {
      return complex2.get$specificity() >= this._box_0.maxSpecificity && complex2.isSuperselector$1(this.complex1);
    },
    $signature: 18
  };
  A.ExtensionStore_clone_closure0.prototype = {
    call$2(simple, selectors) {
      var t2, t3, t4, t5, t6, t7, newSelector, _0_0, mediaContext, _this = this,
        t1 = type$.ModifiableBox_SelectorList_2,
        newSelectorSet = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      _this.newSelectors.$indexSet(0, simple, newSelectorSet);
      for (t2 = selectors.get$iterator(selectors), t3 = _this.oldToNewSelectors, t4 = type$.Box_SelectorList_2, t5 = _this.$this._extension_store$_mediaContexts, t6 = _this.newMediaContexts; t2.moveNext$0();) {
        t7 = t2.get$current(t2);
        newSelector = new A.ModifiableBox0(t7.value, t1);
        newSelectorSet.add$1(0, newSelector);
        t3.$indexSet(0, t7.value, new A.Box0(newSelector, t4));
        _0_0 = t5.$index(0, t7);
        if (_0_0 != null) {
          mediaContext = _0_0;
          t7 = true;
        } else {
          mediaContext = null;
          t7 = false;
        }
        if (t7)
          t6.$indexSet(0, newSelector, mediaContext);
      }
    },
    $signature: 464
  };
  A.FiberClass.prototype = {};
  A.Fiber.prototype = {};
  A.JSToDartFileImporter.prototype = {
    canonicalize$1(_, url) {
      var result, t1, resultUrl;
      if (url.get$scheme() === "file")
        return $.$get$_filesystemImporter0().canonicalize$1(0, url);
      result = A.wrapJSExceptions(new A.JSToDartFileImporter_canonicalize_closure(this, url));
      if (result == null)
        return null;
      t1 = self.Promise;
      if (result instanceof t1)
        A.jsThrow(new self.Error("The findFileUrl() function can't return a Promise for synchron compile functions."));
      else {
        t1 = self.URL;
        if (!(result instanceof t1))
          A.jsThrow(new self.Error(string$.The_fie));
      }
      resultUrl = A.Uri_parse(J.toString$0$(type$.JSUrl._as(result)));
      if (resultUrl.get$scheme() !== "file")
        A.jsThrow(new self.Error(string$.The_fiu + url.toString$0(0) + '".'));
      return $.$get$_filesystemImporter0().canonicalize$1(0, resultUrl);
    },
    load$1(_, url) {
      return $.$get$_filesystemImporter0().load$1(0, url);
    },
    isNonCanonicalScheme$1(scheme) {
      return scheme !== "file";
    }
  };
  A.JSToDartFileImporter_canonicalize_closure.prototype = {
    call$0() {
      return this.$this._file0$_findFileUrl.call$2(this.url.toString$0(0), {fromImport: A.fromImport0(), containingUrl: A.NullableExtension_andThen0(A.containingUrl(), A.utils1__dartToJSUrl$closure())});
    },
    $signature: 28
  };
  A.FilesystemImporter0.prototype = {
    canonicalize$1(_, url) {
      if (url.get$scheme() !== "file" && url.get$scheme() !== "")
        return null;
      return A.NullableExtension_andThen0(A.resolveImportPath0(A.join(this._filesystem$_loadPath, $.$get$context().style.pathFromUri$1(A._parseUri(url)), null)), new A.FilesystemImporter_canonicalize_closure0());
    },
    load$1(_, url) {
      var path = $.$get$context().style.pathFromUri$1(A._parseUri(url));
      return A.ImporterResult$(A.readFile0(path), url, A.Syntax_forPath0(path));
    },
    toString$0(_) {
      return this._filesystem$_loadPath;
    }
  };
  A.FilesystemImporter_canonicalize_closure0.prototype = {
    call$1(resolved) {
      var t2, t0, _null = null,
        t1 = A.isNodeJs() ? self.process : _null;
      if (!J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "win32")) {
        t1 = A.isNodeJs() ? self.process : _null;
        t1 = J.$eq$(t1 == null ? _null : J.get$platform$x(t1), "darwin");
      } else
        t1 = true;
      if (t1) {
        t1 = $.$get$context();
        t2 = A._realCasePath0(A.absolute(t1.normalize$1(resolved), _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null));
        t0 = t2;
        t2 = t1;
        t1 = t0;
      } else {
        t1 = $.$get$context();
        t2 = t1.canonicalize$1(0, resolved);
        t0 = t2;
        t2 = t1;
        t1 = t0;
      }
      return t2.toUri$1(t1);
    },
    $signature: 164
  };
  A.ForRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitForRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var _this = this,
        t1 = _this.from.toString$0(0),
        t2 = _this.isExclusive ? "to" : "through",
        t3 = _this.children;
      return "@for $" + _this.variable + " from " + t1 + " " + t2 + " " + _this.to.toString$0(0) + " {" + (t3 && B.JSArray_methods).join$1(t3, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ForwardRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitForwardRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, prefix, _this = this,
        t1 = "@forward " + A.StringExpression_quoteText0(_this.url.toString$0(0)),
        shownMixinsAndFunctions = _this.shownMixinsAndFunctions,
        hiddenMixinsAndFunctions = _this.hiddenMixinsAndFunctions;
      if (shownMixinsAndFunctions != null) {
        t2 = _this.shownVariables;
        t2.toString;
        t2 = t1 + " show " + _this._forward_rule0$_memberList$2(shownMixinsAndFunctions, t2);
        t1 = t2;
      } else {
        if (hiddenMixinsAndFunctions != null) {
          t2 = hiddenMixinsAndFunctions._base;
          t2 = t2.get$isNotEmpty(t2);
        } else
          t2 = false;
        if (t2) {
          t2 = _this.hiddenVariables;
          t2.toString;
          t2 = t1 + " hide " + _this._forward_rule0$_memberList$2(hiddenMixinsAndFunctions, t2);
          t1 = t2;
        }
      }
      prefix = _this.prefix;
      if (prefix != null)
        t1 += " as " + prefix + "*";
      t2 = _this.configuration;
      t1 = (t2.length !== 0 ? t1 + (" with (" + B.JSArray_methods.join$1(t2, ", ") + ")") : t1) + ";";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _forward_rule0$_memberList$2(mixinsAndFunctions, variables) {
      var t2,
        t1 = A.List_List$of(mixinsAndFunctions, true, type$.String);
      for (t2 = variables._base, t2 = t2.get$iterator(t2); t2.moveNext$0();)
        t1.push("$" + t2.get$current(t2));
      return B.JSArray_methods.join$1(t1, ", ");
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ForwardedModuleView0.prototype = {
    get$url(_) {
      var t1 = this._forwarded_view0$_inner;
      return t1.get$url(t1);
    },
    get$upstream() {
      return this._forwarded_view0$_inner.get$upstream();
    },
    get$extensionStore() {
      return this._forwarded_view0$_inner.get$extensionStore();
    },
    get$css(_) {
      var t1 = this._forwarded_view0$_inner;
      return t1.get$css(t1);
    },
    get$preModuleComments() {
      return this._forwarded_view0$_inner.get$preModuleComments();
    },
    get$transitivelyContainsCss() {
      return this._forwarded_view0$_inner.get$transitivelyContainsCss();
    },
    get$transitivelyContainsExtensions() {
      return this._forwarded_view0$_inner.get$transitivelyContainsExtensions();
    },
    setVariable$3($name, value, nodeWithSpan) {
      var shownVariables, t2, _1_0, hiddenVariables, _2_0, prefix, _null = null,
        _s19_ = "Undefined variable.",
        t1 = this._forwarded_view0$_rule,
        _0_0 = t1.shownVariables;
      if (_0_0 != null) {
        shownVariables = _0_0;
        t2 = true;
      } else {
        shownVariables = _null;
        t2 = false;
      }
      if (t2 && !shownVariables._base.contains$1(0, $name))
        throw A.wrapException(A.SassScriptException$0(_s19_, _null));
      else {
        _1_0 = t1.hiddenVariables;
        if (_1_0 != null) {
          hiddenVariables = _1_0;
          t2 = true;
        } else {
          hiddenVariables = _null;
          t2 = false;
        }
        if (t2 && hiddenVariables._base.contains$1(0, $name))
          throw A.wrapException(A.SassScriptException$0(_s19_, _null));
      }
      _2_0 = t1.prefix;
      if (_2_0 != null) {
        prefix = _2_0;
        t1 = true;
      } else {
        prefix = _null;
        t1 = false;
      }
      if (t1) {
        if (!B.JSString_methods.startsWith$1($name, prefix))
          throw A.wrapException(A.SassScriptException$0(_s19_, _null));
        $name = B.JSString_methods.substring$1($name, prefix.length);
      }
      return this._forwarded_view0$_inner.setVariable$3($name, value, nodeWithSpan);
    },
    variableIdentity$1($name) {
      var prefix, t1,
        _0_0 = this._forwarded_view0$_rule.prefix;
      if (_0_0 != null) {
        prefix = _0_0;
        t1 = true;
      } else {
        prefix = null;
        t1 = false;
      }
      if (t1)
        $name = B.JSString_methods.substring$1($name, prefix.length);
      return this._forwarded_view0$_inner.variableIdentity$1($name);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.ForwardedModuleView0 && this._forwarded_view0$_inner.$eq(0, other._forwarded_view0$_inner) && this._forwarded_view0$_rule === other._forwarded_view0$_rule;
    },
    get$hashCode(_) {
      var t1 = this._forwarded_view0$_inner;
      return (t1.get$hashCode(t1) ^ A.Primitives_objectHashCode(this._forwarded_view0$_rule)) >>> 0;
    },
    cloneCss$0() {
      return A.ForwardedModuleView$0(this._forwarded_view0$_inner.cloneCss$0(), this._forwarded_view0$_rule, this.$ti._precomputed1);
    },
    toString$0(_) {
      return "forwarded " + this._forwarded_view0$_inner.toString$0(0);
    },
    $isModule1: 1,
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    }
  };
  A.FunctionExpression0.prototype = {
    get$name(_) {
      return A.stringReplaceAllUnchecked(this.originalName, "_", "-");
    },
    accept$1$1(visitor) {
      return visitor.visitFunctionExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.namespace;
      t1 = t1 != null ? "" + (t1 + ".") : "";
      t1 += this.originalName + this.$arguments.toString$0(0);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.JSFunction0.prototype = {};
  A.SupportsFunction0.prototype = {
    toString$0(_) {
      return this.name.toString$0(0) + "(" + this.$arguments.toString$0(0) + ")";
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.functionClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassFunction", new A.functionClass__closure()));
      A.JSClassExtension_injectSuperclass(t1._as(new A.SassFunction0(A.BuiltInCallable$function0("f", "", new A.functionClass__closure0(), null)).constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.functionClass__closure.prototype = {
    call$3($self, signature, callback) {
      var paren = B.JSString_methods.indexOf$1(signature, "(");
      if (paren === -1 || !B.JSString_methods.endsWith$1(signature, ")"))
        A.jsThrow(new self.Error('Invalid signature for new sass.SassFunction(): "' + signature + '"'));
      return new A.SassFunction0(A.BuiltInCallable$function0(B.JSString_methods.substring$2(signature, 0, paren), B.JSString_methods.substring$2(signature, paren + 1, signature.length - 1), callback, null));
    },
    "call*": "call$3",
    $requiredArgCount: 3,
    $signature: 465
  };
  A.functionClass__closure0.prototype = {
    call$1(_) {
      return B.C__SassNull0;
    },
    $signature: 5
  };
  A.SassFunction0.prototype = {
    accept$1$1(visitor) {
      var t1, t2;
      if (!visitor._serialize0$_inspect)
        A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " isn't a valid CSS value.", null));
      t1 = visitor._serialize0$_buffer;
      t1.write$1(0, "get-function(");
      t2 = this.callable;
      visitor._serialize0$_visitQuotedString$1(t2.get$name(t2));
      t1.writeCharCode$1(41);
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertFunction$1($name) {
      return this;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassFunction0 && this.callable.$eq(0, other.callable);
    },
    get$hashCode(_) {
      var t1 = this.callable;
      return t1.get$hashCode(t1);
    }
  };
  A.FunctionRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitFunctionRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@function " + this.name + "(" + this.$arguments.toString$0(0) + ") {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    }
  };
  A.unifyComplex_closure2.prototype = {
    call$0() {
      return this._0_0.leadingCombinators;
    },
    $signature: 249
  };
  A.unifyComplex_closure3.prototype = {
    call$0() {
      return this._1_0.combinators;
    },
    $signature: 249
  };
  A.unifyComplex_closure4.prototype = {
    call$1(complex) {
      return complex.lineBreak;
    },
    $signature: 18
  };
  A._namespaceAndName_closure0.prototype = {
    call$0() {
      return type$.TypeSelector_2._as(this._0_0).name;
    },
    $signature: 467
  };
  A._weaveParents_closure5.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 250
  };
  A._weaveParents_closure6.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 250
  };
  A._weaveParents_closure7.prototype = {
    call$2(group1, group2) {
      var t1, unified;
      if (B.C_ListEquality.equals$2(0, group1, group2))
        return group1;
      if (A._complexIsParentSuperselector0(group1, group2))
        return group2;
      if (A._complexIsParentSuperselector0(group2, group1))
        return group1;
      if (!A._mustUnify0(group1, group2))
        return null;
      t1 = this.span;
      unified = A.unifyComplex0(A._setArrayType([A.ComplexSelector$0(B.List_empty14, group1, t1, false), A.ComplexSelector$0(B.List_empty14, group2, t1, false)], type$.JSArray_ComplexSelector_2), t1);
      if (unified == null)
        t1 = null;
      else {
        t1 = A.IterableExtension_get_singleOrNull(unified);
        t1 = t1 == null ? null : t1.components;
      }
      return t1;
    },
    $signature: 469
  };
  A._weaveParents_closure8.prototype = {
    call$1(sequence) {
      return A._complexIsParentSuperselector0(sequence.get$first(sequence), this.group);
    },
    $signature: 251
  };
  A._weaveParents_closure9.prototype = {
    call$1(sequence) {
      return sequence.get$length(sequence) === 0;
    },
    $signature: 251
  };
  A._weaveParents_closure10.prototype = {
    call$1(choice) {
      return J.get$isNotEmpty$asx(choice);
    },
    $signature: 471
  };
  A._mergeLeadingCombinators_closure3.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 252
  };
  A._mergeLeadingCombinators_closure4.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 252
  };
  A._mergeLeadingCombinators_closure5.prototype = {
    call$0() {
      var t1 = this._0_1._readFinal$0();
      return J.get$length$asx(t1 == null ? type$.List_CssValue_Combinator_2._as(t1) : t1);
    },
    $signature: 3
  };
  A._mergeLeadingCombinators_closure6.prototype = {
    call$0() {
      var t1 = this._0_4._readFinal$0();
      return J.get$length$asx(t1 == null ? type$.List_CssValue_Combinator_2._as(t1) : t1);
    },
    $signature: 3
  };
  A._mergeTrailingCombinators_closure9.prototype = {
    call$0() {
      var t1 = this._0_0;
      return t1.get$length(t1);
    },
    $signature: 3
  };
  A._mergeTrailingCombinators_closure10.prototype = {
    call$0() {
      var t1 = this._1_0;
      return t1.get$length(t1);
    },
    $signature: 3
  };
  A._mergeTrailingCombinators_closure11.prototype = {
    call$0() {
      return this._4_0._values[0];
    },
    $signature: 253
  };
  A._mergeTrailingCombinators_closure12.prototype = {
    call$0() {
      return B.Combinator_Htt0 === this._4_1._readFinal$0();
    },
    $signature: 1
  };
  A._mergeTrailingCombinators_closure13.prototype = {
    call$0() {
      return this._4_0._values[1];
    },
    $signature: 253
  };
  A._mergeTrailingCombinators_closure14.prototype = {
    call$0() {
      return B.Combinator_Htt0 === this._4_4._readFinal$0();
    },
    $signature: 1
  };
  A._mergeTrailingCombinators_closure16.prototype = {
    call$0() {
      return this._4_0._values[2];
    },
    $signature: 254
  };
  A._mergeTrailingCombinators_closure17.prototype = {
    call$0() {
      return this._4_0._values[3];
    },
    $signature: 254
  };
  A._mergeTrailingCombinators_closure15.prototype = {
    call$0() {
      return B.Combinator_4QF0 === this._4_4._readFinal$0();
    },
    $signature: 1
  };
  A._mergeTrailingCombinators_closure18.prototype = {
    call$0() {
      return B.Combinator_4QF0 === this._4_1._readFinal$0();
    },
    $signature: 1
  };
  A._mustUnify_closure0.prototype = {
    call$1(component) {
      return B.JSArray_methods.any$1(component.selector.components, new A._mustUnify__closure0(this.uniqueSelectors));
    },
    $signature: 52
  };
  A._mustUnify__closure0.prototype = {
    call$1(simple) {
      var t1;
      if (!(simple instanceof A.IDSelector0))
        t1 = simple instanceof A.PseudoSelector0 && !simple.isClass;
      else
        t1 = true;
      return t1 && this.uniqueSelectors.contains$1(0, simple);
    },
    $signature: 15
  };
  A._chunks_closure3.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature() {
      return this.T._eval$1("List<0>()");
    }
  };
  A._chunks_closure4.prototype = {
    call$0() {
      return J.get$length$asx(this._0_1._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A._chunks_closure5.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature() {
      return this.T._eval$1("List<0>()");
    }
  };
  A._chunks_closure6.prototype = {
    call$0() {
      return J.get$length$asx(this._0_5._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.paths_closure0.prototype = {
    call$2(paths, choice) {
      var t1 = this.T;
      t1 = J.expand$1$1$ax(choice, new A.paths__closure0(paths, t1), t1._eval$1("List<0>"));
      return A.List_List$of(t1, true, t1.$ti._eval$1("Iterable.E"));
    },
    $signature() {
      return this.T._eval$1("List<List<0>>(List<List<0>>,List<0>)");
    }
  };
  A.paths__closure0.prototype = {
    call$1(option) {
      var t1 = this.T;
      return J.map$1$1$ax(this.paths, new A.paths___closure0(option, t1), t1._eval$1("List<0>"));
    },
    $signature() {
      return this.T._eval$1("Iterable<List<0>>(0)");
    }
  };
  A.paths___closure0.prototype = {
    call$1(path) {
      var t1 = A.List_List$of(path, true, this.T);
      t1.push(this.option);
      return t1;
    },
    $signature() {
      return this.T._eval$1("List<0>(List<0>)");
    }
  };
  A.listIsSuperselector_closure0.prototype = {
    call$1(complex1) {
      return B.JSArray_methods.any$1(this.list1, new A.listIsSuperselector__closure0(complex1));
    },
    $signature: 18
  };
  A.listIsSuperselector__closure0.prototype = {
    call$1(complex2) {
      return complex2.isSuperselector$1(this.complex1);
    },
    $signature: 18
  };
  A.complexIsSuperselector_closure1.prototype = {
    call$1($parent) {
      return $parent.combinators.length > 1;
    },
    $signature: 52
  };
  A.complexIsSuperselector_closure2.prototype = {
    call$1(component) {
      return A._isSupercombinator0(this.combinator1, A.IterableExtension_get_firstOrNull(component.combinators));
    },
    $signature: 52
  };
  A._compatibleWithPreviousCombinator_closure0.prototype = {
    call$1(component) {
      var t1 = component.combinators,
        t2 = A.IterableExtension_get_firstOrNull(t1);
      if (!J.$eq$(t2 == null ? null : t2.value, B.Combinator_Htt0)) {
        t1 = A.IterableExtension_get_firstOrNull(t1);
        t1 = J.$eq$(t1 == null ? null : t1.value, B.Combinator_4QF0);
      } else
        t1 = true;
      return t1;
    },
    $signature: 52
  };
  A.compoundIsSuperselector_closure1.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 255
  };
  A.compoundIsSuperselector_closure2.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 255
  };
  A._selectorPseudoIsSuperselector_closure6.prototype = {
    call$1(selector2) {
      return A.listIsSuperselector0(this.selector1.components, selector2.components);
    },
    $signature: 72
  };
  A._selectorPseudoIsSuperselector_closure7.prototype = {
    call$1(complex1) {
      var t1, t2;
      if (complex1.leadingCombinators.length === 0) {
        t1 = A._setArrayType([], type$.JSArray_ComplexSelectorComponent_2);
        t2 = this.parents;
        if (t2 != null)
          B.JSArray_methods.addAll$1(t1, t2);
        t2 = this.compound2;
        t1.push(new A.ComplexSelectorComponent0(t2, A.List_List$unmodifiable(B.List_empty14, type$.CssValue_Combinator_2), t2.span));
        t1 = A.complexIsSuperselector0(complex1.components, t1);
      } else
        t1 = false;
      return t1;
    },
    $signature: 18
  };
  A._selectorPseudoIsSuperselector_closure8.prototype = {
    call$1(selector2) {
      return A.listIsSuperselector0(this.selector1.components, selector2.components);
    },
    $signature: 72
  };
  A._selectorPseudoIsSuperselector_closure9.prototype = {
    call$1(selector2) {
      return A.listIsSuperselector0(this.selector1.components, selector2.components);
    },
    $signature: 72
  };
  A._selectorPseudoIsSuperselector_closure10.prototype = {
    call$1(complex) {
      if (complex.accept$1(B._IsBogusVisitor_true0))
        return false;
      return B.JSArray_methods.any$1(this.compound2.components, new A._selectorPseudoIsSuperselector__closure0(complex, this.pseudo1));
    },
    $signature: 18
  };
  A._selectorPseudoIsSuperselector__closure0.prototype = {
    call$1(simple2) {
      var t1, selector2, _this = this,
        _0_4 = A._InitializedCell$(new A._selectorPseudoIsSuperselector___closure2(simple2));
      $label0$1: {
        if (simple2 instanceof A.TypeSelector0) {
          t1 = B.JSArray_methods.any$1(B.JSArray_methods.get$last(_this.complex.components).selector.components, new A._selectorPseudoIsSuperselector___closure3(simple2));
          break $label0$1;
        }
        if (simple2 instanceof A.IDSelector0) {
          t1 = B.JSArray_methods.any$1(B.JSArray_methods.get$last(_this.complex.components).selector.components, new A._selectorPseudoIsSuperselector___closure4(simple2));
          break $label0$1;
        }
        if (simple2 instanceof A.PseudoSelector0) {
          if (_0_4._readFinal$0() != null) {
            selector2 = _0_4._readFinal$0();
            t1 = true;
          } else {
            selector2 = null;
            t1 = false;
          }
          t1 = t1 && simple2.name === _this.pseudo1.name;
        } else {
          selector2 = null;
          t1 = false;
        }
        if (t1) {
          t1 = A.listIsSuperselector0(selector2.components, A._setArrayType([_this.complex], type$.JSArray_ComplexSelector_2));
          break $label0$1;
        }
        t1 = false;
        break $label0$1;
      }
      return t1;
    },
    $signature: 15
  };
  A._selectorPseudoIsSuperselector___closure3.prototype = {
    call$1(simple1) {
      var t1;
      if (simple1 instanceof A.TypeSelector0) {
        t1 = this.simple2;
        t1 = !(t1 instanceof A.TypeSelector0 && t1.name.$eq(0, simple1.name));
      } else
        t1 = false;
      return t1;
    },
    $signature: 15
  };
  A._selectorPseudoIsSuperselector___closure4.prototype = {
    call$1(simple1) {
      var t1;
      if (simple1 instanceof A.IDSelector0) {
        t1 = this.simple2;
        t1 = !(t1 instanceof A.IDSelector0 && t1.name === simple1.name);
      } else
        t1 = false;
      return t1;
    },
    $signature: 15
  };
  A._selectorPseudoIsSuperselector___closure2.prototype = {
    call$0() {
      return type$.PseudoSelector_2._as(this._0_0).selector;
    },
    $signature: 78
  };
  A._selectorPseudoIsSuperselector_closure11.prototype = {
    call$1(selector2) {
      var t1 = B.C_ListEquality.equals$2(0, this.selector1.components, selector2.components);
      return t1;
    },
    $signature: 72
  };
  A._selectorPseudoIsSuperselector_closure12.prototype = {
    call$1(pseudo2) {
      var t1, selector2;
      if (!(pseudo2 instanceof A.PseudoSelector0))
        return false;
      t1 = this.pseudo1;
      if (pseudo2.name !== t1.name)
        return false;
      if (pseudo2.argument != t1.argument)
        return false;
      selector2 = pseudo2.selector;
      if (selector2 == null)
        return false;
      return A.listIsSuperselector0(this.selector1.components, selector2.components);
    },
    $signature: 15
  };
  A._selectorPseudoArgs_closure1.prototype = {
    call$1(pseudo) {
      return pseudo.isClass === this.isClass && pseudo.name === this.name;
    },
    $signature: 477
  };
  A._selectorPseudoArgs_closure2.prototype = {
    call$1(pseudo) {
      return pseudo.selector;
    },
    $signature: 478
  };
  A.globalFunctions_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return t1.$index($arguments, 0).get$isTruthy() ? t1.$index($arguments, 1) : t1.$index($arguments, 2);
    },
    $signature: 5
  };
  A.IDSelector0.prototype = {
    get$specificity() {
      return A._asInt(Math.pow(A.SimpleSelector0.prototype.get$specificity.call(this), 2));
    },
    accept$1$1(visitor) {
      return visitor.visitIDSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      return new A.IDSelector0(this.name + suffix, this.span);
    },
    unify$1(compound) {
      if (B.JSArray_methods.any$1(compound, new A.IDSelector_unify_closure0(this)))
        return null;
      return this.super$SimpleSelector$unify0(compound);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.IDSelector0 && other.name === this.name;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    }
  };
  A.IDSelector_unify_closure0.prototype = {
    call$1(simple) {
      var t1;
      if (simple instanceof A.IDSelector0)
        t1 = this.$this.name !== simple.name;
      else
        t1 = false;
      return t1;
    },
    $signature: 15
  };
  A.IfExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitIfExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "if" + this.$arguments.toString$0(0);
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.IfRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitIfRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var result = A.ListExtensions_mapIndexed(this.clauses, new A.IfRule_toString_closure0(), type$.IfClause_2, type$.String).join$1(0, " "),
        lastClause = this.lastClause;
      return lastClause != null ? result + (" " + lastClause.toString$0(0)) : result;
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.IfRule_toString_closure0.prototype = {
    call$2(index, clause) {
      var t1 = index === 0 ? "if" : "else if";
      return "@" + t1 + " " + clause.expression.toString$0(0) + " {" + B.JSArray_methods.join$1(clause.children, " ") + "}";
    },
    $signature: 479
  };
  A.IfRuleClause0.prototype = {};
  A.IfRuleClause$__closure0.prototype = {
    call$1(child) {
      var t1, imports;
      $label0$0: {
        if (child instanceof A.VariableDeclaration0 || child instanceof A.FunctionRule0 || child instanceof A.MixinRule0) {
          t1 = true;
          break $label0$0;
        }
        if (child instanceof A.ImportRule0) {
          imports = child.imports;
          t1 = true;
        } else {
          imports = null;
          t1 = false;
        }
        if (t1) {
          t1 = (imports && B.JSArray_methods).any$1(imports, new A.IfRuleClause$___closure0());
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $signature: 257
  };
  A.IfRuleClause$___closure0.prototype = {
    call$1($import) {
      return $import instanceof A.DynamicImport0;
    },
    $signature: 258
  };
  A.IfClause0.prototype = {
    toString$0(_) {
      return "@if " + this.expression.toString$0(0) + " {" + B.JSArray_methods.join$1(this.children, " ") + "}";
    }
  };
  A.ElseClause0.prototype = {
    toString$0(_) {
      return "@else {" + B.JSArray_methods.join$1(this.children, " ") + "}";
    }
  };
  A.ImmutableList0.prototype = {};
  A.ImmutableMap0.prototype = {};
  A.immutableMapToDartMap_closure.prototype = {
    call$3(value, key, _) {
      this.dartMap.$indexSet(0, key, value);
    },
    "call*": "call$3",
    $requiredArgCount: 3,
    $signature: 482
  };
  A.NodeImporter.prototype = {
    loadRelative$3(url, previous, forImport) {
      var t1, t2, _null = null;
      if ($.$get$url().style.rootLength$1(url) > 0) {
        if (!B.JSString_methods.startsWith$1(url, "/") && !B.JSString_methods.startsWith$1(url, "file:"))
          return _null;
        return this._tryPath$2($.$get$context().style.pathFromUri$1(A._parseUri(url)), forImport);
      }
      if ((previous == null ? _null : previous.get$scheme()) !== "file")
        return _null;
      t1 = $.$get$context();
      t2 = t1.style;
      return this._tryPath$2(A.join(t1.dirname$1(t2.pathFromUri$1(A._parseUri(previous))), t2.pathFromUri$1(A._parseUri(url)), _null), forImport);
    },
    load$3(_, url, previous, forImport) {
      var t1, t2, _i, _0_0, value, t3, _this = this,
        previousString = _this._previousToString$1(previous);
      for (t1 = _this._implementation$_importers, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        _0_0 = A.wrapJSExceptions(new A.NodeImporter_load_closure(_this, t1[_i], forImport, url, previousString));
        if (_0_0 != null) {
          value = _0_0;
          t3 = true;
        } else {
          value = null;
          t3 = false;
        }
        if (t3)
          return _this._handleImportResult$4(url, previous, value, forImport);
      }
      return _this._resolveLoadPathFromUrl$2(A.Uri_parse(url), forImport);
    },
    loadAsync$3(url, previous, forImport) {
      return this.loadAsync$body$NodeImporter(url, previous, forImport);
    },
    loadAsync$body$NodeImporter(url, previous, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Record_2_String_and_String),
        $async$returnValue, $async$self = this, t1, t2, _i, _0_0, value, t3, previousString;
      var $async$loadAsync$3 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              previousString = $async$self._previousToString$1(previous);
              t1 = $async$self._implementation$_importers, t2 = t1.length, _i = 0;
            case 3:
              // for condition
              if (!(_i < t2)) {
                // goto after for
                $async$goto = 5;
                break;
              }
              $async$goto = 6;
              return A._asyncAwait($async$self._callImporterAsync$4(t1[_i], url, previousString, forImport), $async$loadAsync$3);
            case 6:
              // returning from await.
              _0_0 = $async$result;
              if (_0_0 != null) {
                value = _0_0;
                t3 = true;
              } else {
                value = null;
                t3 = false;
              }
              if (t3) {
                $async$returnValue = $async$self._handleImportResult$4(url, previous, value, forImport);
                // goto return
                $async$goto = 1;
                break;
              }
            case 4:
              // for update
              ++_i;
              // goto for condition
              $async$goto = 3;
              break;
            case 5:
              // after for
              $async$returnValue = $async$self._resolveLoadPathFromUrl$2(A.Uri_parse(url), forImport);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$loadAsync$3, $async$completer);
    },
    _previousToString$1(previous) {
      var t1;
      $label0$0: {
        if (previous == null) {
          t1 = "stdin";
          break $label0$0;
        }
        if ("file" === previous.get$scheme()) {
          t1 = $.$get$context().style.pathFromUri$1(A._parseUri(previous));
          break $label0$0;
        }
        t1 = previous.toString$0(0);
        break $label0$0;
      }
      return t1;
    },
    _resolveLoadPathFromUrl$2(url, forImport) {
      return url.get$scheme() === "" || url.get$scheme() === "file" ? this._resolveLoadPath$2($.$get$context().style.pathFromUri$1(A._parseUri(url)), forImport) : null;
    },
    _resolveLoadPath$2(path, forImport) {
      var result, t1, t2, _i, t3, _1_0, _null = null,
        _0_0 = this._tryPath$2(A.absolute(path, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null), forImport);
      if (_0_0 != null) {
        result = _0_0;
        t1 = true;
      } else {
        result = _null;
        t1 = false;
      }
      if (t1)
        return result;
      for (t1 = this._includePaths, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        t3 = A.join(t1[_i], path, _null);
        _1_0 = this._tryPath$2($.$get$context().absolute$15(t3, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null, _null), forImport);
        if (_1_0 != null) {
          result = _1_0;
          t3 = true;
        } else {
          result = _null;
          t3 = false;
        }
        if (t3)
          return result;
      }
      return _null;
    },
    _tryPath$2(path, forImport) {
      var t1;
      if (forImport) {
        t1 = type$.nullable_Object;
        t1 = A.runZoned(new A.NodeImporter__tryPath_closure(path), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__inImportRule, true], t1, t1), type$.nullable_String);
      } else
        t1 = A.resolveImportPath0(path);
      return A.NullableExtension_andThen0(t1, new A.NodeImporter__tryPath_closure0());
    },
    _handleImportResult$4(url, previous, value, forImport) {
      var t1, file, contents, t2, resolved;
      if (value instanceof self.Error)
        throw A.wrapException(value);
      if (!type$.NodeImporterResult._is(value))
        return null;
      t1 = J.getInterceptor$x(value);
      file = t1.get$file(value);
      contents = t1.get$contents(value);
      t1 = contents == null;
      t2 = !t1;
      if (t2 && A._asString(new self.Function("value", "return typeof value").call$1(contents)) !== "string")
        A.jsThrow(new A.ArgumentError(true, contents, "contents", "must be a string but was: " + A.jsType(contents)));
      if (file == null)
        return new A._Record_2(t1 ? "" : contents, url);
      else if (t2)
        return new A._Record_2(contents, $.$get$context().toUri$1(file).toString$0(0));
      else {
        resolved = this.loadRelative$3($.$get$context().toUri$1(file).toString$0(0), previous, forImport);
        if (resolved == null)
          resolved = this._resolveLoadPath$2(file, forImport);
        if (resolved != null)
          return resolved;
        throw A.wrapException("Can't find stylesheet to import.");
      }
    },
    _callImporterAsync$4(importer, url, previousString, forImport) {
      return this._callImporterAsync$body$NodeImporter(importer, url, previousString, forImport);
    },
    _callImporterAsync$body$NodeImporter(importer, url, previousString, forImport) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.nullable_Object),
        $async$returnValue, $async$self = this, t1, result;
      var $async$_callImporterAsync$4 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = new A._Future($.Zone__current, type$._Future_Object);
              result = A.wrapJSExceptions(new A.NodeImporter__callImporterAsync_closure($async$self, importer, forImport, url, previousString, new A._AsyncCompleter(t1, type$._AsyncCompleter_Object)));
              $async$goto = A._asBool($.$get$_isUndefined().call$1(result)) ? 3 : 4;
              break;
            case 3:
              // then
              $async$goto = 5;
              return A._asyncAwait(t1, $async$_callImporterAsync$4);
            case 5:
              // returning from await.
              $async$returnValue = $async$result;
              // goto return
              $async$goto = 1;
              break;
            case 4:
              // join
              $async$returnValue = result;
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$_callImporterAsync$4, $async$completer);
    },
    _renderContext$1(fromImport) {
      var context = {options: type$.RenderContextOptions._as(this._implementation$_options), fromImport: fromImport};
      J.set$context$x(J.get$options$x(context), context);
      return context;
    }
  };
  A.NodeImporter_load_closure.prototype = {
    call$0() {
      var _this = this;
      return J.apply$2$x(_this.importer, _this.$this._renderContext$1(_this.forImport), A._setArrayType([_this.url, _this.previousString], type$.JSArray_Object));
    },
    $signature: 28
  };
  A.NodeImporter__tryPath_closure.prototype = {
    call$0() {
      return A.resolveImportPath0(this.path);
    },
    $signature: 32
  };
  A.NodeImporter__tryPath_closure0.prototype = {
    call$1(resolved) {
      return new A._Record_2(A.readFile0(resolved), $.$get$context().toUri$1(resolved).toString$0(0));
    },
    $signature: 483
  };
  A.NodeImporter__callImporterAsync_closure.prototype = {
    call$0() {
      var _this = this;
      return J.apply$2$x(_this.importer, _this.$this._renderContext$1(_this.forImport), A._setArrayType([_this.url, _this.previousString, A.allowInterop(_this.completer.get$complete())], type$.JSArray_Object));
    },
    $signature: 28
  };
  A.ModifiableCssImport0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssImport$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ImportCache0.prototype = {
    canonicalize$4$baseImporter$baseUrl$forImport(_, url, baseImporter, baseUrl, forImport) {
      var t1, relativeResult, _this = this;
      if (A.isBrowser())
        t1 = (baseImporter == null || baseImporter instanceof A.NoOpImporter0) && _this._import_cache$_importers.length === 0;
      else
        t1 = false;
      if (t1)
        throw A.wrapException(string$.Custom);
      if (baseImporter != null && url.get$scheme() === "") {
        relativeResult = _this._import_cache$_relativeCanonicalizeCache.putIfAbsent$2(new A._Record_4_baseImporter_baseUrl_forImport([url, baseImporter, baseUrl, forImport]), new A.ImportCache_canonicalize_closure1(_this, baseImporter, baseUrl, url, forImport));
        if (relativeResult != null)
          return relativeResult;
      }
      return _this._import_cache$_canonicalizeCache.putIfAbsent$2(new A._Record_2_forImport(url, forImport), new A.ImportCache_canonicalize_closure2(_this, url, baseUrl, forImport));
    },
    _import_cache$_canonicalize$4(importer, url, baseUrl, forImport) {
      var passContainingUrl, t1, result, _null = null,
        canonicalize = forImport ? new A.ImportCache__canonicalize_closure1(importer, url) : new A.ImportCache__canonicalize_closure2(importer, url);
      if (baseUrl != null)
        passContainingUrl = url.get$scheme() === "" || importer.isNonCanonicalScheme$1(url.get$scheme());
      else
        passContainingUrl = false;
      t1 = passContainingUrl ? baseUrl : _null;
      result = A.withContainingUrl0(t1, canonicalize, type$.nullable_Uri);
      if (result == null)
        return _null;
      if (result.get$scheme() === "")
        A.WarnForDeprecation_warnForDeprecation0(this._import_cache$_logger, B.Deprecation_E5x, "Importer " + importer.toString$0(0) + " canonicalized " + url.toString$0(0) + " to " + result.toString$0(0) + string$.x2e_Rela, _null, _null);
      else if (importer.isNonCanonicalScheme$1(result.get$scheme()))
        throw A.wrapException("Importer " + importer.toString$0(0) + " canonicalized " + url.toString$0(0) + " to " + result.toString$0(0) + string$.x2c_whicu);
      return new A._Record_3_originalUrl(importer, result, url);
    },
    importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, quiet) {
      return this._import_cache$_importCache.putIfAbsent$2(canonicalUrl, new A.ImportCache_importCanonical_closure0(this, importer, canonicalUrl, originalUrl, quiet));
    },
    importCanonical$3$originalUrl(importer, canonicalUrl, originalUrl) {
      return this.importCanonical$4$originalUrl$quiet(importer, canonicalUrl, originalUrl, false);
    },
    humanize$1(canonicalUrl) {
      var t2,
        t1 = this._import_cache$_canonicalizeCache;
      t1 = A.IterableNullableExtension_whereNotNull(t1.get$values(t1), type$.Record_3_Importer_and_Uri_and_Uri_originalUrl_2);
      t2 = t1.$ti;
      t2 = A.NullableExtension_andThen0(A.minBy(new A.MappedIterable(new A.WhereIterable(t1, new A.ImportCache_humanize_closure3(canonicalUrl), t2._eval$1("WhereIterable<Iterable.E>")), new A.ImportCache_humanize_closure4(), t2._eval$1("MappedIterable<Iterable.E,Uri>")), new A.ImportCache_humanize_closure5()), new A.ImportCache_humanize_closure6(canonicalUrl));
      return t2 == null ? canonicalUrl : t2;
    },
    sourceMapUrl$1(_, canonicalUrl) {
      var t1 = this._import_cache$_resultsCache.$index(0, canonicalUrl);
      t1 = t1 == null ? null : t1.get$sourceMapUrl(t1);
      return t1 == null ? canonicalUrl : t1;
    }
  };
  A.ImportCache_canonicalize_closure1.prototype = {
    call$0() {
      var _this = this,
        t1 = _this.baseUrl,
        t2 = t1 == null ? null : t1.resolveUri$1(_this.url);
      if (t2 == null)
        t2 = _this.url;
      return _this.$this._import_cache$_canonicalize$4(_this.baseImporter, t2, t1, _this.forImport);
    },
    $signature: 259
  };
  A.ImportCache_canonicalize_closure2.prototype = {
    call$0() {
      var t1, t2, t3, t4, t5, t6, _i, _0_0, result, t7, _this = this;
      for (t1 = _this.$this, t2 = t1._import_cache$_importers, t3 = t2.length, t4 = _this.url, t5 = _this.baseUrl, t6 = _this.forImport, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i) {
        _0_0 = t1._import_cache$_canonicalize$4(t2[_i], t4, t5, t6);
        if (_0_0 != null) {
          result = _0_0;
          t7 = true;
        } else {
          result = null;
          t7 = false;
        }
        if (t7)
          return result;
      }
      return null;
    },
    $signature: 259
  };
  A.ImportCache__canonicalize_closure1.prototype = {
    call$0() {
      var t1 = type$.nullable_Object;
      return A.runZoned(new A.ImportCache__canonicalize__closure0(this.importer, this.resolved), A.LinkedHashMap_LinkedHashMap$_literal([B.Symbol__inImportRule, true], t1, t1), type$.nullable_Uri);
    },
    $signature: 56
  };
  A.ImportCache__canonicalize__closure0.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 56
  };
  A.ImportCache__canonicalize_closure2.prototype = {
    call$0() {
      return this.importer.canonicalize$1(0, this.resolved);
    },
    $signature: 56
  };
  A.ImportCache_importCanonical_closure0.prototype = {
    call$0() {
      var t2, t3, t4, _this = this,
        t1 = _this.canonicalUrl,
        result = _this.importer.load$1(0, t1);
      if (result == null)
        return null;
      t2 = _this.$this;
      t2._import_cache$_resultsCache.$indexSet(0, t1, result);
      t3 = result.contents;
      t4 = result.syntax;
      t1 = _this.originalUrl.resolveUri$1(t1);
      return A.Stylesheet_Stylesheet$parse0(t3, t4, _this.quiet ? $.$get$Logger_quiet0() : t2._import_cache$_logger, t1);
    },
    $signature: 485
  };
  A.ImportCache_humanize_closure3.prototype = {
    call$1(result) {
      return J.$eq$(result._1, this.canonicalUrl);
    },
    $signature: 486
  };
  A.ImportCache_humanize_closure4.prototype = {
    call$1(result) {
      return result._2;
    },
    $signature: 487
  };
  A.ImportCache_humanize_closure5.prototype = {
    call$1(url) {
      return url.get$path(url).length;
    },
    $signature: 111
  };
  A.ImportCache_humanize_closure6.prototype = {
    call$1(url) {
      var t1 = $.$get$url(),
        t2 = this.canonicalUrl;
      return url.resolve$1(A.ParsedPath_ParsedPath$parse(t2.get$path(t2), t1.style).get$basename());
    },
    $signature: 48
  };
  A.ImportRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitImportRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@import " + B.JSArray_methods.join$1(this.imports, ", ") + ";";
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.JSImporter.prototype = {};
  A.CanonicalizeContext.prototype = {};
  A.JSImporterResult.prototype = {};
  A.Importer0.prototype = {
    isNonCanonicalScheme$1(scheme) {
      return false;
    }
  };
  A.NodeImporterResult0.prototype = {};
  A.IncludeRule0.prototype = {
    get$spanWithoutContent() {
      var t2, t3,
        t1 = this.span;
      if (!(this.content == null)) {
        t2 = t1.file;
        t3 = this.$arguments.span;
        t3 = A.SpanExtensions_trimRight0(A.SpanExtensions_trimLeft0(t2.span$2(0, A.FileLocation$_(t2, t1._file$_start).offset, t3.get$end(t3).offset)));
        t1 = t3;
      }
      return t1;
    },
    accept$1$1(visitor) {
      return visitor.visitIncludeRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, _this = this,
        t1 = _this.namespace;
      t1 = t1 != null ? "@include " + (t1 + ".") : "@include ";
      t1 += _this.name;
      t2 = _this.$arguments;
      if (!t2.get$isEmpty(t2))
        t1 += "(" + t2.toString$0(0) + ")";
      t2 = _this.content;
      t1 += t2 == null ? ";" : " " + t2.toString$0(0);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.InterpolatedFunctionExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitInterpolatedFunctionExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.name.toString$0(0) + this.$arguments.toString$0(0);
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Interpolation0.prototype = {
    get$asPlain() {
      var t1, first,
        _0_0 = this.contents,
        _0_1 = A._InitializedCell$(new A.Interpolation_asPlain_closure1(_0_0)),
        _0_6 = A._InitializedCell$(new A.Interpolation_asPlain_closure2(_0_0));
      $label0$0: {
        if (_0_1._readFinal$0() <= 0) {
          t1 = "";
          break $label0$0;
        }
        if (J.$eq$(_0_1._readFinal$0(), 1))
          if (typeof _0_6._readFinal$0() == "string") {
            first = _0_6._readFinal$0();
            t1 = true;
          } else {
            first = null;
            t1 = false;
          }
        else {
          first = null;
          t1 = false;
        }
        if (t1) {
          t1 = first;
          break $label0$0;
        }
        t1 = null;
        break $label0$0;
      }
      return t1;
    },
    get$initialPlain() {
      var first, t1,
        _0_0 = this.contents,
        _0_4 = A._InitializedCell$(new A.Interpolation_initialPlain_closure0(_0_0));
      $label0$0: {
        if (_0_0.length >= 1)
          if (typeof _0_4._readFinal$0() == "string") {
            first = _0_4._readFinal$0();
            t1 = true;
          } else {
            first = null;
            t1 = false;
          }
        else {
          first = null;
          t1 = false;
        }
        if (t1) {
          t1 = first;
          break $label0$0;
        }
        t1 = "";
        break $label0$0;
      }
      return t1;
    },
    Interpolation$20(contents, span) {
      var t1, t2, t3, i, t4, t5,
        _s8_ = "contents";
      for (t1 = this.contents, t2 = t1.length, t3 = type$.Expression_2, i = 0; i < t2; ++i) {
        t4 = t1[i];
        t5 = typeof t4 == "string";
        if (!t5 && !t3._is(t4))
          throw A.wrapException(A.ArgumentError$value(t1, _s8_, string$.May_on));
        if (i !== 0 && typeof t1[i - 1] == "string" && t5)
          throw A.wrapException(A.ArgumentError$value(t1, _s8_, "May not contain adjacent Strings."));
      }
    },
    toString$0(_) {
      var t1 = this.contents;
      return new A.MappedListIterable(t1, new A.Interpolation_toString_closure0(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$0(0);
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Interpolation_asPlain_closure1.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.Interpolation_asPlain_closure2.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.Interpolation_initialPlain_closure0.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.Interpolation_toString_closure0.prototype = {
    call$1(value) {
      return typeof value == "string" ? value : "#{" + A.S(value) + "}";
    },
    $signature: 139
  };
  A.SupportsInterpolation0.prototype = {
    toString$0(_) {
      return "#{" + this.expression.toString$0(0) + "}";
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.InterpolationBuffer0.prototype = {
    writeCharCode$1(character) {
      this._interpolation_buffer0$_text._contents += A.Primitives_stringFromCharCode(character);
      return null;
    },
    addInterpolation$1(interpolation) {
      var _0_4, first, rest, _this = this, _null = null,
        toAdd = interpolation.contents,
        t1 = toAdd.length;
      if (t1 === 0)
        return;
      _0_4 = A._InitializedCell$(new A.InterpolationBuffer_addInterpolation_closure0(toAdd));
      if (t1 >= 1)
        if (typeof _0_4._readFinal$0() == "string") {
          first = _0_4._readFinal$0();
          rest = B.JSArray_methods.sublist$1(toAdd, 1);
          t1 = true;
        } else {
          rest = _null;
          first = rest;
          t1 = false;
        }
      else {
        rest = _null;
        first = rest;
        t1 = false;
      }
      if (t1) {
        _this._interpolation_buffer0$_text._contents += A.S(first);
        toAdd = rest;
      }
      _this._interpolation_buffer0$_flushText$0();
      t1 = _this._interpolation_buffer0$_contents;
      B.JSArray_methods.addAll$1(t1, toAdd);
      if (typeof B.JSArray_methods.get$last(t1) == "string")
        _this._interpolation_buffer0$_text._contents += A.S(t1.pop());
    },
    _interpolation_buffer0$_flushText$0() {
      var t1 = this._interpolation_buffer0$_text,
        t2 = t1._contents;
      if (t2.length === 0)
        return;
      this._interpolation_buffer0$_contents.push(t2.charCodeAt(0) == 0 ? t2 : t2);
      t1._contents = "";
    },
    interpolation$1(span) {
      var t1 = A.List_List$of(this._interpolation_buffer0$_contents, true, type$.Object),
        t2 = this._interpolation_buffer0$_text._contents;
      if (t2.length !== 0)
        t1.push(t2.charCodeAt(0) == 0 ? t2 : t2);
      return A.Interpolation$0(t1, span);
    },
    toString$0(_) {
      var t1, t2, _i, t3, element;
      for (t1 = this._interpolation_buffer0$_contents, t2 = t1.length, _i = 0, t3 = ""; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        element = t1[_i];
        t3 = typeof element == "string" ? t3 + element : t3 + "#{" + A.S(element) + A.Primitives_stringFromCharCode(125);
      }
      t1 = t3 + this._interpolation_buffer0$_text.toString$0(0);
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    }
  };
  A.InterpolationBuffer_addInterpolation_closure0.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.InterpolationMap0.prototype = {
    mapException$1(error) {
      var t3, t4, _this = this,
        target = error.get$span(error),
        source = _this.mapSpan$1(target),
        startIndex = _this._interpolation_map$_indexInContents$1(target.get$start(target)),
        endIndex = _this._interpolation_map$_indexInContents$1(target.get$end(target)),
        t1 = _this._interpolation_map$_interpolation.contents,
        t2 = error._span_exception$_message;
      if (!A.SubListIterable$(t1, startIndex, null, A._arrayInstanceType(t1)._precomputed1).take$1(0, endIndex - startIndex + 1).any$1(0, new A.InterpolationMap_mapException_closure0()))
        return new A.SourceSpanFormatException(error.get$source(), t2, source);
      else {
        t1 = type$.SourceSpan;
        t3 = type$.String;
        t4 = A.LinkedHashMap_LinkedHashMap$_literal([target, "error in interpolated output"], t1, t3);
        error.get$source();
        return new A.MultiSourceSpanFormatException("", A.ConstantMap_ConstantMap$from(t4, t1, t3), t2, source);
      }
    },
    mapSpan$1(target) {
      var t1, start, end, t2, _this = this, _null = null,
        _0_0 = new A._Record_2(_this._interpolation_map$_mapLocation$1(target.get$start(target)), _this._interpolation_map$_mapLocation$1(target.get$end(target))),
        _0_1 = A._InitializedCell$(new A.InterpolationMap_mapSpan_closure1(_0_0)),
        _0_2 = A._InitializedCell$(new A.InterpolationMap_mapSpan_closure2(_0_0));
      $label0$0: {
        t1 = type$.FileSpan;
        if (t1._is(_0_1._readFinal$0())) {
          start = _0_1._readFinal$0();
          if (t1._is(_0_2._readFinal$0())) {
            end = _0_2._readFinal$0();
            t2 = true;
          } else {
            end = _null;
            t2 = false;
          }
        } else {
          end = _null;
          start = end;
          t2 = false;
        }
        if (t2) {
          t1 = start.expand$1(0, end);
          break $label0$0;
        }
        if (t1._is(_0_1._readFinal$0())) {
          start = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.FileLocation) {
            end = _0_2._readFinal$0();
            t2 = true;
          } else {
            end = _null;
            t2 = false;
          }
        } else {
          end = _null;
          start = end;
          t2 = false;
        }
        if (t2) {
          t1 = _this._interpolation_map$_interpolation.span;
          t1 = t1.get$file(t1).span$2(0, _this._interpolation_map$_expandInterpolationSpanLeft$1(start.get$start(start)), end.offset);
          break $label0$0;
        }
        if (_0_1._readFinal$0() instanceof A.FileLocation) {
          start = _0_1._readFinal$0();
          if (t1._is(_0_2._readFinal$0())) {
            end = _0_2._readFinal$0();
            t1 = true;
          } else {
            end = _null;
            t1 = false;
          }
        } else {
          end = _null;
          start = end;
          t1 = false;
        }
        if (t1) {
          t1 = _this._interpolation_map$_interpolation.span;
          t1 = t1.get$file(t1).span$2(0, start.offset, _this._interpolation_map$_expandInterpolationSpanRight$1(end.get$end(end)));
          break $label0$0;
        }
        if (_0_1._readFinal$0() instanceof A.FileLocation) {
          start = _0_1._readFinal$0();
          if (_0_2._readFinal$0() instanceof A.FileLocation) {
            end = _0_2._readFinal$0();
            t1 = true;
          } else {
            end = _null;
            t1 = false;
          }
        } else {
          end = _null;
          start = end;
          t1 = false;
        }
        if (t1) {
          t1 = _this._interpolation_map$_interpolation.span;
          t1 = t1.get$file(t1).span$2(0, start.offset, end.offset);
          break $label0$0;
        }
        t1 = A.throwExpression("[BUG] Unreachable");
      }
      return t1;
    },
    _interpolation_map$_mapLocation$1(target) {
      var chunk, t4, previousLocation, _this = this,
        index = _this._interpolation_map$_indexInContents$1(target),
        t1 = _this._interpolation_map$_interpolation,
        t2 = t1.contents,
        _0_0 = t2[index],
        t3 = type$.Expression_2;
      if (t3._is(_0_0)) {
        chunk = _0_0;
        t4 = true;
      } else {
        chunk = null;
        t4 = false;
      }
      if (t4)
        return chunk.get$span(chunk);
      t4 = index === 0;
      t1 = t1.span;
      if (t4)
        previousLocation = t1.get$start(t1);
      else {
        t1 = t1.get$file(t1);
        t2 = t3._as(t2[index - 1]);
        t2 = t2.get$span(t2);
        previousLocation = A.FileLocation$_(t1, _this._interpolation_map$_expandInterpolationSpanRight$1(t2.get$end(t2)));
      }
      t1 = t4 ? 0 : _this._interpolation_map$_targetLocations[index - 1].get$offset();
      return A.FileLocation$_(previousLocation.file, previousLocation.offset + (target.offset - t1));
    },
    _interpolation_map$_indexInContents$1(target) {
      var t1, t2, t3, i;
      for (t1 = this._interpolation_map$_targetLocations, t2 = t1.length, t3 = target.offset, i = 0; i < t2; ++i)
        if (t3 < t1[i].get$offset())
          return i;
      return this._interpolation_map$_interpolation.contents.length - 1;
    },
    _interpolation_map$_expandInterpolationSpanLeft$1(start) {
      var i0, prev, char,
        source = start.file._decodedChars,
        i = start.offset - 1;
      for (; i >= 0;) {
        i0 = i - 1;
        prev = source[i];
        if (prev === 123) {
          if (source[i0] === 35) {
            i = i0;
            break;
          }
          i = i0;
        } else if (prev === 47) {
          i = i0 - 1;
          if (source[i0] === 42)
            for (; true;) {
              i0 = i - 1;
              if (source[i] !== 42) {
                i = i0;
                continue;
              }
              i = i0;
              do {
                i0 = i - 1;
                char = source[i];
                if (char === 42) {
                  i = i0;
                  continue;
                } else
                  break;
              } while (true);
              if (char === 47) {
                i = i0;
                break;
              }
              i = i0;
            }
        } else
          i = i0;
      }
      return i;
    },
    _interpolation_map$_expandInterpolationSpanRight$1(end) {
      var t1, i0, next, second, t2, char,
        source = end.file._decodedChars,
        i = end.offset;
      for (t1 = source.length; i < t1;) {
        i0 = i + 1;
        next = source[i];
        if (next === 125) {
          i = i0;
          break;
        }
        if (next === 47) {
          i = i0 + 1;
          second = source[i0];
          if (second === 47) {
            while (true) {
              i0 = i + 1;
              t2 = source[i];
              if (!!(t2 === 10 || t2 === 13 || t2 === 12))
                break;
              i = i0;
            }
            i = i0;
          } else if (second === 42)
            for (; true;) {
              i0 = i + 1;
              if (source[i] !== 42) {
                i = i0;
                continue;
              }
              i = i0;
              do {
                i0 = i + 1;
                char = source[i];
                if (char === 42) {
                  i = i0;
                  continue;
                } else
                  break;
              } while (true);
              if (char === 47) {
                i = i0;
                break;
              }
              i = i0;
            }
        } else
          i = i0;
      }
      return i;
    }
  };
  A.InterpolationMap_mapException_closure0.prototype = {
    call$1($content) {
      return type$.Expression_2._is($content);
    },
    $signature: 77
  };
  A.InterpolationMap_mapSpan_closure1.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 14
  };
  A.InterpolationMap_mapSpan_closure2.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 14
  };
  A._realCasePath_helper0.prototype = {
    call$1(path) {
      var dirname = $.$get$context().dirname$1(path);
      if (dirname === path)
        return path;
      return $._realCaseCache0.putIfAbsent$2(path, new A._realCasePath_helper_closure0(this, dirname, path));
    },
    $signature: 7
  };
  A._realCasePath_helper_closure0.prototype = {
    call$0() {
      var matches, t1, _0_0, match, t3, exception,
        realDirname = this.helper.call$1(this.dirname),
        t2 = this.path,
        basename = A.ParsedPath_ParsedPath$parse(t2, $.$get$context().style).get$basename();
      try {
        matches = J.where$1$ax(A.listDir0(realDirname), new A._realCasePath_helper__closure0(basename)).toList$0(0);
        t1 = null;
        _0_0 = matches;
        $label0$0: {
          match = null;
          if (J.get$length$asx(_0_0) === 1) {
            match = J.$index$asx(_0_0, 0);
            t3 = true;
          } else
            t3 = false;
          if (t3) {
            t1 = match;
            break $label0$0;
          }
          t1 = A.join(realDirname, basename, null);
          break $label0$0;
        }
        t1 = t1;
        return t1;
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.FileSystemException0)
          return t2;
        else
          throw exception;
      }
    },
    $signature: 22
  };
  A._realCasePath_helper__closure0.prototype = {
    call$1(realPath) {
      return A.equalsIgnoreCase0(A.ParsedPath_ParsedPath$parse(realPath, $.$get$context().style).get$basename(), this.basename);
    },
    $signature: 10
  };
  A.FileSystemException0.prototype = {
    toString$0(_) {
      var t1 = $.$get$context();
      return t1.prettyUri$1(t1.toUri$1(this.path)) + ": " + this.message;
    },
    get$message(receiver) {
      return this.message;
    }
  };
  A._readFile_closure0.prototype = {
    call$0() {
      return J.readFileSync$2$x(A.fs(), this.path, this.encoding);
    },
    $signature: 58
  };
  A.fileExists_closure0.prototype = {
    call$0() {
      var error, systemError, exception,
        t1 = this.path;
      if (!J.existsSync$1$x(A.fs(), t1))
        return false;
      try {
        t1 = J.isFile$0$x(J.statSync$1$x(A.fs(), t1));
        return t1;
      } catch (exception) {
        error = A.unwrapException(exception);
        systemError = type$.JsSystemError._as(error);
        if (J.$eq$(J.get$code$x(systemError), "ENOENT"))
          return false;
        throw exception;
      }
    },
    $signature: 1
  };
  A.dirExists_closure0.prototype = {
    call$0() {
      var error, systemError, exception,
        t1 = this.path;
      if (!J.existsSync$1$x(A.fs(), t1))
        return false;
      try {
        t1 = J.isDirectory$0$x(J.statSync$1$x(A.fs(), t1));
        return t1;
      } catch (exception) {
        error = A.unwrapException(exception);
        systemError = type$.JsSystemError._as(error);
        if (J.$eq$(J.get$code$x(systemError), "ENOENT"))
          return false;
        throw exception;
      }
    },
    $signature: 1
  };
  A.listDir_closure0.prototype = {
    call$0() {
      var t1 = this.path;
      if (!this.recursive)
        return J.map$1$1$ax(J.readdirSync$1$x(A.fs(), t1), new A.listDir__closure1(t1), type$.String).super$Iterable$where(0, new A.listDir__closure2());
      else
        return new A.listDir_closure_list0().call$1(t1);
    },
    $signature: 149
  };
  A.listDir__closure1.prototype = {
    call$1(child) {
      return A.join(this.path, A._asString(child), null);
    },
    $signature: 101
  };
  A.listDir__closure2.prototype = {
    call$1(child) {
      return !A.dirExists0(child);
    },
    $signature: 10
  };
  A.listDir_closure_list0.prototype = {
    call$1($parent) {
      return J.expand$1$1$ax(J.readdirSync$1$x(A.fs(), $parent), new A.listDir__list_closure0($parent, this), type$.String);
    },
    $signature: 174
  };
  A.listDir__list_closure0.prototype = {
    call$1(child) {
      var path = A.join(this.parent, A._asString(child), null);
      return A.dirExists0(path) ? this.list.call$1(path) : A._setArrayType([path], type$.JSArray_String);
    },
    $signature: 178
  };
  A.main_closure.prototype = {
    call$2(_, __) {
    },
    $signature: 488
  };
  A.main_closure0.prototype = {
    call$2(_, __) {
    },
    $signature: 489
  };
  A.JSToDartLogger.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
      var warn,
        t1 = this._node,
        _0_0 = t1 == null ? null : J.get$warn$x(t1);
      if (_0_0 != null) {
        warn = _0_0;
        t1 = true;
      } else {
        warn = null;
        t1 = false;
      }
      if (t1) {
        t1 = span == null ? type$.nullable_SourceSpan._as(self.undefined) : span;
        warn.call$2(message, {deprecation: deprecation, span: t1, stack: J.toString$0$(trace)});
      } else
        this._withAscii$1(new A.JSToDartLogger_warn_closure(this, message, span, trace, deprecation));
    },
    warn$1($receiver, message) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, null);
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    },
    debug$2(_, message, span) {
      var debug,
        t1 = this._node,
        _0_0 = t1 == null ? null : J.get$debug$x(t1);
      if (_0_0 != null) {
        debug = _0_0;
        t1 = true;
      } else {
        debug = null;
        t1 = false;
      }
      if (t1)
        debug.call$2(message, {span: span});
      else
        this._withAscii$1(new A.JSToDartLogger_debug_closure(this, message, span));
    },
    _withAscii$1$1(callback) {
      var t1,
        wasAscii = $._glyphs === B.C_AsciiGlyphSet;
      $._glyphs = this._ascii ? B.C_AsciiGlyphSet : B.C_UnicodeGlyphSet;
      try {
        t1 = callback.call$0();
        return t1;
      } finally {
        $._glyphs = wasAscii ? B.C_AsciiGlyphSet : B.C_UnicodeGlyphSet;
      }
    },
    _withAscii$1(callback) {
      return this._withAscii$1$1(callback, type$.dynamic);
    }
  };
  A.JSToDartLogger_warn_closure.prototype = {
    call$0() {
      var _this = this;
      _this.$this._fallback.warn$4$deprecation$span$trace(0, _this.message, _this.deprecation, _this.span, _this.trace);
    },
    $signature: 2
  };
  A.JSToDartLogger_debug_closure.prototype = {
    call$0() {
      return this.$this._fallback.debug$2(0, this.message, this.span);
    },
    $signature: 0
  };
  A.ModifiableCssKeyframeBlock0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssKeyframeBlock$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      return other instanceof A.ModifiableCssKeyframeBlock0 && B.C_ListEquality.equals$2(0, this.selector.value, other.selector.value);
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssKeyframeBlock$0(this.selector, this.span);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.KeyframeSelectorParser0.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.KeyframeSelectorParser_parse_closure0(this));
    },
    _keyframe_selector$_percentage$0() {
      var $self, _0_0,
        t1 = this.scanner,
        t2 = t1.scanChar$1(43) ? "" + A.Primitives_stringFromCharCode(43) : "",
        second = t1.peekChar$0();
      if (!(second != null && second >= 48 && second <= 57) && second !== 46)
        t1.error$1(0, "Expected number.");
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
      }
      if (t1.peekChar$0() === 46) {
        t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        while (true) {
          $self = t1.peekChar$0();
          if (!($self != null && $self >= 48 && $self <= 57))
            break;
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        }
      }
      if (this.scanIdentChar$1(101)) {
        t2 += A.Primitives_stringFromCharCode(101);
        _0_0 = t1.peekChar$0();
        if (43 === _0_0 || 45 === _0_0)
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          t1.error$1(0, "Expected digit.");
        do {
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
          $self = t1.peekChar$0();
        } while ($self != null && $self >= 48 && $self <= 57);
      }
      t1.expectChar$1(37);
      t2 += A.Primitives_stringFromCharCode(37);
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    }
  };
  A.KeyframeSelectorParser_parse_closure0.prototype = {
    call$0() {
      var selectors = A._setArrayType([], type$.JSArray_String),
        t1 = this.$this,
        t2 = t1.scanner;
      do {
        t1.whitespace$0();
        if (t1.lookingAtIdentifier$0())
          if (t1.scanIdentifier$1("from"))
            selectors.push("from");
          else {
            t1.expectIdentifier$2$name("to", '"to" or "from"');
            selectors.push("to");
          }
        else
          selectors.push(t1._keyframe_selector$_percentage$0());
        t1.whitespace$0();
      } while (t2.scanChar$1(44));
      t2.expectDone$0();
      return selectors;
    },
    $signature: 26
  };
  A.LazyFileSpan0.prototype = {
    get$span(_) {
      var t1 = this._lazy_file_span0$_span;
      return t1 == null ? this._lazy_file_span0$_span = this._lazy_file_span0$_builder.call$0() : t1;
    },
    compareTo$1(_, other) {
      return this.get$span(this).compareTo$1(0, other);
    },
    get$context(_) {
      var t1 = this.get$span(this);
      return t1.get$context(t1);
    },
    get$end(_) {
      var t1 = this.get$span(this);
      return t1.get$end(t1);
    },
    expand$1(_, other) {
      return this.get$span(this).expand$1(0, other);
    },
    get$file(_) {
      var t1 = this.get$span(this);
      return t1.get$file(t1);
    },
    highlight$1$color(color) {
      return this.get$span(this).highlight$1$color(color);
    },
    get$length(_) {
      var t1 = this.get$span(this);
      return t1.get$length(t1);
    },
    message$2$color(_, message, color) {
      return this.get$span(this).message$2$color(0, message, color);
    },
    message$1($receiver, message) {
      return this.message$2$color($receiver, message, null);
    },
    get$sourceUrl(_) {
      var t1 = this.get$span(this);
      return t1.get$sourceUrl(t1);
    },
    get$start(_) {
      var t1 = this.get$span(this);
      return t1.get$start(t1);
    },
    get$text() {
      return this.get$span(this).get$text();
    },
    $isComparable: 1,
    $isFileSpan: 1,
    $isSourceSpan: 1,
    $isSourceSpanWithContext: 1
  };
  A.render_closure.prototype = {
    call$0() {
      var error, exception;
      try {
        this.callback.call$2(null, A.renderSync(this.options));
      } catch (exception) {
        error = A.unwrapException(exception);
        this.callback.call$2(error, null);
      }
      return null;
    },
    $signature: 2
  };
  A.render_closure0.prototype = {
    call$1(result) {
      this.callback.call$2(null, result);
    },
    $signature: 490
  };
  A.render_closure1.prototype = {
    call$2(error, stackTrace) {
      var t2, t3, _null = null,
        t1 = this.callback;
      if (error instanceof A.SassException0)
        t1.call$2(A._wrapException(error, stackTrace), _null);
      else {
        t2 = J.toString$0$(error);
        t3 = A.getTrace0(error);
        t1.call$2(A._newRenderError(t2, t3 == null ? stackTrace : t3, _null, _null, _null, 3), _null);
      }
    },
    $signature: 62
  };
  A._parseFunctions_closure.prototype = {
    call$2(signature, callback) {
      var _0_0, _this = this, t1 = {},
        t2 = _this.options,
        context = {options: A._contextOptions(t2, _this.start)};
      J.set$context$x(J.get$options$x(context), context);
      t1.fiber = null;
      _0_0 = J.get$fiber$x(t2);
      if (_0_0 != null) {
        t1.fiber = _0_0;
        t2 = true;
      } else
        t2 = false;
      if (t2)
        _this.result.push(A.Callable_Callable$fromSignature(B.JSString_methods.trimLeft$0(signature), new A._parseFunctions__closure(t1, callback, context), false));
      else {
        t1 = _this.result;
        if (!_this.asynch)
          t1.push(A.Callable_Callable$fromSignature(B.JSString_methods.trimLeft$0(signature), new A._parseFunctions__closure0(callback, context), false));
        else
          t1.push(A.AsyncCallable_AsyncCallable$fromSignature(B.JSString_methods.trimLeft$0(signature), new A._parseFunctions__closure1(callback, context), false));
      }
    },
    $signature: 135
  };
  A._parseFunctions__closure.prototype = {
    call$1($arguments) {
      var result,
        t1 = this._box_0,
        currentFiber = J.get$current$x(t1.fiber),
        t2 = type$.Object;
      t2 = A.List_List$of(J.map$1$1$ax($arguments, A.value0__wrapValue$closure(), t2), true, t2);
      t2.push(A.allowInterop(new A._parseFunctions___closure2(currentFiber)));
      result = A.wrapJSExceptions(new A._parseFunctions___closure3(this.callback, this.context, t2));
      return A.unwrapValue(A._asBool($.$get$_isUndefined().call$1(result)) ? A.runZoned(new A._parseFunctions___closure4(t1), null, type$.nullable_Object) : result);
    },
    $signature: 5
  };
  A._parseFunctions___closure2.prototype = {
    call$1(result) {
      A.scheduleMicrotask(new A._parseFunctions____closure(this.currentFiber, result));
    },
    call$0() {
      return this.call$1(null);
    },
    "call*": "call$1",
    $requiredArgCount: 0,
    $defaultValues() {
      return [null];
    },
    $signature: 94
  };
  A._parseFunctions____closure.prototype = {
    call$0() {
      return J.run$1$x(this.currentFiber, this.result);
    },
    $signature: 0
  };
  A._parseFunctions___closure3.prototype = {
    call$0() {
      return J.apply$2$x(type$.JSFunction._as(this.callback), this.context, this.jsArguments);
    },
    $signature: 28
  };
  A._parseFunctions___closure4.prototype = {
    call$0() {
      return J.yield$0$x(this._box_0.fiber);
    },
    $signature: 14
  };
  A._parseFunctions__closure0.prototype = {
    call$1($arguments) {
      return A.unwrapValue(A.wrapJSExceptions(new A._parseFunctions___closure1(this.callback, this.context, $arguments)));
    },
    $signature: 5
  };
  A._parseFunctions___closure1.prototype = {
    call$0() {
      var t1 = type$.JSFunction._as(this.callback),
        t2 = J.map$1$1$ax(this.$arguments, A.value0__wrapValue$closure(), type$.Object);
      return J.apply$2$x(t1, this.context, A.List_List$of(t2, true, A._instanceType(t2)._eval$1("ListIterable.E")));
    },
    $signature: 28
  };
  A._parseFunctions__closure1.prototype = {
    call$1($arguments) {
      return this.$call$body$_parseFunctions__closure($arguments);
    },
    $call$body$_parseFunctions__closure($arguments) {
      var $async$goto = 0,
        $async$completer = A._makeAsyncAwaitCompleter(type$.Value_2),
        $async$returnValue, $async$self = this, result, t1, t2, $async$temp1;
      var $async$call$1 = A._wrapJsFunctionForAsync(function($async$errorCode, $async$result) {
        if ($async$errorCode === 1)
          return A._asyncRethrow($async$result, $async$completer);
        while (true)
          switch ($async$goto) {
            case 0:
              // Function start
              t1 = new A._Future($.Zone__current, type$._Future_nullable_Object);
              t2 = type$.Object;
              t2 = A.List_List$of(J.map$1$1$ax($arguments, A.value0__wrapValue$closure(), t2), true, t2);
              t2.push(A.allowInterop(new A._parseFunctions___closure(new A._AsyncCompleter(t1, type$._AsyncCompleter_nullable_Object))));
              result = A.wrapJSExceptions(new A._parseFunctions___closure0($async$self.callback, $async$self.context, t2));
              $async$temp1 = A;
              $async$goto = A._asBool($.$get$_isUndefined().call$1(result)) ? 3 : 5;
              break;
            case 3:
              // then
              $async$goto = 6;
              return A._asyncAwait(t1, $async$call$1);
            case 6:
              // returning from await.
              // goto join
              $async$goto = 4;
              break;
            case 5:
              // else
              $async$result = result;
            case 4:
              // join
              $async$returnValue = $async$temp1.unwrapValue($async$result);
              // goto return
              $async$goto = 1;
              break;
            case 1:
              // return
              return A._asyncReturn($async$returnValue, $async$completer);
          }
      });
      return A._asyncStartSync($async$call$1, $async$completer);
    },
    $signature: 99
  };
  A._parseFunctions___closure.prototype = {
    call$1(result) {
      return this.completer.complete$1(result);
    },
    call$0() {
      return this.call$1(null);
    },
    "call*": "call$1",
    $requiredArgCount: 0,
    $defaultValues() {
      return [null];
    },
    $signature: 160
  };
  A._parseFunctions___closure0.prototype = {
    call$0() {
      return J.apply$2$x(type$.JSFunction._as(this.callback), this.context, this.jsArguments);
    },
    $signature: 28
  };
  A._parseImporter_closure.prototype = {
    call$1(importer) {
      return type$.JSFunction._as(A.allowInteropCaptureThis(new A._parseImporter__closure(this._box_0, importer)));
    },
    $signature: 491
  };
  A._parseImporter__closure.prototype = {
    call$4(thisArg, url, previous, _) {
      var t1 = this._box_0,
        result = J.apply$2$x(this.importer, thisArg, A._setArrayType([url, previous, A.allowInterop(new A._parseImporter___closure(J.get$current$x(t1.fiber)))], type$.JSArray_Object));
      if (A._asBool($.$get$_isUndefined().call$1(result)))
        return A.runZoned(new A._parseImporter___closure0(t1), null, type$.Object);
      return result;
    },
    call$3(thisArg, url, previous) {
      return this.call$4(thisArg, url, previous, null);
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [null];
    },
    $signature: 492
  };
  A._parseImporter___closure.prototype = {
    call$1(result) {
      A.scheduleMicrotask(new A._parseImporter____closure(this.currentFiber, result));
    },
    $signature: 493
  };
  A._parseImporter____closure.prototype = {
    call$0() {
      return J.run$1$x(this.currentFiber, this.result);
    },
    $signature: 0
  };
  A._parseImporter___closure0.prototype = {
    call$0() {
      return J.yield$0$x(this._box_0.fiber);
    },
    $signature: 14
  };
  A.LimitedMapView0.prototype = {
    get$keys(_) {
      return this._limited_map_view0$_keys;
    },
    get$length(_) {
      return this._limited_map_view0$_keys._collection$_length;
    },
    get$isEmpty(_) {
      return this._limited_map_view0$_keys._collection$_length === 0;
    },
    get$isNotEmpty(_) {
      return this._limited_map_view0$_keys._collection$_length !== 0;
    },
    $index(_, key) {
      return this._limited_map_view0$_keys.contains$1(0, key) ? this._limited_map_view0$_map.$index(0, key) : null;
    },
    containsKey$1(key) {
      return this._limited_map_view0$_keys.contains$1(0, key);
    },
    remove$1(_, key) {
      return this._limited_map_view0$_keys.contains$1(0, key) ? this._limited_map_view0$_map.remove$1(0, key) : null;
    }
  };
  A.ListExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitListExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, t3, t4, t5, _this = this,
        t1 = _this.hasBrackets;
      if (t1)
        t2 = "" + A.Primitives_stringFromCharCode(91);
      else {
        t2 = _this.contents.length;
        if (t2 !== 0)
          t2 = t2 === 1 && _this.separator === B.ListSeparator_rXA0;
        else
          t2 = true;
        t2 = t2 ? "" + A.Primitives_stringFromCharCode(40) : "";
      }
      t3 = _this.contents;
      t4 = _this.separator === B.ListSeparator_rXA0;
      t5 = t4 ? ", " : " ";
      t5 = t2 + new A.MappedListIterable(t3, new A.ListExpression_toString_closure0(_this), A._arrayInstanceType(t3)._eval$1("MappedListIterable<1,String>")).join$1(0, t5);
      if (t1)
        t1 = t5 + A.Primitives_stringFromCharCode(93);
      else {
        t1 = t3.length;
        if (t1 === 0)
          t1 = t5 + A.Primitives_stringFromCharCode(41);
        else
          t1 = t1 === 1 && t4 ? t5 + ",)" : t5;
      }
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    _list3$_elementNeedsParens$1(expression) {
      var childSeparator, t1,
        _0_13 = A._InitializedCell$(new A.ListExpression__elementNeedsParens_closure0(expression));
      $label0$0: {
        if (expression instanceof A.ListExpression0)
          if (expression.contents.length >= 2)
            if (!expression.hasBrackets) {
              childSeparator = expression.separator;
              t1 = true;
            } else {
              childSeparator = null;
              t1 = false;
            }
          else {
            childSeparator = null;
            t1 = false;
          }
        else {
          childSeparator = null;
          t1 = false;
        }
        if (t1) {
          t1 = this.separator === B.ListSeparator_rXA0 ? childSeparator === B.ListSeparator_rXA0 : childSeparator !== B.ListSeparator_undecided_null_undecided0;
          break $label0$0;
        }
        if (expression instanceof A.UnaryOperationExpression0)
          t1 = B.UnaryOperator_gg40 === _0_13._readFinal$0() || B.UnaryOperator_TLI0 === _0_13._readFinal$0();
        else
          t1 = false;
        if (t1) {
          t1 = this.separator === B.ListSeparator_EVt0;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ListExpression_toString_closure0.prototype = {
    call$1(element) {
      return this.$this._list3$_elementNeedsParens$1(element) ? "(" + element.toString$0(0) + ")" : element.toString$0(0);
    },
    $signature: 118
  };
  A.ListExpression__elementNeedsParens_closure0.prototype = {
    call$0() {
      return type$.UnaryOperationExpression_2._as(this._0_0).operator;
    },
    $signature: 120
  };
  A._length_closure2.prototype = {
    call$1($arguments) {
      return A.SassNumber_SassNumber0(J.$index$asx($arguments, 0).get$asList().length, null);
    },
    $signature: 12
  };
  A._nth_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        list = t1.$index($arguments, 0),
        index = t1.$index($arguments, 1);
      return list.get$asList()[list.sassIndexToListIndex$2(index, "n")];
    },
    $signature: 5
  };
  A._setNth_closure0.prototype = {
    call$1($arguments) {
      var newList,
        t1 = J.getInterceptor$asx($arguments),
        list = t1.$index($arguments, 0),
        index = t1.$index($arguments, 1),
        value = t1.$index($arguments, 2);
      t1 = list.get$asList();
      newList = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      newList[list.sassIndexToListIndex$2(index, "n")] = value;
      return list.withListContents$1(newList);
    },
    $signature: 27
  };
  A._join_closure0.prototype = {
    call$1($arguments) {
      var _0_0, _0_1, _0_3, _0_4, separator, bracketed, t2,
        t1 = J.getInterceptor$asx($arguments),
        list1 = t1.$index($arguments, 0),
        list2 = t1.$index($arguments, 1),
        separatorParam = t1.$index($arguments, 2).assertString$1("separator"),
        bracketedParam = t1.$index($arguments, 3),
        _1_0 = separatorParam._string0$_text;
      $label1$1: {
        if ("auto" === _1_0) {
          _0_0 = new A._Record_2(list1.get$separator(list1), list2.get$separator(list2));
          _0_1 = A._InitializedCell$(new A._join__closure2(_0_0));
          _0_3 = A._InitializedCell$(new A._join__closure3(_0_1));
          _0_4 = A._InitializedCell$(new A._join__closure4(_0_0));
          $label0$0: {
            if (_0_3._readFinal$0() && B.ListSeparator_undecided_null_undecided0 === _0_4._readFinal$0()) {
              t1 = B.ListSeparator_EVt0;
              break $label0$0;
            }
            if (_0_3._readFinal$0()) {
              separator = _0_4._readFinal$0();
              t1 = true;
            } else {
              separator = null;
              t1 = false;
            }
            if (!t1)
              separator = _0_1._readFinal$0();
            t1 = separator;
            break $label0$0;
          }
          break $label1$1;
        }
        if ("space" === _1_0) {
          t1 = B.ListSeparator_EVt0;
          break $label1$1;
        }
        if ("comma" === _1_0) {
          t1 = B.ListSeparator_rXA0;
          break $label1$1;
        }
        if ("slash" === _1_0) {
          t1 = B.ListSeparator_zg90;
          break $label1$1;
        }
        t1 = A.throwExpression(A.SassScriptException$0(string$.x24separ, null));
      }
      bracketed = bracketedParam instanceof A.SassString0 && bracketedParam._string0$_text === "auto" ? list1.get$hasBrackets() : bracketedParam.get$isTruthy();
      t2 = A.List_List$of(list1.get$asList(), true, type$.Value_2);
      B.JSArray_methods.addAll$1(t2, list2.get$asList());
      return A.SassList$0(t2, t1, bracketed);
    },
    $signature: 27
  };
  A._join__closure2.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 261
  };
  A._join__closure3.prototype = {
    call$0() {
      return B.ListSeparator_undecided_null_undecided0 === this._0_1._readFinal$0();
    },
    $signature: 1
  };
  A._join__closure4.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 261
  };
  A._append_closure2.prototype = {
    call$1($arguments) {
      var t2,
        t1 = J.getInterceptor$asx($arguments),
        list = t1.$index($arguments, 0),
        value = t1.$index($arguments, 1),
        _0_0 = t1.$index($arguments, 2).assertString$1("separator")._string0$_text;
      $label0$0: {
        if ("auto" === _0_0) {
          t1 = list.get$separator(list) === B.ListSeparator_undecided_null_undecided0 ? B.ListSeparator_EVt0 : list.get$separator(list);
          break $label0$0;
        }
        if ("space" === _0_0) {
          t1 = B.ListSeparator_EVt0;
          break $label0$0;
        }
        if ("comma" === _0_0) {
          t1 = B.ListSeparator_rXA0;
          break $label0$0;
        }
        if ("slash" === _0_0) {
          t1 = B.ListSeparator_zg90;
          break $label0$0;
        }
        t1 = A.throwExpression(A.SassScriptException$0(string$.x24separ, null));
      }
      t2 = A.List_List$of(list.get$asList(), true, type$.Value_2);
      t2.push(value);
      return list.withListContents$2$separator(t2, t1);
    },
    $signature: 27
  };
  A._zip_closure0.prototype = {
    call$1($arguments) {
      var results, result, _box_0 = {},
        t1 = J.$index$asx($arguments, 0).get$asList(),
        t2 = A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,List<Value0>>"),
        lists = A.List_List$of(new A.MappedListIterable(t1, new A._zip__closure2(), t2), true, t2._eval$1("ListIterable.E"));
      if (lists.length === 0)
        return B.SassList_Sof1;
      _box_0.i = 0;
      results = A._setArrayType([], type$.JSArray_SassList_2);
      for (t1 = A._arrayInstanceType(lists)._eval$1("MappedListIterable<1,Value0>"), t2 = type$.Value_2; B.JSArray_methods.every$1(lists, new A._zip__closure3(_box_0));) {
        result = A.List_List$from(new A.MappedListIterable(lists, new A._zip__closure4(_box_0), t1), false, t2);
        result.fixed$length = Array;
        result.immutable$list = Array;
        results.push(new A.SassList0(result, B.ListSeparator_EVt0, false));
        ++_box_0.i;
      }
      return A.SassList$0(results, B.ListSeparator_rXA0, false);
    },
    $signature: 27
  };
  A._zip__closure2.prototype = {
    call$1(list) {
      return list.get$asList();
    },
    $signature: 496
  };
  A._zip__closure3.prototype = {
    call$1(list) {
      return this._box_0.i !== J.get$length$asx(list);
    },
    $signature: 497
  };
  A._zip__closure4.prototype = {
    call$1(list) {
      return J.$index$asx(list, this._box_0.i);
    },
    $signature: 5
  };
  A._index_closure2.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        index = B.JSArray_methods.indexOf$1(t1.$index($arguments, 0).get$asList(), t1.$index($arguments, 1));
      return index === -1 ? B.C__SassNull0 : A.SassNumber_SassNumber0(index + 1, null);
    },
    $signature: 5
  };
  A._separator_closure0.prototype = {
    call$1($arguments) {
      var t1,
        _0_0 = J.get$separator$x(J.$index$asx($arguments, 0));
      $label0$0: {
        if (B.ListSeparator_rXA0 === _0_0) {
          t1 = new A.SassString0("comma", false);
          break $label0$0;
        }
        if (B.ListSeparator_zg90 === _0_0) {
          t1 = new A.SassString0("slash", false);
          break $label0$0;
        }
        t1 = new A.SassString0("space", false);
        break $label0$0;
      }
      return t1;
    },
    $signature: 17
  };
  A._isBracketed_closure0.prototype = {
    call$1($arguments) {
      return J.$index$asx($arguments, 0).get$hasBrackets() ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._slash_closure0.prototype = {
    call$1($arguments) {
      var list = J.$index$asx($arguments, 0).get$asList();
      if (list.length < 2)
        throw A.wrapException(A.SassScriptException$0("At least two elements are required.", null));
      return A.SassList$0(list, B.ListSeparator_zg90, false);
    },
    $signature: 27
  };
  A.SelectorList0.prototype = {
    get$asSassList() {
      var t1 = this.components;
      return A.SassList$0(new A.MappedListIterable(t1, new A.SelectorList_asSassList_closure0(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value0>")), B.ListSeparator_rXA0, false);
    },
    accept$1$1(visitor) {
      return visitor.visitSelectorList$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unify$1(other) {
      var t3, t4, t5, t6, _i, complex1, _i0, t7,
        t1 = type$.JSArray_ComplexSelector_2,
        t2 = A._setArrayType([], t1);
      for (t3 = this.components, t4 = t3.length, t5 = other.components, t6 = t5.length, _i = 0; _i < t4; ++_i) {
        complex1 = t3[_i];
        for (_i0 = 0; _i0 < t6; ++_i0) {
          t7 = A.unifyComplex0(A._setArrayType([complex1, t5[_i0]], t1), complex1.span);
          if (t7 != null)
            B.JSArray_methods.addAll$1(t2, t7);
        }
      }
      return t2.length === 0 ? null : A.SelectorList$0(t2, this.span);
    },
    resolveParentSelectors$2$implicitParent($parent, implicitParent) {
      var parentSelector, t1, _this = this;
      if ($parent == null) {
        parentSelector = B.C__ParentSelectorVisitor0.visitSelectorList$1(_this);
        if (parentSelector == null)
          return _this;
        throw A.wrapException(A.SassException$0(string$.Top_le, parentSelector.span, null));
      }
      t1 = _this.components;
      return A.SelectorList$0(A.flattenVertically0(new A.MappedListIterable(t1, new A.SelectorList_resolveParentSelectors_closure0(_this, implicitParent, $parent), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Iterable<ComplexSelector0>>")), type$.ComplexSelector_2), _this.span);
    },
    resolveParentSelectors$1($parent) {
      return this.resolveParentSelectors$2$implicitParent($parent, true);
    },
    _list2$_resolveParentSelectorsCompound$2(component, $parent) {
      var resolvedSimples, parentSelector, error, stackTrace, t2, resolvedSimples0, exception,
        t1 = component.selector,
        simples = t1.components,
        containsSelectorPseudo = J.any$1$ax(simples, new A.SelectorList__resolveParentSelectorsCompound_closure2());
      if (!containsSelectorPseudo && !(J.get$first$ax(simples) instanceof A.ParentSelector0))
        return null;
      if (containsSelectorPseudo) {
        t2 = simples;
        resolvedSimples0 = new A.MappedListIterable(t2, new A.SelectorList__resolveParentSelectorsCompound_closure3($parent), A.instanceType(t2)._eval$1("MappedListIterable<1,SimpleSelector0>"));
      } else
        resolvedSimples0 = simples;
      resolvedSimples = resolvedSimples0;
      parentSelector = J.get$first$ax(simples);
      try {
        if (!(parentSelector instanceof A.ParentSelector0)) {
          t2 = component.span;
          t2 = A._setArrayType([A.ComplexSelector$0(B.List_empty14, A._setArrayType([new A.ComplexSelectorComponent0(A.CompoundSelector$0(resolvedSimples, t1.span), A.List_List$unmodifiable(component.combinators, type$.CssValue_Combinator_2), t2)], type$.JSArray_ComplexSelectorComponent_2), t2, false)], type$.JSArray_ComplexSelector_2);
          return t2;
        } else if (J.get$length$asx(simples) === 1 && parentSelector.suffix == null) {
          t1 = $parent.withAdditionalCombinators$1(component.combinators);
          return t1.components;
        }
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace0(error.withAdditionalSpan$2(parentSelector.span, "parent selector"), error, stackTrace);
        } else
          throw exception;
      }
      t1 = $parent.components;
      return new A.MappedListIterable(t1, new A.SelectorList__resolveParentSelectorsCompound_closure4(parentSelector, resolvedSimples, component), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector0>"));
    },
    isSuperselector$1(other) {
      return A.listIsSuperselector0(this.components, other.components);
    },
    withAdditionalCombinators$1(combinators) {
      var t1;
      if (combinators.length === 0)
        t1 = this;
      else {
        t1 = this.components;
        t1 = A.SelectorList$0(new A.MappedListIterable(t1, new A.SelectorList_withAdditionalCombinators_closure0(combinators), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector0>")), this.span);
      }
      return t1;
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this.components);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SelectorList0 && B.C_ListEquality.equals$2(0, this.components, other.components);
    }
  };
  A.SelectorList_asSassList_closure0.prototype = {
    call$1(complex) {
      var t3, t4, _i, component, t5, visitor, t6, t7, _i0,
        t1 = type$.JSArray_Value_2,
        t2 = A._setArrayType([], t1);
      for (t3 = complex.leadingCombinators, t4 = t3.length, _i = 0; _i < t4; ++_i)
        t2.push(new A.SassString0(J.toString$0$(t3[_i].value), false));
      for (t3 = complex.components, t4 = t3.length, _i = 0; _i < t4; ++_i) {
        component = t3[_i];
        t5 = component.selector;
        visitor = A._SerializeVisitor$0(null, true, null, true, false, null, true);
        t5.accept$1(visitor);
        t5 = A._setArrayType([new A.SassString0(visitor._serialize0$_buffer.toString$0(0), false)], t1);
        for (t6 = component.combinators, t7 = t6.length, _i0 = 0; _i0 < t7; ++_i0)
          t5.push(new A.SassString0(J.toString$0$(t6[_i0].value), false));
        B.JSArray_methods.addAll$1(t2, t5);
      }
      return A.SassList$0(t2, B.ListSeparator_EVt0, false);
    },
    $signature: 498
  };
  A.SelectorList_resolveParentSelectors_closure0.prototype = {
    call$1(complex) {
      var t1, newComplexes, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, _i, component, resolved, i, t12, t13, t14, _i0, newComplex, t15, _this = this;
      if (complex.accept$1(B.C__ParentSelectorVisitor0) == null) {
        if (!_this.implicitParent)
          return A._setArrayType([complex], type$.JSArray_ComplexSelector_2);
        t1 = _this.parent.components;
        return new A.MappedListIterable(t1, new A.SelectorList_resolveParentSelectors__closure1(complex), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector0>"));
      }
      t1 = type$.JSArray_ComplexSelector_2;
      newComplexes = A._setArrayType([], t1);
      for (t2 = complex.components, t3 = t2.length, t4 = _this.$this, t5 = _this.parent, t6 = type$.ComplexSelector_2, t7 = complex.leadingCombinators, t8 = t7.length === 0, t9 = complex.span, t10 = type$.ComplexSelectorComponent_2, t11 = type$.JSArray_ComplexSelectorComponent_2, _i = 0; _i < t3; ++_i) {
        component = t2[_i];
        resolved = t4._list2$_resolveParentSelectorsCompound$2(component, t5);
        if (resolved == null)
          if (newComplexes.length === 0)
            newComplexes.push(A.ComplexSelector$0(t7, A._setArrayType([component], t11), t9, false));
          else
            for (i = 0; i < newComplexes.length; ++i) {
              t12 = newComplexes[i];
              t13 = t12.leadingCombinators;
              t14 = A.List_List$of(t12.components, true, t10);
              t14.push(component);
              newComplexes[i] = A.ComplexSelector$0(t13, t14, t9, t12.lineBreak || false);
            }
        else if (newComplexes.length === 0)
          B.JSArray_methods.addAll$1(newComplexes, t8 ? resolved : J.map$1$1$ax(resolved, new A.SelectorList_resolveParentSelectors__closure2(complex), t6));
        else {
          t12 = A._setArrayType([], t1);
          for (t13 = newComplexes.length, t14 = J.getInterceptor$ax(resolved), _i0 = 0; _i0 < newComplexes.length; newComplexes.length === t13 || (0, A.throwConcurrentModificationError)(newComplexes), ++_i0) {
            newComplex = newComplexes[_i0];
            for (t15 = t14.get$iterator(resolved); t15.moveNext$0();)
              t12.push(newComplex.concatenate$2(t15.get$current(t15), newComplex.span));
          }
          newComplexes = t12;
        }
      }
      return newComplexes;
    },
    $signature: 499
  };
  A.SelectorList_resolveParentSelectors__closure1.prototype = {
    call$1(parentComplex) {
      var t1 = this.complex;
      return parentComplex.concatenate$2(t1, t1.span);
    },
    $signature: 61
  };
  A.SelectorList_resolveParentSelectors__closure2.prototype = {
    call$1(resolvedComplex) {
      var t1 = resolvedComplex.leadingCombinators,
        t2 = this.complex,
        t3 = t2.leadingCombinators;
      if (t1.length === 0)
        t1 = t3;
      else {
        t3 = A.List_List$of(t3, true, type$.CssValue_Combinator_2);
        B.JSArray_methods.addAll$1(t3, t1);
        t1 = t3;
      }
      return A.ComplexSelector$0(t1, resolvedComplex.components, t2.span, resolvedComplex.lineBreak);
    },
    $signature: 61
  };
  A.SelectorList__resolveParentSelectorsCompound_closure2.prototype = {
    call$1(simple) {
      var selector;
      if (!(simple instanceof A.PseudoSelector0))
        return false;
      selector = simple.selector;
      return selector != null && selector.accept$1(B.C__ParentSelectorVisitor0) != null;
    },
    $signature: 15
  };
  A.SelectorList__resolveParentSelectorsCompound_closure3.prototype = {
    call$1(simple) {
      var selector, t1,
        _0_2 = A._InitializedCell$(new A.SelectorList__resolveParentSelectorsCompound__closure0(simple));
      $label0$0: {
        if (simple instanceof A.PseudoSelector0) {
          if (_0_2._readFinal$0() != null) {
            selector = _0_2._readFinal$0();
            t1 = true;
          } else {
            selector = null;
            t1 = false;
          }
          t1 = t1 && selector.accept$1(B.C__ParentSelectorVisitor0) != null;
        } else {
          selector = null;
          t1 = false;
        }
        if (t1) {
          t1 = simple.withSelector$1(selector.resolveParentSelectors$2$implicitParent(this.parent, false));
          break $label0$0;
        }
        t1 = simple;
        break $label0$0;
      }
      return t1;
    },
    $signature: 500
  };
  A.SelectorList__resolveParentSelectorsCompound__closure0.prototype = {
    call$0() {
      return type$.PseudoSelector_2._as(this._0_0).selector;
    },
    $signature: 78
  };
  A.SelectorList__resolveParentSelectorsCompound_closure4.prototype = {
    call$1(complex) {
      var lastComponent, suffix, lastSimples, t1, t2, last, t3, error, stackTrace, t4, t5, t6, t7, exception, _this = this;
      try {
        t4 = complex.components;
        lastComponent = B.JSArray_methods.get$last(t4);
        if (lastComponent.combinators.length !== 0) {
          t1 = A.MultiSpanSassException$0('Selector "' + complex.toString$0(0) + string$.x22x20can_, A.SpanExtensions_trimRight0(lastComponent.span), "outer selector", A.LinkedHashMap_LinkedHashMap$_literal([_this.parentSelector.span, "parent selector"], type$.FileSpan, type$.String), null);
          throw A.wrapException(t1);
        }
        suffix = _this.parentSelector.suffix;
        lastSimples = lastComponent.selector.components;
        t5 = type$.SimpleSelector_2;
        t6 = _this.resolvedSimples;
        t7 = J.getInterceptor$ax(t6);
        if (suffix == null) {
          t1 = A.List_List$of(lastSimples, true, t5);
          J.addAll$1$ax(t1, t7.skip$1(t6, 1));
          t1 = t1;
        } else {
          t2 = A.List_List$of(A.IterableExtension_get_exceptLast0(lastSimples), true, t5);
          J.add$1$ax(t2, J.get$last$ax(lastSimples).addSuffix$1(suffix));
          J.addAll$1$ax(t2, t7.skip$1(t6, 1));
          t1 = t2;
        }
        t2 = _this.component;
        last = A.CompoundSelector$0(t1, t2.selector.span);
        t3 = A.List_List$of(A.IterableExtension_get_exceptLast0(t4), true, type$.ComplexSelectorComponent_2);
        t4 = t2.span;
        J.add$1$ax(t3, new A.ComplexSelectorComponent0(last, A.List_List$unmodifiable(t2.combinators, type$.CssValue_Combinator_2), t4));
        t4 = A.ComplexSelector$0(complex.leadingCombinators, t3, t4, complex.lineBreak);
        return t4;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (t1 instanceof A.SassException0) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          A.throwWithTrace0(error.withAdditionalSpan$2(_this.parentSelector.span, "parent selector"), error, stackTrace);
        } else
          throw exception;
      }
    },
    $signature: 61
  };
  A.SelectorList_withAdditionalCombinators_closure0.prototype = {
    call$1(complex) {
      return complex.withAdditionalCombinators$1(this.combinators);
    },
    $signature: 61
  };
  A._ParentSelectorVisitor0.prototype = {
    visitParentSelector$1(selector) {
      return selector;
    }
  };
  A.__ParentSelectorVisitor_Object_SelectorSearchVisitor0.prototype = {};
  A.listClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassList", new A.listClass__closure()));
      J.get$$prototype$x(jsClass).get = A.allowInteropCaptureThisNamed("get", new A.listClass__closure0());
      A.JSClassExtension_injectSuperclass(t1._as(B.SassList_nj9.constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.listClass__closure.prototype = {
    call$3($self, contentsOrOptions, options) {
      var contents, t1, t2;
      if (self.immutable.isList(contentsOrOptions))
        contents = J.cast$1$0$ax(J.toArray$0$x(type$.ImmutableList._as(contentsOrOptions)), type$.Value_2);
      else if (type$.List_dynamic._is(contentsOrOptions))
        contents = J.cast$1$0$ax(contentsOrOptions, type$.Value_2);
      else {
        contents = A._setArrayType([], type$.JSArray_Value_2);
        type$.nullable__ConstructorOptions._as(contentsOrOptions);
        options = contentsOrOptions;
      }
      t1 = options == null;
      if (!t1) {
        t2 = J.get$separator$x(options);
        t2 = A._asBool($.$get$_isUndefined().call$1(t2));
      } else
        t2 = true;
      t2 = t2 ? B.ListSeparator_rXA0 : A.jsToDartSeparator(J.get$separator$x(options));
      t1 = t1 ? null : J.get$brackets$x(options);
      return A.SassList$0(contents, t2, t1 == null ? false : t1);
    },
    call$1($self) {
      return this.call$3($self, null, null);
    },
    call$2($self, contentsOrOptions) {
      return this.call$3($self, contentsOrOptions, null);
    },
    "call*": "call$3",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null, null];
    },
    $signature: 501
  };
  A.listClass__closure0.prototype = {
    call$2($self, indexFloat) {
      var index = B.JSNumber_methods.floor$0(indexFloat);
      if (index < 0)
        index = $self.get$asList().length + index;
      if (index < 0 || index >= $self.get$asList().length)
        return self.undefined;
      return $self.get$asList()[index];
    },
    $signature: 262
  };
  A._ConstructorOptions.prototype = {};
  A._NodeSassList.prototype = {};
  A.legacyListClass_closure.prototype = {
    call$4(thisArg, $length, commaSeparator, dartValue) {
      var t1;
      if (dartValue == null) {
        $length.toString;
        t1 = A.Iterable_Iterable$generate($length, new A.legacyListClass__closure(), type$.Value_2);
        t1 = A.SassList$0(t1, commaSeparator !== false ? B.ListSeparator_rXA0 : B.ListSeparator_EVt0, false);
      } else
        t1 = dartValue;
      J.set$dartValue$x(thisArg, t1);
    },
    call$2(thisArg, $length) {
      return this.call$4(thisArg, $length, null, null);
    },
    call$3(thisArg, $length, commaSeparator) {
      return this.call$4(thisArg, $length, commaSeparator, null);
    },
    "call*": "call$4",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null, null];
    },
    $signature: 503
  };
  A.legacyListClass__closure.prototype = {
    call$1(_) {
      return B.C__SassNull0;
    },
    $signature: 263
  };
  A.legacyListClass_closure0.prototype = {
    call$2(thisArg, index) {
      return A.wrapValue(J.get$dartValue$x(thisArg)._list1$_contents[index]);
    },
    $signature: 505
  };
  A.legacyListClass_closure1.prototype = {
    call$3(thisArg, index, value) {
      var t1 = J.getInterceptor$x(thisArg),
        t2 = t1.get$dartValue(thisArg)._list1$_contents,
        mutable = A._setArrayType(t2.slice(0), A._arrayInstanceType(t2));
      mutable[index] = A.unwrapValue(value);
      t1.set$dartValue(thisArg, t1.get$dartValue(thisArg).withListContents$1(mutable));
    },
    "call*": "call$3",
    $requiredArgCount: 3,
    $signature: 506
  };
  A.legacyListClass_closure2.prototype = {
    call$1(thisArg) {
      return J.get$dartValue$x(thisArg)._list1$_separator === B.ListSeparator_rXA0;
    },
    $signature: 507
  };
  A.legacyListClass_closure3.prototype = {
    call$2(thisArg, isComma) {
      var t1 = J.getInterceptor$x(thisArg),
        t2 = t1.get$dartValue(thisArg)._list1$_contents,
        t3 = isComma ? B.ListSeparator_rXA0 : B.ListSeparator_EVt0;
      t1.set$dartValue(thisArg, A.SassList$0(t2, t3, t1.get$dartValue(thisArg)._list1$_hasBrackets));
    },
    $signature: 508
  };
  A.legacyListClass_closure4.prototype = {
    call$1(thisArg) {
      return J.get$dartValue$x(thisArg)._list1$_contents.length;
    },
    $signature: 509
  };
  A.SassList0.prototype = {
    get$separator(_) {
      return this._list1$_separator;
    },
    get$hasBrackets() {
      return this._list1$_hasBrackets;
    },
    get$isBlank() {
      return !this._list1$_hasBrackets && B.JSArray_methods.every$1(this._list1$_contents, new A.SassList_isBlank_closure0());
    },
    get$asList() {
      return this._list1$_contents;
    },
    get$lengthAsList() {
      return this._list1$_contents.length;
    },
    SassList$3$brackets0(contents, _separator, brackets) {
      if (this._list1$_separator === B.ListSeparator_undecided_null_undecided0 && this._list1$_contents.length > 1)
        throw A.wrapException(A.ArgumentError$(string$.A_list, null));
    },
    accept$1$1(visitor) {
      return visitor.visitList$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertMap$1($name) {
      return this._list1$_contents.length === 0 ? B.SassMap_Map_empty0 : this.super$Value$assertMap0($name);
    },
    tryMap$0() {
      return this._list1$_contents.length === 0 ? B.SassMap_Map_empty0 : null;
    },
    $eq(_, other) {
      var t1, _this = this;
      if (other == null)
        return false;
      if (!(other instanceof A.SassList0 && other._list1$_separator === _this._list1$_separator && other._list1$_hasBrackets === _this._list1$_hasBrackets && B.C_ListEquality.equals$2(0, other._list1$_contents, _this._list1$_contents)))
        t1 = _this._list1$_contents.length === 0 && other instanceof A.SassMap0 && other.get$asList().length === 0;
      else
        t1 = true;
      return t1;
    },
    get$hashCode(_) {
      return B.C_ListEquality0.hash$1(this._list1$_contents);
    }
  };
  A.SassList_isBlank_closure0.prototype = {
    call$1(element) {
      return element.get$isBlank();
    },
    $signature: 54
  };
  A.ListSeparator0.prototype = {
    _enumToString$0() {
      return "ListSeparator." + this._name;
    },
    toString$0(_) {
      return this._list1$_name;
    }
  };
  A.JSLogger.prototype = {};
  A.WarnOptions.prototype = {};
  A.DebugOptions.prototype = {};
  A._QuietLogger0.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    }
  };
  A.LoudComment0.prototype = {
    get$span(_) {
      return this.text.span;
    },
    accept$1$1(visitor) {
      return visitor.visitLoudComment$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.text.toString$0(0);
    },
    $isAstNode0: 1,
    $isStatement0: 1
  };
  A.MapExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitMapExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t2, t3, _i, t4, key, value,
        t1 = A._setArrayType([], type$.JSArray_String);
      for (t2 = this.pairs, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        t4 = t2[_i];
        key = t4._0;
        value = t4._1;
        t1.push(key.toString$0(0) + ": " + value.toString$0(0));
      }
      return "(" + B.JSArray_methods.join$1(t1, ", ") + ")";
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._get_closure0.prototype = {
    call$1($arguments) {
      var value,
        t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value_2);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      for (t1 = A.IterableExtension_get_exceptLast0(t2), t1 = t1.get$iterator(t1); t1.moveNext$0(); map = value) {
        value = map._map0$_contents.$index(0, t1.get$current(t1));
        if (!(value instanceof A.SassMap0))
          return B.C__SassNull0;
      }
      t1 = map._map0$_contents.$index(0, B.JSArray_methods.get$last(t2));
      return t1 == null ? B.C__SassNull0 : t1;
    },
    $signature: 5
  };
  A._set_closure1.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A._modify0(t1.$index($arguments, 0).assertMap$1("map"), A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value_2), new A._set__closure4($arguments), true);
    },
    $signature: 5
  };
  A._set__closure4.prototype = {
    call$1(_) {
      return J.$index$asx(this.$arguments, 2);
    },
    $signature: 45
  };
  A._set_closure2.prototype = {
    call$1($arguments) {
      var keys, value, t1 = {},
        t2 = J.getInterceptor$asx($arguments),
        map = t2.$index($arguments, 0).assertMap$1("map"),
        _0_0 = t2.$index($arguments, 1).get$asList(),
        _0_1 = A._InitializedCell$(new A._set__closure2(_0_0));
      if (_0_1._readFinal$0() <= 0)
        throw A.wrapException(A.SassScriptException$0("Expected $args to contain a key.", null));
      if (J.$eq$(_0_1._readFinal$0(), 1))
        throw A.wrapException(A.SassScriptException$0("Expected $args to contain a value.", null));
      keys = t1.value = null;
      if (_0_1._readFinal$0() >= 1) {
        keys = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
        value = _0_0[_0_1._readFinal$0() - 1];
        t1.value = value;
        t2 = true;
      } else
        t2 = false;
      if (t2)
        return A._modify0(map, keys, new A._set__closure3(t1), true);
      throw A.wrapException("[BUG] Unreachable code");
    },
    $signature: 5
  };
  A._set__closure2.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A._set__closure3.prototype = {
    call$1(_) {
      return this._box_0.value;
    },
    $signature: 45
  };
  A._merge_closure1.prototype = {
    call$1($arguments) {
      var t2,
        t1 = J.getInterceptor$asx($arguments),
        map1 = t1.$index($arguments, 0).assertMap$1("map1"),
        map2 = t1.$index($arguments, 1).assertMap$1("map2");
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$of(map1._map0$_contents, t1, t1);
      t2.addAll$1(0, map2._map0$_contents);
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 38
  };
  A._merge_closure2.prototype = {
    call$1($arguments) {
      var keys, last, _null = null,
        t1 = J.getInterceptor$asx($arguments),
        map1 = t1.$index($arguments, 0).assertMap$1("map1"),
        _0_0 = t1.$index($arguments, 1).get$asList(),
        _0_1 = A._InitializedCell$(new A._merge__closure1(_0_0));
      if (_0_1._readFinal$0() <= 0)
        throw A.wrapException(A.SassScriptException$0("Expected $args to contain a key.", _null));
      if (J.$eq$(_0_1._readFinal$0(), 1))
        throw A.wrapException(A.SassScriptException$0("Expected $args to contain a map.", _null));
      if (_0_1._readFinal$0() >= 1) {
        keys = B.JSArray_methods.sublist$2(_0_0, 0, _0_1._readFinal$0() - 1);
        last = _0_0[_0_1._readFinal$0() - 1];
        last = last;
        t1 = true;
      } else {
        last = _null;
        keys = last;
        t1 = false;
      }
      if (t1)
        return A._modify0(map1, keys, new A._merge__closure2(last.assertMap$1("map2")), true);
      throw A.wrapException("[BUG] Unreachable code");
    },
    $signature: 5
  };
  A._merge__closure1.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A._merge__closure2.prototype = {
    call$1(oldValue) {
      var t1, t2,
        nestedMap = oldValue.tryMap$0();
      if (nestedMap == null)
        return this.map2;
      t1 = type$.Value_2;
      t2 = A.LinkedHashMap_LinkedHashMap$of(nestedMap._map0$_contents, t1, t1);
      t2.addAll$1(0, this.map2._map0$_contents);
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
    },
    $signature: 510
  };
  A._deepMerge_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A._deepMergeImpl0(t1.$index($arguments, 0).assertMap$1("map1"), t1.$index($arguments, 1).assertMap$1("map2"));
    },
    $signature: 38
  };
  A._deepRemove_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value_2);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      return A._modify0(map, A.IterableExtension_get_exceptLast0(t2), new A._deepRemove__closure0(t2), false);
    },
    $signature: 5
  };
  A._deepRemove__closure0.prototype = {
    call$1(value) {
      var nestedMap, t1, t2,
        _0_0 = value.tryMap$0();
      if (_0_0 != null) {
        nestedMap = _0_0;
        t1 = true;
      } else {
        nestedMap = null;
        t1 = false;
      }
      if (t1 && nestedMap._map0$_contents.containsKey$1(B.JSArray_methods.get$last(this.keys))) {
        t1 = type$.Value_2;
        t2 = A.LinkedHashMap_LinkedHashMap$of(nestedMap._map0$_contents, t1, t1);
        t2.remove$1(0, B.JSArray_methods.get$last(this.keys));
        return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
      }
      return value;
    },
    $signature: 45
  };
  A._remove_closure1.prototype = {
    call$1($arguments) {
      return J.$index$asx($arguments, 0).assertMap$1("map");
    },
    $signature: 38
  };
  A._remove_closure2.prototype = {
    call$1($arguments) {
      var mutableMap, t3, _i,
        t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value_2);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      t1 = type$.Value_2;
      mutableMap = A.LinkedHashMap_LinkedHashMap$of(map._map0$_contents, t1, t1);
      for (t3 = t2.length, _i = 0; _i < t2.length; t2.length === t3 || (0, A.throwConcurrentModificationError)(t2), ++_i)
        mutableMap.remove$1(0, t2[_i]);
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
    },
    $signature: 38
  };
  A._keys_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.$index$asx($arguments, 0).assertMap$1("map")._map0$_contents;
      return A.SassList$0(t1.get$keys(t1), B.ListSeparator_rXA0, false);
    },
    $signature: 27
  };
  A._values_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.$index$asx($arguments, 0).assertMap$1("map")._map0$_contents;
      return A.SassList$0(t1.get$values(t1), B.ListSeparator_rXA0, false);
    },
    $signature: 27
  };
  A._hasKey_closure0.prototype = {
    call$1($arguments) {
      var value,
        t1 = J.getInterceptor$asx($arguments),
        map = t1.$index($arguments, 0).assertMap$1("map"),
        t2 = A._setArrayType([t1.$index($arguments, 1)], type$.JSArray_Value_2);
      B.JSArray_methods.addAll$1(t2, t1.$index($arguments, 2).get$asList());
      for (t1 = A.IterableExtension_get_exceptLast0(t2), t1 = t1.get$iterator(t1); t1.moveNext$0(); map = value) {
        value = map._map0$_contents.$index(0, t1.get$current(t1));
        if (!(value instanceof A.SassMap0))
          return B.SassBoolean_false0;
      }
      return map._map0$_contents.containsKey$1(B.JSArray_methods.get$last(t2)) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._modify_modifyNestedMap0.prototype = {
    call$1(map) {
      var nestedMap, _this = this,
        t1 = type$.Value_2,
        mutableMap = A.LinkedHashMap_LinkedHashMap$of(map._map0$_contents, t1, t1),
        t2 = _this.keyIterator,
        key = t2.get$current(t2);
      if (!t2.moveNext$0()) {
        t2 = mutableMap.$index(0, key);
        if (t2 == null)
          t2 = B.C__SassNull0;
        mutableMap.$indexSet(0, key, _this.modify.call$1(t2));
        return new A.SassMap0(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
      }
      t2 = mutableMap.$index(0, key);
      nestedMap = t2 == null ? null : t2.tryMap$0();
      t2 = nestedMap == null;
      if (t2 && !_this.addNesting)
        return new A.SassMap0(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
      mutableMap.$indexSet(0, key, _this.call$1(t2 ? B.SassMap_Map_empty0 : nestedMap));
      return new A.SassMap0(A.ConstantMap_ConstantMap$from(mutableMap, t1, t1));
    },
    $signature: 511
  };
  A._deepMergeImpl_closure1.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 264
  };
  A._deepMergeImpl_closure2.prototype = {
    call$0() {
      return this._1_0._1;
    },
    $signature: 264
  };
  A.MapExtensions_get_pairs_closure0.prototype = {
    call$1(e) {
      return new A._Record_2(e.key, e.value);
    },
    $signature() {
      return this.K._eval$1("@<0>")._bind$1(this.V)._eval$1("+(1,2)(MapEntry<1,2>)");
    }
  };
  A.mapClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassMap", new A.mapClass__closure())),
        t2 = J.getInterceptor$x(jsClass);
      A.defineGetter(t2.get$$prototype(jsClass), "contents", new A.mapClass__closure0(), null);
      t2.get$$prototype(jsClass).get = A.allowInteropCaptureThisNamed("get", new A.mapClass__closure1());
      A.JSClassExtension_injectSuperclass(t1._as(B.SassMap_Map_empty0.constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.mapClass__closure.prototype = {
    call$2($self, contents) {
      var t1;
      if (contents == null)
        t1 = B.SassMap_Map_empty0;
      else {
        t1 = type$.Value_2;
        t1 = new A.SassMap0(A.ConstantMap_ConstantMap$from(A.immutableMapToDartMap(contents).cast$2$0(0, t1, t1), t1, t1));
      }
      return t1;
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 513
  };
  A.mapClass__closure0.prototype = {
    call$1($self) {
      return A.dartMapToImmutableMap($self._map0$_contents);
    },
    $signature: 514
  };
  A.mapClass__closure1.prototype = {
    call$2($self, indexOrKey) {
      var index, t1, _0_0, key, value;
      if (typeof indexOrKey == "number") {
        index = B.JSNumber_methods.floor$0(indexOrKey);
        if (index < 0) {
          t1 = $self._map0$_contents;
          index = t1.get$length(t1) + index;
        }
        if (index >= 0) {
          t1 = $self._map0$_contents;
          t1 = index >= t1.get$length(t1);
        } else
          t1 = true;
        if (t1)
          return self.undefined;
        t1 = type$.Value_2;
        _0_0 = A.MapExtensions_get_pairs0($self._map0$_contents, t1, t1).elementAt$1(0, index);
        key = _0_0._0;
        value = _0_0._1;
        value = value;
        return A.SassList$0(A._setArrayType([key, value], type$.JSArray_Value_2), B.ListSeparator_EVt0, false);
      } else {
        t1 = $self._map0$_contents.$index(0, indexOrKey);
        return t1 == null ? self.undefined : t1;
      }
    },
    $signature: 515
  };
  A._NodeSassMap.prototype = {};
  A.legacyMapClass_closure.prototype = {
    call$3(thisArg, $length, dartValue) {
      var t1, t2, t3, map;
      if (dartValue == null) {
        $length.toString;
        t1 = type$.Value_2;
        t2 = A.Iterable_Iterable$generate($length, new A.legacyMapClass__closure(), t1);
        t3 = A.Iterable_Iterable$generate($length, new A.legacyMapClass__closure0(), t1);
        map = A.LinkedHashMap_LinkedHashMap(null, null, null, t1, t1);
        A.MapBase__fillMapWithIterables(map, t2, t3);
        t1 = new A.SassMap0(A.ConstantMap_ConstantMap$from(map, t1, t1));
      } else
        t1 = dartValue;
      J.set$dartValue$x(thisArg, t1);
    },
    call$2(thisArg, $length) {
      return this.call$3(thisArg, $length, null);
    },
    "call*": "call$3",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null];
    },
    $signature: 516
  };
  A.legacyMapClass__closure.prototype = {
    call$1(i) {
      return A.SassNumber_SassNumber0(i, null);
    },
    $signature: 517
  };
  A.legacyMapClass__closure0.prototype = {
    call$1(_) {
      return B.C__SassNull0;
    },
    $signature: 263
  };
  A.legacyMapClass_closure0.prototype = {
    call$2(thisArg, index) {
      var t1 = J.get$dartValue$x(thisArg)._map0$_contents;
      return A.wrapValue(J.elementAt$1$ax(t1.get$keys(t1), index));
    },
    $signature: 265
  };
  A.legacyMapClass_closure1.prototype = {
    call$2(thisArg, index) {
      var t1 = J.get$dartValue$x(thisArg)._map0$_contents;
      return A.wrapValue(t1.get$values(t1).elementAt$1(0, index));
    },
    $signature: 265
  };
  A.legacyMapClass_closure2.prototype = {
    call$1(thisArg) {
      var t1 = J.get$dartValue$x(thisArg)._map0$_contents;
      return t1.get$length(t1);
    },
    $signature: 519
  };
  A.legacyMapClass_closure3.prototype = {
    call$3(thisArg, index, key) {
      var newKey, t2, newMap, t3, i, t4, oldKey, oldValue,
        t1 = J.getInterceptor$x(thisArg),
        oldMap = t1.get$dartValue(thisArg)._map0$_contents,
        $length = oldMap.get$length(oldMap);
      A.IndexError_check(index, $length, oldMap, null, "index");
      newKey = A.unwrapValue(key);
      t2 = type$.Value_2;
      newMap = A.LinkedHashMap_LinkedHashMap$_empty(t2, t2);
      for (t3 = A.MapExtensions_get_pairs0(t1.get$dartValue(thisArg)._map0$_contents, t2, t2), t3 = t3.get$iterator(t3), i = 0; t3.moveNext$0();) {
        t4 = t3.get$current(t3);
        oldKey = t4._0;
        oldValue = t4._1;
        oldValue = oldValue;
        if (i === index)
          newMap.$indexSet(0, newKey, oldValue);
        else {
          if (newKey.$eq(0, oldKey))
            throw A.wrapException(A.ArgumentError$value(key, "key", "is already in the map"));
          newMap.$indexSet(0, oldKey, oldValue);
        }
        ++i;
      }
      t1.set$dartValue(thisArg, new A.SassMap0(A.ConstantMap_ConstantMap$from(newMap, t2, t2)));
    },
    "call*": "call$3",
    $requiredArgCount: 3,
    $signature: 266
  };
  A.legacyMapClass_closure4.prototype = {
    call$3(thisArg, index, value) {
      var t3,
        t1 = J.getInterceptor$x(thisArg),
        t2 = t1.get$dartValue(thisArg)._map0$_contents,
        key = J.elementAt$1$ax(t2.get$keys(t2), index);
      t2 = type$.Value_2;
      t3 = A.LinkedHashMap_LinkedHashMap$of(t1.get$dartValue(thisArg)._map0$_contents, t2, t2);
      t3.$indexSet(0, key, A.unwrapValue(value));
      t1.set$dartValue(thisArg, new A.SassMap0(A.ConstantMap_ConstantMap$from(t3, t2, t2)));
    },
    "call*": "call$3",
    $requiredArgCount: 3,
    $signature: 266
  };
  A.SassMap0.prototype = {
    get$separator(_) {
      var t1 = this._map0$_contents;
      return t1.get$isEmpty(t1) ? B.ListSeparator_undecided_null_undecided0 : B.ListSeparator_rXA0;
    },
    get$asList() {
      var t3, t4, t5, key, value, result,
        t1 = type$.JSArray_Value_2,
        t2 = A._setArrayType([], t1);
      for (t3 = type$.Value_2, t4 = A.MapExtensions_get_pairs0(this._map0$_contents, t3, t3), t4 = t4.get$iterator(t4); t4.moveNext$0();) {
        t5 = t4.get$current(t4);
        key = t5._0;
        value = t5._1;
        result = A.List_List$from(A._setArrayType([key, value], t1), false, t3);
        result.fixed$length = Array;
        result.immutable$list = Array;
        t2.push(new A.SassList0(result, B.ListSeparator_EVt0, false));
      }
      return t2;
    },
    get$lengthAsList() {
      var t1 = this._map0$_contents;
      return t1.get$length(t1);
    },
    accept$1$1(visitor) {
      return visitor.visitMap$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertMap$1($name) {
      return this;
    },
    tryMap$0() {
      return this;
    },
    $eq(_, other) {
      var t1;
      if (other == null)
        return false;
      if (!(other instanceof A.SassMap0 && B.C_MapEquality.equals$2(0, other._map0$_contents, this._map0$_contents))) {
        t1 = this._map0$_contents;
        t1 = t1.get$isEmpty(t1) && other instanceof A.SassList0 && other._list1$_contents.length === 0;
      } else
        t1 = true;
      return t1;
    },
    get$hashCode(_) {
      var t1 = this._map0$_contents;
      return t1.get$isEmpty(t1) ? B.C_ListEquality0.hash$1(B.List_empty19) : B.C_MapEquality.hash$1(t1);
    }
  };
  A.global_closure31.prototype = {
    call$1($arguments) {
      var t1, t2,
        number = J.$index$asx($arguments, 0).assertNumber$1("number");
      if (number.hasUnit$1("%")) {
        t1 = number.toString$0(0);
        t2 = number.toString$0(0);
        A.EvaluationContext_current0().warn$2(0, string$.Passinp + t1 + ")\nTo emit a CSS abs() now: abs(#{" + t2 + string$.x7d__Mor, B.Deprecation_la6);
      }
      t1 = number.get$numeratorUnits(number);
      return A.SassNumber_SassNumber$withUnits0(Math.abs(number._number1$_value), number.get$denominatorUnits(number), t1);
    },
    $signature: 12
  };
  A.module_closure11.prototype = {
    call$1(value) {
      return Math.abs(value);
    },
    $signature: 42
  };
  A._ceil_closure0.prototype = {
    call$1(value) {
      return B.JSNumber_methods.ceil$0(value);
    },
    $signature: 42
  };
  A._clamp_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        min = t1.$index($arguments, 0).assertNumber$1("min"),
        number = t1.$index($arguments, 1).assertNumber$1("number"),
        max = t1.$index($arguments, 2).assertNumber$1("max");
      number.convertValueToMatch$3(min, "number", "min");
      max.convertValueToMatch$3(min, "max", "min");
      if (min.greaterThanOrEquals$1(max).value)
        return min;
      if (min.greaterThanOrEquals$1(number).value)
        return min;
      if (number.greaterThanOrEquals$1(max).value)
        return max;
      return number;
    },
    $signature: 12
  };
  A._floor_closure0.prototype = {
    call$1(value) {
      return B.JSNumber_methods.floor$0(value);
    },
    $signature: 42
  };
  A._max_closure0.prototype = {
    call$1($arguments) {
      var t1, t2, max, _i, number;
      for (t1 = J.$index$asx($arguments, 0).get$asList(), t2 = t1.length, max = null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        number = t1[_i].assertNumber$0();
        if (max == null || max.lessThan$1(number).value)
          max = number;
      }
      if (max != null)
        return max;
      throw A.wrapException(A.SassScriptException$0("At least one argument must be passed.", null));
    },
    $signature: 12
  };
  A._min_closure0.prototype = {
    call$1($arguments) {
      var t1, t2, min, _i, number;
      for (t1 = J.$index$asx($arguments, 0).get$asList(), t2 = t1.length, min = null, _i = 0; _i < t1.length; t1.length === t2 || (0, A.throwConcurrentModificationError)(t1), ++_i) {
        number = t1[_i].assertNumber$0();
        if (min == null || min.greaterThan$1(number).value)
          min = number;
      }
      if (min != null)
        return min;
      throw A.wrapException(A.SassScriptException$0("At least one argument must be passed.", null));
    },
    $signature: 12
  };
  A._round_closure0.prototype = {
    call$1(number) {
      return B.JSNumber_methods.round$0(number);
    },
    $signature: 42
  };
  A._hypot_closure0.prototype = {
    call$1($arguments) {
      var subtotal, i, i0, t3, t4,
        t1 = J.$index$asx($arguments, 0).get$asList(),
        t2 = A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,SassNumber0>"),
        numbers = A.List_List$of(new A.MappedListIterable(t1, new A._hypot__closure0(), t2), true, t2._eval$1("ListIterable.E"));
      t1 = numbers.length;
      if (t1 === 0)
        throw A.wrapException(A.SassScriptException$0("At least one argument must be passed.", null));
      for (subtotal = 0, i = 0; i < t1; i = i0) {
        i0 = i + 1;
        subtotal += Math.pow(numbers[i].convertValueToMatch$3(numbers[0], "numbers[" + i0 + "]", "numbers[1]"), 2);
      }
      t1 = Math.sqrt(subtotal);
      t2 = numbers[0];
      t3 = J.getInterceptor$x(t2);
      t4 = t3.get$numeratorUnits(t2);
      return A.SassNumber_SassNumber$withUnits0(t1, t3.get$denominatorUnits(t2), t4);
    },
    $signature: 12
  };
  A._hypot__closure0.prototype = {
    call$1(argument) {
      return argument.assertNumber$0();
    },
    $signature: 521
  };
  A._log_closure0.prototype = {
    call$1($arguments) {
      var base,
        _s18_ = " to have no units.",
        _null = null,
        t1 = J.getInterceptor$asx($arguments),
        number = t1.$index($arguments, 0).assertNumber$1("number");
      if (number.get$hasUnits())
        throw A.wrapException(A.SassScriptException$0("$number: Expected " + number.toString$0(0) + _s18_, _null));
      else if (J.$eq$(t1.$index($arguments, 1), B.C__SassNull0))
        return A.SassNumber_SassNumber0(Math.log(number._number1$_value), _null);
      base = t1.$index($arguments, 1).assertNumber$1("base");
      if (base.get$hasUnits())
        throw A.wrapException(A.SassScriptException$0("$base: Expected " + base.toString$0(0) + _s18_, _null));
      else
        return A.SassNumber_SassNumber0(Math.log(number._number1$_value) / Math.log(base._number1$_value), _null);
    },
    $signature: 12
  };
  A._pow_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return A.pow1(t1.$index($arguments, 0).assertNumber$1("base"), t1.$index($arguments, 1).assertNumber$1("exponent"));
    },
    $signature: 12
  };
  A._atan2_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        y = t1.$index($arguments, 0).assertNumber$1("y");
      return A.SassNumber_SassNumber$withUnits0(Math.atan2(y._number1$_value, t1.$index($arguments, 1).assertNumber$1("x").convertValueToMatch$3(y, "x", "y")) * 57.29577951308232, null, A._setArrayType(["deg"], type$.JSArray_String));
    },
    $signature: 12
  };
  A._compatible_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments);
      return t1.$index($arguments, 0).assertNumber$1("number1").isComparableTo$1(t1.$index($arguments, 1).assertNumber$1("number2")) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._isUnitless_closure0.prototype = {
    call$1($arguments) {
      return !J.$index$asx($arguments, 0).assertNumber$1("number").get$hasUnits() ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._unit_closure0.prototype = {
    call$1($arguments) {
      return new A.SassString0(J.$index$asx($arguments, 0).assertNumber$1("number").get$unitString(), true);
    },
    $signature: 17
  };
  A._percentage_closure0.prototype = {
    call$1($arguments) {
      var number = J.$index$asx($arguments, 0).assertNumber$1("number");
      number.assertNoUnits$1("number");
      return A.SassNumber_SassNumber0(number._number1$_value * 100, "%");
    },
    $signature: 12
  };
  A._randomFunction_closure0.prototype = {
    call$1($arguments) {
      var limit, t2, t3, t4, limitScalar,
        t1 = J.getInterceptor$asx($arguments);
      if (J.$eq$(t1.$index($arguments, 0), B.C__SassNull0))
        return A.SassNumber_SassNumber0($.$get$_random2().nextDouble$0(), null);
      limit = t1.$index($arguments, 0).assertNumber$1("limit");
      if (limit.get$hasUnits()) {
        t1 = limit.toString$0(0);
        t2 = limit.get$unitString();
        t3 = limit.get$unitString();
        t4 = limit.get$unitString();
        A.EvaluationContext_current0().warn$2(0, string$.math_r + t1 + string$.x29x20in_a + t2 + ")) * 1" + t3 + string$.x0a_To_p + t4 + string$.x29x29__Mo, B.Deprecation_0bn);
      }
      limitScalar = limit.assertInt$1("limit");
      if (limitScalar < 1)
        throw A.wrapException(A.SassScriptException$0("$limit: Must be greater than 0, was " + limit.toString$0(0) + ".", null));
      return A.SassNumber_SassNumber0($.$get$_random2().nextInt$1(limitScalar) + 1, null);
    },
    $signature: 12
  };
  A._div_closure0.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        number1 = t1.$index($arguments, 0),
        number2 = t1.$index($arguments, 1);
      if (!(number1 instanceof A.SassNumber0) || !(number2 instanceof A.SassNumber0)) {
        t1 = A.EvaluationContext_current0();
        t1.warn$2(0, string$.math_d, null);
      }
      return number1.dividedBy$1(number2);
    },
    $signature: 5
  };
  A._singleArgumentMathFunc_closure0.prototype = {
    call$1($arguments) {
      return this.mathFunc.call$1(J.$index$asx($arguments, 0).assertNumber$1("number"));
    },
    $signature: 12
  };
  A._numberFunction_closure0.prototype = {
    call$1($arguments) {
      var number = J.$index$asx($arguments, 0).assertNumber$1("number"),
        t1 = this.transform.call$1(number._number1$_value),
        t2 = number.get$numeratorUnits(number);
      return A.SassNumber_SassNumber$withUnits0(t1, number.get$denominatorUnits(number), t2);
    },
    $signature: 12
  };
  A.CssMediaQuery0.prototype = {
    merge$1(other) {
      var t1, ourModifier, t2, t3, ourType, t4, theirModifier, t5, t6, theirType, t7, t8, negativeConditions, conditions, type, modifier, fewerConditions, fewerConditions0, moreConditions, _this = this, _null = null, _s3_ = "all";
      if (!_this.conjunction || !other.conjunction)
        return B._SingletonCssMediaQueryMergeResult_10;
      t1 = _this.modifier;
      ourModifier = t1 == null ? _null : t1.toLowerCase();
      t2 = _this.type;
      t3 = t2 == null;
      ourType = t3 ? _null : t2.toLowerCase();
      t4 = other.modifier;
      theirModifier = t4 == null ? _null : t4.toLowerCase();
      t5 = other.type;
      t6 = t5 == null;
      theirType = t6 ? _null : t5.toLowerCase();
      t7 = ourType == null;
      if (t7 && theirType == null) {
        t1 = A.List_List$of(_this.conditions, true, type$.String);
        B.JSArray_methods.addAll$1(t1, other.conditions);
        return new A.MediaQuerySuccessfulMergeResult0(A.CssMediaQuery$condition0(t1, true));
      }
      t8 = ourModifier === "not";
      if (t8 !== (theirModifier === "not")) {
        if (ourType == theirType) {
          negativeConditions = t8 ? _this.conditions : other.conditions;
          if (B.JSArray_methods.every$1(negativeConditions, B.JSArray_methods.get$contains(t8 ? other.conditions : _this.conditions)))
            return B._SingletonCssMediaQueryMergeResult_00;
          else
            return B._SingletonCssMediaQueryMergeResult_10;
        } else if (t3 || A.equalsIgnoreCase0(t2, _s3_) || t6 || A.equalsIgnoreCase0(t5, _s3_))
          return B._SingletonCssMediaQueryMergeResult_10;
        if (t8) {
          conditions = other.conditions;
          type = theirType;
          modifier = theirModifier;
        } else {
          conditions = _this.conditions;
          type = ourType;
          modifier = ourModifier;
        }
      } else if (t8) {
        if (ourType != theirType)
          return B._SingletonCssMediaQueryMergeResult_10;
        fewerConditions = _this.conditions;
        fewerConditions0 = other.conditions;
        t3 = fewerConditions.length > fewerConditions0.length;
        moreConditions = t3 ? fewerConditions : fewerConditions0;
        if (t3)
          fewerConditions = fewerConditions0;
        if (!B.JSArray_methods.every$1(fewerConditions, B.JSArray_methods.get$contains(moreConditions)))
          return B._SingletonCssMediaQueryMergeResult_10;
        conditions = moreConditions;
        type = ourType;
        modifier = ourModifier;
      } else if (t3 || A.equalsIgnoreCase0(t2, _s3_)) {
        type = (t6 || A.equalsIgnoreCase0(t5, _s3_)) && t7 ? _null : theirType;
        t3 = A.List_List$of(_this.conditions, true, type$.String);
        B.JSArray_methods.addAll$1(t3, other.conditions);
        conditions = t3;
        modifier = theirModifier;
      } else {
        if (t6 || A.equalsIgnoreCase0(t5, _s3_)) {
          t3 = A.List_List$of(_this.conditions, true, type$.String);
          B.JSArray_methods.addAll$1(t3, other.conditions);
          conditions = t3;
          modifier = ourModifier;
        } else {
          if (ourType != theirType)
            return B._SingletonCssMediaQueryMergeResult_00;
          else {
            modifier = ourModifier == null ? theirModifier : ourModifier;
            t3 = A.List_List$of(_this.conditions, true, type$.String);
            B.JSArray_methods.addAll$1(t3, other.conditions);
          }
          conditions = t3;
        }
        type = ourType;
      }
      t2 = type == ourType ? t2 : t5;
      return new A.MediaQuerySuccessfulMergeResult0(A.CssMediaQuery$type0(t2, conditions, modifier == ourModifier ? t1 : t4));
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.CssMediaQuery0 && other.modifier == this.modifier && other.type == this.type && B.C_ListEquality.equals$2(0, other.conditions, this.conditions);
    },
    get$hashCode(_) {
      return J.get$hashCode$(this.modifier) ^ J.get$hashCode$(this.type) ^ B.C_ListEquality0.hash$1(this.conditions);
    },
    toString$0(_) {
      var t2, _this = this,
        t1 = _this.modifier;
      t1 = t1 != null ? "" + (t1 + " ") : "";
      t2 = _this.type;
      if (t2 != null) {
        t1 += t2;
        if (_this.conditions.length !== 0)
          t1 += " and ";
      }
      t2 = _this.conjunction ? " and " : " or ";
      t2 = t1 + B.JSArray_methods.join$1(_this.conditions, t2);
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    }
  };
  A._SingletonCssMediaQueryMergeResult0.prototype = {
    _enumToString$0() {
      return "_SingletonCssMediaQueryMergeResult." + this._name;
    }
  };
  A.MediaQuerySuccessfulMergeResult0.prototype = {
    toString$0(_) {
      return this.query.toString$0(0);
    }
  };
  A.MediaQueryParser0.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.MediaQueryParser_parse_closure0(this));
    },
    _media_query$_mediaQuery$0() {
      var conditions, conjunction, identifier1, identifier2, type, modifier, _this = this, _s3_ = "and", _null = null;
      if (_this.scanner.peekChar$0() === 40) {
        conditions = A._setArrayType([_this._media_query$_mediaInParens$0()], type$.JSArray_String);
        _this.whitespace$0();
        if (_this.scanIdentifier$1(_s3_)) {
          _this.expectWhitespace$0();
          B.JSArray_methods.addAll$1(conditions, _this._media_query$_mediaLogicSequence$1(_s3_));
          conjunction = true;
        } else if (_this.scanIdentifier$1("or")) {
          _this.expectWhitespace$0();
          B.JSArray_methods.addAll$1(conditions, _this._media_query$_mediaLogicSequence$1("or"));
          conjunction = false;
        } else
          conjunction = true;
        return A.CssMediaQuery$condition0(conditions, conjunction);
      }
      identifier1 = _this.identifier$0();
      if (A.equalsIgnoreCase0(identifier1, "not")) {
        _this.expectWhitespace$0();
        if (!_this.lookingAtIdentifier$0())
          return A.CssMediaQuery$condition0(A._setArrayType(["(not " + _this._media_query$_mediaInParens$0() + ")"], type$.JSArray_String), _null);
      }
      _this.whitespace$0();
      if (!_this.lookingAtIdentifier$0())
        return A.CssMediaQuery$type0(identifier1, _null, _null);
      identifier2 = _this.identifier$0();
      if (A.equalsIgnoreCase0(identifier2, _s3_)) {
        _this.expectWhitespace$0();
        type = identifier1;
        modifier = _null;
      } else {
        _this.whitespace$0();
        if (_this.scanIdentifier$1(_s3_))
          _this.expectWhitespace$0();
        else
          return A.CssMediaQuery$type0(identifier2, _null, identifier1);
        type = identifier2;
        modifier = identifier1;
      }
      if (_this.scanIdentifier$1("not")) {
        _this.expectWhitespace$0();
        return A.CssMediaQuery$type0(type, A._setArrayType(["(not " + _this._media_query$_mediaInParens$0() + ")"], type$.JSArray_String), modifier);
      }
      return A.CssMediaQuery$type0(type, _this._media_query$_mediaLogicSequence$1(_s3_), modifier);
    },
    _media_query$_mediaLogicSequence$1(operator) {
      var t1, t2, _this = this,
        result = A._setArrayType([], type$.JSArray_String);
      for (t1 = _this.scanner; true;) {
        t1.expectChar$2$name(40, "media condition in parentheses");
        t2 = _this.declarationValue$0();
        t1.expectChar$1(41);
        result.push("(" + t2 + ")");
        _this.whitespace$0();
        if (!_this.scanIdentifier$1(operator))
          return result;
        _this.expectWhitespace$0();
      }
    },
    _media_query$_mediaInParens$0() {
      var t2,
        t1 = this.scanner;
      t1.expectChar$2$name(40, "media condition in parentheses");
      t2 = this.declarationValue$0();
      t1.expectChar$1(41);
      return "(" + t2 + ")";
    }
  };
  A.MediaQueryParser_parse_closure0.prototype = {
    call$0() {
      var queries = A._setArrayType([], type$.JSArray_CssMediaQuery_2),
        t1 = this.$this,
        t2 = t1.scanner;
      do {
        t1.whitespace$0();
        queries.push(t1._media_query$_mediaQuery$0());
        t1.whitespace$0();
      } while (t2.scanChar$1(44));
      t2.expectDone$0();
      return queries;
    },
    $signature: 522
  };
  A.ModifiableCssMediaRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssMediaRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      return other instanceof A.ModifiableCssMediaRule0 && B.C_ListEquality.equals$2(0, this.queries, other.queries);
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssMediaRule$0(this.queries, this.span);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.MediaRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitMediaRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@media " + this.query.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.MergedExtension0.prototype = {
    unmerge$0() {
      return new A._SyncStarIterable(this.unmerge$body$MergedExtension0(), type$._SyncStarIterable_Extension_2);
    },
    unmerge$body$MergedExtension0() {
      var $async$self = this;
      return function() {
        var $async$goto = 0, $async$handler = 1, $async$currentError, right, left;
        return function $async$unmerge$0($async$iterator, $async$errorCode, $async$result) {
          if ($async$errorCode === 1) {
            $async$currentError = $async$result;
            $async$goto = $async$handler;
          }
          while (true)
            switch ($async$goto) {
              case 0:
                // Function start
                left = $async$self.left;
                $async$goto = left instanceof A.MergedExtension0 ? 2 : 4;
                break;
              case 2:
                // then
                $async$goto = 5;
                return $async$iterator._yieldStar$1(left.unmerge$0());
              case 5:
                // after yield
                // goto join
                $async$goto = 3;
                break;
              case 4:
                // else
                $async$goto = 6;
                return $async$iterator._async$_current = left, 1;
              case 6:
                // after yield
              case 3:
                // join
                right = $async$self.right;
                $async$goto = right instanceof A.MergedExtension0 ? 7 : 9;
                break;
              case 7:
                // then
                $async$goto = 10;
                return $async$iterator._yieldStar$1(right.unmerge$0());
              case 10:
                // after yield
                // goto join
                $async$goto = 8;
                break;
              case 9:
                // else
                $async$goto = 11;
                return $async$iterator._async$_current = right, 1;
              case 11:
                // after yield
              case 8:
                // join
                // implicit return
                return 0;
              case 1:
                // rethrow
                return $async$iterator._datum = $async$currentError, 3;
            }
        };
      };
    }
  };
  A.MergedMapView0.prototype = {
    get$keys(_) {
      var t1 = this._merged_map_view$_mapsByKey;
      return new A.LinkedHashMapKeyIterable(t1, A._instanceType(t1)._eval$1("LinkedHashMapKeyIterable<1>"));
    },
    get$length(_) {
      return this._merged_map_view$_mapsByKey.__js_helper$_length;
    },
    get$isEmpty(_) {
      return this._merged_map_view$_mapsByKey.__js_helper$_length === 0;
    },
    get$isNotEmpty(_) {
      return this._merged_map_view$_mapsByKey.__js_helper$_length !== 0;
    },
    MergedMapView$10(maps, $K, $V) {
      var t1, t2, t3, _i, map, t4, t5, t6;
      for (t1 = maps.length, t2 = this._merged_map_view$_mapsByKey, t3 = $K._eval$1("@<0>")._bind$1($V)._eval$1("MergedMapView0<1,2>"), _i = 0; _i < maps.length; maps.length === t1 || (0, A.throwConcurrentModificationError)(maps), ++_i) {
        map = maps[_i];
        if (t3._is(map))
          for (t4 = map._merged_map_view$_mapsByKey, t4 = t4.get$values(t4), t4 = new A.MappedIterator(J.get$iterator$ax(t4.__internal$_iterable), t4._f), t5 = A._instanceType(t4)._rest[1]; t4.moveNext$0();) {
            t6 = t4.__internal$_current;
            if (t6 == null)
              t6 = t5._as(t6);
            A.setAll0(t2, t6.get$keys(t6), t6);
          }
        else
          A.setAll0(t2, map.get$keys(map), map);
      }
    },
    $index(_, key) {
      var t1 = this._merged_map_view$_mapsByKey.$index(0, this.$ti._precomputed1._as(key));
      return t1 == null ? null : t1.$index(0, key);
    },
    $indexSet(_, key, value) {
      var child, t1,
        _0_0 = this._merged_map_view$_mapsByKey.$index(0, key);
      if (_0_0 != null) {
        child = _0_0;
        t1 = true;
      } else {
        child = null;
        t1 = false;
      }
      if (t1)
        child.$indexSet(0, key, value);
      else
        throw A.wrapException(A.UnsupportedError$(string$.New_en));
    },
    remove$1(_, key) {
      throw A.wrapException(A.UnsupportedError$(string$.Entrie));
    },
    containsKey$1(key) {
      return this._merged_map_view$_mapsByKey.containsKey$1(key);
    }
  };
  A.global_closure59.prototype = {
    call$1($arguments) {
      return $._features0.contains$1(0, J.$index$asx($arguments, 0).assertString$1("feature")._string0$_text) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A.global_closure60.prototype = {
    call$1($arguments) {
      return new A.SassString0(A.serializeValue0(J.get$first$ax($arguments), true, true), false);
    },
    $signature: 17
  };
  A.global_closure61.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        _0_0 = t1.$index($arguments, 0);
      $label0$0: {
        if (_0_0 instanceof A.SassArgumentList0) {
          t1 = "arglist";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassBoolean0) {
          t1 = "bool";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassColor0) {
          t1 = "color";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassList0) {
          t1 = "list";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassMap0) {
          t1 = "map";
          break $label0$0;
        }
        if (B.C__SassNull0 === _0_0) {
          t1 = "null";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassNumber0) {
          t1 = "number";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassFunction0) {
          t1 = "function";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassMixin0) {
          t1 = "mixin";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassCalculation0) {
          t1 = "calculation";
          break $label0$0;
        }
        if (_0_0 instanceof A.SassString0) {
          t1 = "string";
          break $label0$0;
        }
        t1 = A.throwExpression("[BUG] Unknown value type " + A.S(t1.$index($arguments, 0)));
      }
      return new A.SassString0(t1, false);
    },
    $signature: 17
  };
  A.global_closure62.prototype = {
    call$1($arguments) {
      var t2, keywords, t3, t4, key, value,
        t1 = J.getInterceptor$asx($arguments),
        _1_0 = t1.$index($arguments, 0);
      if (_1_0 instanceof A.SassArgumentList0) {
        t2 = _1_0._argument_list$_wereKeywordsAccessed = true;
        keywords = _1_0._argument_list$_keywords;
      } else {
        keywords = null;
        t2 = false;
      }
      if (t2) {
        t1 = type$.Value_2;
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
        for (t3 = A.MapExtensions_get_pairs0(keywords, type$.String, t1), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
          t4 = t3.get$current(t3);
          key = t4._0;
          value = t4._1;
          value = value;
          t2.$indexSet(0, new A.SassString0(key, false), value);
        }
        return new A.SassMap0(A.ConstantMap_ConstantMap$from(t2, t1, t1));
      } else
        throw A.wrapException("$args: " + A.S(t1.$index($arguments, 0)) + " is not an argument list.");
    },
    $signature: 38
  };
  A.local_closure2.prototype = {
    call$1($arguments) {
      return new A.SassString0(J.$index$asx($arguments, 0).assertCalculation$1("calc").name, true);
    },
    $signature: 17
  };
  A.local_closure3.prototype = {
    call$1($arguments) {
      var t1 = J.$index$asx($arguments, 0).assertCalculation$1("calc").$arguments;
      return A.SassList$0(new A.MappedListIterable(t1, new A.local__closure2(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value0>")), B.ListSeparator_rXA0, false);
    },
    $signature: 27
  };
  A.local__closure2.prototype = {
    call$1(argument) {
      return argument instanceof A.Value0 ? argument : new A.SassString0(J.toString$0$(argument), false);
    },
    $signature: 523
  };
  A.local_closure4.prototype = {
    call$1($arguments) {
      var _0_2, acceptsContent, _0_2_isSet, t1, hasContent, _null = null,
        mixin = J.$index$asx($arguments, 0).assertMixin$1("mixin"),
        _0_0 = mixin.callable,
        _0_5 = A._InitializedCell$(new A.local__closure1(_0_0));
      $label0$0: {
        if (type$.AsyncBuiltInCallable_2._is(_0_0)) {
          _0_2 = _0_0.get$acceptsContent();
          acceptsContent = _0_2;
          _0_2_isSet = true;
          t1 = true;
        } else {
          acceptsContent = _null;
          _0_2 = acceptsContent;
          _0_2_isSet = false;
          t1 = false;
        }
        if (!t1)
          if (_0_0 instanceof A.BuiltInCallable0) {
            acceptsContent = _0_2_isSet ? _0_2 : _0_0.acceptsContent;
            t1 = true;
          } else
            t1 = false;
        else
          t1 = true;
        if (t1) {
          t1 = acceptsContent;
          break $label0$0;
        }
        if (_0_0 instanceof A.UserDefinedCallable0)
          if (_0_5._readFinal$0() instanceof A.MixinRule0) {
            hasContent = _0_5._readFinal$0().get$hasContent();
            t1 = true;
          } else {
            hasContent = _null;
            t1 = false;
          }
        else {
          hasContent = _null;
          t1 = false;
        }
        if (t1) {
          t1 = hasContent;
          break $label0$0;
        }
        t1 = A.throwExpression(A.UnsupportedError$("Unknown callable type " + mixin.toString$0(0) + "."));
      }
      return t1 ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A.local__closure1.prototype = {
    call$0() {
      return type$.UserDefinedCallable_dynamic_2._as(this._0_0).declaration;
    },
    $signature: 130
  };
  A.mixinClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassMixin", new A.mixinClass__closure()));
      A.JSClassExtension_injectSuperclass(t1._as(new A.SassMixin0(A.BuiltInCallable$function0("f", "", new A.mixinClass__closure0(), null)).constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.mixinClass__closure.prototype = {
    call$1($self) {
      A.jsThrow(new self.Error("It is not possible to construct a SassMixin through the JavaScript API"));
    },
    $signature: 524
  };
  A.mixinClass__closure0.prototype = {
    call$1(_) {
      return B.C__SassNull0;
    },
    $signature: 5
  };
  A.SassMixin0.prototype = {
    accept$1$1(visitor) {
      var t1, t2;
      if (!visitor._serialize0$_inspect)
        A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " isn't a valid CSS value.", null));
      t1 = visitor._serialize0$_buffer;
      t1.write$1(0, "get-mixin(");
      t2 = this.callable;
      visitor._serialize0$_visitQuotedString$1(t2.get$name(t2));
      t1.writeCharCode$1(41);
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertMixin$1($name) {
      return this;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassMixin0 && this.callable.$eq(0, other.callable);
    },
    get$hashCode(_) {
      var t1 = this.callable;
      return t1.get$hashCode(t1);
    }
  };
  A.MixinRule0.prototype = {
    get$hasContent() {
      var result, _this = this,
        value = _this._mixin_rule$__MixinRule_hasContent_FI;
      if (value === $) {
        result = J.$eq$(B.C__HasContentVisitor0.visitChildren$1(_this.children), true);
        _this._mixin_rule$__MixinRule_hasContent_FI !== $ && A.throwUnnamedLateFieldADI();
        _this._mixin_rule$__MixinRule_hasContent_FI = result;
        value = result;
      }
      return value;
    },
    accept$1$1(visitor) {
      return visitor.visitMixinRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = "@mixin " + this.name,
        t2 = this.$arguments;
      if (!(t2.$arguments.length === 0 && t2.restArgument == null))
        t1 += "(" + t2.toString$0(0) + ")";
      t2 = this.children;
      t2 = t1 + (" {" + (t2 && B.JSArray_methods).join$1(t2, " ") + "}");
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    }
  };
  A._HasContentVisitor0.prototype = {
    visitContentRule$1(_) {
      return true;
    }
  };
  A.__HasContentVisitor_Object_StatementSearchVisitor0.prototype = {};
  A.ExtendMode0.prototype = {
    _enumToString$0() {
      return "ExtendMode." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.MultiSpan0.prototype = {
    get$start(_) {
      var t1 = this._multi_span0$_primary;
      return t1.get$start(t1);
    },
    get$end(_) {
      var t1 = this._multi_span0$_primary;
      return t1.get$end(t1);
    },
    get$text() {
      return this._multi_span0$_primary.get$text();
    },
    get$context(_) {
      var t1 = this._multi_span0$_primary;
      return t1.get$context(t1);
    },
    get$file(_) {
      var t1 = this._multi_span0$_primary;
      return t1.get$file(t1);
    },
    get$length(_) {
      var t1 = this._multi_span0$_primary;
      return t1.get$length(t1);
    },
    get$sourceUrl(_) {
      var t1 = this._multi_span0$_primary;
      return t1.get$sourceUrl(t1);
    },
    compareTo$1(_, other) {
      return this._multi_span0$_primary.compareTo$1(0, other);
    },
    toString$0(_) {
      return this._multi_span0$_primary.toString$0(0);
    },
    expand$1(_, other) {
      return new A.MultiSpan0(this._multi_span0$_primary.expand$1(0, other), this.primaryLabel, this.secondarySpans);
    },
    highlight$1$color(color) {
      var t1 = color === true || false;
      return A.Highlighter$multiple(this._multi_span0$_primary, this.primaryLabel, this.secondarySpans, t1, null, null).highlight$0();
    },
    message$2$color(_, message, color) {
      var t1 = J.$eq$(color, true) || typeof color == "string",
        t2 = typeof color == "string" ? color : null;
      return A.SourceSpanExtension_messageMultiple(this._multi_span0$_primary, message, this.primaryLabel, this.secondarySpans, t1, t2, null);
    },
    message$1($receiver, message) {
      return this.message$2$color($receiver, message, null);
    },
    $isComparable: 1,
    $isFileSpan: 1,
    $isSourceSpan: 1,
    $isSourceSpanWithContext: 1
  };
  A.SupportsNegation0.prototype = {
    toString$0(_) {
      var t1 = this.condition;
      if (t1 instanceof A.SupportsNegation0 || t1 instanceof A.SupportsOperation0)
        return "not (" + t1.toString$0(0) + ")";
      else
        return "not " + t1.toString$0(0);
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.NoOpImporter0.prototype = {
    canonicalize$1(_, url) {
      return null;
    },
    load$1(_, url) {
      return null;
    },
    toString$0(_) {
      return "(unknown)";
    }
  };
  A.NoSourceMapBuffer0.prototype = {
    get$length(_) {
      return this._no_source_map_buffer0$_buffer._contents.length;
    },
    forSpan$1$2(span, callback) {
      return callback.call$0();
    },
    forSpan$2(span, callback) {
      return this.forSpan$1$2(span, callback, type$.dynamic);
    },
    write$1(_, object) {
      this._no_source_map_buffer0$_buffer._contents += A.S(object);
      return null;
    },
    writeCharCode$1(charCode) {
      this._no_source_map_buffer0$_buffer._contents += A.Primitives_stringFromCharCode(charCode);
      return null;
    },
    toString$0(_) {
      var t1 = this._no_source_map_buffer0$_buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    buildSourceMap$1$prefix(prefix) {
      return A.throwExpression(A.UnsupportedError$(string$.NoSour));
    }
  };
  A._FakeAstNode0.prototype = {
    get$span(_) {
      return this._node0$_callback.call$0();
    },
    $isAstNode0: 1
  };
  A.CssNode0.prototype = {
    toString$0(_) {
      return A.serialize0(this, true, null, true, null, false, null, true)._0;
    },
    $isAstNode0: 1
  };
  A.CssParentNode0.prototype = {};
  A._IsInvisibleVisitor1.prototype = {
    visitCssAtRule$1(rule) {
      return false;
    },
    visitCssComment$1(comment) {
      return this.includeComments && comment.text.charCodeAt(2) !== 33;
    },
    visitCssStyleRule$1(rule) {
      var t1 = rule._style_rule0$_selector._box0$_inner;
      return (this.includeBogus ? t1.value.accept$1(B._IsInvisibleVisitor_true0) : t1.value.accept$1(B._IsInvisibleVisitor_false0)) || this.super$EveryCssVisitor$visitCssStyleRule0(rule);
    }
  };
  A.__IsInvisibleVisitor_Object_EveryCssVisitor0.prototype = {};
  A.ModifiableCssNode0.prototype = {
    get$hasFollowingSibling() {
      var t2,
        t1 = this._node$_parent;
      if (t1 == null)
        t1 = null;
      else {
        t1 = t1.children;
        t2 = this._node$_indexInParent;
        t2.toString;
        t1 = A.SubListIterable$(t1, t2 + 1, null, t1.$ti._eval$1("ListBase.E")).any$1(0, new A.ModifiableCssNode_hasFollowingSibling_closure0());
      }
      return t1 === true;
    },
    get$isGroupEnd() {
      return this.isGroupEnd;
    }
  };
  A.ModifiableCssNode_hasFollowingSibling_closure0.prototype = {
    call$1(sibling) {
      return !sibling.accept$1(B._IsInvisibleVisitor_true_false0);
    },
    $signature: 148
  };
  A.ModifiableCssParentNode0.prototype = {
    get$isChildless() {
      return false;
    },
    addChild$1(child) {
      var t1;
      child._node$_parent = this;
      t1 = this._node$_children;
      child._node$_indexInParent = t1.length;
      t1.push(child);
    },
    clearChildren$0() {
      var t1, t2, _i, child;
      for (t1 = this._node$_children, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        child = t1[_i];
        child._node$_indexInParent = child._node$_parent = null;
      }
      B.JSArray_methods.clear$0(t1);
    },
    $isCssParentNode0: 1,
    get$children(receiver) {
      return this.children;
    }
  };
  A.NullExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitNullExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "null";
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.legacyNullClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.types.Null", new A.legacyNullClass__closure()));
      jsClass.NULL = B.C__SassNull0;
      A.JSClassExtension_injectSuperclass(t1._as(B.C__SassNull0.constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.legacyNullClass__closure.prototype = {
    call$2(_, __) {
      throw A.wrapException("new sass.types.Null() isn't allowed. Use sass.types.Null.NULL instead.");
    },
    call$1(_) {
      return this.call$2(_, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 216
  };
  A._SassNull0.prototype = {
    get$isTruthy() {
      return false;
    },
    get$isBlank() {
      return true;
    },
    get$realNull() {
      return null;
    },
    accept$1$1(visitor) {
      if (visitor._serialize0$_inspect)
        visitor._serialize0$_buffer.write$1(0, "null");
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unaryNot$0() {
      return B.SassBoolean_true0;
    }
  };
  A.NumberExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitNumberExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return A.serializeValue0(A.SassNumber_SassNumber0(this.value, this.unit), true, true);
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.numberClass_closure.prototype = {
    call$0() {
      var t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassNumber", new A.numberClass__closure())),
        t2 = type$.String,
        t3 = type$.Function;
      A.LinkedHashMap_LinkedHashMap$_literal(["value", new A.numberClass__closure0(), "isInt", new A.numberClass__closure1(), "asInt", new A.numberClass__closure2(), "numeratorUnits", new A.numberClass__closure3(), "denominatorUnits", new A.numberClass__closure4(), "hasUnits", new A.numberClass__closure5()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      A.LinkedHashMap_LinkedHashMap$_literal(["assertInt", new A.numberClass__closure6(), "assertInRange", new A.numberClass__closure7(), "assertNoUnits", new A.numberClass__closure8(), "assertUnit", new A.numberClass__closure9(), "hasUnit", new A.numberClass__closure10(), "compatibleWithUnit", new A.numberClass__closure11(), "convert", new A.numberClass__closure12(), "convertToMatch", new A.numberClass__closure13(), "convertValue", new A.numberClass__closure14(), "convertValueToMatch", new A.numberClass__closure15(), "coerce", new A.numberClass__closure16(), "coerceToMatch", new A.numberClass__closure17(), "coerceValue", new A.numberClass__closure18(), "coerceValueToMatch", new A.numberClass__closure19()], t2, t3).forEach$1(0, A.JSClassExtension_get_defineMethod(jsClass));
      A.JSClassExtension_injectSuperclass(t1._as(self.Object.getPrototypeOf(J.get$$prototype$x(t1._as(A.SassNumber_SassNumber0(0, null).constructor))).constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.numberClass__closure.prototype = {
    call$3($self, value, unitOrOptions) {
      var t1, t2, _null = null;
      if (typeof unitOrOptions == "string")
        return A.SassNumber_SassNumber0(value, unitOrOptions);
      type$.nullable__ConstructorOptions_2._as(unitOrOptions);
      t1 = unitOrOptions == null;
      if (t1)
        t2 = _null;
      else {
        t2 = A.NullableExtension_andThen0(J.get$numeratorUnits$x(unitOrOptions), A.immutable__jsToDartList$closure());
        t2 = t2 == null ? _null : J.cast$1$0$ax(t2, type$.String);
      }
      if (t1)
        t1 = _null;
      else {
        t1 = A.NullableExtension_andThen0(J.get$denominatorUnits$x(unitOrOptions), A.immutable__jsToDartList$closure());
        t1 = t1 == null ? _null : J.cast$1$0$ax(t1, type$.String);
      }
      return A.SassNumber_SassNumber$withUnits0(value, t1, t2);
    },
    call$2($self, value) {
      return this.call$3($self, value, null);
    },
    "call*": "call$3",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null];
    },
    $signature: 525
  };
  A.numberClass__closure0.prototype = {
    call$1($self) {
      return $self._number1$_value;
    },
    $signature: 526
  };
  A.numberClass__closure1.prototype = {
    call$1($self) {
      return A.fuzzyIsInt($self._number1$_value);
    },
    $signature: 267
  };
  A.numberClass__closure2.prototype = {
    call$1($self) {
      return A.fuzzyAsInt0($self._number1$_value);
    },
    $signature: 528
  };
  A.numberClass__closure3.prototype = {
    call$1($self) {
      return new self.immutable.List($self.get$numeratorUnits($self));
    },
    $signature: 268
  };
  A.numberClass__closure4.prototype = {
    call$1($self) {
      return new self.immutable.List($self.get$denominatorUnits($self));
    },
    $signature: 268
  };
  A.numberClass__closure5.prototype = {
    call$1($self) {
      return $self.get$hasUnits();
    },
    $signature: 267
  };
  A.numberClass__closure6.prototype = {
    call$2($self, $name) {
      return $self.assertInt$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 530
  };
  A.numberClass__closure7.prototype = {
    call$4($self, min, max, $name) {
      return $self.valueInRange$3(min, max, $name);
    },
    call$3($self, min, max) {
      return this.call$4($self, min, max, null);
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [null];
    },
    $signature: 531
  };
  A.numberClass__closure8.prototype = {
    call$2($self, $name) {
      $self.assertNoUnits$1($name);
      return $self;
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 532
  };
  A.numberClass__closure9.prototype = {
    call$3($self, unit, $name) {
      $self.assertUnit$2(unit, $name);
      return $self;
    },
    call$2($self, unit) {
      return this.call$3($self, unit, null);
    },
    "call*": "call$3",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null];
    },
    $signature: 533
  };
  A.numberClass__closure10.prototype = {
    call$2($self, unit) {
      return $self.hasUnit$1(unit);
    },
    $signature: 269
  };
  A.numberClass__closure11.prototype = {
    call$2($self, unit) {
      return $self.get$hasUnits() && $self.compatibleWithUnit$1(unit);
    },
    $signature: 269
  };
  A.numberClass__closure12.prototype = {
    call$4($self, numeratorUnits, denominatorUnits, $name) {
      var t1 = self.immutable.isOrderedMap(numeratorUnits) ? J.toArray$0$x(type$.ImmutableList._as(numeratorUnits)) : type$.List_dynamic._as(numeratorUnits),
        t2 = type$.String;
      t1 = J.cast$1$0$ax(t1, t2);
      t2 = J.cast$1$0$ax(self.immutable.isOrderedMap(denominatorUnits) ? J.toArray$0$x(type$.ImmutableList._as(denominatorUnits)) : type$.List_dynamic._as(denominatorUnits), t2);
      return A.SassNumber_SassNumber$withUnits0($self._number1$_coerceOrConvertValue$4$coerceUnitless$name(t1, t2, false, $name), t2, t1);
    },
    call$3($self, numeratorUnits, denominatorUnits) {
      return this.call$4($self, numeratorUnits, denominatorUnits, null);
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [null];
    },
    $signature: 270
  };
  A.numberClass__closure13.prototype = {
    call$4($self, other, $name, otherName) {
      return $self.convertToMatch$3(other, $name, otherName);
    },
    call$2($self, other) {
      return this.call$4($self, other, null, null);
    },
    call$3($self, other, $name) {
      return this.call$4($self, other, $name, null);
    },
    "call*": "call$4",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null, null];
    },
    $signature: 271
  };
  A.numberClass__closure14.prototype = {
    call$4($self, numeratorUnits, denominatorUnits, $name) {
      var t1 = self.immutable.isOrderedMap(numeratorUnits) ? J.toArray$0$x(type$.ImmutableList._as(numeratorUnits)) : type$.List_dynamic._as(numeratorUnits),
        t2 = type$.String;
      t1 = J.cast$1$0$ax(t1, t2);
      return $self._number1$_coerceOrConvertValue$4$coerceUnitless$name(t1, J.cast$1$0$ax(self.immutable.isOrderedMap(denominatorUnits) ? J.toArray$0$x(type$.ImmutableList._as(denominatorUnits)) : type$.List_dynamic._as(denominatorUnits), t2), false, $name);
    },
    call$3($self, numeratorUnits, denominatorUnits) {
      return this.call$4($self, numeratorUnits, denominatorUnits, null);
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [null];
    },
    $signature: 272
  };
  A.numberClass__closure15.prototype = {
    call$4($self, other, $name, otherName) {
      return $self.convertValueToMatch$3(other, $name, otherName);
    },
    call$2($self, other) {
      return this.call$4($self, other, null, null);
    },
    call$3($self, other, $name) {
      return this.call$4($self, other, $name, null);
    },
    "call*": "call$4",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null, null];
    },
    $signature: 273
  };
  A.numberClass__closure16.prototype = {
    call$4($self, numeratorUnits, denominatorUnits, $name) {
      var t1 = self.immutable.isOrderedMap(numeratorUnits) ? J.toArray$0$x(type$.ImmutableList._as(numeratorUnits)) : type$.List_dynamic._as(numeratorUnits),
        t2 = type$.String;
      t1 = J.cast$1$0$ax(t1, t2);
      return $self.coerce$3(t1, J.cast$1$0$ax(self.immutable.isOrderedMap(denominatorUnits) ? J.toArray$0$x(type$.ImmutableList._as(denominatorUnits)) : type$.List_dynamic._as(denominatorUnits), t2), $name);
    },
    call$3($self, numeratorUnits, denominatorUnits) {
      return this.call$4($self, numeratorUnits, denominatorUnits, null);
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [null];
    },
    $signature: 270
  };
  A.numberClass__closure17.prototype = {
    call$4($self, other, $name, otherName) {
      return $self.coerceToMatch$3(other, $name, otherName);
    },
    call$2($self, other) {
      return this.call$4($self, other, null, null);
    },
    call$3($self, other, $name) {
      return this.call$4($self, other, $name, null);
    },
    "call*": "call$4",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null, null];
    },
    $signature: 271
  };
  A.numberClass__closure18.prototype = {
    call$4($self, numeratorUnits, denominatorUnits, $name) {
      var t1 = self.immutable.isOrderedMap(numeratorUnits) ? J.toArray$0$x(type$.ImmutableList._as(numeratorUnits)) : type$.List_dynamic._as(numeratorUnits),
        t2 = type$.String;
      t1 = J.cast$1$0$ax(t1, t2);
      return $self.coerceValue$3(t1, J.cast$1$0$ax(self.immutable.isOrderedMap(denominatorUnits) ? J.toArray$0$x(type$.ImmutableList._as(denominatorUnits)) : type$.List_dynamic._as(denominatorUnits), t2), $name);
    },
    call$3($self, numeratorUnits, denominatorUnits) {
      return this.call$4($self, numeratorUnits, denominatorUnits, null);
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [null];
    },
    $signature: 272
  };
  A.numberClass__closure19.prototype = {
    call$4($self, other, $name, otherName) {
      return $self.coerceValueToMatch$3(other, $name, otherName);
    },
    call$2($self, other) {
      return this.call$4($self, other, null, null);
    },
    call$3($self, other, $name) {
      return this.call$4($self, other, $name, null);
    },
    "call*": "call$4",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null, null];
    },
    $signature: 273
  };
  A._ConstructorOptions0.prototype = {};
  A._NodeSassNumber.prototype = {};
  A.legacyNumberClass_closure.prototype = {
    call$4(thisArg, value, unit, dartValue) {
      var t1;
      if (dartValue == null) {
        value.toString;
        t1 = A._parseNumber(value, unit);
      } else
        t1 = dartValue;
      J.set$dartValue$x(thisArg, t1);
    },
    call$2(thisArg, value) {
      return this.call$4(thisArg, value, null, null);
    },
    call$3(thisArg, value, unit) {
      return this.call$4(thisArg, value, unit, null);
    },
    "call*": "call$4",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null, null];
    },
    $signature: 539
  };
  A.legacyNumberClass_closure0.prototype = {
    call$1(thisArg) {
      return J.get$dartValue$x(thisArg)._number1$_value;
    },
    $signature: 540
  };
  A.legacyNumberClass_closure1.prototype = {
    call$2(thisArg, value) {
      var t1 = J.getInterceptor$x(thisArg),
        t2 = J.get$numeratorUnits$x(t1.get$dartValue(thisArg));
      t1.set$dartValue(thisArg, A.SassNumber_SassNumber$withUnits0(value, J.get$denominatorUnits$x(t1.get$dartValue(thisArg)), t2));
    },
    $signature: 541
  };
  A.legacyNumberClass_closure2.prototype = {
    call$1(thisArg) {
      var t1 = J.getInterceptor$x(thisArg),
        t2 = B.JSArray_methods.join$1(J.get$numeratorUnits$x(t1.get$dartValue(thisArg)), "*"),
        t3 = J.get$denominatorUnits$x(t1.get$dartValue(thisArg)).length === 0 ? "" : "/";
      return t2 + t3 + B.JSArray_methods.join$1(J.get$denominatorUnits$x(t1.get$dartValue(thisArg)), "*");
    },
    $signature: 542
  };
  A.legacyNumberClass_closure3.prototype = {
    call$2(thisArg, unit) {
      var t1 = J.getInterceptor$x(thisArg);
      t1.set$dartValue(thisArg, A._parseNumber(t1.get$dartValue(thisArg)._number1$_value, unit));
    },
    $signature: 543
  };
  A._parseNumber_closure.prototype = {
    call$1(unit) {
      return unit.length === 0;
    },
    $signature: 10
  };
  A._parseNumber_closure0.prototype = {
    call$1(unit) {
      return unit.length === 0;
    },
    $signature: 10
  };
  A.SassNumber0.prototype = {
    get$unitString() {
      var _this = this;
      return _this.get$hasUnits() ? _this._number1$_unitString$2(_this.get$numeratorUnits(_this), _this.get$denominatorUnits(_this)) : "";
    },
    accept$1$1(visitor) {
      return visitor.visitNumber$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    withoutSlash$0() {
      var _this = this;
      return _this.asSlash == null ? _this : _this.withValue$1(_this._number1$_value);
    },
    assertNumber$1($name) {
      return this;
    },
    assertNumber$0() {
      return this.assertNumber$1(null);
    },
    assertInt$1($name) {
      var integer, t1,
        _0_0 = A.fuzzyAsInt0(this._number1$_value);
      if (_0_0 != null) {
        integer = _0_0;
        t1 = true;
      } else {
        integer = null;
        t1 = false;
      }
      if (t1)
        return integer;
      throw A.wrapException(A.SassScriptException$0(this.toString$0(0) + " is not an int.", $name));
    },
    assertInt$0() {
      return this.assertInt$1(null);
    },
    valueInRange$3(min, max, $name) {
      var result, t1, _this = this,
        _0_0 = A.fuzzyCheckRange0(_this._number1$_value, min, max);
      if (_0_0 != null) {
        result = _0_0;
        t1 = true;
      } else {
        result = null;
        t1 = false;
      }
      if (t1)
        return result;
      throw A.wrapException(A.SassScriptException$0("Expected " + _this.toString$0(0) + " to be within " + A.S(min) + _this.get$unitString() + " and " + A.S(max) + _this.get$unitString() + ".", $name));
    },
    valueInRangeWithUnit$4(min, max, $name, unit) {
      var result, t1,
        _0_0 = A.fuzzyCheckRange0(this._number1$_value, min, max);
      if (_0_0 != null) {
        result = _0_0;
        t1 = true;
      } else {
        result = null;
        t1 = false;
      }
      if (t1)
        return result;
      throw A.wrapException(A.SassScriptException$0("Expected " + this.toString$0(0) + " to be within " + min + unit + " and " + max + unit + ".", $name));
    },
    hasCompatibleUnits$1(other) {
      var _this = this;
      if (_this.get$numeratorUnits(_this).length !== other.get$numeratorUnits(other).length)
        return false;
      if (_this.get$denominatorUnits(_this).length !== other.get$denominatorUnits(other).length)
        return false;
      return _this.isComparableTo$1(other);
    },
    assertUnit$2(unit, $name) {
      if (this.hasUnit$1(unit))
        return;
      throw A.wrapException(A.SassScriptException$0("Expected " + this.toString$0(0) + ' to have unit "' + unit + '".', $name));
    },
    assertNoUnits$1($name) {
      if (!this.get$hasUnits())
        return;
      throw A.wrapException(A.SassScriptException$0("Expected " + this.toString$0(0) + " to have no units.", $name));
    },
    assertNoUnits$0() {
      return this.assertNoUnits$1(null);
    },
    convertToMatch$3(other, $name, otherName) {
      var t1 = this.convertValueToMatch$3(other, $name, otherName),
        t2 = other.get$numeratorUnits(other);
      return A.SassNumber_SassNumber$withUnits0(t1, other.get$denominatorUnits(other), t2);
    },
    convertValueToMatch$3(other, $name, otherName) {
      return this._number1$_coerceOrConvertValue$6$coerceUnitless$name$other$otherName(other.get$numeratorUnits(other), other.get$denominatorUnits(other), false, $name, other, otherName);
    },
    convertValueToMatch$1(other) {
      return this.convertValueToMatch$3(other, null, null);
    },
    coerce$3(newNumerators, newDenominators, $name) {
      return A.SassNumber_SassNumber$withUnits0(this.coerceValue$3(newNumerators, newDenominators, $name), newDenominators, newNumerators);
    },
    coerce$2(newNumerators, newDenominators) {
      return this.coerce$3(newNumerators, newDenominators, null);
    },
    coerceValue$3(newNumerators, newDenominators, $name) {
      return this._number1$_coerceOrConvertValue$4$coerceUnitless$name(newNumerators, newDenominators, true, $name);
    },
    coerceValueToUnit$2(unit, $name) {
      var t1 = type$.JSArray_String;
      return this.coerceValue$3(A._setArrayType([unit], t1), A._setArrayType([], t1), $name);
    },
    coerceValueToUnit$1(unit) {
      return this.coerceValueToUnit$2(unit, null);
    },
    coerceToMatch$3(other, $name, otherName) {
      var t1 = this.coerceValueToMatch$3(other, $name, otherName),
        t2 = other.get$numeratorUnits(other);
      return A.SassNumber_SassNumber$withUnits0(t1, other.get$denominatorUnits(other), t2);
    },
    coerceValueToMatch$3(other, $name, otherName) {
      return this._number1$_coerceOrConvertValue$6$coerceUnitless$name$other$otherName(other.get$numeratorUnits(other), other.get$denominatorUnits(other), true, $name, other, otherName);
    },
    coerceValueToMatch$1(other) {
      return this.coerceValueToMatch$3(other, null, null);
    },
    _number1$_coerceOrConvertValue$6$coerceUnitless$name$other$otherName(newNumerators, newDenominators, coerceUnitless, $name, other, otherName) {
      var t1, otherHasUnits, t2, compatibilityException, oldNumerators, oldDenominators, _this = this, _box_0 = {};
      if (B.C_ListEquality.equals$2(0, _this.get$numeratorUnits(_this), newNumerators) && B.C_ListEquality.equals$2(0, _this.get$denominatorUnits(_this), newDenominators))
        return _this._number1$_value;
      t1 = J.getInterceptor$asx(newNumerators);
      otherHasUnits = t1.get$isNotEmpty(newNumerators) || J.get$isNotEmpty$asx(newDenominators);
      if (coerceUnitless)
        t2 = !_this.get$hasUnits() || !otherHasUnits;
      else
        t2 = false;
      if (t2)
        return _this._number1$_value;
      compatibilityException = new A.SassNumber__coerceOrConvertValue_compatibilityException0(_this, other, otherName, otherHasUnits, $name, newNumerators, newDenominators);
      _box_0.value = _this._number1$_value;
      t2 = _this.get$numeratorUnits(_this);
      oldNumerators = A._setArrayType(t2.slice(0), A._arrayInstanceType(t2));
      for (t1 = t1.get$iterator(newNumerators); t1.moveNext$0();)
        A.removeFirstWhere0(oldNumerators, new A.SassNumber__coerceOrConvertValue_closure3(_box_0, t1.get$current(t1)), new A.SassNumber__coerceOrConvertValue_closure4(compatibilityException));
      t1 = _this.get$denominatorUnits(_this);
      oldDenominators = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      for (t1 = J.get$iterator$ax(newDenominators); t1.moveNext$0();)
        A.removeFirstWhere0(oldDenominators, new A.SassNumber__coerceOrConvertValue_closure5(_box_0, t1.get$current(t1)), new A.SassNumber__coerceOrConvertValue_closure6(compatibilityException));
      if (oldNumerators.length !== 0 || oldDenominators.length !== 0)
        throw A.wrapException(compatibilityException.call$0());
      return _box_0.value;
    },
    _number1$_coerceOrConvertValue$4$coerceUnitless$name(newNumerators, newDenominators, coerceUnitless, $name) {
      return this._number1$_coerceOrConvertValue$6$coerceUnitless$name$other$otherName(newNumerators, newDenominators, coerceUnitless, $name, null, null);
    },
    isComparableTo$1(other) {
      var exception;
      if (!this.get$hasUnits() || !other.get$hasUnits())
        return true;
      try {
        this.greaterThan$1(other);
        return true;
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.SassScriptException0)
          return false;
        else
          throw exception;
      }
    },
    greaterThan$1(other) {
      if (other instanceof A.SassNumber0)
        return this._number1$_coerceUnits$2(other, A.number2__fuzzyGreaterThan$closure()) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " > " + other.toString$0(0) + '".', null));
    },
    greaterThanOrEquals$1(other) {
      if (other instanceof A.SassNumber0)
        return this._number1$_coerceUnits$2(other, A.number2__fuzzyGreaterThanOrEquals$closure()) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " >= " + other.toString$0(0) + '".', null));
    },
    lessThan$1(other) {
      if (other instanceof A.SassNumber0)
        return this._number1$_coerceUnits$2(other, A.number2__fuzzyLessThan$closure()) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " < " + other.toString$0(0) + '".', null));
    },
    lessThanOrEquals$1(other) {
      if (other instanceof A.SassNumber0)
        return this._number1$_coerceUnits$2(other, A.number2__fuzzyLessThanOrEquals$closure()) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " <= " + other.toString$0(0) + '".', null));
    },
    modulo$1(other) {
      if (other instanceof A.SassNumber0)
        return this.withValue$1(this._number1$_coerceUnits$2(other, A.number2__moduloLikeSass$closure()));
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " % " + other.toString$0(0) + '".', null));
    },
    plus$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber0)
        return _this.withValue$1(_this._number1$_coerceUnits$2(other, new A.SassNumber_plus_closure0()));
      if (!(other instanceof A.SassColor0))
        return _this.super$Value$plus0(other);
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + _this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
    },
    minus$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber0)
        return _this.withValue$1(_this._number1$_coerceUnits$2(other, new A.SassNumber_minus_closure0()));
      if (!(other instanceof A.SassColor0))
        return _this.super$Value$minus0(other);
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + _this.toString$0(0) + " - " + other.toString$0(0) + '".', null));
    },
    times$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber0) {
        if (!other.get$hasUnits())
          return _this.withValue$1(_this._number1$_value * other._number1$_value);
        return _this.multiplyUnits$3(_this._number1$_value * other._number1$_value, other.get$numeratorUnits(other), other.get$denominatorUnits(other));
      }
      throw A.wrapException(A.SassScriptException$0('Undefined operation "' + _this.toString$0(0) + " * " + other.toString$0(0) + '".', null));
    },
    dividedBy$1(other) {
      var _this = this;
      if (other instanceof A.SassNumber0) {
        if (!other.get$hasUnits())
          return _this.withValue$1(_this._number1$_value / other._number1$_value);
        return _this.multiplyUnits$3(_this._number1$_value / other._number1$_value, other.get$denominatorUnits(other), other.get$numeratorUnits(other));
      }
      return _this.super$Value$dividedBy0(other);
    },
    unaryPlus$0() {
      return this;
    },
    _number1$_coerceUnits$1$2(other, operation) {
      var t1, exception;
      try {
        t1 = operation.call$2(this._number1$_value, other.coerceValueToMatch$1(this));
        return t1;
      } catch (exception) {
        if (A.unwrapException(exception) instanceof A.SassScriptException0) {
          this.coerceValueToMatch$1(other);
          throw exception;
        } else
          throw exception;
      }
    },
    _number1$_coerceUnits$2(other, operation) {
      return this._number1$_coerceUnits$1$2(other, operation, type$.dynamic);
    },
    multiplyUnits$3(value, otherNumerators, otherDenominators) {
      var _0_0, _0_1, _0_2, _0_3, _0_6, _0_7, _0_9, _0_11, _0_13, numerators_case_0, denominators_case_0, t1, denominators_case_00, t2, t3, denominators_case_1, numerators_case_1, newNumerators, mutableOtherDenominators, _i, numerator, mutableDenominatorUnits, _this = this, _null = null, _box_0 = {};
      _box_0.value = value;
      _0_0 = new A._Record_4([_this.get$numeratorUnits(_this), _this.get$denominatorUnits(_this), otherNumerators, otherDenominators]);
      _0_1 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure11(_0_0));
      _0_2 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure12(_0_0));
      _0_3 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure13(_0_0));
      _0_6 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure14(_0_3));
      _0_7 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure15(_0_0));
      _0_9 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure16(_0_7));
      _0_11 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure17(_0_1));
      _0_13 = A._InitializedCell$(new A.SassNumber_multiplyUnits_closure18(_0_2));
      numerators_case_0 = _0_1._readFinal$0();
      denominators_case_0 = _0_2._readFinal$0();
      t1 = _0_6._readFinal$0() && _0_9._readFinal$0();
      if (!t1)
        if (_0_11._readFinal$0())
          if (_0_13._readFinal$0()) {
            numerators_case_0 = _0_3._readFinal$0();
            denominators_case_00 = _0_7._readFinal$0();
            denominators_case_0 = denominators_case_00;
            t1 = true;
          } else
            t1 = false;
        else
          t1 = false;
      else
        t1 = true;
      if (t1) {
        t2 = denominators_case_0;
        t1 = numerators_case_0;
        t3 = true;
      } else {
        t2 = _null;
        t1 = t2;
        t3 = false;
      }
      if (!t3) {
        if (_0_11._readFinal$0()) {
          denominators_case_1 = _0_2._readFinal$0();
          numerators_case_1 = _0_3._readFinal$0();
          t3 = _0_9._readFinal$0();
          t3 = t3;
        } else {
          numerators_case_1 = _null;
          denominators_case_1 = numerators_case_1;
          t3 = false;
        }
        if (!t3) {
          numerators_case_1 = _0_1._readFinal$0();
          if (_0_13._readFinal$0())
            if (_0_6._readFinal$0()) {
              denominators_case_1 = _0_7._readFinal$0();
              t3 = true;
            } else
              t3 = false;
          else
            t3 = false;
        } else
          t3 = true;
        if (t3)
          if (!_this._number1$_areAnyConvertible$2(numerators_case_1, denominators_case_1)) {
            t2 = denominators_case_1;
            t1 = numerators_case_1;
            t3 = true;
          } else
            t3 = false;
        else
          t3 = false;
      } else
        t3 = true;
      if (t3)
        return A.SassNumber_SassNumber$withUnits0(value, t2, t1);
      newNumerators = A._setArrayType([], type$.JSArray_String);
      mutableOtherDenominators = A._setArrayType(otherDenominators.slice(0), A._arrayInstanceType(otherDenominators));
      for (t1 = _this.get$numeratorUnits(_this), t2 = t1.length, _i = 0; _i < t2; ++_i) {
        numerator = t1[_i];
        A.removeFirstWhere0(mutableOtherDenominators, new A.SassNumber_multiplyUnits_closure19(_box_0, numerator), new A.SassNumber_multiplyUnits_closure20(newNumerators, numerator));
      }
      t1 = _this.get$denominatorUnits(_this);
      mutableDenominatorUnits = A._setArrayType(t1.slice(0), A._arrayInstanceType(t1));
      for (t1 = otherNumerators.length, _i = 0; _i < t1; ++_i) {
        numerator = otherNumerators[_i];
        A.removeFirstWhere0(mutableDenominatorUnits, new A.SassNumber_multiplyUnits_closure21(_box_0, numerator), new A.SassNumber_multiplyUnits_closure22(newNumerators, numerator));
      }
      t1 = _box_0.value;
      B.JSArray_methods.addAll$1(mutableDenominatorUnits, mutableOtherDenominators);
      return A.SassNumber_SassNumber$withUnits0(t1, mutableDenominatorUnits, newNumerators);
    },
    _number1$_areAnyConvertible$2(units1, units2) {
      return J.any$1$ax(units1, new A.SassNumber__areAnyConvertible_closure0(units2));
    },
    _number1$_unitString$2(numerators, denominators) {
      var t1, denominator,
        _0_0 = new A._Record_2(numerators, denominators),
        _0_4 = A._InitializedCell$(new A.SassNumber__unitString_closure3(_0_0)),
        _0_5 = A._InitializedCell$(new A.SassNumber__unitString_closure4(_0_0)),
        _0_6 = A._InitializedCell$(new A.SassNumber__unitString_closure5(_0_5)),
        _0_7 = A._InitializedCell$(new A.SassNumber__unitString_closure6(_0_6));
      $label0$0: {
        if (_0_4._readFinal$0() && _0_7._readFinal$0()) {
          t1 = "no units";
          break $label0$0;
        }
        if (_0_4._readFinal$0())
          if (J.$eq$(_0_6._readFinal$0(), 1)) {
            denominator = J.$index$asx(_0_5._readFinal$0(), 0);
            t1 = true;
          } else {
            denominator = null;
            t1 = false;
          }
        else {
          denominator = null;
          t1 = false;
        }
        if (t1) {
          t1 = A.S(denominator) + "^-1";
          break $label0$0;
        }
        if (_0_4._readFinal$0()) {
          t1 = "(" + J.join$1$ax(denominators, "*") + ")^-1";
          break $label0$0;
        }
        if (_0_7._readFinal$0()) {
          t1 = J.join$1$ax(numerators, "*");
          break $label0$0;
        }
        t1 = J.join$1$ax(numerators, "*") + "/" + J.join$1$ax(denominators, "*");
        break $label0$0;
      }
      return t1;
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      if (!(other instanceof A.SassNumber0))
        return false;
      if (_this.get$numeratorUnits(_this).length !== other.get$numeratorUnits(other).length || _this.get$denominatorUnits(_this).length !== other.get$denominatorUnits(other).length)
        return false;
      if (!_this.get$hasUnits())
        return A.fuzzyEquals0(_this._number1$_value, other._number1$_value);
      if (!B.C_ListEquality.equals$2(0, _this._number1$_canonicalizeUnitList$1(_this.get$numeratorUnits(_this)), _this._number1$_canonicalizeUnitList$1(other.get$numeratorUnits(other))) || !B.C_ListEquality.equals$2(0, _this._number1$_canonicalizeUnitList$1(_this.get$denominatorUnits(_this)), _this._number1$_canonicalizeUnitList$1(other.get$denominatorUnits(other))))
        return false;
      return A.fuzzyEquals0(_this._number1$_value * _this._number1$_canonicalMultiplier$1(_this.get$numeratorUnits(_this)) / _this._number1$_canonicalMultiplier$1(_this.get$denominatorUnits(_this)), other._number1$_value * _this._number1$_canonicalMultiplier$1(other.get$numeratorUnits(other)) / _this._number1$_canonicalMultiplier$1(other.get$denominatorUnits(other)));
    },
    get$hashCode(_) {
      var _this = this,
        t1 = _this.hashCache;
      return t1 == null ? _this.hashCache = A.fuzzyHashCode0(_this._number1$_value * _this._number1$_canonicalMultiplier$1(_this.get$numeratorUnits(_this)) / _this._number1$_canonicalMultiplier$1(_this.get$denominatorUnits(_this))) : t1;
    },
    _number1$_canonicalizeUnitList$1(units) {
      var type,
        t1 = units.length;
      if (t1 === 0)
        return units;
      if (t1 === 1) {
        type = $.$get$_typesByUnit0().$index(0, B.JSArray_methods.get$first(units));
        if (type == null)
          t1 = units;
        else {
          t1 = B.Map_ws7dy.$index(0, type);
          t1.toString;
          t1 = A._setArrayType([B.JSArray_methods.get$first(t1)], type$.JSArray_String);
        }
        return t1;
      }
      t1 = A._arrayInstanceType(units)._eval$1("MappedListIterable<1,String>");
      t1 = A.List_List$of(new A.MappedListIterable(units, new A.SassNumber__canonicalizeUnitList_closure0(), t1), true, t1._eval$1("ListIterable.E"));
      B.JSArray_methods.sort$0(t1);
      return t1;
    },
    _number1$_canonicalMultiplier$1(units) {
      return B.JSArray_methods.fold$2(units, 1, new A.SassNumber__canonicalMultiplier_closure0(this));
    },
    canonicalMultiplierForUnit$1(unit) {
      var t1,
        innerMap = B.Map_nfuzN.$index(0, unit);
      if (innerMap == null)
        t1 = 1;
      else {
        t1 = innerMap.get$values(innerMap);
        t1 = 1 / t1.get$first(t1);
      }
      return t1;
    },
    unitSuggestion$2($name, unit) {
      var t2, t3, result, _this = this,
        t1 = _this.get$denominatorUnits(_this);
      t1 = new A.MappedListIterable(t1, new A.SassNumber_unitSuggestion_closure1(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,String>")).join$0(0);
      t2 = _this.get$numeratorUnits(_this);
      t2 = new A.MappedListIterable(t2, new A.SassNumber_unitSuggestion_closure2(), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,String>")).join$0(0);
      t3 = unit == null ? "" : " * 1" + unit;
      result = "$" + $name + t1 + t2 + t3;
      return _this.get$numeratorUnits(_this).length === 0 ? result : "calc(" + result + ")";
    },
    unitSuggestion$1($name) {
      return this.unitSuggestion$2($name, null);
    }
  };
  A.SassNumber_SassNumber$withUnits_closure10.prototype = {
    call$0() {
      return this._0_1._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure9.prototype = {
    call$0() {
      return this._0_0._0;
    },
    $signature: 96
  };
  A.SassNumber_SassNumber$withUnits_closure11.prototype = {
    call$0() {
      var t1 = this._0_1._readFinal$0();
      return J.get$length$asx(t1 == null ? type$.List_String._as(t1) : t1);
    },
    $signature: 3
  };
  A.SassNumber_SassNumber$withUnits_closure12.prototype = {
    call$0() {
      return this._0_4._readFinal$0() <= 0;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure14.prototype = {
    call$0() {
      return this._0_7._readFinal$0() == null;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure13.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 96
  };
  A.SassNumber_SassNumber$withUnits_closure15.prototype = {
    call$0() {
      return J.get$length$asx(this._0_7._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_SassNumber$withUnits_closure16.prototype = {
    call$0() {
      return this._1_0._0;
    },
    $signature: 26
  };
  A.SassNumber_SassNumber$withUnits_closure17.prototype = {
    call$0() {
      return J.get$length$asx(this._1_1._readFinal$0());
    },
    $signature: 3
  };
  A.SassNumber_SassNumber$withUnits_closure18.prototype = {
    call$0() {
      return J.get$length$asx(this._1_0._1) <= 0;
    },
    $signature: 1
  };
  A.SassNumber__coerceOrConvertValue_compatibilityException0.prototype = {
    call$0() {
      var t2, t3, message, t4, type, unit, _this = this,
        t1 = _this.other;
      if (t1 != null) {
        t2 = _this.$this;
        t3 = t2.toString$0(0) + " and";
        message = new A.StringBuffer(t3);
        t4 = _this.otherName;
        if (t4 != null)
          t3 = message._contents = t3 + (" $" + t4 + ":");
        t1 = t3 + (" " + t1.toString$0(0) + " have incompatible units");
        message._contents = t1;
        if (!t2.get$hasUnits() || !_this.otherHasUnits)
          message._contents = t1 + " (one has units and the other doesn't)";
        t1 = message.toString$0(0) + ".";
        t2 = _this.name;
        return new A.SassScriptException0(t2 == null ? t1 : "$" + t2 + ": " + t1);
      } else if (!_this.otherHasUnits) {
        t1 = "Expected " + _this.$this.toString$0(0) + " to have no units.";
        t2 = _this.name;
        return new A.SassScriptException0(t2 == null ? t1 : "$" + t2 + ": " + t1);
      } else {
        t1 = _this.newNumerators;
        t2 = J.getInterceptor$asx(t1);
        if (t2.get$length(t1) === 1 && J.get$isEmpty$asx(_this.newDenominators)) {
          type = $.$get$_typesByUnit0().$index(0, t2.get$first(t1));
          if (type != null) {
            t1 = _this.$this.toString$0(0);
            t2 = B.JSArray_methods.contains$1(A._setArrayType([97, 101, 105, 111, 117], type$.JSArray_int), type.charCodeAt(0)) ? "an " + type : "a " + type;
            t3 = B.Map_ws7dy.$index(0, type);
            t3.toString;
            t3 = "Expected " + t1 + " to have " + t2 + " unit (" + B.JSArray_methods.join$1(t3, ", ") + ").";
            t2 = _this.name;
            return new A.SassScriptException0(t2 == null ? t3 : "$" + t2 + ": " + t3);
          }
        }
        t3 = _this.newDenominators;
        unit = A.pluralize0("unit", t2.get$length(t1) + J.get$length$asx(t3), null);
        t2 = _this.$this;
        t3 = "Expected " + t2.toString$0(0) + " to have " + unit + " " + t2._number1$_unitString$2(t1, t3) + ".";
        t1 = _this.name;
        return new A.SassScriptException0(t1 == null ? t3 : "$" + t1 + ": " + t3);
      }
    },
    $signature: 544
  };
  A.SassNumber__coerceOrConvertValue_closure3.prototype = {
    call$1(oldNumerator) {
      var factor = A.conversionFactor0(this.newNumerator, oldNumerator);
      if (factor == null)
        return false;
      this._box_0.value *= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber__coerceOrConvertValue_closure4.prototype = {
    call$0() {
      return A.throwExpression(this.compatibilityException.call$0());
    },
    $signature: 0
  };
  A.SassNumber__coerceOrConvertValue_closure5.prototype = {
    call$1(oldDenominator) {
      var factor = A.conversionFactor0(this.newDenominator, oldDenominator);
      if (factor == null)
        return false;
      this._box_0.value /= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber__coerceOrConvertValue_closure6.prototype = {
    call$0() {
      return A.throwExpression(this.compatibilityException.call$0());
    },
    $signature: 0
  };
  A.SassNumber_plus_closure0.prototype = {
    call$2(num1, num2) {
      return num1 + num2;
    },
    $signature: 66
  };
  A.SassNumber_minus_closure0.prototype = {
    call$2(num1, num2) {
      return num1 - num2;
    },
    $signature: 66
  };
  A.SassNumber_multiplyUnits_closure11.prototype = {
    call$0() {
      return this._0_0._values[0];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure12.prototype = {
    call$0() {
      return this._0_0._values[1];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure13.prototype = {
    call$0() {
      return this._0_0._values[2];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure14.prototype = {
    call$0() {
      return J.get$length$asx(this._0_3._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure15.prototype = {
    call$0() {
      return this._0_0._values[3];
    },
    $signature: 26
  };
  A.SassNumber_multiplyUnits_closure16.prototype = {
    call$0() {
      return J.get$length$asx(this._0_7._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure17.prototype = {
    call$0() {
      return J.get$length$asx(this._0_1._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure18.prototype = {
    call$0() {
      return J.get$length$asx(this._0_2._readFinal$0()) <= 0;
    },
    $signature: 1
  };
  A.SassNumber_multiplyUnits_closure19.prototype = {
    call$1(denominator) {
      var factor = A.conversionFactor0(this.numerator, denominator);
      if (factor == null)
        return false;
      this._box_0.value /= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber_multiplyUnits_closure20.prototype = {
    call$0() {
      return this.newNumerators.push(this.numerator);
    },
    $signature: 0
  };
  A.SassNumber_multiplyUnits_closure21.prototype = {
    call$1(denominator) {
      var factor = A.conversionFactor0(this.numerator, denominator);
      if (factor == null)
        return false;
      this._box_0.value /= factor;
      return true;
    },
    $signature: 10
  };
  A.SassNumber_multiplyUnits_closure22.prototype = {
    call$0() {
      return this.newNumerators.push(this.numerator);
    },
    $signature: 0
  };
  A.SassNumber__areAnyConvertible_closure0.prototype = {
    call$1(unit1) {
      var innerMap, t1,
        _0_0 = B.Map_nfuzN.$index(0, unit1);
      $label0$0: {
        if (_0_0 != null) {
          innerMap = _0_0;
          t1 = true;
        } else {
          innerMap = null;
          t1 = false;
        }
        if (t1) {
          t1 = J.any$1$ax(this.units2, innerMap.get$containsKey());
          break $label0$0;
        }
        t1 = J.contains$1$asx(this.units2, unit1);
        break $label0$0;
      }
      return t1;
    },
    $signature: 10
  };
  A.SassNumber__unitString_closure3.prototype = {
    call$0() {
      return J.get$length$asx(this._0_0._0) <= 0;
    },
    $signature: 1
  };
  A.SassNumber__unitString_closure4.prototype = {
    call$0() {
      return this._0_0._1;
    },
    $signature: 26
  };
  A.SassNumber__unitString_closure5.prototype = {
    call$0() {
      return J.get$length$asx(this._0_5._readFinal$0());
    },
    $signature: 3
  };
  A.SassNumber__unitString_closure6.prototype = {
    call$0() {
      return this._0_6._readFinal$0() <= 0;
    },
    $signature: 1
  };
  A.SassNumber__canonicalizeUnitList_closure0.prototype = {
    call$1(unit) {
      var t1,
        type = $.$get$_typesByUnit0().$index(0, unit);
      if (type == null)
        t1 = unit;
      else {
        t1 = B.Map_ws7dy.$index(0, type);
        t1.toString;
        t1 = B.JSArray_methods.get$first(t1);
      }
      return t1;
    },
    $signature: 7
  };
  A.SassNumber__canonicalMultiplier_closure0.prototype = {
    call$2(multiplier, unit) {
      return multiplier * this.$this.canonicalMultiplierForUnit$1(unit);
    },
    $signature: 220
  };
  A.SassNumber_unitSuggestion_closure1.prototype = {
    call$1(unit) {
      return " * 1" + unit;
    },
    $signature: 7
  };
  A.SassNumber_unitSuggestion_closure2.prototype = {
    call$1(unit) {
      return " / 1" + unit;
    },
    $signature: 7
  };
  A.SupportsOperation0.prototype = {
    toString$0(_) {
      var _this = this;
      return _this._operation0$_parenthesize$1(_this.left) + " " + _this.operator + " " + _this._operation0$_parenthesize$1(_this.right);
    },
    _operation0$_parenthesize$1(condition) {
      var t1;
      if (!(condition instanceof A.SupportsNegation0))
        t1 = condition instanceof A.SupportsOperation0 && condition.operator === this.operator;
      else
        t1 = true;
      return t1 ? "(" + condition.toString$0(0) + ")" : condition.toString$0(0);
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ParentSelector0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitParentSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unify$1(compound) {
      return A.throwExpression(A.UnsupportedError$("& doesn't support unification."));
    }
  };
  A.ParentStatement0.prototype = {$isAstNode0: 1, $isStatement0: 1};
  A.ParentStatement_closure0.prototype = {
    call$1(child) {
      var t1, imports;
      $label0$0: {
        if (child instanceof A.VariableDeclaration0 || child instanceof A.FunctionRule0 || child instanceof A.MixinRule0) {
          t1 = true;
          break $label0$0;
        }
        if (child instanceof A.ImportRule0) {
          imports = child.imports;
          t1 = true;
        } else {
          imports = null;
          t1 = false;
        }
        if (t1) {
          t1 = (imports && B.JSArray_methods).any$1(imports, new A.ParentStatement__closure0());
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $signature: 257
  };
  A.ParentStatement__closure0.prototype = {
    call$1($import) {
      return $import instanceof A.DynamicImport0;
    },
    $signature: 258
  };
  A.ParenthesizedExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitParenthesizedExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "(" + this.expression.toString$0(0) + ")";
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.Parser1.prototype = {
    _parser0$_parseIdentifier$0() {
      return this.wrapSpanFormatException$1(new A.Parser__parseIdentifier_closure0(this));
    },
    whitespace$0() {
      do
        this.whitespaceWithoutComments$0();
      while (this.scanComment$0());
    },
    whitespaceWithoutComments$0() {
      var t3,
        t1 = this.scanner,
        t2 = t1.string.length;
      while (true) {
        if (t1._string_scanner$_position !== t2) {
          t3 = t1.peekChar$0();
          t3 = t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12;
        } else
          t3 = false;
        if (!t3)
          break;
        t1.readChar$0();
      }
    },
    spaces$0() {
      var t3,
        t1 = this.scanner,
        t2 = t1.string.length;
      while (true) {
        if (t1._string_scanner$_position !== t2) {
          t3 = t1.peekChar$0();
          t3 = t3 === 32 || t3 === 9;
        } else
          t3 = false;
        if (!t3)
          break;
        t1.readChar$0();
      }
    },
    scanComment$0() {
      var _0_0,
        t1 = this.scanner;
      if (t1.peekChar$0() !== 47)
        return false;
      _0_0 = t1.peekChar$1(1);
      if (47 === _0_0) {
        this.silentComment$0();
        return true;
      }
      if (42 === _0_0) {
        this.loudComment$0();
        return true;
      }
      return false;
    },
    expectWhitespace$0() {
      var t2, t3,
        t1 = this.scanner;
      if (t1._string_scanner$_position !== t1.string.length) {
        t2 = t1.peekChar$0();
        t3 = !(t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12 || this.scanComment$0());
        t2 = t3;
      } else
        t2 = true;
      if (t2)
        t1.error$1(0, "Expected whitespace.");
      this.whitespace$0();
    },
    silentComment$0() {
      var t2, t3,
        t1 = this.scanner;
      t1.expect$1("//");
      t2 = t1.string.length;
      while (true) {
        if (t1._string_scanner$_position !== t2) {
          t3 = t1.peekChar$0();
          t3 = !(t3 === 10 || t3 === 13 || t3 === 12);
        } else
          t3 = false;
        if (!t3)
          break;
        t1.readChar$0();
      }
    },
    loudComment$0() {
      var next,
        t1 = this.scanner;
      t1.expect$1("/*");
      for (; true;) {
        if (t1.readChar$0() !== 42)
          continue;
        do
          next = t1.readChar$0();
        while (next === 42);
        if (next === 47)
          break;
      }
    },
    identifier$2$normalize$unit(normalize, unit) {
      var t2, _0_0, _this = this,
        _s20_ = "Expected identifier.",
        text = new A.StringBuffer(""),
        t1 = _this.scanner;
      if (t1.scanChar$1(45)) {
        t2 = text._contents = "" + A.Primitives_stringFromCharCode(45);
        if (t1.scanChar$1(45)) {
          text._contents = t2 + A.Primitives_stringFromCharCode(45);
          _this._parser0$_identifierBody$3$normalize$unit(text, normalize, unit);
          t1 = text._contents;
          return t1.charCodeAt(0) == 0 ? t1 : t1;
        }
      } else
        t2 = "";
      $label0$0: {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          t1.error$1(0, _s20_);
        if (95 === _0_0 && normalize) {
          t1.readChar$0();
          text._contents = t2 + A.Primitives_stringFromCharCode(45);
          break $label0$0;
        }
        if (_0_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_0_0) || _0_0 >= 128) {
          text._contents = t2 + A.Primitives_stringFromCharCode(t1.readChar$0());
          break $label0$0;
        }
        if (92 === _0_0) {
          text._contents = t2 + _this.escape$1$identifierStart(true);
          break $label0$0;
        }
        t1.error$1(0, _s20_);
      }
      _this._parser0$_identifierBody$3$normalize$unit(text, normalize, unit);
      t1 = text._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    identifier$0() {
      return this.identifier$2$normalize$unit(false, false);
    },
    identifier$1$normalize(normalize) {
      return this.identifier$2$normalize$unit(normalize, false);
    },
    identifier$1$unit(unit) {
      return this.identifier$2$normalize$unit(false, unit);
    },
    _parser0$_identifierBody$3$normalize$unit(text, normalize, unit) {
      var t1, _1_0, _0_0, t2;
      for (t1 = this.scanner; true;) {
        _1_0 = t1.peekChar$0();
        if (_1_0 == null)
          break;
        if (45 === _1_0 && unit) {
          _0_0 = t1.peekChar$1(1);
          if (46 !== _0_0)
            t2 = A._isInt(_0_0) && _0_0 >= 48 && _0_0 <= 57;
          else
            t2 = true;
          if (t2)
            break;
          text._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (95 === _1_0 && normalize) {
          t1.readChar$0();
          text._contents += A.Primitives_stringFromCharCode(45);
          continue;
        }
        if (_1_0 !== 95) {
          if (!(_1_0 >= 97 && _1_0 <= 122))
            t2 = _1_0 >= 65 && _1_0 <= 90;
          else
            t2 = true;
          t2 = t2 || _1_0 >= 128;
        } else
          t2 = true;
        if (!t2)
          t2 = _1_0 >= 48 && _1_0 <= 57 || _1_0 === 45;
        else
          t2 = true;
        if (t2) {
          text._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (92 === _1_0) {
          text._contents += this.escape$0();
          continue;
        }
        break;
      }
    },
    _parser0$_identifierBody$1(text) {
      return this._parser0$_identifierBody$3$normalize$unit(text, false, false);
    },
    string$0() {
      var buffer, _0_0, t2,
        t1 = this.scanner,
        quote = t1.readChar$0();
      if (quote !== 39 && quote !== 34)
        t1.error$2$position(0, "Expected string.", t1._string_scanner$_position - 1);
      buffer = new A.StringBuffer("");
      for (; true;) {
        _0_0 = t1.peekChar$0();
        if (_0_0 === quote) {
          t1.readChar$0();
          break;
        }
        if (_0_0 == null || _0_0 === 10 || _0_0 === 13 || _0_0 === 12)
          t1.error$1(0, "Expected " + A.Primitives_stringFromCharCode(quote) + ".");
        if (92 === _0_0) {
          t2 = t1.peekChar$1(1);
          if (t2 === 10 || t2 === 13 || t2 === 12) {
            t1.readChar$0();
            t1.readChar$0();
          } else
            buffer._contents += A.Primitives_stringFromCharCode(A.consumeEscapedCharacter0(t1));
          continue;
        }
        buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
      }
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    declarationValue$1$allowEmpty(allowEmpty) {
      var t1, t2, wroteNewline, next, start, end, t3, _0_0, url, _this = this,
        buffer = new A.StringBuffer(""),
        brackets = A._setArrayType([], type$.JSArray_int);
      for (t1 = _this.scanner, t2 = _this.get$string(), wroteNewline = false; true;) {
        next = t1.peekChar$0();
        if (next == null)
          break;
        if (92 === next) {
          buffer._contents += _this.escape$1$identifierStart(true);
          wroteNewline = false;
          continue;
        }
        if (34 === next || 39 === next) {
          start = t1._string_scanner$_position;
          t2.call$0();
          end = t1._string_scanner$_position;
          buffer._contents += B.JSString_methods.substring$2(t1.string, start, end);
          wroteNewline = false;
          continue;
        }
        if (47 === next) {
          if (t1.peekChar$1(1) === 42) {
            t3 = _this.get$loudComment();
            start = t1._string_scanner$_position;
            t3.call$0();
            end = t1._string_scanner$_position;
            buffer._contents += B.JSString_methods.substring$2(t1.string, start, end);
          } else
            buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          wroteNewline = false;
          continue;
        }
        if (32 === next || 9 === next) {
          if (!wroteNewline) {
            t3 = t1.peekChar$1(1);
            t3 = !(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12);
          } else
            t3 = true;
          if (t3)
            buffer._contents += A.Primitives_stringFromCharCode(32);
          t1.readChar$0();
          continue;
        }
        if (10 === next || 13 === next || 12 === next) {
          t3 = t1.peekChar$1(-1);
          if (!(t3 === 10 || t3 === 13 || t3 === 12))
            buffer._contents += "\n";
          t1.readChar$0();
          wroteNewline = true;
          continue;
        }
        if (40 === next || 123 === next || 91 === next) {
          buffer._contents += A.Primitives_stringFromCharCode(next);
          brackets.push(A.opposite0(t1.readChar$0()));
          wroteNewline = false;
          continue;
        }
        if (41 === next || 125 === next || 93 === next) {
          if (brackets.length === 0)
            break;
          buffer._contents += A.Primitives_stringFromCharCode(next);
          t1.expectChar$1(brackets.pop());
          wroteNewline = false;
          continue;
        }
        if (59 === next) {
          if (brackets.length === 0)
            break;
          buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (117 === next || 85 === next) {
          _0_0 = _this.tryUrl$0();
          if (_0_0 != null) {
            url = _0_0;
            t3 = true;
          } else {
            url = null;
            t3 = false;
          }
          if (t3)
            buffer._contents += A.S(url);
          else
            buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          wroteNewline = false;
          continue;
        }
        if (_this.lookingAtIdentifier$0())
          buffer._contents += _this.identifier$0();
        else
          buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
        wroteNewline = false;
      }
      if (brackets.length !== 0)
        t1.expectChar$1(B.JSArray_methods.get$last(brackets));
      if (!allowEmpty && buffer._contents.length === 0)
        t1.error$1(0, "Expected token.");
      t1 = buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    declarationValue$0() {
      return this.declarationValue$1$allowEmpty(false);
    },
    tryUrl$0() {
      var buffer, _0_0, t2, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (!_this.scanIdentifier$1("url"))
        return null;
      if (!t1.scanChar$1(40)) {
        t1.set$state(start);
        return null;
      }
      _this.whitespace$0();
      buffer = new A.StringBuffer("");
      buffer._contents = "" + "url(";
      for (; true;) {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          break;
        if (92 === _0_0) {
          buffer._contents += _this.escape$0();
          continue;
        }
        if (37 !== _0_0)
          if (38 !== _0_0)
            if (35 !== _0_0)
              t2 = _0_0 >= 42 && _0_0 <= 126 || _0_0 >= 128;
            else
              t2 = true;
          else
            t2 = true;
        else
          t2 = true;
        if (t2) {
          buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (_0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12) {
          _this.whitespace$0();
          if (t1.peekChar$0() !== 41)
            break;
          continue;
        }
        if (41 === _0_0) {
          t2 = buffer._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          return t2.charCodeAt(0) == 0 ? t2 : t2;
        }
        break;
      }
      t1.set$state(start);
      return null;
    },
    variableName$0() {
      this.scanner.expectChar$1(36);
      return this.identifier$1$normalize(true);
    },
    escape$1$identifierStart(identifierStart) {
      var value, _0_0, i, next, t2, exception,
        _s25_ = "Expected escape sequence.",
        t1 = this.scanner,
        start = t1._string_scanner$_position;
      t1.expectChar$1(92);
      value = 0;
      $label0$1: {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          t1.error$1(0, _s25_);
        if (_0_0 === 10 || _0_0 === 13 || _0_0 === 12)
          t1.error$1(0, _s25_);
        if (A.CharacterExtension_get_isHex0(_0_0)) {
          for (i = 0; i < 6; ++i) {
            next = t1.peekChar$0();
            if (next != null) {
              if (!(next >= 48 && next <= 57))
                if (!(next >= 97 && next <= 102))
                  t2 = next >= 65 && next <= 70;
                else
                  t2 = true;
              else
                t2 = true;
              t2 = !t2;
            } else
              t2 = true;
            if (t2)
              break;
            value *= 16;
            value += A.asHex0(t1.readChar$0());
          }
          this.scanCharIf$1(new A.Parser_escape_closure0());
          break $label0$1;
        }
        value = t1.readChar$0();
      }
      if (identifierStart) {
        t2 = value;
        t2 = t2 === 95 || A.CharacterExtension_get_isAlphabetic0(t2) || t2 >= 128;
      } else {
        t2 = value;
        if (!(t2 === 95 || A.CharacterExtension_get_isAlphabetic0(t2) || t2 >= 128))
          t2 = t2 >= 48 && t2 <= 57 || t2 === 45;
        else
          t2 = true;
      }
      if (t2)
        try {
          t2 = A.Primitives_stringFromCharCode(value);
          return t2;
        } catch (exception) {
          if (type$.RangeError._is(A.unwrapException(exception)))
            t1.error$3$length$position(0, "Invalid Unicode code point.", t1._string_scanner$_position - start, start);
          else
            throw exception;
        }
      else {
        if (!(value <= 31))
          if (!J.$eq$(value, 127))
            if (identifierStart) {
              t1 = value;
              t1 = t1 >= 48 && t1 <= 57;
            } else
              t1 = false;
          else
            t1 = true;
        else
          t1 = true;
        if (t1) {
          t1 = "" + A.Primitives_stringFromCharCode(92);
          if (value > 15)
            t1 += A.Primitives_stringFromCharCode(A.hexCharFor0(B.JSNumber_methods._shrOtherPositive$1(value, 4)));
          t1 = t1 + A.Primitives_stringFromCharCode(A.hexCharFor0(value & 15)) + A.Primitives_stringFromCharCode(32);
          return t1.charCodeAt(0) == 0 ? t1 : t1;
        } else
          return A.String_String$fromCharCodes(A._setArrayType([92, value], type$.JSArray_int), 0, null);
      }
    },
    escape$0() {
      return this.escape$1$identifierStart(false);
    },
    scanCharIf$1(condition) {
      var t1 = this.scanner;
      if (!condition.call$1(t1.peekChar$0()))
        return false;
      t1.readChar$0();
      return true;
    },
    scanIdentChar$2$caseSensitive(char, caseSensitive) {
      var next, t3,
        t1 = new A.Parser_scanIdentChar_matches0(caseSensitive, char),
        t2 = this.scanner,
        _0_0 = t2.peekChar$0();
      if (_0_0 != null) {
        next = _0_0;
        t3 = true;
      } else {
        next = null;
        t3 = false;
      }
      if (t3 && t1.call$1(next)) {
        t2.readChar$0();
        return true;
      }
      if (92 === _0_0) {
        t3 = t2._string_scanner$_position;
        if (t1.call$1(A.consumeEscapedCharacter0(t2)))
          return true;
        t2.set$state(new A._SpanScannerState(t2, t3));
      }
      return false;
    },
    scanIdentChar$1(char) {
      return this.scanIdentChar$2$caseSensitive(char, false);
    },
    expectIdentChar$1(letter) {
      var t1;
      if (this.scanIdentChar$2$caseSensitive(letter, false))
        return;
      t1 = this.scanner;
      t1.error$2$position(0, 'Expected "' + A.Primitives_stringFromCharCode(letter) + '".', t1._string_scanner$_position);
    },
    lookingAtIdentifier$1($forward) {
      var t1, _1_0, t2, _0_0;
      if ($forward == null)
        $forward = 0;
      t1 = this.scanner;
      _1_0 = t1.peekChar$1($forward);
      $label0$0: {
        if (A._isInt(_1_0))
          t2 = _1_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_1_0) || _1_0 >= 128;
        else
          t2 = false;
        if (t2 || 92 === _1_0) {
          t1 = true;
          break $label0$0;
        }
        if (45 === _1_0) {
          _0_0 = t1.peekChar$1($forward + 1);
          $label1$1: {
            if (A._isInt(_0_0))
              t1 = _0_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_0_0) || _0_0 >= 128;
            else
              t1 = false;
            if (t1 || 92 === _0_0 || 45 === _0_0) {
              t1 = true;
              break $label1$1;
            }
            t1 = false;
            break $label1$1;
          }
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    lookingAtIdentifier$0() {
      return this.lookingAtIdentifier$1(null);
    },
    lookingAtIdentifierBody$0() {
      var t1,
        next = this.scanner.peekChar$0();
      if (next != null) {
        if (!(next === 95 || A.CharacterExtension_get_isAlphabetic0(next) || next >= 128))
          t1 = next >= 48 && next <= 57 || next === 45;
        else
          t1 = true;
        t1 = t1 || next === 92;
      } else
        t1 = false;
      return t1;
    },
    scanIdentifier$2$caseSensitive(text, caseSensitive) {
      var t1, t2, _this = this;
      if (!_this.lookingAtIdentifier$0())
        return false;
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      if (_this._parser0$_consumeIdentifier$2(text, caseSensitive) && !_this.lookingAtIdentifierBody$0())
        return true;
      else {
        t1.set$state(new A._SpanScannerState(t1, t2));
        return false;
      }
    },
    scanIdentifier$1(text) {
      return this.scanIdentifier$2$caseSensitive(text, false);
    },
    _parser0$_consumeIdentifier$2(text, caseSensitive) {
      var t1, t2, t3;
      for (t1 = new A.CodeUnits(text), t1 = new A.ListIterator(t1, t1.get$length(t1)), t2 = A._instanceType(t1)._precomputed1; t1.moveNext$0();) {
        t3 = t1.__internal$_current;
        if (!this.scanIdentChar$2$caseSensitive(t3 == null ? t2._as(t3) : t3, caseSensitive))
          return false;
      }
      return true;
    },
    expectIdentifier$2$name(text, $name) {
      var t1, start, t2, t3, t4, t5, t6;
      if ($name == null)
        $name = '"' + text + '"';
      t1 = this.scanner;
      start = t1._string_scanner$_position;
      for (t2 = new A.CodeUnits(text), t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = "Expected " + $name, t4 = t3 + ".", t5 = A._instanceType(t2)._precomputed1; t2.moveNext$0();) {
        t6 = t2.__internal$_current;
        if (this.scanIdentChar$2$caseSensitive(t6 == null ? t5._as(t6) : t6, false))
          continue;
        t1.error$2$position(0, t4, start);
      }
      if (!this.lookingAtIdentifierBody$0())
        return;
      t1.error$2$position(0, t3, start);
    },
    expectIdentifier$1(text) {
      return this.expectIdentifier$2$name(text, null);
    },
    rawText$1(consumer) {
      var t1 = this.scanner,
        start = t1._string_scanner$_position;
      consumer.call$0();
      return t1.substring$1(0, start);
    },
    spanFrom$1(state) {
      var span = this.scanner.spanFrom$1(state);
      return this._parser0$_interpolationMap == null ? span : new A.LazyFileSpan0(new A.Parser_spanFrom_closure0(this, span));
    },
    error$3(_, message, span, trace) {
      var exception = new A.StringScannerException(this.scanner.string, message, span);
      if (trace == null)
        throw A.wrapException(exception);
      else
        A.throwWithTrace0(exception, this.get$error(this), trace);
    },
    error$2($receiver, message, span) {
      return this.error$3($receiver, message, span, null);
    },
    withErrorMessage$1$2(message, callback) {
      var error, stackTrace, t1, exception;
      try {
        t1 = callback.call$0();
        return t1;
      } catch (exception) {
        t1 = A.unwrapException(exception);
        if (type$.SourceSpanFormatException._is(t1)) {
          error = t1;
          stackTrace = A.getTraceFromException(exception);
          t1 = J.get$span$z(error);
          A.throwWithTrace0(new A.SourceSpanFormatException(error.get$source(), message, t1), error, stackTrace);
        } else
          throw exception;
      }
    },
    withErrorMessage$2(message, callback) {
      return this.withErrorMessage$1$2(message, callback, type$.dynamic);
    },
    wrapSpanFormatException$1$1(callback) {
      var error, stackTrace, map, error0, stackTrace0, span, error1, stackTrace1, span0, secondarySpans, t1, t2, span1, description, _0_0, t3, exception, t4, _this = this,
        _s8_ = "expected";
      try {
        try {
          t3 = callback.call$0();
          return t3;
        } catch (exception) {
          t3 = A.unwrapException(exception);
          if (type$.SourceSpanFormatException._is(t3)) {
            error = t3;
            stackTrace = A.getTraceFromException(exception);
            map = _this._parser0$_interpolationMap;
            if (map == null)
              throw exception;
            A.throwWithTrace0(map.mapException$1(error), error, stackTrace);
          } else
            throw exception;
        }
      } catch (exception) {
        t3 = A.unwrapException(exception);
        if (type$.SourceSpanFormatException._is(t3)) {
          error0 = t3;
          stackTrace0 = A.getTraceFromException(exception);
          span = J.get$span$z(error0);
          if (A.startsWithIgnoreCase0(error0._span_exception$_message, _s8_))
            span = _this._parser0$_adjustExceptionSpan$1(span);
          t1 = error0._span_exception$_message;
          t2 = span;
          A.throwWithTrace0(new A.SassFormatException0(B.Set_empty, t1, t2), error0, stackTrace0);
        } else if (type$.MultiSourceSpanFormatException._is(t3)) {
          error1 = t3;
          stackTrace1 = A.getTraceFromException(exception);
          span0 = J.get$span$z(error1);
          t3 = type$.FileSpan;
          t4 = type$.String;
          secondarySpans = error1.get$secondarySpans().cast$2$0(0, t3, t4);
          if (A.startsWithIgnoreCase0(error1._span_exception$_message, _s8_)) {
            span0 = _this._parser0$_adjustExceptionSpan$1(span0);
            t1 = A.LinkedHashMap_LinkedHashMap$_empty(t3, t4);
            for (t3 = A.MapExtensions_get_pairs0(secondarySpans, t3, t4), t3 = t3.get$iterator(t3); t3.moveNext$0();) {
              t2 = t3.get$current(t3);
              span1 = null;
              description = null;
              _0_0 = t2;
              span1 = _0_0._0;
              description = _0_0._1;
              J.$indexSet$ax(t1, _this._parser0$_adjustExceptionSpan$1(span1), description);
            }
            secondarySpans = t1;
          }
          A.throwWithTrace0(A.MultiSpanSassFormatException$0(error1._span_exception$_message, span0, error1.get$primaryLabel(), secondarySpans, null), error1, stackTrace1);
        } else
          throw exception;
      }
    },
    wrapSpanFormatException$1(callback) {
      return this.wrapSpanFormatException$1$1(callback, type$.dynamic);
    },
    _parser0$_adjustExceptionSpan$1(span) {
      var start, t1;
      if (span.get$length(span) > 0)
        return span;
      start = this._parser0$_firstNewlineBefore$1(span.get$start(span));
      if (start.$eq(0, span.get$start(span)))
        t1 = span;
      else {
        t1 = start.offset;
        t1 = A._FileSpan$(start.file, t1, t1);
      }
      return t1;
    },
    _parser0$_firstNewlineBefore$1($location) {
      var lastNewline, codeUnit,
        t1 = $location.file,
        t2 = $location.offset,
        text = A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t1._decodedChars, 0, t2), 0, null),
        index = t2 - 1;
      for (lastNewline = null; index >= 0;) {
        codeUnit = text.charCodeAt(index);
        if (!(codeUnit === 32 || codeUnit === 9 || codeUnit === 10 || codeUnit === 13 || codeUnit === 12)) {
          if (lastNewline == null)
            t1 = $location;
          else {
            t2 = new A.FileLocation(t1, lastNewline);
            t2.FileLocation$_$2(t1, lastNewline);
            t1 = t2;
          }
          return t1;
        }
        if (codeUnit === 10 || codeUnit === 13 || codeUnit === 12)
          lastNewline = index;
        --index;
      }
      return $location;
    }
  };
  A.Parser__parseIdentifier_closure0.prototype = {
    call$0() {
      var t1 = this.$this,
        result = t1.identifier$0();
      t1.scanner.expectDone$0();
      return result;
    },
    $signature: 22
  };
  A.Parser_escape_closure0.prototype = {
    call$1(char) {
      return char === 32 || char === 9 || char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A.Parser_scanIdentChar_matches0.prototype = {
    call$1(actual) {
      var t1 = this.char;
      return this.caseSensitive ? actual === t1 : A.characterEqualsIgnoreCase0(t1, actual);
    },
    $signature: 47
  };
  A.Parser_spanFrom_closure0.prototype = {
    call$0() {
      return this.$this._parser0$_interpolationMap.mapSpan$1(this.span);
    },
    $signature: 33
  };
  A.PlaceholderSelector0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitPlaceholderSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      return new A.PlaceholderSelector0(this.name + suffix, this.span);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.PlaceholderSelector0 && other.name === this.name;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    }
  };
  A.PlainCssCallable0.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.PlainCssCallable0 && this.name === other.name;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name);
    },
    $isAsyncCallable0: 1,
    $isCallable: 1,
    get$name(receiver) {
      return this.name;
    }
  };
  A.PrefixedMapView0.prototype = {
    get$keys(_) {
      return new A._PrefixedKeys0(this);
    },
    get$length(_) {
      var t1 = this._prefixed_map_view0$_map;
      return t1.get$length(t1);
    },
    get$isEmpty(_) {
      var t1 = this._prefixed_map_view0$_map;
      return t1.get$isEmpty(t1);
    },
    get$isNotEmpty(_) {
      var t1 = this._prefixed_map_view0$_map;
      return t1.get$isNotEmpty(t1);
    },
    $index(_, key) {
      return typeof key == "string" && B.JSString_methods.startsWith$1(key, this._prefixed_map_view0$_prefix) ? this._prefixed_map_view0$_map.$index(0, J.substring$1$s(key, this._prefixed_map_view0$_prefix.length)) : null;
    },
    containsKey$1(key) {
      return typeof key == "string" && B.JSString_methods.startsWith$1(key, this._prefixed_map_view0$_prefix) && this._prefixed_map_view0$_map.containsKey$1(J.substring$1$s(key, this._prefixed_map_view0$_prefix.length));
    }
  };
  A._PrefixedKeys0.prototype = {
    get$length(_) {
      var t1 = this._prefixed_map_view0$_view._prefixed_map_view0$_map;
      return t1.get$length(t1);
    },
    get$iterator(_) {
      var t1 = this._prefixed_map_view0$_view._prefixed_map_view0$_map;
      t1 = J.map$1$1$ax(t1.get$keys(t1), new A._PrefixedKeys_iterator_closure0(this), type$.String);
      return t1.get$iterator(t1);
    },
    contains$1(_, key) {
      return this._prefixed_map_view0$_view.containsKey$1(key);
    }
  };
  A._PrefixedKeys_iterator_closure0.prototype = {
    call$1(key) {
      return this.$this._prefixed_map_view0$_view._prefixed_map_view0$_prefix + key;
    },
    $signature: 7
  };
  A.PseudoSelector0.prototype = {
    get$isHostContext() {
      return this.isClass && this.name === "host-context" && this.selector != null;
    },
    get$specificity() {
      var result, _this = this,
        value = _this._pseudo$__PseudoSelector_specificity_FI;
      if (value === $) {
        result = new A.PseudoSelector_specificity_closure0(_this).call$0();
        _this._pseudo$__PseudoSelector_specificity_FI !== $ && A.throwUnnamedLateFieldADI();
        _this._pseudo$__PseudoSelector_specificity_FI = result;
        value = result;
      }
      return value;
    },
    withSelector$1(selector) {
      var _this = this;
      return A.PseudoSelector$0(_this.name, _this.span, _this.argument, !_this.isClass, selector);
    },
    addSuffix$1(suffix) {
      var _this = this;
      if (_this.argument != null || _this.selector != null)
        _this.super$SimpleSelector$addSuffix0(suffix);
      return A.PseudoSelector$0(_this.name + suffix, _this.span, null, !_this.isClass, null);
    },
    unify$1(compound) {
      var other, result, t2, addedThis, _i, simple, _this = this,
        t1 = _this.name;
      if (t1 === "host" || t1 === "host-context") {
        if (!B.JSArray_methods.every$1(compound, new A.PseudoSelector_unify_closure0()))
          return null;
      } else {
        if (compound.length === 1) {
          other = compound[0];
          if (!(other instanceof A.UniversalSelector0))
            if (other instanceof A.PseudoSelector0)
              t1 = other.isClass && other.name === "host" || other.get$isHostContext();
            else
              t1 = false;
          else
            t1 = true;
        } else {
          other = null;
          t1 = false;
        }
        if (t1)
          return other.unify$1(A._setArrayType([_this], type$.JSArray_SimpleSelector_2));
      }
      if (B.JSArray_methods.contains$1(compound, _this))
        return compound;
      result = A._setArrayType([], type$.JSArray_SimpleSelector_2);
      for (t1 = compound.length, t2 = !_this.isClass, addedThis = false, _i = 0; _i < compound.length; compound.length === t1 || (0, A.throwConcurrentModificationError)(compound), ++_i) {
        simple = compound[_i];
        if (simple instanceof A.PseudoSelector0 && !simple.isClass) {
          if (t2)
            return null;
          result.push(_this);
          addedThis = true;
        }
        result.push(simple);
      }
      if (!addedThis)
        result.push(_this);
      return result;
    },
    isSuperselector$1(other) {
      var selector, t1, t2, _this = this;
      if (_this.super$SimpleSelector$isSuperselector0(other))
        return true;
      selector = _this.selector;
      if (selector == null)
        return _this.$eq(0, other);
      if (other instanceof A.PseudoSelector0 && !_this.isClass && !other.isClass && _this.normalizedName === "slotted" && other.name === _this.name) {
        t1 = A.NullableExtension_andThen0(other.selector, selector.get$isSuperselector());
        return t1 == null ? false : t1;
      }
      t1 = type$.JSArray_SimpleSelector_2;
      t2 = _this.span;
      return A.compoundIsSuperselector0(A.CompoundSelector$0(A._setArrayType([_this], t1), t2), A.CompoundSelector$0(A._setArrayType([other], t1), t2), null);
    },
    accept$1$1(visitor) {
      return visitor.visitPseudoSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    $eq(_, other) {
      var _this = this;
      if (other == null)
        return false;
      return other instanceof A.PseudoSelector0 && other.name === _this.name && other.isClass === _this.isClass && other.argument == _this.argument && J.$eq$(other.selector, _this.selector);
    },
    get$hashCode(_) {
      var _this = this,
        t1 = B.JSString_methods.get$hashCode(_this.name),
        t2 = !_this.isClass ? 519018 : 218159;
      return t1 ^ t2 ^ J.get$hashCode$(_this.argument) ^ J.get$hashCode$(_this.selector);
    }
  };
  A.PseudoSelector_specificity_closure0.prototype = {
    call$0() {
      var selector, t2,
        t1 = this.$this;
      if (!t1.isClass)
        return 1;
      selector = t1.selector;
      if (selector == null)
        return A.SimpleSelector0.prototype.get$specificity.call(t1);
      switch (t1.normalizedName) {
        case "where":
          return 0;
        case "is":
        case "not":
        case "has":
        case "matches":
          t1 = selector.components;
          return A.IterableIntegerExtension_get_max(new A.MappedListIterable(t1, new A.PseudoSelector_specificity__closure1(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,int>")));
        case "nth-child":
        case "nth-last-child":
          t1 = A.SimpleSelector0.prototype.get$specificity.call(t1);
          t2 = selector.components;
          return t1 + A.IterableIntegerExtension_get_max(new A.MappedListIterable(t2, new A.PseudoSelector_specificity__closure2(), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,int>")));
        default:
          return A.SimpleSelector0.prototype.get$specificity.call(t1);
      }
    },
    $signature: 3
  };
  A.PseudoSelector_specificity__closure1.prototype = {
    call$1(component) {
      return component.get$specificity();
    },
    $signature: 274
  };
  A.PseudoSelector_specificity__closure2.prototype = {
    call$1(component) {
      return component.get$specificity();
    },
    $signature: 274
  };
  A.PseudoSelector_unify_closure0.prototype = {
    call$1(simple) {
      var t1;
      if (simple instanceof A.PseudoSelector0)
        t1 = simple.isClass && simple.name === "host" || simple.selector != null;
      else
        t1 = false;
      return t1;
    },
    $signature: 15
  };
  A.PublicMemberMapView0.prototype = {
    get$keys(_) {
      var t1 = this._public_member_map_view0$_inner;
      return J.where$1$ax(t1.get$keys(t1), A.utils0__isPublic$closure());
    },
    containsKey$1(key) {
      return typeof key == "string" && A.isPublic0(key) && this._public_member_map_view0$_inner.containsKey$1(key);
    },
    $index(_, key) {
      if (typeof key == "string" && A.isPublic0(key))
        return this._public_member_map_view0$_inner.$index(0, key);
      return null;
    }
  };
  A.QualifiedName0.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.QualifiedName0 && other.name === this.name && other.namespace == this.namespace;
    },
    get$hashCode(_) {
      return B.JSString_methods.get$hashCode(this.name) ^ J.get$hashCode$(this.namespace);
    },
    toString$0(_) {
      var t1 = this.namespace,
        t2 = this.name;
      return t1 == null ? t2 : t1 + "|" + t2;
    }
  };
  A.JSClass0.prototype = {};
  A.JSClassExtension_setCustomInspect_closure.prototype = {
    call$4($self, _, __, ___) {
      return this.inspect.call$1($self);
    },
    call$3($self, _, __) {
      return this.call$4($self, _, __, null);
    },
    "call*": "call$4",
    $requiredArgCount: 3,
    $defaultValues() {
      return [null];
    },
    $signature: 546
  };
  A.JSClassExtension_get_defineStaticMethod_closure.prototype = {
    call$2($name, body) {
      this._this[$name] = A.allowInteropNamed($name, body);
      return null;
    },
    $signature: 144
  };
  A.JSClassExtension_get_defineMethod_closure.prototype = {
    call$2($name, body) {
      J.get$$prototype$x(this._this)[$name] = A.allowInteropCaptureThisNamed($name, body);
      return null;
    },
    $signature: 144
  };
  A.JSClassExtension_get_defineGetter_closure.prototype = {
    call$2($name, body) {
      A.defineGetter(J.get$$prototype$x(this._this), $name, body, null);
      return null;
    },
    $signature: 144
  };
  A.RenderContext0.prototype = {};
  A.RenderContextOptions0.prototype = {};
  A.RenderContextResult0.prototype = {};
  A.RenderContextResultStats0.prototype = {};
  A.RenderOptions.prototype = {};
  A.RenderResult.prototype = {};
  A.RenderResultStats.prototype = {};
  A.ReplaceExpressionVisitor0.prototype = {
    visitBinaryOperationExpression$1(node) {
      return new A.BinaryOperationExpression0(node.operator, node.left.accept$1(this), node.right.accept$1(this), false);
    },
    visitBooleanExpression$1(node) {
      return node;
    },
    visitColorExpression$1(node) {
      return node;
    },
    visitFunctionExpression$1(node) {
      return new A.FunctionExpression0(node.namespace, node.originalName, this.visitArgumentInvocation$1(node.$arguments), node.span);
    },
    visitInterpolatedFunctionExpression$1(node) {
      return new A.InterpolatedFunctionExpression0(this.visitInterpolation$1(node.name), this.visitArgumentInvocation$1(node.$arguments), node.span);
    },
    visitIfExpression$1(node) {
      return new A.IfExpression0(this.visitArgumentInvocation$1(node.$arguments), node.span);
    },
    visitListExpression$1(node) {
      var t1 = node.contents;
      return new A.ListExpression0(A.List_List$unmodifiable(new A.MappedListIterable(t1, new A.ReplaceExpressionVisitor_visitListExpression_closure0(this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Expression0>")), type$.Expression_2), node.separator, node.hasBrackets, node.span);
    },
    visitMapExpression$1(node) {
      var t2, t3, _i, t4, key, value,
        t1 = A._setArrayType([], type$.JSArray_Record_2_Expression_and_Expression_2);
      for (t2 = node.pairs, t3 = t2.length, _i = 0; _i < t3; ++_i) {
        t4 = t2[_i];
        key = t4._0;
        value = t4._1;
        t1.push(new A._Record_2(key.accept$1(this), value.accept$1(this)));
      }
      return new A.MapExpression0(A.List_List$unmodifiable(t1, type$.Record_2_Expression_and_Expression_2), node.span);
    },
    visitNullExpression$1(node) {
      return node;
    },
    visitNumberExpression$1(node) {
      return node;
    },
    visitParenthesizedExpression$1(node) {
      return new A.ParenthesizedExpression0(node.expression.accept$1(this), node.span);
    },
    visitSelectorExpression$1(node) {
      return node;
    },
    visitStringExpression$1(node) {
      return new A.StringExpression0(this.visitInterpolation$1(node.text), node.hasQuotes);
    },
    visitSupportsExpression$1(node) {
      return new A.SupportsExpression0(this.visitSupportsCondition$1(node.condition));
    },
    visitUnaryOperationExpression$1(node) {
      return new A.UnaryOperationExpression0(node.operator, node.operand.accept$1(this), node.span);
    },
    visitValueExpression$1(node) {
      return node;
    },
    visitVariableExpression$1(node) {
      return node;
    },
    visitArgumentInvocation$1(invocation) {
      var t5, t6, $name, value, _this = this,
        t1 = invocation.positional,
        t2 = type$.String,
        t3 = type$.Expression_2,
        t4 = A.LinkedHashMap_LinkedHashMap$_empty(t2, t3);
      for (t5 = A.MapExtensions_get_pairs0(invocation.named, t2, t3), t5 = t5.get$iterator(t5); t5.moveNext$0();) {
        t6 = t5.get$current(t5);
        $name = t6._0;
        value = t6._1;
        t4.$indexSet(0, $name, value.accept$1(_this));
      }
      t5 = invocation.rest;
      t5 = t5 == null ? null : t5.accept$1(_this);
      t6 = invocation.keywordRest;
      t6 = t6 == null ? null : t6.accept$1(_this);
      return new A.ArgumentInvocation0(A.List_List$unmodifiable(new A.MappedListIterable(t1, new A.ReplaceExpressionVisitor_visitArgumentInvocation_closure0(_this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Expression0>")), t3), A.ConstantMap_ConstantMap$from(t4, t2, t3), t5, t6, invocation.span);
    },
    visitSupportsCondition$1(condition) {
      var _this = this;
      if (condition instanceof A.SupportsOperation0)
        return A.SupportsOperation$0(_this.visitSupportsCondition$1(condition.left), _this.visitSupportsCondition$1(condition.right), condition.operator, condition.span);
      else if (condition instanceof A.SupportsNegation0)
        return new A.SupportsNegation0(_this.visitSupportsCondition$1(condition.condition), condition.span);
      else if (condition instanceof A.SupportsInterpolation0)
        return new A.SupportsInterpolation0(condition.expression.accept$1(_this), condition.span);
      else if (condition instanceof A.SupportsDeclaration0)
        return new A.SupportsDeclaration0(condition.name.accept$1(_this), condition.value.accept$1(_this), condition.span);
      else
        throw A.wrapException(A.SassException$0("BUG: Unknown SupportsCondition " + condition.toString$0(0) + ".", condition.get$span(condition), null));
    },
    visitInterpolation$1(interpolation) {
      var t1 = interpolation.contents;
      return A.Interpolation$0(new A.MappedListIterable(t1, new A.ReplaceExpressionVisitor_visitInterpolation_closure0(this), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Object>")), interpolation.span);
    }
  };
  A.ReplaceExpressionVisitor_visitListExpression_closure0.prototype = {
    call$1(item) {
      return item.accept$1(this.$this);
    },
    $signature: 276
  };
  A.ReplaceExpressionVisitor_visitArgumentInvocation_closure0.prototype = {
    call$1(expression) {
      return expression.accept$1(this.$this);
    },
    $signature: 276
  };
  A.ReplaceExpressionVisitor_visitInterpolation_closure0.prototype = {
    call$1(node) {
      return type$.Expression_2._is(node) ? node.accept$1(this.$this) : node;
    },
    $signature: 69
  };
  A.ImporterResult0.prototype = {
    get$sourceMapUrl(_) {
      var t1 = this._result$_sourceMapUrl;
      return t1 == null ? A.Uri_Uri$dataFromString(this.contents, B.C_Utf8Codec, null) : t1;
    }
  };
  A.ReturnRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitReturnRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@return " + this.expression.toString$0(0) + ";";
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SassParser0.prototype = {
    get$currentIndentation() {
      return this._sass0$_currentIndentation;
    },
    get$indented() {
      return true;
    },
    styleRuleSelector$0() {
      var t4,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer0(t3, A._setArrayType([], type$.JSArray_Object));
      do {
        buffer.addInterpolation$1(this.almostAnyValue$1$omitComments(true));
        t4 = t3._contents += A.Primitives_stringFromCharCode(10);
      } while (B.JSString_methods.endsWith$1(B.JSString_methods.trimRight$0(t4.charCodeAt(0) == 0 ? t4 : t4), ",") && this.scanCharIf$1(new A.SassParser_styleRuleSelector_closure0()));
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    expectStatementSeparator$1($name) {
      var t1, _this = this;
      if (!_this.atEndOfStatement$0())
        _this._sass0$_expectNewline$0();
      if (_this._sass0$_peekIndentation$0() <= _this._sass0$_currentIndentation)
        return;
      t1 = $name == null ? "here" : "beneath a " + $name;
      _this.scanner.error$2$position(0, "Nothing may be indented " + t1 + ".", _this._sass0$_nextIndentationEnd.position);
    },
    expectStatementSeparator$0() {
      return this.expectStatementSeparator$1(null);
    },
    atEndOfStatement$0() {
      var t1 = this.scanner.peekChar$0();
      if (t1 == null)
        t1 = null;
      else
        t1 = t1 === 10 || t1 === 13 || t1 === 12;
      return t1 !== false;
    },
    lookingAtChildren$0() {
      return this.atEndOfStatement$0() && this._sass0$_peekIndentation$0() > this._sass0$_currentIndentation;
    },
    importArgument$0() {
      var url, span, innerError, stackTrace, t1, _0_0, start, next, t2, exception, _this = this;
      $label0$0: {
        t1 = _this.scanner;
        _0_0 = t1.peekChar$0();
        if (117 === _0_0 || 85 === _0_0) {
          start = new A._SpanScannerState(t1, t1._string_scanner$_position);
          if (_this.scanIdentifier$1("url"))
            if (t1.scanChar$1(40)) {
              t1.set$state(start);
              return _this.super$StylesheetParser$importArgument0();
            } else
              t1.set$state(start);
          break $label0$0;
        }
        if (39 === _0_0 || 34 === _0_0)
          return _this.super$StylesheetParser$importArgument0();
      }
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      next = t1.peekChar$0();
      while (true) {
        if (next != null)
          if (next !== 44)
            if (next !== 59)
              t2 = !(next === 10 || next === 13 || next === 12);
            else
              t2 = false;
          else
            t2 = false;
        else
          t2 = false;
        if (!t2)
          break;
        t1.readChar$0();
        next = t1.peekChar$0();
      }
      url = t1.substring$1(0, start.position);
      span = t1.spanFrom$1(start);
      if (_this.isPlainImportUrl$1(url))
        return new A.StaticImport0(A.Interpolation$0(A._setArrayType([A.serializeValue0(new A.SassString0(url, true), true, true)], type$.JSArray_Object), span), null, span);
      else
        try {
          t1 = _this.parseImportUrl$1(url);
          return new A.DynamicImport0(t1, span);
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (type$.FormatException._is(t1)) {
            innerError = t1;
            stackTrace = A.getTraceFromException(exception);
            _this.error$3(0, "Invalid URL: " + J.get$message$x(innerError), span, stackTrace);
          } else
            throw exception;
        }
    },
    scanElse$1(ifIndentation) {
      var t1, t2, startIndentation, startNextIndentation, startNextIndentationEnd, _this = this;
      if (_this._sass0$_peekIndentation$0() !== ifIndentation)
        return false;
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      startIndentation = _this._sass0$_currentIndentation;
      startNextIndentation = _this._sass0$_nextIndentation;
      startNextIndentationEnd = _this._sass0$_nextIndentationEnd;
      _this._sass0$_readIndentation$0();
      if (t1.scanChar$1(64) && _this.scanIdentifier$1("else"))
        return true;
      t1.set$state(new A._SpanScannerState(t1, t2));
      _this._sass0$_currentIndentation = startIndentation;
      _this._sass0$_nextIndentation = startNextIndentation;
      _this._sass0$_nextIndentationEnd = startNextIndentationEnd;
      return false;
    },
    children$1(_, child) {
      var children = A._setArrayType([], type$.JSArray_Statement_2);
      this._sass0$_whileIndentedLower$1(new A.SassParser_children_closure0(this, child, children));
      return children;
    },
    statements$1(statement) {
      var statements, t2, _1_0, child, t3,
        t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      if (9 === _0_0 || 32 === _0_0)
        t1.error$3$length$position(0, string$.Indent, t1._string_scanner$_position, 0);
      statements = A._setArrayType([], type$.JSArray_Statement_2);
      for (t2 = t1.string.length; t1._string_scanner$_position !== t2;) {
        _1_0 = this._sass0$_child$1(statement);
        if (_1_0 != null) {
          child = _1_0;
          t3 = true;
        } else {
          child = null;
          t3 = false;
        }
        if (t3)
          statements.push(child);
        this._sass0$_readIndentation$0();
      }
      return statements;
    },
    _sass0$_child$1(child) {
      var _0_0, _this = this,
        t1 = _this.scanner,
        _1_0 = t1.peekChar$0();
      $label0$0: {
        if (13 === _1_0 || 10 === _1_0 || 12 === _1_0) {
          t1 = null;
          break $label0$0;
        }
        if (36 === _1_0) {
          t1 = _this.variableDeclarationWithoutNamespace$0();
          break $label0$0;
        }
        if (47 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label1$1: {
            if (47 === _0_0) {
              t1 = _this._sass0$_silentComment$0();
              break $label1$1;
            }
            if (42 === _0_0) {
              t1 = _this._sass0$_loudComment$0();
              break $label1$1;
            }
            t1 = child.call$0();
            break $label1$1;
          }
          break $label0$0;
        }
        t1 = child.call$0();
        break $label0$0;
      }
      return t1;
    },
    _sass0$_silentComment$0() {
      var buffer, parentIndentation, t3, t4, t5, commentPrefix, i, t6, i0, t7, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("//");
      buffer = new A.StringBuffer("");
      parentIndentation = _this._sass0$_currentIndentation;
      t3 = t1.string.length;
      t4 = 1 + parentIndentation;
      t5 = 2 + parentIndentation;
      $label0$0:
        do {
          commentPrefix = t1.scanChar$1(47) ? "///" : "//";
          for (i = commentPrefix.length; true;) {
            t6 = buffer._contents += commentPrefix;
            for (i0 = i; i0 < _this._sass0$_currentIndentation - parentIndentation; ++i0) {
              t6 += A.Primitives_stringFromCharCode(32);
              buffer._contents = t6;
            }
            while (true) {
              if (t1._string_scanner$_position !== t3) {
                t7 = t1.peekChar$0();
                t7 = !(t7 === 10 || t7 === 13 || t7 === 12);
              } else
                t7 = false;
              if (!t7)
                break;
              t6 += A.Primitives_stringFromCharCode(t1.readChar$0());
              buffer._contents = t6;
            }
            buffer._contents = t6 + "\n";
            if (_this._sass0$_peekIndentation$0() < parentIndentation)
              break $label0$0;
            if (_this._sass0$_peekIndentation$0() === parentIndentation) {
              if (t1.peekChar$1(t4) === 47 && t1.peekChar$1(t5) === 47)
                _this._sass0$_readIndentation$0();
              break;
            }
            _this._sass0$_readIndentation$0();
          }
        } while (t1.scan$1("//"));
      t3 = buffer._contents;
      return _this.lastSilentComment = new A.SilentComment0(t3.charCodeAt(0) == 0 ? t3 : t3, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _sass0$_loudComment$0() {
      var t3, t4, buffer, parentIndentation, t5, t6, first, beginningOfComment, t7, end, i, _0_0, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("/*");
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer0(t3, t4);
      t3._contents = "" + "/*";
      parentIndentation = _this._sass0$_currentIndentation;
      for (t5 = t1.string, t6 = t5.length, first = true; true; first = false) {
        if (first) {
          beginningOfComment = t1._string_scanner$_position;
          _this.spaces$0();
          t7 = t1.peekChar$0();
          if (t7 === 10 || t7 === 13 || t7 === 12) {
            _this._sass0$_readIndentation$0();
            t3._contents += A.Primitives_stringFromCharCode(32);
          } else {
            end = t1._string_scanner$_position;
            t3._contents += B.JSString_methods.substring$2(t5, beginningOfComment, end);
          }
        } else {
          t7 = t3._contents += "\n";
          t3._contents = t7 + " * ";
        }
        for (i = 3; i < _this._sass0$_currentIndentation - parentIndentation; ++i)
          t3._contents += A.Primitives_stringFromCharCode(32);
        for (; t1._string_scanner$_position !== t6;) {
          _0_0 = t1.peekChar$0();
          if (10 === _0_0 || 13 === _0_0 || 12 === _0_0)
            break;
          if (35 === _0_0) {
            if (t1.peekChar$1(1) === 123) {
              t7 = _this.singleInterpolation$0();
              buffer._interpolation_buffer0$_flushText$0();
              t4.push(t7);
            } else
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            continue;
          }
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
        }
        if (_this._sass0$_peekIndentation$0() <= parentIndentation)
          break;
        for (; _this._sass0$_lookingAtDoubleNewline$0();) {
          _this._sass0$_expectNewline$0();
          t7 = t3._contents += "\n";
          t3._contents = t7 + " *";
        }
        _this._sass0$_readIndentation$0();
      }
      t4 = t3._contents;
      if (!B.JSString_methods.endsWith$1(B.JSString_methods.trimRight$0(t4.charCodeAt(0) == 0 ? t4 : t4), "*/"))
        t3._contents += " */";
      return new A.LoudComment0(buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2))));
    },
    whitespaceWithoutComments$0() {
      var t1, t2, next;
      for (t1 = this.scanner, t2 = t1.string.length; t1._string_scanner$_position !== t2;) {
        next = t1.peekChar$0();
        if (next !== 9 && next !== 32)
          break;
        t1.readChar$0();
      }
    },
    loudComment$0() {
      var next,
        t1 = this.scanner;
      t1.expect$1("/*");
      for (; true;) {
        next = t1.readChar$0();
        if (next === 10 || next === 13 || next === 12)
          t1.error$1(0, "expected */.");
        if (next !== 42)
          continue;
        do
          next = t1.readChar$0();
        while (next === 42);
        if (next === 47)
          break;
      }
    },
    _sass0$_expectNewline$0() {
      var t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      if (59 === _0_0)
        t1.error$1(0, string$.semico);
      if (13 === _0_0) {
        t1.readChar$0();
        if (t1.peekChar$0() === 10)
          t1.readChar$0();
        return;
      }
      if (10 === _0_0 || 12 === _0_0) {
        t1.readChar$0();
        return;
      }
      t1.error$1(0, "expected newline.");
    },
    _sass0$_lookingAtDoubleNewline$0() {
      var _0_0,
        t1 = this.scanner,
        _1_0 = t1.peekChar$0();
      $label1$1: {
        if (13 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label0$0: {
            if (10 === _0_0) {
              t1 = t1.peekChar$1(2);
              t1 = t1 === 10 || t1 === 13 || t1 === 12;
              break $label0$0;
            }
            if (13 === _0_0 || 12 === _0_0) {
              t1 = true;
              break $label0$0;
            }
            t1 = false;
            break $label0$0;
          }
          break $label1$1;
        }
        if (10 === _1_0 || 12 === _1_0) {
          t1 = t1.peekChar$1(1);
          t1 = t1 === 10 || t1 === 13 || t1 === 12;
          break $label1$1;
        }
        t1 = false;
        break $label1$1;
      }
      return t1;
    },
    _sass0$_whileIndentedLower$1(body) {
      var t1, t2, childIndentation, indentation, t3, t4, _this = this,
        parentIndentation = _this._sass0$_currentIndentation;
      for (t1 = _this.scanner, t2 = t1._sourceFile, childIndentation = null; _this._sass0$_peekIndentation$0() > parentIndentation;) {
        indentation = _this._sass0$_readIndentation$0();
        if (childIndentation == null)
          childIndentation = indentation;
        if (childIndentation !== indentation) {
          t3 = t1._string_scanner$_position;
          t4 = t2.getColumn$1(t3);
          t1.error$3$length$position(0, "Inconsistent indentation, expected " + childIndentation + " spaces.", t2.getColumn$1(t1._string_scanner$_position), t3 - t4);
        }
        body.call$0();
      }
    },
    _sass0$_readIndentation$0() {
      var t1, _this = this,
        currentIndentation = _this._sass0$_nextIndentation;
      if (currentIndentation == null)
        currentIndentation = _this._sass0$_nextIndentation = _this._sass0$_peekIndentation$0();
      _this._sass0$_currentIndentation = currentIndentation;
      t1 = _this._sass0$_nextIndentationEnd;
      t1.toString;
      _this.scanner.set$state(t1);
      _this._sass0$_nextIndentationEnd = _this._sass0$_nextIndentation = null;
      return currentIndentation;
    },
    _sass0$_peekIndentation$0() {
      var cached, t1, t2, t3, start, containsTab, containsSpace, nextIndentation, _1_0, t4, _this = this,
        _0_0 = _this._sass0$_nextIndentation;
      if (_0_0 != null) {
        cached = _0_0;
        t1 = true;
      } else {
        cached = null;
        t1 = false;
      }
      if (t1)
        return cached;
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      t3 = t1.string.length;
      if (t2 === t3) {
        _this._sass0$_nextIndentation = 0;
        _this._sass0$_nextIndentationEnd = new A._SpanScannerState(t1, t2);
        return 0;
      }
      start = new A._SpanScannerState(t1, t2);
      if (!_this.scanCharIf$1(new A.SassParser__peekIndentation_closure1()))
        t1.error$2$position(0, "Expected newline.", t1._string_scanner$_position);
      containsTab = A._Cell$();
      containsSpace = A._Cell$();
      nextIndentation = A._Cell$();
      t2 = nextIndentation.__late_helper$_name;
      do {
        containsSpace._value = containsTab._value = false;
        nextIndentation._value = 0;
        for (; true;) {
          $label0$0: {
            _1_0 = t1.peekChar$0();
            if (32 === _1_0) {
              containsSpace._value = true;
              break $label0$0;
            }
            if (9 === _1_0) {
              containsTab._value = true;
              break $label0$0;
            }
            break;
          }
          t4 = nextIndentation._value;
          if (t4 === nextIndentation)
            A.throwExpression(A.LateError$localNI(t2));
          nextIndentation._value = t4 + 1;
          t1.readChar$0();
        }
        t4 = t1._string_scanner$_position;
        if (t4 === t3) {
          _this._sass0$_nextIndentation = 0;
          _this._sass0$_nextIndentationEnd = new A._SpanScannerState(t1, t4);
          t1.set$state(start);
          return 0;
        }
      } while (_this.scanCharIf$1(new A.SassParser__peekIndentation_closure2()));
      t2 = containsTab._readLocal$0();
      t3 = containsSpace._readLocal$0();
      if (t2) {
        if (t3) {
          t2 = t1._string_scanner$_position;
          t3 = t1._sourceFile;
          t4 = t3.getColumn$1(t2);
          t1.error$3$length$position(0, "Tabs and spaces may not be mixed.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
        } else if (_this._sass0$_spaces === true) {
          t2 = t1._string_scanner$_position;
          t3 = t1._sourceFile;
          t4 = t3.getColumn$1(t2);
          t1.error$3$length$position(0, "Expected spaces, was tabs.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
        }
      } else if (t3 && _this._sass0$_spaces === false) {
        t2 = t1._string_scanner$_position;
        t3 = t1._sourceFile;
        t4 = t3.getColumn$1(t2);
        t1.error$3$length$position(0, "Expected tabs, was spaces.", t3.getColumn$1(t1._string_scanner$_position), t2 - t4);
      }
      _this._sass0$_nextIndentation = nextIndentation._readLocal$0();
      if (nextIndentation._readLocal$0() > 0)
        if (_this._sass0$_spaces == null)
          _this._sass0$_spaces = containsSpace._readLocal$0();
      _this._sass0$_nextIndentationEnd = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.set$state(start);
      return nextIndentation._readLocal$0();
    }
  };
  A.SassParser_styleRuleSelector_closure0.prototype = {
    call$1(char) {
      return char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A.SassParser_children_closure0.prototype = {
    call$0() {
      var parsedChild, t1,
        _0_0 = this.$this._sass0$_child$1(this.child);
      if (_0_0 != null) {
        parsedChild = _0_0;
        t1 = true;
      } else {
        parsedChild = null;
        t1 = false;
      }
      if (t1)
        this.children.push(parsedChild);
    },
    $signature: 0
  };
  A.SassParser__peekIndentation_closure1.prototype = {
    call$1(char) {
      return char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A.SassParser__peekIndentation_closure2.prototype = {
    call$1(char) {
      return char === 10 || char === 13 || char === 12;
    },
    $signature: 34
  };
  A._Exports.prototype = {};
  A._wrapMain_closure.prototype = {
    call$1(_) {
      return A._translateReturnValue(this.main.call$0());
    },
    $signature: 88
  };
  A._wrapMain_closure0.prototype = {
    call$1(args) {
      return A._translateReturnValue(this.main.call$1(A.List_List$from(type$.List_dynamic._as(args), true, type$.String)));
    },
    $signature: 88
  };
  A.ScssParser0.prototype = {
    get$indented() {
      return false;
    },
    get$currentIndentation() {
      return 0;
    },
    styleRuleSelector$0() {
      return this.almostAnyValue$0();
    },
    expectStatementSeparator$1($name) {
      var t1, _0_0;
      this.whitespaceWithoutComments$0();
      t1 = this.scanner;
      if (t1._string_scanner$_position === t1.string.length)
        return;
      _0_0 = t1.peekChar$0();
      if (59 === _0_0 || 125 === _0_0)
        return;
      t1.expectChar$1(59);
    },
    expectStatementSeparator$0() {
      return this.expectStatementSeparator$1(null);
    },
    atEndOfStatement$0() {
      var next = this.scanner.peekChar$0();
      return next == null || next === 59 || next === 125 || next === 123;
    },
    lookingAtChildren$0() {
      return this.scanner.peekChar$0() === 123;
    },
    scanElse$1(ifIndentation) {
      var t3, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      _this.whitespace$0();
      t3 = t1._string_scanner$_position;
      if (t1.scanChar$1(64)) {
        if (_this.scanIdentifier$2$caseSensitive("else", true))
          return true;
        if (_this.scanIdentifier$2$caseSensitive("elseif", true)) {
          A.WarnForDeprecation_warnForDeprecation0(_this.logger, B.Deprecation_elseif_false_elseif, string$.x40elsei, t1.spanFrom$1(new A._SpanScannerState(t1, t3)), null);
          t1.set$position(t1._string_scanner$_position - 2);
          return true;
        }
      }
      t1.set$state(new A._SpanScannerState(t1, t2));
      return false;
    },
    children$1(_, child) {
      var children, _this = this,
        t1 = _this.scanner;
      t1.expectChar$1(123);
      _this.whitespaceWithoutComments$0();
      children = A._setArrayType([], type$.JSArray_Statement_2);
      for (; true;)
        switch (t1.peekChar$0()) {
          case 36:
            children.push(_this.variableDeclarationWithoutNamespace$0());
            break;
          case 47:
            switch (t1.peekChar$1(1)) {
              case 47:
                children.push(_this._scss0$_silentComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              case 42:
                children.push(_this._scss0$_loudComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              default:
                children.push(child.call$0());
            }
            break;
          case 59:
            t1.readChar$0();
            _this.whitespaceWithoutComments$0();
            break;
          case 125:
            t1.expectChar$1(125);
            return children;
          default:
            children.push(child.call$0());
        }
    },
    statements$1(statement) {
      var t1, t2, _0_0, child, t3, _1_0, _this = this,
        statements = A._setArrayType([], type$.JSArray_Statement_2);
      _this.whitespaceWithoutComments$0();
      for (t1 = _this.scanner, t2 = t1.string.length; t1._string_scanner$_position !== t2;)
        switch (t1.peekChar$0()) {
          case 36:
            statements.push(_this.variableDeclarationWithoutNamespace$0());
            break;
          case 47:
            switch (t1.peekChar$1(1)) {
              case 47:
                statements.push(_this._scss0$_silentComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              case 42:
                statements.push(_this._scss0$_loudComment$0());
                _this.whitespaceWithoutComments$0();
                break;
              default:
                _0_0 = statement.call$0();
                if (_0_0 != null) {
                  child = _0_0;
                  t3 = true;
                } else {
                  child = null;
                  t3 = false;
                }
                if (t3)
                  statements.push(child);
            }
            break;
          case 59:
            t1.readChar$0();
            _this.whitespaceWithoutComments$0();
            break;
          default:
            _1_0 = statement.call$0();
            if (_1_0 != null) {
              child = _1_0;
              t3 = true;
            } else {
              child = null;
              t3 = false;
            }
            if (t3)
              statements.push(child);
        }
      return statements;
    },
    _scss0$_silentComment$0() {
      var t2, t3, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expect$1("//");
      t2 = t1.string.length;
      do {
        while (true) {
          if (t1._string_scanner$_position !== t2) {
            t3 = t1.readChar$0();
            t3 = !(t3 === 10 || t3 === 13 || t3 === 12);
          } else
            t3 = false;
          if (!t3)
            break;
        }
        if (t1._string_scanner$_position === t2)
          break;
        _this.spaces$0();
      } while (t1.scan$1("//"));
      if (_this.get$plainCss())
        _this.error$2(0, string$.Silent, t1.spanFrom$1(start));
      return _this.lastSilentComment = new A.SilentComment0(t1.substring$1(0, start.position), t1.spanFrom$1(start));
    },
    _scss0$_loudComment$0() {
      var t3, t4, buffer, t5, endPosition, t6, result,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("/*");
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer0(t3, t4);
      t3._contents = "" + "/*";
      $label0$1:
        for (; true;)
          switch (t1.peekChar$0()) {
            case 35:
              if (t1.peekChar$1(1) === 123) {
                t5 = this.singleInterpolation$0();
                buffer._interpolation_buffer0$_flushText$0();
                t4.push(t5);
              } else
                t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              break;
            case 42:
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              if (t1.peekChar$0() !== 47)
                continue $label0$1;
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              endPosition = t1._string_scanner$_position;
              t5 = t1._sourceFile;
              t6 = new A._SpanScannerState(t1, t2).position;
              t1 = new A._FileSpan(t5, t6, endPosition);
              t1._FileSpan$3(t5, t6, endPosition);
              t6 = type$.Object;
              t5 = A.List_List$of(t4, true, t6);
              t2 = t3._contents;
              if (t2.length !== 0)
                t5.push(t2.charCodeAt(0) == 0 ? t2 : t2);
              result = A.List_List$from(t5, false, t6);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t2 = new A.Interpolation0(result, t1);
              t2.Interpolation$20(t5, t1);
              return new A.LoudComment0(t2);
            case 13:
              t1.readChar$0();
              if (t1.peekChar$0() !== 10)
                t3._contents += A.Primitives_stringFromCharCode(10);
              break;
            case 12:
              t1.readChar$0();
              t3._contents += A.Primitives_stringFromCharCode(10);
              break;
            default:
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          }
    }
  };
  A.Selector0.prototype = {
    assertNotBogus$1$name($name) {
      var t1;
      if (!this.accept$1(B._IsBogusVisitor_true0))
        return;
      t1 = this.toString$0(0);
      A.EvaluationContext_current0().warn$2(0, "$" + $name + ": " + (t1 + string$.x20is_nov), B.Deprecation_XV6);
    },
    toString$0(_) {
      var visitor = A._SerializeVisitor$0(null, true, null, true, false, null, true);
      this.accept$1(visitor);
      return visitor._serialize0$_buffer.toString$0(0);
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._IsInvisibleVisitor2.prototype = {
    visitSelectorList$1(list) {
      return B.JSArray_methods.every$1(list.components, this.get$visitComplexSelector());
    },
    visitComplexSelector$1(complex) {
      var t1;
      if (!this.super$AnySelectorVisitor$visitComplexSelector0(complex))
        t1 = this.includeBogus && complex.accept$1(B._IsBogusVisitor_false0);
      else
        t1 = true;
      return t1;
    },
    visitPlaceholderSelector$1(placeholder) {
      return true;
    },
    visitPseudoSelector$1(pseudo) {
      var selector, t1,
        _0_0 = pseudo.selector;
      if (_0_0 != null) {
        selector = _0_0;
        t1 = true;
      } else {
        selector = null;
        t1 = false;
      }
      if (t1) {
        if (pseudo.name === "not")
          t1 = this.includeBogus && selector.accept$1(B._IsBogusVisitor_true0);
        else
          t1 = this.visitSelectorList$1(selector);
        return t1;
      } else
        return false;
    }
  };
  A._IsBogusVisitor0.prototype = {
    visitComplexSelector$1(complex) {
      var t2,
        t1 = complex.components;
      if (t1.length === 0)
        return complex.leadingCombinators.length !== 0;
      else {
        t2 = this.includeLeadingCombinator ? 0 : 1;
        return complex.leadingCombinators.length > t2 || B.JSArray_methods.get$last(t1).combinators.length !== 0 || B.JSArray_methods.any$1(t1, new A._IsBogusVisitor_visitComplexSelector_closure0(this));
      }
    },
    visitPseudoSelector$1(pseudo) {
      var selector = pseudo.selector;
      if (selector == null)
        return false;
      return pseudo.name === "has" ? selector.accept$1(B._IsBogusVisitor_false0) : selector.accept$1(B._IsBogusVisitor_true0);
    }
  };
  A._IsBogusVisitor_visitComplexSelector_closure0.prototype = {
    call$1(component) {
      return component.combinators.length > 1 || this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature: 52
  };
  A._IsUselessVisitor0.prototype = {
    visitComplexSelector$1(complex) {
      return complex.leadingCombinators.length > 1 || B.JSArray_methods.any$1(complex.components, new A._IsUselessVisitor_visitComplexSelector_closure0(this));
    },
    visitPseudoSelector$1(pseudo) {
      return pseudo.accept$1(B._IsBogusVisitor_true0);
    }
  };
  A._IsUselessVisitor_visitComplexSelector_closure0.prototype = {
    call$1(component) {
      return component.combinators.length > 1 || this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature: 52
  };
  A.__IsBogusVisitor_Object_AnySelectorVisitor0.prototype = {};
  A.__IsInvisibleVisitor_Object_AnySelectorVisitor0.prototype = {};
  A.__IsUselessVisitor_Object_AnySelectorVisitor0.prototype = {};
  A.SelectorExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitSelectorExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "&";
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A._nest_closure0.prototype = {
    call$1($arguments) {
      var t1 = {},
        selectors = J.$index$asx($arguments, 0).get$asList();
      if (selectors.length === 0)
        throw A.wrapException(A.SassScriptException$0(string$.x24selec, null));
      t1.first = true;
      return new A.MappedListIterable(selectors, new A._nest__closure1(t1), A._arrayInstanceType(selectors)._eval$1("MappedListIterable<1,SelectorList0>")).reduce$1(0, new A._nest__closure2()).get$asSassList();
    },
    $signature: 27
  };
  A._nest__closure1.prototype = {
    call$1(selector) {
      var t1 = this._box_0,
        result = A.SassApiValue_assertSelector0(selector, !t1.first, null);
      t1.first = false;
      return result;
    },
    $signature: 277
  };
  A._nest__closure2.prototype = {
    call$2($parent, child) {
      return child.resolveParentSelectors$1($parent);
    },
    $signature: 278
  };
  A._append_closure1.prototype = {
    call$1($arguments) {
      var selectors = J.$index$asx($arguments, 0).get$asList();
      if (selectors.length === 0)
        throw A.wrapException(A.SassScriptException$0(string$.x24selec, null));
      return new A.MappedListIterable(selectors, new A._append__closure1(), A._arrayInstanceType(selectors)._eval$1("MappedListIterable<1,SelectorList0>")).reduce$1(0, new A._append__closure2(A.EvaluationContext_current0().get$currentCallableSpan())).get$asSassList();
    },
    $signature: 27
  };
  A._append__closure1.prototype = {
    call$1(selector) {
      return A.SassApiValue_assertSelector0(selector, false, null);
    },
    $signature: 277
  };
  A._append__closure2.prototype = {
    call$2($parent, child) {
      var t1 = child.components,
        t2 = this.span;
      return A.SelectorList$0(new A.MappedListIterable(t1, new A._append___closure0($parent, t2), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,ComplexSelector0>")), t2).resolveParentSelectors$1($parent);
    },
    $signature: 278
  };
  A._append___closure0.prototype = {
    call$1(complex) {
      var _0_0, component, rest, t1, newCompound, t2, _null = null;
      if (complex.leadingCombinators.length !== 0)
        throw A.wrapException(A.SassScriptException$0("Can't append " + complex.toString$0(0) + " to " + this.parent.toString$0(0) + ".", _null));
      _0_0 = complex.components;
      if (_0_0.length >= 1) {
        component = _0_0[0];
        rest = B.JSArray_methods.sublist$1(_0_0, 1);
        t1 = true;
      } else {
        rest = _null;
        component = rest;
        t1 = false;
      }
      if (!t1)
        throw A.wrapException(A.StateError$("Pattern matching error"));
      newCompound = A._prependParent0(component.selector);
      if (newCompound == null)
        throw A.wrapException(A.SassScriptException$0("Can't append " + complex.toString$0(0) + " to " + this.parent.toString$0(0) + ".", _null));
      t1 = this.span;
      t2 = A._setArrayType([new A.ComplexSelectorComponent0(newCompound, A.List_List$unmodifiable(component.combinators, type$.CssValue_Combinator_2), t1)], type$.JSArray_ComplexSelectorComponent_2);
      B.JSArray_methods.addAll$1(t2, rest);
      return A.ComplexSelector$0(B.List_empty14, t2, t1, false);
    },
    $signature: 61
  };
  A._extend_closure0.prototype = {
    call$1($arguments) {
      var target, source,
        _s8_ = "selector",
        _s8_0 = "extendee",
        _s8_1 = "extender",
        t1 = J.getInterceptor$asx($arguments),
        selector = A.SassApiValue_assertSelector0(t1.$index($arguments, 0), false, _s8_);
      selector.assertNotBogus$1$name(_s8_);
      target = A.SassApiValue_assertSelector0(t1.$index($arguments, 1), false, _s8_0);
      target.assertNotBogus$1$name(_s8_0);
      source = A.SassApiValue_assertSelector0(t1.$index($arguments, 2), false, _s8_1);
      source.assertNotBogus$1$name(_s8_1);
      return A.ExtensionStore__extendOrReplace0(selector, source, target, B.ExtendMode_allTargets_allTargets0, A.EvaluationContext_current0().get$currentCallableSpan()).get$asSassList();
    },
    $signature: 27
  };
  A._replace_closure0.prototype = {
    call$1($arguments) {
      var target, source,
        _s8_ = "selector",
        _s8_0 = "original",
        _s11_ = "replacement",
        t1 = J.getInterceptor$asx($arguments),
        selector = A.SassApiValue_assertSelector0(t1.$index($arguments, 0), false, _s8_);
      selector.assertNotBogus$1$name(_s8_);
      target = A.SassApiValue_assertSelector0(t1.$index($arguments, 1), false, _s8_0);
      target.assertNotBogus$1$name(_s8_0);
      source = A.SassApiValue_assertSelector0(t1.$index($arguments, 2), false, _s11_);
      source.assertNotBogus$1$name(_s11_);
      return A.ExtensionStore__extendOrReplace0(selector, source, target, B.ExtendMode_replace_replace0, A.EvaluationContext_current0().get$currentCallableSpan()).get$asSassList();
    },
    $signature: 27
  };
  A._unify_closure0.prototype = {
    call$1($arguments) {
      var selector2,
        _s9_ = "selector1",
        _s9_0 = "selector2",
        t1 = J.getInterceptor$asx($arguments),
        selector1 = A.SassApiValue_assertSelector0(t1.$index($arguments, 0), false, _s9_);
      selector1.assertNotBogus$1$name(_s9_);
      selector2 = A.SassApiValue_assertSelector0(t1.$index($arguments, 1), false, _s9_0);
      selector2.assertNotBogus$1$name(_s9_0);
      t1 = selector1.unify$1(selector2);
      t1 = t1 == null ? null : t1.get$asSassList();
      return t1 == null ? B.C__SassNull0 : t1;
    },
    $signature: 5
  };
  A._isSuperselector_closure0.prototype = {
    call$1($arguments) {
      var selector2,
        t1 = J.getInterceptor$asx($arguments),
        selector1 = A.SassApiValue_assertSelector0(t1.$index($arguments, 0), false, "super");
      selector1.assertNotBogus$1$name("super");
      selector2 = A.SassApiValue_assertSelector0(t1.$index($arguments, 1), false, "sub");
      selector2.assertNotBogus$1$name("sub");
      return A.listIsSuperselector0(selector1.components, selector2.components) ? B.SassBoolean_true0 : B.SassBoolean_false0;
    },
    $signature: 21
  };
  A._simpleSelectors_closure0.prototype = {
    call$1($arguments) {
      var t1 = A.SassApiValue_assertCompoundSelector0(J.$index$asx($arguments, 0), "selector").components;
      return A.SassList$0(new A.MappedListIterable(t1, new A._simpleSelectors__closure0(), A._arrayInstanceType(t1)._eval$1("MappedListIterable<1,Value0>")), B.ListSeparator_rXA0, false);
    },
    $signature: 27
  };
  A._simpleSelectors__closure0.prototype = {
    call$1(simple) {
      return new A.SassString0(A.serializeSelector0(simple, true), false);
    },
    $signature: 551
  };
  A._parse_closure0.prototype = {
    call$1($arguments) {
      return A.SassApiValue_assertSelector0(J.$index$asx($arguments, 0), false, "selector").get$asSassList();
    },
    $signature: 27
  };
  A._prependParent_closure1.prototype = {
    call$0() {
      return this._0_0.length >= 1;
    },
    $signature: 1
  };
  A._prependParent_closure2.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 279
  };
  A.SelectorParser0.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.SelectorParser_parse_closure0(this));
    },
    parseCompoundSelector$0() {
      return this.wrapSpanFormatException$1(new A.SelectorParser_parseCompoundSelector_closure0(this));
    },
    _selector$_selectorList$0() {
      var t4, t5, lineBreak, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = t1._sourceFile,
        previousLine = t3.getLine$1(t2),
        components = A._setArrayType([_this._selector$_complexSelector$0()], type$.JSArray_ComplexSelector_2);
      _this.whitespace$0();
      for (t4 = t1.string.length; t1.scanChar$1(44);) {
        _this.whitespace$0();
        if (t1.peekChar$0() === 44)
          continue;
        t5 = t1._string_scanner$_position;
        if (t5 === t4)
          break;
        lineBreak = t3.getLine$1(t5) !== previousLine;
        if (lineBreak)
          previousLine = t3.getLine$1(t1._string_scanner$_position);
        components.push(_this._selector$_complexSelector$1$lineBreak(lineBreak));
      }
      return A.SelectorList$0(components, _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _selector$_complexSelector$1$lineBreak(lineBreak) {
      var t4, lastCompound, initialCombinators, _0_0, t5, result, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        componentStart = new A._SpanScannerState(t1, t2),
        t3 = type$.JSArray_CssValue_Combinator_2,
        combinators = A._setArrayType([], t3),
        components = A._setArrayType([], type$.JSArray_ComplexSelectorComponent_2);
      for (t4 = type$.CssValue_Combinator_2, lastCompound = null, initialCombinators = null; true;) {
        _this.whitespace$0();
        _0_0 = t1.peekChar$0();
        if (43 === _0_0) {
          t5 = t1._string_scanner$_position;
          t1.readChar$0();
          combinators.push(new A.CssValue0(B.Combinator_4QF0, _this.spanFrom$1(new A._SpanScannerState(t1, t5)), t4));
          continue;
        }
        if (62 === _0_0) {
          t5 = t1._string_scanner$_position;
          t1.readChar$0();
          combinators.push(new A.CssValue0(B.Combinator_Cht0, _this.spanFrom$1(new A._SpanScannerState(t1, t5)), t4));
          continue;
        }
        if (126 === _0_0) {
          t5 = t1._string_scanner$_position;
          t1.readChar$0();
          combinators.push(new A.CssValue0(B.Combinator_Htt0, _this.spanFrom$1(new A._SpanScannerState(t1, t5)), t4));
          continue;
        }
        if (_0_0 == null)
          break;
        if (91 !== _0_0)
          if (46 !== _0_0)
            if (35 !== _0_0)
              if (37 !== _0_0)
                if (58 !== _0_0)
                  if (38 !== _0_0)
                    if (42 !== _0_0)
                      if (124 !== _0_0)
                        t5 = _this.lookingAtIdentifier$0();
                      else
                        t5 = true;
                    else
                      t5 = true;
                  else
                    t5 = true;
                else
                  t5 = true;
              else
                t5 = true;
            else
              t5 = true;
          else
            t5 = true;
        else
          t5 = true;
        if (t5) {
          if (lastCompound != null) {
            t5 = _this.spanFrom$1(componentStart);
            result = A.List_List$from(combinators, false, t4);
            result.fixed$length = Array;
            result.immutable$list = Array;
            components.push(new A.ComplexSelectorComponent0(lastCompound, result, t5));
          } else if (combinators.length !== 0) {
            componentStart = new A._SpanScannerState(t1, t1._string_scanner$_position);
            initialCombinators = combinators;
          }
          lastCompound = _this._selector$_compoundSelector$0();
          combinators = A._setArrayType([], t3);
          if (t1.peekChar$0() === 38)
            t1.error$1(0, string$.x22x26__ma);
          continue;
        }
        break;
      }
      if (lastCompound != null) {
        t3 = _this.spanFrom$1(componentStart);
        components.push(new A.ComplexSelectorComponent0(lastCompound, A.List_List$unmodifiable(combinators, t4), t3));
      } else if (combinators.length !== 0)
        initialCombinators = combinators;
      else
        t1.error$1(0, "expected selector.");
      t3 = initialCombinators == null ? B.List_empty14 : initialCombinators;
      return A.ComplexSelector$0(t3, components, _this.spanFrom$1(new A._SpanScannerState(t1, t2)), lineBreak);
    },
    _selector$_complexSelector$0() {
      return this._selector$_complexSelector$1$lineBreak(false);
    },
    _selector$_compoundSelector$0() {
      var t3, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        components = A._setArrayType([_this._selector$_simpleSelector$0()], type$.JSArray_SimpleSelector_2);
      while (true) {
        t3 = t1.peekChar$0();
        if (!(t3 === 42 || t3 === 91 || t3 === 46 || t3 === 35 || t3 === 37 || t3 === 58))
          break;
        components.push(_this._selector$_simpleSelector$1$allowParent(false));
      }
      return A.CompoundSelector$0(components, _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _selector$_simpleSelector$1$allowParent(allowParent) {
      var t2, $name, text, t3, suffix, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (allowParent == null)
        allowParent = _this._selector$_allowParent;
      switch (t1.peekChar$0()) {
        case 91:
          return _this._selector$_attributeSelector$0();
        case 46:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(46);
          return new A.ClassSelector0(_this.identifier$0(), _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
        case 35:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(35);
          return new A.IDSelector0(_this.identifier$0(), _this.spanFrom$1(new A._SpanScannerState(t1, t2)));
        case 37:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(37);
          $name = _this.identifier$0();
          t2 = _this.spanFrom$1(new A._SpanScannerState(t1, t2));
          if (!_this._selector$_allowPlaceholder)
            _this.error$2(0, string$.Placeh, t1.spanFrom$1(start));
          return new A.PlaceholderSelector0($name, t2);
        case 58:
          return _this._selector$_pseudoSelector$0();
        case 38:
          t2 = t1._string_scanner$_position;
          t1.expectChar$1(38);
          if (_this.lookingAtIdentifierBody$0()) {
            text = new A.StringBuffer("");
            _this._parser0$_identifierBody$1(text);
            if (text._contents.length === 0)
              t1.error$1(0, "Expected identifier body.");
            t3 = text._contents;
            suffix = t3.charCodeAt(0) == 0 ? t3 : t3;
          } else
            suffix = null;
          t2 = _this.spanFrom$1(new A._SpanScannerState(t1, t2));
          if (!allowParent)
            _this.error$2(0, "Parent selectors aren't allowed here.", t1.spanFrom$1(start));
          return new A.ParentSelector0(suffix, t2);
        default:
          return _this._selector$_typeOrUniversalSelector$0();
      }
    },
    _selector$_simpleSelector$0() {
      return this._selector$_simpleSelector$1$allowParent(null);
    },
    _selector$_attributeSelector$0() {
      var $name, operator, next, value, modifier, _this = this, _null = null,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(91);
      _this.whitespace$0();
      $name = _this._selector$_attributeName$0();
      _this.whitespace$0();
      if (t1.scanChar$1(93))
        return new A.AttributeSelector0($name, _null, _null, _null, _this.spanFrom$1(start));
      operator = _this._selector$_attributeOperator$0();
      _this.whitespace$0();
      next = t1.peekChar$0();
      value = next === 39 || next === 34 ? _this.string$0() : _this.identifier$0();
      _this.whitespace$0();
      next = t1.peekChar$0();
      modifier = next != null && A.CharacterExtension_get_isAlphabetic0(next) ? A.Primitives_stringFromCharCode(t1.readChar$0()) : _null;
      t1.expectChar$1(93);
      return new A.AttributeSelector0($name, operator, value, modifier, _this.spanFrom$1(start));
    },
    _selector$_attributeName$0() {
      var nameOrNamespace, _this = this,
        t1 = _this.scanner;
      if (t1.scanChar$1(42)) {
        t1.expectChar$1(124);
        return new A.QualifiedName0(_this.identifier$0(), "*");
      }
      if (t1.scanChar$1(124))
        return new A.QualifiedName0(_this.identifier$0(), "");
      nameOrNamespace = _this.identifier$0();
      if (t1.peekChar$0() !== 124 || t1.peekChar$1(1) === 61)
        return new A.QualifiedName0(nameOrNamespace, null);
      t1.readChar$0();
      return new A.QualifiedName0(_this.identifier$0(), nameOrNamespace);
    },
    _selector$_attributeOperator$0() {
      var t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      switch (t1.readChar$0()) {
        case 61:
          return B.AttributeOperator_ES60;
        case 126:
          t1.expectChar$1(61);
          return B.AttributeOperator_r600;
        case 124:
          t1.expectChar$1(61);
          return B.AttributeOperator_ivT0;
        case 94:
          t1.expectChar$1(61);
          return B.AttributeOperator_eot0;
        case 36:
          t1.expectChar$1(61);
          return B.AttributeOperator_BGd0;
        case 42:
          t1.expectChar$1(61);
          return B.AttributeOperator_8aB0;
        default:
          t1.error$2$position(0, 'Expected "]".', t2);
      }
    },
    _selector$_pseudoSelector$0() {
      var element, $name, unvendored, selector, argument, t2, _this = this, _null = null,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(58);
      element = t1.scanChar$1(58);
      $name = _this.identifier$0();
      if (!t1.scanChar$1(40))
        return A.PseudoSelector$0($name, _this.spanFrom$1(start), _null, element, _null);
      _this.whitespace$0();
      unvendored = A.unvendor0($name);
      if (element)
        if ($._selectorPseudoElements0.contains$1(0, unvendored)) {
          selector = _this._selector$_selectorList$0();
          argument = _null;
        } else {
          argument = _this.declarationValue$1$allowEmpty(true);
          selector = _null;
        }
      else if ($._selectorPseudoClasses0.contains$1(0, unvendored)) {
        selector = _this._selector$_selectorList$0();
        argument = _null;
      } else if (unvendored === "nth-child" || unvendored === "nth-last-child") {
        argument = _this._selector$_aNPlusB$0();
        _this.whitespace$0();
        t2 = t1.peekChar$1(-1);
        if ((t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12) && t1.peekChar$0() !== 41) {
          _this.expectIdentifier$1("of");
          argument += " of";
          _this.whitespace$0();
          selector = _this._selector$_selectorList$0();
        } else
          selector = _null;
      } else {
        argument = B.JSString_methods.trimRight$0(_this.declarationValue$1$allowEmpty(true));
        selector = _null;
      }
      t1.expectChar$1(41);
      return A.PseudoSelector$0($name, _this.spanFrom$1(start), argument, element, selector);
    },
    _selector$_aNPlusB$0() {
      var t1, _0_0, t2, $self, next, _this = this;
      $label0$0: {
        t1 = _this.scanner;
        _0_0 = t1.peekChar$0();
        if (101 === _0_0 || 69 === _0_0) {
          _this.expectIdentifier$1("even");
          return "even";
        }
        if (111 === _0_0 || 79 === _0_0) {
          _this.expectIdentifier$1("odd");
          return "odd";
        }
        if (43 === _0_0 || 45 === _0_0) {
          t2 = "" + A.Primitives_stringFromCharCode(t1.readChar$0());
          break $label0$0;
        }
        t2 = "";
      }
      $self = t1.peekChar$0();
      if ($self != null && $self >= 48 && $self <= 57) {
        do {
          t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
          $self = t1.peekChar$0();
        } while ($self != null && $self >= 48 && $self <= 57);
        _this.whitespace$0();
        if (!_this.scanIdentChar$1(110))
          return t2.charCodeAt(0) == 0 ? t2 : t2;
      } else
        _this.expectIdentChar$1(110);
      t2 += A.Primitives_stringFromCharCode(110);
      _this.whitespace$0();
      next = t1.peekChar$0();
      if (next !== 43 && next !== 45)
        return t2.charCodeAt(0) == 0 ? t2 : t2;
      t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
      _this.whitespace$0();
      $self = t1.peekChar$0();
      if (!($self != null && $self >= 48 && $self <= 57))
        t1.error$1(0, "Expected a number.");
      do {
        t2 += A.Primitives_stringFromCharCode(t1.readChar$0());
        $self = t1.peekChar$0();
      } while ($self != null && $self >= 48 && $self <= 57);
      return t2.charCodeAt(0) == 0 ? t2 : t2;
    },
    _selector$_typeOrUniversalSelector$0() {
      var nameOrNamespace, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (t1.scanChar$1(42)) {
        if (!t1.scanChar$1(124))
          return new A.UniversalSelector0(null, _this.spanFrom$1(start));
        return t1.scanChar$1(42) ? new A.UniversalSelector0("*", _this.spanFrom$1(start)) : new A.TypeSelector0(new A.QualifiedName0(_this.identifier$0(), "*"), _this.spanFrom$1(start));
      } else if (t1.scanChar$1(124))
        return t1.scanChar$1(42) ? new A.UniversalSelector0("", _this.spanFrom$1(start)) : new A.TypeSelector0(new A.QualifiedName0(_this.identifier$0(), ""), _this.spanFrom$1(start));
      nameOrNamespace = _this.identifier$0();
      if (!t1.scanChar$1(124))
        return new A.TypeSelector0(new A.QualifiedName0(nameOrNamespace, null), _this.spanFrom$1(start));
      else if (t1.scanChar$1(42))
        return new A.UniversalSelector0(nameOrNamespace, _this.spanFrom$1(start));
      else
        return new A.TypeSelector0(new A.QualifiedName0(_this.identifier$0(), nameOrNamespace), _this.spanFrom$1(start));
    }
  };
  A.SelectorParser_parse_closure0.prototype = {
    call$0() {
      var t1 = this.$this,
        selector = t1._selector$_selectorList$0();
      t1 = t1.scanner;
      if (t1._string_scanner$_position !== t1.string.length)
        t1.error$1(0, "expected selector.");
      return selector;
    },
    $signature: 553
  };
  A.SelectorParser_parseCompoundSelector_closure0.prototype = {
    call$0() {
      var t1 = this.$this,
        compound = t1._selector$_compoundSelector$0();
      t1 = t1.scanner;
      if (t1._string_scanner$_position !== t1.string.length)
        t1.error$1(0, "expected selector.");
      return compound;
    },
    $signature: 554
  };
  A.SelectorSearchVisitor0.prototype = {
    visitAttributeSelector$1(attribute) {
      return null;
    },
    visitClassSelector$1(klass) {
      return null;
    },
    visitIDSelector$1(id) {
      return null;
    },
    visitParentSelector$1(placeholder) {
      return null;
    },
    visitPlaceholderSelector$1(placeholder) {
      return null;
    },
    visitTypeSelector$1(type) {
      return null;
    },
    visitUniversalSelector$1(universal) {
      return null;
    },
    visitComplexSelector$1(complex) {
      return A.IterableExtension_search0(complex.components, new A.SelectorSearchVisitor_visitComplexSelector_closure0(this));
    },
    visitCompoundSelector$1(compound) {
      return A.IterableExtension_search0(compound.components, new A.SelectorSearchVisitor_visitCompoundSelector_closure0(this));
    },
    visitPseudoSelector$1(pseudo) {
      return A.NullableExtension_andThen0(pseudo.selector, this.get$visitSelectorList());
    },
    visitSelectorList$1(list) {
      return A.IterableExtension_search0(list.components, this.get$visitComplexSelector());
    }
  };
  A.SelectorSearchVisitor_visitComplexSelector_closure0.prototype = {
    call$1(component) {
      return this.$this.visitCompoundSelector$1(component.selector);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("SelectorSearchVisitor0.T?(ComplexSelectorComponent0)");
    }
  };
  A.SelectorSearchVisitor_visitCompoundSelector_closure0.prototype = {
    call$1(simple) {
      return simple.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("SelectorSearchVisitor0.T?(SimpleSelector0)");
    }
  };
  A.serialize_closure0.prototype = {
    call$1(codeUnit) {
      return codeUnit > 127;
    },
    $signature: 47
  };
  A._SerializeVisitor0.prototype = {
    visitCssStylesheet$1(node) {
      var t1, t2, t3, t4, t5, t6, t7, previous, previous0, t8, _this = this;
      for (t1 = J.get$iterator$ax(node.get$children(node)), t2 = !_this._serialize0$_inspect, t3 = _this._serialize0$_style === B.OutputStyle_10, t4 = !t3, t5 = type$.CssParentNode_2, t6 = _this._serialize0$_buffer, t7 = _this._lineFeed.text, previous = null; t1.moveNext$0();) {
        previous0 = t1.get$current(t1);
        if (t2)
          t8 = t3 ? previous0.accept$1(B._IsInvisibleVisitor_true_true0) : previous0.accept$1(B._IsInvisibleVisitor_true_false0);
        else
          t8 = false;
        if (t8)
          continue;
        if (previous != null) {
          if (t5._is(previous) ? previous.get$isChildless() : !(previous instanceof A.ModifiableCssComment0))
            t6.writeCharCode$1(59);
          if (_this._serialize0$_isTrailingComment$2(previous0, previous)) {
            if (t4)
              t6.writeCharCode$1(32);
          } else {
            if (t4)
              t6.write$1(0, t7);
            if (previous.get$isGroupEnd())
              if (t4)
                t6.write$1(0, t7);
          }
        }
        previous0.accept$1(_this);
        previous = previous0;
      }
      if (previous != null)
        t1 = (t5._is(previous) ? previous.get$isChildless() : !(previous instanceof A.ModifiableCssComment0)) && t4;
      else
        t1 = false;
      if (t1)
        t6.writeCharCode$1(59);
    },
    visitCssComment$1(node) {
      this._serialize0$_buffer.forSpan$2(node.span, new A._SerializeVisitor_visitCssComment_closure0(this, node));
    },
    visitCssAtRule$1(node) {
      var t1, _this = this;
      _this._serialize0$_writeIndentation$0();
      t1 = _this._serialize0$_buffer;
      t1.forSpan$2(node.span, new A._SerializeVisitor_visitCssAtRule_closure0(_this, node));
      if (!node.isChildless) {
        if (_this._serialize0$_style !== B.OutputStyle_10)
          t1.writeCharCode$1(32);
        _this._serialize0$_visitChildren$1(node);
      }
    },
    visitCssMediaRule$1(node) {
      var t1, _this = this;
      _this._serialize0$_writeIndentation$0();
      t1 = _this._serialize0$_buffer;
      t1.forSpan$2(node.span, new A._SerializeVisitor_visitCssMediaRule_closure0(_this, node));
      if (_this._serialize0$_style !== B.OutputStyle_10)
        t1.writeCharCode$1(32);
      _this._serialize0$_visitChildren$1(node);
    },
    visitCssImport$1(node) {
      this._serialize0$_writeIndentation$0();
      this._serialize0$_buffer.forSpan$2(node.span, new A._SerializeVisitor_visitCssImport_closure0(this, node));
    },
    _serialize0$_writeImportUrl$1(url) {
      var urlContents, maybeQuote, _this = this;
      if (_this._serialize0$_style !== B.OutputStyle_10 || url.charCodeAt(0) !== 117) {
        _this._serialize0$_buffer.write$1(0, url);
        return;
      }
      urlContents = B.JSString_methods.substring$2(url, 4, url.length - 1);
      maybeQuote = urlContents.charCodeAt(0);
      if (maybeQuote === 39 || maybeQuote === 34)
        _this._serialize0$_buffer.write$1(0, urlContents);
      else
        _this._serialize0$_visitQuotedString$1(urlContents);
    },
    visitCssKeyframeBlock$1(node) {
      var t1, _this = this;
      _this._serialize0$_writeIndentation$0();
      t1 = _this._serialize0$_buffer;
      t1.forSpan$2(node.selector.span, new A._SerializeVisitor_visitCssKeyframeBlock_closure0(_this, node));
      if (_this._serialize0$_style !== B.OutputStyle_10)
        t1.writeCharCode$1(32);
      _this._serialize0$_visitChildren$1(node);
    },
    _serialize0$_visitMediaQuery$1(query) {
      var modifier, t1, _1_0, type, _2_0, condition, operator, t2, _this = this,
        _0_0 = query.modifier;
      if (_0_0 != null) {
        modifier = _0_0;
        t1 = true;
      } else {
        modifier = null;
        t1 = false;
      }
      if (t1) {
        t1 = _this._serialize0$_buffer;
        t1.write$1(0, modifier);
        t1.writeCharCode$1(32);
      }
      _1_0 = query.type;
      if (_1_0 != null) {
        type = _1_0;
        t1 = true;
      } else {
        type = null;
        t1 = false;
      }
      if (t1) {
        t1 = _this._serialize0$_buffer;
        t1.write$1(0, type);
        if (query.conditions.length !== 0)
          t1.write$1(0, " and ");
      }
      _2_0 = query.conditions;
      if (_2_0.length === 1)
        t1 = B.JSString_methods.startsWith$1(_2_0[0], "(not ");
      else
        t1 = false;
      if (t1) {
        t1 = _this._serialize0$_buffer;
        t1.write$1(0, "not ");
        condition = B.JSArray_methods.get$first(_2_0);
        t1.write$1(0, B.JSString_methods.substring$2(condition, 5, condition.length - 1));
      } else {
        operator = query.conjunction ? "and" : "or";
        t1 = _this._serialize0$_style === B.OutputStyle_10 ? operator + " " : " " + operator + " ";
        t2 = _this._serialize0$_buffer;
        _this._serialize0$_writeBetween$3(_2_0, t1, t2.get$write(t2));
      }
    },
    visitCssStyleRule$1(node) {
      var t1, _this = this;
      _this._serialize0$_writeIndentation$0();
      t1 = _this._serialize0$_buffer;
      t1.forSpan$2(node._style_rule0$_selector._box0$_inner.value.span, new A._SerializeVisitor_visitCssStyleRule_closure0(_this, node));
      if (_this._serialize0$_style !== B.OutputStyle_10)
        t1.writeCharCode$1(32);
      _this._serialize0$_visitChildren$1(node);
    },
    visitCssSupportsRule$1(node) {
      var t1, _this = this;
      _this._serialize0$_writeIndentation$0();
      t1 = _this._serialize0$_buffer;
      t1.forSpan$2(node.span, new A._SerializeVisitor_visitCssSupportsRule_closure0(_this, node));
      if (_this._serialize0$_style !== B.OutputStyle_10)
        t1.writeCharCode$1(32);
      _this._serialize0$_visitChildren$1(node);
    },
    visitCssDeclaration$1(node) {
      var error, stackTrace, error0, stackTrace0, t1, t2, exception, _this = this;
      _this._serialize0$_writeIndentation$0();
      t1 = node.name;
      _this._serialize0$_write$1(t1);
      t2 = _this._serialize0$_buffer;
      t2.writeCharCode$1(58);
      if (J.startsWith$1$s(t1.value, "--") && node.parsedAsCustomProperty)
        t2.forSpan$2(node.value.span, new A._SerializeVisitor_visitCssDeclaration_closure1(_this, node));
      else {
        if (_this._serialize0$_style !== B.OutputStyle_10)
          t2.writeCharCode$1(32);
        try {
          t2.forSpan$2(node.valueSpanForMap, new A._SerializeVisitor_visitCssDeclaration_closure2(_this, node));
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (t1 instanceof A.MultiSpanSassScriptException0) {
            error = t1;
            stackTrace = A.getTraceFromException(exception);
            A.throwWithTrace0(A.MultiSpanSassException$0(error.message, node.value.span, error.primaryLabel, error.secondarySpans, null), error, stackTrace);
          } else if (t1 instanceof A.SassScriptException0) {
            error0 = t1;
            stackTrace0 = A.getTraceFromException(exception);
            t1 = error0.message;
            A.throwWithTrace0(new A.SassException0(B.Set_empty, t1, node.value.span), error0, stackTrace0);
          } else
            throw exception;
        }
      }
    },
    _serialize0$_writeFoldedValue$1(node) {
      var t1, t2, next, t3,
        scanner = A.StringScanner$(type$.SassString_2._as(node.value.value)._string0$_text, null, null);
      for (t1 = scanner.string.length, t2 = this._serialize0$_buffer; scanner._string_scanner$_position !== t1;) {
        next = scanner.readChar$0();
        if (next !== 10) {
          t2.writeCharCode$1(next);
          continue;
        }
        t2.writeCharCode$1(32);
        while (true) {
          t3 = scanner.peekChar$0();
          if (!(t3 === 32 || t3 === 9 || t3 === 10 || t3 === 13 || t3 === 12))
            break;
          scanner.readChar$0();
        }
      }
    },
    _serialize0$_writeReindentedValue$1(node) {
      var _0_0, t1, _this = this,
        value = type$.SassString_2._as(node.value.value)._string0$_text;
      $label0$0: {
        _0_0 = _this._serialize0$_minimumIndentation$1(value);
        if (_0_0 == null) {
          _this._serialize0$_buffer.write$1(0, value);
          break $label0$0;
        }
        if (-1 === _0_0) {
          t1 = _this._serialize0$_buffer;
          t1.write$1(0, A.trimAsciiRight0(value, true));
          t1.writeCharCode$1(32);
          break $label0$0;
        }
        t1 = node.name.span;
        t1 = t1.get$start(t1);
        _this._serialize0$_writeWithIndent$2(value, Math.min(_0_0, t1.file.getColumn$1(t1.offset)));
      }
    },
    _serialize0$_minimumIndentation$1(text) {
      var character, t2, min, next, min0,
        scanner = A.LineScanner$(text),
        t1 = scanner.string.length;
      while (true) {
        if (scanner._string_scanner$_position !== t1) {
          character = scanner.super$StringScanner$readChar();
          scanner._adjustLineAndColumn$1(character);
          t2 = character !== 10;
        } else
          t2 = false;
        if (!t2)
          break;
      }
      if (scanner._string_scanner$_position === t1)
        return scanner.peekChar$1(-1) === 10 ? -1 : null;
      for (min = null; scanner._string_scanner$_position !== t1;) {
        for (; scanner._string_scanner$_position !== t1;) {
          next = scanner.peekChar$0();
          if (next !== 32 && next !== 9)
            break;
          scanner._adjustLineAndColumn$1(scanner.super$StringScanner$readChar());
        }
        if (scanner._string_scanner$_position === t1 || scanner.scanChar$1(10))
          continue;
        min0 = scanner._line_scanner$_column;
        min = min == null ? min0 : Math.min(min, min0);
        while (true) {
          if (scanner._string_scanner$_position !== t1) {
            character = scanner.super$StringScanner$readChar();
            scanner._adjustLineAndColumn$1(character);
            t2 = character !== 10;
          } else
            t2 = false;
          if (!t2)
            break;
        }
      }
      return min == null ? -1 : min;
    },
    _serialize0$_writeWithIndent$2(text, minimumIndentation) {
      var t1, t2, t3, character, lineStart, newlines, end,
        scanner = A.LineScanner$(text);
      for (t1 = scanner.string, t2 = t1.length, t3 = this._serialize0$_buffer; scanner._string_scanner$_position !== t2;) {
        character = scanner.super$StringScanner$readChar();
        scanner._adjustLineAndColumn$1(character);
        if (character === 10)
          break;
        t3.writeCharCode$1(character);
      }
      for (; true;) {
        lineStart = scanner._string_scanner$_position;
        for (newlines = 1; true;) {
          if (scanner._string_scanner$_position === t2) {
            t3.writeCharCode$1(32);
            return;
          }
          $label0$2: {
            character = scanner.super$StringScanner$readChar();
            scanner._adjustLineAndColumn$1(character);
            if (32 === character || 9 === character)
              continue;
            if (10 === character) {
              lineStart = scanner._string_scanner$_position;
              ++newlines;
              break $label0$2;
            }
            break;
          }
        }
        this._serialize0$_writeTimes$2(10, newlines);
        this._serialize0$_writeIndentation$0();
        end = scanner._string_scanner$_position;
        t3.write$1(0, B.JSString_methods.substring$2(t1, lineStart + minimumIndentation, end));
        for (; true;) {
          if (scanner._string_scanner$_position === t2)
            return;
          character = scanner.super$StringScanner$readChar();
          scanner._adjustLineAndColumn$1(character);
          if (character === 10)
            break;
          t3.writeCharCode$1(character);
        }
      }
    },
    visitCalculation$1(value) {
      var t2, _this = this,
        t1 = _this._serialize0$_buffer;
      t1.write$1(0, value.name);
      t1.writeCharCode$1(40);
      t2 = _this._serialize0$_style === B.OutputStyle_10 ? "," : ", ";
      _this._serialize0$_writeBetween$3(value.$arguments, t2, _this.get$_serialize0$_writeCalculationValue());
      t1.writeCharCode$1(41);
    },
    _serialize0$_writeCalculationValue$1(value) {
      var _2_5, t1, _0_0, _1_0, unit, t2, operator, left, right, parenthesizeLeft, operatorWhitespace, parenthesizeRight, _this = this, _null = null;
      $label0$0: {
        _2_5 = A._InitializedCell$(new A._SerializeVisitor__writeCalculationValue_closure0(value));
        t1 = value instanceof A.SassNumber0;
        if (t1 && _2_5._readFinal$0() && value.get$hasComplexUnits()) {
          if (!_this._serialize0$_inspect)
            throw A.wrapException(A.SassScriptException$0(A.S(value) + " isn't a valid CSS value.", _null));
          _this._serialize0$_writeNumber$1(value._number1$_value);
          _this._serialize0$_buffer.write$1(0, value.get$unitString());
          break $label0$0;
        }
        if (t1 && _2_5._readFinal$0()) {
          $label1$1: {
            _0_0 = value._number1$_value;
            if (1 / 0 === _0_0) {
              _this._serialize0$_buffer.write$1(0, "infinity");
              break $label1$1;
            }
            if (-1 / 0 === _0_0) {
              _this._serialize0$_buffer.write$1(0, "-infinity");
              break $label1$1;
            }
            if (isNaN(_0_0))
              _this._serialize0$_buffer.write$1(0, "NaN");
          }
          _1_0 = A.IterableExtension_get_firstOrNull(J.get$numeratorUnits$x(value));
          if (_1_0 != null) {
            unit = _1_0;
            t1 = true;
          } else {
            unit = _null;
            t1 = false;
          }
          if (t1) {
            t1 = _this._serialize0$_style !== B.OutputStyle_10;
            if (t1)
              _this._serialize0$_buffer.writeCharCode$1(32);
            t2 = _this._serialize0$_buffer;
            t2.writeCharCode$1(42);
            if (t1)
              t2.writeCharCode$1(32);
            t2.writeCharCode$1(49);
            t2.write$1(0, unit);
          }
          break $label0$0;
        }
        if (value instanceof A.Value0) {
          value.accept$1(_this);
          break $label0$0;
        }
        if (value instanceof A.CalculationOperation0) {
          operator = value._calculation0$_operator;
          left = value._calculation0$_left;
          right = value._calculation0$_right;
          right = right;
          t1 = true;
        } else {
          right = _null;
          left = right;
          operator = left;
          t1 = false;
        }
        if (t1) {
          parenthesizeLeft = left instanceof A.CalculationOperation0 && left._calculation0$_operator.precedence < operator.precedence;
          if (parenthesizeLeft)
            _this._serialize0$_buffer.writeCharCode$1(40);
          _this._serialize0$_writeCalculationValue$1(left);
          if (parenthesizeLeft)
            _this._serialize0$_buffer.writeCharCode$1(41);
          operatorWhitespace = _this._serialize0$_style !== B.OutputStyle_10 || operator.precedence === 1;
          if (operatorWhitespace)
            _this._serialize0$_buffer.writeCharCode$1(32);
          t1 = _this._serialize0$_buffer;
          t1.write$1(0, operator.operator);
          if (operatorWhitespace)
            t1.writeCharCode$1(32);
          if (!(right instanceof A.CalculationOperation0 && _this._serialize0$_parenthesizeCalculationRhs$2(operator, right._calculation0$_operator)))
            parenthesizeRight = operator === B.CalculationOperator_OvN0 && right instanceof A.SassNumber0 && !isFinite(right._number1$_value) && right.get$hasUnits();
          else
            parenthesizeRight = true;
          if (parenthesizeRight)
            t1.writeCharCode$1(40);
          _this._serialize0$_writeCalculationValue$1(right);
          if (parenthesizeRight)
            t1.writeCharCode$1(41);
        }
      }
    },
    _serialize0$_parenthesizeCalculationRhs$2(outer, right) {
      var t1;
      $label0$0: {
        if (B.CalculationOperator_OvN0 === outer) {
          t1 = true;
          break $label0$0;
        }
        if (B.CalculationOperator_IyK0 === outer) {
          t1 = false;
          break $label0$0;
        }
        t1 = right === B.CalculationOperator_IyK0 || right === B.CalculationOperator_2bx0;
        break $label0$0;
      }
      return t1;
    },
    visitColor$1(value) {
      var hexLength, _0_0, $name, t1, _1_0, format, opaque, t2, _3_0, _this = this;
      if (_this._serialize0$_style === B.OutputStyle_10)
        if (!A.fuzzyEquals0(value._color1$_alpha, 1))
          _this._serialize0$_writeRgb$1(value);
        else {
          hexLength = _this._serialize0$_canUseShortHex$1(value) ? 4 : 7;
          _0_0 = $.$get$namesByColor0().$index(0, value);
          if (_0_0 != null) {
            $name = _0_0;
            t1 = true;
          } else {
            $name = null;
            t1 = false;
          }
          if (t1 && $name.length <= hexLength)
            _this._serialize0$_buffer.write$1(0, $name);
          else {
            t1 = _this._serialize0$_buffer;
            if (_this._serialize0$_canUseShortHex$1(value)) {
              t1.writeCharCode$1(35);
              t1.writeCharCode$1(A.hexCharFor0(value.get$red(value) & 15));
              t1.writeCharCode$1(A.hexCharFor0(value.get$green(value) & 15));
              t1.writeCharCode$1(A.hexCharFor0(value.get$blue(value) & 15));
            } else {
              t1.writeCharCode$1(35);
              _this._serialize0$_writeHexComponent$1(value.get$red(value));
              _this._serialize0$_writeHexComponent$1(value.get$green(value));
              _this._serialize0$_writeHexComponent$1(value.get$blue(value));
            }
          }
        }
      else {
        _1_0 = value.format;
        if (_1_0 != null) {
          format = _1_0;
          t1 = true;
        } else {
          format = null;
          t1 = false;
        }
        if (t1)
          $label0$0: {
            if (B._ColorFormatEnum_rgbFunction0 === format) {
              _this._serialize0$_writeRgb$1(value);
              break $label0$0;
            }
            if (B._ColorFormatEnum_hslFunction0 === format) {
              t1 = value._color1$_alpha;
              opaque = A.fuzzyEquals0(t1, 1);
              t2 = _this._serialize0$_buffer;
              t2.write$1(0, opaque ? "hsl(" : "hsla(");
              _this._serialize0$_writeNumber$1(value.get$hue(value));
              t2.write$1(0, ", ");
              _this._serialize0$_writeNumber$1(value.get$saturation(value));
              t2.writeCharCode$1(37);
              t2.write$1(0, ", ");
              _this._serialize0$_writeNumber$1(value.get$lightness(value));
              t2.writeCharCode$1(37);
              if (!opaque) {
                t2.write$1(0, ", ");
                _this._serialize0$_writeNumber$1(t1);
              }
              t2.writeCharCode$1(41);
              break $label0$0;
            }
            if (format instanceof A.SpanColorFormat0) {
              _this._serialize0$_buffer.write$1(0, format._color1$_span.get$text());
              break $label0$0;
            }
          }
        else {
          _3_0 = $.$get$namesByColor0().$index(0, value);
          if (_3_0 != null) {
            $name = _3_0;
            t1 = true;
          } else {
            $name = null;
            t1 = false;
          }
          if (t1 && !A.fuzzyEquals0(value._color1$_alpha, 0))
            _this._serialize0$_buffer.write$1(0, $name);
          else if (A.fuzzyEquals0(value._color1$_alpha, 1)) {
            _this._serialize0$_buffer.writeCharCode$1(35);
            _this._serialize0$_writeHexComponent$1(value.get$red(value));
            _this._serialize0$_writeHexComponent$1(value.get$green(value));
            _this._serialize0$_writeHexComponent$1(value.get$blue(value));
          } else
            _this._serialize0$_writeRgb$1(value);
        }
      }
    },
    _serialize0$_writeRgb$1(value) {
      var t3,
        t1 = value._color1$_alpha,
        opaque = A.fuzzyEquals0(t1, 1),
        t2 = this._serialize0$_buffer;
      t2.write$1(0, opaque ? "rgb(" : "rgba(");
      t2.write$1(0, value.get$red(value));
      t3 = this._serialize0$_style === B.OutputStyle_10;
      t2.write$1(0, t3 ? "," : ", ");
      t2.write$1(0, value.get$green(value));
      t2.write$1(0, t3 ? "," : ", ");
      t2.write$1(0, value.get$blue(value));
      if (!opaque) {
        t2.write$1(0, t3 ? "," : ", ");
        this._serialize0$_writeNumber$1(t1);
      }
      t2.writeCharCode$1(41);
    },
    _serialize0$_canUseShortHex$1(color) {
      var t1 = color.get$red(color);
      if ((t1 & 15) === B.JSInt_methods._shrOtherPositive$1(t1, 4)) {
        t1 = color.get$green(color);
        if ((t1 & 15) === B.JSInt_methods._shrOtherPositive$1(t1, 4)) {
          t1 = color.get$blue(color);
          t1 = (t1 & 15) === B.JSInt_methods._shrOtherPositive$1(t1, 4);
        } else
          t1 = false;
      } else
        t1 = false;
      return t1;
    },
    _serialize0$_writeHexComponent$1(color) {
      var t1 = this._serialize0$_buffer;
      t1.writeCharCode$1(A.hexCharFor0(B.JSInt_methods._shrOtherPositive$1(color, 4)));
      t1.writeCharCode$1(A.hexCharFor0(color & 15));
    },
    visitList$1(value) {
      var t2, t3, singleton, t4, t5, _this = this,
        t1 = value._list1$_hasBrackets;
      if (t1)
        _this._serialize0$_buffer.writeCharCode$1(91);
      else if (value._list1$_contents.length === 0) {
        if (!_this._serialize0$_inspect)
          throw A.wrapException(A.SassScriptException$0("() isn't a valid CSS value.", null));
        _this._serialize0$_buffer.write$1(0, "()");
        return;
      }
      t2 = _this._serialize0$_inspect;
      if (t2)
        if (value._list1$_contents.length === 1) {
          t3 = value._list1$_separator;
          t3 = t3 === B.ListSeparator_rXA0 || t3 === B.ListSeparator_zg90;
          singleton = t3;
        } else
          singleton = false;
      else
        singleton = false;
      if (singleton && !t1)
        _this._serialize0$_buffer.writeCharCode$1(40);
      t3 = value._list1$_contents;
      t3 = t2 ? t3 : new A.WhereIterable(t3, new A._SerializeVisitor_visitList_closure2(), A._arrayInstanceType(t3)._eval$1("WhereIterable<1>"));
      t4 = value._list1$_separator;
      t5 = _this._serialize0$_separatorString$1(t4);
      _this._serialize0$_writeBetween$3(t3, t5, t2 ? new A._SerializeVisitor_visitList_closure3(_this, value) : new A._SerializeVisitor_visitList_closure4(_this));
      if (singleton) {
        t2 = _this._serialize0$_buffer;
        t2.write$1(0, t4.separator);
        if (!t1)
          t2.writeCharCode$1(41);
      }
      if (t1)
        _this._serialize0$_buffer.writeCharCode$1(93);
    },
    _serialize0$_separatorString$1(separator) {
      var t1;
      $label0$0: {
        if (B.ListSeparator_rXA0 === separator) {
          t1 = this._serialize0$_style === B.OutputStyle_10 ? "," : ", ";
          break $label0$0;
        }
        if (B.ListSeparator_zg90 === separator) {
          t1 = this._serialize0$_style === B.OutputStyle_10 ? "/" : " / ";
          break $label0$0;
        }
        if (B.ListSeparator_EVt0 === separator) {
          t1 = " ";
          break $label0$0;
        }
        t1 = "";
        break $label0$0;
      }
      return t1;
    },
    _serialize0$_elementNeedsParens$2(separator, value) {
      var t1;
      $label1$1: {
        if (value instanceof A.SassList0 && value._list1$_contents.length > 1 && !value._list1$_hasBrackets) {
          $label0$0: {
            if (B.ListSeparator_rXA0 === separator) {
              t1 = value._list1$_separator === B.ListSeparator_rXA0;
              break $label0$0;
            }
            if (B.ListSeparator_zg90 === separator) {
              t1 = value._list1$_separator;
              t1 = t1 === B.ListSeparator_rXA0 || t1 === B.ListSeparator_zg90;
              break $label0$0;
            }
            t1 = value._list1$_separator !== B.ListSeparator_undecided_null_undecided0;
            break $label0$0;
          }
          break $label1$1;
        }
        t1 = false;
        break $label1$1;
      }
      return t1;
    },
    visitMap$1(map) {
      var t1, t2, _this = this;
      if (!_this._serialize0$_inspect)
        throw A.wrapException(A.SassScriptException$0(map.toString$0(0) + " isn't a valid CSS value.", null));
      t1 = _this._serialize0$_buffer;
      t1.writeCharCode$1(40);
      t2 = map._map0$_contents;
      _this._serialize0$_writeBetween$3(t2.get$entries(t2), ", ", new A._SerializeVisitor_visitMap_closure0(_this));
      t1.writeCharCode$1(41);
    },
    _serialize0$_writeMapElement$1(value) {
      var needsParens = value instanceof A.SassList0 && value._list1$_separator === B.ListSeparator_rXA0 && !value._list1$_hasBrackets;
      if (needsParens)
        this._serialize0$_buffer.writeCharCode$1(40);
      value.accept$1(this);
      if (needsParens)
        this._serialize0$_buffer.writeCharCode$1(41);
    },
    visitNumber$1(value) {
      var before, after, t1, _1_0, first, _this = this, _null = null,
        _0_0 = value.asSlash;
      if (type$.Record_2_nullable_Object_and_nullable_Object._is(_0_0)) {
        before = _0_0._0;
        after = _0_0._1;
        t1 = true;
      } else {
        after = _null;
        before = after;
        t1 = false;
      }
      if (t1) {
        _this.visitNumber$1(before);
        _this._serialize0$_buffer.writeCharCode$1(47);
        _this.visitNumber$1(after);
        return;
      }
      t1 = value._number1$_value;
      if (!isFinite(t1)) {
        _this.visitCalculation$1(new A.SassCalculation0("calc", A.List_List$unmodifiable(A._setArrayType([value], type$.JSArray_Object), type$.Object)));
        return;
      }
      _this._serialize0$_writeNumber$1(t1);
      if (!_this._serialize0$_inspect) {
        if (value.get$hasComplexUnits())
          throw A.wrapException(A.SassScriptException$0(value.toString$0(0) + " isn't a valid CSS value.", _null));
        _1_0 = value.get$numeratorUnits(value);
        if (_1_0.length === 1) {
          first = _1_0[0];
          t1 = true;
        } else {
          first = _null;
          t1 = false;
        }
        if (t1)
          _this._serialize0$_buffer.write$1(0, first);
      } else
        _this._serialize0$_buffer.write$1(0, value.get$unitString());
    },
    _serialize0$_writeNumber$1(number) {
      var integer, t1, text, _this = this,
        _0_0 = A.fuzzyAsInt0(number);
      if (_0_0 != null) {
        integer = _0_0;
        t1 = true;
      } else {
        integer = null;
        t1 = false;
      }
      if (t1) {
        _this._serialize0$_buffer.write$1(0, _this._serialize0$_removeExponent$1(J.toString$0$(integer)));
        return;
      }
      text = _this._serialize0$_removeExponent$1(B.JSNumber_methods.toString$0(number));
      if (text.length < 12) {
        if (_this._serialize0$_style === B.OutputStyle_10 && text.charCodeAt(0) === 48)
          text = B.JSString_methods.substring$1(text, 1);
        _this._serialize0$_buffer.write$1(0, text);
        return;
      }
      _this._serialize0$_writeRounded$1(text);
    },
    _serialize0$_removeExponent$1(text) {
      var buffer, t2, t3, additionalZeroes,
        negative = text.charCodeAt(0) === 45,
        exponent = A._Cell$(),
        t1 = text.length,
        i = 0;
      while (true) {
        if (!(i < t1)) {
          buffer = null;
          break;
        }
        c$0: {
          if (text.charCodeAt(i) !== 101)
            break c$0;
          buffer = new A.StringBuffer("");
          t2 = buffer._contents = "" + A.Primitives_stringFromCharCode(text.charCodeAt(0));
          if (negative) {
            t2 += A.Primitives_stringFromCharCode(text.charCodeAt(1));
            buffer._contents = t2;
            if (i > 3)
              buffer._contents = t2 + B.JSString_methods.substring$2(text, 3, i);
          } else if (i > 2)
            buffer._contents = t2 + B.JSString_methods.substring$2(text, 2, i);
          exponent._value = A.int_parse(B.JSString_methods.substring$2(text, i + 1, t1), null);
          break;
        }
        ++i;
      }
      if (buffer == null)
        return text;
      if (exponent._readLocal$0() > 0) {
        t1 = exponent._readLocal$0();
        t2 = buffer._contents;
        t3 = negative ? 1 : 0;
        additionalZeroes = t1 - (t2.length - 1 - t3);
        for (t1 = t2, i = 0; i < additionalZeroes; ++i)
          t1 = buffer._contents += A.Primitives_stringFromCharCode(48);
        return t1.charCodeAt(0) == 0 ? t1 : t1;
      } else {
        negative = text.charCodeAt(0) === 45;
        t1 = (negative ? "" + A.Primitives_stringFromCharCode(45) : "") + "0.";
        t2 = exponent.__late_helper$_name;
        i = -1;
        while (true) {
          t3 = exponent._value;
          if (t3 === exponent)
            A.throwExpression(A.LateError$localNI(t2));
          if (!(i > t3))
            break;
          t1 += A.Primitives_stringFromCharCode(48);
          --i;
        }
        if (negative) {
          t2 = buffer._contents;
          t2 = B.JSString_methods.substring$1(t2.charCodeAt(0) == 0 ? t2 : t2, 1);
        } else
          t2 = buffer;
        t2 = t1 + A.S(t2);
        return t2.charCodeAt(0) == 0 ? t2 : t2;
      }
    },
    _serialize0$_writeRounded$1(text) {
      var t1, digits, negative, textIndex, digitsIndex, textIndex0, codeUnit, digitsIndex0, indexAfterPrecision, digitsIndex1, newDigit, writtenIndex, t2, _this = this;
      if (B.JSString_methods.endsWith$1(text, ".0")) {
        _this._serialize0$_buffer.write$1(0, B.JSString_methods.substring$2(text, 0, text.length - 2));
        return;
      }
      t1 = text.length;
      digits = new Uint8Array(t1 + 1);
      negative = text.charCodeAt(0) === 45;
      textIndex = negative ? 1 : 0;
      for (digitsIndex = 1; true; textIndex = textIndex0, digitsIndex = digitsIndex0) {
        if (textIndex === t1) {
          _this._serialize0$_buffer.write$1(0, text);
          return;
        }
        textIndex0 = textIndex + 1;
        codeUnit = text.charCodeAt(textIndex);
        if (codeUnit === 46) {
          textIndex = textIndex0;
          break;
        }
        digitsIndex0 = digitsIndex + 1;
        digits[digitsIndex] = codeUnit - 48;
      }
      indexAfterPrecision = textIndex + 10;
      if (indexAfterPrecision >= t1) {
        _this._serialize0$_buffer.write$1(0, text);
        return;
      }
      for (digitsIndex0 = digitsIndex; textIndex < indexAfterPrecision; textIndex = textIndex0, digitsIndex0 = digitsIndex1) {
        digitsIndex1 = digitsIndex0 + 1;
        textIndex0 = textIndex + 1;
        digits[digitsIndex0] = text.charCodeAt(textIndex) - 48;
      }
      if (text.charCodeAt(textIndex) - 48 >= 5)
        for (; true; digitsIndex0 = digitsIndex1) {
          digitsIndex1 = digitsIndex0 - 1;
          newDigit = digits[digitsIndex1] + 1;
          digits[digitsIndex1] = newDigit;
          if (newDigit !== 10)
            break;
        }
      for (; digitsIndex0 < digitsIndex; ++digitsIndex0)
        digits[digitsIndex0] = 0;
      while (true) {
        t1 = digitsIndex0 > digitsIndex;
        if (!(t1 && digits[digitsIndex0 - 1] === 0))
          break;
        --digitsIndex0;
      }
      if (digitsIndex0 === 2 && digits[0] === 0 && digits[1] === 0) {
        _this._serialize0$_buffer.writeCharCode$1(48);
        return;
      }
      if (negative)
        _this._serialize0$_buffer.writeCharCode$1(45);
      if (digits[0] === 0)
        writtenIndex = _this._serialize0$_style === B.OutputStyle_10 && digits[1] === 0 ? 2 : 1;
      else
        writtenIndex = 0;
      for (t2 = _this._serialize0$_buffer; writtenIndex < digitsIndex; ++writtenIndex)
        t2.writeCharCode$1(48 + digits[writtenIndex]);
      if (t1) {
        t2.writeCharCode$1(46);
        for (; writtenIndex < digitsIndex0; ++writtenIndex)
          t2.writeCharCode$1(48 + digits[writtenIndex]);
      }
    },
    _serialize0$_visitQuotedString$2$forceDoubleQuote(string, forceDoubleQuote) {
      var t1, includesSingleQuote, includesDoubleQuote, i, char, _1_2, _1_4, _0_0, newIndex, t2, quote, _this = this,
        buffer = forceDoubleQuote ? _this._serialize0$_buffer : new A.StringBuffer("");
      if (forceDoubleQuote)
        buffer.writeCharCode$1(34);
      for (t1 = string.length, includesSingleQuote = false, includesDoubleQuote = false, i = 0; i < t1; ++i) {
        char = string.charCodeAt(i);
        _1_2 = A._InitializedCell$(new A._SerializeVisitor__visitQuotedString_closure1(char));
        _1_4 = A._InitializedCell$(new A._SerializeVisitor__visitQuotedString_closure2(char));
        if (_1_2._readFinal$0() && forceDoubleQuote) {
          buffer.writeCharCode$1(39);
          continue;
        }
        if (_1_2._readFinal$0() && includesDoubleQuote) {
          _this._serialize0$_visitQuotedString$2$forceDoubleQuote(string, true);
          return;
        }
        if (_1_2._readFinal$0()) {
          buffer.writeCharCode$1(39);
          includesSingleQuote = true;
          continue;
        }
        if (_1_4._readFinal$0() && forceDoubleQuote) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(34);
          continue;
        }
        if (_1_4._readFinal$0() && includesSingleQuote) {
          _this._serialize0$_visitQuotedString$2$forceDoubleQuote(string, true);
          return;
        }
        if (_1_4._readFinal$0()) {
          buffer.writeCharCode$1(34);
          includesDoubleQuote = true;
          continue;
        }
        if (0 === char || 1 === char || 2 === char || 3 === char || 4 === char || 5 === char || 6 === char || 7 === char || 8 === char || 10 === char || 11 === char || 12 === char || 13 === char || 14 === char || 15 === char || 16 === char || 17 === char || 18 === char || 19 === char || 20 === char || 21 === char || 22 === char || 23 === char || 24 === char || 25 === char || 26 === char || 27 === char || 28 === char || 29 === char || 30 === char || 31 === char) {
          _this._serialize0$_writeEscape$4(buffer, char, string, i);
          continue;
        }
        if (92 === char) {
          buffer.writeCharCode$1(92);
          buffer.writeCharCode$1(92);
          continue;
        }
        _0_0 = _this._serialize0$_tryPrivateUseCharacter$4(buffer, char, string, i);
        if (_0_0 != null) {
          newIndex = _0_0;
          t2 = true;
        } else {
          newIndex = null;
          t2 = false;
        }
        if (t2)
          i = newIndex;
        else
          buffer.writeCharCode$1(char);
      }
      if (forceDoubleQuote)
        buffer.writeCharCode$1(34);
      else {
        quote = includesDoubleQuote ? 39 : 34;
        t1 = _this._serialize0$_buffer;
        t1.writeCharCode$1(quote);
        t1.write$1(0, buffer);
        t1.writeCharCode$1(quote);
      }
    },
    _serialize0$_visitQuotedString$1(string) {
      return this._serialize0$_visitQuotedString$2$forceDoubleQuote(string, false);
    },
    _serialize0$_visitUnquotedString$1(string) {
      var t1, t2, afterNewline, i, _1_0, _0_0, newIndex, t3;
      for (t1 = string.length, t2 = this._serialize0$_buffer, afterNewline = false, i = 0; i < t1; ++i) {
        _1_0 = string.charCodeAt(i);
        if (10 === _1_0) {
          t2.writeCharCode$1(32);
          afterNewline = true;
          continue;
        }
        if (32 === _1_0) {
          if (!afterNewline)
            t2.writeCharCode$1(32);
          continue;
        }
        _0_0 = this._serialize0$_tryPrivateUseCharacter$4(t2, _1_0, string, i);
        if (_0_0 != null) {
          newIndex = _0_0;
          t3 = true;
        } else {
          newIndex = null;
          t3 = false;
        }
        if (t3)
          i = newIndex;
        else
          t2.writeCharCode$1(_1_0);
        afterNewline = false;
      }
    },
    _serialize0$_tryPrivateUseCharacter$4(buffer, codeUnit, string, i) {
      var t1;
      if (this._serialize0$_style === B.OutputStyle_10)
        return null;
      if (codeUnit >= 57344 && codeUnit <= 63743) {
        this._serialize0$_writeEscape$4(buffer, codeUnit, string, i);
        return i;
      }
      if (codeUnit >>> 7 === 439 && string.length > i + 1) {
        t1 = i + 1;
        this._serialize0$_writeEscape$4(buffer, 65536 + ((codeUnit & 1023) << 10) + (string.charCodeAt(t1) & 1023), string, t1);
        return t1;
      }
      return null;
    },
    _serialize0$_writeEscape$4(buffer, character, string, i) {
      var t1, next;
      buffer.writeCharCode$1(92);
      buffer.write$1(0, B.JSInt_methods.toRadixString$1(character, 16));
      t1 = i + 1;
      if (string.length === t1)
        return;
      next = string.charCodeAt(t1);
      if (A.CharacterExtension_get_isHex0(next) || 32 === next || 9 === next)
        buffer.writeCharCode$1(32);
    },
    visitAttributeSelector$1(attribute) {
      var _0_0, value, t2,
        t1 = this._serialize0$_buffer;
      t1.writeCharCode$1(91);
      t1.write$1(0, attribute.name);
      _0_0 = attribute.value;
      if (_0_0 != null) {
        value = _0_0;
        t2 = true;
      } else {
        value = null;
        t2 = false;
      }
      if (t2) {
        t1.write$1(0, attribute.op);
        if (A.Parser_isIdentifier0(value) && !J.startsWith$1$s(value, "--")) {
          t1.write$1(0, value);
          t2 = attribute.modifier;
          if (t2 != null)
            t1.writeCharCode$1(32);
        } else {
          this._serialize0$_visitQuotedString$1(value);
          t2 = attribute.modifier;
          if (t2 != null)
            if (this._serialize0$_style !== B.OutputStyle_10)
              t1.writeCharCode$1(32);
        }
        A.NullableExtension_andThen0(t2, t1.get$write(t1));
      }
      t1.writeCharCode$1(93);
    },
    visitClassSelector$1(klass) {
      var t1 = this._serialize0$_buffer;
      t1.writeCharCode$1(46);
      t1.write$1(0, klass.name);
    },
    visitComplexSelector$1(complex) {
      var t2, t3, t4, t5, t6, i, component, t7, t8, t9, _this = this,
        t1 = complex.leadingCombinators;
      _this._serialize0$_writeCombinators$1(t1);
      if (t1.length >= 1 && complex.components.length >= 1)
        if (_this._serialize0$_style !== B.OutputStyle_10)
          _this._serialize0$_buffer.writeCharCode$1(32);
      for (t1 = complex.components, t2 = t1.length, t3 = t2 - 1, t4 = _this._serialize0$_buffer, t5 = _this._serialize0$_style === B.OutputStyle_10, t6 = !t5, i = 0; i < t2; ++i) {
        component = t1[i];
        _this.visitCompoundSelector$1(component.selector);
        t7 = component.combinators;
        t8 = t7.length === 0;
        if (!t8)
          if (t6)
            t4.writeCharCode$1(32);
        t9 = t5 ? "" : " ";
        _this._serialize0$_writeBetween$3(t7, t9, t4.get$write(t4));
        if (i !== t3)
          t7 = !t5 || t8;
        else
          t7 = false;
        if (t7)
          t4.writeCharCode$1(32);
      }
    },
    _serialize0$_writeCombinators$1(combinators) {
      var t1 = this._serialize0$_style === B.OutputStyle_10 ? "" : " ",
        t2 = this._serialize0$_buffer;
      return this._serialize0$_writeBetween$3(combinators, t1, t2.get$write(t2));
    },
    visitCompoundSelector$1(compound) {
      var t2, t3, _i,
        t1 = this._serialize0$_buffer,
        start = t1.get$length(t1);
      for (t2 = compound.components, t3 = t2.length, _i = 0; _i < t3; ++_i)
        t2[_i].accept$1(this);
      if (t1.get$length(t1) === start)
        t1.writeCharCode$1(42);
    },
    visitIDSelector$1(id) {
      var t1 = this._serialize0$_buffer;
      t1.writeCharCode$1(35);
      t1.write$1(0, id.name);
    },
    visitSelectorList$1(list) {
      var t1, t2, t3, t4, first, t5, _this = this,
        complexes = list.components;
      for (t1 = J.get$iterator$ax(_this._serialize0$_inspect ? complexes : new A.WhereIterable(complexes, new A._SerializeVisitor_visitSelectorList_closure0(), A._arrayInstanceType(complexes)._eval$1("WhereIterable<1>"))), t2 = _this._serialize0$_style !== B.OutputStyle_10, t3 = _this._serialize0$_buffer, t4 = _this._lineFeed.text, first = true; t1.moveNext$0();) {
        t5 = t1.get$current(t1);
        if (first)
          first = false;
        else {
          t3.writeCharCode$1(44);
          if (t5.lineBreak) {
            if (t2)
              t3.write$1(0, t4);
            _this._serialize0$_writeIndentation$0();
          } else if (t2)
            t3.writeCharCode$1(32);
        }
        _this.visitComplexSelector$1(t5);
      }
    },
    visitParentSelector$1($parent) {
      var t1 = this._serialize0$_buffer;
      t1.writeCharCode$1(38);
      A.NullableExtension_andThen0($parent.suffix, t1.get$write(t1));
    },
    visitPlaceholderSelector$1(placeholder) {
      var t1 = this._serialize0$_buffer;
      t1.writeCharCode$1(37);
      t1.write$1(0, placeholder.name);
    },
    visitPseudoSelector$1(pseudo) {
      var t2, t3,
        _0_4 = A._InitializedCell$(new A._SerializeVisitor_visitPseudoSelector_closure0(pseudo)),
        t1 = pseudo.name;
      if ("not" === t1 && _0_4._readFinal$0() instanceof A.SelectorList0 && _0_4._readFinal$0().accept$1(B._IsInvisibleVisitor_true0))
        return;
      t2 = this._serialize0$_buffer;
      t2.writeCharCode$1(58);
      if (!pseudo.isSyntacticClass)
        t2.writeCharCode$1(58);
      t2.write$1(0, t1);
      t1 = pseudo.argument;
      t3 = t1 == null;
      if (t3 && pseudo.selector == null)
        return;
      t2.writeCharCode$1(40);
      if (!t3) {
        t2.write$1(0, t1);
        if (pseudo.selector != null)
          t2.writeCharCode$1(32);
      }
      A.NullableExtension_andThen0(pseudo.selector, this.get$visitSelectorList());
      t2.writeCharCode$1(41);
    },
    visitTypeSelector$1(type) {
      this._serialize0$_buffer.write$1(0, type.name);
    },
    visitUniversalSelector$1(universal) {
      var t2,
        t1 = universal.namespace;
      if (t1 != null) {
        t2 = this._serialize0$_buffer;
        t2.write$1(0, t1);
        t2.writeCharCode$1(124);
      }
      this._serialize0$_buffer.writeCharCode$1(42);
    },
    _serialize0$_write$1(value) {
      return this._serialize0$_buffer.forSpan$2(value.span, new A._SerializeVisitor__write_closure0(this, value));
    },
    _serialize0$_visitChildren$1($parent) {
      var t2, t3, t4, t5, t6, t7, t8, prePrevious, previous, t9, previous0, t10, savedIndentation, _this = this,
        t1 = _this._serialize0$_buffer;
      t1.writeCharCode$1(123);
      for (t2 = $parent.children, t2 = new A.ListIterator(t2, t2.get$length(t2)), t3 = _this._serialize0$_style === B.OutputStyle_10, t4 = !t3, t5 = _this.get$_serialize0$_requiresSemicolon(), t6 = !_this._serialize0$_inspect, t7 = A._instanceType(t2)._precomputed1, t8 = _this._lineFeed.text, prePrevious = null, previous = null; t2.moveNext$0();) {
        t9 = t2.__internal$_current;
        previous0 = t9 == null ? t7._as(t9) : t9;
        if (t6)
          t9 = t3 ? previous0.accept$1(B._IsInvisibleVisitor_true_true0) : previous0.accept$1(B._IsInvisibleVisitor_true_false0);
        else
          t9 = false;
        if (t9)
          continue;
        t9 = previous == null;
        t10 = t9 ? null : t5.call$1(previous);
        if (t10 == null ? false : t10)
          t1.writeCharCode$1(59);
        if (_this._serialize0$_isTrailingComment$2(previous0, t9 ? $parent : previous)) {
          if (t4)
            t1.writeCharCode$1(32);
          savedIndentation = _this._serialize0$_indentation;
          _this._serialize0$_indentation = 0;
          new A._SerializeVisitor__visitChildren_closure1(_this, previous0).call$0();
          _this._serialize0$_indentation = savedIndentation;
        } else {
          if (t4)
            t1.write$1(0, t8);
          ++_this._serialize0$_indentation;
          new A._SerializeVisitor__visitChildren_closure2(_this, previous0).call$0();
          --_this._serialize0$_indentation;
        }
        prePrevious = previous;
        previous = previous0;
      }
      if (previous != null) {
        if ((type$.CssParentNode_2._is(previous) ? previous.get$isChildless() : !(previous instanceof A.ModifiableCssComment0)) && t4)
          t1.writeCharCode$1(59);
        if (prePrevious == null && _this._serialize0$_isTrailingComment$2(previous, $parent)) {
          if (t4)
            t1.writeCharCode$1(32);
        } else {
          _this._serialize0$_writeLineFeed$0();
          _this._serialize0$_writeIndentation$0();
        }
      }
      t1.writeCharCode$1(125);
    },
    _serialize0$_requiresSemicolon$1(node) {
      return type$.CssParentNode_2._is(node) ? node.get$isChildless() : !(node instanceof A.ModifiableCssComment0);
    },
    _serialize0$_isTrailingComment$2(node, previous) {
      var t1, t2, t3, searchFrom, endOffset, t4, span;
      if (this._serialize0$_style === B.OutputStyle_10)
        return false;
      if (!(node instanceof A.ModifiableCssComment0))
        return false;
      t1 = node.span;
      t2 = t1.get$sourceUrl(t1);
      t3 = previous.get$span(previous);
      if (!J.$eq$(t2, t3.get$sourceUrl(t3)))
        return false;
      t2 = previous.get$span(previous);
      if (!(J.$eq$(t2.get$file(t2).url, t1.get$file(t1).url) && t2.get$start(t2).offset <= t1.get$start(t1).offset && t2.get$end(t2).offset >= t1.get$end(t1).offset)) {
        t1 = t1.get$start(t1);
        t1 = t1.file.getLine$1(t1.offset);
        t2 = previous.get$span(previous);
        t2 = t2.get$end(t2);
        return t1 === t2.file.getLine$1(t2.offset);
      }
      t2 = t1.get$start(t1);
      t3 = previous.get$span(previous);
      searchFrom = t2.offset - t3.get$start(t3).offset - 1;
      if (searchFrom < 0)
        return false;
      endOffset = Math.max(0, B.JSString_methods.lastIndexOf$2(previous.get$span(previous).get$text(), "{", searchFrom));
      t2 = previous.get$span(previous);
      t2 = t2.get$file(t2);
      t3 = previous.get$span(previous);
      t3 = t3.get$start(t3);
      t4 = previous.get$span(previous);
      span = t2.span$2(0, t3.offset, t4.get$start(t4).offset + endOffset);
      t1 = t1.get$start(t1);
      t1 = t1.file.getLine$1(t1.offset);
      t4 = A.FileLocation$_(span.file, span._end);
      return t1 === t4.file.getLine$1(t4.offset);
    },
    _serialize0$_writeLineFeed$0() {
      if (this._serialize0$_style !== B.OutputStyle_10)
        this._serialize0$_buffer.write$1(0, this._lineFeed.text);
    },
    _serialize0$_writeIndentation$0() {
      var _this = this;
      if (_this._serialize0$_style === B.OutputStyle_10)
        return;
      _this._serialize0$_writeTimes$2(_this._serialize0$_indentCharacter, _this._serialize0$_indentation * _this._serialize0$_indentWidth);
    },
    _serialize0$_writeTimes$2(char, times) {
      var t1, i;
      for (t1 = this._serialize0$_buffer, i = 0; i < times; ++i)
        t1.writeCharCode$1(char);
    },
    _serialize0$_writeBetween$1$3(iterable, text, callback) {
      var t1, t2, first, value;
      for (t1 = J.get$iterator$ax(iterable), t2 = this._serialize0$_buffer, first = true; t1.moveNext$0();) {
        value = t1.get$current(t1);
        if (first)
          first = false;
        else
          t2.write$1(0, text);
        callback.call$1(value);
      }
    },
    _serialize0$_writeBetween$3(iterable, text, callback) {
      return this._serialize0$_writeBetween$1$3(iterable, text, callback, type$.dynamic);
    }
  };
  A._SerializeVisitor_visitCssComment_closure0.prototype = {
    call$0() {
      var t2, t3, _0_0, minimumIndentation, t4,
        t1 = this.$this;
      if (t1._serialize0$_style === B.OutputStyle_10 && this.node.text.charCodeAt(2) !== 33)
        return;
      t2 = this.node;
      t3 = t2.text;
      if (B.JSString_methods.startsWith$1(t3, A.RegExp_RegExp("/\\*# source(Mapping)?URL=", false)))
        return;
      _0_0 = t1._serialize0$_minimumIndentation$1(t3);
      if (_0_0 != null) {
        minimumIndentation = _0_0;
        t4 = true;
      } else {
        minimumIndentation = null;
        t4 = false;
      }
      if (t4) {
        t2 = t2.span;
        t2 = t2.get$start(t2);
        t2 = t2.file.getColumn$1(t2.offset);
        minimumIndentation = Math.min(A.checkNum(minimumIndentation), t2);
        t1._serialize0$_writeIndentation$0();
        t1._serialize0$_writeWithIndent$2(t3, minimumIndentation);
      } else {
        t1._serialize0$_writeIndentation$0();
        t1._serialize0$_buffer.write$1(0, t3);
      }
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssAtRule_closure0.prototype = {
    call$0() {
      var t3, _0_0, value,
        t1 = this.$this,
        t2 = t1._serialize0$_buffer;
      t2.writeCharCode$1(64);
      t3 = this.node;
      t1._serialize0$_write$1(t3.name);
      _0_0 = t3.value;
      if (_0_0 != null) {
        value = _0_0;
        t3 = true;
      } else {
        value = null;
        t3 = false;
      }
      if (t3) {
        t2.writeCharCode$1(32);
        t1._serialize0$_write$1(value);
      }
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssMediaRule_closure0.prototype = {
    call$0() {
      var t3, firstQuery, t4, t5,
        t1 = this.$this,
        t2 = t1._serialize0$_buffer;
      t2.write$1(0, "@media");
      t3 = this.node.queries;
      firstQuery = B.JSArray_methods.get$first(t3);
      t4 = t1._serialize0$_style === B.OutputStyle_10;
      if (t4)
        if (firstQuery.modifier == null)
          if (firstQuery.type == null) {
            t5 = firstQuery.conditions;
            t5 = t5.length === 1 && J.startsWith$1$s(B.JSArray_methods.get$first(t5), "(not ");
          } else
            t5 = true;
        else
          t5 = true;
      else
        t5 = true;
      if (t5)
        t2.writeCharCode$1(32);
      t2 = t4 ? "," : ", ";
      t1._serialize0$_writeBetween$3(t3, t2, t1.get$_serialize0$_visitMediaQuery());
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssImport_closure0.prototype = {
    call$0() {
      var t3, t4, _0_0, modifiers,
        t1 = this.$this,
        t2 = t1._serialize0$_buffer;
      t2.write$1(0, "@import");
      t3 = t1._serialize0$_style !== B.OutputStyle_10;
      if (t3)
        t2.writeCharCode$1(32);
      t4 = this.node;
      t2.forSpan$2(t4.url.span, new A._SerializeVisitor_visitCssImport__closure0(t1, t4));
      _0_0 = t4.modifiers;
      if (_0_0 != null) {
        modifiers = _0_0;
        t1 = true;
      } else {
        modifiers = null;
        t1 = false;
      }
      if (t1) {
        if (t3)
          t2.writeCharCode$1(32);
        t2.write$1(0, modifiers);
      }
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssImport__closure0.prototype = {
    call$0() {
      return this.$this._serialize0$_writeImportUrl$1(this.node.url.value);
    },
    $signature: 0
  };
  A._SerializeVisitor_visitCssKeyframeBlock_closure0.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._serialize0$_style === B.OutputStyle_10 ? "," : ", ",
        t3 = t1._serialize0$_buffer;
      return t1._serialize0$_writeBetween$3(this.node.selector.value, t2, t3.get$write(t3));
    },
    $signature: 0
  };
  A._SerializeVisitor_visitCssStyleRule_closure0.prototype = {
    call$0() {
      return this.$this.visitSelectorList$1(this.node._style_rule0$_selector._box0$_inner.value);
    },
    $signature: 0
  };
  A._SerializeVisitor_visitCssSupportsRule_closure0.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = t1._serialize0$_buffer;
      t2.write$1(0, "@supports");
      if (!(t1._serialize0$_style === B.OutputStyle_10 && J.codeUnitAt$1$s(this.node.condition.value, 0) === 40))
        t2.writeCharCode$1(32);
      t1._serialize0$_write$1(this.node.condition);
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssDeclaration_closure1.prototype = {
    call$0() {
      var t1 = this.$this,
        t2 = this.node;
      if (t1._serialize0$_style === B.OutputStyle_10)
        t1._serialize0$_writeFoldedValue$1(t2);
      else
        t1._serialize0$_writeReindentedValue$1(t2);
    },
    $signature: 2
  };
  A._SerializeVisitor_visitCssDeclaration_closure2.prototype = {
    call$0() {
      return this.node.value.value.accept$1(this.$this);
    },
    $signature: 0
  };
  A._SerializeVisitor__writeCalculationValue_closure0.prototype = {
    call$0() {
      return !isFinite(this._2_0._number1$_value);
    },
    $signature: 1
  };
  A._SerializeVisitor_visitList_closure2.prototype = {
    call$1(element) {
      return !element.get$isBlank();
    },
    $signature: 54
  };
  A._SerializeVisitor_visitList_closure3.prototype = {
    call$1(element) {
      var t1 = this.$this,
        needsParens = t1._serialize0$_elementNeedsParens$2(this.value._list1$_separator, element);
      if (needsParens)
        t1._serialize0$_buffer.writeCharCode$1(40);
      element.accept$1(t1);
      if (needsParens)
        t1._serialize0$_buffer.writeCharCode$1(41);
    },
    $signature: 57
  };
  A._SerializeVisitor_visitList_closure4.prototype = {
    call$1(element) {
      element.accept$1(this.$this);
    },
    $signature: 57
  };
  A._SerializeVisitor_visitMap_closure0.prototype = {
    call$1(entry) {
      var t1 = this.$this;
      t1._serialize0$_writeMapElement$1(entry.key);
      t1._serialize0$_buffer.write$1(0, ": ");
      t1._serialize0$_writeMapElement$1(entry.value);
    },
    $signature: 557
  };
  A._SerializeVisitor__visitQuotedString_closure1.prototype = {
    call$0() {
      return 39 === this._1_0;
    },
    $signature: 1
  };
  A._SerializeVisitor__visitQuotedString_closure2.prototype = {
    call$0() {
      return 34 === this._1_0;
    },
    $signature: 1
  };
  A._SerializeVisitor_visitSelectorList_closure0.prototype = {
    call$1(complex) {
      return !complex.accept$1(B._IsInvisibleVisitor_true0);
    },
    $signature: 18
  };
  A._SerializeVisitor_visitPseudoSelector_closure0.prototype = {
    call$0() {
      return this._0_0.selector;
    },
    $signature: 78
  };
  A._SerializeVisitor__write_closure0.prototype = {
    call$0() {
      return this.$this._serialize0$_buffer.write$1(0, this.value.value);
    },
    $signature: 0
  };
  A._SerializeVisitor__visitChildren_closure1.prototype = {
    call$0() {
      return this.child.accept$1(this.$this);
    },
    $signature: 0
  };
  A._SerializeVisitor__visitChildren_closure2.prototype = {
    call$0() {
      this.child.accept$1(this.$this);
    },
    $signature: 0
  };
  A.OutputStyle0.prototype = {
    _enumToString$0() {
      return "OutputStyle." + this._name;
    }
  };
  A.LineFeed0.prototype = {
    _enumToString$0() {
      return "LineFeed." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.ShadowedModuleView0.prototype = {
    get$url(_) {
      var t1 = this._shadowed_view0$_inner;
      return t1.get$url(t1);
    },
    get$upstream() {
      return this._shadowed_view0$_inner.get$upstream();
    },
    get$extensionStore() {
      return this._shadowed_view0$_inner.get$extensionStore();
    },
    get$css(_) {
      var t1 = this._shadowed_view0$_inner;
      return t1.get$css(t1);
    },
    get$preModuleComments() {
      return this._shadowed_view0$_inner.get$preModuleComments();
    },
    get$transitivelyContainsCss() {
      return this._shadowed_view0$_inner.get$transitivelyContainsCss();
    },
    get$transitivelyContainsExtensions() {
      return this._shadowed_view0$_inner.get$transitivelyContainsExtensions();
    },
    setVariable$3($name, value, nodeWithSpan) {
      if (!this.variables.containsKey$1($name))
        throw A.wrapException(A.SassScriptException$0("Undefined variable.", null));
      else
        this._shadowed_view0$_inner.setVariable$3($name, value, nodeWithSpan);
    },
    variableIdentity$1($name) {
      return this._shadowed_view0$_inner.variableIdentity$1($name);
    },
    $eq(_, other) {
      var t1, t2, _this = this;
      if (other == null)
        return false;
      if (other instanceof A.ShadowedModuleView0)
        if (_this._shadowed_view0$_inner.$eq(0, other._shadowed_view0$_inner)) {
          t1 = _this.variables;
          t1 = t1.get$keys(t1);
          t2 = other.variables;
          if (B.C_IterableEquality.equals$2(0, t1, t2.get$keys(t2))) {
            t1 = _this.functions;
            t1 = t1.get$keys(t1);
            t2 = other.functions;
            if (B.C_IterableEquality.equals$2(0, t1, t2.get$keys(t2))) {
              t1 = _this.mixins;
              t1 = t1.get$keys(t1);
              t2 = other.mixins;
              t2 = B.C_IterableEquality.equals$2(0, t1, t2.get$keys(t2));
              t1 = t2;
            } else
              t1 = false;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = false;
      return t1;
    },
    get$hashCode(_) {
      var t1 = this._shadowed_view0$_inner;
      return t1.get$hashCode(t1);
    },
    cloneCss$0() {
      var _this = this;
      return new A.ShadowedModuleView0(_this._shadowed_view0$_inner.cloneCss$0(), _this.variables, _this.variableNodes, _this.functions, _this.mixins, _this.$ti);
    },
    toString$0(_) {
      return "shadowed " + this._shadowed_view0$_inner.toString$0(0);
    },
    $isModule1: 1,
    get$variables() {
      return this.variables;
    },
    get$variableNodes() {
      return this.variableNodes;
    },
    get$functions(receiver) {
      return this.functions;
    },
    get$mixins() {
      return this.mixins;
    }
  };
  A.SilentComment0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitSilentComment$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.text;
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.SimpleSelector0.prototype = {
    get$specificity() {
      return 1000;
    },
    addSuffix$1(suffix) {
      return A.throwExpression(A.MultiSpanSassException$0('Selector "' + this.toString$0(0) + "\" can't have a suffix", this.span, "outer selector", A.LinkedHashMap_LinkedHashMap$_empty(type$.FileSpan, type$.String), null));
    },
    unify$1(compound) {
      var other, t1, result, addedThis, _i, simple, _this = this;
      if (compound.length === 1) {
        other = compound[0];
        if (!(other instanceof A.UniversalSelector0))
          if (other instanceof A.PseudoSelector0)
            t1 = other.isClass && other.name === "host" || other.get$isHostContext();
          else
            t1 = false;
        else
          t1 = true;
      } else {
        other = null;
        t1 = false;
      }
      if (t1)
        return other.unify$1(A._setArrayType([_this], type$.JSArray_SimpleSelector_2));
      if (B.JSArray_methods.contains$1(compound, _this))
        return compound;
      result = A._setArrayType([], type$.JSArray_SimpleSelector_2);
      for (t1 = compound.length, addedThis = false, _i = 0; _i < compound.length; compound.length === t1 || (0, A.throwConcurrentModificationError)(compound), ++_i) {
        simple = compound[_i];
        if (!addedThis && simple instanceof A.PseudoSelector0) {
          result.push(_this);
          addedThis = true;
        }
        result.push(simple);
      }
      if (!addedThis)
        result.push(_this);
      return result;
    },
    isSuperselector$1(other) {
      var list;
      if (this.$eq(0, other))
        return true;
      if (other instanceof A.PseudoSelector0 && other.isClass) {
        list = other.selector;
        if (list != null && $._subselectorPseudos0.contains$1(0, other.normalizedName))
          return B.JSArray_methods.every$1(list.components, new A.SimpleSelector_isSuperselector_closure0(this));
      }
      return false;
    }
  };
  A.SimpleSelector_isSuperselector_closure0.prototype = {
    call$1(complex) {
      var t1 = complex.components;
      return t1.length !== 0 && B.JSArray_methods.any$1(B.JSArray_methods.get$last(t1).selector.components, new A.SimpleSelector_isSuperselector__closure0(this.$this));
    },
    $signature: 18
  };
  A.SimpleSelector_isSuperselector__closure0.prototype = {
    call$1(simple) {
      return this.$this.isSuperselector$1(simple);
    },
    $signature: 15
  };
  A.SingleUnitSassNumber0.prototype = {
    get$numeratorUnits(_) {
      return A.List_List$unmodifiable([this._single_unit$_unit], type$.String);
    },
    get$denominatorUnits(_) {
      return B.List_empty;
    },
    get$hasUnits() {
      return true;
    },
    get$hasComplexUnits() {
      return false;
    },
    withValue$1(value) {
      return new A.SingleUnitSassNumber0(this._single_unit$_unit, value, null);
    },
    withSlash$2(numerator, denominator) {
      return new A.SingleUnitSassNumber0(this._single_unit$_unit, this._number1$_value, new A._Record_2(numerator, denominator));
    },
    hasUnit$1(unit) {
      return unit === this._single_unit$_unit;
    },
    hasCompatibleUnits$1(other) {
      return other instanceof A.SingleUnitSassNumber0 && A.conversionFactor0(this._single_unit$_unit, other._single_unit$_unit) != null;
    },
    hasPossiblyCompatibleUnits$1(other) {
      var t1, knownCompatibilities, otherUnit;
      if (!(other instanceof A.SingleUnitSassNumber0))
        return false;
      t1 = $.$get$_knownCompatibilitiesByUnit0();
      knownCompatibilities = t1.$index(0, this._single_unit$_unit.toLowerCase());
      if (knownCompatibilities == null)
        return true;
      otherUnit = other._single_unit$_unit.toLowerCase();
      return knownCompatibilities.contains$1(0, otherUnit) || !t1.containsKey$1(otherUnit);
    },
    compatibleWithUnit$1(unit) {
      return A.conversionFactor0(this._single_unit$_unit, unit) != null;
    },
    coerceToMatch$3(other, $name, otherName) {
      var t1 = other instanceof A.SingleUnitSassNumber0 ? this._single_unit$_coerceToUnit$1(other._single_unit$_unit) : null;
      return t1 == null ? this.super$SassNumber$coerceToMatch0(other, $name, otherName) : t1;
    },
    coerceToMatch$1(other) {
      return this.coerceToMatch$3(other, null, null);
    },
    coerceValueToMatch$3(other, $name, otherName) {
      var t1 = other instanceof A.SingleUnitSassNumber0 ? this._single_unit$_coerceValueToUnit$1(other._single_unit$_unit) : null;
      return t1 == null ? this.super$SassNumber$coerceValueToMatch0(other, $name, otherName) : t1;
    },
    coerceValueToMatch$1(other) {
      return this.coerceValueToMatch$3(other, null, null);
    },
    convertToMatch$3(other, $name, otherName) {
      var t1 = other instanceof A.SingleUnitSassNumber0 ? this._single_unit$_coerceToUnit$1(other._single_unit$_unit) : null;
      return t1 == null ? this.super$SassNumber$convertToMatch(other, $name, otherName) : t1;
    },
    convertValueToMatch$3(other, $name, otherName) {
      var t1 = other instanceof A.SingleUnitSassNumber0 ? this._single_unit$_coerceValueToUnit$1(other._single_unit$_unit) : null;
      return t1 == null ? this.super$SassNumber$convertValueToMatch0(other, $name, otherName) : t1;
    },
    convertValueToMatch$1(other) {
      return this.convertValueToMatch$3(other, null, null);
    },
    coerce$3(newNumerators, newDenominators, $name) {
      var t1 = J.getInterceptor$asx(newNumerators);
      t1 = t1.get$length(newNumerators) === 1 && J.get$isEmpty$asx(newDenominators) ? this._single_unit$_coerceToUnit$1(t1.$index(newNumerators, 0)) : null;
      return t1 == null ? this.super$SassNumber$coerce0(newNumerators, newDenominators, $name) : t1;
    },
    coerce$2(newNumerators, newDenominators) {
      return this.coerce$3(newNumerators, newDenominators, null);
    },
    coerceValue$3(newNumerators, newDenominators, $name) {
      var t1 = J.getInterceptor$asx(newNumerators);
      t1 = t1.get$length(newNumerators) === 1 && J.get$isEmpty$asx(newDenominators) ? this._single_unit$_coerceValueToUnit$1(t1.$index(newNumerators, 0)) : null;
      return t1 == null ? this.super$SassNumber$coerceValue0(newNumerators, newDenominators, $name) : t1;
    },
    coerceValueToUnit$2(unit, $name) {
      var t1 = this._single_unit$_coerceValueToUnit$1(unit);
      return t1 == null ? this.super$SassNumber$coerceValueToUnit0(unit, $name) : t1;
    },
    coerceValueToUnit$1(unit) {
      return this.coerceValueToUnit$2(unit, null);
    },
    _single_unit$_coerceToUnit$1(unit) {
      var t1 = this._single_unit$_unit;
      if (t1 === unit)
        return this;
      return A.NullableExtension_andThen0(A.conversionFactor0(unit, t1), new A.SingleUnitSassNumber__coerceToUnit_closure0(this, unit));
    },
    _single_unit$_coerceValueToUnit$1(unit) {
      return A.NullableExtension_andThen0(A.conversionFactor0(unit, this._single_unit$_unit), new A.SingleUnitSassNumber__coerceValueToUnit_closure0(this));
    },
    multiplyUnits$3(value, otherNumerators, otherDenominators) {
      var mutableOtherDenominators, t1 = {};
      t1.value = value;
      t1.newNumerators = otherNumerators;
      mutableOtherDenominators = A._setArrayType(otherDenominators.slice(0), A._arrayInstanceType(otherDenominators));
      A.removeFirstWhere0(mutableOtherDenominators, new A.SingleUnitSassNumber_multiplyUnits_closure1(t1, this), new A.SingleUnitSassNumber_multiplyUnits_closure2(t1, this));
      return A.SassNumber_SassNumber$withUnits0(t1.value, mutableOtherDenominators, t1.newNumerators);
    },
    unaryMinus$0() {
      return new A.SingleUnitSassNumber0(this._single_unit$_unit, -this._number1$_value, null);
    },
    $eq(_, other) {
      var factor;
      if (other == null)
        return false;
      if (other instanceof A.SingleUnitSassNumber0) {
        factor = A.conversionFactor0(other._single_unit$_unit, this._single_unit$_unit);
        return factor != null && A.fuzzyEquals0(this._number1$_value * factor, other._number1$_value);
      } else
        return false;
    },
    get$hashCode(_) {
      var _this = this,
        t1 = _this.hashCache;
      return t1 == null ? _this.hashCache = A.fuzzyHashCode0(_this._number1$_value * _this.canonicalMultiplierForUnit$1(_this._single_unit$_unit)) : t1;
    }
  };
  A.SingleUnitSassNumber__coerceToUnit_closure0.prototype = {
    call$1(factor) {
      return new A.SingleUnitSassNumber0(this.unit, this.$this._number1$_value * factor, null);
    },
    $signature: 558
  };
  A.SingleUnitSassNumber__coerceValueToUnit_closure0.prototype = {
    call$1(factor) {
      return this.$this._number1$_value * factor;
    },
    $signature: 42
  };
  A.SingleUnitSassNumber_multiplyUnits_closure1.prototype = {
    call$1(denominator) {
      var factor = A.conversionFactor0(denominator, this.$this._single_unit$_unit);
      if (factor == null)
        return false;
      this._box_0.value *= factor;
      return true;
    },
    $signature: 10
  };
  A.SingleUnitSassNumber_multiplyUnits_closure2.prototype = {
    call$0() {
      var t1 = A._setArrayType([this.$this._single_unit$_unit], type$.JSArray_String),
        t2 = this._box_0;
      B.JSArray_methods.addAll$1(t1, t2.newNumerators);
      t2.newNumerators = t1;
    },
    $signature: 0
  };
  A.SourceMapBuffer0.prototype = {
    get$_source_map_buffer0$_targetLocation() {
      var t1 = this._source_map_buffer0$_buffer._contents,
        t2 = this._source_map_buffer0$_line;
      return A.SourceLocation$(t1.length, this._source_map_buffer0$_column, t2, null);
    },
    get$length(_) {
      return this._source_map_buffer0$_buffer._contents.length;
    },
    forSpan$1$2(span, callback) {
      var t1, _this = this,
        wasInSpan = _this._source_map_buffer0$_inSpan;
      _this._source_map_buffer0$_inSpan = true;
      _this._source_map_buffer0$_addEntry$2(span.get$start(span), _this.get$_source_map_buffer0$_targetLocation());
      try {
        t1 = callback.call$0();
        return t1;
      } finally {
        _this._source_map_buffer0$_inSpan = wasInSpan;
      }
    },
    forSpan$2(span, callback) {
      return this.forSpan$1$2(span, callback, type$.dynamic);
    },
    _source_map_buffer0$_addEntry$2(source, target) {
      var entry, t2,
        t1 = this._source_map_buffer0$_entries;
      if (t1.length !== 0) {
        entry = B.JSArray_methods.get$last(t1);
        t2 = entry.source;
        if (t2.file.getLine$1(t2.offset) === source.file.getLine$1(source.offset) && entry.target.line === target.line)
          return;
        if (entry.target.offset === target.offset)
          return;
      }
      t1.push(new A.Entry(source, target, null));
    },
    write$1(_, object) {
      var t1, i,
        string = J.toString$0$(object);
      this._source_map_buffer0$_buffer._contents += string;
      for (t1 = string.length, i = 0; i < t1; ++i)
        if (string.charCodeAt(i) === 10)
          this._source_map_buffer0$_writeLine$0();
        else
          ++this._source_map_buffer0$_column;
    },
    writeCharCode$1(charCode) {
      this._source_map_buffer0$_buffer._contents += A.Primitives_stringFromCharCode(charCode);
      if (charCode === 10)
        this._source_map_buffer0$_writeLine$0();
      else
        ++this._source_map_buffer0$_column;
    },
    _source_map_buffer0$_writeLine$0() {
      var _this = this,
        t1 = _this._source_map_buffer0$_entries;
      if (B.JSArray_methods.get$last(t1).target.line === _this._source_map_buffer0$_line && B.JSArray_methods.get$last(t1).target.column === _this._source_map_buffer0$_column)
        t1.pop();
      ++_this._source_map_buffer0$_line;
      _this._source_map_buffer0$_column = 0;
      if (_this._source_map_buffer0$_inSpan)
        t1.push(new A.Entry(B.JSArray_methods.get$last(t1).source, _this.get$_source_map_buffer0$_targetLocation(), null));
    },
    toString$0(_) {
      var t1 = this._source_map_buffer0$_buffer._contents;
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    buildSourceMap$1$prefix(prefix) {
      var i, t2, prefixColumn, _box_0 = {},
        t1 = prefix.length;
      if (t1 === 0)
        return A.SingleMapping_SingleMapping$fromEntries(this._source_map_buffer0$_entries);
      _box_0.prefixColumn = _box_0.prefixLines = 0;
      for (i = 0, t2 = 0; i < t1; ++i)
        if (prefix.charCodeAt(i) === 10) {
          ++_box_0.prefixLines;
          _box_0.prefixColumn = 0;
          t2 = 0;
        } else {
          prefixColumn = t2 + 1;
          _box_0.prefixColumn = prefixColumn;
          t2 = prefixColumn;
        }
      t2 = this._source_map_buffer0$_entries;
      return A.SingleMapping_SingleMapping$fromEntries(new A.MappedListIterable(t2, new A.SourceMapBuffer_buildSourceMap_closure0(_box_0, t1), A._arrayInstanceType(t2)._eval$1("MappedListIterable<1,Entry>")));
    }
  };
  A.SourceMapBuffer_buildSourceMap_closure0.prototype = {
    call$1(entry) {
      var t1 = entry.target,
        t2 = t1.line,
        t3 = this._box_0,
        t4 = t3.prefixLines;
      t3 = t2 === 0 ? t3.prefixColumn : 0;
      return new A.Entry(entry.source, A.SourceLocation$(t1.offset + this.prefixLength, t1.column + t3, t2 + t4, null), entry.identifierName);
    },
    $signature: 206
  };
  A.updateSourceSpanPrototype_closure.prototype = {
    call$1(span) {
      return span.get$start(span);
    },
    $signature: 280
  };
  A.updateSourceSpanPrototype_closure0.prototype = {
    call$1(span) {
      return span.get$end(span);
    },
    $signature: 280
  };
  A.updateSourceSpanPrototype_closure1.prototype = {
    call$1(span) {
      return A.NullableExtension_andThen0(span.get$sourceUrl(span), A.utils1__dartToJSUrl$closure());
    },
    $signature: 560
  };
  A.updateSourceSpanPrototype_closure2.prototype = {
    call$1(span) {
      return span.get$text();
    },
    $signature: 281
  };
  A.updateSourceSpanPrototype_closure3.prototype = {
    call$1(span) {
      return span.get$context(span);
    },
    $signature: 281
  };
  A.updateSourceSpanPrototype_closure4.prototype = {
    call$1($location) {
      return $location.get$line();
    },
    $signature: 282
  };
  A.updateSourceSpanPrototype_closure5.prototype = {
    call$1($location) {
      return $location.get$column();
    },
    $signature: 282
  };
  A.StatementSearchVisitor0.prototype = {
    visitAtRootRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitAtRule$1(node) {
      return A.NullableExtension_andThen0(node.children, this.get$visitChildren());
    },
    visitContentBlock$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitContentRule$1(node) {
      return null;
    },
    visitDebugRule$1(node) {
      return null;
    },
    visitDeclaration$1(node) {
      return A.NullableExtension_andThen0(node.children, this.get$visitChildren());
    },
    visitEachRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitErrorRule$1(node) {
      return null;
    },
    visitExtendRule$1(node) {
      return null;
    },
    visitForRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitForwardRule$1(node) {
      return null;
    },
    visitFunctionRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitIfRule$1(node) {
      var t1 = A.IterableExtension_search0(node.clauses, new A.StatementSearchVisitor_visitIfRule_closure1(this));
      return t1 == null ? A.NullableExtension_andThen0(node.lastClause, new A.StatementSearchVisitor_visitIfRule_closure2(this)) : t1;
    },
    visitImportRule$1(node) {
      return null;
    },
    visitIncludeRule$1(node) {
      return A.NullableExtension_andThen0(node.content, this.get$visitContentBlock());
    },
    visitLoudComment$1(node) {
      return null;
    },
    visitMediaRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitMixinRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitReturnRule$1(node) {
      return null;
    },
    visitSilentComment$1(node) {
      return null;
    },
    visitStyleRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitStylesheet$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitSupportsRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitUseRule$1(node) {
      return null;
    },
    visitVariableDeclaration$1(node) {
      return null;
    },
    visitWarnRule$1(node) {
      return null;
    },
    visitWhileRule$1(node) {
      return this.visitChildren$1(node.children);
    },
    visitChildren$1(children) {
      return A.IterableExtension_search0(children, new A.StatementSearchVisitor_visitChildren_closure0(this));
    }
  };
  A.StatementSearchVisitor_visitIfRule_closure1.prototype = {
    call$1(clause) {
      return A.IterableExtension_search0(clause.children, new A.StatementSearchVisitor_visitIfRule__closure2(this.$this));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor0.T?(IfClause0)");
    }
  };
  A.StatementSearchVisitor_visitIfRule__closure2.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor0.T?(Statement0)");
    }
  };
  A.StatementSearchVisitor_visitIfRule_closure2.prototype = {
    call$1(lastClause) {
      return A.IterableExtension_search0(lastClause.children, new A.StatementSearchVisitor_visitIfRule__closure1(this.$this));
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor0.T?(ElseClause0)");
    }
  };
  A.StatementSearchVisitor_visitIfRule__closure1.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor0.T?(Statement0)");
    }
  };
  A.StatementSearchVisitor_visitChildren_closure0.prototype = {
    call$1(child) {
      return child.accept$1(this.$this);
    },
    $signature() {
      return A._instanceType(this.$this)._eval$1("StatementSearchVisitor0.T?(Statement0)");
    }
  };
  A.StaticImport0.prototype = {
    toString$0(_) {
      var t1 = this.url.toString$0(0),
        t2 = this.modifiers;
      return t1 + (t2 == null ? "" : " " + t2.toString$0(0));
    },
    $isImport0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.StderrLogger0.prototype = {
    warn$4$deprecation$span$trace(_, message, deprecation, span, trace) {
      var t2,
        result = new A.StringBuffer(""),
        t1 = this.color;
      if (t1) {
        t2 = result._contents = "" + "\x1b[33m\x1b[1m";
        t2 = result._contents = (deprecation ? result._contents = t2 + "Deprecation " : t2) + "Warning\x1b[0m";
      } else
        t2 = result._contents = (deprecation ? result._contents = "" + "DEPRECATION " : "") + "WARNING";
      if (span == null)
        t1 = result._contents = t2 + (": " + message + "\n");
      else if (trace != null) {
        t1 = t2 + (": " + message + "\n\n" + span.highlight$1$color(t1) + "\n");
        result._contents = t1;
      } else {
        t1 = t2 + (" on " + span.message$2$color(0, "\n" + message, t1) + "\n");
        result._contents = t1;
      }
      if (trace != null)
        result._contents = t1 + (A.indent0(B.JSString_methods.trimRight$0(trace.toString$0(0)), 4) + "\n");
      A.printError0(result);
    },
    warn$1($receiver, message) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, null);
    },
    warn$3$span$trace($receiver, message, span, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, trace);
    },
    warn$2$span($receiver, message, span) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, span, null);
    },
    warn$2$trace($receiver, message, trace) {
      return this.warn$4$deprecation$span$trace($receiver, message, false, null, trace);
    },
    debug$2(_, message, span) {
      var url, t3,
        t1 = span.file,
        t2 = span._file$_start;
      if (A.FileLocation$_(t1, t2).file.url == null)
        url = "-";
      else {
        t3 = A.FileLocation$_(t1, t2);
        url = $.$get$context().prettyUri$1(t3.file.url);
      }
      t1 = A.FileLocation$_(t1, t2);
      t1 = t1.file.getLine$1(t1.offset);
      t2 = this.color ? "\x1b[1mDebug\x1b[0m" : "DEBUG";
      t2 = "" + (url + ":" + (t1 + 1) + " ") + t2 + (": " + message);
      A.printError0(t2.charCodeAt(0) == 0 ? t2 : t2);
    }
  };
  A.StringExpression0.prototype = {
    get$span(_) {
      return this.text.span;
    },
    accept$1$1(visitor) {
      return visitor.visitStringExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    asInterpolation$1$static($static) {
      var t1, t2, quote, t3, t4, buffer, t5, t6, _i, value;
      if (!this.hasQuotes)
        return this.text;
      t1 = this.text;
      t2 = t1.contents;
      quote = A.StringExpression__bestQuote0(new A.WhereTypeIterable(t2, type$.WhereTypeIterable_String));
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer0(t3, t4);
      t3._contents += A.Primitives_stringFromCharCode(quote);
      for (t5 = t2.length, t6 = type$.Expression_2, _i = 0; _i < t5; ++_i) {
        value = t2[_i];
        if (t6._is(value)) {
          buffer._interpolation_buffer0$_flushText$0();
          t4.push(value);
          continue;
        }
        if (typeof value == "string")
          A.StringExpression__quoteInnerText0(value, quote, buffer, $static);
      }
      t3._contents += A.Primitives_stringFromCharCode(quote);
      return buffer.interpolation$1(t1.span);
    },
    asInterpolation$0() {
      return this.asInterpolation$1$static(false);
    },
    toString$0(_) {
      return this.asInterpolation$0().toString$0(0);
    },
    $isExpression0: 1,
    $isAstNode0: 1
  };
  A.module_closure10.prototype = {
    call$1($arguments) {
      var limit, t2, chunks, i, lastEnd, match, t3,
        t1 = J.getInterceptor$asx($arguments),
        string = t1.$index($arguments, 0).assertString$1("string"),
        separator = t1.$index($arguments, 1).assertString$1("separator");
      t1 = t1.$index($arguments, 2).get$realNull();
      limit = t1 == null ? null : t1.assertNumber$1("limit").assertInt$1("limit");
      if (limit != null && limit < 1)
        throw A.wrapException(A.SassScriptException$0("$limit: Must be 1 or greater, was " + A.S(limit) + ".", null));
      t1 = string._string0$_text;
      if (t1.length === 0)
        return B.SassList_Sof2;
      else {
        t2 = separator._string0$_text;
        if (t2.length === 0)
          return A.SassList$0(A.MappedIterable_MappedIterable(new A.Runes(t1), new A.module__closure2(string), type$.Runes._eval$1("Iterable.E"), type$.Value_2), B.ListSeparator_rXA0, true);
      }
      chunks = A._setArrayType([], type$.JSArray_String);
      for (t2 = B.JSString_methods.allMatches$1(t2, t1), t2 = new A._StringAllMatchesIterator(t2._input, t2._pattern, t2.__js_helper$_index), i = 0, lastEnd = 0; t2.moveNext$0();) {
        match = t2.__js_helper$_current;
        t3 = match.start;
        chunks.push(B.JSString_methods.substring$2(t1, lastEnd, t3));
        lastEnd = t3 + match.pattern.length;
        ++i;
        if (i === limit)
          break;
      }
      chunks.push(B.JSString_methods.substring$1(t1, lastEnd));
      return A.SassList$0(new A.MappedListIterable(chunks, new A.module__closure3(string), type$.MappedListIterable_String_Value_2), B.ListSeparator_rXA0, true);
    },
    $signature: 27
  };
  A.module__closure2.prototype = {
    call$1(rune) {
      return new A.SassString0(A.Primitives_stringFromCharCode(rune), this.string._string0$_hasQuotes);
    },
    $signature: 563
  };
  A.module__closure3.prototype = {
    call$1(chunk) {
      return new A.SassString0(chunk, this.string._string0$_hasQuotes);
    },
    $signature: 564
  };
  A._unquote_closure0.prototype = {
    call$1($arguments) {
      var string = J.$index$asx($arguments, 0).assertString$1("string");
      if (!string._string0$_hasQuotes)
        return string;
      return new A.SassString0(string._string0$_text, false);
    },
    $signature: 17
  };
  A._quote_closure0.prototype = {
    call$1($arguments) {
      var string = J.$index$asx($arguments, 0).assertString$1("string");
      if (string._string0$_hasQuotes)
        return string;
      return new A.SassString0(string._string0$_text, true);
    },
    $signature: 17
  };
  A._length_closure1.prototype = {
    call$1($arguments) {
      return A.SassNumber_SassNumber0(J.$index$asx($arguments, 0).assertString$1("string").get$_string0$_sassLength(), null);
    },
    $signature: 12
  };
  A._insert_closure0.prototype = {
    call$1($arguments) {
      var indexInt, codeUnitIndex, _s5_ = "index",
        t1 = J.getInterceptor$asx($arguments),
        string = t1.$index($arguments, 0).assertString$1("string"),
        insert = t1.$index($arguments, 1).assertString$1("insert"),
        index = t1.$index($arguments, 2).assertNumber$1(_s5_);
      index.assertNoUnits$1(_s5_);
      indexInt = index.assertInt$1(_s5_);
      if (indexInt < 0)
        indexInt = Math.max(string.get$_string0$_sassLength() + indexInt + 2, 0);
      t1 = string._string0$_text;
      codeUnitIndex = A.codepointIndexToCodeUnitIndex0(t1, A._codepointForIndex0(indexInt, string.get$_string0$_sassLength(), false));
      return new A.SassString0(B.JSString_methods.replaceRange$3(t1, codeUnitIndex, codeUnitIndex, insert._string0$_text), string._string0$_hasQuotes);
    },
    $signature: 17
  };
  A._index_closure1.prototype = {
    call$1($arguments) {
      var t1 = J.getInterceptor$asx($arguments),
        t2 = t1.$index($arguments, 0).assertString$1("string")._string0$_text,
        codeUnitIndex = B.JSString_methods.indexOf$1(t2, t1.$index($arguments, 1).assertString$1("substring")._string0$_text);
      if (codeUnitIndex === -1)
        return B.C__SassNull0;
      return A.SassNumber_SassNumber0(A.codeUnitIndexToCodepointIndex0(t2, codeUnitIndex) + 1, null);
    },
    $signature: 5
  };
  A._slice_closure0.prototype = {
    call$1($arguments) {
      var lengthInCodepoints, endInt, startCodepoint, endCodepoint,
        _s8_ = "start-at",
        t1 = J.getInterceptor$asx($arguments),
        string = t1.$index($arguments, 0).assertString$1("string"),
        start = t1.$index($arguments, 1).assertNumber$1(_s8_),
        end = t1.$index($arguments, 2).assertNumber$1("end-at");
      start.assertNoUnits$1(_s8_);
      end.assertNoUnits$1("end-at");
      lengthInCodepoints = string.get$_string0$_sassLength();
      endInt = end.assertInt$0();
      if (endInt === 0)
        return string._string0$_hasQuotes ? $.$get$_emptyQuoted0() : $.$get$_emptyUnquoted0();
      startCodepoint = A._codepointForIndex0(start.assertInt$0(), lengthInCodepoints, false);
      endCodepoint = A._codepointForIndex0(endInt, lengthInCodepoints, true);
      if (endCodepoint === lengthInCodepoints)
        --endCodepoint;
      if (endCodepoint < startCodepoint)
        return string._string0$_hasQuotes ? $.$get$_emptyQuoted0() : $.$get$_emptyUnquoted0();
      t1 = string._string0$_text;
      return new A.SassString0(B.JSString_methods.substring$2(t1, A.codepointIndexToCodeUnitIndex0(t1, startCodepoint), A.codepointIndexToCodeUnitIndex0(t1, endCodepoint + 1)), string._string0$_hasQuotes);
    },
    $signature: 17
  };
  A._toUpperCase_closure0.prototype = {
    call$1($arguments) {
      var t1, t2, i, t3, t4,
        string = J.$index$asx($arguments, 0).assertString$1("string");
      for (t1 = string._string0$_text, t2 = t1.length, i = 0, t3 = ""; i < t2; ++i) {
        t4 = t1.charCodeAt(i);
        t3 += A.Primitives_stringFromCharCode(t4 >= 97 && t4 <= 122 ? t4 & 4294967263 : t4);
      }
      return new A.SassString0(t3.charCodeAt(0) == 0 ? t3 : t3, string._string0$_hasQuotes);
    },
    $signature: 17
  };
  A._toLowerCase_closure0.prototype = {
    call$1($arguments) {
      var t1, t2, i, t3, t4,
        string = J.$index$asx($arguments, 0).assertString$1("string");
      for (t1 = string._string0$_text, t2 = t1.length, i = 0, t3 = ""; i < t2; ++i) {
        t4 = t1.charCodeAt(i);
        t3 += A.Primitives_stringFromCharCode(t4 >= 65 && t4 <= 90 ? t4 | 32 : t4);
      }
      return new A.SassString0(t3.charCodeAt(0) == 0 ? t3 : t3, string._string0$_hasQuotes);
    },
    $signature: 17
  };
  A._uniqueId_closure0.prototype = {
    call$1($arguments) {
      var t1 = $.$get$_previousUniqueId0() + ($.$get$_random1().nextInt$1(36) + 1);
      $._previousUniqueId0 = t1;
      if (t1 > Math.pow(36, 6))
        $._previousUniqueId0 = B.JSInt_methods.$mod($.$get$_previousUniqueId0(), A._asInt(Math.pow(36, 6)));
      return new A.SassString0("u" + B.JSString_methods.padLeft$2(B.JSInt_methods.toRadixString$1($.$get$_previousUniqueId0(), 36), 6, "0"), false);
    },
    $signature: 17
  };
  A.stringClass_closure.prototype = {
    call$0() {
      var t2,
        t1 = type$.JSClass,
        jsClass = t1._as(A.allowInteropCaptureThisNamed("sass.SassString", new A.stringClass__closure()));
      A.LinkedHashMap_LinkedHashMap$_literal(["text", new A.stringClass__closure0(), "hasQuotes", new A.stringClass__closure1(), "sassLength", new A.stringClass__closure2()], type$.String, type$.Function).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      J.get$$prototype$x(jsClass).sassIndexToStringIndex = A.allowInteropCaptureThisNamed("sassIndexToStringIndex", new A.stringClass__closure3());
      t2 = $.$get$_emptyQuoted0();
      A.JSClassExtension_injectSuperclass(t1._as(t2.constructor), jsClass);
      return jsClass;
    },
    $signature: 24
  };
  A.stringClass__closure.prototype = {
    call$3($self, textOrOptions, options) {
      var t1;
      if (typeof textOrOptions == "string") {
        t1 = options == null ? null : J.get$quotes$x(options);
        t1 = new A.SassString0(textOrOptions, t1 == null ? true : t1);
      } else {
        type$.nullable__ConstructorOptions_3._as(textOrOptions);
        t1 = textOrOptions == null ? null : J.get$quotes$x(textOrOptions);
        t1 = (t1 == null ? true : t1) ? $.$get$_emptyQuoted0() : $.$get$_emptyUnquoted0();
      }
      return t1;
    },
    call$1($self) {
      return this.call$3($self, null, null);
    },
    call$2($self, textOrOptions) {
      return this.call$3($self, textOrOptions, null);
    },
    "call*": "call$3",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null, null];
    },
    $signature: 565
  };
  A.stringClass__closure0.prototype = {
    call$1($self) {
      return $self._string0$_text;
    },
    $signature: 566
  };
  A.stringClass__closure1.prototype = {
    call$1($self) {
      return $self._string0$_hasQuotes;
    },
    $signature: 567
  };
  A.stringClass__closure2.prototype = {
    call$1($self) {
      return $self.get$_string0$_sassLength();
    },
    $signature: 568
  };
  A.stringClass__closure3.prototype = {
    call$3($self, sassIndex, $name) {
      var t1,
        index = sassIndex.assertNumber$1($name).assertInt$1($name);
      if (index === 0)
        A.throwExpression(A.SassScriptException$0("String index may not be 0.", $name));
      else if (Math.abs(index) > $self.get$_string0$_sassLength())
        A.throwExpression(A.SassScriptException$0("Invalid index " + sassIndex.toString$0(0) + " for a string with " + $self.get$_string0$_sassLength() + " characters.", $name));
      t1 = index < 0 ? $self.get$_string0$_sassLength() + index : index - 1;
      return A.codepointIndexToCodeUnitIndex0($self._string0$_text, t1);
    },
    call$2($self, sassIndex) {
      return this.call$3($self, sassIndex, null);
    },
    "call*": "call$3",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null];
    },
    $signature: 569
  };
  A._ConstructorOptions1.prototype = {};
  A._NodeSassString.prototype = {};
  A.legacyStringClass_closure.prototype = {
    call$3(thisArg, value, dartValue) {
      var t1;
      if (dartValue == null) {
        value.toString;
        t1 = new A.SassString0(value, false);
      } else
        t1 = dartValue;
      J.set$dartValue$x(thisArg, t1);
    },
    call$2(thisArg, value) {
      return this.call$3(thisArg, value, null);
    },
    "call*": "call$3",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null];
    },
    $signature: 570
  };
  A.legacyStringClass_closure0.prototype = {
    call$1(thisArg) {
      return J.get$dartValue$x(thisArg)._string0$_text;
    },
    $signature: 571
  };
  A.legacyStringClass_closure1.prototype = {
    call$2(thisArg, value) {
      J.set$dartValue$x(thisArg, new A.SassString0(value, false));
    },
    $signature: 572
  };
  A.SassString0.prototype = {
    get$_string0$_sassLength() {
      var t1, result, _this = this,
        value = _this._string0$__SassString__sassLength_FI;
      if (value === $) {
        t1 = new A.Runes(_this._string0$_text);
        result = t1.get$length(t1);
        _this._string0$__SassString__sassLength_FI !== $ && A.throwUnnamedLateFieldADI();
        _this._string0$__SassString__sassLength_FI = result;
        value = result;
      }
      return value;
    },
    get$isSpecialNumber() {
      var t1, _2_0, _0_0, _1_0;
      if (this._string0$_hasQuotes)
        return false;
      t1 = this._string0$_text;
      if (t1.length < 6)
        return false;
      _2_0 = t1.charCodeAt(0);
      $label1$1: {
        if (99 === _2_0 || 67 === _2_0) {
          _0_0 = t1.charCodeAt(1);
          $label0$0: {
            if (108 === _0_0 || 76 === _0_0) {
              t1 = (t1.charCodeAt(2) | 32) === 97 && (t1.charCodeAt(3) | 32) === 109 && (t1.charCodeAt(4) | 32) === 112 && t1.charCodeAt(5) === 40;
              break $label0$0;
            }
            if (97 === _0_0 || 65 === _0_0) {
              t1 = (t1.charCodeAt(2) | 32) === 108 && (t1.charCodeAt(3) | 32) === 99 && t1.charCodeAt(4) === 40;
              break $label0$0;
            }
            t1 = false;
            break $label0$0;
          }
          break $label1$1;
        }
        if (118 === _2_0 || 86 === _2_0) {
          t1 = (t1.charCodeAt(1) | 32) === 97 && (t1.charCodeAt(2) | 32) === 114 && t1.charCodeAt(3) === 40;
          break $label1$1;
        }
        if (101 === _2_0 || 69 === _2_0) {
          t1 = (t1.charCodeAt(1) | 32) === 110 && (t1.charCodeAt(2) | 32) === 118 && t1.charCodeAt(3) === 40;
          break $label1$1;
        }
        if (109 === _2_0 || 77 === _2_0) {
          _1_0 = t1.charCodeAt(1);
          $label2$2: {
            if (97 === _1_0 || 65 === _1_0) {
              t1 = (t1.charCodeAt(2) | 32) === 120 && t1.charCodeAt(3) === 40;
              break $label2$2;
            }
            if (105 === _1_0 || 73 === _1_0) {
              t1 = (t1.charCodeAt(2) | 32) === 110 && t1.charCodeAt(3) === 40;
              break $label2$2;
            }
            t1 = false;
            break $label2$2;
          }
          break $label1$1;
        }
        t1 = false;
        break $label1$1;
      }
      return t1;
    },
    get$isVar() {
      if (this._string0$_hasQuotes)
        return false;
      var t1 = this._string0$_text;
      if (t1.length < 8)
        return false;
      return (t1.charCodeAt(0) | 32) === 118 && (t1.charCodeAt(1) | 32) === 97 && (t1.charCodeAt(2) | 32) === 114 && t1.charCodeAt(3) === 40;
    },
    get$isBlank() {
      return !this._string0$_hasQuotes && this._string0$_text.length === 0;
    },
    accept$1$1(visitor) {
      var t1 = visitor._serialize0$_quote && this._string0$_hasQuotes,
        t2 = this._string0$_text;
      if (t1)
        visitor._serialize0$_visitQuotedString$1(t2);
      else
        visitor._serialize0$_visitUnquotedString$1(t2);
      return null;
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    assertString$1($name) {
      return this;
    },
    plus$1(other) {
      var t1 = this._string0$_text,
        t2 = this._string0$_hasQuotes;
      return other instanceof A.SassString0 ? new A.SassString0(t1 + other._string0$_text, t2) : new A.SassString0(t1 + A.serializeValue0(other, false, true), t2);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.SassString0 && this._string0$_text === other._string0$_text;
    },
    get$hashCode(_) {
      var t1 = this._string0$_hashCache;
      return t1 == null ? this._string0$_hashCache = B.JSString_methods.get$hashCode(this._string0$_text) : t1;
    }
  };
  A.ModifiableCssStyleRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssStyleRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      var t1;
      if (other instanceof A.ModifiableCssStyleRule0)
        t1 = B.C_ListEquality.equals$2(0, other._style_rule0$_selector._box0$_inner.value.components, this._style_rule0$_selector._box0$_inner.value.components);
      else
        t1 = false;
      return t1;
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssStyleRule$0(this._style_rule0$_selector, this.span, this.originalSelector);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.StyleRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitStyleRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return this.selector.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.CssStylesheet0.prototype = {
    get$isGroupEnd() {
      return false;
    },
    get$isChildless() {
      return false;
    },
    accept$1$1(visitor) {
      return visitor.visitCssStylesheet$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    get$children(receiver) {
      return this.children;
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.ModifiableCssStylesheet0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssStylesheet$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      return other instanceof A.ModifiableCssStylesheet0;
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssStylesheet$0(this.span);
    },
    $isCssStylesheet0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.StylesheetParser0.prototype = {
    parse$0() {
      return this.wrapSpanFormatException$1(new A.StylesheetParser_parse_closure0(this));
    },
    parseArgumentDeclaration$0() {
      return this._stylesheet0$_parseSingleProduction$1$1(new A.StylesheetParser_parseArgumentDeclaration_closure0(this), type$.ArgumentDeclaration_2);
    },
    _stylesheet0$_parseSingleProduction$1$1(production, $T) {
      return this.wrapSpanFormatException$1(new A.StylesheetParser__parseSingleProduction_closure0(this, production, $T));
    },
    parseSignature$1$requireParens(requireParens) {
      return this.wrapSpanFormatException$1(new A.StylesheetParser_parseSignature_closure(this, requireParens));
    },
    _stylesheet0$_statement$1$root(root) {
      var t2, _this = this,
        t1 = _this.scanner,
        _0_0 = t1.peekChar$0();
      if (64 === _0_0)
        return _this.atRule$2$root(new A.StylesheetParser__statement_closure0(_this), root);
      if (43 === _0_0) {
        if (!_this.get$indented() || !_this.lookingAtIdentifier$1(1))
          return _this._stylesheet0$_styleRule$0();
        _this._stylesheet0$_isUseAllowed = false;
        t2 = t1._string_scanner$_position;
        t1.readChar$0();
        return _this._stylesheet0$_includeRule$1(new A._SpanScannerState(t1, t2));
      }
      if (61 === _0_0) {
        if (!_this.get$indented())
          return _this._stylesheet0$_styleRule$0();
        _this._stylesheet0$_isUseAllowed = false;
        t2 = t1._string_scanner$_position;
        t1.readChar$0();
        _this.whitespace$0();
        return _this._stylesheet0$_mixinRule$1(new A._SpanScannerState(t1, t2));
      }
      if (125 === _0_0)
        t1.error$2$length(0, 'unmatched "}".', 1);
      return _this._stylesheet0$_inStyleRule || _this._stylesheet0$_inUnknownAtRule || _this._stylesheet0$_inMixin || _this._stylesheet0$_inContentBlock ? _this._stylesheet0$_declarationOrStyleRule$0() : _this._stylesheet0$_variableDeclarationOrStyleRule$0();
    },
    _stylesheet0$_statement$0() {
      return this._stylesheet0$_statement$1$root(false);
    },
    variableDeclarationWithoutNamespace$2(namespace, start_) {
      var t1, start, $name, t2, value, flagStart, t3, guarded, global, _0_0, endPosition, t4, t5, t6, declaration, _this = this,
        precedingComment = _this.lastSilentComment;
      _this.lastSilentComment = null;
      if (start_ == null) {
        t1 = _this.scanner;
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      } else
        start = start_;
      $name = _this.variableName$0();
      t1 = namespace != null;
      if (t1)
        _this._stylesheet0$_assertPublic$2($name, new A.StylesheetParser_variableDeclarationWithoutNamespace_closure1(_this, start));
      if (_this.get$plainCss())
        _this.error$2(0, string$.Sass_v, _this.scanner.spanFrom$1(start));
      _this.whitespace$0();
      t2 = _this.scanner;
      t2.expectChar$1(58);
      _this.whitespace$0();
      value = _this._stylesheet0$_expression$0();
      flagStart = new A._SpanScannerState(t2, t2._string_scanner$_position);
      for (t3 = _this.logger, guarded = false, global = false; t2.scanChar$1(33);) {
        $label0$0: {
          _0_0 = _this.identifier$0();
          if ("default" === _0_0) {
            if (guarded) {
              endPosition = t2._string_scanner$_position;
              t4 = t2._sourceFile;
              t5 = flagStart.position;
              t6 = new A._FileSpan(t4, t5, endPosition);
              t6._FileSpan$3(t4, t5, endPosition);
              A.WarnForDeprecation_warnForDeprecation0(t3, B.Deprecation_ynv, string$.x21defau, t6, null);
            }
            guarded = true;
            break $label0$0;
          }
          if ("global" === _0_0) {
            if (t1) {
              endPosition = t2._string_scanner$_position;
              t4 = t2._sourceFile;
              t5 = flagStart.position;
              t6 = new A._FileSpan(t4, t5, endPosition);
              t6._FileSpan$3(t4, t5, endPosition);
              _this.error$2(0, string$.x21globai, t6);
            } else if (global) {
              endPosition = t2._string_scanner$_position;
              t4 = t2._sourceFile;
              t5 = flagStart.position;
              t6 = new A._FileSpan(t4, t5, endPosition);
              t6._FileSpan$3(t4, t5, endPosition);
              A.WarnForDeprecation_warnForDeprecation0(t3, B.Deprecation_ynv, string$.x21globas, t6, null);
            }
            global = true;
            break $label0$0;
          }
          endPosition = t2._string_scanner$_position;
          t4 = t2._sourceFile;
          t5 = flagStart.position;
          t6 = new A._FileSpan(t4, t5, endPosition);
          t6._FileSpan$3(t4, t5, endPosition);
          _this.error$2(0, "Invalid flag name.", t6);
        }
        _this.whitespace$0();
        flagStart = new A._SpanScannerState(t2, t2._string_scanner$_position);
      }
      _this.expectStatementSeparator$1("variable declaration");
      declaration = A.VariableDeclaration$0($name, value, t2.spanFrom$1(start), precedingComment, global, guarded, namespace);
      if (global)
        _this._stylesheet0$_globalVariables.putIfAbsent$2($name, new A.StylesheetParser_variableDeclarationWithoutNamespace_closure2(declaration));
      return declaration;
    },
    variableDeclarationWithoutNamespace$0() {
      return this.variableDeclarationWithoutNamespace$2(null, null);
    },
    _stylesheet0$_variableDeclarationOrStyleRule$0() {
      var t1, t2, variableOrInterpolation, t3, _this = this;
      if (_this.get$plainCss())
        return _this._stylesheet0$_styleRule$0();
      if (_this.get$indented() && _this.scanner.scanChar$1(92))
        return _this._stylesheet0$_styleRule$0();
      if (!_this.lookingAtIdentifier$0())
        return _this._stylesheet0$_styleRule$0();
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      variableOrInterpolation = _this._stylesheet0$_variableDeclarationOrInterpolation$0();
      if (variableOrInterpolation instanceof A.VariableDeclaration0)
        t1 = variableOrInterpolation;
      else {
        t3 = new A.InterpolationBuffer0(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Object));
        t3.addInterpolation$1(type$.Interpolation_2._as(variableOrInterpolation));
        t2 = _this._stylesheet0$_styleRule$2(t3, new A._SpanScannerState(t1, t2));
        t1 = t2;
      }
      return t1;
    },
    _stylesheet0$_declarationOrStyleRule$0() {
      var t1, t2, declarationOrBuffer, _this = this;
      if (_this.get$plainCss() && _this._stylesheet0$_inStyleRule && !_this._stylesheet0$_inUnknownAtRule)
        return _this._stylesheet0$_propertyOrVariableDeclaration$0();
      if (_this.get$indented() && _this.scanner.scanChar$1(92))
        return _this._stylesheet0$_styleRule$0();
      t1 = _this.scanner;
      t2 = t1._string_scanner$_position;
      declarationOrBuffer = _this._stylesheet0$_declarationOrBuffer$0();
      return type$.Statement_2._is(declarationOrBuffer) ? declarationOrBuffer : _this._stylesheet0$_styleRule$2(type$.InterpolationBuffer_2._as(declarationOrBuffer), new A._SpanScannerState(t1, t2));
    },
    _stylesheet0$_declarationOrBuffer$0() {
      var midBuffer, couldBeSelector, beforeDeclaration, additional, t3, startsWithPunctuation, variableOrInterpolation, t4, $name, postColonWhitespace, exception, _this = this, t1 = {},
        t2 = _this.scanner,
        start = new A._SpanScannerState(t2, t2._string_scanner$_position),
        nameBuffer = new A.InterpolationBuffer0(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Object));
      if (_this._stylesheet0$_lookingAtPotentialPropertyHack$0()) {
        t3 = t2.readChar$0();
        nameBuffer._interpolation_buffer0$_text._contents += A.Primitives_stringFromCharCode(t3);
        t3 = _this.rawText$1(_this.get$whitespace());
        nameBuffer._interpolation_buffer0$_text._contents += t3;
        startsWithPunctuation = true;
      } else
        startsWithPunctuation = false;
      if (!_this._stylesheet0$_lookingAtInterpolatedIdentifier$0())
        return nameBuffer;
      variableOrInterpolation = startsWithPunctuation ? _this.interpolatedIdentifier$0() : _this._stylesheet0$_variableDeclarationOrInterpolation$0();
      if (variableOrInterpolation instanceof A.VariableDeclaration0)
        return variableOrInterpolation;
      else
        nameBuffer.addInterpolation$1(type$.Interpolation_2._as(variableOrInterpolation));
      _this._stylesheet0$_isUseAllowed = false;
      if (t2.matches$1("/*")) {
        t3 = _this.rawText$1(_this.get$loudComment());
        nameBuffer._interpolation_buffer0$_text._contents += t3;
      }
      midBuffer = new A.StringBuffer("");
      t3 = _this.get$whitespace();
      midBuffer._contents += _this.rawText$1(t3);
      t4 = t2._string_scanner$_position;
      if (!t2.scanChar$1(58)) {
        if (midBuffer._contents.length !== 0)
          nameBuffer._interpolation_buffer0$_text._contents += A.Primitives_stringFromCharCode(32);
        return nameBuffer;
      }
      midBuffer._contents += A.Primitives_stringFromCharCode(58);
      $name = nameBuffer.interpolation$1(t2.spanFrom$2(start, new A._SpanScannerState(t2, t4)));
      if (B.JSString_methods.startsWith$1($name.get$initialPlain(), "--")) {
        t1 = _this._stylesheet0$_interpolatedDeclarationValue$0();
        _this.expectStatementSeparator$1("custom property");
        return A.Declaration$0($name, new A.StringExpression0(t1, false), t2.spanFrom$1(start));
      }
      if (t2.scanChar$1(58)) {
        t1 = nameBuffer;
        t2 = t1._interpolation_buffer0$_text;
        t2._contents += A.S(midBuffer);
        t2._contents += A.Primitives_stringFromCharCode(58);
        return t1;
      } else if (_this.get$indented() && _this._stylesheet0$_lookingAtInterpolatedIdentifier$0()) {
        t1 = nameBuffer;
        t1._interpolation_buffer0$_text._contents += A.S(midBuffer);
        return t1;
      }
      postColonWhitespace = _this.rawText$1(t3);
      if (_this.lookingAtChildren$0())
        return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_declarationChild(), start, new A.StylesheetParser__declarationOrBuffer_closure1($name));
      midBuffer._contents += postColonWhitespace;
      couldBeSelector = postColonWhitespace.length === 0 && _this._stylesheet0$_lookingAtInterpolatedIdentifier$0();
      beforeDeclaration = new A._SpanScannerState(t2, t2._string_scanner$_position);
      t3 = t1.value = null;
      try {
        t3 = t1.value = _this._stylesheet0$_expression$0();
        if (_this.lookingAtChildren$0()) {
          if (couldBeSelector)
            _this.expectStatementSeparator$0();
        } else if (!_this.atEndOfStatement$0())
          _this.expectStatementSeparator$0();
      } catch (exception) {
        if (type$.FormatException._is(A.unwrapException(exception))) {
          if (!couldBeSelector)
            throw exception;
          t2.set$state(beforeDeclaration);
          additional = _this.almostAnyValue$0();
          if (!_this.get$indented() && t2.peekChar$0() === 59)
            throw exception;
          nameBuffer._interpolation_buffer0$_text._contents += A.S(midBuffer);
          nameBuffer.addInterpolation$1(additional);
          return nameBuffer;
        } else
          throw exception;
      }
      if (_this.lookingAtChildren$0())
        return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_declarationChild(), start, new A.StylesheetParser__declarationOrBuffer_closure2(t1, $name));
      else {
        _this.expectStatementSeparator$0();
        return A.Declaration$0($name, t3, t2.spanFrom$1(start));
      }
    },
    _stylesheet0$_variableDeclarationOrInterpolation$0() {
      var t1, start, identifier, t2, buffer, _this = this;
      if (!_this.lookingAtIdentifier$0())
        return _this.interpolatedIdentifier$0();
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      identifier = _this.identifier$0();
      if (t1.matches$1(".$")) {
        t1.readChar$0();
        return _this.variableDeclarationWithoutNamespace$2(identifier, start);
      } else {
        t2 = new A.StringBuffer("");
        buffer = new A.InterpolationBuffer0(t2, A._setArrayType([], type$.JSArray_Object));
        t2._contents = "" + identifier;
        if (_this._stylesheet0$_lookingAtInterpolatedIdentifierBody$0())
          buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
        return buffer.interpolation$1(t1.spanFrom$1(start));
      }
    },
    _stylesheet0$_styleRule$2(buffer, start_) {
      var t2, start, interpolation, wasInStyleRule, _this = this, t1 = {};
      _this._stylesheet0$_isUseAllowed = false;
      if (start_ == null) {
        t2 = _this.scanner;
        start = new A._SpanScannerState(t2, t2._string_scanner$_position);
      } else
        start = start_;
      interpolation = t1.interpolation = _this.styleRuleSelector$0();
      if (buffer != null) {
        buffer.addInterpolation$1(interpolation);
        t2 = t1.interpolation = buffer.interpolation$1(_this.scanner.spanFrom$1(start));
      } else
        t2 = interpolation;
      if (t2.contents.length === 0)
        _this.scanner.error$1(0, 'expected "}".');
      wasInStyleRule = _this._stylesheet0$_inStyleRule;
      _this._stylesheet0$_inStyleRule = true;
      return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser__styleRule_closure0(t1, _this, wasInStyleRule, start));
    },
    _stylesheet0$_styleRule$0() {
      return this._stylesheet0$_styleRule$2(null, null);
    },
    _stylesheet0$_propertyOrVariableDeclaration$1$parseCustomProperties(parseCustomProperties) {
      var t3, nameBuffer, variableOrInterpolation, $name, value, _this = this,
        _s48_ = string$.Nested,
        t1 = {},
        t2 = _this.scanner,
        start = new A._SpanScannerState(t2, t2._string_scanner$_position);
      t1.name = null;
      if (_this._stylesheet0$_lookingAtPotentialPropertyHack$0()) {
        t3 = new A.StringBuffer("");
        nameBuffer = new A.InterpolationBuffer0(t3, A._setArrayType([], type$.JSArray_Object));
        t3._contents += A.Primitives_stringFromCharCode(t2.readChar$0());
        t3._contents += _this.rawText$1(_this.get$whitespace());
        nameBuffer.addInterpolation$1(_this.interpolatedIdentifier$0());
        t3 = t1.name = nameBuffer.interpolation$1(t2.spanFrom$1(start));
      } else if (!_this.get$plainCss()) {
        variableOrInterpolation = _this._stylesheet0$_variableDeclarationOrInterpolation$0();
        if (variableOrInterpolation instanceof A.VariableDeclaration0)
          return variableOrInterpolation;
        else {
          type$.Interpolation_2._as(variableOrInterpolation);
          t1.name = variableOrInterpolation;
        }
        t3 = variableOrInterpolation;
      } else {
        $name = _this.interpolatedIdentifier$0();
        t1.name = $name;
        t3 = $name;
      }
      _this.whitespace$0();
      t2.expectChar$1(58);
      if (parseCustomProperties && B.JSString_methods.startsWith$1(t3.get$initialPlain(), "--")) {
        t1 = _this._stylesheet0$_interpolatedDeclarationValue$0();
        _this.expectStatementSeparator$1("custom property");
        return A.Declaration$0(t3, new A.StringExpression0(t1, false), t2.spanFrom$1(start));
      }
      _this.whitespace$0();
      if (_this.lookingAtChildren$0()) {
        if (_this.get$plainCss())
          t2.error$1(0, _s48_);
        return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_declarationChild(), start, new A.StylesheetParser__propertyOrVariableDeclaration_closure1(t1));
      }
      value = _this._stylesheet0$_expression$0();
      if (_this.lookingAtChildren$0()) {
        if (_this.get$plainCss())
          t2.error$1(0, _s48_);
        return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_declarationChild(), start, new A.StylesheetParser__propertyOrVariableDeclaration_closure2(t1, value));
      } else {
        _this.expectStatementSeparator$0();
        return A.Declaration$0(t3, value, t2.spanFrom$1(start));
      }
    },
    _stylesheet0$_propertyOrVariableDeclaration$0() {
      return this._stylesheet0$_propertyOrVariableDeclaration$1$parseCustomProperties(true);
    },
    _stylesheet0$_declarationChild$0() {
      return this.scanner.peekChar$0() === 64 ? this._stylesheet0$_declarationAtRule$0() : this._stylesheet0$_propertyOrVariableDeclaration$1$parseCustomProperties(false);
    },
    atRule$2$root(child, root) {
      var $name, wasUseAllowed, value, optional, url, namespace, configuration, span, _this = this,
        _s9_ = "@use rule",
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$2$name(64, "@-rule");
      $name = _this.interpolatedIdentifier$0();
      _this.whitespace$0();
      wasUseAllowed = _this._stylesheet0$_isUseAllowed;
      _this._stylesheet0$_isUseAllowed = false;
      switch ($name.get$asPlain()) {
        case "at-root":
          return _this._stylesheet0$_atRootRule$1(start);
        case "content":
          return _this._stylesheet0$_contentRule$1(start);
        case "debug":
          return _this._stylesheet0$_debugRule$1(start);
        case "each":
          return _this._stylesheet0$_eachRule$2(start, child);
        case "else":
          return _this._stylesheet0$_disallowedAtRule$1(start);
        case "error":
          return _this._stylesheet0$_errorRule$1(start);
        case "extend":
          if (!_this._stylesheet0$_inStyleRule && !_this._stylesheet0$_inMixin && !_this._stylesheet0$_inContentBlock)
            _this.error$2(0, string$.x40exten, t1.spanFrom$1(start));
          value = _this.almostAnyValue$0();
          optional = t1.scanChar$1(33);
          if (optional)
            _this.expectIdentifier$1("optional");
          _this.expectStatementSeparator$1("@extend rule");
          return new A.ExtendRule0(value, optional, t1.spanFrom$1(start));
        case "for":
          return _this._stylesheet0$_forRule$2(start, child);
        case "forward":
          _this._stylesheet0$_isUseAllowed = wasUseAllowed;
          if (!root)
            _this._stylesheet0$_disallowedAtRule$1(start);
          return _this._stylesheet0$_forwardRule$1(start);
        case "function":
          return _this._stylesheet0$_functionRule$1(start);
        case "if":
          return _this._stylesheet0$_ifRule$2(start, child);
        case "import":
          return _this._stylesheet0$_importRule$1(start);
        case "include":
          return _this._stylesheet0$_includeRule$1(start);
        case "media":
          return _this.mediaRule$1(start);
        case "mixin":
          return _this._stylesheet0$_mixinRule$1(start);
        case "-moz-document":
          return _this.mozDocumentRule$2(start, $name);
        case "return":
          return _this._stylesheet0$_disallowedAtRule$1(start);
        case "supports":
          return _this.supportsRule$1(start);
        case "use":
          _this._stylesheet0$_isUseAllowed = wasUseAllowed;
          if (!root)
            _this._stylesheet0$_disallowedAtRule$1(start);
          url = _this._stylesheet0$_urlString$0();
          _this.whitespace$0();
          namespace = _this._stylesheet0$_useNamespace$2(url, start);
          _this.whitespace$0();
          configuration = _this._stylesheet0$_configuration$0();
          _this.expectStatementSeparator$1(_s9_);
          span = t1.spanFrom$1(start);
          if (!_this._stylesheet0$_isUseAllowed)
            _this.error$2(0, string$.x40use_r, span);
          _this.expectStatementSeparator$1(_s9_);
          t1 = new A.UseRule0(url, namespace, configuration == null ? B.List_empty21 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable_2), span);
          t1.UseRule$4$configuration0(url, namespace, span, configuration);
          return t1;
        case "warn":
          return _this._stylesheet0$_warnRule$1(start);
        case "while":
          return _this._stylesheet0$_whileRule$2(start, child);
        default:
          return _this.unknownAtRule$2(start, $name);
      }
    },
    _stylesheet0$_declarationAtRule$0() {
      var _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        _0_0 = _this._stylesheet0$_plainAtRuleName$0();
      $label0$0: {
        if ("content" === _0_0) {
          t1 = _this._stylesheet0$_contentRule$1(start);
          break $label0$0;
        }
        if ("debug" === _0_0) {
          t1 = _this._stylesheet0$_debugRule$1(start);
          break $label0$0;
        }
        if ("each" === _0_0) {
          t1 = _this._stylesheet0$_eachRule$2(start, _this.get$_stylesheet0$_declarationChild());
          break $label0$0;
        }
        if ("else" === _0_0)
          _this._stylesheet0$_disallowedAtRule$1(start);
        if ("error" === _0_0) {
          t1 = _this._stylesheet0$_errorRule$1(start);
          break $label0$0;
        }
        if ("for" === _0_0) {
          t1 = _this._stylesheet0$_forRule$2(start, _this.get$_stylesheet0$_declarationChild());
          break $label0$0;
        }
        if ("if" === _0_0) {
          t1 = _this._stylesheet0$_ifRule$2(start, _this.get$_stylesheet0$_declarationChild());
          break $label0$0;
        }
        if ("include" === _0_0) {
          t1 = _this._stylesheet0$_includeRule$1(start);
          break $label0$0;
        }
        if ("warn" === _0_0) {
          t1 = _this._stylesheet0$_warnRule$1(start);
          break $label0$0;
        }
        if ("while" === _0_0) {
          t1 = _this._stylesheet0$_whileRule$2(start, _this.get$_stylesheet0$_declarationChild());
          break $label0$0;
        }
        t1 = _this._stylesheet0$_disallowedAtRule$1(start);
      }
      return t1;
    },
    _stylesheet0$_functionChild$0() {
      var state, variableDeclarationError, stackTrace, statement, t2, namespace, exception, t3, start, _0_0, value, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$0() !== 64) {
        t2 = t1._string_scanner$_position;
        state = new A._SpanScannerState(t1, t2);
        try {
          namespace = _this.identifier$0();
          t1.expectChar$1(46);
          t2 = _this.variableDeclarationWithoutNamespace$2(namespace, new A._SpanScannerState(t1, t2));
          return t2;
        } catch (exception) {
          t2 = A.unwrapException(exception);
          t3 = type$.SourceSpanFormatException;
          if (t3._is(t2)) {
            variableDeclarationError = t2;
            stackTrace = A.getTraceFromException(exception);
            t1.set$state(state);
            statement = null;
            try {
              statement = _this._stylesheet0$_declarationOrStyleRule$0();
            } catch (exception) {
              if (t3._is(A.unwrapException(exception)))
                throw A.wrapException(variableDeclarationError);
              else
                throw exception;
            }
            t2 = statement instanceof A.StyleRule0 ? "style rules" : "declarations";
            _this.error$3(0, "@function rules may not contain " + t2 + ".", J.get$span$z(statement), stackTrace);
          } else
            throw exception;
        }
      }
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _0_0 = _this._stylesheet0$_plainAtRuleName$0();
      $label0$0: {
        if ("debug" === _0_0) {
          t1 = _this._stylesheet0$_debugRule$1(start);
          break $label0$0;
        }
        if ("each" === _0_0) {
          t1 = _this._stylesheet0$_eachRule$2(start, _this.get$_stylesheet0$_functionChild());
          break $label0$0;
        }
        if ("else" === _0_0)
          _this._stylesheet0$_disallowedAtRule$1(start);
        if ("error" === _0_0) {
          t1 = _this._stylesheet0$_errorRule$1(start);
          break $label0$0;
        }
        if ("for" === _0_0) {
          t1 = _this._stylesheet0$_forRule$2(start, _this.get$_stylesheet0$_functionChild());
          break $label0$0;
        }
        if ("if" === _0_0) {
          t1 = _this._stylesheet0$_ifRule$2(start, _this.get$_stylesheet0$_functionChild());
          break $label0$0;
        }
        if ("return" === _0_0) {
          value = _this._stylesheet0$_expression$0();
          _this.expectStatementSeparator$1("@return rule");
          t1 = new A.ReturnRule0(value, t1.spanFrom$1(start));
          break $label0$0;
        }
        if ("warn" === _0_0) {
          t1 = _this._stylesheet0$_warnRule$1(start);
          break $label0$0;
        }
        if ("while" === _0_0) {
          t1 = _this._stylesheet0$_whileRule$2(start, _this.get$_stylesheet0$_functionChild());
          break $label0$0;
        }
        t1 = _this._stylesheet0$_disallowedAtRule$1(start);
      }
      return t1;
    },
    _stylesheet0$_plainAtRuleName$0() {
      this.scanner.expectChar$2$name(64, "@-rule");
      var $name = this.identifier$0();
      this.whitespace$0();
      return $name;
    },
    _stylesheet0$_atRootRule$1(start) {
      var t2, t3, t4, buffer, t5, query, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$0() === 40) {
        t2 = t1._string_scanner$_position;
        t3 = new A.StringBuffer("");
        t4 = A._setArrayType([], type$.JSArray_Object);
        buffer = new A.InterpolationBuffer0(t3, t4);
        t1.expectChar$1(40);
        t3._contents += A.Primitives_stringFromCharCode(40);
        _this.whitespace$0();
        t5 = _this._stylesheet0$_expression$0();
        buffer._interpolation_buffer0$_flushText$0();
        t4.push(t5);
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          t3._contents += A.Primitives_stringFromCharCode(58);
          t3._contents += A.Primitives_stringFromCharCode(32);
          t5 = _this._stylesheet0$_expression$0();
          buffer._interpolation_buffer0$_flushText$0();
          t4.push(t5);
        }
        t1.expectChar$1(41);
        _this.whitespace$0();
        t3._contents += A.Primitives_stringFromCharCode(41);
        query = buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
        _this.whitespace$0();
        return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser__atRootRule_closure1(query));
      } else if (_this.lookingAtChildren$0())
        return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser__atRootRule_closure2());
      else
        return A.AtRootRule$0(A._setArrayType([_this._stylesheet0$_styleRule$0()], type$.JSArray_Statement_2), t1.spanFrom$1(start), null);
    },
    _stylesheet0$_contentRule$1(start) {
      var t1, $arguments, t2, t3, _this = this;
      if (!_this._stylesheet0$_inMixin)
        _this.error$2(0, string$.x40conte, _this.scanner.spanFrom$1(start));
      _this.whitespace$0();
      t1 = _this.scanner;
      if (t1.peekChar$0() === 40)
        $arguments = _this._stylesheet0$_argumentInvocation$1$mixin(true);
      else {
        t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
        t3 = t2.offset;
        $arguments = A.ArgumentInvocation$empty0(A._FileSpan$(t2.file, t3, t3));
      }
      _this.expectStatementSeparator$1("@content rule");
      return new A.ContentRule0($arguments, t1.spanFrom$1(start));
    },
    _stylesheet0$_debugRule$1(start) {
      var value = this._stylesheet0$_expression$0();
      this.expectStatementSeparator$1("@debug rule");
      return new A.DebugRule0(value, this.scanner.spanFrom$1(start));
    },
    _stylesheet0$_eachRule$2(start, child) {
      var variables, t1, _this = this,
        wasInControlDirective = _this._stylesheet0$_inControlDirective;
      _this._stylesheet0$_inControlDirective = true;
      variables = A._setArrayType([_this.variableName$0()], type$.JSArray_String);
      _this.whitespace$0();
      for (t1 = _this.scanner; t1.scanChar$1(44);) {
        _this.whitespace$0();
        t1.expectChar$1(36);
        variables.push(_this.identifier$1$normalize(true));
        _this.whitespace$0();
      }
      _this.expectIdentifier$1("in");
      _this.whitespace$0();
      return _this._stylesheet0$_withChildren$3(child, start, new A.StylesheetParser__eachRule_closure0(_this, wasInControlDirective, variables, _this._stylesheet0$_expression$0()));
    },
    _stylesheet0$_errorRule$1(start) {
      var value = this._stylesheet0$_expression$0();
      this.expectStatementSeparator$1("@error rule");
      return new A.ErrorRule0(value, this.scanner.spanFrom$1(start));
    },
    _stylesheet0$_functionRule$1(start) {
      var $name, $arguments, _0_0, _this = this,
        precedingComment = _this.lastSilentComment;
      _this.lastSilentComment = null;
      $name = _this.identifier$1$normalize(true);
      _this.whitespace$0();
      $arguments = _this._stylesheet0$_argumentDeclaration$0();
      if (_this._stylesheet0$_inMixin || _this._stylesheet0$_inContentBlock)
        _this.error$2(0, string$.Mixinscf, _this.scanner.spanFrom$1(start));
      else if (_this._stylesheet0$_inControlDirective)
        _this.error$2(0, string$.Functi, _this.scanner.spanFrom$1(start));
      _0_0 = A.unvendor0($name);
      if ("calc" === _0_0 || "element" === _0_0 || "expression" === _0_0 || "url" === _0_0 || "and" === _0_0 || "or" === _0_0 || "not" === _0_0 || "clamp" === _0_0)
        _this.error$2(0, "Invalid function name.", _this.scanner.spanFrom$1(start));
      _this.whitespace$0();
      return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_functionChild(), start, new A.StylesheetParser__functionRule_closure0($name, $arguments, precedingComment));
    },
    _stylesheet0$_forRule$2(start, child) {
      var variable, from, _this = this, t1 = {},
        wasInControlDirective = _this._stylesheet0$_inControlDirective;
      _this._stylesheet0$_inControlDirective = true;
      variable = _this.variableName$0();
      _this.whitespace$0();
      _this.expectIdentifier$1("from");
      _this.whitespace$0();
      t1.exclusive = null;
      from = _this._stylesheet0$_expression$1$until(new A.StylesheetParser__forRule_closure1(t1, _this));
      if (t1.exclusive == null)
        _this.scanner.error$1(0, 'Expected "to" or "through".');
      _this.whitespace$0();
      return _this._stylesheet0$_withChildren$3(child, start, new A.StylesheetParser__forRule_closure2(t1, _this, wasInControlDirective, variable, from, _this._stylesheet0$_expression$0()));
    },
    _stylesheet0$_forwardRule$1(start) {
      var prefix, _0_0, t1, t2, hiddenVariables, hiddenMixinsAndFunctions, shownVariables, shownMixinsAndFunctions, _1_0, configuration, span, t3, t4, _this = this, _null = null,
        url = _this._stylesheet0$_urlString$0();
      _this.whitespace$0();
      if (_this.scanIdentifier$1("as")) {
        _this.whitespace$0();
        prefix = _this.identifier$1$normalize(true);
        _this.scanner.expectChar$1(42);
        _this.whitespace$0();
      } else
        prefix = _null;
      if (_this.scanIdentifier$1("show")) {
        _0_0 = _this._stylesheet0$_memberList$0();
        t1 = _0_0._0;
        t2 = _0_0._1;
        hiddenVariables = _null;
        hiddenMixinsAndFunctions = hiddenVariables;
        shownVariables = t2;
        shownMixinsAndFunctions = t1;
      } else {
        if (_this.scanIdentifier$1("hide")) {
          _1_0 = _this._stylesheet0$_memberList$0();
          t1 = _1_0._0;
          t2 = _1_0._1;
          hiddenVariables = t2;
          hiddenMixinsAndFunctions = t1;
        } else {
          hiddenVariables = _null;
          hiddenMixinsAndFunctions = hiddenVariables;
        }
        shownVariables = _null;
        shownMixinsAndFunctions = shownVariables;
      }
      configuration = _this._stylesheet0$_configuration$1$allowGuarded(true);
      _this.expectStatementSeparator$1("@forward rule");
      span = _this.scanner.spanFrom$1(start);
      if (!_this._stylesheet0$_isUseAllowed)
        _this.error$2(0, string$.x40forwa, span);
      if (shownMixinsAndFunctions != null) {
        shownVariables.toString;
        t1 = type$.String;
        t2 = A.LinkedHashSet_LinkedHashSet$of(shownMixinsAndFunctions, t1);
        t3 = type$.UnmodifiableSetView_String;
        t1 = A.LinkedHashSet_LinkedHashSet$of(shownVariables, t1);
        t4 = configuration == null ? B.List_empty21 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable_2);
        return new A.ForwardRule0(url, new A.UnmodifiableSetView0(t2, t3), new A.UnmodifiableSetView0(t1, t3), _null, _null, prefix, t4, span);
      } else if (hiddenMixinsAndFunctions != null) {
        hiddenVariables.toString;
        t1 = type$.String;
        t2 = A.LinkedHashSet_LinkedHashSet$of(hiddenMixinsAndFunctions, t1);
        t3 = type$.UnmodifiableSetView_String;
        t1 = A.LinkedHashSet_LinkedHashSet$of(hiddenVariables, t1);
        t4 = configuration == null ? B.List_empty21 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable_2);
        return new A.ForwardRule0(url, _null, _null, new A.UnmodifiableSetView0(t2, t3), new A.UnmodifiableSetView0(t1, t3), prefix, t4, span);
      } else
        return new A.ForwardRule0(url, _null, _null, _null, _null, prefix, configuration == null ? B.List_empty21 : A.List_List$unmodifiable(configuration, type$.ConfiguredVariable_2), span);
    },
    _stylesheet0$_memberList$0() {
      var _this = this,
        t1 = type$.String,
        identifiers = A.LinkedHashSet_LinkedHashSet$_empty(t1),
        variables = A.LinkedHashSet_LinkedHashSet$_empty(t1);
      t1 = _this.scanner;
      do {
        _this.whitespace$0();
        _this.withErrorMessage$2(string$.Expect, new A.StylesheetParser__memberList_closure0(_this, variables, identifiers));
        _this.whitespace$0();
      } while (t1.scanChar$1(44));
      return new A._Record_2(identifiers, variables);
    },
    _stylesheet0$_ifRule$2(start, child) {
      var condition, children, clauses, lastClause, span, _this = this,
        ifIndentation = _this.get$currentIndentation(),
        wasInControlDirective = _this._stylesheet0$_inControlDirective;
      _this._stylesheet0$_inControlDirective = true;
      condition = _this._stylesheet0$_expression$0();
      children = _this.children$1(0, child);
      _this.whitespaceWithoutComments$0();
      clauses = A._setArrayType([A.IfClause$0(condition, children)], type$.JSArray_IfClause_2);
      while (true) {
        if (!_this.scanElse$1(ifIndentation)) {
          lastClause = null;
          break;
        }
        _this.whitespace$0();
        if (_this.scanIdentifier$1("if")) {
          _this.whitespace$0();
          clauses.push(A.IfClause$0(_this._stylesheet0$_expression$0(), _this.children$1(0, child)));
        } else {
          lastClause = A.ElseClause$0(_this.children$1(0, child));
          break;
        }
      }
      _this._stylesheet0$_inControlDirective = wasInControlDirective;
      span = _this.scanner.spanFrom$1(start);
      _this.whitespaceWithoutComments$0();
      return new A.IfRule0(A.List_List$unmodifiable(clauses, type$.IfClause_2), lastClause, span);
    },
    _stylesheet0$_importRule$1(start) {
      var argument, t3, _this = this,
        imports = A._setArrayType([], type$.JSArray_Import_2),
        t1 = _this.scanner,
        t2 = _this.logger;
      do {
        _this.whitespace$0();
        argument = _this.importArgument$0();
        t3 = argument instanceof A.DynamicImport0;
        if (t3)
          A.WarnForDeprecation_warnForDeprecation0(t2, B.Deprecation_import_true_import, string$.Sass__, argument.span, null);
        if ((_this._stylesheet0$_inControlDirective || _this._stylesheet0$_inMixin) && t3)
          _this._stylesheet0$_disallowedAtRule$1(start);
        imports.push(argument);
        _this.whitespace$0();
      } while (t1.scanChar$1(44));
      _this.expectStatementSeparator$1("@import rule");
      t1 = t1.spanFrom$1(start);
      return new A.ImportRule0(A.List_List$unmodifiable(imports, type$.Import_2), t1);
    },
    importArgument$0() {
      var url, urlSpan, innerError, stackTrace, modifiers, t2, exception, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        _0_0 = t1.peekChar$0();
      if (117 === _0_0 || 85 === _0_0) {
        url = _this.dynamicUrl$0();
        _this.whitespace$0();
        modifiers = _this.tryImportModifiers$0();
        return new A.StaticImport0(A.Interpolation$0(A._setArrayType([url], type$.JSArray_Object), t1.spanFrom$1(start)), modifiers, t1.spanFrom$1(start));
      }
      url = _this.string$0();
      urlSpan = t1.spanFrom$1(start);
      _this.whitespace$0();
      modifiers = _this.tryImportModifiers$0();
      if (_this.isPlainImportUrl$1(url) || modifiers != null) {
        t2 = urlSpan;
        return new A.StaticImport0(A.Interpolation$0(A._setArrayType([A.String_String$fromCharCodes(B.NativeUint32List_methods.sublist$2(t2.file._decodedChars, t2._file$_start, t2._end), 0, null)], type$.JSArray_Object), urlSpan), modifiers, t1.spanFrom$1(start));
      } else
        try {
          t1 = _this.parseImportUrl$1(url);
          return new A.DynamicImport0(t1, urlSpan);
        } catch (exception) {
          t1 = A.unwrapException(exception);
          if (type$.FormatException._is(t1)) {
            innerError = t1;
            stackTrace = A.getTraceFromException(exception);
            _this.error$3(0, "Invalid URL: " + J.get$message$x(innerError), urlSpan, stackTrace);
          } else
            throw exception;
        }
    },
    parseImportUrl$1(url) {
      var t1 = $.$get$windows();
      if (t1.style.rootLength$1(url) > 0 && !$.$get$url().style.isRootRelative$1(url))
        return t1.toUri$1(url).toString$0(0);
      A.Uri_parse(url);
      return url;
    },
    isPlainImportUrl$1(url) {
      var _0_0, t1;
      if (url.length < 5)
        return false;
      if (B.JSString_methods.endsWith$1(url, ".css"))
        return true;
      _0_0 = url.charCodeAt(0);
      $label0$0: {
        if (47 === _0_0) {
          t1 = url.charCodeAt(1) === 47;
          break $label0$0;
        }
        if (104 === _0_0) {
          t1 = B.JSString_methods.startsWith$1(url, "http://") || B.JSString_methods.startsWith$1(url, "https://");
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    tryImportModifiers$0() {
      var t1, start, t2, t3, buffer, identifier, t4, $name, query, endPosition, t5, result, _this = this;
      if (!_this._stylesheet0$_lookingAtInterpolatedIdentifier$0() && _this.scanner.peekChar$0() !== 40)
        return null;
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t2 = new A.StringBuffer("");
      t3 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer0(t2, t3);
      for (; true;)
        if (_this._stylesheet0$_lookingAtInterpolatedIdentifier$0()) {
          if (!(t3.length === 0 && t2._contents.length === 0))
            t2._contents += A.Primitives_stringFromCharCode(32);
          identifier = _this.interpolatedIdentifier$0();
          buffer.addInterpolation$1(identifier);
          t4 = identifier.get$asPlain();
          $name = t4 == null ? null : t4.toLowerCase();
          if ($name !== "and" && t1.scanChar$1(40)) {
            if ($name === "supports") {
              query = _this._stylesheet0$_importSupportsQuery$0();
              t4 = !(query instanceof A.SupportsDeclaration0);
              if (t4)
                t2._contents += A.Primitives_stringFromCharCode(40);
              buffer._interpolation_buffer0$_flushText$0();
              t3.push(new A.SupportsExpression0(query));
              if (t4)
                t2._contents += A.Primitives_stringFromCharCode(41);
            } else {
              t2._contents += A.Primitives_stringFromCharCode(40);
              buffer.addInterpolation$1(_this._stylesheet0$_interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(true, true));
              t2._contents += A.Primitives_stringFromCharCode(41);
            }
            t1.expectChar$1(41);
            _this.whitespace$0();
          } else {
            _this.whitespace$0();
            if (t1.scanChar$1(44)) {
              t2._contents += ", ";
              buffer.addInterpolation$1(_this._stylesheet0$_mediaQueryList$0());
              endPosition = t1._string_scanner$_position;
              t4 = t1._sourceFile;
              t5 = start.position;
              t1 = new A._FileSpan(t4, t5, endPosition);
              t1._FileSpan$3(t4, t5, endPosition);
              t5 = type$.Object;
              t4 = A.List_List$of(t3, true, t5);
              t3 = t2._contents;
              if (t3.length !== 0)
                t4.push(t3.charCodeAt(0) == 0 ? t3 : t3);
              result = A.List_List$from(t4, false, t5);
              result.fixed$length = Array;
              result.immutable$list = Array;
              t2 = new A.Interpolation0(result, t1);
              t2.Interpolation$20(t4, t1);
              return t2;
            }
          }
        } else if (t1.peekChar$0() === 40) {
          if (!(t3.length === 0 && t2._contents.length === 0))
            t2._contents += A.Primitives_stringFromCharCode(32);
          buffer.addInterpolation$1(_this._stylesheet0$_mediaQueryList$0());
          endPosition = t1._string_scanner$_position;
          t1 = t1._sourceFile;
          t4 = start.position;
          t5 = new A._FileSpan(t1, t4, endPosition);
          t5._FileSpan$3(t1, t4, endPosition);
          t4 = type$.Object;
          t3 = A.List_List$of(t3, true, t4);
          t1 = t2._contents;
          if (t1.length !== 0)
            t3.push(t1.charCodeAt(0) == 0 ? t1 : t1);
          result = A.List_List$from(t3, false, t4);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t1 = new A.Interpolation0(result, t5);
          t1.Interpolation$20(t3, t5);
          return t1;
        } else {
          endPosition = t1._string_scanner$_position;
          t1 = t1._sourceFile;
          t4 = start.position;
          t5 = new A._FileSpan(t1, t4, endPosition);
          t5._FileSpan$3(t1, t4, endPosition);
          t4 = type$.Object;
          t3 = A.List_List$of(t3, true, t4);
          t1 = t2._contents;
          if (t1.length !== 0)
            t3.push(t1.charCodeAt(0) == 0 ? t1 : t1);
          result = A.List_List$from(t3, false, t4);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t1 = new A.Interpolation0(result, t5);
          t1.Interpolation$20(t3, t5);
          return t1;
        }
    },
    _stylesheet0$_importSupportsQuery$0() {
      var t1, t2, _0_0, $function, $name, _this = this;
      if (_this.scanIdentifier$1("not")) {
        _this.whitespace$0();
        t1 = _this.scanner;
        t2 = t1._string_scanner$_position;
        return new A.SupportsNegation0(_this._stylesheet0$_supportsConditionInParens$0(), t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      } else {
        t1 = _this.scanner;
        if (t1.peekChar$0() === 40)
          return _this._stylesheet0$_supportsCondition$0();
        else {
          _0_0 = _this._stylesheet0$_tryImportSupportsFunction$0();
          if (_0_0 != null) {
            $function = _0_0;
            t2 = true;
          } else {
            $function = null;
            t2 = false;
          }
          if (t2)
            return $function;
          t2 = t1._string_scanner$_position;
          $name = _this._stylesheet0$_expression$0();
          t1.expectChar$1(58);
          return _this._stylesheet0$_supportsDeclarationValue$2($name, new A._SpanScannerState(t1, t2));
        }
      }
    },
    _stylesheet0$_tryImportSupportsFunction$0() {
      var t1, start, $name, value, _this = this;
      if (!_this._stylesheet0$_lookingAtInterpolatedIdentifier$0())
        return null;
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      $name = _this.interpolatedIdentifier$0();
      if (!t1.scanChar$1(40)) {
        t1.set$state(start);
        return null;
      }
      value = _this._stylesheet0$_interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(true, true);
      t1.expectChar$1(41);
      return new A.SupportsFunction0($name, value, t1.spanFrom$1(start));
    },
    _stylesheet0$_includeRule$1(start) {
      var name0, namespace, $arguments, t2, t3, contentArguments, contentArguments_, wasInContentBlock, $content, _this = this, _null = null,
        $name = _this.identifier$0(),
        t1 = _this.scanner;
      if (t1.scanChar$1(46)) {
        name0 = _this._stylesheet0$_publicIdentifier$0();
        namespace = $name;
        $name = name0;
      } else {
        $name = A.stringReplaceAllUnchecked($name, "_", "-");
        namespace = _null;
      }
      _this.whitespace$0();
      if (t1.peekChar$0() === 40)
        $arguments = _this._stylesheet0$_argumentInvocation$1$mixin(true);
      else {
        t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
        t3 = t2.offset;
        $arguments = A.ArgumentInvocation$empty0(A._FileSpan$(t2.file, t3, t3));
      }
      _this.whitespace$0();
      if (_this.scanIdentifier$1("using")) {
        _this.whitespace$0();
        contentArguments = _this._stylesheet0$_argumentDeclaration$0();
        _this.whitespace$0();
      } else
        contentArguments = _null;
      t2 = contentArguments == null;
      if (!t2 || _this.lookingAtChildren$0()) {
        if (t2) {
          t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
          t3 = t2.offset;
          contentArguments_ = new A.ArgumentDeclaration0(B.List_empty22, _null, A._FileSpan$(t2.file, t3, t3));
        } else
          contentArguments_ = contentArguments;
        wasInContentBlock = _this._stylesheet0$_inContentBlock;
        _this._stylesheet0$_inContentBlock = true;
        $content = _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser__includeRule_closure0(contentArguments_));
        _this._stylesheet0$_inContentBlock = wasInContentBlock;
      } else {
        _this.expectStatementSeparator$0();
        $content = _null;
      }
      t1 = t1.spanFrom$2(start, start);
      t2 = $content == null ? $arguments : $content;
      return new A.IncludeRule0(namespace, $name, $arguments, $content, t1.expand$1(0, t2.get$span(t2)));
    },
    mediaRule$1(start) {
      return this._stylesheet0$_withChildren$3(this.get$_stylesheet0$_statement(), start, new A.StylesheetParser_mediaRule_closure0(this._stylesheet0$_mediaQueryList$0()));
    },
    _stylesheet0$_mixinRule$1(start) {
      var $name, t1, $arguments, t2, t3, _this = this,
        precedingComment = _this.lastSilentComment;
      _this.lastSilentComment = null;
      $name = _this.identifier$1$normalize(true);
      _this.whitespace$0();
      t1 = _this.scanner;
      if (t1.peekChar$0() === 40)
        $arguments = _this._stylesheet0$_argumentDeclaration$0();
      else {
        t2 = A.FileLocation$_(t1._sourceFile, t1._string_scanner$_position);
        t3 = t2.offset;
        $arguments = new A.ArgumentDeclaration0(B.List_empty22, null, A._FileSpan$(t2.file, t3, t3));
      }
      if (_this._stylesheet0$_inMixin || _this._stylesheet0$_inContentBlock)
        _this.error$2(0, string$.Mixinscm, t1.spanFrom$1(start));
      else if (_this._stylesheet0$_inControlDirective)
        _this.error$2(0, string$.Mixinsb, t1.spanFrom$1(start));
      _this.whitespace$0();
      _this._stylesheet0$_inMixin = true;
      return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser__mixinRule_closure0(_this, $name, $arguments, precedingComment));
    },
    mozDocumentRule$2(start, $name) {
      var t5, t6, identifier, _0_0, contents, argument, trailing, endPosition, t7, t8, start0, end, _this = this, _box_0 = {},
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        t4 = A._setArrayType([], type$.JSArray_Object),
        buffer = new A.InterpolationBuffer0(t3, t4);
      _box_0.needsDeprecationWarning = false;
      for (t5 = _this.get$whitespace(); true;) {
        if (t1.peekChar$0() === 35) {
          t6 = _this.singleInterpolation$0();
          buffer._interpolation_buffer0$_flushText$0();
          t4.push(t6);
          _box_0.needsDeprecationWarning = true;
        } else {
          t6 = t1._string_scanner$_position;
          identifier = _this.identifier$0();
          $label0$0: {
            if ("url" === identifier || "url-prefix" === identifier || "domain" === identifier) {
              _0_0 = _this._stylesheet0$_tryUrlContents$2$name(new A._SpanScannerState(t1, t6), identifier);
              if (_0_0 != null) {
                contents = _0_0;
                t6 = true;
              } else {
                contents = null;
                t6 = false;
              }
              if (t6)
                buffer.addInterpolation$1(contents);
              else {
                t1.expectChar$1(40);
                _this.whitespace$0();
                argument = _this.interpolatedString$0();
                t1.expectChar$1(41);
                t3._contents += identifier;
                t3._contents += A.Primitives_stringFromCharCode(40);
                buffer.addInterpolation$1(argument.asInterpolation$0());
                t3._contents += A.Primitives_stringFromCharCode(41);
              }
              t6 = t3._contents;
              trailing = t6.charCodeAt(0) == 0 ? t6 : t6;
              if (!B.JSString_methods.endsWith$1(trailing, "url-prefix()") && !B.JSString_methods.endsWith$1(trailing, "url-prefix('')") && !B.JSString_methods.endsWith$1(trailing, 'url-prefix("")'))
                _box_0.needsDeprecationWarning = true;
              break $label0$0;
            }
            if ("regexp" === identifier) {
              t3._contents += "regexp(";
              t1.expectChar$1(40);
              buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
              t1.expectChar$1(41);
              t3._contents += A.Primitives_stringFromCharCode(41);
              _box_0.needsDeprecationWarning = true;
              break $label0$0;
            }
            endPosition = t1._string_scanner$_position;
            t7 = t1._sourceFile;
            t8 = new A._FileSpan(t7, t6, endPosition);
            t8._FileSpan$3(t7, t6, endPosition);
            _this.error$2(0, "Invalid function name.", t8);
          }
        }
        _this.whitespace$0();
        if (!t1.scanChar$1(44))
          break;
        t3._contents += A.Primitives_stringFromCharCode(44);
        start0 = t1._string_scanner$_position;
        t5.call$0();
        end = t1._string_scanner$_position;
        t3._contents += B.JSString_methods.substring$2(t1.string, start0, end);
      }
      return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser_mozDocumentRule_closure0(_box_0, _this, $name, buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)))));
    },
    supportsRule$1(start) {
      var _this = this,
        condition = _this._stylesheet0$_supportsCondition$0();
      _this.whitespace$0();
      return _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser_supportsRule_closure0(condition));
    },
    _stylesheet0$_useNamespace$2(url, start) {
      var namespace, basename, dot, t1, exception, _this = this;
      if (_this.scanIdentifier$1("as")) {
        _this.whitespace$0();
        return _this.scanner.scanChar$1(42) ? null : _this.identifier$0();
      }
      basename = url.get$pathSegments().length === 0 ? "" : B.JSArray_methods.get$last(url.get$pathSegments());
      dot = B.JSString_methods.indexOf$1(basename, ".");
      t1 = B.JSString_methods.startsWith$1(basename, "_") ? 1 : 0;
      namespace = B.JSString_methods.substring$2(basename, t1, dot === -1 ? basename.length : dot);
      try {
        t1 = A.SpanScanner$(namespace, null);
        t1 = new A.Parser1(t1, _this.logger, null)._parser0$_parseIdentifier$0();
        return t1;
      } catch (exception) {
        if (type$.SassFormatException_2._is(A.unwrapException(exception)))
          _this.error$2(0, 'The default namespace "' + A.S(namespace) + string$.x22x20is_n, _this.scanner.spanFrom$1(start));
        else
          throw exception;
      }
    },
    _stylesheet0$_configuration$1$allowGuarded(allowGuarded) {
      var variableNames, configuration, t1, t2, $name, expression, t3, guarded, endPosition, t4, t5, span, _this = this;
      if (!_this.scanIdentifier$1("with"))
        return null;
      variableNames = A.LinkedHashSet_LinkedHashSet$_empty(type$.String);
      configuration = A._setArrayType([], type$.JSArray_ConfiguredVariable_2);
      _this.whitespace$0();
      t1 = _this.scanner;
      t1.expectChar$1(40);
      for (; true;) {
        _this.whitespace$0();
        t2 = t1._string_scanner$_position;
        t1.expectChar$1(36);
        $name = _this.identifier$1$normalize(true);
        _this.whitespace$0();
        t1.expectChar$1(58);
        _this.whitespace$0();
        expression = _this.expressionUntilComma$0();
        t3 = t1._string_scanner$_position;
        if (allowGuarded && t1.scanChar$1(33))
          if (_this.identifier$0() === "default") {
            _this.whitespace$0();
            guarded = true;
          } else {
            endPosition = t1._string_scanner$_position;
            t4 = t1._sourceFile;
            t5 = new A._FileSpan(t4, t3, endPosition);
            t5._FileSpan$3(t4, t3, endPosition);
            _this.error$2(0, "Invalid flag name.", t5);
            guarded = false;
          }
        else
          guarded = false;
        endPosition = t1._string_scanner$_position;
        t3 = t1._sourceFile;
        span = new A._FileSpan(t3, t2, endPosition);
        span._FileSpan$3(t3, t2, endPosition);
        if (variableNames.contains$1(0, $name))
          _this.error$2(0, string$.The_sa, span);
        variableNames.add$1(0, $name);
        configuration.push(new A.ConfiguredVariable0($name, expression, guarded, span));
        if (!t1.scanChar$1(44))
          break;
        _this.whitespace$0();
        if (!_this._stylesheet0$_lookingAtExpression$0())
          break;
      }
      t1.expectChar$1(41);
      return configuration;
    },
    _stylesheet0$_configuration$0() {
      return this._stylesheet0$_configuration$1$allowGuarded(false);
    },
    _stylesheet0$_warnRule$1(start) {
      var value = this._stylesheet0$_expression$0();
      this.expectStatementSeparator$1("@warn rule");
      return new A.WarnRule0(value, this.scanner.spanFrom$1(start));
    },
    _stylesheet0$_whileRule$2(start, child) {
      var _this = this,
        wasInControlDirective = _this._stylesheet0$_inControlDirective;
      _this._stylesheet0$_inControlDirective = true;
      return _this._stylesheet0$_withChildren$3(child, start, new A.StylesheetParser__whileRule_closure0(_this, wasInControlDirective, _this._stylesheet0$_expression$0()));
    },
    unknownAtRule$2(start, $name) {
      var t2, t3, rule, _this = this, t1 = {},
        wasInUnknownAtRule = _this._stylesheet0$_inUnknownAtRule;
      _this._stylesheet0$_inUnknownAtRule = true;
      t1.value = null;
      t2 = _this.scanner;
      t3 = t2.peekChar$0() !== 33 && !_this.atEndOfStatement$0() ? t1.value = _this.almostAnyValue$0() : null;
      if (_this.lookingAtChildren$0())
        rule = _this._stylesheet0$_withChildren$3(_this.get$_stylesheet0$_statement(), start, new A.StylesheetParser_unknownAtRule_closure0(t1, $name));
      else {
        _this.expectStatementSeparator$0();
        rule = A.AtRule$0($name, t2.spanFrom$1(start), null, t3);
      }
      _this._stylesheet0$_inUnknownAtRule = wasInUnknownAtRule;
      return rule;
    },
    _stylesheet0$_disallowedAtRule$1(start) {
      this.almostAnyValue$0();
      this.error$2(0, "This at-rule is not allowed here.", this.scanner.spanFrom$1(start));
    },
    _stylesheet0$_argumentDeclaration$0() {
      var $arguments, named, restArgument, t3, $name, defaultValue, endPosition, t4, t5, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expectChar$1(40);
      _this.whitespace$0();
      $arguments = A._setArrayType([], type$.JSArray_Argument_2);
      named = A.LinkedHashSet_LinkedHashSet$_empty(type$.String);
      while (true) {
        if (!(t1.peekChar$0() === 36)) {
          restArgument = null;
          break;
        }
        t3 = t1._string_scanner$_position;
        t1.expectChar$1(36);
        $name = _this.identifier$1$normalize(true);
        _this.whitespace$0();
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          defaultValue = _this.expressionUntilComma$0();
        } else {
          if (t1.scanChar$1(46)) {
            t1.expectChar$1(46);
            t1.expectChar$1(46);
            _this.whitespace$0();
            restArgument = $name;
            break;
          }
          defaultValue = null;
        }
        endPosition = t1._string_scanner$_position;
        t4 = t1._sourceFile;
        t5 = new A._FileSpan(t4, t3, endPosition);
        t5._FileSpan$3(t4, t3, endPosition);
        $arguments.push(new A.Argument0($name, defaultValue, t5));
        if (!named.add$1(0, $name))
          _this.error$2(0, "Duplicate argument.", B.JSArray_methods.get$last($arguments).span);
        if (!t1.scanChar$1(44)) {
          restArgument = null;
          break;
        }
        _this.whitespace$0();
      }
      t1.expectChar$1(41);
      t1 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      return new A.ArgumentDeclaration0(A.List_List$unmodifiable($arguments, type$.Argument_2), restArgument, t1);
    },
    _stylesheet0$_argumentInvocation$2$allowEmptySecondArg$mixin(allowEmptySecondArg, mixin) {
      var positional, t3, t4, named, keywordRest, t5, rest, expression, t6, t7, result, _this = this, _null = null,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expectChar$1(40);
      _this.whitespace$0();
      positional = A._setArrayType([], type$.JSArray_Expression_2);
      t3 = type$.String;
      t4 = type$.Expression_2;
      named = A.LinkedHashMap_LinkedHashMap$_empty(t3, t4);
      t5 = !mixin;
      rest = _null;
      while (true) {
        if (!_this._stylesheet0$_lookingAtExpression$0()) {
          keywordRest = _null;
          break;
        }
        expression = _this.expressionUntilComma$1$singleEquals(t5);
        _this.whitespace$0();
        if (expression instanceof A.VariableExpression0 && t1.scanChar$1(58)) {
          _this.whitespace$0();
          t6 = expression.name;
          if (named.containsKey$1(t6))
            _this.error$2(0, "Duplicate argument.", expression.span);
          named.$indexSet(0, t6, _this.expressionUntilComma$1$singleEquals(t5));
        } else if (t1.scanChar$1(46)) {
          t1.expectChar$1(46);
          t1.expectChar$1(46);
          if (rest != null) {
            _this.whitespace$0();
            keywordRest = expression;
            break;
          }
          rest = expression;
        } else if (named.__js_helper$_length !== 0)
          _this.error$2(0, string$.Positi, expression.get$span(expression));
        else
          positional.push(expression);
        _this.whitespace$0();
        if (!t1.scanChar$1(44)) {
          keywordRest = _null;
          break;
        }
        _this.whitespace$0();
        if (allowEmptySecondArg && positional.length === 1 && named.__js_helper$_length === 0 && rest == null && t1.peekChar$0() === 41) {
          t5 = t1._sourceFile;
          t6 = t1._string_scanner$_position;
          new A.FileLocation(t5, t6).FileLocation$_$2(t5, t6);
          t7 = new A._FileSpan(t5, t6, t6);
          t7._FileSpan$3(t5, t6, t6);
          t6 = A._setArrayType([""], type$.JSArray_Object);
          result = A.List_List$from(t6, false, type$.Object);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t5 = new A.Interpolation0(result, t7);
          t5.Interpolation$20(t6, t7);
          positional.push(new A.StringExpression0(t5, false));
          keywordRest = _null;
          break;
        }
      }
      t1.expectChar$1(41);
      t1 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      return new A.ArgumentInvocation0(A.List_List$unmodifiable(positional, t4), A.ConstantMap_ConstantMap$from(named, t3, t4), rest, keywordRest, t1);
    },
    _stylesheet0$_argumentInvocation$0() {
      return this._stylesheet0$_argumentInvocation$2$allowEmptySecondArg$mixin(false, false);
    },
    _stylesheet0$_argumentInvocation$1$allowEmptySecondArg(allowEmptySecondArg) {
      return this._stylesheet0$_argumentInvocation$2$allowEmptySecondArg$mixin(allowEmptySecondArg, false);
    },
    _stylesheet0$_argumentInvocation$1$mixin(mixin) {
      return this._stylesheet0$_argumentInvocation$2$allowEmptySecondArg$mixin(false, mixin);
    },
    _stylesheet0$_expression$3$bracketList$singleEquals$until(bracketList, singleEquals, until) {
      var t2, beforeBracket, start, wasInParentheses, resetState, resolveOneOperation, resolveOperations, addSingleExpression, addOperator, resolveSpaceExpressions, t3, _3_0, _3_28, _3_32, _3_40, _1_0, t4, _2_0, commaExpressions, spaceExpressions, singleExpression, _this = this,
        _s20_ = "Expected expression.",
        _box_0 = {},
        t1 = until != null;
      if (t1 && until.call$0())
        _this.scanner.error$1(0, _s20_);
      if (bracketList) {
        t2 = _this.scanner;
        beforeBracket = new A._SpanScannerState(t2, t2._string_scanner$_position);
        t2.expectChar$1(91);
        _this.whitespace$0();
        if (t2.scanChar$1(93)) {
          t1 = A._setArrayType([], type$.JSArray_Expression_2);
          t2 = t2.spanFrom$1(beforeBracket);
          return new A.ListExpression0(A.List_List$unmodifiable(t1, type$.Expression_2), B.ListSeparator_undecided_null_undecided0, true, t2);
        }
      } else
        beforeBracket = null;
      t2 = _this.scanner;
      start = new A._SpanScannerState(t2, t2._string_scanner$_position);
      wasInParentheses = _this._stylesheet0$_inParentheses;
      _box_0.operands_ = _box_0.operators_ = _box_0.spaceExpressions_ = _box_0.commaExpressions_ = null;
      _box_0.allowSlash = true;
      _box_0.singleExpression_ = _this._stylesheet0$_singleExpression$0();
      resetState = new A.StylesheetParser__expression_resetState0(_box_0, _this, start);
      resolveOneOperation = new A.StylesheetParser__expression_resolveOneOperation0(_box_0, _this);
      resolveOperations = new A.StylesheetParser__expression_resolveOperations0(_box_0, resolveOneOperation);
      addSingleExpression = new A.StylesheetParser__expression_addSingleExpression0(_box_0, _this, resetState, resolveOperations);
      addOperator = new A.StylesheetParser__expression_addOperator0(_box_0, _this, resolveOneOperation);
      resolveSpaceExpressions = new A.StylesheetParser__expression_resolveSpaceExpressions0(_box_0, _this, resolveOperations);
      for (t3 = type$.JSArray_Expression_2; true;) {
        _this.whitespace$0();
        if (t1 && until.call$0())
          break;
        _3_0 = t2.peekChar$0();
        _3_28 = A._InitializedCell$(new A.StylesheetParser__expression_closure2(_3_0));
        _3_32 = A._InitializedCell$(new A.StylesheetParser__expression_closure3(_3_0));
        _3_40 = A._InitializedCell$(new A.StylesheetParser__expression_closure4(_3_0));
        if (_3_0 == null)
          break;
        if (40 === _3_0) {
          addSingleExpression.call$1(_this.parentheses$0());
          continue;
        }
        if (91 === _3_0) {
          addSingleExpression.call$1(_this._stylesheet0$_expression$1$bracketList(true));
          continue;
        }
        if (36 === _3_0) {
          addSingleExpression.call$1(_this._stylesheet0$_variable$0());
          continue;
        }
        if (38 === _3_0) {
          addSingleExpression.call$1(_this._stylesheet0$_selector$0());
          continue;
        }
        if (39 === _3_0 || 34 === _3_0) {
          addSingleExpression.call$1(_this.interpolatedString$0());
          continue;
        }
        if (35 === _3_0) {
          addSingleExpression.call$1(_this._stylesheet0$_hashExpression$0());
          continue;
        }
        if (61 === _3_0) {
          t2.readChar$0();
          if (singleEquals && t2.peekChar$0() !== 61)
            addOperator.call$1(B.BinaryOperator_2jN0);
          else {
            t2.expectChar$1(61);
            addOperator.call$1(B.BinaryOperator_ql50);
          }
          continue;
        }
        if (33 === _3_0) {
          $label0$1: {
            _1_0 = t2.peekChar$1(1);
            if (61 === _1_0) {
              t2.readChar$0();
              t2.readChar$0();
              addOperator.call$1(B.BinaryOperator_ViB0);
              break $label0$1;
            }
            if (_1_0 != null)
              if (105 !== _1_0)
                if (73 !== _1_0)
                  t4 = _1_0 === 32 || _1_0 === 9 || _1_0 === 10 || _1_0 === 13 || _1_0 === 12;
                else
                  t4 = true;
              else
                t4 = true;
            else
              t4 = true;
            if (t4) {
              addSingleExpression.call$1(_this._stylesheet0$_importantExpression$0());
              break $label0$1;
            }
            break;
          }
          continue;
        }
        if (60 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(t2.scanChar$1(61) ? B.BinaryOperator_kpg0 : B.BinaryOperator_U8c0);
          continue;
        }
        if (62 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(t2.scanChar$1(61) ? B.BinaryOperator_7Tg0 : B.BinaryOperator_cIH0);
          continue;
        }
        if (42 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_qN20);
          continue;
        }
        if (_3_28._readFinal$0() && _box_0.singleExpression_ == null) {
          addSingleExpression.call$1(_this._stylesheet0$_unaryOperation$0());
          continue;
        }
        if (_3_28._readFinal$0()) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_anB0);
          continue;
        }
        if (45 === _3_0) {
          _2_0 = t2.peekChar$1(1);
          if (A._isInt(_2_0) && _2_0 >= 48 && _2_0 <= 57 || 46 === _2_0)
            if (_box_0.singleExpression_ != null) {
              t4 = t2.peekChar$1(-1);
              t4 = t4 === 32 || t4 === 9 || t4 === 10 || t4 === 13 || t4 === 12;
            } else
              t4 = true;
          else
            t4 = false;
          if (t4)
            addSingleExpression.call$1(_this._stylesheet0$_number$0());
          else if (_this._stylesheet0$_lookingAtInterpolatedIdentifier$0())
            addSingleExpression.call$1(_this.identifierLike$0());
          else if (_box_0.singleExpression_ == null)
            addSingleExpression.call$1(_this._stylesheet0$_unaryOperation$0());
          else {
            t2.readChar$0();
            addOperator.call$1(B.BinaryOperator_olz0);
          }
          continue;
        }
        if (_3_32._readFinal$0() && _box_0.singleExpression_ == null) {
          addSingleExpression.call$1(_this._stylesheet0$_unaryOperation$0());
          continue;
        }
        if (_3_32._readFinal$0()) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_t8B0);
          continue;
        }
        if (37 === _3_0) {
          t2.readChar$0();
          addOperator.call$1(B.BinaryOperator_OTG0);
          continue;
        }
        if (_3_0 >= 48 && _3_0 <= 57) {
          addSingleExpression.call$1(_this._stylesheet0$_number$0());
          continue;
        }
        if (_3_40._readFinal$0() && t2.peekChar$1(1) === 46)
          break;
        if (_3_40._readFinal$0()) {
          addSingleExpression.call$1(_this._stylesheet0$_number$0());
          continue;
        }
        if (97 === _3_0 && !_this.get$plainCss() && _this.scanIdentifier$1("and")) {
          addOperator.call$1(B.BinaryOperator_SNp0);
          continue;
        }
        if (111 === _3_0 && !_this.get$plainCss() && _this.scanIdentifier$1("or")) {
          addOperator.call$1(B.BinaryOperator_M6L0);
          continue;
        }
        if ((117 === _3_0 || 85 === _3_0) && t2.peekChar$1(1) === 43) {
          addSingleExpression.call$1(_this._stylesheet0$_unicodeRange$0());
          continue;
        }
        if (!(_3_0 >= 97 && _3_0 <= 122))
          t4 = _3_0 >= 65 && _3_0 <= 90 || 95 === _3_0 || 92 === _3_0 || _3_0 >= 128;
        else
          t4 = true;
        if (t4) {
          addSingleExpression.call$1(_this.identifierLike$0());
          continue;
        }
        if (44 === _3_0) {
          if (_this._stylesheet0$_inParentheses) {
            _this._stylesheet0$_inParentheses = false;
            if (_box_0.allowSlash) {
              resetState.call$0();
              continue;
            }
          }
          commaExpressions = _box_0.commaExpressions_;
          if (commaExpressions == null)
            commaExpressions = _box_0.commaExpressions_ = A._setArrayType([], t3);
          if (_box_0.singleExpression_ == null)
            t2.error$1(0, _s20_);
          resolveSpaceExpressions.call$0();
          t4 = _box_0.singleExpression_;
          t4.toString;
          commaExpressions.push(t4);
          t2.readChar$0();
          _box_0.allowSlash = true;
          _box_0.singleExpression_ = null;
          continue;
        }
        break;
      }
      if (bracketList)
        t2.expectChar$1(93);
      commaExpressions = _box_0.commaExpressions_;
      spaceExpressions = _box_0.spaceExpressions_;
      if (commaExpressions != null) {
        resolveSpaceExpressions.call$0();
        _this._stylesheet0$_inParentheses = wasInParentheses;
        singleExpression = _box_0.singleExpression_;
        if (singleExpression != null)
          commaExpressions.push(singleExpression);
        t1 = t2.spanFrom$1(beforeBracket == null ? start : beforeBracket);
        return new A.ListExpression0(A.List_List$unmodifiable(commaExpressions, type$.Expression_2), B.ListSeparator_rXA0, bracketList, t1);
      } else if (bracketList && spaceExpressions != null) {
        resolveOperations.call$0();
        t1 = _box_0.singleExpression_;
        t1.toString;
        spaceExpressions.push(t1);
        beforeBracket.toString;
        t2 = t2.spanFrom$1(beforeBracket);
        return new A.ListExpression0(A.List_List$unmodifiable(spaceExpressions, type$.Expression_2), B.ListSeparator_EVt0, true, t2);
      } else {
        resolveSpaceExpressions.call$0();
        if (bracketList) {
          t1 = _box_0.singleExpression_;
          t1.toString;
          t3 = A._setArrayType([t1], t3);
          beforeBracket.toString;
          t2 = t2.spanFrom$1(beforeBracket);
          _box_0.singleExpression_ = new A.ListExpression0(A.List_List$unmodifiable(t3, type$.Expression_2), B.ListSeparator_undecided_null_undecided0, true, t2);
        }
        t1 = _box_0.singleExpression_;
        t1.toString;
        return t1;
      }
    },
    _stylesheet0$_expression$2$singleEquals$until(singleEquals, until) {
      return this._stylesheet0$_expression$3$bracketList$singleEquals$until(false, singleEquals, until);
    },
    _stylesheet0$_expression$1$bracketList(bracketList) {
      return this._stylesheet0$_expression$3$bracketList$singleEquals$until(bracketList, false, null);
    },
    _stylesheet0$_expression$0() {
      return this._stylesheet0$_expression$3$bracketList$singleEquals$until(false, false, null);
    },
    _stylesheet0$_expression$1$until(until) {
      return this._stylesheet0$_expression$3$bracketList$singleEquals$until(false, false, until);
    },
    expressionUntilComma$1$singleEquals(singleEquals) {
      return this._stylesheet0$_expression$2$singleEquals$until(singleEquals, new A.StylesheetParser_expressionUntilComma_closure0(this));
    },
    expressionUntilComma$0() {
      return this.expressionUntilComma$1$singleEquals(false);
    },
    _stylesheet0$_isSlashOperand$1(expression) {
      var t1;
      if (!(expression instanceof A.NumberExpression0))
        if (!(expression instanceof A.FunctionExpression0))
          t1 = expression instanceof A.BinaryOperationExpression0 && expression.allowsSlash;
        else
          t1 = true;
      else
        t1 = true;
      return t1;
    },
    _stylesheet0$_singleExpression$0() {
      var next, t2, _this = this,
        _s20_ = "Expected expression.",
        t1 = _this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (_0_0 == null)
          t1.error$1(0, _s20_);
        if (40 === _0_0) {
          t1 = _this.parentheses$0();
          break $label0$0;
        }
        if (47 === _0_0) {
          t1 = _this._stylesheet0$_unaryOperation$0();
          break $label0$0;
        }
        if (46 === _0_0) {
          t1 = _this._stylesheet0$_number$0();
          break $label0$0;
        }
        if (91 === _0_0) {
          t1 = _this._stylesheet0$_expression$1$bracketList(true);
          break $label0$0;
        }
        if (36 === _0_0) {
          t1 = _this._stylesheet0$_variable$0();
          break $label0$0;
        }
        if (38 === _0_0) {
          t1 = _this._stylesheet0$_selector$0();
          break $label0$0;
        }
        if (39 === _0_0 || 34 === _0_0) {
          t1 = _this.interpolatedString$0();
          break $label0$0;
        }
        if (35 === _0_0) {
          t1 = _this._stylesheet0$_hashExpression$0();
          break $label0$0;
        }
        if (43 === _0_0) {
          next = t1.peekChar$1(1);
          t1 = next != null && next >= 48 && next <= 57 || next === 46 ? _this._stylesheet0$_number$0() : _this._stylesheet0$_unaryOperation$0();
          break $label0$0;
        }
        if (45 === _0_0) {
          t1 = _this._stylesheet0$_minusExpression$0();
          break $label0$0;
        }
        if (33 === _0_0) {
          t1 = _this._stylesheet0$_importantExpression$0();
          break $label0$0;
        }
        if ((117 === _0_0 || 85 === _0_0) && t1.peekChar$1(1) === 43) {
          t1 = _this._stylesheet0$_unicodeRange$0();
          break $label0$0;
        }
        if (_0_0 >= 48 && _0_0 <= 57) {
          t1 = _this._stylesheet0$_number$0();
          break $label0$0;
        }
        if (!(_0_0 >= 97 && _0_0 <= 122))
          t2 = _0_0 >= 65 && _0_0 <= 90 || 95 === _0_0 || 92 === _0_0 || _0_0 >= 128;
        else
          t2 = true;
        if (t2) {
          t1 = _this.identifierLike$0();
          break $label0$0;
        }
        t1 = t1.error$1(0, _s20_);
      }
      return t1;
    },
    parentheses$0() {
      var start, first, expressions, t1, t2, _this = this,
        wasInParentheses = _this._stylesheet0$_inParentheses;
      _this._stylesheet0$_inParentheses = true;
      try {
        t1 = _this.scanner;
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
        t1.expectChar$1(40);
        _this.whitespace$0();
        if (!_this._stylesheet0$_lookingAtExpression$0()) {
          t1.expectChar$1(41);
          t2 = A._setArrayType([], type$.JSArray_Expression_2);
          t1 = t1.spanFrom$1(start);
          t2 = A.List_List$unmodifiable(t2, type$.Expression_2);
          return new A.ListExpression0(t2, B.ListSeparator_undecided_null_undecided0, false, t1);
        }
        first = _this.expressionUntilComma$0();
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          t1 = _this._stylesheet0$_map$2(first, start);
          return t1;
        }
        if (!t1.scanChar$1(44)) {
          t1.expectChar$1(41);
          t1 = t1.spanFrom$1(start);
          return new A.ParenthesizedExpression0(first, t1);
        }
        _this.whitespace$0();
        expressions = A._setArrayType([first], type$.JSArray_Expression_2);
        for (; true;) {
          if (!_this._stylesheet0$_lookingAtExpression$0())
            break;
          J.add$1$ax(expressions, _this.expressionUntilComma$0());
          if (!t1.scanChar$1(44))
            break;
          _this.whitespace$0();
        }
        t1.expectChar$1(41);
        t1 = t1.spanFrom$1(start);
        t2 = A.List_List$unmodifiable(expressions, type$.Expression_2);
        return new A.ListExpression0(t2, B.ListSeparator_rXA0, false, t1);
      } finally {
        _this._stylesheet0$_inParentheses = wasInParentheses;
      }
    },
    _stylesheet0$_map$2(first, start) {
      var t1, key, _this = this,
        pairs = A._setArrayType([new A._Record_2(first, _this.expressionUntilComma$0())], type$.JSArray_Record_2_Expression_and_Expression_2);
      for (t1 = _this.scanner; t1.scanChar$1(44);) {
        _this.whitespace$0();
        if (!_this._stylesheet0$_lookingAtExpression$0())
          break;
        key = _this.expressionUntilComma$0();
        t1.expectChar$1(58);
        _this.whitespace$0();
        pairs.push(new A._Record_2(key, _this.expressionUntilComma$0()));
      }
      t1.expectChar$1(41);
      t1 = t1.spanFrom$1(start);
      return new A.MapExpression0(A.List_List$unmodifiable(pairs, type$.Record_2_Expression_and_Expression_2), t1);
    },
    _stylesheet0$_hashExpression$0() {
      var start, t2, identifier, buffer, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$1(1) === 123)
        return _this.identifierLike$0();
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(35);
      t2 = t1.peekChar$0();
      if (t2 == null)
        t2 = null;
      else
        t2 = t2 >= 48 && t2 <= 57;
      if (t2 === true)
        return new A.ColorExpression0(_this._stylesheet0$_hexColorContents$1(start), t1.spanFrom$1(start));
      t2 = t1._string_scanner$_position;
      identifier = _this.interpolatedIdentifier$0();
      if (_this._stylesheet0$_isHexColor$1(identifier)) {
        t1.set$state(new A._SpanScannerState(t1, t2));
        return new A.ColorExpression0(_this._stylesheet0$_hexColorContents$1(start), t1.spanFrom$1(start));
      }
      t2 = new A.StringBuffer("");
      buffer = new A.InterpolationBuffer0(t2, A._setArrayType([], type$.JSArray_Object));
      t2._contents += A.Primitives_stringFromCharCode(35);
      buffer.addInterpolation$1(identifier);
      return new A.StringExpression0(buffer.interpolation$1(t1.spanFrom$1(start)), false);
    },
    _stylesheet0$_hexColorContents$1(start) {
      var red, green, blue, alpha, digit4, t2, t3, t4, _this = this,
        digit1 = _this._stylesheet0$_hexDigit$0(),
        digit2 = _this._stylesheet0$_hexDigit$0(),
        digit3 = _this._stylesheet0$_hexDigit$0(),
        t1 = _this.scanner,
        $self = t1.peekChar$0();
      if (!($self != null && A.CharacterExtension_get_isHex0($self))) {
        red = (digit1 << 4 >>> 0) + digit1;
        green = (digit2 << 4 >>> 0) + digit2;
        blue = (digit3 << 4 >>> 0) + digit3;
        alpha = null;
      } else {
        digit4 = _this._stylesheet0$_hexDigit$0();
        $self = t1.peekChar$0();
        t2 = $self != null && A.CharacterExtension_get_isHex0($self);
        t3 = digit1 << 4 >>> 0;
        t4 = digit3 << 4 >>> 0;
        if (!t2) {
          red = t3 + digit1;
          green = (digit2 << 4 >>> 0) + digit2;
          blue = t4 + digit3;
          alpha = ((digit4 << 4 >>> 0) + digit4) / 255;
        } else {
          red = t3 + digit2;
          green = t4 + digit4;
          blue = (_this._stylesheet0$_hexDigit$0() << 4 >>> 0) + _this._stylesheet0$_hexDigit$0();
          $self = t1.peekChar$0();
          alpha = $self != null && A.CharacterExtension_get_isHex0($self) ? ((_this._stylesheet0$_hexDigit$0() << 4 >>> 0) + _this._stylesheet0$_hexDigit$0()) / 255 : null;
        }
      }
      t2 = alpha == null;
      t3 = t2 ? 1 : alpha;
      return A.SassColor$rgbInternal0(red, green, blue, t3, t2 ? new A.SpanColorFormat0(t1.spanFrom$1(start)) : null);
    },
    _stylesheet0$_isHexColor$1(interpolation) {
      var t1,
        plain = interpolation.get$asPlain(),
        _0_2 = A._InitializedCell$(new A.StylesheetParser__isHexColor_closure1(plain));
      if (typeof plain == "string")
        t1 = 3 === _0_2._readFinal$0() || 4 === _0_2._readFinal$0() || 6 === _0_2._readFinal$0() || 8 === _0_2._readFinal$0();
      else
        t1 = false;
      if (t1) {
        t1 = new A.CodeUnits(plain);
        return t1.every$1(t1, new A.StylesheetParser__isHexColor_closure2());
      } else
        return false;
    },
    _stylesheet0$_hexDigit$0() {
      var t1 = this.scanner,
        t2 = t1.peekChar$0();
      t2 = t2 == null ? null : A.CharacterExtension_get_isHex0(t2);
      return t2 === true ? A.asHex0(t1.readChar$0()) : t1.error$1(0, "Expected hex digit.");
    },
    _stylesheet0$_minusExpression$0() {
      var _this = this,
        _0_0 = _this.scanner.peekChar$1(1);
      if (A._isInt(_0_0) && _0_0 >= 48 && _0_0 <= 57 || 46 === _0_0)
        return _this._stylesheet0$_number$0();
      if (_this._stylesheet0$_lookingAtInterpolatedIdentifier$0())
        return _this.identifierLike$0();
      return _this._stylesheet0$_unaryOperation$0();
    },
    _stylesheet0$_importantExpression$0() {
      var t1 = this.scanner,
        t2 = t1._string_scanner$_position;
      t1.readChar$0();
      this.whitespace$0();
      this.expectIdentifier$1("important");
      t2 = t1.spanFrom$1(new A._SpanScannerState(t1, t2));
      return new A.StringExpression0(A.Interpolation$0(A._setArrayType(["!important"], type$.JSArray_Object), t2), false);
    },
    _stylesheet0$_unaryOperation$0() {
      var _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        operator = _this._stylesheet0$_unaryOperatorFor$1(t1.readChar$0());
      if (operator == null)
        t1.error$2$position(0, "Expected unary operator.", t1._string_scanner$_position - 1);
      else if (_this.get$plainCss() && operator !== B.UnaryOperator_Ix10)
        t1.error$3$length$position(0, "Operators aren't allowed in plain CSS.", 1, t1._string_scanner$_position - 1);
      _this.whitespace$0();
      return new A.UnaryOperationExpression0(operator, _this._stylesheet0$_singleExpression$0(), t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _stylesheet0$_unaryOperatorFor$1(character) {
      var t1;
      $label0$0: {
        if (43 === character) {
          t1 = B.UnaryOperator_gg40;
          break $label0$0;
        }
        if (45 === character) {
          t1 = B.UnaryOperator_TLI0;
          break $label0$0;
        }
        if (47 === character) {
          t1 = B.UnaryOperator_Ix10;
          break $label0$0;
        }
        t1 = null;
        break $label0$0;
      }
      return t1;
    },
    _stylesheet0$_number$0() {
      var number, unit, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        first = t1.peekChar$0(),
        t3 = first !== 43;
      if (!t3 || first === 45)
        t1.readChar$0();
      if (t1.peekChar$0() !== 46)
        _this._stylesheet0$_consumeNaturalNumber$0();
      _this._stylesheet0$_tryDecimal$1$allowTrailingDot(t1._string_scanner$_position !== t2 && t3 && first !== 45);
      _this._stylesheet0$_tryExponent$0();
      number = A.double_parse(t1.substring$1(0, t2));
      if (t1.scanChar$1(37))
        unit = "%";
      else {
        if (_this.lookingAtIdentifier$0())
          t3 = t1.peekChar$0() !== 45 || t1.peekChar$1(1) !== 45;
        else
          t3 = false;
        unit = t3 ? _this.identifier$1$unit(true) : null;
      }
      return new A.NumberExpression0(number, unit, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _stylesheet0$_consumeNaturalNumber$0() {
      var $self,
        t1 = this.scanner,
        t2 = t1.readChar$0();
      if (!(t2 >= 48 && t2 <= 57))
        t1.error$2$position(0, "Expected digit.", t1._string_scanner$_position - 1);
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t1.readChar$0();
      }
    },
    _stylesheet0$_tryDecimal$1$allowTrailingDot(allowTrailingDot) {
      var $self,
        t1 = this.scanner;
      if (t1.peekChar$0() !== 46)
        return;
      $self = t1.peekChar$1(1);
      if (!($self != null && $self >= 48 && $self <= 57)) {
        if (allowTrailingDot)
          return;
        t1.error$2$position(0, "Expected digit.", t1._string_scanner$_position + 1);
      }
      t1.readChar$0();
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t1.readChar$0();
      }
    },
    _stylesheet0$_tryExponent$0() {
      var next, $self,
        t1 = this.scanner,
        first = t1.peekChar$0();
      if (first !== 101 && first !== 69)
        return;
      next = t1.peekChar$1(1);
      if (!(next != null && next >= 48 && next <= 57) && next !== 45 && next !== 43)
        return;
      t1.readChar$0();
      if (43 === next || 45 === next)
        t1.readChar$0();
      $self = t1.peekChar$0();
      if (!($self != null && $self >= 48 && $self <= 57))
        t1.error$1(0, "Expected digit.");
      while (true) {
        $self = t1.peekChar$0();
        if (!($self != null && $self >= 48 && $self <= 57))
          break;
        t1.readChar$0();
      }
    },
    _stylesheet0$_unicodeRange$0() {
      var firstRangeLength, hasQuestionMark, t2, secondRangeLength, _this = this,
        _s26_ = "Expected at most 6 digits.",
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _this.expectIdentChar$1(117);
      t1.expectChar$1(43);
      for (firstRangeLength = 0; _this.scanCharIf$1(new A.StylesheetParser__unicodeRange_closure1());)
        ++firstRangeLength;
      for (hasQuestionMark = false; t1.scanChar$1(63); hasQuestionMark = true)
        ++firstRangeLength;
      if (firstRangeLength === 0)
        t1.error$1(0, 'Expected hex digit or "?".');
      else if (firstRangeLength > 6)
        _this.error$2(0, _s26_, t1.spanFrom$1(start));
      else if (hasQuestionMark) {
        t2 = t1.substring$1(0, start.position);
        t1 = t1.spanFrom$1(start);
        return new A.StringExpression0(A.Interpolation$0(A._setArrayType([t2], type$.JSArray_Object), t1), false);
      }
      if (t1.scanChar$1(45)) {
        t2 = t1._string_scanner$_position;
        for (secondRangeLength = 0; _this.scanCharIf$1(new A.StylesheetParser__unicodeRange_closure2());)
          ++secondRangeLength;
        if (secondRangeLength === 0)
          t1.error$1(0, "Expected hex digit.");
        else if (secondRangeLength > 6)
          _this.error$2(0, _s26_, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      }
      if (_this._stylesheet0$_lookingAtInterpolatedIdentifierBody$0())
        t1.error$1(0, "Expected end of identifier.");
      t2 = t1.substring$1(0, start.position);
      t1 = t1.spanFrom$1(start);
      return new A.StringExpression0(A.Interpolation$0(A._setArrayType([t2], type$.JSArray_Object), t1), false);
    },
    _stylesheet0$_variable$0() {
      var _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        $name = _this.variableName$0();
      if (_this.get$plainCss())
        _this.error$2(0, string$.Sass_v, t1.spanFrom$1(start));
      return new A.VariableExpression0(null, $name, t1.spanFrom$1(start));
    },
    _stylesheet0$_selector$0() {
      var t1, start, _this = this;
      if (_this.get$plainCss())
        _this.scanner.error$2$length(0, string$.The_pa, 1);
      t1 = _this.scanner;
      start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      t1.expectChar$1(38);
      if (t1.scanChar$1(38)) {
        _this.logger.warn$2$span(0, string$.In_Sas, t1.spanFrom$1(start));
        t1.set$position(t1._string_scanner$_position - 1);
      }
      return new A.SelectorExpression0(t1.spanFrom$1(start));
    },
    interpolatedString$0() {
      var t3, t4, buffer, _0_0, second, t5,
        t1 = this.scanner,
        t2 = t1._string_scanner$_position,
        quote = t1.readChar$0();
      if (quote !== 39 && quote !== 34)
        t1.error$2$position(0, "Expected string.", t2);
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer0(t3, t4);
      for (; true;) {
        _0_0 = t1.peekChar$0();
        if (_0_0 === quote) {
          t1.readChar$0();
          break;
        }
        if (_0_0 == null || _0_0 === 10 || _0_0 === 13 || _0_0 === 12)
          t1.error$1(0, "Expected " + A.Primitives_stringFromCharCode(quote) + ".");
        if (92 === _0_0) {
          second = t1.peekChar$1(1);
          if (second === 10 || second === 13 || second === 12) {
            t1.readChar$0();
            t1.readChar$0();
            if (second === 13)
              t1.scanChar$1(10);
          } else
            t3._contents += A.Primitives_stringFromCharCode(A.consumeEscapedCharacter0(t1));
          continue;
        }
        if (35 === _0_0 && t1.peekChar$1(1) === 123) {
          t5 = this.singleInterpolation$0();
          buffer._interpolation_buffer0$_flushText$0();
          t4.push(t5);
          continue;
        }
        t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
      }
      return new A.StringExpression0(buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2))), true);
    },
    identifierLike$0() {
      var invocation, expression, _0_0, color, t3, _1_0, specialFunction, _2_0, _2_2, _2_4, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        identifier = _this.interpolatedIdentifier$0(),
        plain = identifier.get$asPlain(),
        lower = A._Cell$(),
        t2 = plain != null;
      if (t2) {
        if (plain === "if" && t1.peekChar$0() === 40) {
          invocation = _this._stylesheet0$_argumentInvocation$0();
          return new A.IfExpression0(invocation, identifier.span.expand$1(0, invocation.span));
        } else if (plain === "not") {
          _this.whitespace$0();
          expression = _this._stylesheet0$_singleExpression$0();
          return new A.UnaryOperationExpression0(B.UnaryOperator_not_not_not0, expression, identifier.span.expand$1(0, expression.get$span(expression)));
        }
        lower._value = plain.toLowerCase();
        if (t1.peekChar$0() !== 40) {
          switch (plain) {
            case "false":
              return new A.BooleanExpression0(false, identifier.span);
            case "null":
              return new A.NullExpression0(identifier.span);
            case "true":
              return new A.BooleanExpression0(true, identifier.span);
          }
          _0_0 = $.$get$colorsByName0().$index(0, lower._readLocal$0());
          if (_0_0 != null) {
            color = _0_0;
            t3 = true;
          } else {
            color = null;
            t3 = false;
          }
          if (t3) {
            t1 = identifier.span;
            return new A.ColorExpression0(A.SassColor$rgbInternal0(color.get$red(color), color.get$green(color), color.get$blue(color), color._color1$_alpha, new A.SpanColorFormat0(t1)), t1);
          }
        }
        _1_0 = _this.trySpecialFunction$2(lower._readLocal$0(), start);
        if (_1_0 != null) {
          specialFunction = _1_0;
          t3 = true;
        } else {
          specialFunction = null;
          t3 = false;
        }
        if (t3)
          return specialFunction;
      }
      _2_0 = t1.peekChar$0();
      _2_2 = A._InitializedCell$(new A.StylesheetParser_identifierLike_closure1(_2_0));
      _2_4 = A._InitializedCell$(new A.StylesheetParser_identifierLike_closure2(_2_0));
      if (_2_2._readFinal$0() && t1.peekChar$1(1) === 46)
        return new A.StringExpression0(identifier, false);
      if (_2_2._readFinal$0()) {
        t1.readChar$0();
        if (t2)
          return _this.namespacedExpression$2(plain, start);
        _this.error$2(0, string$.Interpn, identifier.span);
      }
      if (_2_4._readFinal$0() && t2)
        return new A.FunctionExpression0(null, plain, _this._stylesheet0$_argumentInvocation$1$allowEmptySecondArg(J.$eq$(lower._readLocal$0(), "var")), t1.spanFrom$1(start));
      if (_2_4._readFinal$0())
        return new A.InterpolatedFunctionExpression0(identifier, _this._stylesheet0$_argumentInvocation$0(), t1.spanFrom$1(start));
      return new A.StringExpression0(identifier, false);
    },
    namespacedExpression$2(namespace, start) {
      var $name, _this = this,
        t1 = _this.scanner;
      if (t1.peekChar$0() === 36) {
        $name = _this.variableName$0();
        _this._stylesheet0$_assertPublic$2($name, new A.StylesheetParser_namespacedExpression_closure0(_this, start));
        return new A.VariableExpression0(namespace, $name, t1.spanFrom$1(start));
      }
      return new A.FunctionExpression0(namespace, _this._stylesheet0$_publicIdentifier$0(), _this._stylesheet0$_argumentInvocation$0(), t1.spanFrom$1(start));
    },
    trySpecialFunction$2($name, start) {
      var t1, buffer, t2, next, t3, _this = this,
        normalized = A.unvendor0($name);
      $label0$0: {
        if (!("calc" === normalized && normalized !== $name && _this.scanner.scanChar$1(40)))
          t1 = ("element" === normalized || "expression" === normalized) && _this.scanner.scanChar$1(40);
        else
          t1 = true;
        if (t1) {
          t1 = new A.StringBuffer("");
          buffer = new A.InterpolationBuffer0(t1, A._setArrayType([], type$.JSArray_Object));
          t1._contents = "" + $name;
          t1._contents += A.Primitives_stringFromCharCode(40);
          break $label0$0;
        }
        if ("progid" === normalized && _this.scanner.scanChar$1(58)) {
          t1 = new A.StringBuffer("");
          buffer = new A.InterpolationBuffer0(t1, A._setArrayType([], type$.JSArray_Object));
          t1._contents = "" + $name;
          t1._contents += A.Primitives_stringFromCharCode(58);
          t2 = _this.scanner;
          next = t2.peekChar$0();
          while (true) {
            if (next != null) {
              if (!(next >= 97 && next <= 122))
                t3 = next >= 65 && next <= 90;
              else
                t3 = true;
              t3 = t3 || next === 46;
            } else
              t3 = false;
            if (!t3)
              break;
            t1._contents += A.Primitives_stringFromCharCode(t2.readChar$0());
            next = t2.peekChar$0();
          }
          t2.expectChar$1(40);
          t1._contents += A.Primitives_stringFromCharCode(40);
          break $label0$0;
        }
        if ("url" === normalized)
          return A.NullableExtension_andThen0(_this._stylesheet0$_tryUrlContents$1(start), new A.StylesheetParser_trySpecialFunction_closure0());
        return null;
      }
      buffer.addInterpolation$1(_this._stylesheet0$_interpolatedDeclarationValue$1$allowEmpty(true));
      t1 = _this.scanner;
      t1.expectChar$1(41);
      buffer._interpolation_buffer0$_text._contents += A.Primitives_stringFromCharCode(41);
      return new A.StringExpression0(buffer.interpolation$1(t1.spanFrom$1(start)), false);
    },
    _stylesheet0$_tryUrlContents$2$name(start, $name) {
      var t3, t4, buffer, _0_0, _0_6, t5, endPosition, result, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      if (!t1.scanChar$1(40))
        return null;
      _this.whitespaceWithoutComments$0();
      t3 = new A.StringBuffer("");
      t4 = A._setArrayType([], type$.JSArray_Object);
      buffer = new A.InterpolationBuffer0(t3, t4);
      t3._contents = "" + ($name == null ? "url" : $name);
      t3._contents += A.Primitives_stringFromCharCode(40);
      for (; true;) {
        _0_0 = t1.peekChar$0();
        _0_6 = A._InitializedCell$(new A.StylesheetParser__tryUrlContents_closure0(_0_0));
        if (_0_0 == null)
          break;
        if (92 === _0_0) {
          t3._contents += _this.escape$0();
          continue;
        }
        if (_0_6._readFinal$0() && t1.peekChar$1(1) === 123) {
          t5 = _this.singleInterpolation$0();
          buffer._interpolation_buffer0$_flushText$0();
          t4.push(t5);
          continue;
        }
        if (33 !== _0_0)
          if (37 !== _0_0)
            if (38 !== _0_0)
              if (!_0_6._readFinal$0())
                t5 = _0_0 >= 42 && _0_0 <= 126 || _0_0 >= 128;
              else
                t5 = true;
            else
              t5 = true;
          else
            t5 = true;
        else
          t5 = true;
        if (t5) {
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          continue;
        }
        if (_0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12) {
          _this.whitespaceWithoutComments$0();
          if (t1.peekChar$0() !== 41)
            break;
          continue;
        }
        if (41 === _0_0) {
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          endPosition = t1._string_scanner$_position;
          t2 = t1._sourceFile;
          t5 = start.position;
          t1 = new A._FileSpan(t2, t5, endPosition);
          t1._FileSpan$3(t2, t5, endPosition);
          t5 = type$.Object;
          t2 = A.List_List$of(t4, true, t5);
          t4 = t3._contents;
          if (t4.length !== 0)
            t2.push(t4.charCodeAt(0) == 0 ? t4 : t4);
          result = A.List_List$from(t2, false, t5);
          result.fixed$length = Array;
          result.immutable$list = Array;
          t3 = new A.Interpolation0(result, t1);
          t3.Interpolation$20(t2, t1);
          return t3;
        }
        break;
      }
      t1.set$state(new A._SpanScannerState(t1, t2));
      return null;
    },
    _stylesheet0$_tryUrlContents$1(start) {
      return this._stylesheet0$_tryUrlContents$2$name(start, null);
    },
    dynamicUrl$0() {
      var _0_0, contents, t2, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _this.expectIdentifier$1("url");
      _0_0 = _this._stylesheet0$_tryUrlContents$1(start);
      if (_0_0 != null) {
        contents = _0_0;
        t2 = true;
      } else {
        contents = null;
        t2 = false;
      }
      if (t2)
        return new A.StringExpression0(contents, false);
      return new A.InterpolatedFunctionExpression0(A.Interpolation$0(A._setArrayType(["url"], type$.JSArray_Object), t1.spanFrom$1(start)), _this._stylesheet0$_argumentInvocation$0(), t1.spanFrom$1(start));
    },
    almostAnyValue$1$omitComments(omitComments) {
      var t4, t5, t6, _1_0, commentStart, end, t7, _0_0, contents, t8, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer0(t3, A._setArrayType([], type$.JSArray_Object));
      for (t4 = t1.string, t5 = t4.length, t6 = !omitComments; true;)
        $label0$0: {
          _1_0 = t1.peekChar$0();
          if (92 === _1_0) {
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if (34 === _1_0 || 39 === _1_0) {
            buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
            break $label0$0;
          }
          if (47 === _1_0) {
            commentStart = t1._string_scanner$_position;
            if (_this.scanComment$0()) {
              if (t6) {
                end = t1._string_scanner$_position;
                t3._contents += B.JSString_methods.substring$2(t4, commentStart, end);
              }
            } else
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if (35 === _1_0 && t1.peekChar$1(1) === 123) {
            buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
            break $label0$0;
          }
          if (13 === _1_0 || 10 === _1_0 || 12 === _1_0) {
            if (_this.get$indented())
              break;
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if (33 === _1_0 || 59 === _1_0 || 123 === _1_0 || 125 === _1_0)
            break;
          if (117 === _1_0 || 85 === _1_0) {
            t7 = t1._string_scanner$_position;
            if (!_this.scanIdentifier$1("url")) {
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              continue;
            }
            _0_0 = _this._stylesheet0$_tryUrlContents$1(new A._SpanScannerState(t1, t7));
            if (_0_0 != null) {
              contents = _0_0;
              t8 = true;
            } else {
              contents = null;
              t8 = false;
            }
            if (t8)
              buffer.addInterpolation$1(contents);
            else {
              if ((t7 === 0 ? 1 / t7 < 0 : t7 < 0) || t7 > t5)
                A.throwExpression(A.ArgumentError$("Invalid position " + t7, null));
              t1._string_scanner$_position = t7;
              t1._lastMatch = null;
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            }
            break $label0$0;
          }
          if (_1_0 == null)
            break;
          t7 = _this.lookingAtIdentifier$0();
          if (t7) {
            t3._contents += _this.identifier$0();
            break $label0$0;
          }
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
        }
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    almostAnyValue$0() {
      return this.almostAnyValue$1$omitComments(false);
    },
    _stylesheet0$_interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(allowColon, allowEmpty, allowSemicolon) {
      var t4, t5, t6, t7, wroteNewline, _1_0, _1_12, _1_14, _1_16, _1_18, _1_20, t8, start, end, bracket, _0_0, contents, t9, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer0(t3, A._setArrayType([], type$.JSArray_Object)),
        brackets = A._setArrayType([], type$.JSArray_int);
      for (t4 = t1.string, t5 = t4.length, t6 = !allowColon, t7 = !allowSemicolon, wroteNewline = false; true;)
        $label0$0: {
          _1_0 = t1.peekChar$0();
          _1_12 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure4(_1_0));
          _1_14 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure5(_1_0));
          _1_16 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure6(_1_0));
          _1_18 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure7(_1_0));
          _1_20 = A._InitializedCell$(new A.StylesheetParser__interpolatedDeclarationValue_closure8(_1_0));
          if (92 === _1_0) {
            t3._contents += _this.escape$1$identifierStart(true);
            wroteNewline = false;
            break $label0$0;
          }
          if (34 === _1_0 || 39 === _1_0) {
            buffer.addInterpolation$1(_this.interpolatedString$0().asInterpolation$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (47 === _1_0 && t1.peekChar$1(1) === 42) {
            t8 = _this.get$loudComment();
            start = t1._string_scanner$_position;
            t8.call$0();
            end = t1._string_scanner$_position;
            t3._contents += B.JSString_methods.substring$2(t4, start, end);
            wroteNewline = false;
            break $label0$0;
          }
          if (35 === _1_0 && t1.peekChar$1(1) === 123) {
            buffer.addInterpolation$1(_this.interpolatedIdentifier$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (_1_12._readFinal$0() || _1_14._readFinal$0())
            if (!wroteNewline) {
              t8 = t1.peekChar$1(1);
              t8 = t8 === 32 || t8 === 9 || t8 === 10 || t8 === 13 || t8 === 12;
            } else
              t8 = false;
          else
            t8 = false;
          if (t8) {
            t1.readChar$0();
            break $label0$0;
          }
          if (_1_12._readFinal$0() || _1_14._readFinal$0()) {
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            break $label0$0;
          }
          if ((_1_16._readFinal$0() || _1_18._readFinal$0() || _1_20._readFinal$0()) && _this.get$indented())
            break;
          if (_1_16._readFinal$0() || _1_18._readFinal$0() || _1_20._readFinal$0()) {
            t8 = t1.peekChar$1(-1);
            if (!(t8 === 10 || t8 === 13 || t8 === 12))
              t3._contents += "\n";
            t1.readChar$0();
            wroteNewline = true;
            break $label0$0;
          }
          if (40 === _1_0 || 123 === _1_0 || 91 === _1_0) {
            bracket = t1.readChar$0();
            t3._contents += A.Primitives_stringFromCharCode(bracket);
            brackets.push(A.opposite0(bracket));
            wroteNewline = false;
            break $label0$0;
          }
          if (41 === _1_0 || 125 === _1_0 || 93 === _1_0) {
            if (brackets.length === 0)
              break;
            bracket = brackets.pop();
            t1.expectChar$1(bracket);
            t3._contents += A.Primitives_stringFromCharCode(bracket);
            wroteNewline = false;
            break $label0$0;
          }
          if (59 === _1_0) {
            if (t7 && brackets.length === 0)
              break;
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (58 === _1_0) {
            if (t6 && brackets.length === 0)
              break;
            t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            wroteNewline = false;
            break $label0$0;
          }
          if (117 === _1_0 || 85 === _1_0) {
            t8 = t1._string_scanner$_position;
            if (!_this.scanIdentifier$1("url")) {
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
              wroteNewline = false;
              continue;
            }
            _0_0 = _this._stylesheet0$_tryUrlContents$1(new A._SpanScannerState(t1, t8));
            if (_0_0 != null) {
              contents = _0_0;
              t9 = true;
            } else {
              contents = null;
              t9 = false;
            }
            if (t9)
              buffer.addInterpolation$1(contents);
            else {
              if ((t8 === 0 ? 1 / t8 < 0 : t8 < 0) || t8 > t5)
                A.throwExpression(A.ArgumentError$("Invalid position " + t8, null));
              t1._string_scanner$_position = t8;
              t1._lastMatch = null;
              t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            }
            wroteNewline = false;
            break $label0$0;
          }
          if (_1_0 == null)
            break;
          t8 = _this.lookingAtIdentifier$0();
          if (t8) {
            t3._contents += _this.identifier$0();
            wroteNewline = false;
            break $label0$0;
          }
          t3._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          wroteNewline = false;
        }
      if (brackets.length !== 0)
        t1.expectChar$1(B.JSArray_methods.get$last(brackets));
      if (!allowEmpty && buffer._interpolation_buffer0$_contents.length === 0 && t3._contents.length === 0)
        t1.error$1(0, "Expected token.");
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _stylesheet0$_interpolatedDeclarationValue$1$allowEmpty(allowEmpty) {
      return this._stylesheet0$_interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(true, allowEmpty, false);
    },
    _stylesheet0$_interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(allowEmpty, allowSemicolon) {
      return this._stylesheet0$_interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(true, allowEmpty, allowSemicolon);
    },
    _stylesheet0$_interpolatedDeclarationValue$0() {
      return this._stylesheet0$_interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(true, false, false);
    },
    interpolatedIdentifier$0() {
      var _0_0, _this = this,
        _s20_ = "Expected identifier.",
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        t2 = new A.StringBuffer(""),
        t3 = A._setArrayType([], type$.JSArray_Object),
        buffer = new A.InterpolationBuffer0(t2, t3);
      if (t1.scanChar$1(45)) {
        t2._contents += A.Primitives_stringFromCharCode(45);
        if (t1.scanChar$1(45)) {
          t2._contents += A.Primitives_stringFromCharCode(45);
          _this._stylesheet0$_interpolatedIdentifierBody$1(buffer);
          return buffer.interpolation$1(t1.spanFrom$1(start));
        }
      }
      $label0$0: {
        _0_0 = t1.peekChar$0();
        if (_0_0 == null)
          t1.error$1(0, _s20_);
        if (_0_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_0_0) || _0_0 >= 128) {
          t2._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
          break $label0$0;
        }
        if (92 === _0_0) {
          t2._contents += _this.escape$1$identifierStart(true);
          break $label0$0;
        }
        if (35 === _0_0 && t1.peekChar$1(1) === 123) {
          t2 = _this.singleInterpolation$0();
          buffer._interpolation_buffer0$_flushText$0();
          t3.push(t2);
          break $label0$0;
        }
        t1.error$1(0, _s20_);
      }
      _this._stylesheet0$_interpolatedIdentifierBody$1(buffer);
      return buffer.interpolation$1(t1.spanFrom$1(start));
    },
    _stylesheet0$_interpolatedIdentifierBody$1(buffer) {
      var t1, t2, t3, _0_0, t4;
      for (t1 = buffer._interpolation_buffer0$_contents, t2 = this.scanner, t3 = buffer._interpolation_buffer0$_text; true;) {
        _0_0 = t2.peekChar$0();
        if (_0_0 == null)
          break;
        if (95 !== _0_0)
          if (45 !== _0_0) {
            if (!(_0_0 >= 97 && _0_0 <= 122))
              t4 = _0_0 >= 65 && _0_0 <= 90;
            else
              t4 = true;
            if (!t4)
              t4 = _0_0 >= 48 && _0_0 <= 57;
            else
              t4 = true;
            t4 = t4 || _0_0 >= 128;
          } else
            t4 = true;
        else
          t4 = true;
        if (t4) {
          t3._contents += A.Primitives_stringFromCharCode(t2.readChar$0());
          continue;
        }
        if (92 === _0_0) {
          t3._contents += this.escape$0();
          continue;
        }
        if (35 === _0_0 && t2.peekChar$1(1) === 123) {
          t4 = this.singleInterpolation$0();
          buffer._interpolation_buffer0$_flushText$0();
          t1.push(t4);
          continue;
        }
        break;
      }
    },
    singleInterpolation$0() {
      var contents, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      t1.expect$1("#{");
      _this.whitespace$0();
      contents = _this._stylesheet0$_expression$0();
      t1.expectChar$1(125);
      if (_this.get$plainCss())
        _this.error$2(0, string$.Interpp, t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      return contents;
    },
    _stylesheet0$_mediaQueryList$0() {
      var _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        t3 = new A.StringBuffer(""),
        buffer = new A.InterpolationBuffer0(t3, A._setArrayType([], type$.JSArray_Object));
      for (; true;) {
        _this.whitespace$0();
        _this._stylesheet0$_mediaQuery$1(buffer);
        _this.whitespace$0();
        if (!t1.scanChar$1(44))
          break;
        t3._contents += A.Primitives_stringFromCharCode(44);
        t3._contents += A.Primitives_stringFromCharCode(32);
      }
      return buffer.interpolation$1(t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
    },
    _stylesheet0$_mediaQuery$1(buffer) {
      var identifier1, t1, identifier2, _this = this, _s3_ = "and";
      if (_this.scanner.peekChar$0() === 40) {
        _this._stylesheet0$_mediaInParens$1(buffer);
        _this.whitespace$0();
        if (_this.scanIdentifier$1(_s3_)) {
          buffer._interpolation_buffer0$_text._contents += " and ";
          _this.expectWhitespace$0();
          _this._stylesheet0$_mediaLogicSequence$2(buffer, _s3_);
        } else if (_this.scanIdentifier$1("or")) {
          buffer._interpolation_buffer0$_text._contents += " or ";
          _this.expectWhitespace$0();
          _this._stylesheet0$_mediaLogicSequence$2(buffer, "or");
        }
        return;
      }
      identifier1 = _this.interpolatedIdentifier$0();
      if (A.equalsIgnoreCase0(identifier1.get$asPlain(), "not")) {
        _this.expectWhitespace$0();
        if (!_this._stylesheet0$_lookingAtInterpolatedIdentifier$0()) {
          buffer._interpolation_buffer0$_text._contents += "not ";
          _this._stylesheet0$_mediaOrInterp$1(buffer);
          return;
        }
      }
      _this.whitespace$0();
      buffer.addInterpolation$1(identifier1);
      if (!_this._stylesheet0$_lookingAtInterpolatedIdentifier$0())
        return;
      t1 = buffer._interpolation_buffer0$_text;
      t1._contents += A.Primitives_stringFromCharCode(32);
      identifier2 = _this.interpolatedIdentifier$0();
      if (A.equalsIgnoreCase0(identifier2.get$asPlain(), _s3_)) {
        _this.expectWhitespace$0();
        t1._contents += " and ";
      } else {
        _this.whitespace$0();
        buffer.addInterpolation$1(identifier2);
        if (_this.scanIdentifier$1(_s3_)) {
          _this.expectWhitespace$0();
          t1._contents += " and ";
        } else
          return;
      }
      if (_this.scanIdentifier$1("not")) {
        _this.expectWhitespace$0();
        t1._contents += "not ";
        _this._stylesheet0$_mediaOrInterp$1(buffer);
        return;
      }
      _this._stylesheet0$_mediaLogicSequence$2(buffer, _s3_);
      return;
    },
    _stylesheet0$_mediaLogicSequence$2(buffer, operator) {
      var t1, t2, _this = this;
      for (t1 = buffer._interpolation_buffer0$_text; true;) {
        _this._stylesheet0$_mediaOrInterp$1(buffer);
        _this.whitespace$0();
        if (!_this.scanIdentifier$1(operator))
          return;
        _this.expectWhitespace$0();
        t2 = t1._contents += A.Primitives_stringFromCharCode(32);
        t1._contents = t2 + operator;
        t1._contents += A.Primitives_stringFromCharCode(32);
      }
    },
    _stylesheet0$_mediaOrInterp$1(buffer) {
      var interpolation;
      if (this.scanner.peekChar$0() === 35) {
        interpolation = this.singleInterpolation$0();
        buffer.addInterpolation$1(A.Interpolation$0(A._setArrayType([interpolation], type$.JSArray_Object), interpolation.get$span(interpolation)));
      } else
        this._stylesheet0$_mediaInParens$1(buffer);
    },
    _stylesheet0$_mediaInParens$1(buffer) {
      var t2, t3, t4, next, t5, _this = this,
        t1 = _this.scanner;
      t1.expectChar$2$name(40, "media condition in parentheses");
      t2 = buffer._interpolation_buffer0$_text;
      t2._contents += A.Primitives_stringFromCharCode(40);
      _this.whitespace$0();
      if (t1.peekChar$0() === 40) {
        _this._stylesheet0$_mediaInParens$1(buffer);
        _this.whitespace$0();
        if (_this.scanIdentifier$1("and")) {
          t2._contents += " and ";
          _this.expectWhitespace$0();
          _this._stylesheet0$_mediaLogicSequence$2(buffer, "and");
        } else if (_this.scanIdentifier$1("or")) {
          t2._contents += " or ";
          _this.expectWhitespace$0();
          _this._stylesheet0$_mediaLogicSequence$2(buffer, "or");
        }
      } else if (_this.scanIdentifier$1("not")) {
        t2._contents += "not ";
        _this.expectWhitespace$0();
        _this._stylesheet0$_mediaOrInterp$1(buffer);
      } else {
        t3 = _this._stylesheet0$_expressionUntilComparison$0();
        buffer._interpolation_buffer0$_flushText$0();
        t4 = buffer._interpolation_buffer0$_contents;
        t4.push(t3);
        if (t1.scanChar$1(58)) {
          _this.whitespace$0();
          t2._contents += A.Primitives_stringFromCharCode(58);
          t2._contents += A.Primitives_stringFromCharCode(32);
          t3 = _this._stylesheet0$_expression$0();
          buffer._interpolation_buffer0$_flushText$0();
          t4.push(t3);
        } else {
          next = t1.peekChar$0();
          t3 = 60 !== next;
          if (!t3 || 62 === next || 61 === next) {
            t2._contents += A.Primitives_stringFromCharCode(32);
            t2._contents += A.Primitives_stringFromCharCode(t1.readChar$0());
            if ((!t3 || 62 === next) && t1.scanChar$1(61))
              t2._contents += A.Primitives_stringFromCharCode(61);
            t2._contents += A.Primitives_stringFromCharCode(32);
            _this.whitespace$0();
            t5 = _this._stylesheet0$_expressionUntilComparison$0();
            buffer._interpolation_buffer0$_flushText$0();
            t4.push(t5);
            if (!t3 || 62 === next) {
              next.toString;
              t3 = t1.scanChar$1(next);
            } else
              t3 = false;
            if (t3) {
              t2._contents += A.Primitives_stringFromCharCode(32);
              t2._contents += A.Primitives_stringFromCharCode(next);
              if (t1.scanChar$1(61))
                t2._contents += A.Primitives_stringFromCharCode(61);
              t2._contents += A.Primitives_stringFromCharCode(32);
              _this.whitespace$0();
              t3 = _this._stylesheet0$_expressionUntilComparison$0();
              buffer._interpolation_buffer0$_flushText$0();
              t4.push(t3);
            }
          }
        }
      }
      t1.expectChar$1(41);
      _this.whitespace$0();
      t2._contents += A.Primitives_stringFromCharCode(41);
    },
    _stylesheet0$_expressionUntilComparison$0() {
      return this._stylesheet0$_expression$1$until(new A.StylesheetParser__expressionUntilComparison_closure0(this));
    },
    _stylesheet0$_supportsCondition$0() {
      var condition, operator, right, endPosition, t3, t4, lowerOperator, _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position;
      if (_this.scanIdentifier$1("not")) {
        _this.whitespace$0();
        return new A.SupportsNegation0(_this._stylesheet0$_supportsConditionInParens$0(), t1.spanFrom$1(new A._SpanScannerState(t1, t2)));
      }
      condition = _this._stylesheet0$_supportsConditionInParens$0();
      _this.whitespace$0();
      for (operator = null; _this.lookingAtIdentifier$0();) {
        if (operator != null)
          _this.expectIdentifier$1(operator);
        else if (_this.scanIdentifier$1("or"))
          operator = "or";
        else {
          _this.expectIdentifier$1("and");
          operator = "and";
        }
        _this.whitespace$0();
        right = _this._stylesheet0$_supportsConditionInParens$0();
        endPosition = t1._string_scanner$_position;
        t3 = t1._sourceFile;
        t4 = new A._FileSpan(t3, t2, endPosition);
        t4._FileSpan$3(t3, t2, endPosition);
        condition = new A.SupportsOperation0(condition, right, operator, t4);
        lowerOperator = operator.toLowerCase();
        if (lowerOperator !== "and" && lowerOperator !== "or")
          A.throwExpression(A.ArgumentError$value(operator, "operator", 'may only be "and" or "or".'));
        _this.whitespace$0();
      }
      return condition;
    },
    _stylesheet0$_supportsConditionInParens$0() {
      var $name, nameStart, wasInParentheses, identifier, operation, _1_0, contents, identifier0, t2, $arguments, _0_0, _0_4, expression, condition, exception, declaration, _this = this,
        t1 = _this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position);
      if (_this._stylesheet0$_lookingAtInterpolatedIdentifier$0()) {
        identifier0 = _this.interpolatedIdentifier$0();
        t2 = identifier0.get$asPlain();
        if ((t2 == null ? null : t2.toLowerCase()) === "not")
          _this.error$2(0, '"not" is not a valid identifier here.', identifier0.span);
        if (t1.scanChar$1(40)) {
          $arguments = _this._stylesheet0$_interpolatedDeclarationValue$2$allowEmpty$allowSemicolon(true, true);
          t1.expectChar$1(41);
          return new A.SupportsFunction0(identifier0, $arguments, t1.spanFrom$1(start));
        } else {
          _0_0 = identifier0.contents;
          _0_4 = A._InitializedCell$(new A.StylesheetParser__supportsConditionInParens_closure0(_0_0));
          if (_0_0.length === 1)
            if (type$.Expression_2._is(_0_4._readFinal$0())) {
              expression = _0_4._readFinal$0();
              t2 = true;
            } else {
              expression = null;
              t2 = false;
            }
          else {
            expression = null;
            t2 = false;
          }
          if (t2)
            return new A.SupportsInterpolation0(expression, t1.spanFrom$1(start));
          else
            _this.error$2(0, "Expected @supports condition.", identifier0.span);
        }
      }
      t1.expectChar$1(40);
      _this.whitespace$0();
      if (_this.scanIdentifier$1("not")) {
        _this.whitespace$0();
        condition = _this._stylesheet0$_supportsConditionInParens$0();
        t1.expectChar$1(41);
        return new A.SupportsNegation0(condition, t1.spanFrom$1(start));
      } else if (t1.peekChar$0() === 40) {
        condition = _this._stylesheet0$_supportsCondition$0();
        t1.expectChar$1(41);
        return condition;
      }
      $name = null;
      nameStart = new A._SpanScannerState(t1, t1._string_scanner$_position);
      wasInParentheses = _this._stylesheet0$_inParentheses;
      try {
        $name = _this._stylesheet0$_expression$0();
        t1.expectChar$1(58);
      } catch (exception) {
        if (type$.FormatException._is(A.unwrapException(exception))) {
          t1.set$state(nameStart);
          _this._stylesheet0$_inParentheses = wasInParentheses;
          identifier = _this.interpolatedIdentifier$0();
          operation = null;
          _1_0 = _this._stylesheet0$_trySupportsOperation$2(identifier, nameStart);
          if (_1_0 != null) {
            operation = _1_0;
            t2 = true;
          } else
            t2 = false;
          if (t2) {
            t1.expectChar$1(41);
            return operation;
          }
          t2 = new A.InterpolationBuffer0(new A.StringBuffer(""), A._setArrayType([], type$.JSArray_Object));
          t2.addInterpolation$1(identifier);
          t2.addInterpolation$1(_this._stylesheet0$_interpolatedDeclarationValue$3$allowColon$allowEmpty$allowSemicolon(false, true, true));
          contents = t2.interpolation$1(t1.spanFrom$1(nameStart));
          if (t1.peekChar$0() === 58)
            throw exception;
          t1.expectChar$1(41);
          return new A.SupportsAnything0(contents, t1.spanFrom$1(start));
        } else
          throw exception;
      }
      declaration = _this._stylesheet0$_supportsDeclarationValue$2($name, start);
      t1.expectChar$1(41);
      return declaration;
    },
    _stylesheet0$_supportsDeclarationValue$2($name, start) {
      var t1, value, _this = this;
      if ($name instanceof A.StringExpression0)
        if (!$name.hasQuotes)
          t1 = B.JSString_methods.startsWith$1($name.text.get$initialPlain(), "--");
        else
          t1 = false;
      else
        t1 = false;
      if (t1)
        value = new A.StringExpression0(_this._stylesheet0$_interpolatedDeclarationValue$0(), false);
      else {
        _this.whitespace$0();
        value = _this._stylesheet0$_expression$0();
      }
      return new A.SupportsDeclaration0($name, value, _this.scanner.spanFrom$1(start));
    },
    _stylesheet0$_trySupportsOperation$2(interpolation, start) {
      var expression, beforeWhitespace, t2, t3, operator, operation, right, t4, endPosition, t5, t6, lowerOperator, _this = this, _null = null,
        t1 = interpolation.contents;
      if (t1.length !== 1)
        return _null;
      expression = B.JSArray_methods.get$first(t1);
      if (!type$.Expression_2._is(expression))
        return _null;
      t1 = _this.scanner;
      beforeWhitespace = new A._SpanScannerState(t1, t1._string_scanner$_position);
      _this.whitespace$0();
      for (t2 = start.position, t3 = interpolation.span, operator = _null, operation = operator; _this.lookingAtIdentifier$0();) {
        if (operator != null)
          _this.expectIdentifier$1(operator);
        else if (_this.scanIdentifier$1("and"))
          operator = "and";
        else {
          if (!_this.scanIdentifier$1("or")) {
            if (beforeWhitespace._scanner !== t1)
              A.throwExpression(A.ArgumentError$(string$.The_gi, _null));
            t2 = beforeWhitespace.position;
            if ((t2 === 0 ? 1 / t2 < 0 : t2 < 0) || t2 > t1.string.length)
              A.throwExpression(A.ArgumentError$("Invalid position " + t2, _null));
            t1._string_scanner$_position = t2;
            return t1._lastMatch = null;
          }
          operator = "or";
        }
        _this.whitespace$0();
        right = _this._stylesheet0$_supportsConditionInParens$0();
        t4 = operation == null ? new A.SupportsInterpolation0(expression, t3) : operation;
        endPosition = t1._string_scanner$_position;
        t5 = t1._sourceFile;
        t6 = new A._FileSpan(t5, t2, endPosition);
        t6._FileSpan$3(t5, t2, endPosition);
        operation = new A.SupportsOperation0(t4, right, operator, t6);
        lowerOperator = operator.toLowerCase();
        if (lowerOperator !== "and" && lowerOperator !== "or")
          A.throwExpression(A.ArgumentError$value(operator, "operator", 'may only be "and" or "or".'));
        _this.whitespace$0();
      }
      return operation;
    },
    _stylesheet0$_lookingAtInterpolatedIdentifier$0() {
      var _0_0,
        t1 = this.scanner,
        _1_0 = t1.peekChar$0();
      $label0$0: {
        if (_1_0 == null) {
          t1 = false;
          break $label0$0;
        }
        if (_1_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_1_0) || _1_0 >= 128 || 92 === _1_0) {
          t1 = true;
          break $label0$0;
        }
        if (35 === _1_0) {
          t1 = t1.peekChar$1(1) === 123;
          break $label0$0;
        }
        if (45 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label1$1: {
            if (_0_0 == null) {
              t1 = false;
              break $label1$1;
            }
            if (35 === _0_0) {
              t1 = t1.peekChar$1(2) === 123;
              break $label1$1;
            }
            if (_0_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_0_0) || _0_0 >= 128 || 92 === _0_0 || 45 === _0_0) {
              t1 = true;
              break $label1$1;
            }
            t1 = false;
            break $label1$1;
          }
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _stylesheet0$_lookingAtPotentialPropertyHack$0() {
      var t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (58 === _0_0 || 42 === _0_0 || 46 === _0_0) {
          t1 = true;
          break $label0$0;
        }
        if (35 === _0_0) {
          t1 = t1.peekChar$1(1) !== 123;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _stylesheet0$_lookingAtInterpolatedIdentifierBody$0() {
      var t2,
        t1 = this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (_0_0 == null) {
          t1 = false;
          break $label0$0;
        }
        if (!(_0_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_0_0) || _0_0 >= 128))
          t2 = _0_0 >= 48 && _0_0 <= 57 || _0_0 === 45;
        else
          t2 = true;
        if (t2 || 92 === _0_0) {
          t1 = true;
          break $label0$0;
        }
        if (35 === _0_0) {
          t1 = t1.peekChar$1(1) === 123;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _stylesheet0$_lookingAtExpression$0() {
      var _0_0,
        t1 = this.scanner,
        _1_0 = t1.peekChar$0();
      $label0$0: {
        if (_1_0 == null) {
          t1 = false;
          break $label0$0;
        }
        if (46 === _1_0) {
          t1 = t1.peekChar$1(1) !== 46;
          break $label0$0;
        }
        if (33 === _1_0) {
          _0_0 = t1.peekChar$1(1);
          $label1$1: {
            if (_0_0 != null)
              if (105 !== _0_0)
                if (73 !== _0_0)
                  t1 = _0_0 === 32 || _0_0 === 9 || _0_0 === 10 || _0_0 === 13 || _0_0 === 12;
                else
                  t1 = true;
              else
                t1 = true;
            else
              t1 = true;
            if (t1) {
              t1 = true;
              break $label1$1;
            }
            t1 = false;
            break $label1$1;
          }
          break $label0$0;
        }
        if (40 !== _1_0)
          if (47 !== _1_0)
            if (91 !== _1_0)
              if (39 !== _1_0)
                if (34 !== _1_0)
                  if (35 !== _1_0)
                    if (43 !== _1_0)
                      if (45 !== _1_0)
                        if (92 !== _1_0)
                          if (36 !== _1_0)
                            if (38 !== _1_0)
                              if (!(_1_0 === 95 || A.CharacterExtension_get_isAlphabetic0(_1_0) || _1_0 >= 128))
                                t1 = _1_0 >= 48 && _1_0 <= 57;
                              else
                                t1 = true;
                            else
                              t1 = true;
                          else
                            t1 = true;
                        else
                          t1 = true;
                      else
                        t1 = true;
                    else
                      t1 = true;
                  else
                    t1 = true;
                else
                  t1 = true;
              else
                t1 = true;
            else
              t1 = true;
          else
            t1 = true;
        else
          t1 = true;
        if (t1) {
          t1 = true;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    _stylesheet0$_withChildren$1$3(child, start, create) {
      var result = create.call$2(this.children$1(0, child), this.scanner.spanFrom$1(start));
      this.whitespaceWithoutComments$0();
      return result;
    },
    _stylesheet0$_withChildren$3(child, start, create) {
      return this._stylesheet0$_withChildren$1$3(child, start, create, type$.dynamic);
    },
    _stylesheet0$_urlString$0() {
      var innerError, stackTrace, t2, exception,
        t1 = this.scanner,
        start = new A._SpanScannerState(t1, t1._string_scanner$_position),
        url = this.string$0();
      try {
        t2 = A.Uri_parse(url);
        return t2;
      } catch (exception) {
        t2 = A.unwrapException(exception);
        if (type$.FormatException._is(t2)) {
          innerError = t2;
          stackTrace = A.getTraceFromException(exception);
          this.error$3(0, "Invalid URL: " + J.get$message$x(innerError), t1.spanFrom$1(start), stackTrace);
        } else
          throw exception;
      }
    },
    _stylesheet0$_publicIdentifier$0() {
      var _this = this,
        t1 = _this.scanner,
        t2 = t1._string_scanner$_position,
        result = _this.identifier$1$normalize(true);
      _this._stylesheet0$_assertPublic$2(result, new A.StylesheetParser__publicIdentifier_closure0(_this, new A._SpanScannerState(t1, t2)));
      return result;
    },
    _stylesheet0$_assertPublic$2(identifier, span) {
      var first = identifier.charCodeAt(0);
      if (!(first === 45 || first === 95))
        return;
      this.error$2(0, string$.Privat, span.call$0());
    },
    get$plainCss() {
      return false;
    }
  };
  A.StylesheetParser_parse_closure0.prototype = {
    call$0() {
      var statements, t4,
        t1 = this.$this,
        t2 = t1.scanner,
        t3 = t2._string_scanner$_position;
      t2.scanChar$1(65279);
      statements = t1.statements$1(new A.StylesheetParser_parse__closure1(t1));
      t2.expectDone$0();
      t4 = t1._stylesheet0$_globalVariables;
      t4 = t4.get$values(t4);
      B.JSArray_methods.addAll$1(statements, A.MappedIterable_MappedIterable(t4, new A.StylesheetParser_parse__closure2(), A._instanceType(t4)._eval$1("Iterable.E"), type$.Statement_2));
      return A.Stylesheet$internal0(statements, t2.spanFrom$1(new A._SpanScannerState(t2, t3)), t1.get$plainCss());
    },
    $signature: 575
  };
  A.StylesheetParser_parse__closure1.prototype = {
    call$0() {
      var t1 = this.$this;
      if (t1.scanner.scan$1("@charset")) {
        t1.whitespace$0();
        t1.string$0();
        return null;
      }
      return t1._stylesheet0$_statement$1$root(true);
    },
    $signature: 576
  };
  A.StylesheetParser_parse__closure2.prototype = {
    call$1(declaration) {
      var t1 = declaration.expression;
      return A.VariableDeclaration$0(declaration.name, new A.NullExpression0(t1.get$span(t1)), declaration.span, null, false, true, null);
    },
    $signature: 577
  };
  A.StylesheetParser_parseArgumentDeclaration_closure0.prototype = {
    call$0() {
      var $arguments,
        t1 = this.$this,
        t2 = t1.scanner;
      t2.expectChar$2$name(64, "@-rule");
      t1.identifier$0();
      t1.whitespace$0();
      t1.identifier$0();
      $arguments = t1._stylesheet0$_argumentDeclaration$0();
      t1.whitespace$0();
      t2.expectChar$1(123);
      return $arguments;
    },
    $signature: 578
  };
  A.StylesheetParser__parseSingleProduction_closure0.prototype = {
    call$0() {
      var result = this.production.call$0();
      this.$this.scanner.expectDone$0();
      return result;
    },
    $signature() {
      return this.T._eval$1("0()");
    }
  };
  A.StylesheetParser_parseSignature_closure.prototype = {
    call$0() {
      var $arguments, t2, t3,
        t1 = this.$this,
        $name = t1.identifier$0();
      if (this.requireParens || t1.scanner.peekChar$0() === 40)
        $arguments = t1._stylesheet0$_argumentDeclaration$0();
      else {
        t2 = t1.scanner;
        t2 = A.FileLocation$_(t2._sourceFile, t2._string_scanner$_position);
        t3 = t2.offset;
        $arguments = new A.ArgumentDeclaration0(B.List_empty22, null, A._FileSpan$(t2.file, t3, t3));
      }
      t1.scanner.expectDone$0();
      return new A._Record_2($name, $arguments);
    },
    $signature: 579
  };
  A.StylesheetParser__statement_closure0.prototype = {
    call$0() {
      return this.$this._stylesheet0$_statement$0();
    },
    $signature: 145
  };
  A.StylesheetParser_variableDeclarationWithoutNamespace_closure1.prototype = {
    call$0() {
      return this.$this.scanner.spanFrom$1(this.start);
    },
    $signature: 33
  };
  A.StylesheetParser_variableDeclarationWithoutNamespace_closure2.prototype = {
    call$0() {
      return this.declaration;
    },
    $signature: 580
  };
  A.StylesheetParser__declarationOrBuffer_closure1.prototype = {
    call$2(children, span) {
      return A.Declaration$nested0(this.name, children, span, null);
    },
    $signature: 82
  };
  A.StylesheetParser__declarationOrBuffer_closure2.prototype = {
    call$2(children, span) {
      return A.Declaration$nested0(this.name, children, span, this._box_0.value);
    },
    $signature: 82
  };
  A.StylesheetParser__styleRule_closure0.prototype = {
    call$2(children, span) {
      var _this = this,
        t1 = _this.$this;
      if (t1.get$indented() && children.length === 0)
        t1.logger.warn$2$span(0, string$.This_s, _this._box_0.interpolation.span);
      t1._stylesheet0$_inStyleRule = _this.wasInStyleRule;
      return A.StyleRule$0(_this._box_0.interpolation, children, t1.scanner.spanFrom$1(_this.start));
    },
    $signature: 582
  };
  A.StylesheetParser__propertyOrVariableDeclaration_closure1.prototype = {
    call$2(children, span) {
      return A.Declaration$nested0(this._box_0.name, children, span, null);
    },
    $signature: 82
  };
  A.StylesheetParser__propertyOrVariableDeclaration_closure2.prototype = {
    call$2(children, span) {
      return A.Declaration$nested0(this._box_0.name, children, span, this.value);
    },
    $signature: 82
  };
  A.StylesheetParser__atRootRule_closure1.prototype = {
    call$2(children, span) {
      return A.AtRootRule$0(children, span, this.query);
    },
    $signature: 285
  };
  A.StylesheetParser__atRootRule_closure2.prototype = {
    call$2(children, span) {
      return A.AtRootRule$0(children, span, null);
    },
    $signature: 285
  };
  A.StylesheetParser__eachRule_closure0.prototype = {
    call$2(children, span) {
      var _this = this;
      _this.$this._stylesheet0$_inControlDirective = _this.wasInControlDirective;
      return A.EachRule$0(_this.variables, _this.list, children, span);
    },
    $signature: 584
  };
  A.StylesheetParser__functionRule_closure0.prototype = {
    call$2(children, span) {
      return A.FunctionRule$0(this.name, this.$arguments, children, span, this.precedingComment);
    },
    $signature: 585
  };
  A.StylesheetParser__forRule_closure1.prototype = {
    call$0() {
      var t1 = this.$this;
      if (!t1.lookingAtIdentifier$0())
        return false;
      if (t1.scanIdentifier$1("to"))
        return this._box_0.exclusive = true;
      else if (t1.scanIdentifier$1("through")) {
        this._box_0.exclusive = false;
        return true;
      } else
        return false;
    },
    $signature: 1
  };
  A.StylesheetParser__forRule_closure2.prototype = {
    call$2(children, span) {
      var t1, _this = this;
      _this.$this._stylesheet0$_inControlDirective = _this.wasInControlDirective;
      t1 = _this._box_0.exclusive;
      t1.toString;
      return A.ForRule$0(_this.variable, _this.from, _this.to, children, span, t1);
    },
    $signature: 586
  };
  A.StylesheetParser__memberList_closure0.prototype = {
    call$0() {
      var t1 = this.$this;
      if (t1.scanner.peekChar$0() === 36)
        this.variables.add$1(0, t1.variableName$0());
      else
        this.identifiers.add$1(0, t1.identifier$1$normalize(true));
    },
    $signature: 2
  };
  A.StylesheetParser__includeRule_closure0.prototype = {
    call$2(children, span) {
      return A.ContentBlock$0(this.contentArguments_, children, span);
    },
    $signature: 587
  };
  A.StylesheetParser_mediaRule_closure0.prototype = {
    call$2(children, span) {
      return A.MediaRule$0(this.query, children, span);
    },
    $signature: 588
  };
  A.StylesheetParser__mixinRule_closure0.prototype = {
    call$2(children, span) {
      var _this = this;
      _this.$this._stylesheet0$_inMixin = false;
      return A.MixinRule$0(_this.name, _this.$arguments, children, span, _this.precedingComment);
    },
    $signature: 589
  };
  A.StylesheetParser_mozDocumentRule_closure0.prototype = {
    call$2(children, span) {
      var _this = this;
      if (_this._box_0.needsDeprecationWarning)
        A.WarnForDeprecation_warnForDeprecation0(_this.$this.logger, B.Deprecation_GbU, string$.x40_moz_, span, null);
      return A.AtRule$0(_this.name, span, children, _this.value);
    },
    $signature: 286
  };
  A.StylesheetParser_supportsRule_closure0.prototype = {
    call$2(children, span) {
      return A.SupportsRule$0(this.condition, children, span);
    },
    $signature: 591
  };
  A.StylesheetParser__whileRule_closure0.prototype = {
    call$2(children, span) {
      this.$this._stylesheet0$_inControlDirective = this.wasInControlDirective;
      return A.WhileRule$0(this.condition, children, span);
    },
    $signature: 592
  };
  A.StylesheetParser_unknownAtRule_closure0.prototype = {
    call$2(children, span) {
      return A.AtRule$0(this.name, span, children, this._box_0.value);
    },
    $signature: 286
  };
  A.StylesheetParser__expression_resetState0.prototype = {
    call$0() {
      var t2,
        t1 = this._box_0;
      t1.operands_ = t1.operators_ = t1.spaceExpressions_ = t1.commaExpressions_ = null;
      t2 = this.$this;
      t2.scanner.set$state(this.start);
      t1.allowSlash = true;
      t1.singleExpression_ = t2._stylesheet0$_singleExpression$0();
    },
    $signature: 0
  };
  A.StylesheetParser__expression_resolveOneOperation0.prototype = {
    call$0() {
      var t2, t3, t4, t5, t6, t7, _this = this,
        t1 = _this._box_0,
        operator = t1.operators_.pop(),
        left = t1.operands_.pop(),
        right = t1.singleExpression_;
      if (right == null) {
        t2 = _this.$this.scanner;
        t3 = operator.operator.length;
        t2.error$3$length$position(0, "Expected expression.", t3, t2._string_scanner$_position - t3);
      }
      if (t1.allowSlash) {
        t2 = _this.$this;
        t2 = !t2._stylesheet0$_inParentheses && operator === B.BinaryOperator_t8B0 && t2._stylesheet0$_isSlashOperand$1(left) && t2._stylesheet0$_isSlashOperand$1(right);
      } else
        t2 = false;
      if (t2)
        t1.singleExpression_ = new A.BinaryOperationExpression0(B.BinaryOperator_t8B0, left, right, true);
      else {
        t1.singleExpression_ = new A.BinaryOperationExpression0(operator, left, right, false);
        t2 = t1.allowSlash = false;
        if (B.BinaryOperator_anB0 === operator || B.BinaryOperator_olz0 === operator) {
          t3 = _this.$this;
          t4 = t3.scanner.string;
          t5 = right.get$span(right);
          t5 = t5.get$start(t5);
          t6 = right.get$span(right);
          t7 = operator.operator;
          if (B.JSString_methods.substring$2(t4, t5.offset - 1, t6.get$start(t6).offset) === t7) {
            t2 = left.get$span(left);
            t2 = t4.charCodeAt(t2.get$end(t2).offset);
            t2 = t2 === 32 || t2 === 9 || t2 === 10 || t2 === 13 || t2 === 12;
          }
          if (t2) {
            t2 = left.toString$0(0);
            t4 = right.toString$0(0);
            t5 = left.toString$0(0);
            t6 = right.toString$0(0);
            t1 = t1.singleExpression_;
            A.WarnForDeprecation_warnForDeprecation0(t3.logger, B.Deprecation_EsU, "This operation is parsed as:\n\n    " + t2 + " " + t7 + " " + t4 + string$.x0a_but_ + t5 + " (" + t7 + t6 + ")\n\nAdd a space after " + t7 + string$.x20to_cl, t1.get$span(t1), null);
          }
        }
      }
    },
    $signature: 0
  };
  A.StylesheetParser__expression_resolveOperations0.prototype = {
    call$0() {
      var t1,
        operators = this._box_0.operators_;
      if (operators == null)
        return;
      for (t1 = this.resolveOneOperation; operators.length !== 0;)
        t1.call$0();
    },
    $signature: 0
  };
  A.StylesheetParser__expression_addSingleExpression0.prototype = {
    call$1(expression) {
      var t2, spaceExpressions, _this = this,
        t1 = _this._box_0;
      if (t1.singleExpression_ != null) {
        t2 = _this.$this;
        if (t2._stylesheet0$_inParentheses) {
          t2._stylesheet0$_inParentheses = false;
          if (t1.allowSlash) {
            _this.resetState.call$0();
            return;
          }
        }
        spaceExpressions = t1.spaceExpressions_;
        if (spaceExpressions == null)
          spaceExpressions = t1.spaceExpressions_ = A._setArrayType([], type$.JSArray_Expression_2);
        _this.resolveOperations.call$0();
        t2 = t1.singleExpression_;
        t2.toString;
        spaceExpressions.push(t2);
        t1.allowSlash = true;
      }
      t1.singleExpression_ = expression;
    },
    $signature: 593
  };
  A.StylesheetParser__expression_addOperator0.prototype = {
    call$1(operator) {
      var t2, t3, operators, operands, t4, singleExpression,
        t1 = this.$this;
      if (t1.get$plainCss() && operator !== B.BinaryOperator_2jN0 && operator !== B.BinaryOperator_anB0 && operator !== B.BinaryOperator_olz0 && operator !== B.BinaryOperator_qN20 && operator !== B.BinaryOperator_t8B0) {
        t2 = t1.scanner;
        t3 = operator.operator.length;
        t2.error$3$length$position(0, "Operators aren't allowed in plain CSS.", t3, t2._string_scanner$_position - t3);
      }
      t2 = this._box_0;
      t2.allowSlash = t2.allowSlash && operator === B.BinaryOperator_t8B0;
      operators = t2.operators_;
      if (operators == null)
        operators = t2.operators_ = A._setArrayType([], type$.JSArray_BinaryOperator_2);
      operands = t2.operands_;
      if (operands == null)
        operands = t2.operands_ = A._setArrayType([], type$.JSArray_Expression_2);
      t3 = this.resolveOneOperation;
      t4 = operator.precedence;
      while (true) {
        if (!(operators.length !== 0 && B.JSArray_methods.get$last(operators).precedence >= t4))
          break;
        t3.call$0();
      }
      operators.push(operator);
      singleExpression = t2.singleExpression_;
      if (singleExpression == null) {
        t3 = t1.scanner;
        t4 = operator.operator.length;
        t3.error$3$length$position(0, "Expected expression.", t4, t3._string_scanner$_position - t4);
      }
      operands.push(singleExpression);
      t1.whitespace$0();
      t2.singleExpression_ = t1._stylesheet0$_singleExpression$0();
    },
    $signature: 594
  };
  A.StylesheetParser__expression_resolveSpaceExpressions0.prototype = {
    call$0() {
      var t1, spaceExpressions, singleExpression, t2;
      this.resolveOperations.call$0();
      t1 = this._box_0;
      spaceExpressions = t1.spaceExpressions_;
      if (spaceExpressions == null)
        return;
      singleExpression = t1.singleExpression_;
      if (singleExpression == null)
        this.$this.scanner.error$1(0, "Expected expression.");
      spaceExpressions.push(singleExpression);
      t2 = B.JSArray_methods.get$first(spaceExpressions);
      t2 = t2.get$span(t2).expand$1(0, singleExpression.get$span(singleExpression));
      t1.singleExpression_ = new A.ListExpression0(A.List_List$unmodifiable(spaceExpressions, type$.Expression_2), B.ListSeparator_EVt0, false, t2);
      t1.spaceExpressions_ = null;
    },
    $signature: 0
  };
  A.StylesheetParser__expression_closure2.prototype = {
    call$0() {
      return 43 === this._3_0;
    },
    $signature: 1
  };
  A.StylesheetParser__expression_closure3.prototype = {
    call$0() {
      return 47 === this._3_0;
    },
    $signature: 1
  };
  A.StylesheetParser__expression_closure4.prototype = {
    call$0() {
      return 46 === this._3_0;
    },
    $signature: 1
  };
  A.StylesheetParser_expressionUntilComma_closure0.prototype = {
    call$0() {
      return this.$this.scanner.peekChar$0() === 44;
    },
    $signature: 1
  };
  A.StylesheetParser__isHexColor_closure1.prototype = {
    call$0() {
      var t1 = this._0_0;
      return (t1 == null ? A._asString(t1) : t1).length;
    },
    $signature: 3
  };
  A.StylesheetParser__isHexColor_closure2.prototype = {
    call$1(char) {
      return A.CharacterExtension_get_isHex0(char);
    },
    $signature: 47
  };
  A.StylesheetParser__unicodeRange_closure1.prototype = {
    call$1(char) {
      return char != null && A.CharacterExtension_get_isHex0(char);
    },
    $signature: 34
  };
  A.StylesheetParser__unicodeRange_closure2.prototype = {
    call$1(char) {
      return char != null && A.CharacterExtension_get_isHex0(char);
    },
    $signature: 34
  };
  A.StylesheetParser_identifierLike_closure1.prototype = {
    call$0() {
      return 46 === this._2_0;
    },
    $signature: 1
  };
  A.StylesheetParser_identifierLike_closure2.prototype = {
    call$0() {
      return 40 === this._2_0;
    },
    $signature: 1
  };
  A.StylesheetParser_namespacedExpression_closure0.prototype = {
    call$0() {
      return this.$this.scanner.spanFrom$1(this.start);
    },
    $signature: 33
  };
  A.StylesheetParser_trySpecialFunction_closure0.prototype = {
    call$1(contents) {
      return new A.StringExpression0(contents, false);
    },
    $signature: 595
  };
  A.StylesheetParser__tryUrlContents_closure0.prototype = {
    call$0() {
      return 35 === this._0_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure4.prototype = {
    call$0() {
      return 32 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure5.prototype = {
    call$0() {
      return 9 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure6.prototype = {
    call$0() {
      return 10 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure7.prototype = {
    call$0() {
      return 13 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__interpolatedDeclarationValue_closure8.prototype = {
    call$0() {
      return 12 === this._1_0;
    },
    $signature: 1
  };
  A.StylesheetParser__expressionUntilComparison_closure0.prototype = {
    call$0() {
      var t1 = this.$this.scanner,
        _0_0 = t1.peekChar$0();
      $label0$0: {
        if (61 === _0_0) {
          t1 = t1.peekChar$1(1) !== 61;
          break $label0$0;
        }
        if (60 === _0_0 || 62 === _0_0) {
          t1 = true;
          break $label0$0;
        }
        t1 = false;
        break $label0$0;
      }
      return t1;
    },
    $signature: 1
  };
  A.StylesheetParser__supportsConditionInParens_closure0.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 14
  };
  A.StylesheetParser__publicIdentifier_closure0.prototype = {
    call$0() {
      return this.$this.scanner.spanFrom$1(this.start);
    },
    $signature: 33
  };
  A.Stylesheet0.prototype = {
    Stylesheet$internal$3$plainCss0(children, span, plainCss) {
      var t1, t2, t3, t4, _i, child;
      for (t1 = this.children, t2 = t1.length, t3 = this._stylesheet1$_forwards, t4 = this._stylesheet1$_uses, _i = 0; _i < t2; ++_i) {
        child = t1[_i];
        if (child instanceof A.UseRule0) {
          t4.push(child);
          continue;
        }
        if (child instanceof A.ForwardRule0) {
          t3.push(child);
          continue;
        }
        if (child instanceof A.SilentComment0 || child instanceof A.LoudComment0 || child instanceof A.VariableDeclaration0)
          continue;
        break;
      }
    },
    accept$1$1(visitor) {
      return visitor.visitStylesheet$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return (t1 && B.JSArray_methods).join$1(t1, " ");
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsExpression0.prototype = {
    get$span(_) {
      var t1 = this.condition;
      return t1.get$span(t1);
    },
    accept$1$1(visitor) {
      return visitor.visitSupportsExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return this.condition.toString$0(0);
    },
    $isExpression0: 1,
    $isAstNode0: 1
  };
  A.ModifiableCssSupportsRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitCssSupportsRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    equalsIgnoringChildren$1(other) {
      var t1, t2;
      if (other instanceof A.ModifiableCssSupportsRule0) {
        t1 = this.condition;
        t2 = other.condition;
        t1 = t1.$ti._is(t2) && J.$eq$(t2.value, t1.value);
      } else
        t1 = false;
      return t1;
    },
    copyWithoutChildren$0() {
      return A.ModifiableCssSupportsRule$0(this.condition, this.span);
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.SupportsRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitSupportsRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@supports " + this.condition.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  A.JSToDartImporter.prototype = {
    canonicalize$1(_, url) {
      var t1,
        result = A.wrapJSExceptions(new A.JSToDartImporter_canonicalize_closure(this, url));
      if (result == null)
        return null;
      t1 = self.URL;
      if (result instanceof t1)
        return A.Uri_parse(J.toString$0$(type$.JSUrl._as(result)));
      t1 = self.Promise;
      if (result instanceof t1)
        A.jsThrow(new self.Error("The canonicalize() function can't return a Promise for synchronous compile functions."));
      else
        A.jsThrow(new self.Error(string$.The_ca));
    },
    load$1(_, url) {
      var t1, contents, syntax, t2,
        result = A.wrapJSExceptions(new A.JSToDartImporter_load_closure(this, url));
      if (result == null)
        return null;
      t1 = self.Promise;
      if (result instanceof t1)
        A.jsThrow(new self.Error("The load() function can't return a Promise for synchronous compile functions."));
      type$.JSImporterResult._as(result);
      t1 = J.getInterceptor$x(result);
      contents = t1.get$contents(result);
      if (A._asString(new self.Function("value", "return typeof value").call$1(contents)) !== "string")
        A.jsThrow(new A.ArgumentError(true, contents, "contents", "must be a string but was: " + A.jsType(contents)));
      syntax = t1.get$syntax(result);
      if (contents == null || syntax == null)
        A.jsThrow(new self.Error(string$.The_lo));
      t2 = A.parseSyntax(syntax);
      return A.ImporterResult$(contents, A.NullableExtension_andThen0(t1.get$sourceMapUrl(result), A.utils1__jsToDartUrl$closure()), t2);
    },
    isNonCanonicalScheme$1(scheme) {
      return this._sync$_nonCanonicalSchemes.contains$1(0, scheme);
    }
  };
  A.JSToDartImporter_canonicalize_closure.prototype = {
    call$0() {
      return this.$this._sync$_canonicalize.call$2(this.url.toString$0(0), {fromImport: A.fromImport0(), containingUrl: A.NullableExtension_andThen0(A.containingUrl(), A.utils1__dartToJSUrl$closure())});
    },
    $signature: 28
  };
  A.JSToDartImporter_load_closure.prototype = {
    call$0() {
      return this.$this._sync$_load.call$1(new self.URL(this.url.toString$0(0)));
    },
    $signature: 28
  };
  A.Syntax0.prototype = {
    _enumToString$0() {
      return "Syntax." + this._name;
    },
    toString$0(_) {
      return this._syntax0$_name;
    }
  };
  A.TypeSelector0.prototype = {
    get$specificity() {
      return 1;
    },
    accept$1$1(visitor) {
      return visitor.visitTypeSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    addSuffix$1(suffix) {
      var t1 = this.name;
      return new A.TypeSelector0(new A.QualifiedName0(t1.name + suffix, t1.namespace), this.span);
    },
    unify$1(compound) {
      var unified, t1,
        _0_0 = B.JSArray_methods.get$first(compound);
      if (_0_0 instanceof A.UniversalSelector0 || _0_0 instanceof A.TypeSelector0) {
        unified = A.unifyUniversalAndElement0(this, B.JSArray_methods.get$first(compound));
        if (unified == null)
          return null;
        t1 = A._setArrayType([unified], type$.JSArray_SimpleSelector_2);
        B.JSArray_methods.addAll$1(t1, A.SubListIterable$(compound, 1, null, A._arrayInstanceType(compound)._precomputed1));
        return t1;
      } else {
        t1 = A._setArrayType([this], type$.JSArray_SimpleSelector_2);
        B.JSArray_methods.addAll$1(t1, compound);
        return t1;
      }
    },
    isSuperselector$1(other) {
      var t1, t2;
      if (!this.super$SimpleSelector$isSuperselector0(other))
        if (other instanceof A.TypeSelector0) {
          t1 = this.name;
          t2 = other.name;
          if (t1.name === t2.name) {
            t1 = t1.namespace;
            t1 = t1 === "*" || t1 == t2.namespace;
          } else
            t1 = false;
        } else
          t1 = false;
      else
        t1 = true;
      return t1;
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.TypeSelector0 && other.name.$eq(0, this.name);
    },
    get$hashCode(_) {
      var t1 = this.name;
      return B.JSString_methods.get$hashCode(t1.name) ^ J.get$hashCode$(t1.namespace);
    }
  };
  A.Types.prototype = {};
  A.UnaryOperationExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitUnaryOperationExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var operand,
        t1 = this.operator,
        t2 = t1.operator;
      t1 = t1 === B.UnaryOperator_not_not_not0 ? t2 + A.Primitives_stringFromCharCode(32) : t2;
      operand = this.operand;
      $label0$0: {
        if (!(operand instanceof A.BinaryOperationExpression0))
          if (!(operand instanceof A.UnaryOperationExpression0))
            t2 = operand instanceof A.ListExpression0 && !operand.hasBrackets && operand.contents.length >= 2;
          else
            t2 = true;
        else
          t2 = true;
        if (t2) {
          t2 = true;
          break $label0$0;
        }
        t2 = false;
        break $label0$0;
      }
      if (t2)
        t1 += "40";
      t1 += operand.toString$0(0);
      if (t2)
        t1 += "41";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.UnaryOperator0.prototype = {
    _enumToString$0() {
      return "UnaryOperator." + this._name;
    },
    toString$0(_) {
      return this.name;
    }
  };
  A.UnitlessSassNumber0.prototype = {
    get$numeratorUnits(_) {
      return B.List_empty;
    },
    get$denominatorUnits(_) {
      return B.List_empty;
    },
    get$hasUnits() {
      return false;
    },
    get$hasComplexUnits() {
      return false;
    },
    withValue$1(value) {
      return new A.UnitlessSassNumber0(value, null);
    },
    withSlash$2(numerator, denominator) {
      return new A.UnitlessSassNumber0(this._number1$_value, new A._Record_2(numerator, denominator));
    },
    hasUnit$1(unit) {
      return false;
    },
    hasCompatibleUnits$1(other) {
      return other instanceof A.UnitlessSassNumber0;
    },
    hasPossiblyCompatibleUnits$1(other) {
      return other instanceof A.UnitlessSassNumber0;
    },
    compatibleWithUnit$1(unit) {
      return true;
    },
    coerceToMatch$3(other, $name, otherName) {
      return other.withValue$1(this._number1$_value);
    },
    coerceToMatch$1(other) {
      return this.coerceToMatch$3(other, null, null);
    },
    coerceValueToMatch$3(other, $name, otherName) {
      return this._number1$_value;
    },
    coerceValueToMatch$1(other) {
      return this.coerceValueToMatch$3(other, null, null);
    },
    convertToMatch$3(other, $name, otherName) {
      return other.get$hasUnits() ? this.super$SassNumber$convertToMatch(other, $name, otherName) : this;
    },
    convertValueToMatch$3(other, $name, otherName) {
      return other.get$hasUnits() ? this.super$SassNumber$convertValueToMatch0(other, $name, otherName) : this._number1$_value;
    },
    convertValueToMatch$1(other) {
      return this.convertValueToMatch$3(other, null, null);
    },
    coerce$3(newNumerators, newDenominators, $name) {
      return A.SassNumber_SassNumber$withUnits0(this._number1$_value, newDenominators, newNumerators);
    },
    coerce$2(newNumerators, newDenominators) {
      return this.coerce$3(newNumerators, newDenominators, null);
    },
    coerceValue$3(newNumerators, newDenominators, $name) {
      return this._number1$_value;
    },
    coerceValueToUnit$2(unit, $name) {
      return this._number1$_value;
    },
    coerceValueToUnit$1(unit) {
      return this.coerceValueToUnit$2(unit, null);
    },
    greaterThan$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber0) {
        t1 = this._number1$_value;
        t2 = other._number1$_value;
        return t1 > t2 && !A.fuzzyEquals0(t1, t2) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      }
      return this.super$SassNumber$greaterThan0(other);
    },
    greaterThanOrEquals$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber0) {
        t1 = this._number1$_value;
        t2 = other._number1$_value;
        return t1 > t2 || A.fuzzyEquals0(t1, t2) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      }
      return this.super$SassNumber$greaterThanOrEquals0(other);
    },
    lessThan$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber0) {
        t1 = this._number1$_value;
        t2 = other._number1$_value;
        return t1 < t2 && !A.fuzzyEquals0(t1, t2) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      }
      return this.super$SassNumber$lessThan0(other);
    },
    lessThanOrEquals$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber0) {
        t1 = this._number1$_value;
        t2 = other._number1$_value;
        return t1 < t2 || A.fuzzyEquals0(t1, t2) ? B.SassBoolean_true0 : B.SassBoolean_false0;
      }
      return this.super$SassNumber$lessThanOrEquals0(other);
    },
    modulo$1(other) {
      if (other instanceof A.SassNumber0)
        return other.withValue$1(A.moduloLikeSass0(this._number1$_value, other._number1$_value));
      return this.super$SassNumber$modulo0(other);
    },
    plus$1(other) {
      if (other instanceof A.SassNumber0)
        return other.withValue$1(this._number1$_value + other._number1$_value);
      return this.super$SassNumber$plus0(other);
    },
    minus$1(other) {
      if (other instanceof A.SassNumber0)
        return other.withValue$1(this._number1$_value - other._number1$_value);
      return this.super$SassNumber$minus0(other);
    },
    times$1(other) {
      if (other instanceof A.SassNumber0)
        return other.withValue$1(this._number1$_value * other._number1$_value);
      return this.super$SassNumber$times0(other);
    },
    dividedBy$1(other) {
      var t1, t2;
      if (other instanceof A.SassNumber0) {
        t1 = this._number1$_value / other._number1$_value;
        if (other.get$hasUnits()) {
          t2 = other.get$denominatorUnits(other);
          t2 = A.SassNumber_SassNumber$withUnits0(t1, other.get$numeratorUnits(other), t2);
          t1 = t2;
        } else
          t1 = new A.UnitlessSassNumber0(t1, null);
        return t1;
      }
      return this.super$SassNumber$dividedBy0(other);
    },
    unaryMinus$0() {
      return new A.UnitlessSassNumber0(-this._number1$_value, null);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.UnitlessSassNumber0 && A.fuzzyEquals0(this._number1$_value, other._number1$_value);
    },
    get$hashCode(_) {
      var t1 = this.hashCache;
      return t1 == null ? this.hashCache = A.fuzzyHashCode0(this._number1$_value) : t1;
    }
  };
  A.UniversalSelector0.prototype = {
    get$specificity() {
      return 0;
    },
    accept$1$1(visitor) {
      return visitor.visitUniversalSelector$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    unify$1(compound) {
      var rest, t1, unified, first, _this = this, _null = null,
        _0_1 = A._InitializedCell$(new A.UniversalSelector_unify_closure1(compound)),
        _0_4 = A._InitializedCell$(new A.UniversalSelector_unify_closure2(compound));
      if (_0_1._readFinal$0() >= 1)
        if (_0_4._readFinal$0() instanceof A.UniversalSelector0 || _0_4._readFinal$0() instanceof A.TypeSelector0) {
          rest = B.JSArray_methods.sublist$1(compound, 1);
          t1 = true;
        } else {
          rest = _null;
          t1 = false;
        }
      else {
        rest = _null;
        t1 = false;
      }
      if (t1) {
        unified = A.unifyUniversalAndElement0(_this, B.JSArray_methods.get$first(compound));
        if (unified == null)
          return _null;
        t1 = A._setArrayType([unified], type$.JSArray_SimpleSelector_2);
        B.JSArray_methods.addAll$1(t1, rest);
        return t1;
      }
      if (J.$eq$(_0_1._readFinal$0(), 1))
        if (_0_4._readFinal$0() instanceof A.PseudoSelector0) {
          first = _0_4._readFinal$0();
          t1 = first.isClass && first.name === "host" || first.get$isHostContext();
        } else
          t1 = false;
      else
        t1 = false;
      if (t1)
        return _null;
      if (_0_1._readFinal$0() <= 0)
        return A._setArrayType([_this], type$.JSArray_SimpleSelector_2);
      t1 = _this.namespace;
      if (t1 == null || t1 === "*")
        t1 = compound;
      else {
        t1 = A._setArrayType([_this], type$.JSArray_SimpleSelector_2);
        B.JSArray_methods.addAll$1(t1, compound);
      }
      return t1;
    },
    isSuperselector$1(other) {
      var t1 = this.namespace;
      if (t1 === "*")
        return true;
      if (other instanceof A.TypeSelector0)
        return t1 == other.name.namespace;
      if (other instanceof A.UniversalSelector0)
        return t1 == other.namespace;
      return t1 == null || this.super$SimpleSelector$isSuperselector0(other);
    },
    $eq(_, other) {
      if (other == null)
        return false;
      return other instanceof A.UniversalSelector0 && other.namespace == this.namespace;
    },
    get$hashCode(_) {
      return J.get$hashCode$(this.namespace);
    }
  };
  A.UniversalSelector_unify_closure1.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A.UniversalSelector_unify_closure2.prototype = {
    call$0() {
      return this._0_0[0];
    },
    $signature: 279
  };
  A.UnprefixedMapView0.prototype = {
    get$keys(_) {
      return new A._UnprefixedKeys0(this);
    },
    $index(_, key) {
      return typeof key == "string" ? this._unprefixed_map_view0$_map.$index(0, this._unprefixed_map_view0$_prefix + key) : null;
    },
    containsKey$1(key) {
      return typeof key == "string" && this._unprefixed_map_view0$_map.containsKey$1(this._unprefixed_map_view0$_prefix + key);
    },
    remove$1(_, key) {
      return typeof key == "string" ? this._unprefixed_map_view0$_map.remove$1(0, this._unprefixed_map_view0$_prefix + key) : null;
    }
  };
  A._UnprefixedKeys0.prototype = {
    get$iterator(_) {
      var t1 = this._unprefixed_map_view0$_view._unprefixed_map_view0$_map;
      t1 = J.where$1$ax(t1.get$keys(t1), new A._UnprefixedKeys_iterator_closure1(this)).map$1$1(0, new A._UnprefixedKeys_iterator_closure2(this), type$.String);
      return t1.get$iterator(t1);
    },
    contains$1(_, key) {
      return this._unprefixed_map_view0$_view.containsKey$1(key);
    }
  };
  A._UnprefixedKeys_iterator_closure1.prototype = {
    call$1(key) {
      return B.JSString_methods.startsWith$1(key, this.$this._unprefixed_map_view0$_view._unprefixed_map_view0$_prefix);
    },
    $signature: 10
  };
  A._UnprefixedKeys_iterator_closure2.prototype = {
    call$1(key) {
      return B.JSString_methods.substring$1(key, this.$this._unprefixed_map_view0$_view._unprefixed_map_view0$_prefix.length);
    },
    $signature: 7
  };
  A.JSUrl0.prototype = {};
  A.UseRule0.prototype = {
    UseRule$4$configuration0(url, namespace, span, configuration) {
      var t1, t2, _i, variable;
      for (t1 = this.configuration, t2 = t1.length, _i = 0; _i < t2; ++_i) {
        variable = t1[_i];
        if (variable.isGuarded)
          throw A.wrapException(A.ArgumentError$value(variable, "configured variable", "can't be guarded in a @use rule."));
      }
    },
    accept$1$1(visitor) {
      return visitor.visitUseRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.url,
        t2 = "@use " + A.StringExpression_quoteText0(t1.toString$0(0)),
        basename = t1.get$pathSegments().length === 0 ? "" : B.JSArray_methods.get$last(t1.get$pathSegments()),
        dot = B.JSString_methods.indexOf$1(basename, ".");
      t1 = this.namespace;
      if (t1 !== B.JSString_methods.substring$2(basename, 0, dot === -1 ? basename.length : dot))
        t1 = t2 + (" as " + (t1 == null ? "*" : t1));
      else
        t1 = t2;
      t2 = this.configuration;
      t1 = (t2.length !== 0 ? t1 + (" with (" + B.JSArray_methods.join$1(t2, ", ") + ")") : t1) + ";";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.UserDefinedCallable0.prototype = {
    get$name(_) {
      return this.declaration.name;
    },
    $isAsyncCallable0: 1,
    $isCallable: 1
  };
  A.resolveImportPath_closure1.prototype = {
    call$0() {
      return A._exactlyOne0(A._tryPath0($.$get$context().withoutExtension$1(this.path) + ".import" + this.extension));
    },
    $signature: 32
  };
  A.resolveImportPath_closure2.prototype = {
    call$0() {
      return A._exactlyOne0(A._tryPathWithExtensions0(this.path + ".import"));
    },
    $signature: 32
  };
  A._tryPathAsDirectory_closure0.prototype = {
    call$0() {
      return A._exactlyOne0(A._tryPathWithExtensions0(A.join(this.path, "index.import", null)));
    },
    $signature: 32
  };
  A._exactlyOne_closure1.prototype = {
    call$0() {
      return this._0_0.length;
    },
    $signature: 3
  };
  A._exactlyOne_closure2.prototype = {
    call$1(path) {
      var t1 = $.$get$context();
      return "  " + t1.prettyUri$1(t1.toUri$1(path));
    },
    $signature: 7
  };
  A._PropertyDescriptor0.prototype = {};
  A.futureToPromise_closure0.prototype = {
    call$2(resolve, reject) {
      this.future.then$1$2$onError(0, new A.futureToPromise__closure0(resolve), new A.futureToPromise__closure1(reject), type$.void);
    },
    $signature: 596
  };
  A.futureToPromise__closure0.prototype = {
    call$1(result) {
      return this.resolve.call$1(result);
    },
    $signature: 37
  };
  A.futureToPromise__closure1.prototype = {
    call$2(error, stackTrace) {
      A.attachTrace0(error, stackTrace);
      this.reject.call$1(error);
    },
    $signature: 62
  };
  A.objectToMap_closure.prototype = {
    call$2(key, value) {
      this.map.$indexSet(0, key, value);
      return value;
    },
    $signature: 135
  };
  A.indent_closure0.prototype = {
    call$1(line) {
      return B.JSString_methods.$mul(" ", this.indentation) + line;
    },
    $signature: 7
  };
  A.flattenVertically_closure1.prototype = {
    call$1(inner) {
      return A.QueueList_QueueList$from(inner, this.T);
    },
    $signature() {
      return this.T._eval$1("QueueList<0>(Iterable<0>)");
    }
  };
  A.flattenVertically_closure2.prototype = {
    call$1(queue) {
      this.result.push(queue.removeFirst$0());
      return queue.get$length(queue) === 0;
    },
    $signature() {
      return this.T._eval$1("bool(QueueList<0>)");
    }
  };
  A.longestCommonSubsequence_backtrack0.prototype = {
    call$2(i, j) {
      var selection, t1, _this = this;
      if (i === -1 || j === -1)
        return A._setArrayType([], _this.T._eval$1("JSArray<0>"));
      selection = _this.selections[i][j];
      if (selection != null) {
        t1 = _this.call$2(i - 1, j - 1);
        J.add$1$ax(t1, selection);
        return t1;
      }
      t1 = _this.lengths;
      return t1[i + 1][j] > t1[i][j + 1] ? _this.call$2(i, j - 1) : _this.call$2(i - 1, j);
    },
    $signature() {
      return this.T._eval$1("List<0>(int,int)");
    }
  };
  A.mapAddAll2_closure0.prototype = {
    call$2(key, inner) {
      var innerDestination, t2,
        t1 = this.destination,
        _0_0 = t1.$index(0, key);
      if (_0_0 != null) {
        innerDestination = _0_0;
        t2 = true;
      } else {
        innerDestination = null;
        t2 = false;
      }
      if (t2)
        innerDestination.addAll$1(0, inner);
      else
        t1.$indexSet(0, key, inner);
    },
    $signature() {
      return this.K1._eval$1("@<0>")._bind$1(this.K2)._bind$1(this.V)._eval$1("~(1,Map<2,3>)");
    }
  };
  A.CssValue0.prototype = {
    $eq(_, other) {
      if (other == null)
        return false;
      return this.$ti._is(other) && J.$eq$(other.value, this.value);
    },
    get$hashCode(_) {
      return J.get$hashCode$(this.value);
    },
    toString$0(_) {
      return J.toString$0$(this.value);
    },
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.ValueExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitValueExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return A.serializeValue0(this.value, true, true);
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.valueClass_closure.prototype = {
    call$0() {
      var t2,
        t1 = type$.JSClass,
        jsClass = t1._as(self.Object.getPrototypeOf(J.get$$prototype$x(t1._as(B.C__SassNull0.constructor))).constructor);
      A.JSClassExtension_setCustomInspect(jsClass, new A.valueClass__closure());
      t1 = type$.String;
      t2 = type$.Function;
      A.LinkedHashMap_LinkedHashMap$_literal(["asList", new A.valueClass__closure0(), "hasBrackets", new A.valueClass__closure1(), "isTruthy", new A.valueClass__closure2(), "realNull", new A.valueClass__closure3(), "separator", new A.valueClass__closure4()], t1, t2).forEach$1(0, A.JSClassExtension_get_defineGetter(jsClass));
      A.LinkedHashMap_LinkedHashMap$_literal(["sassIndexToListIndex", new A.valueClass__closure5(), "get", new A.valueClass__closure6(), "assertBoolean", new A.valueClass__closure7(), "assertCalculation", new A.valueClass__closure8(), "assertColor", new A.valueClass__closure9(), "assertFunction", new A.valueClass__closure10(), "assertMap", new A.valueClass__closure11(), "assertMixin", new A.valueClass__closure12(), "assertNumber", new A.valueClass__closure13(), "assertString", new A.valueClass__closure14(), "tryMap", new A.valueClass__closure15(), "equals", new A.valueClass__closure16(), "hashCode", new A.valueClass__closure17(), "toString", new A.valueClass__closure18()], t1, t2).forEach$1(0, A.JSClassExtension_get_defineMethod(jsClass));
      return jsClass;
    },
    $signature: 24
  };
  A.valueClass__closure.prototype = {
    call$1($self) {
      return J.toString$0$($self);
    },
    $signature: 139
  };
  A.valueClass__closure0.prototype = {
    call$1($self) {
      return new self.immutable.List($self.get$asList());
    },
    $signature: 597
  };
  A.valueClass__closure1.prototype = {
    call$1($self) {
      return $self.get$hasBrackets();
    },
    $signature: 54
  };
  A.valueClass__closure2.prototype = {
    call$1($self) {
      return $self.get$isTruthy();
    },
    $signature: 54
  };
  A.valueClass__closure3.prototype = {
    call$1($self) {
      return $self.get$realNull();
    },
    $signature: 241
  };
  A.valueClass__closure4.prototype = {
    call$1($self) {
      return $self.get$separator($self).separator;
    },
    $signature: 598
  };
  A.valueClass__closure5.prototype = {
    call$3($self, sassIndex, $name) {
      return $self.sassIndexToListIndex$2(sassIndex, $name);
    },
    call$2($self, sassIndex) {
      return this.call$3($self, sassIndex, null);
    },
    "call*": "call$3",
    $requiredArgCount: 2,
    $defaultValues() {
      return [null];
    },
    $signature: 599
  };
  A.valueClass__closure6.prototype = {
    call$2($self, index) {
      return index < 1 && index >= -1 ? $self : self.undefined;
    },
    $signature: 262
  };
  A.valueClass__closure7.prototype = {
    call$2($self, $name) {
      return $self.assertBoolean$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 600
  };
  A.valueClass__closure8.prototype = {
    call$2($self, $name) {
      return $self.assertCalculation$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 601
  };
  A.valueClass__closure9.prototype = {
    call$2($self, $name) {
      return $self.assertColor$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 602
  };
  A.valueClass__closure10.prototype = {
    call$2($self, $name) {
      return $self.assertFunction$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 603
  };
  A.valueClass__closure11.prototype = {
    call$2($self, $name) {
      return $self.assertMap$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 604
  };
  A.valueClass__closure12.prototype = {
    call$2($self, $name) {
      return $self.assertMixin$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 605
  };
  A.valueClass__closure13.prototype = {
    call$2($self, $name) {
      return $self.assertNumber$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 606
  };
  A.valueClass__closure14.prototype = {
    call$2($self, $name) {
      return $self.assertString$1($name);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 607
  };
  A.valueClass__closure15.prototype = {
    call$1($self) {
      return $self.tryMap$0();
    },
    $signature: 608
  };
  A.valueClass__closure16.prototype = {
    call$2($self, other) {
      return $self.$eq(0, other);
    },
    $signature: 609
  };
  A.valueClass__closure17.prototype = {
    call$2($self, _) {
      return $self.get$hashCode($self);
    },
    call$1($self) {
      return this.call$2($self, null);
    },
    "call*": "call$2",
    $requiredArgCount: 1,
    $defaultValues() {
      return [null];
    },
    $signature: 610
  };
  A.valueClass__closure18.prototype = {
    call$1($self) {
      return A.serializeValue0($self, true, true);
    },
    $signature: 225
  };
  A.Value0.prototype = {
    get$isTruthy() {
      return true;
    },
    get$separator(_) {
      return B.ListSeparator_undecided_null_undecided0;
    },
    get$hasBrackets() {
      return false;
    },
    get$asList() {
      return A._setArrayType([this], type$.JSArray_Value_2);
    },
    get$lengthAsList() {
      return 1;
    },
    get$isBlank() {
      return false;
    },
    get$isSpecialNumber() {
      return false;
    },
    get$isVar() {
      return false;
    },
    get$realNull() {
      return this;
    },
    sassIndexToListIndex$2(sassIndex, $name) {
      var t1, t2, index,
        indexValue = sassIndex.assertNumber$1($name);
      if (indexValue.get$hasUnits()) {
        t1 = indexValue.get$unitString();
        t2 = indexValue.unitSuggestion$1($name == null ? "index" : $name);
        A.EvaluationContext_current0().warn$2(0, "$" + A.S($name) + ": Passing a number with unit " + t1 + string$.x20is_de + t2 + string$.x0a_Morex3a, B.Deprecation_0bn);
      }
      index = indexValue.assertInt$1($name);
      if (index === 0)
        throw A.wrapException(A.SassScriptException$0("List index may not be 0.", $name));
      if (Math.abs(index) > this.get$lengthAsList())
        throw A.wrapException(A.SassScriptException$0("Invalid index " + sassIndex.toString$0(0) + " for a list with " + this.get$lengthAsList() + " elements.", $name));
      return index < 0 ? this.get$lengthAsList() + index : index - 1;
    },
    assertBoolean$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a boolean.", $name));
    },
    assertCalculation$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a calculation.", $name));
    },
    assertColor$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a color.", $name));
    },
    assertFunction$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a function reference.", $name));
    },
    assertMixin$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a mixin reference.", $name));
    },
    assertMap$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a map.", $name));
    },
    tryMap$0() {
      return null;
    },
    assertNumber$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a number.", $name));
    },
    assertNumber$0() {
      return this.assertNumber$1(null);
    },
    assertString$1($name) {
      return A.throwExpression(A.SassScriptException$0(this.toString$0(0) + " is not a string.", $name));
    },
    _value$_selectorString$1($name) {
      var string, t1,
        _0_0 = this._value$_selectorStringOrNull$0();
      if (_0_0 != null) {
        string = _0_0;
        t1 = true;
      } else {
        string = null;
        t1 = false;
      }
      if (t1)
        return string;
      throw A.wrapException(A.SassScriptException$0(this.toString$0(0) + string$.x20is_noa, $name));
    },
    _value$_selectorStringOrNull$0() {
      var t1, t2, result, _1_0, _i, complex, string, compound, _this = this, _null = null;
      if (_this instanceof A.SassString0)
        return _this._string0$_text;
      if (!(_this instanceof A.SassList0))
        return _null;
      t1 = _this._list1$_contents;
      t2 = t1.length;
      if (t2 === 0)
        return _null;
      result = A._setArrayType([], type$.JSArray_String);
      $label0$1: {
        _1_0 = _this._list1$_separator;
        if (B.ListSeparator_rXA0 === _1_0) {
          for (_i = 0; _i < t2; ++_i) {
            complex = t1[_i];
            if (complex instanceof A.SassString0) {
              result.push(complex._string0$_text);
              continue;
            }
            if (complex instanceof A.SassList0 && B.ListSeparator_EVt0 === complex._list1$_separator) {
              string = complex._value$_selectorStringOrNull$0();
              if (string == null)
                return _null;
              result.push(string);
              continue;
            }
            return _null;
          }
          break $label0$1;
        }
        if (B.ListSeparator_zg90 === _1_0)
          return _null;
        for (_i = 0; _i < t2; ++_i) {
          compound = t1[_i];
          if (!(compound instanceof A.SassString0))
            return _null;
          result.push(compound._string0$_text);
        }
      }
      return B.JSArray_methods.join$1(result, _1_0 === B.ListSeparator_rXA0 ? ", " : " ");
    },
    withListContents$2$separator(contents, separator) {
      var t1 = separator == null ? this.get$separator(this) : separator,
        t2 = this.get$hasBrackets();
      return A.SassList$0(contents, t1, t2);
    },
    withListContents$1(contents) {
      return this.withListContents$2$separator(contents, null);
    },
    greaterThan$1(other) {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " > " + other.toString$0(0) + '".', null));
    },
    greaterThanOrEquals$1(other) {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " >= " + other.toString$0(0) + '".', null));
    },
    lessThan$1(other) {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " < " + other.toString$0(0) + '".', null));
    },
    lessThanOrEquals$1(other) {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " <= " + other.toString$0(0) + '".', null));
    },
    times$1(other) {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " * " + other.toString$0(0) + '".', null));
    },
    modulo$1(other) {
      return A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " % " + other.toString$0(0) + '".', null));
    },
    plus$1(other) {
      var t1;
      $label0$0: {
        if (other instanceof A.SassString0) {
          t1 = new A.SassString0(A.serializeValue0(this, false, true) + other._string0$_text, other._string0$_hasQuotes);
          break $label0$0;
        }
        if (other instanceof A.SassCalculation0)
          A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " + " + other.toString$0(0) + '".', null));
        t1 = new A.SassString0(A.serializeValue0(this, false, true) + A.serializeValue0(other, false, true), false);
        break $label0$0;
      }
      return t1;
    },
    minus$1(other) {
      return other instanceof A.SassCalculation0 ? A.throwExpression(A.SassScriptException$0('Undefined operation "' + this.toString$0(0) + " - " + other.toString$0(0) + '".', null)) : new A.SassString0(A.serializeValue0(this, false, true) + "-" + A.serializeValue0(other, false, true), false);
    },
    dividedBy$1(other) {
      return new A.SassString0(A.serializeValue0(this, false, true) + "/" + A.serializeValue0(other, false, true), false);
    },
    unaryPlus$0() {
      return new A.SassString0("+" + A.serializeValue0(this, false, true), false);
    },
    unaryMinus$0() {
      return new A.SassString0("-" + A.serializeValue0(this, false, true), false);
    },
    unaryNot$0() {
      return B.SassBoolean_false0;
    },
    withoutSlash$0() {
      return this;
    },
    toString$0(_) {
      return A.serializeValue0(this, true, true);
    }
  };
  A.VariableExpression0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitVariableExpression$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.namespace,
        t2 = this.name;
      return t1 == null ? "$" + t2 : t1 + ".$" + t2;
    },
    $isExpression0: 1,
    $isAstNode0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.VariableDeclaration0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitVariableDeclaration$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.namespace;
      t1 = t1 != null ? "" + (t1 + ".") : "";
      t1 += "$" + this.name + ": " + this.expression.toString$0(0) + ";";
      return t1.charCodeAt(0) == 0 ? t1 : t1;
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.WarnRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitWarnRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      return "@warn " + this.expression.toString$0(0) + ";";
    },
    $isAstNode0: 1,
    $isStatement0: 1,
    get$span(receiver) {
      return this.span;
    }
  };
  A.WhileRule0.prototype = {
    accept$1$1(visitor) {
      return visitor.visitWhileRule$1(this);
    },
    accept$1(visitor) {
      return this.accept$1$1(visitor, type$.dynamic);
    },
    toString$0(_) {
      var t1 = this.children;
      return "@while " + this.condition.toString$0(0) + " {" + (t1 && B.JSArray_methods).join$1(t1, " ") + "}";
    },
    get$span(receiver) {
      return this.span;
    }
  };
  (function aliases() {
    var _ = J.LegacyJavaScriptObject.prototype;
    _.super$LegacyJavaScriptObject$toString = _.toString$0;
    _ = A.JsLinkedHashMap.prototype;
    _.super$JsLinkedHashMap$internalContainsKey = _.internalContainsKey$1;
    _.super$JsLinkedHashMap$internalGet = _.internalGet$1;
    _.super$JsLinkedHashMap$internalSet = _.internalSet$2;
    _.super$JsLinkedHashMap$internalRemove = _.internalRemove$1;
    _ = A._BufferingStreamSubscription.prototype;
    _.super$_BufferingStreamSubscription$_add = _._async$_add$1;
    _.super$_BufferingStreamSubscription$_addError = _._addError$2;
    _ = A.ListBase.prototype;
    _.super$ListBase$setRange = _.setRange$4;
    _ = A.Iterable.prototype;
    _.super$Iterable$where = _.where$1;
    _.super$Iterable$skipWhile = _.skipWhile$1;
    _ = A.ModifiableCssParentNode.prototype;
    _.super$ModifiableCssParentNode$addChild = _.addChild$1;
    _ = A.SimpleSelector.prototype;
    _.super$SimpleSelector$addSuffix = _.addSuffix$1;
    _.super$SimpleSelector$unify = _.unify$1;
    _.super$SimpleSelector$isSuperselector = _.isSuperselector$1;
    _ = A.Parser.prototype;
    _.super$Parser$silentComment = _.silentComment$0;
    _ = A.StylesheetParser.prototype;
    _.super$StylesheetParser$importArgument = _.importArgument$0;
    _.super$StylesheetParser$namespacedExpression = _.namespacedExpression$2;
    _ = A.Value.prototype;
    _.super$Value$assertMap = _.assertMap$1;
    _.super$Value$plus = _.plus$1;
    _.super$Value$minus = _.minus$1;
    _.super$Value$dividedBy = _.dividedBy$1;
    _ = A.SassNumber.prototype;
    _.super$SassNumber$convertValueToMatch = _.convertValueToMatch$3;
    _.super$SassNumber$coerce = _.coerce$3;
    _.super$SassNumber$coerceValue = _.coerceValue$3;
    _.super$SassNumber$coerceValueToUnit = _.coerceValueToUnit$2;
    _.super$SassNumber$coerceToMatch = _.coerceToMatch$3;
    _.super$SassNumber$coerceValueToMatch = _.coerceValueToMatch$3;
    _.super$SassNumber$greaterThan = _.greaterThan$1;
    _.super$SassNumber$greaterThanOrEquals = _.greaterThanOrEquals$1;
    _.super$SassNumber$lessThan = _.lessThan$1;
    _.super$SassNumber$lessThanOrEquals = _.lessThanOrEquals$1;
    _.super$SassNumber$modulo = _.modulo$1;
    _.super$SassNumber$plus = _.plus$1;
    _.super$SassNumber$minus = _.minus$1;
    _.super$SassNumber$times = _.times$1;
    _.super$SassNumber$dividedBy = _.dividedBy$1;
    _ = A.AnySelectorVisitor.prototype;
    _.super$AnySelectorVisitor$visitComplexSelector = _.visitComplexSelector$1;
    _ = A.EveryCssVisitor.prototype;
    _.super$EveryCssVisitor$visitCssStyleRule = _.visitCssStyleRule$1;
    _ = A.ReplaceExpressionVisitor.prototype;
    _.super$ReplaceExpressionVisitor$visitBinaryOperationExpression = _.visitBinaryOperationExpression$1;
    _.super$ReplaceExpressionVisitor$visitUnaryOperationExpression = _.visitUnaryOperationExpression$1;
    _ = A.SourceSpanMixin.prototype;
    _.super$SourceSpanMixin$compareTo = _.compareTo$1;
    _.super$SourceSpanMixin$$eq = _.$eq;
    _ = A.StringScanner.prototype;
    _.super$StringScanner$readChar = _.readChar$0;
    _.super$StringScanner$scanChar = _.scanChar$1;
    _.super$StringScanner$scan = _.scan$1;
    _.super$StringScanner$matches = _.matches$1;
    _ = A.AnySelectorVisitor0.prototype;
    _.super$AnySelectorVisitor$visitComplexSelector0 = _.visitComplexSelector$1;
    _ = A.EveryCssVisitor0.prototype;
    _.super$EveryCssVisitor$visitCssStyleRule0 = _.visitCssStyleRule$1;
    _ = A.ModifiableCssParentNode0.prototype;
    _.super$ModifiableCssParentNode$addChild0 = _.addChild$1;
    _ = A.SassNumber0.prototype;
    _.super$SassNumber$convertToMatch = _.convertToMatch$3;
    _.super$SassNumber$convertValueToMatch0 = _.convertValueToMatch$3;
    _.super$SassNumber$coerce0 = _.coerce$3;
    _.super$SassNumber$coerceValue0 = _.coerceValue$3;
    _.super$SassNumber$coerceValueToUnit0 = _.coerceValueToUnit$2;
    _.super$SassNumber$coerceToMatch0 = _.coerceToMatch$3;
    _.super$SassNumber$coerceValueToMatch0 = _.coerceValueToMatch$3;
    _.super$SassNumber$greaterThan0 = _.greaterThan$1;
    _.super$SassNumber$greaterThanOrEquals0 = _.greaterThanOrEquals$1;
    _.super$SassNumber$lessThan0 = _.lessThan$1;
    _.super$SassNumber$lessThanOrEquals0 = _.lessThanOrEquals$1;
    _.super$SassNumber$modulo0 = _.modulo$1;
    _.super$SassNumber$plus0 = _.plus$1;
    _.super$SassNumber$minus0 = _.minus$1;
    _.super$SassNumber$times0 = _.times$1;
    _.super$SassNumber$dividedBy0 = _.dividedBy$1;
    _ = A.Parser1.prototype;
    _.super$Parser$silentComment0 = _.silentComment$0;
    _ = A.ReplaceExpressionVisitor0.prototype;
    _.super$ReplaceExpressionVisitor$visitBinaryOperationExpression0 = _.visitBinaryOperationExpression$1;
    _.super$ReplaceExpressionVisitor$visitUnaryOperationExpression0 = _.visitUnaryOperationExpression$1;
    _ = A.SimpleSelector0.prototype;
    _.super$SimpleSelector$addSuffix0 = _.addSuffix$1;
    _.super$SimpleSelector$unify0 = _.unify$1;
    _.super$SimpleSelector$isSuperselector0 = _.isSuperselector$1;
    _ = A.StylesheetParser0.prototype;
    _.super$StylesheetParser$importArgument0 = _.importArgument$0;
    _.super$StylesheetParser$namespacedExpression0 = _.namespacedExpression$2;
    _ = A.Value0.prototype;
    _.super$Value$assertMap0 = _.assertMap$1;
    _.super$Value$plus0 = _.plus$1;
    _.super$Value$minus0 = _.minus$1;
    _.super$Value$dividedBy0 = _.dividedBy$1;
  })();
  (function installTearOffs() {
    var _static_2 = hunkHelpers._static_2,
      _instance_1_i = hunkHelpers._instance_1i,
      _instance_1_u = hunkHelpers._instance_1u,
      _static_1 = hunkHelpers._static_1,
      _static_0 = hunkHelpers._static_0,
      _static = hunkHelpers.installStaticTearOff,
      _instance = hunkHelpers.installInstanceTearOff,
      _instance_2_u = hunkHelpers._instance_2u,
      _instance_0_i = hunkHelpers._instance_0i,
      _instance_0_u = hunkHelpers._instance_0u;
    _static_2(J, "_interceptors_JSArray__compareAny$closure", "JSArray__compareAny", 287);
    _instance_1_i(J.JSArray.prototype, "get$contains", "contains$1", 11);
    _instance_1_i(A._CastIterableBase.prototype, "get$contains", "contains$1", 11);
    _instance_1_u(A.CastMap.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_u(A.ConstantStringMap.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_i(A.ConstantStringSet.prototype, "get$contains", "contains$1", 11);
    _instance_1_i(A.GeneralConstantSet.prototype, "get$contains", "contains$1", 11);
    _instance_1_u(A.JsLinkedHashMap.prototype, "get$containsKey", "containsKey$1", 11);
    _static_1(A, "async__AsyncRun__scheduleImmediateJsOverride$closure", "_AsyncRun__scheduleImmediateJsOverride", 147);
    _static_1(A, "async__AsyncRun__scheduleImmediateWithSetImmediate$closure", "_AsyncRun__scheduleImmediateWithSetImmediate", 147);
    _static_1(A, "async__AsyncRun__scheduleImmediateWithTimer$closure", "_AsyncRun__scheduleImmediateWithTimer", 147);
    _static_0(A, "async___startMicrotaskLoop$closure", "_startMicrotaskLoop", 0);
    _static_1(A, "async___nullDataHandler$closure", "_nullDataHandler", 127);
    _static_2(A, "async___nullErrorHandler$closure", "_nullErrorHandler", 71);
    _static_0(A, "async___nullDoneHandler$closure", "_nullDoneHandler", 0);
    _static(A, "async___rootHandleUncaughtError$closure", 5, null, ["call$5"], ["_rootHandleUncaughtError"], 613, 0);
    _static(A, "async___rootRun$closure", 4, null, ["call$1$4", "call$4"], ["_rootRun", function($self, $parent, zone, f) {
      return A._rootRun($self, $parent, zone, f, type$.dynamic);
    }], 614, 1);
    _static(A, "async___rootRunUnary$closure", 5, null, ["call$2$5", "call$5"], ["_rootRunUnary", function($self, $parent, zone, f, arg) {
      return A._rootRunUnary($self, $parent, zone, f, arg, type$.dynamic, type$.dynamic);
    }], 615, 1);
    _static(A, "async___rootRunBinary$closure", 6, null, ["call$3$6", "call$6"], ["_rootRunBinary", function($self, $parent, zone, f, arg1, arg2) {
      return A._rootRunBinary($self, $parent, zone, f, arg1, arg2, type$.dynamic, type$.dynamic, type$.dynamic);
    }], 616, 1);
    _static(A, "async___rootRegisterCallback$closure", 4, null, ["call$1$4", "call$4"], ["_rootRegisterCallback", function($self, $parent, zone, f) {
      return A._rootRegisterCallback($self, $parent, zone, f, type$.dynamic);
    }], 617, 0);
    _static(A, "async___rootRegisterUnaryCallback$closure", 4, null, ["call$2$4", "call$4"], ["_rootRegisterUnaryCallback", function($self, $parent, zone, f) {
      return A._rootRegisterUnaryCallback($self, $parent, zone, f, type$.dynamic, type$.dynamic);
    }], 618, 0);
    _static(A, "async___rootRegisterBinaryCallback$closure", 4, null, ["call$3$4", "call$4"], ["_rootRegisterBinaryCallback", function($self, $parent, zone, f) {
      return A._rootRegisterBinaryCallback($self, $parent, zone, f, type$.dynamic, type$.dynamic, type$.dynamic);
    }], 619, 0);
    _static(A, "async___rootErrorCallback$closure", 5, null, ["call$5"], ["_rootErrorCallback"], 620, 0);
    _static(A, "async___rootScheduleMicrotask$closure", 4, null, ["call$4"], ["_rootScheduleMicrotask"], 621, 0);
    _static(A, "async___rootCreateTimer$closure", 5, null, ["call$5"], ["_rootCreateTimer"], 622, 0);
    _static(A, "async___rootCreatePeriodicTimer$closure", 5, null, ["call$5"], ["_rootCreatePeriodicTimer"], 623, 0);
    _static(A, "async___rootPrint$closure", 4, null, ["call$4"], ["_rootPrint"], 624, 0);
    _static_1(A, "async___printToZone$closure", "_printToZone", 85);
    _static(A, "async___rootFork$closure", 5, null, ["call$5"], ["_rootFork"], 625, 0);
    _instance(A._AsyncCompleter.prototype, "get$complete", 0, 0, function() {
      return [null];
    }, ["call$1", "call$0"], ["complete$1", "complete$0"], 160, 0, 0);
    _instance_2_u(A._Future.prototype, "get$_completeError", "_completeError$2", 71);
    var _;
    _instance_1_i(_ = A._StreamController.prototype, "get$add", "add$1", 37);
    _instance(_, "get$addError", 0, 1, function() {
      return [null];
    }, ["call$2", "call$1"], ["addError$2", "addError$1"], 172, 0, 0);
    _instance_0_i(_, "get$close", "close$0", 334);
    _instance_1_u(_, "get$_async$_add", "_async$_add$1", 37);
    _instance_2_u(_, "get$_addError", "_addError$2", 71);
    _instance_0_u(_, "get$_close", "_close$0", 0);
    _instance_0_u(_ = A._ControllerSubscription.prototype, "get$_async$_onPause", "_async$_onPause$0", 0);
    _instance_0_u(_, "get$_async$_onResume", "_async$_onResume$0", 0);
    _instance(_ = A._BufferingStreamSubscription.prototype, "get$pause", 1, 0, null, ["call$1", "call$0"], ["pause$1", "pause$0"], 353, 0, 0);
    _instance_0_i(_, "get$resume", "resume$0", 0);
    _instance_0_u(_, "get$_async$_onPause", "_async$_onPause$0", 0);
    _instance_0_u(_, "get$_async$_onResume", "_async$_onResume$0", 0);
    _instance_1_u(_ = A._StreamIterator.prototype, "get$_onData", "_onData$1", 37);
    _instance_2_u(_, "get$_onError", "_onError$2", 71);
    _instance_0_u(_, "get$_onDone", "_onDone$0", 0);
    _instance_0_u(_ = A._ForwardingStreamSubscription.prototype, "get$_async$_onPause", "_async$_onPause$0", 0);
    _instance_0_u(_, "get$_async$_onResume", "_async$_onResume$0", 0);
    _instance_1_u(_, "get$_handleData", "_handleData$1", 37);
    _instance_2_u(_, "get$_handleError", "_handleError$2", 370);
    _instance_0_u(_, "get$_handleDone", "_handleDone$0", 0);
    _static_2(A, "collection___defaultEquals$closure", "_defaultEquals", 289);
    _static_1(A, "collection___defaultHashCode$closure", "_defaultHashCode", 290);
    _static_2(A, "collection_ListBase__compareAny$closure", "ListBase__compareAny", 287);
    _instance_1_u(A._HashMap.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_u(A._LinkedCustomHashMap.prototype, "get$containsKey", "containsKey$1", 11);
    _instance(_ = A._LinkedHashSet.prototype, "get$_newSimilarSet", 0, 0, null, ["call$1$0", "call$0"], ["_newSimilarSet$1$0", "_newSimilarSet$0"], 209, 0, 0);
    _instance_1_i(_, "get$contains", "contains$1", 11);
    _instance_1_i(_, "get$add", "add$1", 11);
    _instance(A._LinkedIdentityHashSet.prototype, "get$_newSimilarSet", 0, 0, null, ["call$1$0", "call$0"], ["_newSimilarSet$1$0", "_newSimilarSet$0"], 209, 0, 0);
    _instance_1_u(A.MapBase.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_u(A.MapView.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_i(A.UnmodifiableSetView.prototype, "get$contains", "contains$1", 11);
    _static_1(A, "convert___defaultToEncodable$closure", "_defaultToEncodable", 88);
    _static_1(A, "core__identityHashCode$closure", "identityHashCode", 290);
    _static_2(A, "core__identical$closure", "identical", 289);
    _static_1(A, "core_Uri_decodeComponent$closure", "Uri_decodeComponent", 7);
    _instance_1_i(A.Iterable.prototype, "get$contains", "contains$1", 11);
    _instance_1_i(A.StringBuffer.prototype, "get$write", "write$1", 37);
    _static(A, "math0__max$closure", 2, null, ["call$1$2", "call$2"], ["max", function(a, b) {
      return A.max(a, b, type$.num);
    }], 628, 1);
    _instance_1_u(A.ArgResults.prototype, "get$wasParsed", "wasParsed$1", 10);
    _instance_1_u(_ = A.StreamCompleter.prototype, "get$setSourceStream", "setSourceStream$1", 37);
    _instance(_, "get$setError", 0, 1, function() {
      return [null];
    }, ["call$2", "call$1"], ["setError$2", "setError$1"], 172, 0, 0);
    _instance_0_u(_ = A.StreamGroup.prototype, "get$_onListen", "_onListen$0", 0);
    _instance_0_u(_, "get$_onPause", "_onPause$0", 0);
    _instance_0_u(_, "get$_onResume", "_onResume$0", 0);
    _instance_0_u(_, "get$_onCancel", "_onCancel$0", 284);
    _instance_0_i(A.ReplAdapter.prototype, "get$exit", "exit$0", 0);
    _instance_1_i(A.EmptyUnmodifiableSet.prototype, "get$contains", "contains$1", 11);
    _instance_1_i(A.UnionSet.prototype, "get$contains", "contains$1", 11);
    _instance_1_i(A._DelegatingIterableBase.prototype, "get$contains", "contains$1", 11);
    _instance_1_i(A.MapKeySet.prototype, "get$contains", "contains$1", 11);
    _instance_1_u(A.VersionRange.prototype, "get$allows", "allows$1", 536);
    _instance_1_u(A._IsInvisibleVisitor0.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 19);
    _instance_1_u(A._IsBogusVisitor.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 19);
    _instance_1_u(A._IsUselessVisitor.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 19);
    _instance_1_u(A.SelectorList.prototype, "get$isSuperselector", "isSuperselector$1", 73);
    _instance_1_u(A.PseudoSelector.prototype, "get$isSuperselector", "isSuperselector$1", 16);
    _instance_1_u(A.SimpleSelector.prototype, "get$isSuperselector", "isSuperselector$1", 16);
    _instance_1_u(A.TypeSelector.prototype, "get$isSuperselector", "isSuperselector$1", 16);
    _instance_1_u(A.UniversalSelector.prototype, "get$isSuperselector", "isSuperselector$1", 16);
    _instance_1_u(A.EmptyExtensionStore.prototype, "get$addExtensions", "addExtensions$1", 173);
    _instance_1_u(A.ExtensionStore.prototype, "get$addExtensions", "addExtensions$1", 173);
    _static_1(A, "functions___isUnique$closure", "_isUnique", 16);
    _static_1(A, "color0___opacify$closure", "_opacify", 35);
    _static_1(A, "color0___transparentize$closure", "_transparentize", 35);
    _instance_0_u(_ = A.Parser.prototype, "get$whitespace", "whitespace$0", 0);
    _instance_0_u(_, "get$loudComment", "loudComment$0", 0);
    _instance_0_u(_, "get$string", "string$0", 22);
    _instance(_, "get$error", 1, 2, function() {
      return [null];
    }, ["call$3", "call$2"], ["error$3", "error$2"], 192, 0, 0);
    _instance_0_u(A.SassParser.prototype, "get$loudComment", "loudComment$0", 0);
    _instance(_ = A.StylesheetParser.prototype, "get$_statement", 0, 0, null, ["call$1$root", "call$0"], ["_statement$1$root", "_statement$0"], 356, 0, 0);
    _instance_0_u(_, "get$_declarationChild", "_declarationChild$0", 142);
    _instance_0_u(_, "get$_functionChild", "_functionChild$0", 142);
    _instance(_, "get$_expression", 0, 0, null, ["call$3$bracketList$singleEquals$until", "call$0", "call$2$singleEquals$until", "call$1$bracketList", "call$1$until"], ["_expression$3$bracketList$singleEquals$until", "_expression$0", "_expression$2$singleEquals$until", "_expression$1$bracketList", "_expression$1$until"], 359, 0, 0);
    _instance(A.LazyFileSpan.prototype, "get$message", 1, 1, function() {
      return {color: null};
    }, ["call$2$color", "call$1"], ["message$2$color", "message$1"], 141, 0, 0);
    _instance_1_u(A.LimitedMapView.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_u(A.MergedMapView.prototype, "get$containsKey", "containsKey$1", 11);
    _instance(A.MultiSpan.prototype, "get$message", 1, 1, function() {
      return {color: null};
    }, ["call$2$color", "call$1"], ["message$2$color", "message$1"], 205, 0, 0);
    _instance_1_i(A.NoSourceMapBuffer.prototype, "get$write", "write$1", 37);
    _instance_1_u(A.PrefixedMapView.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_u(A.PublicMemberMapView.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_i(A.SourceMapBuffer.prototype, "get$write", "write$1", 37);
    _instance_1_u(A.UnprefixedMapView.prototype, "get$containsKey", "containsKey$1", 11);
    _static_1(A, "utils__isPublic$closure", "isPublic", 10);
    _static_1(A, "calculation_SassCalculation__simplify$closure", "SassCalculation__simplify", 69);
    _instance_1_u(A.AnySelectorVisitor.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 19);
    _instance(_ = A._EvaluateVisitor0.prototype, "get$_async_evaluate$_interpolationToValue", 0, 1, null, ["call$3$trim$warnForColor", "call$1", "call$2$warnForColor"], ["_async_evaluate$_interpolationToValue$3$trim$warnForColor", "_async_evaluate$_interpolationToValue$1", "_async_evaluate$_interpolationToValue$2$warnForColor"], 426, 0, 0);
    _instance_1_u(_, "get$_async_evaluate$_expressionNode", "_async_evaluate$_expressionNode$1", 221);
    _instance(_ = A._EvaluateVisitor.prototype, "get$_interpolationToValue", 0, 1, null, ["call$3$trim$warnForColor", "call$1", "call$2$warnForColor"], ["_interpolationToValue$3$trim$warnForColor", "_interpolationToValue$1", "_interpolationToValue$2$warnForColor"], 545, 0, 0);
    _instance_1_u(_, "get$_expressionNode", "_expressionNode$1", 221);
    _instance_1_u(_ = A.RecursiveStatementVisitor.prototype, "get$visitContentBlock", "visitContentBlock$1", 626);
    _instance_1_u(_, "get$visitChildren", "visitChildren$1", 627);
    _instance_1_u(_ = A.SelectorSearchVisitor.prototype, "get$visitComplexSelector", "visitComplexSelector$1", "SelectorSearchVisitor.T?(ComplexSelector)");
    _instance_1_u(_, "get$visitSelectorList", "visitSelectorList$1", "SelectorSearchVisitor.T?(SelectorList)");
    _instance_1_u(_ = A._SerializeVisitor.prototype, "get$_visitMediaQuery", "_visitMediaQuery$1", 644);
    _instance_1_u(_, "get$_writeCalculationValue", "_writeCalculationValue$1", 110);
    _instance_1_u(_, "get$visitSelectorList", "visitSelectorList$1", 645);
    _instance_1_u(_, "get$_requiresSemicolon", "_requiresSemicolon$1", 9);
    _instance_1_u(_ = A.StatementSearchVisitor.prototype, "get$visitContentBlock", "visitContentBlock$1", "StatementSearchVisitor.T?(ContentBlock)");
    _instance_1_u(_, "get$visitChildren", "visitChildren$1", "StatementSearchVisitor.T?(List<Statement>)");
    _instance(A.SourceSpanMixin.prototype, "get$message", 1, 1, function() {
      return {color: null};
    }, ["call$2$color", "call$1"], ["message$2$color", "message$1"], 141, 0, 0);
    _static_1(A, "frame_Frame___parseVM_tearOff$closure", "Frame___parseVM_tearOff", 98);
    _static_1(A, "frame_Frame___parseV8_tearOff$closure", "Frame___parseV8_tearOff", 98);
    _static_1(A, "frame_Frame___parseFirefox_tearOff$closure", "Frame___parseFirefox_tearOff", 98);
    _static_1(A, "frame_Frame___parseFriendly_tearOff$closure", "Frame___parseFriendly_tearOff", 98);
    _static_1(A, "trace_Trace___parseVM_tearOff$closure", "Trace___parseVM_tearOff", 292);
    _static_1(A, "trace_Trace___parseFriendly_tearOff$closure", "Trace___parseFriendly_tearOff", 292);
    _static(A, "from_handlers__TransformByHandlers__defaultHandleError$closure", 3, null, ["call$1$3", "call$3"], ["TransformByHandlers__defaultHandleError", function(error, stackTrace, sink) {
      return A.TransformByHandlers__defaultHandleError(error, stackTrace, sink, type$.dynamic);
    }], 631, 0);
    _static(A, "rate_limit___collect$closure", 2, null, ["call$1$2", "call$2"], ["_collect", function($event, soFar) {
      return A._collect($event, soFar, type$.dynamic);
    }], 632, 0);
    _instance_1_u(A.AnySelectorVisitor0.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 18);
    _instance(_ = A._EvaluateVisitor2.prototype, "get$_async_evaluate0$_interpolationToValue", 0, 1, null, ["call$3$trim$warnForColor", "call$1", "call$2$warnForColor"], ["_async_evaluate0$_interpolationToValue$3$trim$warnForColor", "_async_evaluate0$_interpolationToValue$1", "_async_evaluate0$_interpolationToValue$2$warnForColor"], 332, 0, 0);
    _instance_1_u(_, "get$_async_evaluate0$_expressionNode", "_async_evaluate0$_expressionNode$1", 179);
    _static_1(A, "calculation1___assertCalculationValue$closure", "_assertCalculationValue", 110);
    _static_1(A, "calculation1___isValidClampArg$closure", "_isValidClampArg", 11);
    _static_1(A, "calculation0_SassCalculation__simplify$closure", "SassCalculation__simplify0", 69);
    _static_1(A, "color2___opacify$closure", "_opacify0", 36);
    _static_1(A, "color2___transparentize$closure", "_transparentize0", 36);
    _static(A, "compile__compile$closure", 1, function() {
      return [null];
    }, ["call$2", "call$1"], ["compile0", function(path) {
      return A.compile0(path, null);
    }], 633, 0);
    _static(A, "compile__compileString$closure", 1, function() {
      return [null];
    }, ["call$2", "call$1"], ["compileString0", function(text) {
      return A.compileString0(text, null);
    }], 634, 0);
    _static(A, "compile__compileAsync$closure", 1, function() {
      return [null];
    }, ["call$2", "call$1"], ["compileAsync1", function(path) {
      return A.compileAsync1(path, null);
    }], 635, 0);
    _static(A, "compile__compileStringAsync$closure", 1, function() {
      return [null];
    }, ["call$2", "call$1"], ["compileStringAsync1", function(text) {
      return A.compileStringAsync1(text, null);
    }], 636, 0);
    _static_1(A, "compile___parseImporter$closure", "_parseImporter0", 637);
    _static_1(A, "compile___simplifyCalcArg$closure", "_simplifyCalcArg", 69);
    _instance_1_u(A.EmptyExtensionStore0.prototype, "get$addExtensions", "addExtensions$1", 233);
    _instance(_ = A._EvaluateVisitor1.prototype, "get$_evaluate0$_interpolationToValue", 0, 1, null, ["call$3$trim$warnForColor", "call$1", "call$2$warnForColor"], ["_evaluate0$_interpolationToValue$3$trim$warnForColor", "_evaluate0$_interpolationToValue$1", "_evaluate0$_interpolationToValue$2$warnForColor"], 435, 0, 0);
    _instance_1_u(_, "get$_evaluate0$_expressionNode", "_evaluate0$_expressionNode$1", 179);
    _instance_1_u(A.ExtensionStore0.prototype, "get$addExtensions", "addExtensions$1", 233);
    _static_1(A, "functions0___isUnique$closure", "_isUnique0", 15);
    _static_1(A, "immutable__jsToDartList$closure", "jsToDartList", 638);
    _instance(A.LazyFileSpan0.prototype, "get$message", 1, 1, function() {
      return {color: null};
    }, ["call$2$color", "call$1"], ["message$2$color", "message$1"], 141, 0, 0);
    _static_2(A, "legacy__render$closure", "render", 639);
    _static_1(A, "legacy__renderSync$closure", "renderSync", 640);
    _instance_1_u(A.LimitedMapView0.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_u(A.SelectorList0.prototype, "get$isSuperselector", "isSuperselector$1", 72);
    _instance_1_u(A.MergedMapView0.prototype, "get$containsKey", "containsKey$1", 11);
    _instance(A.MultiSpan0.prototype, "get$message", 1, 1, function() {
      return {color: null};
    }, ["call$2$color", "call$1"], ["message$2$color", "message$1"], 205, 0, 0);
    _instance_1_i(A.NoSourceMapBuffer0.prototype, "get$write", "write$1", 37);
    _instance_0_u(_ = A.Parser1.prototype, "get$whitespace", "whitespace$0", 0);
    _instance_0_u(_, "get$loudComment", "loudComment$0", 0);
    _instance_0_u(_, "get$string", "string$0", 22);
    _instance(_, "get$error", 1, 2, function() {
      return [null];
    }, ["call$3", "call$2"], ["error$3", "error$2"], 192, 0, 0);
    _instance_1_u(A.PrefixedMapView0.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_1_u(A.PseudoSelector0.prototype, "get$isSuperselector", "isSuperselector$1", 15);
    _instance_1_u(A.PublicMemberMapView0.prototype, "get$containsKey", "containsKey$1", 11);
    _instance_0_u(A.SassParser0.prototype, "get$loudComment", "loudComment$0", 0);
    _instance_1_u(A._IsInvisibleVisitor2.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 18);
    _instance_1_u(A._IsBogusVisitor0.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 18);
    _instance_1_u(A._IsUselessVisitor0.prototype, "get$visitComplexSelector", "visitComplexSelector$1", 18);
    _instance_1_u(_ = A.SelectorSearchVisitor0.prototype, "get$visitComplexSelector", "visitComplexSelector$1", "SelectorSearchVisitor0.T?(ComplexSelector0)");
    _instance_1_u(_, "get$visitSelectorList", "visitSelectorList$1", "SelectorSearchVisitor0.T?(SelectorList0)");
    _instance_1_u(_ = A._SerializeVisitor0.prototype, "get$_serialize0$_visitMediaQuery", "_serialize0$_visitMediaQuery$1", 555);
    _instance_1_u(_, "get$_serialize0$_writeCalculationValue", "_serialize0$_writeCalculationValue$1", 110);
    _instance_1_u(_, "get$visitSelectorList", "visitSelectorList$1", 556);
    _instance_1_u(_, "get$_serialize0$_requiresSemicolon", "_serialize0$_requiresSemicolon$1", 8);
    _instance_1_u(A.SimpleSelector0.prototype, "get$isSuperselector", "isSuperselector$1", 15);
    _instance_1_i(A.SourceMapBuffer0.prototype, "get$write", "write$1", 37);
    _instance_1_u(_ = A.StatementSearchVisitor0.prototype, "get$visitContentBlock", "visitContentBlock$1", "StatementSearchVisitor0.T?(ContentBlock0)");
    _instance_1_u(_, "get$visitChildren", "visitChildren$1", "StatementSearchVisitor0.T?(List<Statement0>)");
    _instance(_ = A.StylesheetParser0.prototype, "get$_stylesheet0$_statement", 0, 0, null, ["call$1$root", "call$0"], ["_stylesheet0$_statement$1$root", "_stylesheet0$_statement$0"], 573, 0, 0);
    _instance_0_u(_, "get$_stylesheet0$_declarationChild", "_stylesheet0$_declarationChild$0", 145);
    _instance_0_u(_, "get$_stylesheet0$_functionChild", "_stylesheet0$_functionChild$0", 145);
    _instance_1_u(A.TypeSelector0.prototype, "get$isSuperselector", "isSuperselector$1", 15);
    _instance_1_u(A.UniversalSelector0.prototype, "get$isSuperselector", "isSuperselector$1", 15);
    _instance_1_u(A.UnprefixedMapView0.prototype, "get$containsKey", "containsKey$1", 11);
    _static_1(A, "utils1__jsToDartUrl$closure", "jsToDartUrl", 641);
    _static_1(A, "utils1__dartToJSUrl$closure", "dartToJSUrl", 642);
    _static_1(A, "utils0__isPublic$closure", "isPublic0", 10);
    _static(A, "path__absolute$closure", 1, function() {
      return [null, null, null, null, null, null, null, null, null, null, null, null, null, null];
    }, ["call$15", "call$1", "call$2", "call$3", "call$4", "call$5", "call$6"], ["absolute", function(part1) {
      return A.absolute(part1, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
    }, function(part1, part2) {
      return A.absolute(part1, part2, null, null, null, null, null, null, null, null, null, null, null, null, null);
    }, function(part1, part2, part3) {
      return A.absolute(part1, part2, part3, null, null, null, null, null, null, null, null, null, null, null, null);
    }, function(part1, part2, part3, part4) {
      return A.absolute(part1, part2, part3, part4, null, null, null, null, null, null, null, null, null, null, null);
    }, function(part1, part2, part3, part4, part5) {
      return A.absolute(part1, part2, part3, part4, part5, null, null, null, null, null, null, null, null, null, null);
    }, function(part1, part2, part3, part4, part5, part6) {
      return A.absolute(part1, part2, part3, part4, part5, part6, null, null, null, null, null, null, null, null, null);
    }], 643, 0);
    _static_1(A, "path__prettyUri$closure", "prettyUri", 101);
    _static_2(A, "number0__fuzzyLessThan$closure", "fuzzyLessThan", 49);
    _static_2(A, "number0__fuzzyLessThanOrEquals$closure", "fuzzyLessThanOrEquals", 49);
    _static_2(A, "number0__fuzzyGreaterThan$closure", "fuzzyGreaterThan", 49);
    _static_2(A, "number0__fuzzyGreaterThanOrEquals$closure", "fuzzyGreaterThanOrEquals", 49);
    _static_2(A, "number0__moduloLikeSass$closure", "moduloLikeSass", 66);
    _static_1(A, "number0__sqrt$closure", "sqrt", 50);
    _static_1(A, "number0__sin$closure", "sin", 50);
    _static_1(A, "number0__cos$closure", "cos", 50);
    _static_1(A, "number0__tan$closure", "tan", 50);
    _static_1(A, "number0__atan$closure", "atan", 50);
    _static_1(A, "number0__asin$closure", "asin", 50);
    _static_1(A, "number0__acos$closure", "acos", 50);
    _static_2(A, "number2__fuzzyLessThan$closure", "fuzzyLessThan0", 49);
    _static_2(A, "number2__fuzzyLessThanOrEquals$closure", "fuzzyLessThanOrEquals0", 49);
    _static_2(A, "number2__fuzzyGreaterThan$closure", "fuzzyGreaterThan0", 49);
    _static_2(A, "number2__fuzzyGreaterThanOrEquals$closure", "fuzzyGreaterThanOrEquals0", 49);
    _static_1(A, "number2__fuzzyRound$closure", "fuzzyRound0", 646);
    _static_2(A, "number2__moduloLikeSass$closure", "moduloLikeSass0", 66);
    _static_1(A, "number2__sqrt$closure", "sqrt0", 51);
    _static_1(A, "number2__sin$closure", "sin0", 51);
    _static_1(A, "number2__cos$closure", "cos0", 51);
    _static_1(A, "number2__tan$closure", "tan0", 51);
    _static_1(A, "number2__atan$closure", "atan0", 51);
    _static_1(A, "number2__asin$closure", "asin0", 51);
    _static_1(A, "number2__acos$closure", "acos0", 51);
    _static_1(A, "sass__main$closure", "main1", 648);
    _static_1(A, "utils2__validateUrlScheme$closure", "validateUrlScheme", 85);
    _static_1(A, "value0__wrapValue$closure", "wrapValue", 432);
  })();
  (function inheritance() {
    var _mixin = hunkHelpers.mixin,
      _inherit = hunkHelpers.inherit,
      _inheritMany = hunkHelpers.inheritMany;
    _inherit(A.Object, null);
    _inheritMany(A.Object, [A.JS_CONST, J.Interceptor, J.ArrayIterator, A.Iterable, A.CastIterator, A.Closure, A.MapBase, A.Error, A.ListBase, A.SentinelValue, A.ListIterator, A.MappedIterator, A.WhereIterator, A.ExpandIterator, A.TakeIterator, A.SkipIterator, A.SkipWhileIterator, A.EmptyIterator, A.FollowedByIterator, A.WhereTypeIterator, A.FixedLengthListMixin, A.UnmodifiableListMixin, A.Symbol, A._Record, A.MapView, A.ConstantMap, A._KeysOrValuesOrElementsIterator, A.SetBase, A.JSInvocationMirror, A.TypeErrorDecoder, A.NullThrownFromJavaScriptException, A.ExceptionAndStackTrace, A._StackTrace, A._Required, A.LinkedHashMapCell, A.LinkedHashMapKeyIterator, A.JSSyntaxRegExp, A._MatchImplementation, A._AllMatchesIterator, A.StringMatch, A._StringAllMatchesIterator, A._Cell, A._InitializedCell, A.Rti, A._FunctionParameters, A._Type, A._TimerImpl, A._AsyncAwaitCompleter, A._SyncStarIterator, A.AsyncError, A._Completer, A._FutureListener, A._Future, A._AsyncCallbackEntry, A.Stream, A._StreamController, A._SyncStreamControllerDispatch, A._AsyncStreamControllerDispatch, A._BufferingStreamSubscription, A._AddStreamState, A._DelayedEvent, A._DelayedDone, A._PendingEvents, A._StreamIterator, A._ZoneFunction, A._ZoneSpecification, A._ZoneDelegate, A._Zone, A._HashMapKeyIterator, A._LinkedHashSetCell, A._LinkedHashSetIterator, A._MapBaseValueIterator, A._UnmodifiableMapMixin, A._ListQueueIterator, A._UnmodifiableSetMixin, A.Codec, A.Converter, A._Base64Encoder, A.ByteConversionSink, A._JsonStringifier, A.StringConversionSink, A._Utf8Encoder, A._Utf8Decoder, A.DateTime, A.Duration, A._Enum, A.OutOfMemoryError, A.StackOverflowError, A._Exception, A.FormatException, A.MapEntry, A.Null, A._StringStackTrace, A.RuneIterator, A.StringBuffer, A._Uri, A.UriData, A._SimpleUri, A.Expando, A._JSRandom, A.ArgParser, A.ArgResults, A.Option, A.OptionType, A.Parser0, A._Usage, A.ErrorResult, A.ValueResult, A.StreamCompleter, A.StreamGroup, A._StreamGroupState, A.StreamQueue, A._NextRequest, A.Repl, A.ReplAdapter, A.DefaultEquality, A.IterableEquality, A.ListEquality, A._MapEntry, A.MapEquality, A._QueueList_Object_ListMixin, A._DelegatingIterableBase, A.UnmodifiableSetMixin, A.Context, A._PathDirection, A._PathRelation, A.Style, A.ParsedPath, A.PathException, A.Version, A.VersionRange, A.CssMediaQuery, A.MediaQuerySuccessfulMergeResult, A.CssNode, A.__IsInvisibleVisitor_Object_EveryCssVisitor, A.CssValue, A._FakeAstNode, A.Argument, A.ArgumentDeclaration, A.ArgumentInvocation, A.AtRootQuery, A.ConfiguredVariable, A._IsCalculationSafeVisitor, A.BinaryOperationExpression, A.BooleanExpression, A.ColorExpression, A.FunctionExpression, A.IfExpression, A.InterpolatedFunctionExpression, A.ListExpression, A.MapExpression, A.NullExpression, A.NumberExpression, A.ParenthesizedExpression, A.SelectorExpression, A.StringExpression, A.SupportsExpression, A.UnaryOperationExpression, A.ValueExpression, A.VariableExpression, A.DynamicImport, A.StaticImport, A.Interpolation, A.ParentStatement, A.ContentRule, A.DebugRule, A.ErrorRule, A.ExtendRule, A.ForwardRule, A.IfRule, A.IfRuleClause, A.ImportRule, A.IncludeRule, A.LoudComment, A.__HasContentVisitor_Object_StatementSearchVisitor, A.ReturnRule, A.SilentComment, A.UseRule, A.VariableDeclaration, A.WarnRule, A.SupportsAnything, A.SupportsDeclaration, A.SupportsFunction, A.SupportsInterpolation, A.SupportsNegation, A.SupportsOperation, A.Selector, A.__IsInvisibleVisitor_Object_AnySelectorVisitor, A.__IsBogusVisitor_Object_AnySelectorVisitor, A.__IsUselessVisitor_Object_AnySelectorVisitor, A.ComplexSelectorComponent, A.__ParentSelectorVisitor_Object_SelectorSearchVisitor, A.QualifiedName, A.AsyncEnvironment, A._EnvironmentModule0, A.AsyncImportCache, A.AsyncBuiltInCallable, A.BuiltInCallable, A.PlainCssCallable, A.UserDefinedCallable, A.CompileResult, A.Configuration, A.ConfiguredValue, A.Environment, A._EnvironmentModule, A.SourceSpanException, A.SassScriptException, A.ExecutableOptions, A.UsageException, A._Watcher, A.EmptyExtensionStore, A.Extension, A.Extender, A.ExtensionStore, A.ImportCache, A.AsyncImporter, A.ImporterResult, A.InterpolationBuffer, A.InterpolationMap, A.FileSystemException, A._QuietLogger, A.DeprecationHandlingLogger, A.StderrLogger, A.TrackingLogger, A.BuiltInModule, A.ForwardedModuleView, A.ShadowedModuleView, A.Parser, A.StylesheetGraph, A.StylesheetNode, A.Box, A.ModifiableBox, A.LazyFileSpan, A.MultiDirWatcher, A.MultiSpan, A.NoSourceMapBuffer, A.SourceMapBuffer, A.Value, A.CalculationOperation, A._ColorFormatEnum, A.SpanColorFormat, A.AnySelectorVisitor, A._EvaluateVisitor0, A._ImportedCssVisitor0, A._EvaluationContext0, A._CloneCssVisitor, A.Evaluator, A._EvaluateVisitor, A._ImportedCssVisitor, A._EvaluationContext, A.EveryCssVisitor, A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor, A.__FindDependenciesVisitor_Object_RecursiveStatementVisitor, A.DependencyReport, A.RecursiveStatementVisitor, A.ReplaceExpressionVisitor, A.SelectorSearchVisitor, A._SerializeVisitor, A.StatementSearchVisitor, A.Entry, A.Mapping, A.TargetLineEntry, A.TargetEntry, A.SourceFile, A.SourceLocationMixin, A.SourceSpanMixin, A.Highlighter, A._Highlight, A._Line, A.SourceLocation, A.Chain, A.Frame, A.LazyTrace, A.Trace, A.UnparsedFrame, A.StringScanner, A._SpanScannerState, A.AsciiGlyphSet, A.UnicodeGlyphSet, A.WatchEvent, A.ChangeType, A.AnySelectorVisitor0, A.SupportsAnything0, A.Argument0, A.ArgumentDeclaration0, A.ArgumentInvocation0, A.Value0, A.AsyncImporter0, A.AsyncBuiltInCallable0, A.AsyncEnvironment0, A._EnvironmentModule2, A._EvaluateVisitor2, A._ImportedCssVisitor2, A._EvaluationContext2, A.AsyncImportCache0, A.Parser1, A.AtRootQuery0, A.ParentStatement0, A.CssNode0, A.Selector0, A.BinaryOperationExpression0, A.BooleanExpression0, A.Box0, A.ModifiableBox0, A.BuiltInCallable0, A.BuiltInModule0, A.CalculationOperation0, A.CalculationInterpolation, A._CloneCssVisitor0, A.ColorExpression0, A._ColorFormatEnum0, A.SpanColorFormat0, A.CompileResult0, A.ComplexSelectorComponent0, A.Configuration0, A.ConfiguredValue0, A.ConfiguredVariable0, A.ContentRule0, A.DebugRule0, A.SupportsDeclaration0, A.DeprecationHandlingLogger0, A.DynamicImport0, A.EmptyExtensionStore0, A.Environment0, A._EnvironmentModule1, A.ErrorRule0, A._EvaluateVisitor1, A._ImportedCssVisitor1, A._EvaluationContext1, A.EveryCssVisitor0, A.SassScriptException0, A._IsCalculationSafeVisitor0, A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor0, A.ExtendRule0, A.Extension0, A.Extender0, A.ExtensionStore0, A.ForwardRule0, A.ForwardedModuleView0, A.FunctionExpression0, A.SupportsFunction0, A.IfExpression0, A.IfRule0, A.IfRuleClause0, A.NodeImporter, A.ImportCache0, A.ImportRule0, A.IncludeRule0, A.InterpolatedFunctionExpression0, A.Interpolation0, A.SupportsInterpolation0, A.InterpolationBuffer0, A.InterpolationMap0, A.FileSystemException0, A.JSToDartLogger, A.LazyFileSpan0, A.ListExpression0, A.__ParentSelectorVisitor_Object_SelectorSearchVisitor0, A._QuietLogger0, A.LoudComment0, A.MapExpression0, A.CssMediaQuery0, A.MediaQuerySuccessfulMergeResult0, A.__HasContentVisitor_Object_StatementSearchVisitor0, A.MultiSpan0, A.SupportsNegation0, A.NoSourceMapBuffer0, A._FakeAstNode0, A.__IsInvisibleVisitor_Object_EveryCssVisitor0, A.NullExpression0, A.NumberExpression0, A.SupportsOperation0, A.ParenthesizedExpression0, A.PlainCssCallable0, A.QualifiedName0, A.ReplaceExpressionVisitor0, A.ImporterResult0, A.ReturnRule0, A.__IsInvisibleVisitor_Object_AnySelectorVisitor0, A.__IsBogusVisitor_Object_AnySelectorVisitor0, A.__IsUselessVisitor_Object_AnySelectorVisitor0, A.SelectorExpression0, A.SelectorSearchVisitor0, A._SerializeVisitor0, A.ShadowedModuleView0, A.SilentComment0, A.SourceMapBuffer0, A.StatementSearchVisitor0, A.StaticImport0, A.StderrLogger0, A.StringExpression0, A.SupportsExpression0, A.UnaryOperationExpression0, A.UseRule0, A.UserDefinedCallable0, A.CssValue0, A.ValueExpression0, A.VariableExpression0, A.VariableDeclaration0, A.WarnRule0]);
    _inheritMany(J.Interceptor, [J.JSBool, J.JSNull, J.JavaScriptObject, J.JSNumber, J.JSString]);
    _inheritMany(J.JavaScriptObject, [J.LegacyJavaScriptObject, J.JSArray, A.NativeByteBuffer, A.NativeTypedData]);
    _inheritMany(J.LegacyJavaScriptObject, [J.PlainJavaScriptObject, J.UnknownJavaScriptObject, J.JavaScriptFunction, A.Stdin, A.Stdout, A.ReadlineModule, A.ReadlineOptions, A.ReadlineInterface, A.BufferModule, A.BufferConstants, A.Buffer, A.ConsoleModule, A.Console, A.EventEmitter, A.FS, A.FSConstants, A.FSWatcher, A.ReadStream, A.ReadStreamOptions, A.WriteStream, A.WriteStreamOptions, A.FileOptions, A.StatOptions, A.MkdirOptions, A.RmdirOptions, A.WatchOptions, A.WatchFileOptions, A.Stats, A.Promise, A.Date, A.JsError, A.Atomics, A.Modules, A.Module, A.Net, A.Socket, A.NetAddress, A.NetServer, A.NodeJsError, A.Process, A.CPUUsage, A.Release, A.StreamModule, A.Readable, A.Writable, A.Duplex, A.Transform, A.WritableOptions, A.ReadableOptions, A.Immediate, A.Timeout, A.TTY, A.Util, A.JSArray0, A.Chokidar, A.ChokidarOptions, A.ChokidarWatcher, A.JSFunction, A.ImmutableList, A.ImmutableMap, A.NodeImporterResult, A.RenderContext, A.RenderContextOptions, A.RenderContextResult, A.RenderContextResultStats, A.JSClass, A.JSUrl, A._PropertyDescriptor, A.JSArray1, A.Chokidar0, A.ChokidarOptions0, A.ChokidarWatcher0, A._Channels, A._NodeSassColor, A.CompileOptions, A.NodeCompileResult, A.Exports, A.LoggerNamespace, A.FiberClass, A.Fiber, A.JSFunction0, A.ImmutableList0, A.ImmutableMap0, A.JSImporter, A.CanonicalizeContext, A.JSImporterResult, A.NodeImporterResult0, A._ConstructorOptions, A._NodeSassList, A.JSLogger, A.WarnOptions, A.DebugOptions, A._NodeSassMap, A._ConstructorOptions0, A._NodeSassNumber, A.JSClass0, A.RenderContext0, A.RenderContextOptions0, A.RenderContextResult0, A.RenderContextResultStats0, A.RenderOptions, A.RenderResult, A.RenderResultStats, A._Exports, A._ConstructorOptions1, A._NodeSassString, A.Types, A.JSUrl0, A._PropertyDescriptor0]);
    _inherit(J.JSUnmodifiableArray, J.JSArray);
    _inheritMany(J.JSNumber, [J.JSInt, J.JSNumNotInt]);
    _inheritMany(A.Iterable, [A._CastIterableBase, A.EfficientLengthIterable, A.MappedIterable, A.WhereIterable, A.ExpandIterable, A.TakeIterable, A.SkipIterable, A.SkipWhileIterable, A.FollowedByIterable, A.WhereTypeIterable, A._KeysOrValues, A._AllMatchesIterable, A._StringAllMatchesIterable, A._SyncStarIterable, A.Runes, A._EmptyUnmodifiableSet_IterableBase_UnmodifiableSetMixin, A._PrefixedKeys, A._UnprefixedKeys, A._PrefixedKeys0, A._UnprefixedKeys0]);
    _inheritMany(A._CastIterableBase, [A.CastIterable, A.__CastListBase__CastIterableBase_ListMixin, A.CastSet]);
    _inherit(A._EfficientLengthCastIterable, A.CastIterable);
    _inherit(A._CastListBase, A.__CastListBase__CastIterableBase_ListMixin);
    _inheritMany(A.Closure, [A.Closure2Args, A.CastMap_entries_closure, A.Closure0Args, A.Instantiation, A.TearOffClosure, A.JsLinkedHashMap_values_closure, A.initHooks_closure, A.initHooks_closure1, A._AsyncRun__initializeScheduleImmediate_internalCallback, A._AsyncRun__initializeScheduleImmediate_closure, A._awaitOnObject_closure, A.Future_wait_closure, A._Future__chainForeignFuture_closure, A._Future__propagateToListeners_handleWhenCompleteCallback_closure, A.Stream_Stream$fromFuture_closure, A.Stream_length_closure, A._CustomZone_bindUnaryCallback_closure, A._RootZone_bindUnaryCallback_closure, A._HashMap_values_closure, A._LinkedCustomHashMap_closure, A.MapBase_entries_closure, A._Uri__makePath_closure, A._createTables_setChars, A._createTables_setRange, A.jsify__convert, A.ArgParser__addOption_closure, A._Usage__writeOption_closure, A._Usage__buildAllowedList_closure, A.StreamGroup__onListen_closure, A.StreamGroup__onCancel_closure, A.StreamQueue__ensureListening_closure, A.alwaysValid_closure, A.ReplAdapter_runAsync__closure, A.UnionSet__iterable_closure, A.UnionSet_contains_closure, A.MapKeySet_difference_closure, A.promiseToFuture_closure, A.promiseToFuture_closure0, A.futureToPromise__closure, A.Context_joinAll_closure, A.Context_split_closure, A._validateArgList_closure, A.ParsedPath__splitExtension_closure, A.PathMap__create_closure0, A.PathMap__create_closure1, A.WindowsStyle_absolutePathToUri_closure, A.Version__splitParts_closure, A.ModifiableCssNode_hasFollowingSibling_closure, A.ArgumentDeclaration_verify_closure, A.ArgumentDeclaration_verify_closure0, A._IsCalculationSafeVisitor_visitListExpression_closure, A.ListExpression_toString_closure, A.Interpolation_toString_closure, A.EachRule_toString_closure, A.IfRuleClause$__closure, A.IfRuleClause$___closure, A.ParentStatement_closure, A.ParentStatement__closure, A._IsBogusVisitor_visitComplexSelector_closure, A._IsUselessVisitor_visitComplexSelector_closure, A.ComplexSelectorComponent_toString_closure, A.IDSelector_unify_closure, A.SelectorList_asSassList_closure, A.SelectorList_resolveParentSelectors_closure, A.SelectorList_resolveParentSelectors__closure, A.SelectorList_resolveParentSelectors__closure0, A.SelectorList__resolveParentSelectorsCompound_closure, A.SelectorList__resolveParentSelectorsCompound_closure0, A.SelectorList__resolveParentSelectorsCompound_closure1, A.SelectorList_withAdditionalCombinators_closure, A.PseudoSelector_specificity__closure, A.PseudoSelector_specificity__closure0, A.PseudoSelector_unify_closure, A.SimpleSelector_isSuperselector_closure, A.SimpleSelector_isSuperselector__closure, A._compileStylesheet_closure0, A.AsyncEnvironment__getVariableFromGlobalModule_closure, A.AsyncEnvironment_setVariable_closure0, A.AsyncEnvironment__getFunctionFromGlobalModule_closure, A.AsyncEnvironment__getMixinFromGlobalModule_closure, A.AsyncEnvironment_toModule_closure, A.AsyncEnvironment_toDummyModule_closure, A._EnvironmentModule__EnvironmentModule_closure5, A._EnvironmentModule__EnvironmentModule_closure6, A._EnvironmentModule__EnvironmentModule_closure7, A._EnvironmentModule__EnvironmentModule_closure8, A._EnvironmentModule__EnvironmentModule_closure9, A._EnvironmentModule__EnvironmentModule_closure10, A.AsyncImportCache_humanize_closure, A.AsyncImportCache_humanize_closure0, A.AsyncImportCache_humanize_closure1, A.AsyncImportCache_humanize_closure2, A.AsyncBuiltInCallable$mixin_closure, A.BuiltInCallable$mixin_closure, A._compileStylesheet_closure, A.Deprecation_fromId_closure, A.Environment__getVariableFromGlobalModule_closure, A.Environment_setVariable_closure0, A.Environment__getFunctionFromGlobalModule_closure, A.Environment__getMixinFromGlobalModule_closure, A.Environment_toModule_closure, A.Environment_toDummyModule_closure, A._EnvironmentModule__EnvironmentModule_closure, A._EnvironmentModule__EnvironmentModule_closure0, A._EnvironmentModule__EnvironmentModule_closure1, A._EnvironmentModule__EnvironmentModule_closure2, A._EnvironmentModule__EnvironmentModule_closure3, A._EnvironmentModule__EnvironmentModule_closure4, A._writeSourceMap_closure, A.ExecutableOptions_emitErrorCss_closure, A.watch_closure, A._Watcher__debounceEvents_closure, A.ExtensionStore_extensionsWhereTarget_closure, A.ExtensionStore__extendComplex_closure, A.ExtensionStore__extendComplex__closure, A.ExtensionStore__extendCompound_closure, A.ExtensionStore__extendCompound_closure0, A.ExtensionStore__extendCompound_closure1, A.ExtensionStore__extendSimple_withoutPseudo, A.ExtensionStore__extendSimple_closure, A.ExtensionStore__extendSimple_closure0, A.ExtensionStore__extendPseudo_closure, A.ExtensionStore__extendPseudo_closure0, A.ExtensionStore__extendPseudo_closure1, A.ExtensionStore__extendPseudo_closure2, A.ExtensionStore__extendPseudo_closure3, A.ExtensionStore__trim_closure, A.ExtensionStore__trim_closure0, A.unifyComplex_closure1, A._weaveParents_closure2, A._weaveParents_closure3, A._weaveParents_closure4, A._mustUnify_closure, A._mustUnify__closure, A.paths__closure, A.paths___closure, A.listIsSuperselector_closure, A.listIsSuperselector__closure, A.complexIsSuperselector_closure, A.complexIsSuperselector_closure0, A._compatibleWithPreviousCombinator_closure, A._selectorPseudoIsSuperselector_closure, A._selectorPseudoIsSuperselector_closure0, A._selectorPseudoIsSuperselector_closure1, A._selectorPseudoIsSuperselector_closure2, A._selectorPseudoIsSuperselector_closure3, A._selectorPseudoIsSuperselector__closure, A._selectorPseudoIsSuperselector___closure0, A._selectorPseudoIsSuperselector___closure1, A._selectorPseudoIsSuperselector_closure4, A._selectorPseudoIsSuperselector_closure5, A._selectorPseudoArgs_closure, A._selectorPseudoArgs_closure0, A.globalFunctions_closure, A.global_closure0, A.global_closure1, A.global_closure2, A.global_closure3, A.global_closure4, A.global_closure5, A.global_closure6, A.global_closure7, A.global_closure8, A.global_closure9, A.global_closure10, A.global_closure11, A.global_closure12, A.global_closure13, A.global_closure14, A.global_closure15, A.global_closure16, A.global_closure17, A.global_closure18, A.global_closure19, A.global_closure20, A.global_closure21, A.global_closure22, A.global_closure23, A.global_closure24, A.global_closure25, A.global__closure, A.global_closure26, A.module_closure1, A.module_closure2, A.module_closure3, A.module_closure4, A.module_closure5, A.module_closure6, A.module_closure7, A.module_closure8, A.module__closure1, A.module_closure9, A._red_closure, A._green_closure, A._blue_closure, A._mix_closure, A._hue_closure, A._saturation_closure, A._lightness_closure, A._complement_closure, A._adjust_closure, A._scale_closure, A._change_closure, A._ieHexStr_closure, A._ieHexStr_closure_hexString, A._updateComponents_getParam, A._updateComponents_closure, A._updateComponents_closure0, A._updateComponents_updateValue, A._functionString_closure, A._removedColorFunction_closure, A._rgb_closure, A._hsl_closure, A._hwb_closure, A._parseChannels_closure0, A._length_closure0, A._nth_closure, A._setNth_closure, A._join_closure, A._append_closure0, A._zip_closure, A._zip__closure, A._zip__closure0, A._zip__closure1, A._index_closure0, A._separator_closure, A._isBracketed_closure, A._slash_closure, A._get_closure, A._set_closure, A._set__closure1, A._set_closure0, A._set__closure0, A._merge_closure, A._merge_closure0, A._merge__closure0, A._deepMerge_closure, A._deepRemove_closure, A._deepRemove__closure, A._remove_closure, A._remove_closure0, A._keys_closure, A._values_closure, A._hasKey_closure, A._modify_modifyNestedMap, A.global_closure, A.module_closure0, A._ceil_closure, A._clamp_closure, A._floor_closure, A._max_closure, A._min_closure, A._round_closure, A._hypot_closure, A._hypot__closure, A._log_closure, A._pow_closure, A._atan2_closure, A._compatible_closure, A._isUnitless_closure, A._unit_closure, A._percentage_closure, A._randomFunction_closure, A._div_closure, A._singleArgumentMathFunc_closure, A._numberFunction_closure, A.global_closure27, A.global_closure28, A.global_closure29, A.global_closure30, A.local_closure, A.local_closure0, A.local__closure0, A.local_closure1, A._nest_closure, A._nest__closure, A._append_closure, A._append__closure, A._append___closure, A._extend_closure, A._replace_closure, A._unify_closure, A._isSuperselector_closure, A._simpleSelectors_closure, A._simpleSelectors__closure, A._parse_closure, A.module_closure, A.module__closure, A.module__closure0, A._unquote_closure, A._quote_closure, A._length_closure, A._insert_closure, A._index_closure, A._slice_closure, A._toUpperCase_closure, A._toLowerCase_closure, A._uniqueId_closure, A.ImportCache_humanize_closure, A.ImportCache_humanize_closure0, A.ImportCache_humanize_closure1, A.ImportCache_humanize_closure2, A.FilesystemImporter_canonicalize_closure, A._exactlyOne_closure0, A.InterpolationMap_mapException_closure, A._realCasePath_helper, A._realCasePath_helper__closure, A.readStdin_closure, A.readStdin_closure0, A.readStdin_closure1, A.readStdin_closure2, A.listDir__closure, A.listDir__closure0, A.listDir_closure_list, A.listDir__list_closure, A.watchDir_closure, A.watchDir_closure0, A.watchDir_closure1, A.watchDir_closure2, A.DeprecationHandlingLogger_summarize_closure, A.DeprecationHandlingLogger_summarize_closure0, A._disallowedFunctionNames_closure, A.Parser_escape_closure, A.Parser_scanIdentChar_matches, A.SassParser_styleRuleSelector_closure, A.SassParser__peekIndentation_closure, A.SassParser__peekIndentation_closure0, A.StylesheetParser_parse__closure0, A.StylesheetParser__expression_addSingleExpression, A.StylesheetParser__expression_addOperator, A.StylesheetParser__isHexColor_closure0, A.StylesheetParser__unicodeRange_closure, A.StylesheetParser__unicodeRange_closure0, A.StylesheetParser_trySpecialFunction_closure, A.StylesheetGraph_modifiedSince_transitiveModificationTime, A.MapExtensions_get_pairs_closure, A._PrefixedKeys_iterator_closure, A.SourceMapBuffer_buildSourceMap_closure, A._UnprefixedKeys_iterator_closure, A._UnprefixedKeys_iterator_closure0, A.indent_closure, A.flattenVertically_closure, A.flattenVertically_closure0, A.SassCalculation__verifyLength_closure, A.SassColor_SassColor$hwb_toRgb, A.SassList_isBlank_closure, A.SassNumber__coerceOrConvertValue_closure, A.SassNumber__coerceOrConvertValue_closure1, A.SassNumber_multiplyUnits_closure7, A.SassNumber_multiplyUnits_closure9, A.SassNumber__areAnyConvertible_closure, A.SassNumber__canonicalizeUnitList_closure, A.SassNumber_unitSuggestion_closure, A.SassNumber_unitSuggestion_closure0, A.SingleUnitSassNumber__coerceToUnit_closure, A.SingleUnitSassNumber__coerceValueToUnit_closure, A.SingleUnitSassNumber_multiplyUnits_closure, A.AnySelectorVisitor_visitComplexSelector_closure, A.AnySelectorVisitor_visitCompoundSelector_closure, A._EvaluateVisitor_closure12, A._EvaluateVisitor_closure13, A._EvaluateVisitor_closure14, A._EvaluateVisitor_closure15, A._EvaluateVisitor_closure16, A._EvaluateVisitor_closure17, A._EvaluateVisitor_closure18, A._EvaluateVisitor_closure19, A._EvaluateVisitor_closure20, A._EvaluateVisitor_closure21, A._EvaluateVisitor_closure22, A._EvaluateVisitor_closure23, A._EvaluateVisitor_closure24, A._EvaluateVisitor__loadModule__closure1, A._EvaluateVisitor__combineCss_closure1, A._EvaluateVisitor__combineCss_closure2, A._EvaluateVisitor__combineCss_visitModule0, A._EvaluateVisitor__extendModules_closure1, A._EvaluateVisitor__scopeForAtRoot_closure5, A._EvaluateVisitor__scopeForAtRoot_closure6, A._EvaluateVisitor__scopeForAtRoot_closure7, A._EvaluateVisitor__scopeForAtRoot_closure8, A._EvaluateVisitor__scopeForAtRoot_closure9, A._EvaluateVisitor__scopeForAtRoot_closure10, A._EvaluateVisitor_visitEachRule_closure2, A._EvaluateVisitor_visitEachRule_closure3, A._EvaluateVisitor_visitEachRule__closure0, A._EvaluateVisitor_visitEachRule___closure0, A._EvaluateVisitor_visitAtRule_closure2, A._EvaluateVisitor_visitAtRule_closure4, A._EvaluateVisitor_visitForRule__closure0, A._EvaluateVisitor_visitIfRule_closure0, A._EvaluateVisitor_visitIfRule___closure0, A._EvaluateVisitor__visitDynamicImport__closure3, A._EvaluateVisitor__visitDynamicImport__closure4, A._EvaluateVisitor__visitDynamicImport__closure5, A._EvaluateVisitor_visitIncludeRule_closure3, A._EvaluateVisitor_visitMediaRule_closure2, A._EvaluateVisitor_visitMediaRule_closure4, A._EvaluateVisitor_visitStyleRule_closure5, A._EvaluateVisitor_visitStyleRule_closure7, A._EvaluateVisitor_visitStyleRule_closure8, A._EvaluateVisitor_visitSupportsRule_closure2, A._EvaluateVisitor_visitWhileRule__closure0, A._EvaluateVisitor__slash_recommendation0, A._EvaluateVisitor_visitListExpression_closure0, A._EvaluateVisitor_visitFunctionExpression_closure3, A._EvaluateVisitor__checkCalculationArguments_check0, A._EvaluateVisitor__runUserDefinedCallable____closure0, A._EvaluateVisitor__runBuiltInCallable_closure4, A._EvaluateVisitor__evaluateArguments_closure3, A._EvaluateVisitor__evaluateArguments_closure4, A._EvaluateVisitor__evaluateArguments_closure6, A._EvaluateVisitor__evaluateMacroArguments_closure3, A._EvaluateVisitor__evaluateMacroArguments_closure4, A._EvaluateVisitor__evaluateMacroArguments_closure6, A._EvaluateVisitor_visitCssAtRule_closure2, A._EvaluateVisitor_visitCssKeyframeBlock_closure2, A._EvaluateVisitor_visitCssMediaRule_closure2, A._EvaluateVisitor_visitCssMediaRule_closure4, A._EvaluateVisitor_visitCssStyleRule_closure3, A._EvaluateVisitor_visitCssSupportsRule_closure2, A._EvaluateVisitor__performInterpolationHelper_closure0, A._EvaluateVisitor__withoutSlash_recommendation0, A._EvaluateVisitor__stackFrame_closure0, A._ImportedCssVisitor_visitCssAtRule_closure0, A._ImportedCssVisitor_visitCssMediaRule_closure0, A._ImportedCssVisitor_visitCssStyleRule_closure0, A._ImportedCssVisitor_visitCssSupportsRule_closure0, A._EvaluateVisitor_closure, A._EvaluateVisitor_closure0, A._EvaluateVisitor_closure1, A._EvaluateVisitor_closure2, A._EvaluateVisitor_closure3, A._EvaluateVisitor_closure4, A._EvaluateVisitor_closure5, A._EvaluateVisitor_closure6, A._EvaluateVisitor_closure7, A._EvaluateVisitor_closure8, A._EvaluateVisitor_closure9, A._EvaluateVisitor_closure10, A._EvaluateVisitor_closure11, A._EvaluateVisitor__loadModule__closure, A._EvaluateVisitor__combineCss_closure, A._EvaluateVisitor__combineCss_closure0, A._EvaluateVisitor__combineCss_visitModule, A._EvaluateVisitor__extendModules_closure, A._EvaluateVisitor__scopeForAtRoot_closure, A._EvaluateVisitor__scopeForAtRoot_closure0, A._EvaluateVisitor__scopeForAtRoot_closure1, A._EvaluateVisitor__scopeForAtRoot_closure2, A._EvaluateVisitor__scopeForAtRoot_closure3, A._EvaluateVisitor__scopeForAtRoot_closure4, A._EvaluateVisitor_visitEachRule_closure, A._EvaluateVisitor_visitEachRule_closure0, A._EvaluateVisitor_visitEachRule__closure, A._EvaluateVisitor_visitEachRule___closure, A._EvaluateVisitor_visitAtRule_closure, A._EvaluateVisitor_visitAtRule_closure1, A._EvaluateVisitor_visitForRule__closure, A._EvaluateVisitor_visitIfRule_closure, A._EvaluateVisitor_visitIfRule___closure, A._EvaluateVisitor__visitDynamicImport__closure, A._EvaluateVisitor__visitDynamicImport__closure0, A._EvaluateVisitor__visitDynamicImport__closure1, A._EvaluateVisitor_visitIncludeRule_closure0, A._EvaluateVisitor_visitMediaRule_closure, A._EvaluateVisitor_visitMediaRule_closure1, A._EvaluateVisitor_visitStyleRule_closure0, A._EvaluateVisitor_visitStyleRule_closure2, A._EvaluateVisitor_visitStyleRule_closure3, A._EvaluateVisitor_visitSupportsRule_closure0, A._EvaluateVisitor_visitWhileRule__closure, A._EvaluateVisitor__slash_recommendation, A._EvaluateVisitor_visitListExpression_closure, A._EvaluateVisitor_visitFunctionExpression_closure0, A._EvaluateVisitor__checkCalculationArguments_check, A._EvaluateVisitor__runUserDefinedCallable____closure, A._EvaluateVisitor__runBuiltInCallable_closure1, A._EvaluateVisitor__evaluateArguments_closure, A._EvaluateVisitor__evaluateArguments_closure0, A._EvaluateVisitor__evaluateArguments_closure2, A._EvaluateVisitor__evaluateMacroArguments_closure, A._EvaluateVisitor__evaluateMacroArguments_closure0, A._EvaluateVisitor__evaluateMacroArguments_closure2, A._EvaluateVisitor_visitCssAtRule_closure0, A._EvaluateVisitor_visitCssKeyframeBlock_closure0, A._EvaluateVisitor_visitCssMediaRule_closure, A._EvaluateVisitor_visitCssMediaRule_closure1, A._EvaluateVisitor_visitCssStyleRule_closure0, A._EvaluateVisitor_visitCssSupportsRule_closure0, A._EvaluateVisitor__performInterpolationHelper_closure, A._EvaluateVisitor__withoutSlash_recommendation, A._EvaluateVisitor__stackFrame_closure, A._ImportedCssVisitor_visitCssAtRule_closure, A._ImportedCssVisitor_visitCssMediaRule_closure, A._ImportedCssVisitor_visitCssStyleRule_closure, A._ImportedCssVisitor_visitCssSupportsRule_closure, A.EveryCssVisitor_visitCssAtRule_closure, A.EveryCssVisitor_visitCssKeyframeBlock_closure, A.EveryCssVisitor_visitCssMediaRule_closure, A.EveryCssVisitor_visitCssStyleRule_closure, A.EveryCssVisitor_visitCssStylesheet_closure, A.EveryCssVisitor_visitCssSupportsRule_closure, A.ReplaceExpressionVisitor_visitListExpression_closure, A.ReplaceExpressionVisitor_visitArgumentInvocation_closure, A.ReplaceExpressionVisitor_visitInterpolation_closure, A.SelectorSearchVisitor_visitComplexSelector_closure, A.SelectorSearchVisitor_visitCompoundSelector_closure, A.serialize_closure, A._SerializeVisitor_visitList_closure, A._SerializeVisitor_visitList_closure0, A._SerializeVisitor_visitList_closure1, A._SerializeVisitor_visitMap_closure, A._SerializeVisitor_visitSelectorList_closure, A.StatementSearchVisitor_visitIfRule_closure, A.StatementSearchVisitor_visitIfRule__closure0, A.StatementSearchVisitor_visitIfRule_closure0, A.StatementSearchVisitor_visitIfRule__closure, A.StatementSearchVisitor_visitChildren_closure, A.SingleMapping_SingleMapping$fromEntries_closure1, A.SingleMapping_toJson_closure, A.Highlighter$__closure, A.Highlighter$___closure, A.Highlighter$__closure0, A.Highlighter__collateLines_closure, A.Highlighter__collateLines_closure1, A.Highlighter__collateLines__closure, A.Highlighter_highlight_closure, A.Chain_Chain$parse_closure, A.Chain_toTrace_closure, A.Chain_toString_closure0, A.Chain_toString__closure0, A.Chain_toString_closure, A.Chain_toString__closure, A.Trace__parseVM_closure, A.Trace$parseV8_closure, A.Trace$parseJSCore_closure, A.Trace$parseFirefox_closure, A.Trace$parseFriendly_closure, A.Trace_terse_closure, A.Trace_foldFrames_closure, A.Trace_foldFrames_closure0, A.Trace_toString_closure0, A.Trace_toString_closure, A.TransformByHandlers_transformByHandlers__closure, A.RateLimit__debounceAggregate_closure0, A.AnySelectorVisitor_visitComplexSelector_closure0, A.AnySelectorVisitor_visitCompoundSelector_closure0, A.ArgumentDeclaration_verify_closure1, A.ArgumentDeclaration_verify_closure2, A.argumentListClass__closure, A.argumentListClass__closure0, A.AsyncBuiltInCallable$mixin_closure0, A._compileStylesheet_closure2, A.AsyncEnvironment__getVariableFromGlobalModule_closure0, A.AsyncEnvironment_setVariable_closure3, A.AsyncEnvironment__getFunctionFromGlobalModule_closure0, A.AsyncEnvironment__getMixinFromGlobalModule_closure0, A.AsyncEnvironment_toModule_closure0, A.AsyncEnvironment_toDummyModule_closure0, A._EnvironmentModule__EnvironmentModule_closure17, A._EnvironmentModule__EnvironmentModule_closure18, A._EnvironmentModule__EnvironmentModule_closure19, A._EnvironmentModule__EnvironmentModule_closure20, A._EnvironmentModule__EnvironmentModule_closure21, A._EnvironmentModule__EnvironmentModule_closure22, A._EvaluateVisitor_closure38, A._EvaluateVisitor_closure39, A._EvaluateVisitor_closure40, A._EvaluateVisitor_closure41, A._EvaluateVisitor_closure42, A._EvaluateVisitor_closure43, A._EvaluateVisitor_closure44, A._EvaluateVisitor_closure45, A._EvaluateVisitor_closure46, A._EvaluateVisitor_closure47, A._EvaluateVisitor_closure48, A._EvaluateVisitor_closure49, A._EvaluateVisitor_closure50, A._EvaluateVisitor__loadModule__closure5, A._EvaluateVisitor__combineCss_closure5, A._EvaluateVisitor__combineCss_closure6, A._EvaluateVisitor__combineCss_visitModule2, A._EvaluateVisitor__extendModules_closure5, A._EvaluateVisitor__scopeForAtRoot_closure17, A._EvaluateVisitor__scopeForAtRoot_closure18, A._EvaluateVisitor__scopeForAtRoot_closure19, A._EvaluateVisitor__scopeForAtRoot_closure20, A._EvaluateVisitor__scopeForAtRoot_closure21, A._EvaluateVisitor__scopeForAtRoot_closure22, A._EvaluateVisitor_visitEachRule_closure8, A._EvaluateVisitor_visitEachRule_closure9, A._EvaluateVisitor_visitEachRule__closure2, A._EvaluateVisitor_visitEachRule___closure2, A._EvaluateVisitor_visitAtRule_closure8, A._EvaluateVisitor_visitAtRule_closure10, A._EvaluateVisitor_visitForRule__closure2, A._EvaluateVisitor_visitIfRule_closure2, A._EvaluateVisitor_visitIfRule___closure2, A._EvaluateVisitor__visitDynamicImport__closure11, A._EvaluateVisitor__visitDynamicImport__closure12, A._EvaluateVisitor__visitDynamicImport__closure13, A._EvaluateVisitor_visitIncludeRule_closure9, A._EvaluateVisitor_visitMediaRule_closure8, A._EvaluateVisitor_visitMediaRule_closure10, A._EvaluateVisitor_visitStyleRule_closure15, A._EvaluateVisitor_visitStyleRule_closure17, A._EvaluateVisitor_visitStyleRule_closure18, A._EvaluateVisitor_visitSupportsRule_closure6, A._EvaluateVisitor_visitWhileRule__closure2, A._EvaluateVisitor__slash_recommendation2, A._EvaluateVisitor_visitListExpression_closure2, A._EvaluateVisitor_visitFunctionExpression_closure9, A._EvaluateVisitor__checkCalculationArguments_check2, A._EvaluateVisitor__runUserDefinedCallable____closure2, A._EvaluateVisitor__runBuiltInCallable_closure10, A._EvaluateVisitor__evaluateArguments_closure11, A._EvaluateVisitor__evaluateArguments_closure12, A._EvaluateVisitor__evaluateArguments_closure14, A._EvaluateVisitor__evaluateMacroArguments_closure11, A._EvaluateVisitor__evaluateMacroArguments_closure12, A._EvaluateVisitor__evaluateMacroArguments_closure14, A._EvaluateVisitor_visitCssAtRule_closure6, A._EvaluateVisitor_visitCssKeyframeBlock_closure6, A._EvaluateVisitor_visitCssMediaRule_closure8, A._EvaluateVisitor_visitCssMediaRule_closure10, A._EvaluateVisitor_visitCssStyleRule_closure9, A._EvaluateVisitor_visitCssSupportsRule_closure6, A._EvaluateVisitor__performInterpolationHelper_closure2, A._EvaluateVisitor__withoutSlash_recommendation2, A._EvaluateVisitor__stackFrame_closure2, A._ImportedCssVisitor_visitCssAtRule_closure2, A._ImportedCssVisitor_visitCssMediaRule_closure2, A._ImportedCssVisitor_visitCssStyleRule_closure2, A._ImportedCssVisitor_visitCssSupportsRule_closure2, A.AsyncImportCache_humanize_closure3, A.AsyncImportCache_humanize_closure4, A.AsyncImportCache_humanize_closure5, A.AsyncImportCache_humanize_closure6, A.booleanClass__closure, A.legacyBooleanClass__closure, A.legacyBooleanClass__closure0, A.BuiltInCallable$mixin_closure0, A.calculationClass__closure, A.calculationClass__closure0, A.calculationClass__closure1, A.calculationClass__closure2, A.calculationClass__closure3, A.calculationClass__closure4, A.calculationClass__closure5, A.calculationOperationClass__closure, A.calculationOperationClass___closure, A.calculationOperationClass__closure1, A.calculationOperationClass__closure2, A.calculationOperationClass__closure3, A.calculationOperationClass__closure4, A.calculationInterpolationClass__closure1, A.calculationInterpolationClass__closure2, A.SassCalculation__verifyLength_closure0, A.global_closure32, A.global_closure33, A.global_closure34, A.global_closure35, A.global_closure36, A.global_closure37, A.global_closure38, A.global_closure39, A.global_closure40, A.global_closure41, A.global_closure42, A.global_closure43, A.global_closure44, A.global_closure45, A.global_closure46, A.global_closure47, A.global_closure48, A.global_closure49, A.global_closure50, A.global_closure51, A.global_closure52, A.global_closure53, A.global_closure54, A.global_closure55, A.global_closure56, A.global_closure57, A.global__closure0, A.global_closure58, A.module_closure12, A.module_closure13, A.module_closure14, A.module_closure15, A.module_closure16, A.module_closure17, A.module_closure18, A.module_closure19, A.module__closure4, A.module_closure20, A._red_closure0, A._green_closure0, A._blue_closure0, A._mix_closure0, A._hue_closure0, A._saturation_closure0, A._lightness_closure0, A._complement_closure0, A._adjust_closure0, A._scale_closure0, A._change_closure0, A._ieHexStr_closure0, A._ieHexStr_closure_hexString0, A._updateComponents_getParam0, A._updateComponents_closure1, A._updateComponents_closure2, A._updateComponents_updateValue0, A._functionString_closure0, A._removedColorFunction_closure0, A._rgb_closure0, A._hsl_closure0, A._hwb_closure0, A._parseChannels_closure3, A.colorClass__closure1, A.colorClass__closure2, A.colorClass__closure3, A.colorClass__closure4, A.colorClass__closure5, A.colorClass__closure6, A.colorClass__closure7, A.colorClass__closure8, A.colorClass__closure9, A.legacyColorClass_closure, A.legacyColorClass_closure0, A.legacyColorClass_closure1, A.legacyColorClass_closure2, A.legacyColorClass_closure3, A.SassColor_SassColor$hwb_toRgb0, A.compileAsync__closure, A.compileStringAsync__closure, A.compileStringAsync__closure0, A._wrapAsyncSassExceptions_closure, A._parseFunctions__closure2, A._parseFunctions__closure3, A._compileStylesheet_closure1, A.ComplexSelectorComponent_toString_closure0, A._disallowedFunctionNames_closure0, A.DeprecationHandlingLogger_summarize_closure1, A.DeprecationHandlingLogger_summarize_closure2, A.EachRule_toString_closure0, A.Environment__getVariableFromGlobalModule_closure0, A.Environment_setVariable_closure3, A.Environment__getFunctionFromGlobalModule_closure0, A.Environment__getMixinFromGlobalModule_closure0, A.Environment_toModule_closure0, A.Environment_toDummyModule_closure0, A._EnvironmentModule__EnvironmentModule_closure11, A._EnvironmentModule__EnvironmentModule_closure12, A._EnvironmentModule__EnvironmentModule_closure13, A._EnvironmentModule__EnvironmentModule_closure14, A._EnvironmentModule__EnvironmentModule_closure15, A._EnvironmentModule__EnvironmentModule_closure16, A._EvaluateVisitor_closure25, A._EvaluateVisitor_closure26, A._EvaluateVisitor_closure27, A._EvaluateVisitor_closure28, A._EvaluateVisitor_closure29, A._EvaluateVisitor_closure30, A._EvaluateVisitor_closure31, A._EvaluateVisitor_closure32, A._EvaluateVisitor_closure33, A._EvaluateVisitor_closure34, A._EvaluateVisitor_closure35, A._EvaluateVisitor_closure36, A._EvaluateVisitor_closure37, A._EvaluateVisitor__loadModule__closure3, A._EvaluateVisitor__combineCss_closure3, A._EvaluateVisitor__combineCss_closure4, A._EvaluateVisitor__combineCss_visitModule1, A._EvaluateVisitor__extendModules_closure3, A._EvaluateVisitor__scopeForAtRoot_closure11, A._EvaluateVisitor__scopeForAtRoot_closure12, A._EvaluateVisitor__scopeForAtRoot_closure13, A._EvaluateVisitor__scopeForAtRoot_closure14, A._EvaluateVisitor__scopeForAtRoot_closure15, A._EvaluateVisitor__scopeForAtRoot_closure16, A._EvaluateVisitor_visitEachRule_closure5, A._EvaluateVisitor_visitEachRule_closure6, A._EvaluateVisitor_visitEachRule__closure1, A._EvaluateVisitor_visitEachRule___closure1, A._EvaluateVisitor_visitAtRule_closure5, A._EvaluateVisitor_visitAtRule_closure7, A._EvaluateVisitor_visitForRule__closure1, A._EvaluateVisitor_visitIfRule_closure1, A._EvaluateVisitor_visitIfRule___closure1, A._EvaluateVisitor__visitDynamicImport__closure7, A._EvaluateVisitor__visitDynamicImport__closure8, A._EvaluateVisitor__visitDynamicImport__closure9, A._EvaluateVisitor_visitIncludeRule_closure6, A._EvaluateVisitor_visitMediaRule_closure5, A._EvaluateVisitor_visitMediaRule_closure7, A._EvaluateVisitor_visitStyleRule_closure10, A._EvaluateVisitor_visitStyleRule_closure12, A._EvaluateVisitor_visitStyleRule_closure13, A._EvaluateVisitor_visitSupportsRule_closure4, A._EvaluateVisitor_visitWhileRule__closure1, A._EvaluateVisitor__slash_recommendation1, A._EvaluateVisitor_visitListExpression_closure1, A._EvaluateVisitor_visitFunctionExpression_closure6, A._EvaluateVisitor__checkCalculationArguments_check1, A._EvaluateVisitor__runUserDefinedCallable____closure1, A._EvaluateVisitor__runBuiltInCallable_closure7, A._EvaluateVisitor__evaluateArguments_closure7, A._EvaluateVisitor__evaluateArguments_closure8, A._EvaluateVisitor__evaluateArguments_closure10, A._EvaluateVisitor__evaluateMacroArguments_closure7, A._EvaluateVisitor__evaluateMacroArguments_closure8, A._EvaluateVisitor__evaluateMacroArguments_closure10, A._EvaluateVisitor_visitCssAtRule_closure4, A._EvaluateVisitor_visitCssKeyframeBlock_closure4, A._EvaluateVisitor_visitCssMediaRule_closure5, A._EvaluateVisitor_visitCssMediaRule_closure7, A._EvaluateVisitor_visitCssStyleRule_closure6, A._EvaluateVisitor_visitCssSupportsRule_closure4, A._EvaluateVisitor__performInterpolationHelper_closure1, A._EvaluateVisitor__withoutSlash_recommendation1, A._EvaluateVisitor__stackFrame_closure1, A._ImportedCssVisitor_visitCssAtRule_closure1, A._ImportedCssVisitor_visitCssMediaRule_closure1, A._ImportedCssVisitor_visitCssStyleRule_closure1, A._ImportedCssVisitor_visitCssSupportsRule_closure1, A.EveryCssVisitor_visitCssAtRule_closure0, A.EveryCssVisitor_visitCssKeyframeBlock_closure0, A.EveryCssVisitor_visitCssMediaRule_closure0, A.EveryCssVisitor_visitCssStyleRule_closure0, A.EveryCssVisitor_visitCssStylesheet_closure0, A.EveryCssVisitor_visitCssSupportsRule_closure0, A.exceptionClass__closure, A.exceptionClass__closure0, A.exceptionClass__closure1, A._IsCalculationSafeVisitor_visitListExpression_closure0, A.ExtensionStore_extensionsWhereTarget_closure0, A.ExtensionStore__extendComplex_closure0, A.ExtensionStore__extendComplex__closure0, A.ExtensionStore__extendCompound_closure2, A.ExtensionStore__extendCompound_closure3, A.ExtensionStore__extendCompound_closure4, A.ExtensionStore__extendSimple_withoutPseudo0, A.ExtensionStore__extendSimple_closure1, A.ExtensionStore__extendSimple_closure2, A.ExtensionStore__extendPseudo_closure4, A.ExtensionStore__extendPseudo_closure5, A.ExtensionStore__extendPseudo_closure6, A.ExtensionStore__extendPseudo_closure7, A.ExtensionStore__extendPseudo_closure8, A.ExtensionStore__trim_closure1, A.ExtensionStore__trim_closure2, A.FilesystemImporter_canonicalize_closure0, A.functionClass__closure, A.functionClass__closure0, A.unifyComplex_closure4, A._weaveParents_closure8, A._weaveParents_closure9, A._weaveParents_closure10, A._mustUnify_closure0, A._mustUnify__closure0, A.paths__closure0, A.paths___closure0, A.listIsSuperselector_closure0, A.listIsSuperselector__closure0, A.complexIsSuperselector_closure1, A.complexIsSuperselector_closure2, A._compatibleWithPreviousCombinator_closure0, A._selectorPseudoIsSuperselector_closure6, A._selectorPseudoIsSuperselector_closure7, A._selectorPseudoIsSuperselector_closure8, A._selectorPseudoIsSuperselector_closure9, A._selectorPseudoIsSuperselector_closure10, A._selectorPseudoIsSuperselector__closure0, A._selectorPseudoIsSuperselector___closure3, A._selectorPseudoIsSuperselector___closure4, A._selectorPseudoIsSuperselector_closure11, A._selectorPseudoIsSuperselector_closure12, A._selectorPseudoArgs_closure1, A._selectorPseudoArgs_closure2, A.globalFunctions_closure0, A.IDSelector_unify_closure0, A.IfRuleClause$__closure0, A.IfRuleClause$___closure0, A.immutableMapToDartMap_closure, A.NodeImporter__tryPath_closure0, A.ImportCache_humanize_closure3, A.ImportCache_humanize_closure4, A.ImportCache_humanize_closure5, A.ImportCache_humanize_closure6, A.Interpolation_toString_closure0, A.InterpolationMap_mapException_closure0, A._realCasePath_helper0, A._realCasePath_helper__closure0, A.listDir__closure1, A.listDir__closure2, A.listDir_closure_list0, A.listDir__list_closure0, A.render_closure0, A._parseFunctions__closure, A._parseFunctions___closure2, A._parseFunctions__closure0, A._parseFunctions__closure1, A._parseFunctions___closure, A._parseImporter_closure, A._parseImporter__closure, A._parseImporter___closure, A.ListExpression_toString_closure0, A._length_closure2, A._nth_closure0, A._setNth_closure0, A._join_closure0, A._append_closure2, A._zip_closure0, A._zip__closure2, A._zip__closure3, A._zip__closure4, A._index_closure2, A._separator_closure0, A._isBracketed_closure0, A._slash_closure0, A.SelectorList_asSassList_closure0, A.SelectorList_resolveParentSelectors_closure0, A.SelectorList_resolveParentSelectors__closure1, A.SelectorList_resolveParentSelectors__closure2, A.SelectorList__resolveParentSelectorsCompound_closure2, A.SelectorList__resolveParentSelectorsCompound_closure3, A.SelectorList__resolveParentSelectorsCompound_closure4, A.SelectorList_withAdditionalCombinators_closure0, A.listClass__closure, A.legacyListClass_closure, A.legacyListClass__closure, A.legacyListClass_closure1, A.legacyListClass_closure2, A.legacyListClass_closure4, A.SassList_isBlank_closure0, A._get_closure0, A._set_closure1, A._set__closure4, A._set_closure2, A._set__closure3, A._merge_closure1, A._merge_closure2, A._merge__closure2, A._deepMerge_closure0, A._deepRemove_closure0, A._deepRemove__closure0, A._remove_closure1, A._remove_closure2, A._keys_closure0, A._values_closure0, A._hasKey_closure0, A._modify_modifyNestedMap0, A.MapExtensions_get_pairs_closure0, A.mapClass__closure, A.mapClass__closure0, A.legacyMapClass_closure, A.legacyMapClass__closure, A.legacyMapClass__closure0, A.legacyMapClass_closure2, A.legacyMapClass_closure3, A.legacyMapClass_closure4, A.global_closure31, A.module_closure11, A._ceil_closure0, A._clamp_closure0, A._floor_closure0, A._max_closure0, A._min_closure0, A._round_closure0, A._hypot_closure0, A._hypot__closure0, A._log_closure0, A._pow_closure0, A._atan2_closure0, A._compatible_closure0, A._isUnitless_closure0, A._unit_closure0, A._percentage_closure0, A._randomFunction_closure0, A._div_closure0, A._singleArgumentMathFunc_closure0, A._numberFunction_closure0, A.global_closure59, A.global_closure60, A.global_closure61, A.global_closure62, A.local_closure2, A.local_closure3, A.local__closure2, A.local_closure4, A.mixinClass__closure, A.mixinClass__closure0, A.ModifiableCssNode_hasFollowingSibling_closure0, A.legacyNullClass__closure, A.numberClass__closure, A.numberClass__closure0, A.numberClass__closure1, A.numberClass__closure2, A.numberClass__closure3, A.numberClass__closure4, A.numberClass__closure5, A.numberClass__closure6, A.numberClass__closure7, A.numberClass__closure8, A.numberClass__closure9, A.numberClass__closure12, A.numberClass__closure13, A.numberClass__closure14, A.numberClass__closure15, A.numberClass__closure16, A.numberClass__closure17, A.numberClass__closure18, A.numberClass__closure19, A.legacyNumberClass_closure, A.legacyNumberClass_closure0, A.legacyNumberClass_closure2, A._parseNumber_closure, A._parseNumber_closure0, A.SassNumber__coerceOrConvertValue_closure3, A.SassNumber__coerceOrConvertValue_closure5, A.SassNumber_multiplyUnits_closure19, A.SassNumber_multiplyUnits_closure21, A.SassNumber__areAnyConvertible_closure0, A.SassNumber__canonicalizeUnitList_closure0, A.SassNumber_unitSuggestion_closure1, A.SassNumber_unitSuggestion_closure2, A.ParentStatement_closure0, A.ParentStatement__closure0, A.Parser_escape_closure0, A.Parser_scanIdentChar_matches0, A._PrefixedKeys_iterator_closure0, A.PseudoSelector_specificity__closure1, A.PseudoSelector_specificity__closure2, A.PseudoSelector_unify_closure0, A.JSClassExtension_setCustomInspect_closure, A.ReplaceExpressionVisitor_visitListExpression_closure0, A.ReplaceExpressionVisitor_visitArgumentInvocation_closure0, A.ReplaceExpressionVisitor_visitInterpolation_closure0, A.SassParser_styleRuleSelector_closure0, A.SassParser__peekIndentation_closure1, A.SassParser__peekIndentation_closure2, A._wrapMain_closure, A._wrapMain_closure0, A._IsBogusVisitor_visitComplexSelector_closure0, A._IsUselessVisitor_visitComplexSelector_closure0, A._nest_closure0, A._nest__closure1, A._append_closure1, A._append__closure1, A._append___closure0, A._extend_closure0, A._replace_closure0, A._unify_closure0, A._isSuperselector_closure0, A._simpleSelectors_closure0, A._simpleSelectors__closure0, A._parse_closure0, A.SelectorSearchVisitor_visitComplexSelector_closure0, A.SelectorSearchVisitor_visitCompoundSelector_closure0, A.serialize_closure0, A._SerializeVisitor_visitList_closure2, A._SerializeVisitor_visitList_closure3, A._SerializeVisitor_visitList_closure4, A._SerializeVisitor_visitMap_closure0, A._SerializeVisitor_visitSelectorList_closure0, A.SimpleSelector_isSuperselector_closure0, A.SimpleSelector_isSuperselector__closure0, A.SingleUnitSassNumber__coerceToUnit_closure0, A.SingleUnitSassNumber__coerceValueToUnit_closure0, A.SingleUnitSassNumber_multiplyUnits_closure1, A.SourceMapBuffer_buildSourceMap_closure0, A.updateSourceSpanPrototype_closure, A.updateSourceSpanPrototype_closure0, A.updateSourceSpanPrototype_closure1, A.updateSourceSpanPrototype_closure2, A.updateSourceSpanPrototype_closure3, A.updateSourceSpanPrototype_closure4, A.updateSourceSpanPrototype_closure5, A.StatementSearchVisitor_visitIfRule_closure1, A.StatementSearchVisitor_visitIfRule__closure2, A.StatementSearchVisitor_visitIfRule_closure2, A.StatementSearchVisitor_visitIfRule__closure1, A.StatementSearchVisitor_visitChildren_closure0, A.module_closure10, A.module__closure2, A.module__closure3, A._unquote_closure0, A._quote_closure0, A._length_closure1, A._insert_closure0, A._index_closure1, A._slice_closure0, A._toUpperCase_closure0, A._toLowerCase_closure0, A._uniqueId_closure0, A.stringClass__closure, A.stringClass__closure0, A.stringClass__closure1, A.stringClass__closure2, A.stringClass__closure3, A.legacyStringClass_closure, A.legacyStringClass_closure0, A.StylesheetParser_parse__closure2, A.StylesheetParser__expression_addSingleExpression0, A.StylesheetParser__expression_addOperator0, A.StylesheetParser__isHexColor_closure2, A.StylesheetParser__unicodeRange_closure1, A.StylesheetParser__unicodeRange_closure2, A.StylesheetParser_trySpecialFunction_closure0, A._UnprefixedKeys_iterator_closure1, A._UnprefixedKeys_iterator_closure2, A._exactlyOne_closure2, A.futureToPromise__closure0, A.indent_closure0, A.flattenVertically_closure1, A.flattenVertically_closure2, A.valueClass__closure, A.valueClass__closure0, A.valueClass__closure1, A.valueClass__closure2, A.valueClass__closure3, A.valueClass__closure4, A.valueClass__closure5, A.valueClass__closure7, A.valueClass__closure8, A.valueClass__closure9, A.valueClass__closure10, A.valueClass__closure11, A.valueClass__closure12, A.valueClass__closure13, A.valueClass__closure14, A.valueClass__closure15, A.valueClass__closure17, A.valueClass__closure18]);
    _inheritMany(A.Closure2Args, [A._CastListBase_sort_closure, A.CastMap_forEach_closure, A.Primitives_functionNoSuchMethod_closure, A.JsLinkedHashMap_addAll_closure, A.initHooks_closure0, A._awaitOnObject_closure0, A._wrapJsFunctionForAsync_closure, A.Future_wait_handleError, A._Future__chainForeignFuture_closure0, A.Stream_Stream$fromFuture_closure0, A._AddStreamState_makeErrorHandler_closure, A._HashMap_addAll_closure, A.HashMap_HashMap$from_closure, A.LinkedHashMap_LinkedHashMap$from_closure, A.MapBase_addAll_closure, A.MapBase_mapToString_closure, A._JsonStringifier_writeMap_closure, A.NoSuchMethodError_toString_closure, A.Uri__parseIPv4Address_error, A.Uri_parseIPv6Address_error, A.Uri_parseIPv6Address_parseHex, A._createTables_build, A.Parser_parse_closure, A.StreamQueue__ensureListening_closure1, A.futureToPromise_closure, A.PathMap__create_closure, A.IfRule_toString_closure, A.ComplexSelector_specificity_closure, A.CompoundSelector_specificity_closure, A.ExtensionStore_clone_closure, A._weaveParents_closure1, A.paths_closure, A._updateComponents_updateRgb, A._nest__closure0, A._append__closure0, A.ImportCache_clearCanonicalize_closure, A.StylesheetParser__declarationOrBuffer_closure, A.StylesheetParser__declarationOrBuffer_closure0, A.StylesheetParser__styleRule_closure, A.StylesheetParser__propertyOrVariableDeclaration_closure, A.StylesheetParser__propertyOrVariableDeclaration_closure0, A.StylesheetParser__atRootRule_closure, A.StylesheetParser__atRootRule_closure0, A.StylesheetParser__eachRule_closure, A.StylesheetParser__functionRule_closure, A.StylesheetParser__forRule_closure0, A.StylesheetParser__includeRule_closure, A.StylesheetParser_mediaRule_closure, A.StylesheetParser__mixinRule_closure, A.StylesheetParser_mozDocumentRule_closure, A.StylesheetParser_supportsRule_closure, A.StylesheetParser__whileRule_closure, A.StylesheetParser_unknownAtRule_closure, A.longestCommonSubsequence_backtrack, A.mapAddAll2_closure, A.SassNumber_plus_closure, A.SassNumber_minus_closure, A.SassNumber__canonicalMultiplier_closure, A._EvaluateVisitor__closure3, A._EvaluateVisitor__closure4, A._EvaluateVisitor_visitForwardRule_closure1, A._EvaluateVisitor_visitForwardRule_closure2, A._EvaluateVisitor_visitUseRule_closure0, A._EvaluateVisitor__evaluateArguments_closure5, A._EvaluateVisitor__evaluateMacroArguments_closure5, A._EvaluateVisitor__addRestMap_closure0, A._EvaluateVisitor__closure, A._EvaluateVisitor__closure0, A._EvaluateVisitor_visitForwardRule_closure, A._EvaluateVisitor_visitForwardRule_closure0, A._EvaluateVisitor_visitUseRule_closure, A._EvaluateVisitor__evaluateArguments_closure1, A._EvaluateVisitor__evaluateMacroArguments_closure1, A._EvaluateVisitor__addRestMap_closure, A.SingleMapping_toJson_closure0, A.Highlighter__collateLines_closure0, A.Frame_Frame$parseV8_closure_parseLocation, A.TransformByHandlers_transformByHandlers__closure1, A.RateLimit__debounceAggregate_closure, A._EvaluateVisitor__closure11, A._EvaluateVisitor__closure12, A._EvaluateVisitor_visitForwardRule_closure5, A._EvaluateVisitor_visitForwardRule_closure6, A._EvaluateVisitor_visitUseRule_closure2, A._EvaluateVisitor__evaluateArguments_closure13, A._EvaluateVisitor__evaluateMacroArguments_closure13, A._EvaluateVisitor__addRestMap_closure2, A.calculationOperationClass__closure0, A.calculationInterpolationClass__closure, A.calculationInterpolationClass__closure0, A._updateComponents_updateRgb0, A.colorClass__closure, A.colorClass__closure0, A.legacyColorClass_closure4, A.legacyColorClass_closure5, A.legacyColorClass_closure6, A.legacyColorClass_closure7, A._parseFunctions_closure0, A.ComplexSelector_specificity_closure0, A.CompoundSelector_specificity_closure0, A._EvaluateVisitor__closure7, A._EvaluateVisitor__closure8, A._EvaluateVisitor_visitForwardRule_closure3, A._EvaluateVisitor_visitForwardRule_closure4, A._EvaluateVisitor_visitUseRule_closure1, A._EvaluateVisitor__evaluateArguments_closure9, A._EvaluateVisitor__evaluateMacroArguments_closure9, A._EvaluateVisitor__addRestMap_closure1, A.ExtensionStore_clone_closure0, A._weaveParents_closure7, A.paths_closure0, A.IfRule_toString_closure0, A.main_closure, A.main_closure0, A.render_closure1, A._parseFunctions_closure, A.listClass__closure0, A.legacyListClass_closure0, A.legacyListClass_closure3, A.mapClass__closure1, A.legacyMapClass_closure0, A.legacyMapClass_closure1, A.numberClass__closure10, A.numberClass__closure11, A.legacyNumberClass_closure1, A.legacyNumberClass_closure3, A.SassNumber_plus_closure0, A.SassNumber_minus_closure0, A.SassNumber__canonicalMultiplier_closure0, A.JSClassExtension_get_defineStaticMethod_closure, A.JSClassExtension_get_defineMethod_closure, A.JSClassExtension_get_defineGetter_closure, A._nest__closure2, A._append__closure2, A.legacyStringClass_closure1, A.StylesheetParser__declarationOrBuffer_closure1, A.StylesheetParser__declarationOrBuffer_closure2, A.StylesheetParser__styleRule_closure0, A.StylesheetParser__propertyOrVariableDeclaration_closure1, A.StylesheetParser__propertyOrVariableDeclaration_closure2, A.StylesheetParser__atRootRule_closure1, A.StylesheetParser__atRootRule_closure2, A.StylesheetParser__eachRule_closure0, A.StylesheetParser__functionRule_closure0, A.StylesheetParser__forRule_closure2, A.StylesheetParser__includeRule_closure0, A.StylesheetParser_mediaRule_closure0, A.StylesheetParser__mixinRule_closure0, A.StylesheetParser_mozDocumentRule_closure0, A.StylesheetParser_supportsRule_closure0, A.StylesheetParser__whileRule_closure0, A.StylesheetParser_unknownAtRule_closure0, A.futureToPromise_closure0, A.futureToPromise__closure1, A.objectToMap_closure, A.longestCommonSubsequence_backtrack0, A.mapAddAll2_closure0, A.valueClass__closure6, A.valueClass__closure16]);
    _inherit(A.CastList, A._CastListBase);
    _inheritMany(A.MapBase, [A.CastMap, A.JsLinkedHashMap, A._HashMap, A.UnmodifiableMapBase, A.MergedMapView, A.MergedMapView0]);
    _inheritMany(A.Error, [A.LateError, A.TypeError, A.JsNoSuchMethodError, A.UnknownJsTypeError, A._CyclicInitializationError, A.RuntimeError, A._Error, A.JsonUnsupportedObjectError, A.AssertionError, A.ArgumentError, A.NoSuchMethodError, A.UnsupportedError, A.UnimplementedError, A.StateError, A.ConcurrentModificationError]);
    _inherit(A.UnmodifiableListBase, A.ListBase);
    _inheritMany(A.UnmodifiableListBase, [A.CodeUnits, A.UnmodifiableListView]);
    _inheritMany(A.Closure0Args, [A.nullFuture_closure, A._AsyncRun__scheduleImmediateJsOverride_internalCallback, A._AsyncRun__scheduleImmediateWithSetImmediate_internalCallback, A._TimerImpl_internalCallback, A._TimerImpl$periodic_closure, A._Future__addListener_closure, A._Future__prependListeners_closure, A._Future__chainForeignFuture_closure1, A._Future__chainCoreFutureAsync_closure, A._Future__asyncCompleteWithValue_closure, A._Future__asyncCompleteError_closure, A._Future__propagateToListeners_handleWhenCompleteCallback, A._Future__propagateToListeners_handleValueCallback, A._Future__propagateToListeners_handleError, A.Stream_length_closure0, A._StreamController__subscribe_closure, A._StreamController__recordCancel_complete, A._AddStreamState_cancel_closure, A._BufferingStreamSubscription__sendError_sendError, A._BufferingStreamSubscription__sendDone_sendDone, A._PendingEvents_schedule_closure, A._CustomZone_bindCallback_closure, A._CustomZone_bindCallbackGuarded_closure, A._rootHandleError_closure, A._RootZone_bindCallback_closure, A._RootZone_bindCallbackGuarded_closure, A.Utf8Decoder__decoder_closure, A.Utf8Decoder__decoderNonfatal_closure, A.Parser__setOption_closure, A.StreamGroup_add_closure, A.StreamGroup_add_closure0, A.StreamGroup__listenToStream_closure, A.StreamQueue__ensureListening_closure0, A._isStrictMode_closure, A.ReplAdapter_runAsync_closure, A.ParsedPath__splitExtension_closure0, A.ListExpression__elementNeedsParens_closure, A.Interpolation_asPlain_closure, A.Interpolation_asPlain_closure0, A.Interpolation_initialPlain_closure, A.ComplexSelector_singleCompound_closure, A.ComplexSelector_withAdditionalCombinators_closure, A.ComplexSelector_concatenate_closure, A.SelectorList__resolveParentSelectorsCompound__closure, A.PseudoSelector_specificity_closure, A.UniversalSelector_unify_closure, A.UniversalSelector_unify_closure0, A.AsyncEnvironment_setVariable_closure, A.AsyncEnvironment_setVariable_closure1, A.AsyncImportCache_canonicalize_closure, A.AsyncImportCache_canonicalize_closure0, A.AsyncImportCache__canonicalize_closure, A.AsyncImportCache__canonicalize__closure, A.AsyncImportCache__canonicalize_closure0, A.AsyncImportCache_importCanonical_closure, A.Environment_setVariable_closure, A.Environment_setVariable_closure1, A.compileStylesheets_closure, A.ExecutableOptions__parser_closure, A.ExecutableOptions__parser__closure, A.ExecutableOptions__parser__closure0, A.ExecutableOptions_interactive_closure, A.ExecutableOptions_fatalDeprecations_closure, A._Watcher__debounceEvents__closure, A._Watcher__debounceEvents__closure0, A._Watcher__debounceEvents__closure1, A.ExtensionStore__registerSelector_closure, A.ExtensionStore__registerSelector_closure0, A.ExtensionStore_addExtension_closure, A.ExtensionStore_addExtension_closure0, A.ExtensionStore_addExtension_closure1, A.ExtensionStore__simpleSelectors_closure, A.ExtensionStore__extendExistingExtensions_closure, A.ExtensionStore__extendExistingExtensions_closure0, A.ExtensionStore_addExtensions_closure, A.unifyComplex_closure, A.unifyComplex_closure0, A._namespaceAndName_closure, A._weaveParents_closure, A._weaveParents_closure0, A._mergeLeadingCombinators_closure, A._mergeLeadingCombinators_closure0, A._mergeLeadingCombinators_closure1, A._mergeLeadingCombinators_closure2, A._mergeTrailingCombinators_closure, A._mergeTrailingCombinators_closure0, A._mergeTrailingCombinators_closure1, A._mergeTrailingCombinators_closure2, A._mergeTrailingCombinators_closure3, A._mergeTrailingCombinators_closure4, A._mergeTrailingCombinators_closure6, A._mergeTrailingCombinators_closure7, A._mergeTrailingCombinators_closure5, A._mergeTrailingCombinators_closure8, A._chunks_closure, A._chunks_closure0, A._chunks_closure1, A._chunks_closure2, A.compoundIsSuperselector_closure, A.compoundIsSuperselector_closure0, A._selectorPseudoIsSuperselector___closure, A._parseChannels_closure, A._parseChannels_closure1, A._join__closure, A._join__closure0, A._join__closure1, A._set__closure, A._merge__closure, A._deepMergeImpl_closure, A._deepMergeImpl_closure0, A.local__closure, A._prependParent_closure, A._prependParent_closure0, A.ImportCache_canonicalize_closure, A.ImportCache_canonicalize_closure0, A.ImportCache__canonicalize_closure, A.ImportCache__canonicalize__closure, A.ImportCache__canonicalize_closure0, A.ImportCache_importCanonical_closure, A.resolveImportPath_closure, A.resolveImportPath_closure0, A._tryPathAsDirectory_closure, A._exactlyOne_closure, A.InterpolationBuffer_addInterpolation_closure, A.InterpolationMap_mapSpan_closure, A.InterpolationMap_mapSpan_closure0, A._realCasePath_helper_closure, A._readFile_closure, A.writeFile_closure, A.deleteFile_closure, A.fileExists_closure, A.dirExists_closure, A.ensureDir_closure, A.listDir_closure, A.modificationTime_closure, A.watchDir_closure3, A.watchDir__closure, A.DeprecationHandlingLogger_warnForDeprecation_closure, A.DeprecationHandlingLogger_warnForDeprecation_closure0, A.AtRootQueryParser_parse_closure, A.KeyframeSelectorParser_parse_closure, A.MediaQueryParser_parse_closure, A.Parser__parseIdentifier_closure, A.Parser_spanFrom_closure, A.SassParser_children_closure, A.SelectorParser_parse_closure, A.SelectorParser_parseCompoundSelector_closure, A.StylesheetParser_parse_closure, A.StylesheetParser_parse__closure, A.StylesheetParser_parseArgumentDeclaration_closure, A.StylesheetParser_parseVariableDeclaration_closure, A.StylesheetParser_parseUseRule_closure, A.StylesheetParser__parseSingleProduction_closure, A.StylesheetParser__statement_closure, A.StylesheetParser_variableDeclarationWithoutNamespace_closure, A.StylesheetParser_variableDeclarationWithoutNamespace_closure0, A.StylesheetParser__forRule_closure, A.StylesheetParser__memberList_closure, A.StylesheetParser__expression_resetState, A.StylesheetParser__expression_resolveOneOperation, A.StylesheetParser__expression_resolveOperations, A.StylesheetParser__expression_resolveSpaceExpressions, A.StylesheetParser__expression_closure, A.StylesheetParser__expression_closure0, A.StylesheetParser__expression_closure1, A.StylesheetParser_expressionUntilComma_closure, A.StylesheetParser__isHexColor_closure, A.StylesheetParser_identifierLike_closure, A.StylesheetParser_identifierLike_closure0, A.StylesheetParser_namespacedExpression_closure, A.StylesheetParser__tryUrlContents_closure, A.StylesheetParser__interpolatedDeclarationValue_closure, A.StylesheetParser__interpolatedDeclarationValue_closure0, A.StylesheetParser__interpolatedDeclarationValue_closure1, A.StylesheetParser__interpolatedDeclarationValue_closure2, A.StylesheetParser__interpolatedDeclarationValue_closure3, A.StylesheetParser__expressionUntilComparison_closure, A.StylesheetParser__supportsConditionInParens_closure, A.StylesheetParser__publicIdentifier_closure, A.StylesheetGraph_modifiedSince_transitiveModificationTime_closure, A.StylesheetGraph__add_closure, A.StylesheetGraph_addCanonical_closure, A.StylesheetGraph_reload_closure, A.StylesheetGraph__nodeFor_closure, A.StylesheetGraph__nodeFor_closure0, A.MultiDirWatcher_watch_closure, A.SassCalculation_sign_closure, A.SassCalculation_round_closure, A.SassCalculation_round_closure0, A.SassCalculation_round_closure1, A.SassCalculation_round_closure2, A.SassCalculation_round_closure3, A.SassCalculation_round_closure4, A.SassCalculation_round_closure5, A.SassCalculation_round_closure6, A.SassCalculation_round_closure7, A.SassCalculation_round_closure8, A.SassCalculation__roundWithStep_closure0, A.SassCalculation__roundWithStep_closure, A.SassCalculation__roundWithStep_closure1, A.SassCalculation__roundWithStep_closure2, A.SassCalculation__roundWithStep_closure3, A.SassCalculation__roundWithStep_closure4, A.SassCalculation__roundWithStep_closure5, A.SassCalculation__simplify_closure, A.SassCalculation__simplify_closure0, A.SassCalculation__simplify_closure1, A.SassCalculation__simplify_closure2, A.SassNumber_SassNumber$withUnits_closure0, A.SassNumber_SassNumber$withUnits_closure, A.SassNumber_SassNumber$withUnits_closure1, A.SassNumber_SassNumber$withUnits_closure2, A.SassNumber_SassNumber$withUnits_closure4, A.SassNumber_SassNumber$withUnits_closure3, A.SassNumber_SassNumber$withUnits_closure5, A.SassNumber_SassNumber$withUnits_closure6, A.SassNumber_SassNumber$withUnits_closure7, A.SassNumber_SassNumber$withUnits_closure8, A.SassNumber__coerceOrConvertValue_compatibilityException, A.SassNumber__coerceOrConvertValue_closure0, A.SassNumber__coerceOrConvertValue_closure2, A.SassNumber_multiplyUnits_closure, A.SassNumber_multiplyUnits_closure0, A.SassNumber_multiplyUnits_closure1, A.SassNumber_multiplyUnits_closure2, A.SassNumber_multiplyUnits_closure3, A.SassNumber_multiplyUnits_closure4, A.SassNumber_multiplyUnits_closure5, A.SassNumber_multiplyUnits_closure6, A.SassNumber_multiplyUnits_closure8, A.SassNumber_multiplyUnits_closure10, A.SassNumber__unitString_closure, A.SassNumber__unitString_closure0, A.SassNumber__unitString_closure1, A.SassNumber__unitString_closure2, A.SingleUnitSassNumber_multiplyUnits_closure0, A._EvaluateVisitor__closure6, A._EvaluateVisitor__closure5, A._EvaluateVisitor_run_closure0, A._EvaluateVisitor_run__closure0, A._EvaluateVisitor__loadModule_closure1, A._EvaluateVisitor__loadModule_closure2, A._EvaluateVisitor__loadModule__closure2, A._EvaluateVisitor__execute_closure0, A._EvaluateVisitor__extendModules_closure2, A._EvaluateVisitor_visitAtRootRule_closure1, A._EvaluateVisitor_visitAtRootRule_closure2, A._EvaluateVisitor__scopeForAtRoot__closure0, A._EvaluateVisitor_visitContentRule_closure0, A._EvaluateVisitor_visitDeclaration_closure0, A._EvaluateVisitor_visitEachRule_closure4, A._EvaluateVisitor_visitAtRule_closure3, A._EvaluateVisitor_visitAtRule__closure0, A._EvaluateVisitor_visitForRule_closure4, A._EvaluateVisitor_visitForRule_closure5, A._EvaluateVisitor_visitForRule_closure6, A._EvaluateVisitor_visitForRule_closure7, A._EvaluateVisitor_visitForRule_closure8, A._EvaluateVisitor__registerCommentsForModule_closure0, A._EvaluateVisitor_visitIfRule__closure0, A._EvaluateVisitor__visitDynamicImport_closure0, A._EvaluateVisitor__visitDynamicImport__closure6, A._EvaluateVisitor__applyMixin_closure3, A._EvaluateVisitor__applyMixin__closure2, A._EvaluateVisitor__applyMixin_closure2, A._EvaluateVisitor__applyMixin_closure4, A._EvaluateVisitor__applyMixin__closure1, A._EvaluateVisitor__applyMixin___closure0, A._EvaluateVisitor__applyMixin____closure0, A._EvaluateVisitor_visitIncludeRule_closure2, A._EvaluateVisitor_visitIncludeRule_closure4, A._EvaluateVisitor_visitMediaRule_closure3, A._EvaluateVisitor_visitMediaRule__closure0, A._EvaluateVisitor_visitMediaRule___closure0, A._EvaluateVisitor_visitStyleRule_closure4, A._EvaluateVisitor_visitStyleRule_closure6, A._EvaluateVisitor_visitStyleRule__closure0, A._EvaluateVisitor_visitSupportsRule_closure1, A._EvaluateVisitor_visitSupportsRule__closure0, A._EvaluateVisitor__visitSupportsCondition_closure0, A._EvaluateVisitor_visitVariableDeclaration_closure2, A._EvaluateVisitor_visitVariableDeclaration_closure3, A._EvaluateVisitor_visitVariableDeclaration_closure4, A._EvaluateVisitor_visitWarnRule_closure0, A._EvaluateVisitor_visitWhileRule_closure0, A._EvaluateVisitor_visitBinaryOperationExpression_closure0, A._EvaluateVisitor__slash_closure1, A._EvaluateVisitor__slash_closure2, A._EvaluateVisitor_visitVariableExpression_closure0, A._EvaluateVisitor_visitUnaryOperationExpression_closure0, A._EvaluateVisitor_visitFunctionExpression_closure2, A._EvaluateVisitor_visitFunctionExpression_closure4, A._EvaluateVisitor__visitCalculationExpression_closure0, A._EvaluateVisitor__checkAdjacentCalculationValues_closure0, A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure0, A._EvaluateVisitor__runUserDefinedCallable_closure0, A._EvaluateVisitor__runUserDefinedCallable__closure0, A._EvaluateVisitor__runUserDefinedCallable___closure0, A._EvaluateVisitor__runFunctionCallable_closure0, A._EvaluateVisitor__runBuiltInCallable_closure2, A._EvaluateVisitor__runBuiltInCallable_closure3, A._EvaluateVisitor__verifyArguments_closure0, A._EvaluateVisitor_visitCssAtRule_closure1, A._EvaluateVisitor_visitCssKeyframeBlock_closure1, A._EvaluateVisitor_visitCssMediaRule_closure3, A._EvaluateVisitor_visitCssMediaRule__closure0, A._EvaluateVisitor_visitCssMediaRule___closure0, A._EvaluateVisitor_visitCssStyleRule_closure2, A._EvaluateVisitor_visitCssStyleRule__closure0, A._EvaluateVisitor_visitCssStyleRule_closure4, A._EvaluateVisitor_visitCssSupportsRule_closure1, A._EvaluateVisitor_visitCssSupportsRule__closure0, A._EvaluateVisitor__serialize_closure0, A._EvaluateVisitor__expressionNode_closure0, A._EvaluateVisitor__closure2, A._EvaluateVisitor__closure1, A._EvaluateVisitor_run_closure, A._EvaluateVisitor_run__closure, A._EvaluateVisitor_runExpression_closure, A._EvaluateVisitor_runExpression__closure, A._EvaluateVisitor_runExpression___closure, A._EvaluateVisitor_runStatement_closure, A._EvaluateVisitor_runStatement__closure, A._EvaluateVisitor_runStatement___closure, A._EvaluateVisitor__loadModule_closure, A._EvaluateVisitor__loadModule_closure0, A._EvaluateVisitor__loadModule__closure0, A._EvaluateVisitor__execute_closure, A._EvaluateVisitor__extendModules_closure0, A._EvaluateVisitor_visitAtRootRule_closure, A._EvaluateVisitor_visitAtRootRule_closure0, A._EvaluateVisitor__scopeForAtRoot__closure, A._EvaluateVisitor_visitContentRule_closure, A._EvaluateVisitor_visitDeclaration_closure, A._EvaluateVisitor_visitEachRule_closure1, A._EvaluateVisitor_visitAtRule_closure0, A._EvaluateVisitor_visitAtRule__closure, A._EvaluateVisitor_visitForRule_closure, A._EvaluateVisitor_visitForRule_closure0, A._EvaluateVisitor_visitForRule_closure1, A._EvaluateVisitor_visitForRule_closure2, A._EvaluateVisitor_visitForRule_closure3, A._EvaluateVisitor__registerCommentsForModule_closure, A._EvaluateVisitor_visitIfRule__closure, A._EvaluateVisitor__visitDynamicImport_closure, A._EvaluateVisitor__visitDynamicImport__closure2, A._EvaluateVisitor__applyMixin_closure0, A._EvaluateVisitor__applyMixin__closure0, A._EvaluateVisitor__applyMixin_closure, A._EvaluateVisitor__applyMixin_closure1, A._EvaluateVisitor__applyMixin__closure, A._EvaluateVisitor__applyMixin___closure, A._EvaluateVisitor__applyMixin____closure, A._EvaluateVisitor_visitIncludeRule_closure, A._EvaluateVisitor_visitIncludeRule_closure1, A._EvaluateVisitor_visitMediaRule_closure0, A._EvaluateVisitor_visitMediaRule__closure, A._EvaluateVisitor_visitMediaRule___closure, A._EvaluateVisitor_visitStyleRule_closure, A._EvaluateVisitor_visitStyleRule_closure1, A._EvaluateVisitor_visitStyleRule__closure, A._EvaluateVisitor_visitSupportsRule_closure, A._EvaluateVisitor_visitSupportsRule__closure, A._EvaluateVisitor__visitSupportsCondition_closure, A._EvaluateVisitor_visitVariableDeclaration_closure, A._EvaluateVisitor_visitVariableDeclaration_closure0, A._EvaluateVisitor_visitVariableDeclaration_closure1, A._EvaluateVisitor_visitWarnRule_closure, A._EvaluateVisitor_visitWhileRule_closure, A._EvaluateVisitor_visitBinaryOperationExpression_closure, A._EvaluateVisitor__slash_closure, A._EvaluateVisitor__slash_closure0, A._EvaluateVisitor_visitVariableExpression_closure, A._EvaluateVisitor_visitUnaryOperationExpression_closure, A._EvaluateVisitor_visitFunctionExpression_closure, A._EvaluateVisitor_visitFunctionExpression_closure1, A._EvaluateVisitor__visitCalculationExpression_closure, A._EvaluateVisitor__checkAdjacentCalculationValues_closure, A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure, A._EvaluateVisitor__runUserDefinedCallable_closure, A._EvaluateVisitor__runUserDefinedCallable__closure, A._EvaluateVisitor__runUserDefinedCallable___closure, A._EvaluateVisitor__runFunctionCallable_closure, A._EvaluateVisitor__runBuiltInCallable_closure, A._EvaluateVisitor__runBuiltInCallable_closure0, A._EvaluateVisitor__verifyArguments_closure, A._EvaluateVisitor_visitCssAtRule_closure, A._EvaluateVisitor_visitCssKeyframeBlock_closure, A._EvaluateVisitor_visitCssMediaRule_closure0, A._EvaluateVisitor_visitCssMediaRule__closure, A._EvaluateVisitor_visitCssMediaRule___closure, A._EvaluateVisitor_visitCssStyleRule_closure, A._EvaluateVisitor_visitCssStyleRule__closure, A._EvaluateVisitor_visitCssStyleRule_closure1, A._EvaluateVisitor_visitCssSupportsRule_closure, A._EvaluateVisitor_visitCssSupportsRule__closure, A._EvaluateVisitor__serialize_closure, A._EvaluateVisitor__expressionNode_closure, A._FindDependenciesVisitor_visitIncludeRule_closure, A._FindDependenciesVisitor_visitIncludeRule_closure0, A._SerializeVisitor_visitCssComment_closure, A._SerializeVisitor_visitCssAtRule_closure, A._SerializeVisitor_visitCssMediaRule_closure, A._SerializeVisitor_visitCssImport_closure, A._SerializeVisitor_visitCssImport__closure, A._SerializeVisitor_visitCssKeyframeBlock_closure, A._SerializeVisitor_visitCssStyleRule_closure, A._SerializeVisitor_visitCssSupportsRule_closure, A._SerializeVisitor_visitCssDeclaration_closure, A._SerializeVisitor_visitCssDeclaration_closure0, A._SerializeVisitor__writeCalculationValue_closure, A._SerializeVisitor__visitQuotedString_closure, A._SerializeVisitor__visitQuotedString_closure0, A._SerializeVisitor_visitPseudoSelector_closure, A._SerializeVisitor__write_closure, A._SerializeVisitor__visitChildren_closure, A._SerializeVisitor__visitChildren_closure0, A.SingleMapping_SingleMapping$fromEntries_closure, A.SingleMapping_SingleMapping$fromEntries_closure0, A.Highlighter_closure, A.Highlighter__writeFileStart_closure, A.Highlighter__writeMultilineHighlights_closure, A.Highlighter__writeMultilineHighlights_closure0, A.Highlighter__writeMultilineHighlights_closure1, A.Highlighter__writeMultilineHighlights_closure2, A.Highlighter__writeMultilineHighlights__closure, A.Highlighter__writeMultilineHighlights__closure0, A.Highlighter__writeHighlightedText_closure, A.Highlighter__writeIndicator_closure, A.Highlighter__writeIndicator_closure0, A.Highlighter__writeIndicator_closure1, A.Highlighter__writeLabel_closure, A.Highlighter__writeLabel_closure0, A.Highlighter__writeSidebar_closure, A._Highlight_closure, A.Frame_Frame$parseVM_closure, A.Frame_Frame$parseV8_closure, A.Frame_Frame$_parseFirefoxEval_closure, A.Frame_Frame$parseFirefox_closure, A.Frame_Frame$parseFriendly_closure, A.LazyTrace_terse_closure, A.Trace_Trace$from_closure, A.TransformByHandlers_transformByHandlers_closure, A.TransformByHandlers_transformByHandlers__closure0, A.TransformByHandlers_transformByHandlers__closure2, A.RateLimit__debounceAggregate_closure_emit, A.RateLimit__debounceAggregate__closure, A.argumentListClass_closure, A.JSToDartAsyncImporter_canonicalize_closure, A.JSToDartAsyncImporter_load_closure, A.AsyncEnvironment_setVariable_closure2, A.AsyncEnvironment_setVariable_closure4, A._EvaluateVisitor__closure14, A._EvaluateVisitor__closure13, A._EvaluateVisitor_run_closure2, A._EvaluateVisitor_run__closure2, A._EvaluateVisitor__loadModule_closure5, A._EvaluateVisitor__loadModule_closure6, A._EvaluateVisitor__loadModule__closure6, A._EvaluateVisitor__execute_closure2, A._EvaluateVisitor__extendModules_closure6, A._EvaluateVisitor_visitAtRootRule_closure5, A._EvaluateVisitor_visitAtRootRule_closure6, A._EvaluateVisitor__scopeForAtRoot__closure2, A._EvaluateVisitor_visitContentRule_closure2, A._EvaluateVisitor_visitDeclaration_closure2, A._EvaluateVisitor_visitEachRule_closure10, A._EvaluateVisitor_visitAtRule_closure9, A._EvaluateVisitor_visitAtRule__closure2, A._EvaluateVisitor_visitForRule_closure14, A._EvaluateVisitor_visitForRule_closure15, A._EvaluateVisitor_visitForRule_closure16, A._EvaluateVisitor_visitForRule_closure17, A._EvaluateVisitor_visitForRule_closure18, A._EvaluateVisitor__registerCommentsForModule_closure2, A._EvaluateVisitor_visitIfRule__closure2, A._EvaluateVisitor__visitDynamicImport_closure2, A._EvaluateVisitor__visitDynamicImport__closure14, A._EvaluateVisitor__applyMixin_closure9, A._EvaluateVisitor__applyMixin__closure6, A._EvaluateVisitor__applyMixin_closure8, A._EvaluateVisitor__applyMixin_closure10, A._EvaluateVisitor__applyMixin__closure5, A._EvaluateVisitor__applyMixin___closure2, A._EvaluateVisitor__applyMixin____closure2, A._EvaluateVisitor_visitIncludeRule_closure8, A._EvaluateVisitor_visitIncludeRule_closure10, A._EvaluateVisitor_visitMediaRule_closure9, A._EvaluateVisitor_visitMediaRule__closure2, A._EvaluateVisitor_visitMediaRule___closure2, A._EvaluateVisitor_visitStyleRule_closure14, A._EvaluateVisitor_visitStyleRule_closure16, A._EvaluateVisitor_visitStyleRule__closure2, A._EvaluateVisitor_visitSupportsRule_closure5, A._EvaluateVisitor_visitSupportsRule__closure2, A._EvaluateVisitor__visitSupportsCondition_closure2, A._EvaluateVisitor_visitVariableDeclaration_closure8, A._EvaluateVisitor_visitVariableDeclaration_closure9, A._EvaluateVisitor_visitVariableDeclaration_closure10, A._EvaluateVisitor_visitWarnRule_closure2, A._EvaluateVisitor_visitWhileRule_closure2, A._EvaluateVisitor_visitBinaryOperationExpression_closure2, A._EvaluateVisitor__slash_closure5, A._EvaluateVisitor__slash_closure6, A._EvaluateVisitor_visitVariableExpression_closure2, A._EvaluateVisitor_visitUnaryOperationExpression_closure2, A._EvaluateVisitor_visitFunctionExpression_closure8, A._EvaluateVisitor_visitFunctionExpression_closure10, A._EvaluateVisitor__visitCalculationExpression_closure2, A._EvaluateVisitor__checkAdjacentCalculationValues_closure2, A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure2, A._EvaluateVisitor__runUserDefinedCallable_closure2, A._EvaluateVisitor__runUserDefinedCallable__closure2, A._EvaluateVisitor__runUserDefinedCallable___closure2, A._EvaluateVisitor__runFunctionCallable_closure2, A._EvaluateVisitor__runBuiltInCallable_closure8, A._EvaluateVisitor__runBuiltInCallable_closure9, A._EvaluateVisitor__verifyArguments_closure2, A._EvaluateVisitor_visitCssAtRule_closure5, A._EvaluateVisitor_visitCssKeyframeBlock_closure5, A._EvaluateVisitor_visitCssMediaRule_closure9, A._EvaluateVisitor_visitCssMediaRule__closure2, A._EvaluateVisitor_visitCssMediaRule___closure2, A._EvaluateVisitor_visitCssStyleRule_closure8, A._EvaluateVisitor_visitCssStyleRule__closure2, A._EvaluateVisitor_visitCssStyleRule_closure10, A._EvaluateVisitor_visitCssSupportsRule_closure5, A._EvaluateVisitor_visitCssSupportsRule__closure2, A._EvaluateVisitor__serialize_closure2, A._EvaluateVisitor__expressionNode_closure2, A.JSToDartAsyncFileImporter_canonicalize_closure, A.AsyncImportCache_canonicalize_closure1, A.AsyncImportCache_canonicalize_closure2, A.AsyncImportCache__canonicalize_closure1, A.AsyncImportCache__canonicalize__closure0, A.AsyncImportCache__canonicalize_closure2, A.AsyncImportCache_importCanonical_closure0, A.AtRootQueryParser_parse_closure0, A.booleanClass_closure, A.legacyBooleanClass_closure, A.calculationClass_closure, A.calculationOperationClass_closure, A.calculationInterpolationClass_closure, A.SassCalculation_sign_closure0, A.SassCalculation_round_closure9, A.SassCalculation_round_closure10, A.SassCalculation_round_closure11, A.SassCalculation_round_closure12, A.SassCalculation_round_closure13, A.SassCalculation_round_closure14, A.SassCalculation_round_closure15, A.SassCalculation_round_closure16, A.SassCalculation_round_closure17, A.SassCalculation_round_closure18, A.SassCalculation__roundWithStep_closure7, A.SassCalculation__roundWithStep_closure6, A.SassCalculation__roundWithStep_closure8, A.SassCalculation__roundWithStep_closure9, A.SassCalculation__roundWithStep_closure10, A.SassCalculation__roundWithStep_closure11, A.SassCalculation__roundWithStep_closure12, A.SassCalculation__simplify_closure3, A.SassCalculation__simplify_closure4, A.SassCalculation__simplify_closure5, A.SassCalculation__simplify_closure6, A._parseChannels_closure2, A._parseChannels_closure4, A.colorClass_closure, A.compileAsync_closure, A.compileStringAsync_closure, A._simplifyValue_closure, A._simplifyValue_closure0, A._simplifyValue_closure1, A._simplifyValue_closure2, A._simplifyValue_closure3, A._simplifyValue_closure4, A._parseFunctions___closure6, A._parseFunctions___closure5, A.ComplexSelector_singleCompound_closure0, A.ComplexSelector_withAdditionalCombinators_closure0, A.ComplexSelector_concatenate_closure0, A.DeprecationHandlingLogger_warnForDeprecation_closure1, A.DeprecationHandlingLogger_warnForDeprecation_closure2, A.Environment_setVariable_closure2, A.Environment_setVariable_closure4, A._EvaluateVisitor__closure10, A._EvaluateVisitor__closure9, A._EvaluateVisitor_run_closure1, A._EvaluateVisitor_run__closure1, A._EvaluateVisitor__loadModule_closure3, A._EvaluateVisitor__loadModule_closure4, A._EvaluateVisitor__loadModule__closure4, A._EvaluateVisitor__execute_closure1, A._EvaluateVisitor__extendModules_closure4, A._EvaluateVisitor_visitAtRootRule_closure3, A._EvaluateVisitor_visitAtRootRule_closure4, A._EvaluateVisitor__scopeForAtRoot__closure1, A._EvaluateVisitor_visitContentRule_closure1, A._EvaluateVisitor_visitDeclaration_closure1, A._EvaluateVisitor_visitEachRule_closure7, A._EvaluateVisitor_visitAtRule_closure6, A._EvaluateVisitor_visitAtRule__closure1, A._EvaluateVisitor_visitForRule_closure9, A._EvaluateVisitor_visitForRule_closure10, A._EvaluateVisitor_visitForRule_closure11, A._EvaluateVisitor_visitForRule_closure12, A._EvaluateVisitor_visitForRule_closure13, A._EvaluateVisitor__registerCommentsForModule_closure1, A._EvaluateVisitor_visitIfRule__closure1, A._EvaluateVisitor__visitDynamicImport_closure1, A._EvaluateVisitor__visitDynamicImport__closure10, A._EvaluateVisitor__applyMixin_closure6, A._EvaluateVisitor__applyMixin__closure4, A._EvaluateVisitor__applyMixin_closure5, A._EvaluateVisitor__applyMixin_closure7, A._EvaluateVisitor__applyMixin__closure3, A._EvaluateVisitor__applyMixin___closure1, A._EvaluateVisitor__applyMixin____closure1, A._EvaluateVisitor_visitIncludeRule_closure5, A._EvaluateVisitor_visitIncludeRule_closure7, A._EvaluateVisitor_visitMediaRule_closure6, A._EvaluateVisitor_visitMediaRule__closure1, A._EvaluateVisitor_visitMediaRule___closure1, A._EvaluateVisitor_visitStyleRule_closure9, A._EvaluateVisitor_visitStyleRule_closure11, A._EvaluateVisitor_visitStyleRule__closure1, A._EvaluateVisitor_visitSupportsRule_closure3, A._EvaluateVisitor_visitSupportsRule__closure1, A._EvaluateVisitor__visitSupportsCondition_closure1, A._EvaluateVisitor_visitVariableDeclaration_closure5, A._EvaluateVisitor_visitVariableDeclaration_closure6, A._EvaluateVisitor_visitVariableDeclaration_closure7, A._EvaluateVisitor_visitWarnRule_closure1, A._EvaluateVisitor_visitWhileRule_closure1, A._EvaluateVisitor_visitBinaryOperationExpression_closure1, A._EvaluateVisitor__slash_closure3, A._EvaluateVisitor__slash_closure4, A._EvaluateVisitor_visitVariableExpression_closure1, A._EvaluateVisitor_visitUnaryOperationExpression_closure1, A._EvaluateVisitor_visitFunctionExpression_closure5, A._EvaluateVisitor_visitFunctionExpression_closure7, A._EvaluateVisitor__visitCalculationExpression_closure1, A._EvaluateVisitor__checkAdjacentCalculationValues_closure1, A._EvaluateVisitor_visitInterpolatedFunctionExpression_closure1, A._EvaluateVisitor__runUserDefinedCallable_closure1, A._EvaluateVisitor__runUserDefinedCallable__closure1, A._EvaluateVisitor__runUserDefinedCallable___closure1, A._EvaluateVisitor__runFunctionCallable_closure1, A._EvaluateVisitor__runBuiltInCallable_closure5, A._EvaluateVisitor__runBuiltInCallable_closure6, A._EvaluateVisitor__verifyArguments_closure1, A._EvaluateVisitor_visitCssAtRule_closure3, A._EvaluateVisitor_visitCssKeyframeBlock_closure3, A._EvaluateVisitor_visitCssMediaRule_closure6, A._EvaluateVisitor_visitCssMediaRule__closure1, A._EvaluateVisitor_visitCssMediaRule___closure1, A._EvaluateVisitor_visitCssStyleRule_closure5, A._EvaluateVisitor_visitCssStyleRule__closure1, A._EvaluateVisitor_visitCssStyleRule_closure7, A._EvaluateVisitor_visitCssSupportsRule_closure3, A._EvaluateVisitor_visitCssSupportsRule__closure1, A._EvaluateVisitor__serialize_closure1, A._EvaluateVisitor__expressionNode_closure1, A.exceptionClass_closure, A.ExtensionStore__registerSelector_closure1, A.ExtensionStore__registerSelector_closure2, A.ExtensionStore_addExtension_closure2, A.ExtensionStore_addExtension_closure3, A.ExtensionStore_addExtension_closure4, A.ExtensionStore__simpleSelectors_closure0, A.ExtensionStore__extendExistingExtensions_closure1, A.ExtensionStore__extendExistingExtensions_closure2, A.ExtensionStore_addExtensions_closure0, A.JSToDartFileImporter_canonicalize_closure, A.functionClass_closure, A.unifyComplex_closure2, A.unifyComplex_closure3, A._namespaceAndName_closure0, A._weaveParents_closure5, A._weaveParents_closure6, A._mergeLeadingCombinators_closure3, A._mergeLeadingCombinators_closure4, A._mergeLeadingCombinators_closure5, A._mergeLeadingCombinators_closure6, A._mergeTrailingCombinators_closure9, A._mergeTrailingCombinators_closure10, A._mergeTrailingCombinators_closure11, A._mergeTrailingCombinators_closure12, A._mergeTrailingCombinators_closure13, A._mergeTrailingCombinators_closure14, A._mergeTrailingCombinators_closure16, A._mergeTrailingCombinators_closure17, A._mergeTrailingCombinators_closure15, A._mergeTrailingCombinators_closure18, A._chunks_closure3, A._chunks_closure4, A._chunks_closure5, A._chunks_closure6, A.compoundIsSuperselector_closure1, A.compoundIsSuperselector_closure2, A._selectorPseudoIsSuperselector___closure2, A.NodeImporter_load_closure, A.NodeImporter__tryPath_closure, A.NodeImporter__callImporterAsync_closure, A.ImportCache_canonicalize_closure1, A.ImportCache_canonicalize_closure2, A.ImportCache__canonicalize_closure1, A.ImportCache__canonicalize__closure0, A.ImportCache__canonicalize_closure2, A.ImportCache_importCanonical_closure0, A.Interpolation_asPlain_closure1, A.Interpolation_asPlain_closure2, A.Interpolation_initialPlain_closure0, A.InterpolationBuffer_addInterpolation_closure0, A.InterpolationMap_mapSpan_closure1, A.InterpolationMap_mapSpan_closure2, A._realCasePath_helper_closure0, A._readFile_closure0, A.fileExists_closure0, A.dirExists_closure0, A.listDir_closure0, A.JSToDartLogger_warn_closure, A.JSToDartLogger_debug_closure, A.KeyframeSelectorParser_parse_closure0, A.render_closure, A._parseFunctions____closure, A._parseFunctions___closure3, A._parseFunctions___closure4, A._parseFunctions___closure1, A._parseFunctions___closure0, A._parseImporter____closure, A._parseImporter___closure0, A.ListExpression__elementNeedsParens_closure0, A._join__closure2, A._join__closure3, A._join__closure4, A.SelectorList__resolveParentSelectorsCompound__closure0, A.listClass_closure, A._set__closure2, A._merge__closure1, A._deepMergeImpl_closure1, A._deepMergeImpl_closure2, A.mapClass_closure, A.MediaQueryParser_parse_closure0, A.local__closure1, A.mixinClass_closure, A.legacyNullClass_closure, A.numberClass_closure, A.SassNumber_SassNumber$withUnits_closure10, A.SassNumber_SassNumber$withUnits_closure9, A.SassNumber_SassNumber$withUnits_closure11, A.SassNumber_SassNumber$withUnits_closure12, A.SassNumber_SassNumber$withUnits_closure14, A.SassNumber_SassNumber$withUnits_closure13, A.SassNumber_SassNumber$withUnits_closure15, A.SassNumber_SassNumber$withUnits_closure16, A.SassNumber_SassNumber$withUnits_closure17, A.SassNumber_SassNumber$withUnits_closure18, A.SassNumber__coerceOrConvertValue_compatibilityException0, A.SassNumber__coerceOrConvertValue_closure4, A.SassNumber__coerceOrConvertValue_closure6, A.SassNumber_multiplyUnits_closure11, A.SassNumber_multiplyUnits_closure12, A.SassNumber_multiplyUnits_closure13, A.SassNumber_multiplyUnits_closure14, A.SassNumber_multiplyUnits_closure15, A.SassNumber_multiplyUnits_closure16, A.SassNumber_multiplyUnits_closure17, A.SassNumber_multiplyUnits_closure18, A.SassNumber_multiplyUnits_closure20, A.SassNumber_multiplyUnits_closure22, A.SassNumber__unitString_closure3, A.SassNumber__unitString_closure4, A.SassNumber__unitString_closure5, A.SassNumber__unitString_closure6, A.Parser__parseIdentifier_closure0, A.Parser_spanFrom_closure0, A.PseudoSelector_specificity_closure0, A.SassParser_children_closure0, A._prependParent_closure1, A._prependParent_closure2, A.SelectorParser_parse_closure0, A.SelectorParser_parseCompoundSelector_closure0, A._SerializeVisitor_visitCssComment_closure0, A._SerializeVisitor_visitCssAtRule_closure0, A._SerializeVisitor_visitCssMediaRule_closure0, A._SerializeVisitor_visitCssImport_closure0, A._SerializeVisitor_visitCssImport__closure0, A._SerializeVisitor_visitCssKeyframeBlock_closure0, A._SerializeVisitor_visitCssStyleRule_closure0, A._SerializeVisitor_visitCssSupportsRule_closure0, A._SerializeVisitor_visitCssDeclaration_closure1, A._SerializeVisitor_visitCssDeclaration_closure2, A._SerializeVisitor__writeCalculationValue_closure0, A._SerializeVisitor__visitQuotedString_closure1, A._SerializeVisitor__visitQuotedString_closure2, A._SerializeVisitor_visitPseudoSelector_closure0, A._SerializeVisitor__write_closure0, A._SerializeVisitor__visitChildren_closure1, A._SerializeVisitor__visitChildren_closure2, A.SingleUnitSassNumber_multiplyUnits_closure2, A.stringClass_closure, A.StylesheetParser_parse_closure0, A.StylesheetParser_parse__closure1, A.StylesheetParser_parseArgumentDeclaration_closure0, A.StylesheetParser__parseSingleProduction_closure0, A.StylesheetParser_parseSignature_closure, A.StylesheetParser__statement_closure0, A.StylesheetParser_variableDeclarationWithoutNamespace_closure1, A.StylesheetParser_variableDeclarationWithoutNamespace_closure2, A.StylesheetParser__forRule_closure1, A.StylesheetParser__memberList_closure0, A.StylesheetParser__expression_resetState0, A.StylesheetParser__expression_resolveOneOperation0, A.StylesheetParser__expression_resolveOperations0, A.StylesheetParser__expression_resolveSpaceExpressions0, A.StylesheetParser__expression_closure2, A.StylesheetParser__expression_closure3, A.StylesheetParser__expression_closure4, A.StylesheetParser_expressionUntilComma_closure0, A.StylesheetParser__isHexColor_closure1, A.StylesheetParser_identifierLike_closure1, A.StylesheetParser_identifierLike_closure2, A.StylesheetParser_namespacedExpression_closure0, A.StylesheetParser__tryUrlContents_closure0, A.StylesheetParser__interpolatedDeclarationValue_closure4, A.StylesheetParser__interpolatedDeclarationValue_closure5, A.StylesheetParser__interpolatedDeclarationValue_closure6, A.StylesheetParser__interpolatedDeclarationValue_closure7, A.StylesheetParser__interpolatedDeclarationValue_closure8, A.StylesheetParser__expressionUntilComparison_closure0, A.StylesheetParser__supportsConditionInParens_closure0, A.StylesheetParser__publicIdentifier_closure0, A.JSToDartImporter_canonicalize_closure, A.JSToDartImporter_load_closure, A.UniversalSelector_unify_closure1, A.UniversalSelector_unify_closure2, A.resolveImportPath_closure1, A.resolveImportPath_closure2, A._tryPathAsDirectory_closure0, A._exactlyOne_closure1, A.valueClass_closure]);
    _inheritMany(A.EfficientLengthIterable, [A.ListIterable, A.EmptyIterable, A.LinkedHashMapKeyIterable, A._HashMapKeyIterable, A._MapBaseValueIterable]);
    _inheritMany(A.ListIterable, [A.SubListIterable, A.MappedListIterable, A.ReversedListIterable, A.ListQueue, A._GeneratorIterable]);
    _inherit(A.EfficientLengthMappedIterable, A.MappedIterable);
    _inherit(A.EfficientLengthTakeIterable, A.TakeIterable);
    _inherit(A.EfficientLengthSkipIterable, A.SkipIterable);
    _inherit(A.EfficientLengthFollowedByIterable, A.FollowedByIterable);
    _inheritMany(A._Record, [A._Record2, A._Record3, A._RecordN]);
    _inheritMany(A._Record2, [A._Record_2, A._Record_2_forImport, A._Record_2_imports_modules, A._Record_2_loadedUrls_stylesheet, A._Record_2_sourceMap]);
    _inheritMany(A._Record3, [A._Record_3, A._Record_3_importer_isDependency, A._Record_3_originalUrl]);
    _inheritMany(A._RecordN, [A._Record_4, A._Record_4_baseImporter_baseUrl_forImport, A._Record_5_named_namedNodes_positional_positionalNodes_separator]);
    _inheritMany(A.MapView, [A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A.PathMap]);
    _inherit(A.UnmodifiableMapView, A._UnmodifiableMapView_MapView__UnmodifiableMapMixin);
    _inherit(A.ConstantMapView, A.UnmodifiableMapView);
    _inherit(A.ConstantStringMap, A.ConstantMap);
    _inheritMany(A.SetBase, [A.ConstantSet, A._SetBase, A._UnmodifiableSetView_SetBase__UnmodifiableSetMixin, A._UnionSet_SetBase_UnmodifiableSetMixin]);
    _inheritMany(A.ConstantSet, [A.ConstantStringSet, A.GeneralConstantSet]);
    _inherit(A.Instantiation1, A.Instantiation);
    _inherit(A.NullError, A.TypeError);
    _inheritMany(A.TearOffClosure, [A.StaticClosure, A.BoundClosure]);
    _inheritMany(A.JsLinkedHashMap, [A.JsIdentityLinkedHashMap, A.JsConstantLinkedHashMap, A._LinkedCustomHashMap]);
    _inheritMany(A.NativeTypedData, [A.NativeByteData, A.NativeTypedArray]);
    _inheritMany(A.NativeTypedArray, [A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin]);
    _inherit(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin);
    _inherit(A.NativeTypedArrayOfDouble, A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin);
    _inherit(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin);
    _inherit(A.NativeTypedArrayOfInt, A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin);
    _inheritMany(A.NativeTypedArrayOfDouble, [A.NativeFloat32List, A.NativeFloat64List]);
    _inheritMany(A.NativeTypedArrayOfInt, [A.NativeInt16List, A.NativeInt32List, A.NativeInt8List, A.NativeUint16List, A.NativeUint32List, A.NativeUint8ClampedList, A.NativeUint8List]);
    _inherit(A._TypeError, A._Error);
    _inheritMany(A._Completer, [A._AsyncCompleter, A._SyncCompleter]);
    _inheritMany(A._StreamController, [A._AsyncStreamController, A._SyncStreamController]);
    _inheritMany(A.Stream, [A._StreamImpl, A._ForwardingStream, A._CompleterStream]);
    _inherit(A._ControllerStream, A._StreamImpl);
    _inheritMany(A._BufferingStreamSubscription, [A._ControllerSubscription, A._ForwardingStreamSubscription]);
    _inherit(A._StreamControllerAddStreamState, A._AddStreamState);
    _inheritMany(A._DelayedEvent, [A._DelayedData, A._DelayedError]);
    _inherit(A._ExpandStream, A._ForwardingStream);
    _inheritMany(A._Zone, [A._CustomZone, A._RootZone]);
    _inherit(A._IdentityHashMap, A._HashMap);
    _inherit(A._LinkedHashSet, A._SetBase);
    _inherit(A._LinkedIdentityHashSet, A._LinkedHashSet);
    _inherit(A.UnmodifiableSetView, A._UnmodifiableSetView_SetBase__UnmodifiableSetMixin);
    _inheritMany(A.Codec, [A.Encoding, A.Base64Codec, A.JsonCodec]);
    _inheritMany(A.Encoding, [A.AsciiCodec, A.Utf8Codec]);
    _inheritMany(A.Converter, [A._UnicodeSubsetEncoder, A.Base64Encoder, A.JsonEncoder, A.Utf8Encoder, A.Utf8Decoder]);
    _inherit(A.AsciiEncoder, A._UnicodeSubsetEncoder);
    _inheritMany(A.ByteConversionSink, [A._Base64EncoderSink, A._Utf8StringSinkAdapter]);
    _inherit(A._Utf8Base64EncoderSink, A._Base64EncoderSink);
    _inherit(A.JsonCyclicError, A.JsonUnsupportedObjectError);
    _inherit(A._JsonStringStringifier, A._JsonStringifier);
    _inherit(A._StringSinkConversionSink, A.StringConversionSink);
    _inherit(A._StringCallbackSink, A._StringSinkConversionSink);
    _inheritMany(A.ArgumentError, [A.RangeError, A.IndexError]);
    _inherit(A._DataUri, A._Uri);
    _inherit(A.ArgParserException, A.FormatException);
    _inherit(A.EmptyUnmodifiableSet, A._EmptyUnmodifiableSet_IterableBase_UnmodifiableSetMixin);
    _inherit(A.QueueList, A._QueueList_Object_ListMixin);
    _inherit(A._CastQueueList, A.QueueList);
    _inherit(A.UnionSet, A._UnionSet_SetBase_UnmodifiableSetMixin);
    _inheritMany(A._DelegatingIterableBase, [A.DelegatingSet, A._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin]);
    _inherit(A._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin, A.DelegatingSet);
    _inherit(A.UnmodifiableSetView0, A._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin);
    _inherit(A.MapKeySet, A._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin);
    _inheritMany(A.NodeJsError, [A.JsAssertionError, A.JsRangeError, A.JsReferenceError, A.JsSyntaxError, A.JsTypeError, A.JsSystemError]);
    _inheritMany(A.Socket, [A.TTYReadStream, A.TTYWriteStream]);
    _inherit(A.InternalStyle, A.Style);
    _inheritMany(A.InternalStyle, [A.PosixStyle, A.UrlStyle, A.WindowsStyle]);
    _inheritMany(A._Enum, [A._SingletonCssMediaQueryMergeResult, A.BinaryOperator, A.UnaryOperator, A.AttributeOperator, A.Combinator, A.Deprecation, A.ExtendMode, A.Syntax, A.CalculationOperator, A.ListSeparator, A.OutputStyle, A.LineFeed, A.AttributeOperator0, A.BinaryOperator0, A.CalculationOperator0, A.Combinator0, A.Deprecation0, A.ListSeparator0, A._SingletonCssMediaQueryMergeResult0, A.ExtendMode0, A.OutputStyle0, A.LineFeed0, A.Syntax0, A.UnaryOperator0]);
    _inheritMany(A.CssNode, [A.ModifiableCssNode, A.CssParentNode]);
    _inheritMany(A.ModifiableCssNode, [A.ModifiableCssParentNode, A.ModifiableCssComment, A.ModifiableCssDeclaration, A.ModifiableCssImport]);
    _inheritMany(A.ModifiableCssParentNode, [A.ModifiableCssAtRule, A.ModifiableCssKeyframeBlock, A.ModifiableCssMediaRule, A.ModifiableCssStyleRule, A.ModifiableCssStylesheet, A.ModifiableCssSupportsRule]);
    _inherit(A._IsInvisibleVisitor, A.__IsInvisibleVisitor_Object_EveryCssVisitor);
    _inherit(A.CssStylesheet, A.CssParentNode);
    _inheritMany(A.ParentStatement, [A.AtRootRule, A.AtRule, A.CallableDeclaration, A.Declaration, A.EachRule, A.ForRule, A.MediaRule, A.StyleRule, A.Stylesheet, A.SupportsRule, A.WhileRule]);
    _inheritMany(A.CallableDeclaration, [A.ContentBlock, A.FunctionRule, A.MixinRule]);
    _inheritMany(A.IfRuleClause, [A.IfClause, A.ElseClause]);
    _inherit(A._HasContentVisitor, A.__HasContentVisitor_Object_StatementSearchVisitor);
    _inherit(A._IsInvisibleVisitor0, A.__IsInvisibleVisitor_Object_AnySelectorVisitor);
    _inherit(A._IsBogusVisitor, A.__IsBogusVisitor_Object_AnySelectorVisitor);
    _inherit(A._IsUselessVisitor, A.__IsUselessVisitor_Object_AnySelectorVisitor);
    _inheritMany(A.Selector, [A.SimpleSelector, A.ComplexSelector, A.CompoundSelector, A.SelectorList]);
    _inheritMany(A.SimpleSelector, [A.AttributeSelector, A.ClassSelector, A.IDSelector, A.ParentSelector, A.PlaceholderSelector, A.PseudoSelector, A.TypeSelector, A.UniversalSelector]);
    _inherit(A._ParentSelectorVisitor, A.__ParentSelectorVisitor_Object_SelectorSearchVisitor);
    _inherit(A.ExplicitConfiguration, A.Configuration);
    _inheritMany(A.SourceSpanException, [A.SassException, A.SourceSpanFormatException, A.MultiSourceSpanException, A.SassException0]);
    _inheritMany(A.SassException, [A.MultiSpanSassException, A.SassRuntimeException, A.SassFormatException]);
    _inheritMany(A.MultiSpanSassException, [A.MultiSpanSassRuntimeException, A.MultiSpanSassFormatException]);
    _inherit(A.MultiSpanSassScriptException, A.SassScriptException);
    _inherit(A.MergedExtension, A.Extension);
    _inherit(A.Importer, A.AsyncImporter);
    _inheritMany(A.Importer, [A.FilesystemImporter, A.NoOpImporter]);
    _inheritMany(A.Parser, [A.AtRootQueryParser, A.StylesheetParser, A.KeyframeSelectorParser, A.MediaQueryParser, A.SelectorParser]);
    _inheritMany(A.StylesheetParser, [A.ScssParser, A.SassParser]);
    _inherit(A.CssParser, A.ScssParser);
    _inheritMany(A.UnmodifiableMapBase, [A.LimitedMapView, A.PrefixedMapView, A.PublicMemberMapView, A.UnprefixedMapView, A.LimitedMapView0, A.PrefixedMapView0, A.PublicMemberMapView0, A.UnprefixedMapView0]);
    _inheritMany(A.Value, [A.SassList, A.SassBoolean, A.SassCalculation, A.SassColor, A.SassFunction, A.SassMap, A.SassMixin, A._SassNull, A.SassNumber, A.SassString]);
    _inherit(A.SassArgumentList, A.SassList);
    _inheritMany(A.SassNumber, [A.ComplexSassNumber, A.SingleUnitSassNumber, A.UnitlessSassNumber]);
    _inherit(A._MakeExpressionCalculationSafe, A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor);
    _inherit(A._FindDependenciesVisitor, A.__FindDependenciesVisitor_Object_RecursiveStatementVisitor);
    _inherit(A.SingleMapping, A.Mapping);
    _inherit(A.FileLocation, A.SourceLocationMixin);
    _inheritMany(A.SourceSpanMixin, [A._FileSpan, A.SourceSpanBase]);
    _inherit(A.MultiSourceSpanFormatException, A.MultiSourceSpanException);
    _inherit(A.SourceSpanWithContext, A.SourceSpanBase);
    _inherit(A.StringScannerException, A.SourceSpanFormatException);
    _inheritMany(A.StringScanner, [A.LineScanner, A.SpanScanner]);
    _inheritMany(A.Value0, [A.SassList0, A.SassBoolean0, A.SassCalculation0, A.SassColor0, A.SassNumber0, A.SassFunction0, A.SassMap0, A.SassMixin0, A._SassNull0, A.SassString0]);
    _inherit(A.SassArgumentList0, A.SassList0);
    _inheritMany(A.AsyncImporter0, [A.JSToDartAsyncImporter, A.JSToDartAsyncFileImporter, A.Importer0]);
    _inheritMany(A.Parser1, [A.AtRootQueryParser0, A.StylesheetParser0, A.KeyframeSelectorParser0, A.MediaQueryParser0, A.SelectorParser0]);
    _inheritMany(A.ParentStatement0, [A.AtRootRule0, A.AtRule0, A.CallableDeclaration0, A.Declaration0, A.EachRule0, A.ForRule0, A.MediaRule0, A.StyleRule0, A.Stylesheet0, A.SupportsRule0, A.WhileRule0]);
    _inheritMany(A.CssNode0, [A.ModifiableCssNode0, A.CssParentNode0]);
    _inheritMany(A.ModifiableCssNode0, [A.ModifiableCssParentNode0, A.ModifiableCssComment0, A.ModifiableCssDeclaration0, A.ModifiableCssImport0]);
    _inheritMany(A.ModifiableCssParentNode0, [A.ModifiableCssAtRule0, A.ModifiableCssKeyframeBlock0, A.ModifiableCssMediaRule0, A.ModifiableCssStyleRule0, A.ModifiableCssStylesheet0, A.ModifiableCssSupportsRule0]);
    _inheritMany(A.Selector0, [A.SimpleSelector0, A.ComplexSelector0, A.CompoundSelector0, A.SelectorList0]);
    _inheritMany(A.SimpleSelector0, [A.AttributeSelector0, A.ClassSelector0, A.IDSelector0, A.ParentSelector0, A.PlaceholderSelector0, A.PseudoSelector0, A.TypeSelector0, A.UniversalSelector0]);
    _inherit(A.CompileStringOptions, A.CompileOptions);
    _inheritMany(A.SassNumber0, [A.ComplexSassNumber0, A.SingleUnitSassNumber0, A.UnitlessSassNumber0]);
    _inherit(A.ExplicitConfiguration0, A.Configuration0);
    _inheritMany(A.CallableDeclaration0, [A.ContentBlock0, A.FunctionRule0, A.MixinRule0]);
    _inheritMany(A.StylesheetParser0, [A.ScssParser0, A.SassParser0]);
    _inherit(A.CssParser0, A.ScssParser0);
    _inherit(A._NodeException, A.JsError);
    _inheritMany(A.SassException0, [A.MultiSpanSassException0, A.SassRuntimeException0, A.SassFormatException0]);
    _inheritMany(A.MultiSpanSassException0, [A.MultiSpanSassRuntimeException0, A.MultiSpanSassFormatException0]);
    _inherit(A.MultiSpanSassScriptException0, A.SassScriptException0);
    _inherit(A._MakeExpressionCalculationSafe0, A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor0);
    _inheritMany(A.Importer0, [A.JSToDartFileImporter, A.FilesystemImporter0, A.NoOpImporter0, A.JSToDartImporter]);
    _inheritMany(A.IfRuleClause0, [A.IfClause0, A.ElseClause0]);
    _inherit(A._ParentSelectorVisitor0, A.__ParentSelectorVisitor_Object_SelectorSearchVisitor0);
    _inherit(A.MergedExtension0, A.Extension0);
    _inherit(A._HasContentVisitor0, A.__HasContentVisitor_Object_StatementSearchVisitor0);
    _inherit(A._IsInvisibleVisitor1, A.__IsInvisibleVisitor_Object_EveryCssVisitor0);
    _inherit(A._IsInvisibleVisitor2, A.__IsInvisibleVisitor_Object_AnySelectorVisitor0);
    _inherit(A._IsBogusVisitor0, A.__IsBogusVisitor_Object_AnySelectorVisitor0);
    _inherit(A._IsUselessVisitor0, A.__IsUselessVisitor_Object_AnySelectorVisitor0);
    _inherit(A.CssStylesheet0, A.CssParentNode0);
    _mixin(A.UnmodifiableListBase, A.UnmodifiableListMixin);
    _mixin(A.__CastListBase__CastIterableBase_ListMixin, A.ListBase);
    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin, A.ListBase);
    _mixin(A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin, A.ListBase);
    _mixin(A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin, A.FixedLengthListMixin);
    _mixin(A._AsyncStreamController, A._AsyncStreamControllerDispatch);
    _mixin(A._SyncStreamController, A._SyncStreamControllerDispatch);
    _mixin(A.UnmodifiableMapBase, A._UnmodifiableMapMixin);
    _mixin(A._UnmodifiableMapView_MapView__UnmodifiableMapMixin, A._UnmodifiableMapMixin);
    _mixin(A._UnmodifiableSetView_SetBase__UnmodifiableSetMixin, A._UnmodifiableSetMixin);
    _mixin(A._EmptyUnmodifiableSet_IterableBase_UnmodifiableSetMixin, A.UnmodifiableSetMixin);
    _mixin(A._QueueList_Object_ListMixin, A.ListBase);
    _mixin(A._UnionSet_SetBase_UnmodifiableSetMixin, A.UnmodifiableSetMixin);
    _mixin(A._UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin, A.UnmodifiableSetMixin);
    _mixin(A._MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin, A.UnmodifiableSetMixin);
    _mixin(A.__IsInvisibleVisitor_Object_EveryCssVisitor, A.EveryCssVisitor);
    _mixin(A.__HasContentVisitor_Object_StatementSearchVisitor, A.StatementSearchVisitor);
    _mixin(A.__IsBogusVisitor_Object_AnySelectorVisitor, A.AnySelectorVisitor);
    _mixin(A.__IsInvisibleVisitor_Object_AnySelectorVisitor, A.AnySelectorVisitor);
    _mixin(A.__IsUselessVisitor_Object_AnySelectorVisitor, A.AnySelectorVisitor);
    _mixin(A.__ParentSelectorVisitor_Object_SelectorSearchVisitor, A.SelectorSearchVisitor);
    _mixin(A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor, A.ReplaceExpressionVisitor);
    _mixin(A.__FindDependenciesVisitor_Object_RecursiveStatementVisitor, A.RecursiveStatementVisitor);
    _mixin(A.__MakeExpressionCalculationSafe_Object_ReplaceExpressionVisitor0, A.ReplaceExpressionVisitor0);
    _mixin(A.__ParentSelectorVisitor_Object_SelectorSearchVisitor0, A.SelectorSearchVisitor0);
    _mixin(A.__HasContentVisitor_Object_StatementSearchVisitor0, A.StatementSearchVisitor0);
    _mixin(A.__IsInvisibleVisitor_Object_EveryCssVisitor0, A.EveryCssVisitor0);
    _mixin(A.__IsBogusVisitor_Object_AnySelectorVisitor0, A.AnySelectorVisitor0);
    _mixin(A.__IsInvisibleVisitor_Object_AnySelectorVisitor0, A.AnySelectorVisitor0);
    _mixin(A.__IsUselessVisitor_Object_AnySelectorVisitor0, A.AnySelectorVisitor0);
  })();
  var init = {
    typeUniverse: {eC: new Map(), tR: {}, eT: {}, tPV: {}, sEA: []},
    mangledGlobalNames: {int: "int", double: "double", num: "num", String: "String", bool: "bool", Null: "Null", List: "List"},
    mangledNames: {},
    types: ["~()", "bool()", "Null()", "int()", "Future<Null>()", "Value0(List<Value0>)", "Value(List<Value>)", "String(String)", "bool(CssNode0)", "bool(CssNode)", "bool(String)", "bool(Object?)", "SassNumber0(List<Value0>)", "SassNumber(List<Value>)", "Object()", "bool(SimpleSelector0)", "bool(SimpleSelector)", "SassString0(List<Value0>)", "bool(ComplexSelector0)", "bool(ComplexSelector)", "SassString(List<Value>)", "SassBoolean0(List<Value0>)", "String()", "SassBoolean(List<Value>)", "JSClass0()", "Value()", "List<String>()", "SassList0(List<Value0>)", "Object?()", "SassList(List<Value>)", "Future<~>()", "Value0()", "String?()", "FileSpan()", "bool(int?)", "SassColor(List<Value>)", "SassColor0(List<Value0>)", "~(Object?)", "SassMap0(List<Value0>)", "Null(~())", "SassMap(List<Value>)", "Future<Null>(Future<~>())", "double(double)", "Value(Value)", "Value?()", "Value0(Value0)", "Value0?()", "bool(int)", "Uri(Uri)", "bool(num,num)", "SassNumber(SassNumber)", "SassNumber0(SassNumber0)", "bool(ComplexSelectorComponent0)", "bool(ComplexSelectorComponent)", "bool(Value0)", "Uri?/()", "Uri?()", "~(Value0)", "@()", "ComplexSelector(ComplexSelector)", "ValueExpression0(Value0)", "ComplexSelector0(ComplexSelector0)", "Null(Object,StackTrace)", "~(Value)", "double(SassColor0)", "ValueExpression(Value)", "double(double,double)", "Future<Value>()", "Null(@)", "Object(Object)", "Future<Value?>()", "~(Object,StackTrace)", "bool(SelectorList0)", "bool(SelectorList)", "Frame()", "SelectorList?()", "Future<Value0?>()", "bool(Object)", "SelectorList0?()", "bool(Value)", "Future<Value0>()", "SassRuntimeException(AstNode)", "Declaration0(List<Statement0>,FileSpan)", "List<CssMediaQuery>?(List<CssMediaQuery>)", "Declaration(List<Statement>,FileSpan)", "~(String)", "~([int?])", "~(String,Value)", "@(@)", "Callable0?()", "~(Module0<Callable0>,bool)", "Value?(Statement)", "double()", "Value0?(Statement0)", "Null([Object?])", "~(Module1<Callable>,bool)", "List<String>?()", "AsyncCallable?()", "Frame(String)", "Future<Value0>(List<Value0>)", "+originalUrl(Importer,Uri,Uri)?()", "String(@)", "Callable?()", "AsyncCallable0?()", "~(Value0,Value0)", "SassRuntimeException0(AstNode0)", "~(Value,Value)", "Null(_NodeSassColor,num)", "Future<Value0?>(Statement0)", "~(String,Value0)", "~(Object)", "int(Uri)", "Stylesheet?()", "List<CssMediaQuery0>?(List<CssMediaQuery0>)", "Future<Value?>(Statement)", "double(Value)", "double(Value0)", "Map<ComplexSelector,Extension>()", "String(Expression0)", "bool(Expression0)", "UnaryOperator0()", "Null(Module1<AsyncCallable0>,bool)", "bool(@)", "bool(Module1<AsyncCallable0>)", "bool(ModifiableCssNode)", "SassCalculation0(Object)", "bool(Expression)", "~(@)", "bool(_Highlight)", "Null(Module0<AsyncCallable>,bool)", "CallableDeclaration0()", "int(SassColor0)", "String(Expression)", "int(_NodeSassColor)", "bool(Module0<Callable0>)", "~(String,Object?)", "bool(Module1<Callable>)", "UnaryOperator()", "List<Object>()", "String(Object)", "Map<ComplexSelector0,Extension0>()", "String(String{color:Object?})", "Statement()", "CallableDeclaration()", "~(String,Function)", "Statement0()", "bool(Module0<AsyncCallable>)", "~(~())", "bool(ModifiableCssNode0)", "Iterable<String>()", "bool(Statement)", "Future<Object>()", "bool(Import)", "SelectorList(Value)", "InterpolationMap(List<SourceLocation>)", "AstNode?()", "String(SassNumber)", "SelectorList(SelectorList,SelectorList)", "~(List<Value>)", "Future<Value>(List<Value>)", "~([Object?])", "SassNumber()", "Expression(Expression)", "Callable0?(Module0<Callable0>)", "Uri(String)", "int(Frame)", "String(Frame)", "MapKeySet<Module0<Callable0>>(Map<Module0<Callable0>,AstNode>)", "Trace()", "bool(Frame)", "Map<String,Callable0>(Module0<Callable0>)", "bool(String?)", "~(Object[StackTrace?])", "~(Iterable<ExtensionStore>)", "Iterable<String>(String)", "AsyncCallable0?(Module1<AsyncCallable0>)", "MapKeySet<Module1<AsyncCallable0>>(Map<Module1<AsyncCallable0>,AstNode0>)", "Map<String,AsyncCallable0>(Module1<AsyncCallable0>)", "Iterable<String>(@)", "AstNode0(AstNode0)", "DateTime()", "~(String[~])", "SassFunction0(List<Value0>)", "~(Uint8List,String,int)", "SassMixin0(List<Value0>)", "Future<~>(List<Value0>)", "FileSpan?()", "Trace?()", "List<ExtensionStore0>()", "bool(ModifiableCssParentNode0)", "List<Extension>()", "int(int)", "0&(String,FileSpan[StackTrace?])", "List<CssValue<Combinator>>()", "Future<SassNumber0>()", "ComplexSelectorComponent?()", "bool(Queue<List<ComplexSelectorComponent>>)", "bool(UseRule0)", "bool(ForwardRule0)", "VariableDeclaration()", "List<CssValue<Combinator>>?()", "AtRootRule(List<Statement>,FileSpan)", "AtRule(List<Statement>,FileSpan)", "Combinator?()", "QueueList<ComplexSelectorComponent>()", "String(String{color:@})", "Entry(Entry)", "+(PseudoSelector,int)?()", "~(String,@)", "Set<0^>()<Object?>", "int(double)", "InterpolationMap0(List<SourceLocation>)", "AstNode0?()", "String(SassNumber0)", "Future<+originalUrl(AsyncImporter0,Uri,Uri)?>()", "0&(Object[Object?])", "0&(@[@])", "int(ComplexSelector)", "SimpleSelector()", "Object(CalculationOperation0)", "double(double,String)", "AstNode(AstNode)", "SassFunction(List<Value>)", "String(int)", "SassMixin(List<Value>)", "String(Value0)", "Future<~>(List<Value>)", "double?(String,num{assertPercent:bool,checkPercent:bool,checkUnitless:bool})", "AsyncCallable?(Module0<AsyncCallable>)", "List<ExtensionStore>()", "Future<NodeCompileResult>()", "AsyncImporter0(Object?)", "double(double,double?,num)", "~(Iterable<ExtensionStore0>)", "Callable?(Module1<Callable>)", "MapKeySet<Module1<Callable>>(Map<Module1<Callable>,AstNode0>)", "Map<String,Callable>(Module1<Callable>)", "bool(ModifiableCssParentNode)", "int(int,double?)", "~(List<Value0>)", "MapKeySet<Module0<AsyncCallable>>(Map<Module0<AsyncCallable>,AstNode>)", "Value0?(Value0)", "Map<String,AsyncCallable>(Module0<AsyncCallable>)", "SassNumber0()", "String(_NodeException)", "List<CssComment0>()", "ListSeparator()", "List<Extension0>()", "Future<SassNumber>()", "List<CssValue0<Combinator0>>()", "ComplexSelectorComponent0?()", "bool(Queue<List<ComplexSelectorComponent0>>)", "List<CssValue0<Combinator0>>?()", "Combinator0?()", "QueueList<ComplexSelectorComponent0>()", "+(PseudoSelector0,int)?()", "~(@,@)", "bool(Statement0)", "bool(Import0)", "+originalUrl(Importer0,Uri,Uri)?()", "List<CssComment>()", "ListSeparator0()", "@(Value0,num)", "Value0(int)", "SassMap0?()", "Object(_NodeSassMap,int)", "Null(_NodeSassMap,int,Object)", "bool(SassNumber0)", "ImmutableList0(SassNumber0)", "bool(SassNumber0,String)", "SassNumber0(SassNumber0,Object,Object[String?])", "SassNumber0(SassNumber0,SassNumber0[String?,String?])", "double(SassNumber0,Object,Object[String?])", "double(SassNumber0,SassNumber0[String?,String?])", "int(ComplexSelector0)", "bool(UseRule)", "Expression0(Expression0)", "SelectorList0(Value0)", "SelectorList0(SelectorList0,SelectorList0)", "SimpleSelector0()", "FileLocation(FileSpan)", "String(FileSpan)", "int(SourceLocation)", "bool(ForwardRule)", "Future<~>?()", "AtRootRule0(List<Statement0>,FileSpan)", "AtRule0(List<Statement0>,FileSpan)", "int(@,@)", "Future<String>()", "bool(Object?,Object?)", "int(Object?)", "~(Object?,Object?)", "Trace(String)", "SassMap?()", "Future<+originalUrl(AsyncImporter,Uri,Uri)?>()", "WhileRule(List<Statement>,FileSpan)", "SourceFile()", "SourceFile?(int)", "String?(SourceFile?)", "int(_Line)", "SassString(SimpleSelector)", "Object(_Line)", "Object(_Highlight)", "int(_Highlight,_Highlight)", "List<_Line>(MapEntry<Object,List<_Highlight>>)", "SourceSpanWithContext()", "List<Frame>(Trace)", "int(Trace)", "SassString(int)", "String(Trace)", "SassString(String)", "~(String,int)", "Frame(String,String)", "~(String,int?)", "int(int,int)", "Frame(Frame)", "bool(+originalUrl(Importer,Uri,Uri))", "Uri(+originalUrl(Importer,Uri,Uri))", "bool(+baseImporter,baseUrl,forImport(Uri,Importer,Uri?,bool),+originalUrl(Importer,Uri,Uri)?)", "String(Argument0)", "bool(Deprecation)", "SassArgumentList0(Object,Object,Object[String?])", "ImmutableMap0(SassArgumentList0)", "Value?(Module0<Callable0>)", "Value0?(Module1<AsyncCallable0>)", "Module1<AsyncCallable0>?(Module1<AsyncCallable0>)", "Module0<Callable0>?(Module0<Callable0>)", "@(String)", "Map<String,Value0>(Module1<AsyncCallable0>)", "Map<String,AstNode0>(Module1<AsyncCallable0>)", "Uint8List(@,@)", "Map<String,Value>(Module0<Callable0>)", "Future<CssValue0<String>>(Interpolation0{trim:bool,warnForColor:bool})", "Map<String,AstNode>(Module0<Callable0>)", "Future<@>()", "String(int,IfClause)", "+(String?,String?)()", "ArgParser()", "Object?(Object?)", "Set<Deprecation>()", "Future<~>(String)", "~(Module1<AsyncCallable0>,bool)", "Future<+loadedUrls,stylesheet(Set<Uri>,CssStylesheet0)>()", "Future<Module1<AsyncCallable0>>()", "List<WatchEvent>(List<WatchEvent>)", "~(Module1<AsyncCallable0>)", "AtRootQuery()", "String(BuiltInCallable)", "List<CssMediaQuery>()", "ChangeType?()", "Future<Value0?>(Value0)", "ChangeType()", "Future<CssValue0<String>>(Interpolation0)", "~([Future<~>?])", "SelectorList()", "CompoundSelector()", "Statement({root:bool})", "Future<Value0?>(IfRuleClause0)", "bool(Extension)", "Expression({bracketList:bool,singleEquals:bool,until:bool()?})", "Stylesheet()", "UserDefinedCallable0<AsyncEnvironment0>(ContentBlock0)", "Statement?()", "VariableDeclaration(VariableDeclaration)", "ArgumentDeclaration()", "Set<ModifiableBox<SelectorList>>()", "UseRule()", "~(String,Option)", "Future<Value0>(Expression0)", "StyleRule(List<Statement>,FileSpan)", "~(@,StackTrace)", "Value0/()", "EachRule(List<Statement>,FileSpan)", "FunctionRule(List<Statement>,FileSpan)", "ForRule(List<Statement>,FileSpan)", "ContentBlock(List<Statement>,FileSpan)", "MediaRule(List<Statement>,FileSpan)", "MixinRule(List<Statement>,FileSpan)", "Iterable<ComplexSelector>(List<ComplexSelector>)", "Future<Stylesheet0?>()", "bool(+originalUrl(AsyncImporter0,Uri,Uri))", "Uri(+originalUrl(AsyncImporter0,Uri,Uri))", "AtRootQuery0()", "SupportsRule(List<Statement>,FileSpan)", "List<SimpleSelector>(Extender)", "~(Expression)", "~(BinaryOperator)", "SassCalculation0(Object[Object?,Object?])", "SassCalculation0(SassCalculation0[String?])", "ImmutableList(SassCalculation0)", "Object(Object,String,Object,Object)", "bool(CalculationOperator0)", "bool(CalculationOperation0,Object)", "int(CalculationOperation0)", "String(CalculationOperation0)", "StringExpression(Interpolation)", "CalculationInterpolation(Object,String)", "bool(CalculationInterpolation,Object)", "int(CalculationInterpolation)", "String(CalculationInterpolation)", "DateTime(StylesheetNode)", "List<Extender>?(SimpleSelector)", "List<Extender>(PseudoSelector)", "List<List<Extender>>(List<Extender>)", "List<ComplexSelector>(ComplexSelector)", "PseudoSelector(ComplexSelector)", "0&(List<Value0>)", "+(SassNumber0,SassNumber0)?()", "SassColor0(Object,_Channels)", "SassColor0(SassColor0,_Channels)", "~(SimpleSelector,Set<ModifiableBox<SelectorList>>)", "int(int,ComplexSelectorComponent)", "Null(_NodeSassColor,num?[num?,num?,num?,SassColor0?])", "QualifiedName()", "double(_NodeSassColor)", "SassScriptException()", "ComplexSelectorComponent()", "List<ComplexSelectorComponent>?(List<ComplexSelectorComponent>,List<ComplexSelectorComponent>)", "AsyncImporter0(JSImporter)", "0&(@)", "SingleUnitSassNumber(double)", "int(int,ComplexSelectorComponent0)", "ComplexSelectorComponent0()", "String(CssValue0<Combinator0>)", "int(int,SimpleSelector0)", "String(BuiltInCallable0)", "Future<CssValue<String>>(Interpolation{trim:bool,warnForColor:bool})", "Value0?(Module1<Callable>)", "Module1<Callable>?(Module1<Callable>)", "String(CssValue<Combinator>)", "bool(List<Iterable<ComplexSelectorComponent>>)", "Map<String,Value0>(Module1<Callable>)", "Object(Value0)", "int(int,SimpleSelector)", "@(@,String)", "CssValue0<String>(Interpolation0{trim:bool,warnForColor:bool})", "Null(@,StackTrace)", "SassList(ComplexSelector)", "~(Module0<AsyncCallable>,bool)", "+loadedUrls,stylesheet(Set<Uri>,CssStylesheet0)()", "Module1<Callable>()", "~(Module1<Callable>)", "Future<+loadedUrls,stylesheet(Set<Uri>,CssStylesheet)>()", "Future<Module0<AsyncCallable>>()", "CssValue0<String>(Interpolation0)", "bool(PseudoSelector)", "Value0?(IfRuleClause0)", "UserDefinedCallable0<Environment0>(ContentBlock0)", "Value0(Expression0)", "~(Module0<AsyncCallable>)", "FileSpan(_NodeException)", "bool(Extension0)", "Set<ModifiableBox0<SelectorList0>>()", "SelectorList?(PseudoSelector)", "Iterable<ComplexSelector>(ComplexSelector)", "_Future<@>(@)", "Iterable<ComplexSelector0>(List<ComplexSelector0>)", "SimpleSelector(SimpleSelector)", "List<SimpleSelector0>(Extender0)", "List<Extender0>?(SimpleSelector0)", "List<Extender0>(PseudoSelector0)", "List<List<Extender0>>(List<Extender0>)", "List<ComplexSelector0>(ComplexSelector0)", "PseudoSelector0(ComplexSelector0)", "~(SimpleSelector0,Set<ModifiableBox0<SelectorList0>>)", "SassFunction0(Object,String,Value0(List<Value0>))", "Null(@,@)", "QualifiedName0()", "Future<Value?>(Value)", "List<ComplexSelectorComponent0>?(List<ComplexSelectorComponent0>,List<ComplexSelectorComponent0>)", "Null(Function,Function)", "bool(List<Iterable<ComplexSelectorComponent0>>)", "Future<CssValue<String>>(Interpolation)", "String(String?)", "Value?(Module0<AsyncCallable>)", "Module0<AsyncCallable>?(Module0<AsyncCallable>)", "~(int,@)", "bool(PseudoSelector0)", "SelectorList0?(PseudoSelector0)", "String(int,IfClause0)", "Future<Value?>(IfRuleClause)", "String(Value)", "~(Object?,Object,Object?)", "+(String,String)(String)", "0&(List<Value>)", "Stylesheet0?()", "bool(+originalUrl(Importer0,Uri,Uri))", "Uri(+originalUrl(Importer0,Uri,Uri))", "~(String,WarnOptions)", "~(String,DebugOptions)", "Null(RenderResult)", "JSFunction0(JSFunction0)", "Object?(Object,String,String[Object?])", "Null(Object)", "UserDefinedCallable<AsyncEnvironment>(ContentBlock)", "bool(String?,String?)", "List<Value0>(Value0)", "bool(List<Value0>)", "SassList0(ComplexSelector0)", "Iterable<ComplexSelector0>(ComplexSelector0)", "SimpleSelector0(SimpleSelector0)", "SassList0(Object[Object?,_ConstructorOptions?])", "+(SassNumber,SassNumber)?()", "Null(_NodeSassList,int?[bool?,SassList0?])", "Map<String,Value>(Module0<AsyncCallable>)", "Object(_NodeSassList,int)", "Null(_NodeSassList,int,Object)", "bool(_NodeSassList)", "Null(_NodeSassList,bool)", "int(_NodeSassList)", "SassMap0(Value0)", "SassMap0(SassMap0)", "Map<String,AstNode>(Module0<AsyncCallable>)", "SassMap0(Object[ImmutableMap0?])", "ImmutableMap0(SassMap0)", "@(SassMap0,Object)", "Null(_NodeSassMap,int?[SassMap0?])", "SassNumber0(int)", "Future<Value>(Expression)", "int(_NodeSassMap)", "List<Value>(Value)", "SassNumber0(Value0)", "List<CssMediaQuery0>()", "Value0(Object)", "0&(Object)", "SassNumber0(Object,num[Object?])", "double(SassNumber0)", "bool(List<Value>)", "int?(SassNumber0)", "Value/()", "int(SassNumber0[String?])", "double(SassNumber0,num,num[String?])", "SassNumber0(SassNumber0[String?])", "SassNumber0(SassNumber0,String[String?])", "int(String?)", "Object(String)", "bool(Version)", "SassMap(Value)", "SassMap(SassMap)", "Null(_NodeSassNumber,num?[String?,SassNumber0?])", "double(_NodeSassNumber)", "Null(_NodeSassNumber,num)", "String(_NodeSassNumber)", "Null(_NodeSassNumber,String)", "SassScriptException0()", "CssValue<String>(Interpolation{trim:bool,warnForColor:bool})", "String(Object,@,@[@])", "~(Symbol0,@)", "Future<Stylesheet?>()", "SassNumber(Value)", "+loadedUrls,stylesheet(Set<Uri>,CssStylesheet)()", "SassString0(SimpleSelector0)", "Module0<Callable0>()", "SelectorList0()", "CompoundSelector0()", "~(CssMediaQuery0)", "~(SelectorList0)", "~(MapEntry<Value0,Value0>)", "SingleUnitSassNumber0(double)", "~(Module0<Callable0>)", "JSUrl0?(FileSpan)", "Value?(Value)", "Value(Object)", "SassString0(int)", "SassString0(String)", "SassString0(Object[Object?,_ConstructorOptions1?])", "String(SassString0)", "bool(SassString0)", "int(SassString0)", "int(SassString0,Value0[String?])", "Null(_NodeSassString,String?[SassString0?])", "String(_NodeSassString)", "Null(_NodeSassString,String)", "Statement0({root:bool})", "CssValue<String>(Interpolation)", "Stylesheet0()", "Statement0?()", "VariableDeclaration0(VariableDeclaration0)", "ArgumentDeclaration0()", "+(String,ArgumentDeclaration0)()", "VariableDeclaration0()", "bool(+originalUrl(AsyncImporter,Uri,Uri))", "StyleRule0(List<Statement0>,FileSpan)", "Value?(IfRuleClause)", "EachRule0(List<Statement0>,FileSpan)", "FunctionRule0(List<Statement0>,FileSpan)", "ForRule0(List<Statement0>,FileSpan)", "ContentBlock0(List<Statement0>,FileSpan)", "MediaRule0(List<Statement0>,FileSpan)", "MixinRule0(List<Statement0>,FileSpan)", "UserDefinedCallable<Environment>(ContentBlock)", "SupportsRule0(List<Statement0>,FileSpan)", "WhileRule0(List<Statement0>,FileSpan)", "~(Expression0)", "~(BinaryOperator0)", "StringExpression0(Interpolation0)", "Null(~(Object?),~(Object?))", "ImmutableList0(Value0)", "String?(Value0)", "int(Value0,Value0[String?])", "SassBoolean0(Value0[String?])", "SassCalculation0(Value0[String?])", "SassColor0(Value0[String?])", "SassFunction0(Value0[String?])", "SassMap0(Value0[String?])", "SassMixin0(Value0[String?])", "SassNumber0(Value0[String?])", "SassString0(Value0[String?])", "SassMap0?(Value0)", "bool(Value0,Object?)", "int(Value0[Object?])", "Value(Expression)", "Expression()", "~(Zone?,ZoneDelegate?,Zone,Object,StackTrace)", "0^(Zone?,ZoneDelegate?,Zone,0^())<Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^),1^)<Object?,Object?>", "0^(Zone?,ZoneDelegate?,Zone,0^(1^,2^),1^,2^)<Object?,Object?,Object?>", "0^()(Zone,ZoneDelegate,Zone,0^())<Object?>", "0^(1^)(Zone,ZoneDelegate,Zone,0^(1^))<Object?,Object?>", "0^(1^,2^)(Zone,ZoneDelegate,Zone,0^(1^,2^))<Object?,Object?,Object?>", "AsyncError?(Zone,ZoneDelegate,Zone,Object,StackTrace?)", "~(Zone?,ZoneDelegate?,Zone,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~())", "Timer(Zone,ZoneDelegate,Zone,Duration,~(Timer))", "~(Zone,ZoneDelegate,Zone,String)", "Zone(Zone?,ZoneDelegate?,Zone,ZoneSpecification?,Map<Object?,Object?>?)", "~(ContentBlock)", "~(List<Statement>)", "0^(0^,0^)<num>", "Uri(+originalUrl(AsyncImporter,Uri,Uri))", "String(Argument)", "~(Object,StackTrace,EventSink<0^>)<Object?>", "List<0^>(0^,List<0^>?)<Object?>", "NodeCompileResult(String[CompileOptions?])", "NodeCompileResult(String[CompileStringOptions?])", "Promise(String[CompileOptions?])", "Promise(String[CompileStringOptions?])", "Importer0(Object?)", "List<Object?>(Object?)", "~(RenderOptions,~(Object?,RenderResult?))", "RenderResult(RenderOptions)", "Uri(JSUrl0)", "JSUrl0(Uri)", "String(String[String?,String?,String?,String?,String?,String?,String?,String?,String?,String?,String?,String?,String?,String?])", "~(CssMediaQuery)", "~(SelectorList)", "int(num)", "~(MapEntry<Value,Value>)", "Future<~>(List<String>)", "Map<String,AstNode0>(Module1<Callable>)"],
    interceptorsByTag: null,
    leafTags: null,
    arrayRti: Symbol("$ti"),
    rttc: {
      "2;": (t1, t2) => o => o instanceof A._Record_2 && t1._is(o._0) && t2._is(o._1),
      "2;forImport": (t1, t2) => o => o instanceof A._Record_2_forImport && t1._is(o._0) && t2._is(o._1),
      "2;sourceMap": (t1, t2) => o => o instanceof A._Record_2_sourceMap && t1._is(o._0) && t2._is(o._1),
      "2;imports,modules": (t1, t2) => o => o instanceof A._Record_2_imports_modules && t1._is(o._0) && t2._is(o._1),
      "2;loadedUrls,stylesheet": (t1, t2) => o => o instanceof A._Record_2_loadedUrls_stylesheet && t1._is(o._0) && t2._is(o._1),
      "3;": (t1, t2, t3) => o => o instanceof A._Record_3 && t1._is(o._0) && t2._is(o._1) && t3._is(o._2),
      "3;originalUrl": (t1, t2, t3) => o => o instanceof A._Record_3_originalUrl && t1._is(o._0) && t2._is(o._1) && t3._is(o._2),
      "3;importer,isDependency": (t1, t2, t3) => o => o instanceof A._Record_3_importer_isDependency && t1._is(o._0) && t2._is(o._1) && t3._is(o._2),
      "4;": types => o => o instanceof A._Record_4 && A.pairwiseIsTest(types, o._values),
      "4;baseImporter,baseUrl,forImport": types => o => o instanceof A._Record_4_baseImporter_baseUrl_forImport && A.pairwiseIsTest(types, o._values),
      "5;named,namedNodes,positional,positionalNodes,separator": types => o => o instanceof A._Record_5_named_namedNodes_positional_positionalNodes_separator && A.pairwiseIsTest(types, o._values)
    }
  };
  A._Universe_addRules(init.typeUniverse, JSON.parse('{"PlainJavaScriptObject":"LegacyJavaScriptObject","UnknownJavaScriptObject":"LegacyJavaScriptObject","JavaScriptFunction":"LegacyJavaScriptObject","Stdin":"LegacyJavaScriptObject","Stdout":"LegacyJavaScriptObject","ReadlineModule":"LegacyJavaScriptObject","ReadlineOptions":"LegacyJavaScriptObject","ReadlineInterface":"LegacyJavaScriptObject","BufferModule":"LegacyJavaScriptObject","BufferConstants":"LegacyJavaScriptObject","Buffer":"LegacyJavaScriptObject","ConsoleModule":"LegacyJavaScriptObject","Console":"LegacyJavaScriptObject","EventEmitter":"LegacyJavaScriptObject","FS":"LegacyJavaScriptObject","FSConstants":"LegacyJavaScriptObject","FSWatcher":"LegacyJavaScriptObject","ReadStream":"LegacyJavaScriptObject","ReadStreamOptions":"LegacyJavaScriptObject","WriteStream":"LegacyJavaScriptObject","WriteStreamOptions":"LegacyJavaScriptObject","FileOptions":"LegacyJavaScriptObject","StatOptions":"LegacyJavaScriptObject","MkdirOptions":"LegacyJavaScriptObject","RmdirOptions":"LegacyJavaScriptObject","WatchOptions":"LegacyJavaScriptObject","WatchFileOptions":"LegacyJavaScriptObject","Stats":"LegacyJavaScriptObject","Promise":"LegacyJavaScriptObject","Date":"LegacyJavaScriptObject","JsError":"LegacyJavaScriptObject","Atomics":"LegacyJavaScriptObject","Modules":"LegacyJavaScriptObject","Module":"LegacyJavaScriptObject","Net":"LegacyJavaScriptObject","Socket":"LegacyJavaScriptObject","NetAddress":"LegacyJavaScriptObject","NetServer":"LegacyJavaScriptObject","NodeJsError":"LegacyJavaScriptObject","JsAssertionError":"LegacyJavaScriptObject","JsRangeError":"LegacyJavaScriptObject","JsReferenceError":"LegacyJavaScriptObject","JsSyntaxError":"LegacyJavaScriptObject","JsTypeError":"LegacyJavaScriptObject","JsSystemError":"LegacyJavaScriptObject","Process":"LegacyJavaScriptObject","CPUUsage":"LegacyJavaScriptObject","Release":"LegacyJavaScriptObject","StreamModule":"LegacyJavaScriptObject","Readable":"LegacyJavaScriptObject","Writable":"LegacyJavaScriptObject","Duplex":"LegacyJavaScriptObject","Transform":"LegacyJavaScriptObject","WritableOptions":"LegacyJavaScriptObject","ReadableOptions":"LegacyJavaScriptObject","Immediate":"LegacyJavaScriptObject","Timeout":"LegacyJavaScriptObject","TTY":"LegacyJavaScriptObject","TTYReadStream":"LegacyJavaScriptObject","TTYWriteStream":"LegacyJavaScriptObject","Util":"LegacyJavaScriptObject","JSArray0":"LegacyJavaScriptObject","Chokidar":"LegacyJavaScriptObject","ChokidarOptions":"LegacyJavaScriptObject","ChokidarWatcher":"LegacyJavaScriptObject","JSFunction":"LegacyJavaScriptObject","ImmutableList":"LegacyJavaScriptObject","ImmutableMap":"LegacyJavaScriptObject","NodeImporterResult":"LegacyJavaScriptObject","RenderContext":"LegacyJavaScriptObject","RenderContextOptions":"LegacyJavaScriptObject","RenderContextResult":"LegacyJavaScriptObject","RenderContextResultStats":"LegacyJavaScriptObject","JSClass":"LegacyJavaScriptObject","JSUrl":"LegacyJavaScriptObject","_PropertyDescriptor":"LegacyJavaScriptObject","JSArray1":"LegacyJavaScriptObject","Chokidar0":"LegacyJavaScriptObject","ChokidarOptions0":"LegacyJavaScriptObject","ChokidarWatcher0":"LegacyJavaScriptObject","_Channels":"LegacyJavaScriptObject","_NodeSassColor":"LegacyJavaScriptObject","CompileOptions":"LegacyJavaScriptObject","CompileStringOptions":"LegacyJavaScriptObject","NodeCompileResult":"LegacyJavaScriptObject","_NodeException":"LegacyJavaScriptObject","Exports":"LegacyJavaScriptObject","LoggerNamespace":"LegacyJavaScriptObject","Fiber":"LegacyJavaScriptObject","FiberClass":"LegacyJavaScriptObject","JSFunction0":"LegacyJavaScriptObject","ImmutableList0":"LegacyJavaScriptObject","ImmutableMap0":"LegacyJavaScriptObject","JSImporter":"LegacyJavaScriptObject","CanonicalizeContext":"LegacyJavaScriptObject","JSImporterResult":"LegacyJavaScriptObject","NodeImporterResult0":"LegacyJavaScriptObject","_ConstructorOptions":"LegacyJavaScriptObject","_NodeSassList":"LegacyJavaScriptObject","WarnOptions":"LegacyJavaScriptObject","DebugOptions":"LegacyJavaScriptObject","JSLogger":"LegacyJavaScriptObject","_NodeSassMap":"LegacyJavaScriptObject","_ConstructorOptions0":"LegacyJavaScriptObject","_NodeSassNumber":"LegacyJavaScriptObject","JSClass0":"LegacyJavaScriptObject","RenderContext0":"LegacyJavaScriptObject","RenderContextOptions0":"LegacyJavaScriptObject","RenderContextResult0":"LegacyJavaScriptObject","RenderContextResultStats0":"LegacyJavaScriptObject","RenderOptions":"LegacyJavaScriptObject","RenderResult":"LegacyJavaScriptObject","RenderResultStats":"LegacyJavaScriptObject","_Exports":"LegacyJavaScriptObject","_ConstructorOptions1":"LegacyJavaScriptObject","_NodeSassString":"LegacyJavaScriptObject","Types":"LegacyJavaScriptObject","JSUrl0":"LegacyJavaScriptObject","_PropertyDescriptor0":"LegacyJavaScriptObject","JSBool":{"bool":[],"TrustedGetRuntimeType":[]},"JSNull":{"Null":[],"TrustedGetRuntimeType":[]},"LegacyJavaScriptObject":{"Promise":[],"JsSystemError":[],"ImmutableList":[],"_Channels":[],"_NodeSassColor":[],"CompileOptions":[],"CompileStringOptions":[],"NodeCompileResult":[],"_NodeException":[],"Fiber":[],"JSFunction0":[],"ImmutableList0":[],"ImmutableMap0":[],"JSImporter":[],"JSImporterResult":[],"NodeImporterResult0":[],"_ConstructorOptions":[],"_NodeSassList":[],"WarnOptions":[],"DebugOptions":[],"_NodeSassMap":[],"_ConstructorOptions0":[],"_NodeSassNumber":[],"JSClass0":[],"RenderContextOptions0":[],"RenderOptions":[],"RenderResult":[],"_ConstructorOptions1":[],"_NodeSassString":[],"JSUrl0":[]},"JSArray":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"JSUnmodifiableArray":{"JSArray":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"JSNumber":{"double":[],"num":[],"Comparable":["num"]},"JSInt":{"double":[],"int":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSNumNotInt":{"double":[],"num":[],"Comparable":["num"],"TrustedGetRuntimeType":[]},"JSString":{"String":[],"Comparable":["String"],"TrustedGetRuntimeType":[]},"_CastIterableBase":{"Iterable":["2"]},"CastIterable":{"_CastIterableBase":["1","2"],"Iterable":["2"],"Iterable.E":"2"},"_EfficientLengthCastIterable":{"CastIterable":["1","2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"_CastListBase":{"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"]},"CastList":{"_CastListBase":["1","2"],"ListBase":["2"],"List":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2","ListBase.E":"2"},"CastSet":{"Set":["2"],"_CastIterableBase":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"CastMap":{"MapBase":["3","4"],"Map":["3","4"],"MapBase.V":"4","MapBase.K":"3"},"LateError":{"Error":[]},"CodeUnits":{"ListBase":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"ListBase.E":"int"},"EfficientLengthIterable":{"Iterable":["1"]},"ListIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"SubListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"MappedIterable":{"Iterable":["2"],"Iterable.E":"2"},"EfficientLengthMappedIterable":{"MappedIterable":["1","2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MappedListIterable":{"ListIterable":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListIterable.E":"2","Iterable.E":"2"},"WhereIterable":{"Iterable":["1"],"Iterable.E":"1"},"ExpandIterable":{"Iterable":["2"],"Iterable.E":"2"},"TakeIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthTakeIterable":{"TakeIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"SkipIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthSkipIterable":{"SkipIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"SkipWhileIterable":{"Iterable":["1"],"Iterable.E":"1"},"EmptyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"FollowedByIterable":{"Iterable":["1"],"Iterable.E":"1"},"EfficientLengthFollowedByIterable":{"FollowedByIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"WhereTypeIterable":{"Iterable":["1"],"Iterable.E":"1"},"UnmodifiableListBase":{"ListBase":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ReversedListIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"Symbol":{"Symbol0":[]},"ConstantMapView":{"UnmodifiableMapView":["1","2"],"Map":["1","2"]},"ConstantMap":{"Map":["1","2"]},"ConstantStringMap":{"ConstantMap":["1","2"],"Map":["1","2"]},"_KeysOrValues":{"Iterable":["1"],"Iterable.E":"1"},"ConstantSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"ConstantStringSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"GeneralConstantSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"Instantiation":{"Function":[]},"Instantiation1":{"Function":[]},"NullError":{"TypeError":[],"Error":[]},"JsNoSuchMethodError":{"Error":[]},"UnknownJsTypeError":{"Error":[]},"NullThrownFromJavaScriptException":{"Exception":[]},"_StackTrace":{"StackTrace":[]},"Closure":{"Function":[]},"Closure0Args":{"Function":[]},"Closure2Args":{"Function":[]},"TearOffClosure":{"Function":[]},"StaticClosure":{"Function":[]},"BoundClosure":{"Function":[]},"_CyclicInitializationError":{"Error":[]},"RuntimeError":{"Error":[]},"JsLinkedHashMap":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"LinkedHashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"JsIdentityLinkedHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"JsConstantLinkedHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"_MatchImplementation":{"RegExpMatch":[],"Match":[]},"_AllMatchesIterable":{"Iterable":["RegExpMatch"],"Iterable.E":"RegExpMatch"},"StringMatch":{"Match":[]},"_StringAllMatchesIterable":{"Iterable":["Match"],"Iterable.E":"Match"},"NativeByteBuffer":{"ByteBuffer":[],"TrustedGetRuntimeType":[]},"NativeByteData":{"ByteData":[],"TrustedGetRuntimeType":[]},"NativeTypedArray":{"JavaScriptIndexingBehavior":["1"]},"NativeTypedArrayOfDouble":{"ListBase":["double"],"JavaScriptIndexingBehavior":["double"],"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"NativeTypedArrayOfInt":{"ListBase":["int"],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"NativeFloat32List":{"NativeTypedArrayOfDouble":[],"ListBase":["double"],"Float32List":[],"JavaScriptIndexingBehavior":["double"],"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeFloat64List":{"NativeTypedArrayOfDouble":[],"ListBase":["double"],"Float64List":[],"JavaScriptIndexingBehavior":["double"],"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"],"TrustedGetRuntimeType":[],"ListBase.E":"double"},"NativeInt16List":{"NativeTypedArrayOfInt":[],"ListBase":["int"],"Int16List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt32List":{"NativeTypedArrayOfInt":[],"ListBase":["int"],"Int32List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeInt8List":{"NativeTypedArrayOfInt":[],"ListBase":["int"],"Int8List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint16List":{"NativeTypedArrayOfInt":[],"ListBase":["int"],"Uint16List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint32List":{"NativeTypedArrayOfInt":[],"ListBase":["int"],"Uint32List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8ClampedList":{"NativeTypedArrayOfInt":[],"ListBase":["int"],"Uint8ClampedList":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"NativeUint8List":{"NativeTypedArrayOfInt":[],"ListBase":["int"],"Uint8List":[],"JavaScriptIndexingBehavior":["int"],"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"],"TrustedGetRuntimeType":[],"ListBase.E":"int"},"_Error":{"Error":[]},"_TypeError":{"TypeError":[],"Error":[]},"AsyncError":{"Error":[]},"_Future":{"Future":["1"]},"_SyncStarIterable":{"Iterable":["1"],"Iterable.E":"1"},"_AsyncCompleter":{"_Completer":["1"]},"_SyncCompleter":{"_Completer":["1"]},"_StreamController":{"EventSink":["1"]},"_AsyncStreamController":{"_StreamController":["1"],"EventSink":["1"]},"_SyncStreamController":{"_StreamController":["1"],"EventSink":["1"]},"_ControllerStream":{"_StreamImpl":["1"],"Stream":["1"],"Stream.T":"1"},"_ControllerSubscription":{"_BufferingStreamSubscription":["1"],"StreamSubscription":["1"],"_BufferingStreamSubscription.T":"1"},"_BufferingStreamSubscription":{"StreamSubscription":["1"],"_BufferingStreamSubscription.T":"1"},"_StreamImpl":{"Stream":["1"]},"_ForwardingStream":{"Stream":["2"]},"_ForwardingStreamSubscription":{"_BufferingStreamSubscription":["2"],"StreamSubscription":["2"],"_BufferingStreamSubscription.T":"2"},"_ExpandStream":{"_ForwardingStream":["1","2"],"Stream":["2"],"Stream.T":"2"},"_ZoneSpecification":{"ZoneSpecification":[]},"_ZoneDelegate":{"ZoneDelegate":[]},"_Zone":{"Zone":[]},"_CustomZone":{"Zone":[]},"_RootZone":{"Zone":[]},"Queue":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"_HashMap":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"_IdentityHashMap":{"_HashMap":["1","2"],"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"_HashMapKeyIterable":{"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"_LinkedCustomHashMap":{"JsLinkedHashMap":["1","2"],"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"_LinkedHashSet":{"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_LinkedIdentityHashSet":{"_LinkedHashSet":["1"],"_SetBase":["1"],"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"UnmodifiableListView":{"ListBase":["1"],"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1"},"ListBase":{"List":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapBase":{"Map":["1","2"]},"UnmodifiableMapBase":{"MapBase":["1","2"],"Map":["1","2"]},"_MapBaseValueIterable":{"EfficientLengthIterable":["2"],"Iterable":["2"],"Iterable.E":"2"},"MapView":{"Map":["1","2"]},"UnmodifiableMapView":{"Map":["1","2"]},"ListQueue":{"ListIterable":["1"],"Queue":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"SetBase":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_SetBase":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"UnmodifiableSetView":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"AsciiCodec":{"Codec":["String","List<int>"]},"_UnicodeSubsetEncoder":{"Converter":["String","List<int>"]},"AsciiEncoder":{"Converter":["String","List<int>"]},"Base64Codec":{"Codec":["List<int>","String"]},"Base64Encoder":{"Converter":["List<int>","String"]},"Encoding":{"Codec":["String","List<int>"]},"JsonUnsupportedObjectError":{"Error":[]},"JsonCyclicError":{"Error":[]},"JsonCodec":{"Codec":["Object?","String"]},"JsonEncoder":{"Converter":["Object?","String"]},"Utf8Codec":{"Codec":["String","List<int>"]},"Utf8Encoder":{"Converter":["String","List<int>"]},"Utf8Decoder":{"Converter":["List<int>","String"]},"DateTime":{"Comparable":["DateTime"]},"double":{"num":[],"Comparable":["num"]},"Duration":{"Comparable":["Duration"]},"int":{"num":[],"Comparable":["num"]},"List":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"num":{"Comparable":["num"]},"RegExpMatch":{"Match":[]},"Set":{"EfficientLengthIterable":["1"],"Iterable":["1"]},"String":{"Comparable":["String"]},"AssertionError":{"Error":[]},"TypeError":{"Error":[]},"ArgumentError":{"Error":[]},"RangeError":{"Error":[]},"IndexError":{"RangeError":[],"Error":[]},"NoSuchMethodError":{"Error":[]},"UnsupportedError":{"Error":[]},"UnimplementedError":{"Error":[]},"StateError":{"Error":[]},"ConcurrentModificationError":{"Error":[]},"OutOfMemoryError":{"Error":[]},"StackOverflowError":{"Error":[]},"_Exception":{"Exception":[]},"FormatException":{"Exception":[]},"_GeneratorIterable":{"ListIterable":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListIterable.E":"1","Iterable.E":"1"},"_StringStackTrace":{"StackTrace":[]},"Runes":{"Iterable":["int"],"Iterable.E":"int"},"_Uri":{"Uri":[]},"_SimpleUri":{"Uri":[]},"_DataUri":{"Uri":[]},"ArgParserException":{"FormatException":[],"Exception":[]},"ErrorResult":{"Result":["0&"]},"ValueResult":{"Result":["1"]},"_CompleterStream":{"Stream":["1"],"Stream.T":"1"},"_NextRequest":{"_EventRequest":["1"]},"EmptyUnmodifiableSet":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"Iterable.E":"1"},"QueueList":{"ListBase":["1"],"List":["1"],"Queue":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"],"ListBase.E":"1","QueueList.E":"1"},"_CastQueueList":{"QueueList":["2"],"ListBase":["2"],"List":["2"],"Queue":["2"],"EfficientLengthIterable":["2"],"Iterable":["2"],"ListBase.E":"2","QueueList.E":"2"},"UnionSet":{"SetBase":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"UnmodifiableSetView0":{"DelegatingSet":["1"],"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"MapKeySet":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"_DelegatingIterableBase":{"Iterable":["1"]},"DelegatingSet":{"Set":["1"],"EfficientLengthIterable":["1"],"Iterable":["1"]},"PathException":{"Exception":[]},"PathMap":{"Map":["String?","1"]},"Version":{"VersionRange":[],"Comparable":["VersionRange"]},"VersionRange":{"Comparable":["VersionRange"]},"ModifiableCssAtRule":{"ModifiableCssParentNode":[],"ModifiableCssNode":[],"CssParentNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssComment":{"ModifiableCssNode":[],"CssComment":[],"CssNode":[],"AstNode":[]},"ModifiableCssDeclaration":{"ModifiableCssNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssImport":{"ModifiableCssNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssKeyframeBlock":{"ModifiableCssParentNode":[],"ModifiableCssNode":[],"CssParentNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssMediaRule":{"ModifiableCssParentNode":[],"ModifiableCssNode":[],"CssParentNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssNode":{"CssNode":[],"AstNode":[]},"ModifiableCssParentNode":{"ModifiableCssNode":[],"CssParentNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssStyleRule":{"ModifiableCssParentNode":[],"ModifiableCssNode":[],"CssParentNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssStylesheet":{"ModifiableCssParentNode":[],"CssStylesheet":[],"ModifiableCssNode":[],"CssParentNode":[],"CssNode":[],"AstNode":[]},"ModifiableCssSupportsRule":{"ModifiableCssParentNode":[],"ModifiableCssNode":[],"CssParentNode":[],"CssNode":[],"AstNode":[]},"CssNode":{"AstNode":[]},"CssParentNode":{"CssNode":[],"AstNode":[]},"CssStylesheet":{"CssParentNode":[],"CssNode":[],"AstNode":[]},"CssValue":{"AstNode":[]},"_FakeAstNode":{"AstNode":[]},"Argument":{"AstNode":[]},"ArgumentDeclaration":{"AstNode":[]},"ArgumentInvocation":{"AstNode":[]},"ConfiguredVariable":{"AstNode":[]},"Expression":{"AstNode":[]},"BinaryOperationExpression":{"Expression":[],"AstNode":[]},"BooleanExpression":{"Expression":[],"AstNode":[]},"ColorExpression":{"Expression":[],"AstNode":[]},"FunctionExpression":{"Expression":[],"AstNode":[]},"IfExpression":{"Expression":[],"AstNode":[]},"InterpolatedFunctionExpression":{"Expression":[],"AstNode":[]},"ListExpression":{"Expression":[],"AstNode":[]},"MapExpression":{"Expression":[],"AstNode":[]},"NullExpression":{"Expression":[],"AstNode":[]},"NumberExpression":{"Expression":[],"AstNode":[]},"ParenthesizedExpression":{"Expression":[],"AstNode":[]},"SelectorExpression":{"Expression":[],"AstNode":[]},"StringExpression":{"Expression":[],"AstNode":[]},"SupportsExpression":{"Expression":[],"AstNode":[]},"UnaryOperationExpression":{"Expression":[],"AstNode":[]},"ValueExpression":{"Expression":[],"AstNode":[]},"VariableExpression":{"Expression":[],"AstNode":[]},"DynamicImport":{"Import":[],"AstNode":[]},"StaticImport":{"Import":[],"AstNode":[]},"Interpolation":{"AstNode":[]},"AtRootRule":{"Statement":[],"AstNode":[]},"AtRule":{"Statement":[],"AstNode":[]},"CallableDeclaration":{"Statement":[],"AstNode":[]},"ContentBlock":{"Statement":[],"AstNode":[]},"ContentRule":{"Statement":[],"AstNode":[]},"DebugRule":{"Statement":[],"AstNode":[]},"Declaration":{"Statement":[],"AstNode":[]},"EachRule":{"Statement":[],"AstNode":[]},"ErrorRule":{"Statement":[],"AstNode":[]},"ExtendRule":{"Statement":[],"AstNode":[]},"ForRule":{"Statement":[],"AstNode":[]},"ForwardRule":{"Statement":[],"AstNode":[]},"FunctionRule":{"Statement":[],"AstNode":[]},"IfClause":{"IfRuleClause":[]},"ElseClause":{"IfRuleClause":[]},"IfRule":{"Statement":[],"AstNode":[]},"ImportRule":{"Statement":[],"AstNode":[]},"IncludeRule":{"Statement":[],"AstNode":[]},"LoudComment":{"Statement":[],"AstNode":[]},"MediaRule":{"Statement":[],"AstNode":[]},"MixinRule":{"Statement":[],"AstNode":[]},"_HasContentVisitor":{"StatementSearchVisitor":["bool"],"StatementSearchVisitor.T":"bool"},"ParentStatement":{"Statement":[],"AstNode":[]},"ReturnRule":{"Statement":[],"AstNode":[]},"SilentComment":{"Statement":[],"AstNode":[]},"StyleRule":{"Statement":[],"AstNode":[]},"Stylesheet":{"Statement":[],"AstNode":[]},"SupportsRule":{"Statement":[],"AstNode":[]},"UseRule":{"Statement":[],"AstNode":[]},"VariableDeclaration":{"Statement":[],"AstNode":[]},"WarnRule":{"Statement":[],"AstNode":[]},"WhileRule":{"Statement":[],"AstNode":[]},"SupportsAnything":{"AstNode":[]},"SupportsDeclaration":{"AstNode":[]},"SupportsFunction":{"AstNode":[]},"SupportsInterpolation":{"AstNode":[]},"SupportsNegation":{"AstNode":[]},"SupportsOperation":{"AstNode":[]},"Selector":{"AstNode":[]},"AttributeSelector":{"SimpleSelector":[],"AstNode":[]},"ClassSelector":{"SimpleSelector":[],"AstNode":[]},"ComplexSelector":{"AstNode":[]},"CompoundSelector":{"AstNode":[]},"IDSelector":{"SimpleSelector":[],"AstNode":[]},"SelectorList":{"AstNode":[]},"_ParentSelectorVisitor":{"SelectorSearchVisitor":["ParentSelector"],"SelectorSearchVisitor.T":"ParentSelector"},"ParentSelector":{"SimpleSelector":[],"AstNode":[]},"PlaceholderSelector":{"SimpleSelector":[],"AstNode":[]},"PseudoSelector":{"SimpleSelector":[],"AstNode":[]},"SimpleSelector":{"AstNode":[]},"TypeSelector":{"SimpleSelector":[],"AstNode":[]},"UniversalSelector":{"SimpleSelector":[],"AstNode":[]},"_EnvironmentModule0":{"Module0":["AsyncCallable"]},"AsyncBuiltInCallable":{"AsyncCallable":[]},"BuiltInCallable":{"Callable0":[],"AsyncBuiltInCallable":[],"AsyncCallable":[]},"PlainCssCallable":{"Callable0":[],"AsyncCallable":[]},"UserDefinedCallable":{"Callable0":[],"AsyncCallable":[]},"ExplicitConfiguration":{"Configuration":[]},"_EnvironmentModule":{"Module0":["Callable0"]},"SassRuntimeException":{"Exception":[]},"SassException":{"Exception":[]},"MultiSpanSassException":{"Exception":[]},"MultiSpanSassRuntimeException":{"SassRuntimeException":[],"Exception":[]},"SassFormatException":{"SourceSpanFormatException":[],"FormatException":[],"Exception":[]},"MultiSpanSassFormatException":{"MultiSourceSpanFormatException":[],"SassFormatException":[],"SourceSpanFormatException":[],"FormatException":[],"Exception":[]},"UsageException":{"Exception":[]},"EmptyExtensionStore":{"ExtensionStore":[]},"MergedExtension":{"Extension":[]},"Importer":{"AsyncImporter":[]},"FilesystemImporter":{"Importer":[],"AsyncImporter":[]},"BuiltInModule":{"Module0":["1"]},"ForwardedModuleView":{"Module0":["1"]},"ShadowedModuleView":{"Module0":["1"]},"LazyFileSpan":{"FileSpan":[],"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"LimitedMapView":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"MergedMapView":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"MultiSpan":{"FileSpan":[],"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"PrefixedMapView":{"MapBase":["String","1"],"Map":["String","1"],"MapBase.V":"1","MapBase.K":"String"},"_PrefixedKeys":{"Iterable":["String"],"Iterable.E":"String"},"PublicMemberMapView":{"MapBase":["String","1"],"Map":["String","1"],"MapBase.V":"1","MapBase.K":"String"},"UnprefixedMapView":{"MapBase":["String","1"],"Map":["String","1"],"MapBase.V":"1","MapBase.K":"String"},"_UnprefixedKeys":{"Iterable":["String"],"Iterable.E":"String"},"SassArgumentList":{"SassList":[],"Value":[]},"SassBoolean":{"Value":[]},"SassCalculation":{"Value":[]},"SassColor":{"Value":[]},"SassFunction":{"Value":[]},"SassList":{"Value":[]},"SassMap":{"Value":[]},"SassMixin":{"Value":[]},"_SassNull":{"Value":[]},"SassNumber":{"Value":[]},"ComplexSassNumber":{"SassNumber":[],"Value":[]},"SingleUnitSassNumber":{"SassNumber":[],"Value":[]},"UnitlessSassNumber":{"SassNumber":[],"Value":[]},"SassString":{"Value":[]},"_EvaluationContext0":{"EvaluationContext":[]},"_EvaluationContext":{"EvaluationContext":[]},"Entry":{"Comparable":["Entry"]},"FileLocation":{"SourceLocation":[],"Comparable":["SourceLocation"]},"FileSpan":{"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"_FileSpan":{"FileSpan":[],"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceLocation":{"Comparable":["SourceLocation"]},"SourceLocationMixin":{"SourceLocation":[],"Comparable":["SourceLocation"]},"SourceSpan":{"Comparable":["SourceSpan"]},"SourceSpanBase":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanException":{"Exception":[]},"SourceSpanFormatException":{"FormatException":[],"Exception":[]},"MultiSourceSpanException":{"Exception":[]},"MultiSourceSpanFormatException":{"FormatException":[],"Exception":[]},"SourceSpanMixin":{"SourceSpan":[],"Comparable":["SourceSpan"]},"SourceSpanWithContext":{"SourceSpan":[],"Comparable":["SourceSpan"]},"Chain":{"StackTrace":[]},"LazyTrace":{"Trace":[],"StackTrace":[]},"Trace":{"StackTrace":[]},"UnparsedFrame":{"Frame":[]},"StringScannerException":{"SourceSpanFormatException":[],"FormatException":[],"Exception":[]},"SupportsAnything0":{"AstNode0":[]},"Argument0":{"AstNode0":[]},"ArgumentDeclaration0":{"AstNode0":[]},"ArgumentInvocation0":{"AstNode0":[]},"SassArgumentList0":{"SassList0":[],"Value0":[]},"JSToDartAsyncImporter":{"AsyncImporter0":[]},"AsyncBuiltInCallable0":{"AsyncCallable0":[]},"_EnvironmentModule2":{"Module1":["AsyncCallable0"]},"_EvaluationContext2":{"EvaluationContext0":[]},"JSToDartAsyncFileImporter":{"AsyncImporter0":[]},"AtRootRule0":{"Statement0":[],"AstNode0":[]},"ModifiableCssAtRule0":{"ModifiableCssParentNode0":[],"ModifiableCssNode0":[],"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"AtRule0":{"Statement0":[],"AstNode0":[]},"AttributeSelector0":{"SimpleSelector0":[],"AstNode0":[]},"BinaryOperationExpression0":{"Expression0":[],"AstNode0":[]},"BooleanExpression0":{"Expression0":[],"AstNode0":[]},"SassBoolean0":{"Value0":[]},"BuiltInCallable0":{"Callable":[],"AsyncBuiltInCallable0":[],"AsyncCallable0":[]},"BuiltInModule0":{"Module1":["1"]},"SassCalculation0":{"Value0":[]},"CallableDeclaration0":{"Statement0":[],"AstNode0":[]},"ClassSelector0":{"SimpleSelector0":[],"AstNode0":[]},"ColorExpression0":{"Expression0":[],"AstNode0":[]},"SassColor0":{"Value0":[]},"ModifiableCssComment0":{"ModifiableCssNode0":[],"CssComment0":[],"CssNode0":[],"AstNode0":[]},"ComplexSassNumber0":{"SassNumber0":[],"Value0":[]},"ComplexSelector0":{"AstNode0":[]},"CompoundSelector0":{"AstNode0":[]},"ExplicitConfiguration0":{"Configuration0":[]},"ConfiguredVariable0":{"AstNode0":[]},"ContentBlock0":{"Statement0":[],"AstNode0":[]},"ContentRule0":{"Statement0":[],"AstNode0":[]},"DebugRule0":{"Statement0":[],"AstNode0":[]},"ModifiableCssDeclaration0":{"ModifiableCssNode0":[],"CssNode0":[],"AstNode0":[]},"Declaration0":{"Statement0":[],"AstNode0":[]},"SupportsDeclaration0":{"AstNode0":[]},"DynamicImport0":{"Import0":[],"AstNode0":[]},"EachRule0":{"Statement0":[],"AstNode0":[]},"EmptyExtensionStore0":{"ExtensionStore0":[]},"_EnvironmentModule1":{"Module1":["Callable"]},"ErrorRule0":{"Statement0":[],"AstNode0":[]},"_EvaluationContext1":{"EvaluationContext0":[]},"SassRuntimeException0":{"Exception":[]},"SassException0":{"Exception":[]},"MultiSpanSassException0":{"Exception":[]},"MultiSpanSassRuntimeException0":{"SassRuntimeException0":[],"Exception":[]},"SassFormatException0":{"SourceSpanFormatException":[],"FormatException":[],"Exception":[]},"MultiSpanSassFormatException0":{"MultiSourceSpanFormatException":[],"SassFormatException0":[],"SourceSpanFormatException":[],"FormatException":[],"Exception":[]},"Expression0":{"AstNode0":[]},"ExtendRule0":{"Statement0":[],"AstNode0":[]},"JSToDartFileImporter":{"Importer0":[],"AsyncImporter0":[]},"FilesystemImporter0":{"Importer0":[],"AsyncImporter0":[]},"ForRule0":{"Statement0":[],"AstNode0":[]},"ForwardRule0":{"Statement0":[],"AstNode0":[]},"ForwardedModuleView0":{"Module1":["1"]},"FunctionExpression0":{"Expression0":[],"AstNode0":[]},"SupportsFunction0":{"AstNode0":[]},"SassFunction0":{"Value0":[]},"FunctionRule0":{"Statement0":[],"AstNode0":[]},"IDSelector0":{"SimpleSelector0":[],"AstNode0":[]},"IfExpression0":{"Expression0":[],"AstNode0":[]},"IfClause0":{"IfRuleClause0":[]},"ElseClause0":{"IfRuleClause0":[]},"IfRule0":{"Statement0":[],"AstNode0":[]},"ModifiableCssImport0":{"ModifiableCssNode0":[],"CssNode0":[],"AstNode0":[]},"ImportRule0":{"Statement0":[],"AstNode0":[]},"Importer0":{"AsyncImporter0":[]},"IncludeRule0":{"Statement0":[],"AstNode0":[]},"InterpolatedFunctionExpression0":{"Expression0":[],"AstNode0":[]},"Interpolation0":{"AstNode0":[]},"SupportsInterpolation0":{"AstNode0":[]},"ModifiableCssKeyframeBlock0":{"ModifiableCssParentNode0":[],"ModifiableCssNode0":[],"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"LazyFileSpan0":{"FileSpan":[],"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"LimitedMapView0":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"ListExpression0":{"Expression0":[],"AstNode0":[]},"SelectorList0":{"AstNode0":[]},"_ParentSelectorVisitor0":{"SelectorSearchVisitor0":["ParentSelector0"],"SelectorSearchVisitor0.T":"ParentSelector0"},"SassList0":{"Value0":[]},"LoudComment0":{"Statement0":[],"AstNode0":[]},"MapExpression0":{"Expression0":[],"AstNode0":[]},"SassMap0":{"Value0":[]},"ModifiableCssMediaRule0":{"ModifiableCssParentNode0":[],"ModifiableCssNode0":[],"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"MediaRule0":{"Statement0":[],"AstNode0":[]},"MergedExtension0":{"Extension0":[]},"MergedMapView0":{"MapBase":["1","2"],"Map":["1","2"],"MapBase.V":"2","MapBase.K":"1"},"SassMixin0":{"Value0":[]},"MixinRule0":{"Statement0":[],"AstNode0":[]},"_HasContentVisitor0":{"StatementSearchVisitor0":["bool"],"StatementSearchVisitor0.T":"bool"},"MultiSpan0":{"FileSpan":[],"SourceSpanWithContext":[],"SourceSpan":[],"Comparable":["SourceSpan"]},"SupportsNegation0":{"AstNode0":[]},"NoOpImporter0":{"Importer0":[],"AsyncImporter0":[]},"_FakeAstNode0":{"AstNode0":[]},"CssNode0":{"AstNode0":[]},"CssParentNode0":{"CssNode0":[],"AstNode0":[]},"ModifiableCssNode0":{"CssNode0":[],"AstNode0":[]},"ModifiableCssParentNode0":{"ModifiableCssNode0":[],"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"NullExpression0":{"Expression0":[],"AstNode0":[]},"_SassNull0":{"Value0":[]},"NumberExpression0":{"Expression0":[],"AstNode0":[]},"SassNumber0":{"Value0":[]},"SupportsOperation0":{"AstNode0":[]},"ParentSelector0":{"SimpleSelector0":[],"AstNode0":[]},"ParentStatement0":{"Statement0":[],"AstNode0":[]},"ParenthesizedExpression0":{"Expression0":[],"AstNode0":[]},"PlaceholderSelector0":{"SimpleSelector0":[],"AstNode0":[]},"PlainCssCallable0":{"Callable":[],"AsyncCallable0":[]},"PrefixedMapView0":{"MapBase":["String","1"],"Map":["String","1"],"MapBase.V":"1","MapBase.K":"String"},"_PrefixedKeys0":{"Iterable":["String"],"Iterable.E":"String"},"PseudoSelector0":{"SimpleSelector0":[],"AstNode0":[]},"PublicMemberMapView0":{"MapBase":["String","1"],"Map":["String","1"],"MapBase.V":"1","MapBase.K":"String"},"ReturnRule0":{"Statement0":[],"AstNode0":[]},"Selector0":{"AstNode0":[]},"SelectorExpression0":{"Expression0":[],"AstNode0":[]},"ShadowedModuleView0":{"Module1":["1"]},"SilentComment0":{"Statement0":[],"AstNode0":[]},"SimpleSelector0":{"AstNode0":[]},"SingleUnitSassNumber0":{"SassNumber0":[],"Value0":[]},"StaticImport0":{"Import0":[],"AstNode0":[]},"StringExpression0":{"Expression0":[],"AstNode0":[]},"SassString0":{"Value0":[]},"ModifiableCssStyleRule0":{"ModifiableCssParentNode0":[],"ModifiableCssNode0":[],"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"StyleRule0":{"Statement0":[],"AstNode0":[]},"CssStylesheet0":{"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"ModifiableCssStylesheet0":{"ModifiableCssParentNode0":[],"CssStylesheet0":[],"ModifiableCssNode0":[],"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"Stylesheet0":{"Statement0":[],"AstNode0":[]},"SupportsExpression0":{"Expression0":[],"AstNode0":[]},"ModifiableCssSupportsRule0":{"ModifiableCssParentNode0":[],"ModifiableCssNode0":[],"CssParentNode0":[],"CssNode0":[],"AstNode0":[]},"SupportsRule0":{"Statement0":[],"AstNode0":[]},"JSToDartImporter":{"Importer0":[],"AsyncImporter0":[]},"TypeSelector0":{"SimpleSelector0":[],"AstNode0":[]},"UnaryOperationExpression0":{"Expression0":[],"AstNode0":[]},"UnitlessSassNumber0":{"SassNumber0":[],"Value0":[]},"UniversalSelector0":{"SimpleSelector0":[],"AstNode0":[]},"UnprefixedMapView0":{"MapBase":["String","1"],"Map":["String","1"],"MapBase.V":"1","MapBase.K":"String"},"_UnprefixedKeys0":{"Iterable":["String"],"Iterable.E":"String"},"UseRule0":{"Statement0":[],"AstNode0":[]},"UserDefinedCallable0":{"Callable":[],"AsyncCallable0":[]},"CssValue0":{"AstNode0":[]},"ValueExpression0":{"Expression0":[],"AstNode0":[]},"VariableExpression0":{"Expression0":[],"AstNode0":[]},"VariableDeclaration0":{"Statement0":[],"AstNode0":[]},"WarnRule0":{"Statement0":[],"AstNode0":[]},"WhileRule0":{"Statement0":[],"AstNode0":[]},"Int8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint8ClampedList":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint16List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Int32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Uint32List":{"List":["int"],"EfficientLengthIterable":["int"],"Iterable":["int"]},"Float32List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"Float64List":{"List":["double"],"EfficientLengthIterable":["double"],"Iterable":["double"]},"CssComment":{"CssNode":[],"AstNode":[]},"Import":{"AstNode":[]},"Statement":{"AstNode":[]},"Callable0":{"AsyncCallable":[]},"Callable":{"AsyncCallable0":[]},"CssComment0":{"CssNode0":[],"AstNode0":[]},"Import0":{"AstNode0":[]},"Statement0":{"AstNode0":[]}}'));
  A._Universe_addErasedTypes(init.typeUniverse, JSON.parse('{"ArrayIterator":1,"ListIterator":1,"MappedIterator":2,"WhereIterator":1,"ExpandIterator":2,"TakeIterator":1,"SkipIterator":1,"SkipWhileIterator":1,"EmptyIterator":1,"FollowedByIterator":1,"FixedLengthListMixin":1,"UnmodifiableListMixin":1,"UnmodifiableListBase":1,"__CastListBase__CastIterableBase_ListMixin":2,"_KeysOrValuesOrElementsIterator":1,"ConstantSet":1,"LinkedHashMapKeyIterator":1,"NativeTypedArray":1,"EventSink":1,"_SyncStarIterator":1,"_SyncStreamControllerDispatch":1,"_AsyncStreamControllerDispatch":1,"_AddStreamState":1,"_StreamControllerAddStreamState":1,"_DelayedEvent":1,"_DelayedData":1,"_PendingEvents":1,"_StreamIterator":1,"_ZoneFunction":1,"Queue":1,"_HashMapKeyIterator":1,"_LinkedHashSetIterator":1,"UnmodifiableMapBase":2,"_MapBaseValueIterator":2,"_UnmodifiableMapMixin":2,"MapView":2,"_ListQueueIterator":1,"_UnmodifiableSetMixin":1,"_UnmodifiableMapView_MapView__UnmodifiableMapMixin":2,"_UnmodifiableSetView_SetBase__UnmodifiableSetMixin":1,"_StringSinkConversionSink":1,"Expando":1,"_EventRequest":1,"_EmptyUnmodifiableSet_IterableBase_UnmodifiableSetMixin":1,"DefaultEquality":1,"IterableEquality":1,"ListEquality":1,"MapEquality":2,"_QueueList_Object_ListMixin":1,"_UnionSet_SetBase_UnmodifiableSetMixin":1,"UnmodifiableSetMixin":1,"_UnmodifiableSetView_DelegatingSet_UnmodifiableSetMixin":1,"_DelegatingIterableBase":1,"_MapKeySet__DelegatingIterableBase_UnmodifiableSetMixin":1,"ParentStatement":1,"ParentStatement0":1}'));
  var string$ = {
    x0a_BUG_: "\n\nBUG: This should include a source span!",
    x0a_Morex20: "\n\nMore info and automated migrator: https://sass-lang.com/d/slash-div",
    x0a_Morex3a: "\n\nMore info: https://sass-lang.com/d/function-units",
    x0a_See_: "\n\nSee https://sass-lang.com/d/function-units",
    x0a_This: "\n\nThis is only an error because you've set the ",
    x0a_To_p: "\n\nTo preserve current behavior: math.random(math.div($limit, 1",
    x0a_but_: "\n\nbut you may have intended it to mean:\n\n    ",
    x0aRun_i: "\nRun in verbose mode to see all warnings.",
    x0aThis_: "\nThis will be an error in Dart Sass 2.0.0.\n\nMore info: https://sass-lang.com/d/bogus-combinators",
    x0aYou_m: "\nYou may not @extend the same selector from within different media queries.",
    x20It_wi: " It will be omitted from the generated CSS.",
    x20be_an: " be an extender.\nThis will be an error in Dart Sass 2.0.0.\n\nMore info: https://sass-lang.com/d/bogus-combinators",
    x20depre: " deprecation to be fatal.\nRemove this setting if you need to keep using this feature.",
    x20in_in: " in interpolation here.\nIt may end up represented as ",
    x20is_as: " is asynchronous.\nThis is probably caused by a bug in a Sass plugin.",
    x20is_av: " is available from multiple global modules.",
    x20is_de: " is deprecated.\n\nTo preserve current behavior: ",
    x20is_noa: " is not a valid selector: it must be a string,\na list of strings, or a list of lists of strings.",
    x20is_nov: " is not valid CSS.\nThis will be an error in Dart Sass 2.0.0.\n\nMore info: https://sass-lang.com/d/bogus-combinators",
    x20must_b: " must be either nearest, up, down or to-zero.",
    x20must_n: " must not be greater than the number of characters in the file, ",
    x20repet: " repetitive deprecation warnings omitted.",
    x20targe: " targetLocations if the interpolation has ",
    x20to_cl: " to clarify that it's meant to be a binary operation, or wrap\nit in parentheses to make it a unary operation. This will be an error in future\nversions of Sass.\n\nMore info and automated migrator: https://sass-lang.com/d/strict-unary",
    x20to_co: " to color.opacity() is deprecated.\n\nRecommendation: ",
    x20was_a: ' was already loaded, so it can\'t be configured using "with".',
    x20was_n: " was not declared with !default in the @used module.",
    x20was_p: " was passed both by position and by name.",
    x21defau: "!default should only be written once for each variable.\nThis will be an error in Dart Sass 2.0.0.",
    x21globai: "!global isn't allowed for variables in other modules.",
    x21globas: "!global should only be written once for each variable.\nThis will be an error in Dart Sass 2.0.0.",
    x22x20can_: "\" can't be used as a parent in a compound selector.",
    x22x20is_ix0a: '" is invalid CSS.\nThis will be an error in Dart Sass 2.0.0.\n\nMore info: https://sass-lang.com/d/bogus-combinators',
    x22x20is_ix20: '" is invalid CSS. It will be omitted from the generated CSS.\nThis will be an error in Dart Sass 2.0.0.\n\nMore info: https://sass-lang.com/d/bogus-combinators',
    x22x20is_n: '" is not a valid Sass identifier.\n\nRecommendation: add an "as" clause to define an explicit namespace.',
    x22x20is_o: "\" is only valid for nesting and shouldn't\nhave children other than style rules.",
    x22x26__ma: '"&" may only used at the beginning of a compound selector.',
    x22x29__If: "\").\nIf you really want to use the color value here, use '",
    x22x2b__an: '"+" and "-" must be surrounded by whitespace in calculations.',
    x22packa: '"package:" URLs aren\'t supported on this platform.',
    x24css_a: "$css and $module may not both be passed at once.",
    x24list1: "$list1, $list2, $separator: auto, $bracketed: auto",
    x24selec: "$selectors: At least one selector must be passed.",
    x24separ: '$separator: Must be "space", "comma", "slash", or "auto".',
    x28__isn: "() isn't in the sass:color module.\n\nRecommendation: color.adjust(",
    x29x0a_Mor: ")\n\nMore info: https://sass-lang.com/documentation/functions/color#",
    x29x20in_a: ") in a future release.\n\nRecommendation: math.random(math.div($limit, 1",
    x29x20is_d: ") is deprecated.\n\nTo preserve current behavior: ",
    x29x20to_cg: ") to color.grayscale() is deprecated.\n\nRecommendation: ",
    x29x20to_ci: ") to color.invert() is deprecated.\n\nRecommendation: ",
    x29x29__Mo: "))\n\nMore info: https://sass-lang.com/d/function-units",
    x2c_whicu: ", which uses a scheme declared as non-canonical.",
    x2c_whicw: ', which will likely produce invalid CSS.\nAlways quote color names when using them as strings or map keys (for example, "',
    x2e_Rela: ".\nRelative canonical URLs are deprecated and will eventually be disallowed.",
    x3d_____: "===== asynchronous gap ===========================\n",
    x40_moz_: "@-moz-document is deprecated and support will be removed in Dart Sass 2.0.0.\n\nFor details, see https://sass-lang.com/d/moz-document.",
    x40conte: "@content is only allowed within mixin declarations.",
    x40elsei: "@elseif is deprecated and will not be supported in future Sass versions.\n\nRecommendation: @else if",
    x40exten: "@extend may only be used within style rules.",
    x40forwa: "@forward rules must be written before any other rules.",
    x40funct: "@function if($condition, $if-true, $if-false) {",
    x40use_r: "@use rules must be written before any other rules.",
    A_list: "A list with more than one element must have an explicit separator.",
    ABCDEF: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
    An_impa: "An importer may not have a findFileUrl method as well as canonicalize and load methods.",
    An_impu: "An importer must have either canonicalize and load methods, or a findFileUrl method.",
    As_of_R: "As of Dart Sass 2.0.0, !global assignments won't be able to declare new variables.\n\nRecommendation: add `",
    As_of_S: "As of Dart Sass 2.0.0, !global assignments won't be able to declare new variables.\n\nSince this assignment is at the root of the stylesheet, the !global flag is\nunnecessary and can safely be removed.",
    At_rul: "At-rules may not be used within nested declarations.",
    Cannotff: "Cannot extract a file path from a URI with a fragment component",
    Cannotfq: "Cannot extract a file path from a URI with a query component",
    Cannotn: "Cannot extract a non-Windows file path from a file URI with an authority",
    Comple: "ComplexSassNumber.hasPossiblyCompatibleUnits is not implemented.",
    Could_: 'Could not find an option with short name "-',
    CssNod: "CssNodes must have a CssStylesheet transitive parent node.",
    Custom: "Custom importers are required to load stylesheets when compiling in the browser.",
    Declarm: "Declarations may only be used within style rules.",
    Declarw: 'Declarations whose names begin with "--" may not be nested.',
    Either: "Either options.data or options.file must be set.",
    Entrie: "Entries may not be removed from MergedMapView.",
    Error_: "Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type",
    Evalua: "Evaluation handles @include and its content block together.",
    Expect: "Expected variable, mixin, or function name",
    Functi: "Functions may not be declared in control directives.",
    HSL_pa: "HSL parameters may not be passed along with HWB parameters.",
    If_con: "If conditions is longer than one element, conjunction may not be null.",
    If_par: "If parsedAsCustomProperty is true, value must contain a SassString (was `",
    If_str: "If strategy is not null, step is required.",
    In_Sas: 'In Sass, "&&" means two copies of the parent selector. You probably want to use "and" instead.',
    Indent: "Indenting at the beginning of the document is illegal.",
    Interpn: "Interpolation isn't allowed in namespaces.",
    Interpp: "Interpolation isn't allowed in plain CSS.",
    Invali: 'Invalid return value for custom function "',
    It_s_n: "It's not clear which file to import. Found:\n",
    Keywor: "Keyword arguments can't be used with calculations.",
    Local_: "Local '' has been assigned during initialization.",
    May_on: "May only contains Strings or Expressions.",
    Media_: "Media rules may not be used within nested declarations.",
    Mixinsb: "Mixins may not be declared in control directives.",
    Mixinscf: "Mixins may not contain function declarations.",
    Mixinscm: "Mixins may not contain mixin declarations.",
    Modulel: "Module loop: this module is already being loaded.",
    Modulen: "Module namespaces aren't allowed in plain CSS.",
    Nested: "Nested declarations aren't allowed in plain CSS.",
    New_en: "New entries may not be added to MergedMapView.",
    No_Sasc: "No Sass callable is currently being evaluated.",
    No_Sass: "No Sass stylesheet is currently being evaluated.",
    NoSour: "NoSourceMapBuffer.buildSourceMap() is not supported.",
    Number: "Number to round and step arguments are required.",
    Only_2: "Only 2 slash-separated elements allowed, but ",
    Only_oa: "Only one argument may be passed to the plain-CSS invert() function.",
    Only_op: "Only one positional argument is allowed. All other arguments must be passed by name.",
    Other_: "Other modules' members can't be defined with !global.",
    Passina: "Passing a string to call() is deprecated and will be illegal in Dart Sass 2.0.0.\n\nRecommendation: call(get-function(",
    Passinp: "Passing percentage units to the global abs() function is deprecated.\nIn the future, this will emit a CSS abs() function to be resolved by the browser.\nTo preserve current behavior: math.abs(",
    Placeh: "Placeholder selectors aren't allowed here.",
    Plain_: "Plain CSS functions don't support keyword arguments.",
    Positi: "Positional arguments must come before keyword arguments.",
    Privat: "Private members can't be accessed from outside their modules.",
    RGB_pa: "RGB parameters may not be passed along with ",
    Rest_a: "Rest arguments can't be used with calculations.",
    Sass__: "Sass @import rules will be deprecated in the future.\nRemove the --future-deprecation=import flag to silence this warning for now.",
    Sass_v: "Sass variables aren't allowed in plain CSS.",
    Silent: "Silent comments aren't allowed in plain CSS.",
    Style_: "Style rules may not be used within nested declarations.",
    Suppor: "Supports rules may not be used within nested declarations.",
    The_Ex: "The ExtensionStore and CssStylesheet passed to cloneCssStylesheet() must come from the same compilation.",
    The_ca: "The canonicalize() method must return a URL.",
    The_fie: "The findFileUrl() method must return a URL.",
    The_fiu: 'The findFileUrl() must return a URL with scheme file://, was "',
    The_gi: "The given LineScannerState was not returned by this LineScanner.",
    The_lo: "The load() function must return an object with contents and syntax fields.",
    The_pa: "The parent selector isn't allowed in plain CSS.",
    The_sa: "The same variable may only be configured once.",
    The_ta: 'The target selector was not found.\nUse "@extend ',
    There_: "There's already a module with namespace \"",
    This_d: 'This declaration has no argument named "$',
    This_e: "This expression can't be used in a calculation.",
    This_f: "This function isn't allowed in plain CSS.",
    This_ma: 'This module and the new module both define a variable named "$',
    This_mw: 'This module was already loaded, so it can\'t be configured using "with".',
    This_o: "This operation can't be used in a calculation.",
    This_s: "This selector doesn't have any properties and won't be rendered.",
    This_v: "This variable was not declared with !default in the @used module.",
    Top_le: 'Top-level selectors may not contain the parent selector "&".',
    Using__i: "Using / for division is deprecated and will be removed in Dart Sass 2.0.0.\n\nRecommendation: ",
    Using__o: "Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.\n\nRecommendation: ",
    Using_c: "Using color.alpha() for a Microsoft filter is deprecated.\n\nRecommendation: ",
    Variab_: "Variable keyword argument map must have string keys.\n",
    Variabs: "Variable keyword arguments must be a map (was ",
    You_ma: "You may not @extend selectors across media queries.",
    You_pr: "You probably don't mean to use the color value ",
    x60_inst: "` instead.\nSee https://sass-lang.com/d/extend-compound for details.\n",
    addExt: "addExtensions() can't be called for a const ExtensionStore.",
    compou: "compound selectors may no longer be extended.\nConsider `@extend ",
    conten: "content-exists() may only be called within a mixin.",
    fileEx: "fileExists() is only supported on Node.js",
    leadin: "leadingCombinators and components may not both be empty.",
    math_d: "math.div() will only support number arguments in a future release.\nUse list.slash() instead for a slash separator.",
    math_r: "math.random() will no longer ignore $limit units (",
    must_b: "must be a UniversalSelector or a TypeSelector",
    parsed: 'parsedAsCustomProperty must be false if name doesn\'t begin with "--".',
    semico: "semicolons aren't allowed in the indented syntax.",
    throug: "through() must return false for at least one parent of ",
    x7d__Mor: "})\nMore info: https://sass-lang.com/d/abs-percent"
  };
  var type$ = (function rtii() {
    var findType = A.findType;
    return {
      $env_1_1_String: findType("@<String>"),
      ArgParser: findType("ArgParser"),
      Argument: findType("Argument"),
      ArgumentDeclaration: findType("ArgumentDeclaration"),
      ArgumentDeclaration_2: findType("ArgumentDeclaration0"),
      Argument_2: findType("Argument0"),
      AstNode: findType("AstNode"),
      AstNode_2: findType("AstNode0"),
      AsyncBuiltInCallable: findType("AsyncBuiltInCallable"),
      AsyncBuiltInCallable_2: findType("AsyncBuiltInCallable0"),
      AsyncCallable: findType("AsyncCallable"),
      AsyncCallable_2: findType("AsyncCallable0"),
      AsyncImporter: findType("AsyncImporter0"),
      Box_SelectorList: findType("Box<SelectorList>"),
      Box_SelectorList_2: findType("Box0<SelectorList0>"),
      BuiltInCallable: findType("BuiltInCallable"),
      BuiltInCallable_2: findType("BuiltInCallable0"),
      BuiltInModule_AsyncCallable: findType("BuiltInModule<AsyncCallable>"),
      BuiltInModule_AsyncCallable_2: findType("BuiltInModule0<AsyncCallable0>"),
      BuiltInModule_Callable: findType("BuiltInModule<Callable0>"),
      BuiltInModule_Callable_2: findType("BuiltInModule0<Callable>"),
      ByteBuffer: findType("ByteBuffer"),
      ByteData: findType("ByteData"),
      Callable: findType("Callable0"),
      Callable_2: findType("Callable"),
      ChangeType: findType("ChangeType"),
      Comparable_dynamic: findType("Comparable<@>"),
      Comparable_nullable_Object: findType("Comparable<Object?>"),
      CompileResult: findType("CompileResult"),
      CompileResult_2: findType("CompileResult0"),
      ComplexSelector: findType("ComplexSelector"),
      ComplexSelectorComponent: findType("ComplexSelectorComponent"),
      ComplexSelectorComponent_2: findType("ComplexSelectorComponent0"),
      ComplexSelector_2: findType("ComplexSelector0"),
      Configuration: findType("Configuration"),
      Configuration_2: findType("Configuration0"),
      ConfiguredValue: findType("ConfiguredValue"),
      ConfiguredValue_2: findType("ConfiguredValue0"),
      ConfiguredVariable: findType("ConfiguredVariable"),
      ConfiguredVariable_2: findType("ConfiguredVariable0"),
      ConstantMapView_Symbol_dynamic: findType("ConstantMapView<Symbol0,@>"),
      ConstantStringMap_String_double: findType("ConstantStringMap<String,double>"),
      ConstantStringSet_String: findType("ConstantStringSet<String>"),
      CssComment: findType("CssComment"),
      CssComment_2: findType("CssComment0"),
      CssMediaQuery: findType("CssMediaQuery"),
      CssMediaQuery_2: findType("CssMediaQuery0"),
      CssParentNode: findType("CssParentNode"),
      CssParentNode_2: findType("CssParentNode0"),
      CssStylesheet: findType("CssStylesheet"),
      CssStylesheet_2: findType("CssStylesheet0"),
      CssValue_Combinator: findType("CssValue<Combinator>"),
      CssValue_Combinator_2: findType("CssValue0<Combinator0>"),
      CssValue_List_String: findType("CssValue<List<String>>"),
      CssValue_List_String_2: findType("CssValue0<List<String>>"),
      CssValue_String: findType("CssValue<String>"),
      CssValue_String_2: findType("CssValue0<String>"),
      CssValue_Value: findType("CssValue<Value>"),
      CssValue_Value_2: findType("CssValue0<Value0>"),
      DateTime: findType("DateTime"),
      Deprecation: findType("Deprecation"),
      Deprecation_2: findType("Deprecation0"),
      EfficientLengthIterable_dynamic: findType("EfficientLengthIterable<@>"),
      Error: findType("Error"),
      EvaluationContext: findType("EvaluationContext"),
      EvaluationContext_2: findType("EvaluationContext0"),
      Exception: findType("Exception"),
      Expression: findType("Expression"),
      Expression_2: findType("Expression0"),
      Extender: findType("Extender"),
      Extender_2: findType("Extender0"),
      Extension: findType("Extension"),
      Extension_2: findType("Extension0"),
      FileSpan: findType("FileSpan"),
      Float32List: findType("Float32List"),
      Float64List: findType("Float64List"),
      FormatException: findType("FormatException"),
      Frame: findType("Frame"),
      Function: findType("Function"),
      FutureOr_Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet: findType("+loadedUrls,stylesheet(Set<Uri>,CssStylesheet)/"),
      FutureOr_Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet_2: findType("+loadedUrls,stylesheet(Set<Uri>,CssStylesheet0)/"),
      FutureOr_nullable_Uri: findType("Uri?/"),
      Future_void: findType("Future<~>"),
      IfClause: findType("IfClause"),
      IfClause_2: findType("IfClause0"),
      ImmutableList: findType("ImmutableList0"),
      ImmutableList_2: findType("ImmutableList"),
      ImmutableMap: findType("ImmutableMap0"),
      Import: findType("Import"),
      Import_2: findType("Import0"),
      Importer: findType("Importer0"),
      ImporterResult: findType("ImporterResult"),
      ImporterResult_2: findType("ImporterResult0"),
      Int16List: findType("Int16List"),
      Int32List: findType("Int32List"),
      Int8List: findType("Int8List"),
      Interpolation: findType("Interpolation"),
      InterpolationBuffer: findType("InterpolationBuffer"),
      InterpolationBuffer_2: findType("InterpolationBuffer0"),
      Interpolation_2: findType("Interpolation0"),
      Iterable_ComplexSelectorComponent: findType("Iterable<ComplexSelectorComponent>"),
      Iterable_ComplexSelectorComponent_2: findType("Iterable<ComplexSelectorComponent0>"),
      Iterable_dynamic: findType("Iterable<@>"),
      Iterable_nullable_Object: findType("Iterable<Object?>"),
      JSArray_Argument: findType("JSArray<Argument>"),
      JSArray_Argument_2: findType("JSArray<Argument0>"),
      JSArray_AstNode: findType("JSArray<AstNode>"),
      JSArray_AstNode_2: findType("JSArray<AstNode0>"),
      JSArray_AsyncBuiltInCallable: findType("JSArray<AsyncBuiltInCallable>"),
      JSArray_AsyncBuiltInCallable_2: findType("JSArray<AsyncBuiltInCallable0>"),
      JSArray_AsyncCallable: findType("JSArray<AsyncCallable>"),
      JSArray_AsyncCallable_2: findType("JSArray<AsyncCallable0>"),
      JSArray_AsyncImporter: findType("JSArray<AsyncImporter0>"),
      JSArray_AsyncImporter_2: findType("JSArray<AsyncImporter>"),
      JSArray_BinaryOperator: findType("JSArray<BinaryOperator>"),
      JSArray_BinaryOperator_2: findType("JSArray<BinaryOperator0>"),
      JSArray_BuiltInCallable: findType("JSArray<BuiltInCallable>"),
      JSArray_BuiltInCallable_2: findType("JSArray<BuiltInCallable0>"),
      JSArray_Callable: findType("JSArray<Callable0>"),
      JSArray_Callable_2: findType("JSArray<Callable>"),
      JSArray_ComplexSelector: findType("JSArray<ComplexSelector>"),
      JSArray_ComplexSelectorComponent: findType("JSArray<ComplexSelectorComponent>"),
      JSArray_ComplexSelectorComponent_2: findType("JSArray<ComplexSelectorComponent0>"),
      JSArray_ComplexSelector_2: findType("JSArray<ComplexSelector0>"),
      JSArray_ConfiguredVariable: findType("JSArray<ConfiguredVariable>"),
      JSArray_ConfiguredVariable_2: findType("JSArray<ConfiguredVariable0>"),
      JSArray_CssComment: findType("JSArray<CssComment>"),
      JSArray_CssComment_2: findType("JSArray<CssComment0>"),
      JSArray_CssMediaQuery: findType("JSArray<CssMediaQuery>"),
      JSArray_CssMediaQuery_2: findType("JSArray<CssMediaQuery0>"),
      JSArray_CssNode: findType("JSArray<CssNode>"),
      JSArray_CssNode_2: findType("JSArray<CssNode0>"),
      JSArray_CssValue_Combinator: findType("JSArray<CssValue<Combinator>>"),
      JSArray_CssValue_Combinator_2: findType("JSArray<CssValue0<Combinator0>>"),
      JSArray_Entry: findType("JSArray<Entry>"),
      JSArray_Expression: findType("JSArray<Expression>"),
      JSArray_Expression_2: findType("JSArray<Expression0>"),
      JSArray_Extender: findType("JSArray<Extender>"),
      JSArray_Extender_2: findType("JSArray<Extender0>"),
      JSArray_Extension: findType("JSArray<Extension>"),
      JSArray_ExtensionStore: findType("JSArray<ExtensionStore>"),
      JSArray_ExtensionStore_2: findType("JSArray<ExtensionStore0>"),
      JSArray_Extension_2: findType("JSArray<Extension0>"),
      JSArray_ForwardRule: findType("JSArray<ForwardRule>"),
      JSArray_ForwardRule_2: findType("JSArray<ForwardRule0>"),
      JSArray_Frame: findType("JSArray<Frame>"),
      JSArray_Future_nullable_Record_3_int_and_String_and_nullable_String: findType("JSArray<Future<+(int,String,String?)?>>"),
      JSArray_IfClause: findType("JSArray<IfClause>"),
      JSArray_IfClause_2: findType("JSArray<IfClause0>"),
      JSArray_Import: findType("JSArray<Import>"),
      JSArray_Import_2: findType("JSArray<Import0>"),
      JSArray_Importer: findType("JSArray<Importer0>"),
      JSArray_Importer_2: findType("JSArray<Importer>"),
      JSArray_Iterable_ComplexSelectorComponent: findType("JSArray<Iterable<ComplexSelectorComponent>>"),
      JSArray_Iterable_ComplexSelectorComponent_2: findType("JSArray<Iterable<ComplexSelectorComponent0>>"),
      JSArray_JSFunction: findType("JSArray<JSFunction0>"),
      JSArray_List_ComplexSelector: findType("JSArray<List<ComplexSelector>>"),
      JSArray_List_ComplexSelectorComponent: findType("JSArray<List<ComplexSelectorComponent>>"),
      JSArray_List_ComplexSelectorComponent_2: findType("JSArray<List<ComplexSelectorComponent0>>"),
      JSArray_List_ComplexSelector_2: findType("JSArray<List<ComplexSelector0>>"),
      JSArray_List_Extender: findType("JSArray<List<Extender>>"),
      JSArray_List_Extender_2: findType("JSArray<List<Extender0>>"),
      JSArray_List_Iterable_ComplexSelectorComponent: findType("JSArray<List<Iterable<ComplexSelectorComponent>>>"),
      JSArray_List_Iterable_ComplexSelectorComponent_2: findType("JSArray<List<Iterable<ComplexSelectorComponent0>>>"),
      JSArray_Map_String_AstNode: findType("JSArray<Map<String,AstNode>>"),
      JSArray_Map_String_AstNode_2: findType("JSArray<Map<String,AstNode0>>"),
      JSArray_Map_String_AsyncCallable: findType("JSArray<Map<String,AsyncCallable>>"),
      JSArray_Map_String_AsyncCallable_2: findType("JSArray<Map<String,AsyncCallable0>>"),
      JSArray_Map_String_Callable: findType("JSArray<Map<String,Callable0>>"),
      JSArray_Map_String_Callable_2: findType("JSArray<Map<String,Callable>>"),
      JSArray_Map_String_Value: findType("JSArray<Map<String,Value>>"),
      JSArray_Map_String_Value_2: findType("JSArray<Map<String,Value0>>"),
      JSArray_ModifiableCssImport: findType("JSArray<ModifiableCssImport>"),
      JSArray_ModifiableCssImport_2: findType("JSArray<ModifiableCssImport0>"),
      JSArray_ModifiableCssNode: findType("JSArray<ModifiableCssNode>"),
      JSArray_ModifiableCssNode_2: findType("JSArray<ModifiableCssNode0>"),
      JSArray_ModifiableCssParentNode: findType("JSArray<ModifiableCssParentNode>"),
      JSArray_ModifiableCssParentNode_2: findType("JSArray<ModifiableCssParentNode0>"),
      JSArray_Module_AsyncCallable: findType("JSArray<Module0<AsyncCallable>>"),
      JSArray_Module_AsyncCallable_2: findType("JSArray<Module1<AsyncCallable0>>"),
      JSArray_Module_Callable: findType("JSArray<Module0<Callable0>>"),
      JSArray_Module_Callable_2: findType("JSArray<Module1<Callable>>"),
      JSArray_Object: findType("JSArray<Object>"),
      JSArray_PseudoSelector: findType("JSArray<PseudoSelector>"),
      JSArray_PseudoSelector_2: findType("JSArray<PseudoSelector0>"),
      JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value: findType("JSArray<+(ArgumentDeclaration,Value(List<Value>))>"),
      JSArray_Record_2_ArgumentDeclaration_and_Value_Function_List_Value_2: findType("JSArray<+(ArgumentDeclaration0,Value0(List<Value0>))>"),
      JSArray_Record_2_Expression_and_Expression: findType("JSArray<+(Expression,Expression)>"),
      JSArray_Record_2_Expression_and_Expression_2: findType("JSArray<+(Expression0,Expression0)>"),
      JSArray_Record_2_String_and_AstNode: findType("JSArray<+(String,AstNode)>"),
      JSArray_Record_2_String_and_AstNode_2: findType("JSArray<+(String,AstNode0)>"),
      JSArray_SassList: findType("JSArray<SassList>"),
      JSArray_SassList_2: findType("JSArray<SassList0>"),
      JSArray_SimpleSelector: findType("JSArray<SimpleSelector>"),
      JSArray_SimpleSelector_2: findType("JSArray<SimpleSelector0>"),
      JSArray_SourceLocation: findType("JSArray<SourceLocation>"),
      JSArray_Statement: findType("JSArray<Statement>"),
      JSArray_Statement_2: findType("JSArray<Statement0>"),
      JSArray_String: findType("JSArray<String>"),
      JSArray_StylesheetNode: findType("JSArray<StylesheetNode>"),
      JSArray_TargetEntry: findType("JSArray<TargetEntry>"),
      JSArray_TargetLineEntry: findType("JSArray<TargetLineEntry>"),
      JSArray_Trace: findType("JSArray<Trace>"),
      JSArray_UseRule: findType("JSArray<UseRule>"),
      JSArray_UseRule_2: findType("JSArray<UseRule0>"),
      JSArray_Value: findType("JSArray<Value>"),
      JSArray_Value_2: findType("JSArray<Value0>"),
      JSArray_WatchEvent: findType("JSArray<WatchEvent>"),
      JSArray__Highlight: findType("JSArray<_Highlight>"),
      JSArray__Line: findType("JSArray<_Line>"),
      JSArray_dynamic: findType("JSArray<@>"),
      JSArray_int: findType("JSArray<int>"),
      JSArray_nullable_Record_3_int_and_String_and_nullable_String: findType("JSArray<+(int,String,String?)?>"),
      JSArray_nullable_String: findType("JSArray<String?>"),
      JSClass: findType("JSClass0"),
      JSFunction: findType("JSFunction0"),
      JSImporter: findType("JSImporter"),
      JSImporterResult: findType("JSImporterResult"),
      JSNull: findType("JSNull"),
      JSUrl: findType("JSUrl0"),
      JavaScriptFunction: findType("JavaScriptFunction"),
      JavaScriptIndexingBehavior_dynamic: findType("JavaScriptIndexingBehavior<@>"),
      JsIdentityLinkedHashMap_SimpleSelector_int: findType("JsIdentityLinkedHashMap<SimpleSelector,int>"),
      JsIdentityLinkedHashMap_SimpleSelector_int_2: findType("JsIdentityLinkedHashMap<SimpleSelector0,int>"),
      JsIdentityLinkedHashMap_of_SelectorList_and_Box_SelectorList: findType("JsIdentityLinkedHashMap<SelectorList,Box<SelectorList>>"),
      JsIdentityLinkedHashMap_of_SelectorList_and_Box_SelectorList_2: findType("JsIdentityLinkedHashMap<SelectorList0,Box0<SelectorList0>>"),
      JsLinkedHashMap_Symbol_dynamic: findType("JsLinkedHashMap<Symbol0,@>"),
      JsSystemError: findType("JsSystemError"),
      LimitedMapView_String_ConfiguredValue: findType("LimitedMapView<String,ConfiguredValue>"),
      LimitedMapView_String_ConfiguredValue_2: findType("LimitedMapView0<String,ConfiguredValue0>"),
      List_ComplexSelectorComponent: findType("List<ComplexSelectorComponent>"),
      List_ComplexSelectorComponent_2: findType("List<ComplexSelectorComponent0>"),
      List_CssComment: findType("List<CssComment>"),
      List_CssComment_2: findType("List<CssComment0>"),
      List_CssMediaQuery: findType("List<CssMediaQuery>"),
      List_CssMediaQuery_2: findType("List<CssMediaQuery0>"),
      List_CssValue_Combinator: findType("List<CssValue<Combinator>>"),
      List_CssValue_Combinator_2: findType("List<CssValue0<Combinator0>>"),
      List_Extension: findType("List<Extension>"),
      List_ExtensionStore: findType("List<ExtensionStore>"),
      List_ExtensionStore_2: findType("List<ExtensionStore0>"),
      List_Extension_2: findType("List<Extension0>"),
      List_List_ComplexSelectorComponent: findType("List<List<ComplexSelectorComponent>>"),
      List_List_ComplexSelectorComponent_2: findType("List<List<ComplexSelectorComponent0>>"),
      List_Module_AsyncCallable: findType("List<Module0<AsyncCallable>>"),
      List_Module_AsyncCallable_2: findType("List<Module1<AsyncCallable0>>"),
      List_Module_Callable: findType("List<Module0<Callable0>>"),
      List_Module_Callable_2: findType("List<Module1<Callable>>"),
      List_String: findType("List<String>"),
      List_Value: findType("List<Value>"),
      List_Value_2: findType("List<Value0>"),
      List_WatchEvent: findType("List<WatchEvent>"),
      List_dynamic: findType("List<@>"),
      List_int: findType("List<int>"),
      List_nullable_Object: findType("List<Object?>"),
      MapKeySet_Module_AsyncCallable: findType("MapKeySet<Module0<AsyncCallable>>"),
      MapKeySet_Module_AsyncCallable_2: findType("MapKeySet<Module1<AsyncCallable0>>"),
      MapKeySet_Module_Callable: findType("MapKeySet<Module0<Callable0>>"),
      MapKeySet_Module_Callable_2: findType("MapKeySet<Module1<Callable>>"),
      MapKeySet_SimpleSelector: findType("MapKeySet<SimpleSelector>"),
      MapKeySet_SimpleSelector_2: findType("MapKeySet<SimpleSelector0>"),
      MapKeySet_String: findType("MapKeySet<String>"),
      MapKeySet_nullable_Object: findType("MapKeySet<Object?>"),
      Map_ComplexSelector_Extension: findType("Map<ComplexSelector,Extension>"),
      Map_ComplexSelector_Extension_2: findType("Map<ComplexSelector0,Extension0>"),
      Map_String_AstNode: findType("Map<String,AstNode>"),
      Map_String_AstNode_2: findType("Map<String,AstNode0>"),
      Map_String_AsyncCallable: findType("Map<String,AsyncCallable>"),
      Map_String_AsyncCallable_2: findType("Map<String,AsyncCallable0>"),
      Map_String_Callable: findType("Map<String,Callable0>"),
      Map_String_Callable_2: findType("Map<String,Callable>"),
      Map_String_Value: findType("Map<String,Value>"),
      Map_String_Value_2: findType("Map<String,Value0>"),
      Map_String_dynamic: findType("Map<String,@>"),
      Map_dynamic_dynamic: findType("Map<@,@>"),
      Map_of_nullable_Object_and_nullable_Object: findType("Map<Object?,Object?>"),
      MappedIterable_String_Frame: findType("MappedIterable<String,Frame>"),
      MappedListIterable_Frame_Frame: findType("MappedListIterable<Frame,Frame>"),
      MappedListIterable_String_Object: findType("MappedListIterable<String,Object>"),
      MappedListIterable_String_String: findType("MappedListIterable<String,String>"),
      MappedListIterable_String_Trace: findType("MappedListIterable<String,Trace>"),
      MappedListIterable_String_Value: findType("MappedListIterable<String,Value>"),
      MappedListIterable_String_Value_2: findType("MappedListIterable<String,Value0>"),
      MappedListIterable_String_dynamic: findType("MappedListIterable<String,@>"),
      ModifiableBox_SelectorList: findType("ModifiableBox<SelectorList>"),
      ModifiableBox_SelectorList_2: findType("ModifiableBox0<SelectorList0>"),
      ModifiableCssAtRule: findType("ModifiableCssAtRule"),
      ModifiableCssAtRule_2: findType("ModifiableCssAtRule0"),
      ModifiableCssKeyframeBlock: findType("ModifiableCssKeyframeBlock"),
      ModifiableCssKeyframeBlock_2: findType("ModifiableCssKeyframeBlock0"),
      ModifiableCssMediaRule: findType("ModifiableCssMediaRule"),
      ModifiableCssMediaRule_2: findType("ModifiableCssMediaRule0"),
      ModifiableCssNode: findType("ModifiableCssNode"),
      ModifiableCssNode_2: findType("ModifiableCssNode0"),
      ModifiableCssParentNode: findType("ModifiableCssParentNode"),
      ModifiableCssParentNode_2: findType("ModifiableCssParentNode0"),
      ModifiableCssStyleRule: findType("ModifiableCssStyleRule"),
      ModifiableCssStyleRule_2: findType("ModifiableCssStyleRule0"),
      ModifiableCssSupportsRule: findType("ModifiableCssSupportsRule"),
      ModifiableCssSupportsRule_2: findType("ModifiableCssSupportsRule0"),
      Module_AsyncCallable: findType("Module0<AsyncCallable>"),
      Module_AsyncCallable_2: findType("Module1<AsyncCallable0>"),
      Module_Callable: findType("Module0<Callable0>"),
      Module_Callable_2: findType("Module1<Callable>"),
      MultiSourceSpanFormatException: findType("MultiSourceSpanFormatException"),
      NativeTypedArrayOfDouble: findType("NativeTypedArrayOfDouble"),
      NativeTypedArrayOfInt: findType("NativeTypedArrayOfInt"),
      NativeUint8List: findType("NativeUint8List"),
      Never: findType("0&"),
      NodeCompileResult: findType("NodeCompileResult"),
      NodeImporterResult: findType("NodeImporterResult0"),
      Null: findType("Null"),
      Object: findType("Object"),
      Option: findType("Option"),
      PathMap_ChangeType: findType("PathMap<ChangeType>"),
      PathMap_Stream_WatchEvent: findType("PathMap<Stream<WatchEvent>>"),
      PathMap_String: findType("PathMap<String>"),
      PathMap_nullable_String: findType("PathMap<String?>"),
      Promise: findType("Promise"),
      PseudoSelector: findType("PseudoSelector"),
      PseudoSelector_2: findType("PseudoSelector0"),
      RangeError: findType("RangeError"),
      Record: findType("Record"),
      Record_0: findType("+()"),
      Record_2_Expression_and_Expression: findType("+(Expression,Expression)"),
      Record_2_Expression_and_Expression_2: findType("+(Expression0,Expression0)"),
      Record_2_List_Expression_and_Map_String_Expression: findType("+(List<Expression>,Map<String,Expression>)"),
      Record_2_List_Expression_and_Map_String_Expression_2: findType("+(List<Expression0>,Map<String,Expression0>)"),
      Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet: findType("+loadedUrls,stylesheet(Set<Uri>,CssStylesheet)"),
      Record_2_Set_Uri_loadedUrls_and_CssStylesheet_stylesheet_2: findType("+loadedUrls,stylesheet(Set<Uri>,CssStylesheet0)"),
      Record_2_String_and_InterpolationMap: findType("+(String,InterpolationMap)"),
      Record_2_String_and_InterpolationMap_2: findType("+(String,InterpolationMap0)"),
      Record_2_String_and_SourceSpan: findType("+(String,SourceSpan)"),
      Record_2_String_and_nullable_InterpolationMap: findType("+(String,InterpolationMap?)"),
      Record_2_String_and_nullable_InterpolationMap_2: findType("+(String,InterpolationMap0?)"),
      Record_2_Uri_and_bool_forImport: findType("+forImport(Uri,bool)"),
      Record_2_nullable_Object_and_nullable_Object: findType("+(Object?,Object?)"),
      Record_2_nullable_String_and_nullable_String: findType("+(String?,String?)"),
      Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl: findType("+originalUrl(AsyncImporter,Uri,Uri)"),
      Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2: findType("+originalUrl(AsyncImporter0,Uri,Uri)"),
      Record_3_Importer_and_Uri_and_Uri_originalUrl: findType("+originalUrl(Importer,Uri,Uri)"),
      Record_3_Importer_and_Uri_and_Uri_originalUrl_2: findType("+originalUrl(Importer0,Uri,Uri)"),
      Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency: findType("+importer,isDependency(Stylesheet,AsyncImporter?,bool)"),
      Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency_2: findType("+importer,isDependency(Stylesheet0,AsyncImporter0?,bool)"),
      Record_3_nullable_Object_and_nullable_Object_and_nullable_Object_originalUrl: findType("+originalUrl(Object?,Object?,Object?)"),
      Record_4_Uri_and_AsyncImporter_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport: findType("+baseImporter,baseUrl,forImport(Uri,AsyncImporter,Uri?,bool)"),
      Record_4_Uri_and_AsyncImporter_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport_2: findType("+baseImporter,baseUrl,forImport(Uri,AsyncImporter0,Uri?,bool)"),
      Record_4_Uri_and_Importer_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport: findType("+baseImporter,baseUrl,forImport(Uri,Importer,Uri?,bool)"),
      Record_4_Uri_and_Importer_baseImporter_and_nullable_Uri_baseUrl_and_bool_forImport_2: findType("+baseImporter,baseUrl,forImport(Uri,Importer0,Uri?,bool)"),
      Record_5_Map_String_Value_named_and_Map_String_AstNode_namedNodes_and_List_Value_positional_and_List_AstNode_positionalNodes_and_ListSeparator_separator: findType("+named,namedNodes,positional,positionalNodes,separator(Map<String,Value>,Map<String,AstNode>,List<Value>,List<AstNode>,ListSeparator)"),
      Record_5_Map_String_Value_named_and_Map_String_AstNode_namedNodes_and_List_Value_positional_and_List_AstNode_positionalNodes_and_ListSeparator_separator_2: findType("+named,namedNodes,positional,positionalNodes,separator(Map<String,Value0>,Map<String,AstNode0>,List<Value0>,List<AstNode0>,ListSeparator0)"),
      RegExpMatch: findType("RegExpMatch"),
      RenderContextOptions: findType("RenderContextOptions0"),
      RenderResult: findType("RenderResult"),
      Result_String: findType("Result<String>"),
      ReversedListIterable_Frame: findType("ReversedListIterable<Frame>"),
      Runes: findType("Runes"),
      SassArgumentList: findType("SassArgumentList"),
      SassArgumentList_2: findType("SassArgumentList0"),
      SassBoolean: findType("SassBoolean"),
      SassBoolean_2: findType("SassBoolean0"),
      SassCalculation: findType("SassCalculation"),
      SassCalculation_2: findType("SassCalculation0"),
      SassColor: findType("SassColor"),
      SassColor_2: findType("SassColor0"),
      SassFormatException: findType("SassFormatException"),
      SassFormatException_2: findType("SassFormatException0"),
      SassList: findType("SassList"),
      SassList_2: findType("SassList0"),
      SassMap: findType("SassMap"),
      SassMap_2: findType("SassMap0"),
      SassNumber: findType("SassNumber"),
      SassNumber_2: findType("SassNumber0"),
      SassRuntimeException: findType("SassRuntimeException"),
      SassRuntimeException_2: findType("SassRuntimeException0"),
      SassString: findType("SassString"),
      SassString_2: findType("SassString0"),
      SelectorList: findType("SelectorList"),
      SelectorList_2: findType("SelectorList0"),
      Set_ModifiableBox_SelectorList: findType("Set<ModifiableBox<SelectorList>>"),
      Set_ModifiableBox_SelectorList_2: findType("Set<ModifiableBox0<SelectorList0>>"),
      Set_Uri: findType("Set<Uri>"),
      SimpleSelector: findType("SimpleSelector"),
      SimpleSelector_2: findType("SimpleSelector0"),
      SourceFile: findType("SourceFile"),
      SourceLocation: findType("SourceLocation"),
      SourceSpan: findType("SourceSpan"),
      SourceSpanFormatException: findType("SourceSpanFormatException"),
      SourceSpanWithContext: findType("SourceSpanWithContext"),
      StackTrace: findType("StackTrace"),
      Statement: findType("Statement"),
      Statement_2: findType("Statement0"),
      StaticImport: findType("StaticImport"),
      StaticImport_2: findType("StaticImport0"),
      StreamCompleter_WatchEvent: findType("StreamCompleter<WatchEvent>"),
      StreamGroup_WatchEvent: findType("StreamGroup<WatchEvent>"),
      StreamQueue_String: findType("StreamQueue<String>"),
      Stream_WatchEvent: findType("Stream<WatchEvent>"),
      String: findType("String"),
      StylesheetNode: findType("StylesheetNode"),
      Timer: findType("Timer"),
      Trace: findType("Trace"),
      TrustedGetRuntimeType: findType("TrustedGetRuntimeType"),
      TypeError: findType("TypeError"),
      TypeSelector: findType("TypeSelector"),
      TypeSelector_2: findType("TypeSelector0"),
      Uint16List: findType("Uint16List"),
      Uint32List: findType("Uint32List"),
      Uint8ClampedList: findType("Uint8ClampedList"),
      Uint8List: findType("Uint8List"),
      UnaryOperationExpression: findType("UnaryOperationExpression"),
      UnaryOperationExpression_2: findType("UnaryOperationExpression0"),
      UnionSet_Uri: findType("UnionSet<Uri>"),
      UnknownJavaScriptObject: findType("UnknownJavaScriptObject"),
      UnmodifiableListView_CssComment: findType("UnmodifiableListView<CssComment>"),
      UnmodifiableListView_CssComment_2: findType("UnmodifiableListView<CssComment0>"),
      UnmodifiableListView_CssNode: findType("UnmodifiableListView<CssNode>"),
      UnmodifiableListView_CssNode_2: findType("UnmodifiableListView<CssNode0>"),
      UnmodifiableListView_ForwardRule: findType("UnmodifiableListView<ForwardRule>"),
      UnmodifiableListView_ForwardRule_2: findType("UnmodifiableListView<ForwardRule0>"),
      UnmodifiableListView_ModifiableCssNode: findType("UnmodifiableListView<ModifiableCssNode>"),
      UnmodifiableListView_ModifiableCssNode_2: findType("UnmodifiableListView<ModifiableCssNode0>"),
      UnmodifiableListView_String: findType("UnmodifiableListView<String>"),
      UnmodifiableListView_UseRule: findType("UnmodifiableListView<UseRule>"),
      UnmodifiableListView_UseRule_2: findType("UnmodifiableListView<UseRule0>"),
      UnmodifiableMapView_String_ArgParser: findType("UnmodifiableMapView<String,ArgParser>"),
      UnmodifiableMapView_String_ConfiguredValue: findType("UnmodifiableMapView<String,ConfiguredValue>"),
      UnmodifiableMapView_String_ConfiguredValue_2: findType("UnmodifiableMapView<String,ConfiguredValue0>"),
      UnmodifiableMapView_String_Option: findType("UnmodifiableMapView<String,Option>"),
      UnmodifiableMapView_String_Value: findType("UnmodifiableMapView<String,Value>"),
      UnmodifiableMapView_String_Value_2: findType("UnmodifiableMapView<String,Value0>"),
      UnmodifiableMapView_of_Uri_and_nullable_StylesheetNode: findType("UnmodifiableMapView<Uri,StylesheetNode?>"),
      UnmodifiableMapView_of_nullable_String_and_String: findType("UnmodifiableMapView<String?,String>"),
      UnmodifiableMapView_of_nullable_String_and_nullable_String: findType("UnmodifiableMapView<String?,String?>"),
      UnmodifiableSetView_String: findType("UnmodifiableSetView0<String>"),
      UnmodifiableSetView_StylesheetNode: findType("UnmodifiableSetView0<StylesheetNode>"),
      UnmodifiableSetView_Uri: findType("UnmodifiableSetView0<Uri>"),
      UnprefixedMapView_ConfiguredValue: findType("UnprefixedMapView<ConfiguredValue>"),
      UnprefixedMapView_ConfiguredValue_2: findType("UnprefixedMapView0<ConfiguredValue0>"),
      Uri: findType("Uri"),
      UseRule: findType("UseRule"),
      UserDefinedCallable_AsyncEnvironment: findType("UserDefinedCallable<AsyncEnvironment>"),
      UserDefinedCallable_AsyncEnvironment_2: findType("UserDefinedCallable0<AsyncEnvironment0>"),
      UserDefinedCallable_Environment: findType("UserDefinedCallable<Environment>"),
      UserDefinedCallable_Environment_2: findType("UserDefinedCallable0<Environment0>"),
      UserDefinedCallable_dynamic: findType("UserDefinedCallable<@>"),
      UserDefinedCallable_dynamic_2: findType("UserDefinedCallable0<@>"),
      Value: findType("Value"),
      Value_2: findType("Value0"),
      Value_Function_List_Value: findType("Value(List<Value>)"),
      Value_Function_List_Value_2: findType("Value0(List<Value0>)"),
      VariableDeclaration: findType("VariableDeclaration"),
      VariableDeclaration_2: findType("VariableDeclaration0"),
      VersionRange: findType("VersionRange"),
      WatchEvent: findType("WatchEvent"),
      WhereIterable_List_Iterable_ComplexSelectorComponent: findType("WhereIterable<List<Iterable<ComplexSelectorComponent>>>"),
      WhereIterable_List_Iterable_ComplexSelectorComponent_2: findType("WhereIterable<List<Iterable<ComplexSelectorComponent0>>>"),
      WhereIterable_String: findType("WhereIterable<String>"),
      WhereTypeIterable_PseudoSelector: findType("WhereTypeIterable<PseudoSelector>"),
      WhereTypeIterable_PseudoSelector_2: findType("WhereTypeIterable<PseudoSelector0>"),
      WhereTypeIterable_String: findType("WhereTypeIterable<String>"),
      _AsyncCompleter_Object: findType("_AsyncCompleter<Object>"),
      _AsyncCompleter_Stream_WatchEvent: findType("_AsyncCompleter<Stream<WatchEvent>>"),
      _AsyncCompleter_String: findType("_AsyncCompleter<String>"),
      _AsyncCompleter_nullable_Object: findType("_AsyncCompleter<Object?>"),
      _CompleterStream_WatchEvent: findType("_CompleterStream<WatchEvent>"),
      _EventRequest_dynamic: findType("_EventRequest<@>"),
      _Future_Object: findType("_Future<Object>"),
      _Future_Stream_WatchEvent: findType("_Future<Stream<WatchEvent>>"),
      _Future_String: findType("_Future<String>"),
      _Future_bool: findType("_Future<bool>"),
      _Future_dynamic: findType("_Future<@>"),
      _Future_int: findType("_Future<int>"),
      _Future_nullable_Object: findType("_Future<Object?>"),
      _Future_void: findType("_Future<~>"),
      _Highlight: findType("_Highlight"),
      _IdentityHashMap_of_nullable_Object_and_nullable_Object: findType("_IdentityHashMap<Object?,Object?>"),
      _LinkedIdentityHashSet_ComplexSelector: findType("_LinkedIdentityHashSet<ComplexSelector>"),
      _LinkedIdentityHashSet_ComplexSelector_2: findType("_LinkedIdentityHashSet<ComplexSelector0>"),
      _LinkedIdentityHashSet_Extension: findType("_LinkedIdentityHashSet<Extension>"),
      _LinkedIdentityHashSet_Extension_2: findType("_LinkedIdentityHashSet<Extension0>"),
      _MapEntry: findType("_MapEntry"),
      _NodeException: findType("_NodeException"),
      _SyncStarIterable_Extension: findType("_SyncStarIterable<Extension>"),
      _SyncStarIterable_Extension_2: findType("_SyncStarIterable<Extension0>"),
      _SyncStarIterable_SimpleSelector: findType("_SyncStarIterable<SimpleSelector>"),
      _SyncStarIterable_SimpleSelector_2: findType("_SyncStarIterable<SimpleSelector0>"),
      _SyncStarIterable_String: findType("_SyncStarIterable<String>"),
      bool: findType("bool"),
      double: findType("double"),
      dynamic: findType("@"),
      dynamic_Function: findType("@()"),
      dynamic_Function_Object: findType("@(Object)"),
      dynamic_Function_Object_StackTrace: findType("@(Object,StackTrace)"),
      int: findType("int"),
      legacy_Never: findType("0&*"),
      legacy_Object: findType("Object*"),
      nullable_AstNode: findType("AstNode?"),
      nullable_AstNode_2: findType("AstNode0?"),
      nullable_Future_Null: findType("Future<Null>?"),
      nullable_Future_void: findType("Future<~>?"),
      nullable_ImporterResult: findType("ImporterResult0?"),
      nullable_Object: findType("Object?"),
      nullable_Record_2_String_and_String: findType("+(String,String)?"),
      nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl: findType("+originalUrl(AsyncImporter,Uri,Uri)?"),
      nullable_Record_3_AsyncImporter_and_Uri_and_Uri_originalUrl_2: findType("+originalUrl(AsyncImporter0,Uri,Uri)?"),
      nullable_Record_3_Importer_and_Uri_and_Uri_originalUrl: findType("+originalUrl(Importer,Uri,Uri)?"),
      nullable_Record_3_Importer_and_Uri_and_Uri_originalUrl_2: findType("+originalUrl(Importer0,Uri,Uri)?"),
      nullable_Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency: findType("+importer,isDependency(Stylesheet,AsyncImporter?,bool)?"),
      nullable_Record_3_Stylesheet_and_nullable_AsyncImporter_importer_and_bool_isDependency_2: findType("+importer,isDependency(Stylesheet0,AsyncImporter0?,bool)?"),
      nullable_Record_3_int_and_String_and_nullable_String: findType("+(int,String,String?)?"),
      nullable_SourceFile: findType("SourceFile?"),
      nullable_SourceSpan: findType("SourceSpan?"),
      nullable_StreamSubscription_WatchEvent: findType("StreamSubscription<WatchEvent>?"),
      nullable_String: findType("String?"),
      nullable_Stylesheet: findType("Stylesheet?"),
      nullable_StylesheetNode: findType("StylesheetNode?"),
      nullable_Stylesheet_2: findType("Stylesheet0?"),
      nullable_Uri: findType("Uri?"),
      nullable_Value: findType("Value?"),
      nullable_Value_2: findType("Value0?"),
      nullable__ConstructorOptions: findType("_ConstructorOptions?"),
      nullable__ConstructorOptions_2: findType("_ConstructorOptions0?"),
      nullable__ConstructorOptions_3: findType("_ConstructorOptions1?"),
      nullable__Highlight: findType("_Highlight?"),
      num: findType("num"),
      void: findType("~"),
      void_Function_Object: findType("~(Object)"),
      void_Function_Object_StackTrace: findType("~(Object,StackTrace)")
    };
  })();
  (function constants() {
    var makeConstList = hunkHelpers.makeConstList;
    B.Interceptor_methods = J.Interceptor.prototype;
    B.JSArray_methods = J.JSArray.prototype;
    B.JSInt_methods = J.JSInt.prototype;
    B.JSNull_methods = J.JSNull.prototype;
    B.JSNumber_methods = J.JSNumber.prototype;
    B.JSString_methods = J.JSString.prototype;
    B.JavaScriptFunction_methods = J.JavaScriptFunction.prototype;
    B.JavaScriptObject_methods = J.JavaScriptObject.prototype;
    B.NativeUint32List_methods = A.NativeUint32List.prototype;
    B.NativeUint8List_methods = A.NativeUint8List.prototype;
    B.PlainJavaScriptObject_methods = J.PlainJavaScriptObject.prototype;
    B.UnknownJavaScriptObject_methods = J.UnknownJavaScriptObject.prototype;
    B.AsciiEncoder_127 = new A.AsciiEncoder(127);
    B.C_EmptyUnmodifiableSet1 = new A.EmptyUnmodifiableSet(A.findType("EmptyUnmodifiableSet<String>"));
    B.AtRootQuery_UsS = new A.AtRootQuery(false, B.C_EmptyUnmodifiableSet1, false, true);
    B.AtRootQuery_UsS0 = new A.AtRootQuery0(false, B.C_EmptyUnmodifiableSet1, false, true);
    B.AttributeOperator_8aB = new A.AttributeOperator("*=", "substring");
    B.AttributeOperator_8aB0 = new A.AttributeOperator0("*=", "substring");
    B.AttributeOperator_BGd = new A.AttributeOperator("$=", "suffix");
    B.AttributeOperator_BGd0 = new A.AttributeOperator0("$=", "suffix");
    B.AttributeOperator_ES6 = new A.AttributeOperator("=", "equal");
    B.AttributeOperator_ES60 = new A.AttributeOperator0("=", "equal");
    B.AttributeOperator_eot = new A.AttributeOperator("^=", "prefix");
    B.AttributeOperator_eot0 = new A.AttributeOperator0("^=", "prefix");
    B.AttributeOperator_ivT = new A.AttributeOperator("|=", "dash");
    B.AttributeOperator_ivT0 = new A.AttributeOperator0("|=", "dash");
    B.AttributeOperator_r60 = new A.AttributeOperator("~=", "include");
    B.AttributeOperator_r600 = new A.AttributeOperator0("~=", "include");
    B.BinaryOperator_2jN = new A.BinaryOperator("single equals", "=", 0, false, "singleEquals");
    B.BinaryOperator_2jN0 = new A.BinaryOperator0("single equals", "=", 0, false, "singleEquals");
    B.BinaryOperator_7Tg = new A.BinaryOperator("greater than or equals", ">=", 4, false, "greaterThanOrEquals");
    B.BinaryOperator_7Tg0 = new A.BinaryOperator0("greater than or equals", ">=", 4, false, "greaterThanOrEquals");
    B.BinaryOperator_M6L = new A.BinaryOperator("or", "or", 1, true, "or");
    B.BinaryOperator_M6L0 = new A.BinaryOperator0("or", "or", 1, true, "or");
    B.BinaryOperator_OTG = new A.BinaryOperator("modulo", "%", 6, false, "modulo");
    B.BinaryOperator_OTG0 = new A.BinaryOperator0("modulo", "%", 6, false, "modulo");
    B.BinaryOperator_SNp = new A.BinaryOperator("and", "and", 2, true, "and");
    B.BinaryOperator_SNp0 = new A.BinaryOperator0("and", "and", 2, true, "and");
    B.BinaryOperator_U8c = new A.BinaryOperator("less than", "<", 4, false, "lessThan");
    B.BinaryOperator_U8c0 = new A.BinaryOperator0("less than", "<", 4, false, "lessThan");
    B.BinaryOperator_ViB = new A.BinaryOperator("not equals", "!=", 3, false, "notEquals");
    B.BinaryOperator_ViB0 = new A.BinaryOperator0("not equals", "!=", 3, false, "notEquals");
    B.BinaryOperator_anB = new A.BinaryOperator("plus", "+", 5, true, "plus");
    B.BinaryOperator_anB0 = new A.BinaryOperator0("plus", "+", 5, true, "plus");
    B.BinaryOperator_cIH = new A.BinaryOperator("greater than", ">", 4, false, "greaterThan");
    B.BinaryOperator_cIH0 = new A.BinaryOperator0("greater than", ">", 4, false, "greaterThan");
    B.BinaryOperator_kpg = new A.BinaryOperator("less than or equals", "<=", 4, false, "lessThanOrEquals");
    B.BinaryOperator_kpg0 = new A.BinaryOperator0("less than or equals", "<=", 4, false, "lessThanOrEquals");
    B.BinaryOperator_olz = new A.BinaryOperator("minus", "-", 5, false, "minus");
    B.BinaryOperator_olz0 = new A.BinaryOperator0("minus", "-", 5, false, "minus");
    B.BinaryOperator_qN2 = new A.BinaryOperator("times", "*", 6, true, "times");
    B.BinaryOperator_qN20 = new A.BinaryOperator0("times", "*", 6, true, "times");
    B.BinaryOperator_ql5 = new A.BinaryOperator("equals", "==", 3, false, "equals");
    B.BinaryOperator_ql50 = new A.BinaryOperator0("equals", "==", 3, false, "equals");
    B.BinaryOperator_t8B = new A.BinaryOperator("divided by", "/", 6, false, "dividedBy");
    B.BinaryOperator_t8B0 = new A.BinaryOperator0("divided by", "/", 6, false, "dividedBy");
    B.CONSTANT = new A.Instantiation1(A.math0__max$closure(), A.findType("Instantiation1<int>"));
    B.C_AsciiCodec = new A.AsciiCodec();
    B.C_AsciiGlyphSet = new A.AsciiGlyphSet();
    B.C_Base64Encoder = new A.Base64Encoder();
    B.C_Base64Codec = new A.Base64Codec();
    B.C_DefaultEquality = new A.DefaultEquality();
    B.C_EmptyExtensionStore = new A.EmptyExtensionStore();
    B.C_EmptyExtensionStore0 = new A.EmptyExtensionStore0();
    B.C_EmptyIterator = new A.EmptyIterator();
    B.C_EmptyUnmodifiableSet = new A.EmptyUnmodifiableSet(A.findType("EmptyUnmodifiableSet<SimpleSelector>"));
    B.C_EmptyUnmodifiableSet0 = new A.EmptyUnmodifiableSet(A.findType("EmptyUnmodifiableSet<SimpleSelector0>"));
    B.C_IterableEquality = new A.IterableEquality();
    B.C_JS_CONST = function getTagFallback(o) {
  var s = Object.prototype.toString.call(o);
  return s.substring(8, s.length - 1);
};
    B.C_JS_CONST0 = function() {
  var toStringFunction = Object.prototype.toString;
  function getTag(o) {
    var s = toStringFunction.call(o);
    return s.substring(8, s.length - 1);
  }
  function getUnknownTag(object, tag) {
    if (/^HTML[A-Z].*Element$/.test(tag)) {
      var name = toStringFunction.call(object);
      if (name == "[object Object]") return null;
      return "HTMLElement";
    }
  }
  function getUnknownTagGenericBrowser(object, tag) {
    if (object instanceof HTMLElement) return "HTMLElement";
    return getUnknownTag(object, tag);
  }
  function prototypeForTag(tag) {
    if (typeof window == "undefined") return null;
    if (typeof window[tag] == "undefined") return null;
    var constructor = window[tag];
    if (typeof constructor != "function") return null;
    return constructor.prototype;
  }
  function discriminator(tag) { return null; }
  var isBrowser = typeof HTMLElement == "function";
  return {
    getTag: getTag,
    getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag,
    prototypeForTag: prototypeForTag,
    discriminator: discriminator };
};
    B.C_JS_CONST6 = function(getTagFallback) {
  return function(hooks) {
    if (typeof navigator != "object") return hooks;
    var userAgent = navigator.userAgent;
    if (typeof userAgent != "string") return hooks;
    if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks;
    if (userAgent.indexOf("Chrome") >= 0) {
      function confirm(p) {
        return typeof window == "object" && window[p] && window[p].name == p;
      }
      if (confirm("Window") && confirm("HTMLElement")) return hooks;
    }
    hooks.getTag = getTagFallback;
  };
};
    B.C_JS_CONST1 = function(hooks) {
  if (typeof dartExperimentalFixupGetTag != "function") return hooks;
  hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag);
};
    B.C_JS_CONST5 = function(hooks) {
  if (typeof navigator != "object") return hooks;
  var userAgent = navigator.userAgent;
  if (typeof userAgent != "string") return hooks;
  if (userAgent.indexOf("Firefox") == -1) return hooks;
  var getTag = hooks.getTag;
  var quickMap = {
    "BeforeUnloadEvent": "Event",
    "DataTransfer": "Clipboard",
    "GeoGeolocation": "Geolocation",
    "Location": "!Location",
    "WorkerMessageEvent": "MessageEvent",
    "XMLDocument": "!Document"};
  function getTagFirefox(o) {
    var tag = getTag(o);
    return quickMap[tag] || tag;
  }
  hooks.getTag = getTagFirefox;
};
    B.C_JS_CONST4 = function(hooks) {
  if (typeof navigator != "object") return hooks;
  var userAgent = navigator.userAgent;
  if (typeof userAgent != "string") return hooks;
  if (userAgent.indexOf("Trident/") == -1) return hooks;
  var getTag = hooks.getTag;
  var quickMap = {
    "BeforeUnloadEvent": "Event",
    "DataTransfer": "Clipboard",
    "HTMLDDElement": "HTMLElement",
    "HTMLDTElement": "HTMLElement",
    "HTMLPhraseElement": "HTMLElement",
    "Position": "Geoposition"
  };
  function getTagIE(o) {
    var tag = getTag(o);
    var newTag = quickMap[tag];
    if (newTag) return newTag;
    if (tag == "Object") {
      if (window.DataView && (o instanceof window.DataView)) return "DataView";
    }
    return tag;
  }
  function prototypeForTagIE(tag) {
    var constructor = window[tag];
    if (constructor == null) return null;
    return constructor.prototype;
  }
  hooks.getTag = getTagIE;
  hooks.prototypeForTag = prototypeForTagIE;
};
    B.C_JS_CONST2 = function(hooks) {
  var getTag = hooks.getTag;
  var prototypeForTag = hooks.prototypeForTag;
  function getTagFixed(o) {
    var tag = getTag(o);
    if (tag == "Document") {
      if (!!o.xmlVersion) return "!Document";
      return "!HTMLDocument";
    }
    return tag;
  }
  function prototypeForTagFixed(tag) {
    if (tag == "Document") return null;
    return prototypeForTag(tag);
  }
  hooks.getTag = getTagFixed;
  hooks.prototypeForTag = prototypeForTagFixed;
};
    B.C_JS_CONST3 = function(hooks) { return hooks; }
;
    B.C_JsonCodec = new A.JsonCodec();
    B.C_ListEquality0 = new A.ListEquality();
    B.C_ListEquality = new A.ListEquality();
    B.C_MapEquality = new A.MapEquality();
    B.C_OutOfMemoryError = new A.OutOfMemoryError();
    B.C_SentinelValue = new A.SentinelValue();
    B.C_UnicodeGlyphSet = new A.UnicodeGlyphSet();
    B.C_Utf8Codec = new A.Utf8Codec();
    B.C_Utf8Encoder = new A.Utf8Encoder();
    B.C__DelayedDone = new A._DelayedDone();
    B.C__HasContentVisitor = new A._HasContentVisitor();
    B.C__HasContentVisitor0 = new A._HasContentVisitor0();
    B.C__IsUselessVisitor = new A._IsUselessVisitor();
    B.C__IsUselessVisitor0 = new A._IsUselessVisitor0();
    B.C__JSRandom = new A._JSRandom();
    B.C__MakeExpressionCalculationSafe = new A._MakeExpressionCalculationSafe();
    B.C__MakeExpressionCalculationSafe0 = new A._MakeExpressionCalculationSafe0();
    B.C__ParentSelectorVisitor = new A._ParentSelectorVisitor();
    B.C__ParentSelectorVisitor0 = new A._ParentSelectorVisitor0();
    B.C__Required = new A._Required();
    B.C__RootZone = new A._RootZone();
    B.C__SassNull = new A._SassNull();
    B.C__SassNull0 = new A._SassNull0();
    B.CalculationOperator_2bx = new A.CalculationOperator("minus", "-", 1, "minus");
    B.CalculationOperator_2bx0 = new A.CalculationOperator0("minus", "-", 1, "minus");
    B.CalculationOperator_IyK = new A.CalculationOperator("plus", "+", 1, "plus");
    B.CalculationOperator_IyK0 = new A.CalculationOperator0("plus", "+", 1, "plus");
    B.CalculationOperator_OvN = new A.CalculationOperator("divided by", "/", 2, "dividedBy");
    B.CalculationOperator_OvN0 = new A.CalculationOperator0("divided by", "/", 2, "dividedBy");
    B.CalculationOperator_jFr = new A.CalculationOperator("times", "*", 2, "times");
    B.CalculationOperator_jFr0 = new A.CalculationOperator0("times", "*", 2, "times");
    B.ChangeType_add = new A.ChangeType("add");
    B.ChangeType_modify = new A.ChangeType("modify");
    B.ChangeType_remove = new A.ChangeType("remove");
    B.Combinator_4QF = new A.Combinator("+", "nextSibling");
    B.Combinator_4QF0 = new A.Combinator0("+", "nextSibling");
    B.Combinator_Cht = new A.Combinator(">", "child");
    B.Combinator_Cht0 = new A.Combinator0(">", "child");
    B.Combinator_Htt = new A.Combinator("~", "followingSibling");
    B.Combinator_Htt0 = new A.Combinator0("~", "followingSibling");
    B.Object_empty = {};
    B.Map_empty17 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,ConfiguredValue>"));
    B.Configuration_Map_empty_null = new A.Configuration(B.Map_empty17, null);
    B.Map_empty18 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,ConfiguredValue0>"));
    B.Configuration_Map_empty_null0 = new A.Configuration0(B.Map_empty18, null);
    B.Deprecation_043 = new A.Deprecation("abs-percent", "1.65.0", "Passing percentages to the Sass abs() function.", false, "absPercent");
    B.Deprecation_0bn = new A.Deprecation0("function-units", false, "functionUnits");
    B.Deprecation_4iQ = new A.Deprecation0("call-string", false, "callString");
    B.Deprecation_8WR = new A.Deprecation("function-units", "1.56.0", "Passing invalid units to built-in functions.", false, "functionUnits");
    B.Deprecation_Auo = new A.Deprecation("duplicate-var-flags", "1.62.0", "Using !default or !global multiple times for one variable.", false, "duplicateVariableFlags");
    B.Deprecation_B8J = new A.Deprecation("import", null, "@import rules.", true, "import");
    B.Deprecation_E5x = new A.Deprecation0("relative-canonical", false, "relativeCanonical");
    B.Deprecation_EsU = new A.Deprecation0("strict-unary", false, "strictUnary");
    B.Deprecation_GbU = new A.Deprecation0("moz-document", false, "mozDocument");
    B.Deprecation_JAZ = new A.Deprecation("elseif", "1.3.2", "@elseif.", false, "elseif");
    B.Deprecation_LT8 = new A.Deprecation0("color-module-compat", false, "colorModuleCompat");
    B.Deprecation_UZD = new A.Deprecation0("null-alpha", false, "nullAlpha");
    B.Deprecation_XV6 = new A.Deprecation0("bogus-combinators", false, "bogusCombinators");
    B.Deprecation_elseif_false_elseif = new A.Deprecation0("elseif", false, "elseif");
    B.Deprecation_gJ9 = new A.Deprecation("moz-document", "1.7.2", "@-moz-document.", false, "mozDocument");
    B.Deprecation_hzy = new A.Deprecation("new-global", "1.17.2", "Declaring new variables with !global.", false, "newGlobal");
    B.Deprecation_import_true_import = new A.Deprecation0("import", true, "import");
    B.Deprecation_la6 = new A.Deprecation0("abs-percent", false, "absPercent");
    B.Deprecation_mFp = new A.Deprecation("relative-canonical", "1.14.2", null, false, "relativeCanonical");
    B.Deprecation_qVK = new A.Deprecation("call-string", "0.0.0", "Passing a string directly to meta.call().", false, "callString");
    B.Deprecation_s4m = new A.Deprecation("color-module-compat", "1.23.0", "Using color module functions in place of plain CSS functions.", false, "colorModuleCompat");
    B.Deprecation_sIK = new A.Deprecation("strict-unary", "1.55.0", "Ambiguous + and - operators.", false, "strictUnary");
    B.Deprecation_vrR = new A.Deprecation("bogus-combinators", "1.54.0", "Leading, trailing, and repeated combinators.", false, "bogusCombinators");
    B.Deprecation_wKk = new A.Deprecation0("new-global", false, "newGlobal");
    B.Deprecation_wWh = new A.Deprecation0("slash-div", false, "slashDiv");
    B.Deprecation_xHK = new A.Deprecation("slash-div", "1.33.0", "/ operator for division.", false, "slashDiv");
    B.Deprecation_ynv = new A.Deprecation0("duplicate-var-flags", false, "duplicateVariableFlags");
    B.Duration_0 = new A.Duration(0);
    B.ExtendMode_allTargets_allTargets = new A.ExtendMode("allTargets", "allTargets");
    B.ExtendMode_allTargets_allTargets0 = new A.ExtendMode0("allTargets", "allTargets");
    B.ExtendMode_normal_normal = new A.ExtendMode("normal", "normal");
    B.ExtendMode_normal_normal0 = new A.ExtendMode0("normal", "normal");
    B.ExtendMode_replace_replace = new A.ExtendMode("replace", "replace");
    B.ExtendMode_replace_replace0 = new A.ExtendMode0("replace", "replace");
    B.JsonEncoder_null = new A.JsonEncoder(null);
    B.LineFeed_SsD = new A.LineFeed0("lf", "\n", "lf");
    B.LineFeed_gg4 = new A.LineFeed0("crlf", "\r\n", "crlf");
    B.LineFeed_lf = new A.LineFeed("lf");
    B.LineFeed_oyU = new A.LineFeed0("cr", "\r", "cr");
    B.LineFeed_t2a = new A.LineFeed0("lfcr", "\n\r", "lfcr");
    B.ListSeparator_EVt = new A.ListSeparator("space", " ", "space");
    B.ListSeparator_EVt0 = new A.ListSeparator0("space", " ", "space");
    B.ListSeparator_rXA = new A.ListSeparator("comma", ",", "comma");
    B.ListSeparator_rXA0 = new A.ListSeparator0("comma", ",", "comma");
    B.ListSeparator_undecided_null_undecided = new A.ListSeparator("undecided", null, "undecided");
    B.ListSeparator_undecided_null_undecided0 = new A.ListSeparator0("undecided", null, "undecided");
    B.ListSeparator_zg9 = new A.ListSeparator("slash", "/", "slash");
    B.ListSeparator_zg90 = new A.ListSeparator0("slash", "/", "slash");
    B.Deprecation_7XU = new A.Deprecation("null-alpha", "1.62.3", "Passing null as alpha in the JS API.", false, "nullAlpha");
    B.Deprecation_WbD = new A.Deprecation("calc-interp", null, null, false, "calcInterp");
    B.Deprecation_A0N = new A.Deprecation("user-authored", null, null, false, "userAuthored");
    B.List_GN8 = A._setArrayType(makeConstList([B.Deprecation_qVK, B.Deprecation_JAZ, B.Deprecation_gJ9, B.Deprecation_mFp, B.Deprecation_hzy, B.Deprecation_s4m, B.Deprecation_xHK, B.Deprecation_vrR, B.Deprecation_sIK, B.Deprecation_8WR, B.Deprecation_043, B.Deprecation_Auo, B.Deprecation_7XU, B.Deprecation_WbD, B.Deprecation_B8J, B.Deprecation_A0N]), A.findType("JSArray<Deprecation>"));
    B.List_M1A = A._setArrayType(makeConstList([0, 0, 24576, 1023, 65534, 34815, 65534, 18431]), type$.JSArray_int);
    B.List_MMm = A._setArrayType(makeConstList([0, 0, 26624, 1023, 65534, 2047, 65534, 2047]), type$.JSArray_int);
    B.List_OL3 = A._setArrayType(makeConstList([0, 0, 32722, 12287, 65534, 34815, 65534, 18431]), type$.JSArray_int);
    B.List_XRg0 = A._setArrayType(makeConstList([0, 0, 32722, 12287, 65535, 34815, 65534, 18431]), type$.JSArray_int);
    B.List_XRg = A._setArrayType(makeConstList([0, 0, 65490, 12287, 65535, 34815, 65534, 18431]), type$.JSArray_int);
    B.List_YmH = A._setArrayType(makeConstList([0, 0, 32776, 33792, 1, 10240, 0, 0]), type$.JSArray_int);
    B.List_cUt = A._setArrayType(makeConstList([B.CalculationOperator_IyK0, B.CalculationOperator_2bx0, B.CalculationOperator_jFr0, B.CalculationOperator_OvN0]), A.findType("JSArray<CalculationOperator0>"));
    B.List_ejq = A._setArrayType(makeConstList([0, 0, 32754, 11263, 65534, 34815, 65534, 18431]), type$.JSArray_int);
    B.List_empty11 = A._setArrayType(makeConstList([]), type$.JSArray_Argument);
    B.List_empty22 = A._setArrayType(makeConstList([]), type$.JSArray_Argument_2);
    B.List_empty24 = A._setArrayType(makeConstList([]), type$.JSArray_AsyncCallable_2);
    B.List_empty25 = A._setArrayType(makeConstList([]), type$.JSArray_AsyncImporter);
    B.List_empty2 = A._setArrayType(makeConstList([]), type$.JSArray_ComplexSelector);
    B.List_empty15 = A._setArrayType(makeConstList([]), type$.JSArray_ComplexSelector_2);
    B.List_empty0 = A._setArrayType(makeConstList([]), type$.JSArray_ComplexSelectorComponent);
    B.List_empty13 = A._setArrayType(makeConstList([]), type$.JSArray_ComplexSelectorComponent_2);
    B.List_empty10 = A._setArrayType(makeConstList([]), type$.JSArray_ConfiguredVariable);
    B.List_empty21 = A._setArrayType(makeConstList([]), type$.JSArray_ConfiguredVariable_2);
    B.List_empty3 = A._setArrayType(makeConstList([]), type$.JSArray_CssNode);
    B.List_empty16 = A._setArrayType(makeConstList([]), type$.JSArray_CssNode_2);
    B.List_empty1 = A._setArrayType(makeConstList([]), type$.JSArray_CssValue_Combinator);
    B.List_empty14 = A._setArrayType(makeConstList([]), type$.JSArray_CssValue_Combinator_2);
    B.List_empty9 = A._setArrayType(makeConstList([]), type$.JSArray_Expression);
    B.List_empty20 = A._setArrayType(makeConstList([]), type$.JSArray_Expression_2);
    B.List_empty5 = A._setArrayType(makeConstList([]), type$.JSArray_Extension);
    B.List_empty17 = A._setArrayType(makeConstList([]), type$.JSArray_Extension_2);
    B.List_empty23 = A._setArrayType(makeConstList([]), type$.JSArray_Importer);
    B.List_empty7 = A._setArrayType(makeConstList([]), A.findType("JSArray<Module0<0&>>"));
    B.List_empty18 = A._setArrayType(makeConstList([]), A.findType("JSArray<Module1<0&>>"));
    B.List_empty12 = A._setArrayType(makeConstList([]), type$.JSArray_Statement);
    B.List_empty = A._setArrayType(makeConstList([]), type$.JSArray_String);
    B.List_empty8 = A._setArrayType(makeConstList([]), type$.JSArray_Value);
    B.List_empty19 = A._setArrayType(makeConstList([]), type$.JSArray_Value_2);
    B.List_empty4 = A._setArrayType(makeConstList([]), type$.JSArray_int);
    B.List_empty6 = A._setArrayType(makeConstList([]), type$.JSArray_dynamic);
    B.Object_gR2 = {em: 0, rem: 1, ex: 2, rex: 3, cap: 4, rcap: 5, ch: 6, rch: 7, ic: 8, ric: 9, lh: 10, rlh: 11, vw: 12, lvw: 13, svw: 14, dvw: 15, vh: 16, lvh: 17, svh: 18, dvh: 19, vi: 20, lvi: 21, svi: 22, dvi: 23, vb: 24, lvb: 25, svb: 26, dvb: 27, vmin: 28, lvmin: 29, svmin: 30, dvmin: 31, vmax: 32, lvmax: 33, svmax: 34, dvmax: 35, cqw: 36, cqh: 37, cqi: 38, cqb: 39, cqmin: 40, cqmax: 41, cm: 42, mm: 43, q: 44, in: 45, pt: 46, pc: 47, px: 48};
    B.Set_UGQ3 = new A.ConstantStringSet(B.Object_gR2, 49, type$.ConstantStringSet_String);
    B.Object_wEo = {deg: 0, grad: 1, rad: 2, turn: 3};
    B.Set_gf1m2 = new A.ConstantStringSet(B.Object_wEo, 4, type$.ConstantStringSet_String);
    B.Object_s_0_ms_1 = {s: 0, ms: 1};
    B.Set_23h = new A.ConstantStringSet(B.Object_s_0_ms_1, 2, type$.ConstantStringSet_String);
    B.Object_hz_0_khz_1 = {hz: 0, khz: 1};
    B.Set_AKW81 = new A.ConstantStringSet(B.Object_hz_0_khz_1, 2, type$.ConstantStringSet_String);
    B.Object_f7G = {dpi: 0, dpcm: 1, dppx: 2};
    B.Set_wDQui = new A.ConstantStringSet(B.Object_f7G, 3, type$.ConstantStringSet_String);
    B.List_gyp = A._setArrayType(makeConstList([B.Set_UGQ3, B.Set_gf1m2, B.Set_23h, B.Set_AKW81, B.Set_wDQui]), A.findType("JSArray<Set<String>>"));
    B.List_oFp = A._setArrayType(makeConstList([0, 0, 65490, 45055, 65535, 34815, 65534, 18431]), type$.JSArray_int);
    B.List_yzX = A._setArrayType(makeConstList([0, 0, 27858, 1023, 65534, 51199, 65535, 32767]), type$.JSArray_int);
    B.Map_empty7 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Module0<AsyncCallable>,List<CssComment>>"));
    B.Map_empty0 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Module0<Callable0>,List<CssComment>>"));
    B.Map_empty2 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Module0<0&>,List<CssComment>>"));
    B.Map_empty15 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Module1<AsyncCallable0>,List<CssComment0>>"));
    B.Map_empty9 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Module1<Callable>,List<CssComment0>>"));
    B.Map_empty11 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Module1<0&>,List<CssComment0>>"));
    B.Map_empty4 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,AstNode>"));
    B.Map_empty12 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,AstNode0>"));
    B.Map_empty6 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Expression>"));
    B.Map_empty14 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Expression0>"));
    B.Map_empty8 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Module0<AsyncCallable>>"));
    B.Map_empty1 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Module0<Callable0>>"));
    B.Map_empty16 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Module1<AsyncCallable0>>"));
    B.Map_empty10 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Module1<Callable>>"));
    B.Map_empty5 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Value>"));
    B.Map_empty13 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String,Value0>"));
    B.Map_empty3 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Symbol0,@>"));
    B.Map_empty = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<String?,String>"));
    B.Object_UMI = {in: 0, cm: 1, pc: 2, mm: 3, q: 4, pt: 5, px: 6, deg: 7, grad: 8, rad: 9, turn: 10, s: 11, ms: 12, Hz: 13, kHz: 14, dpi: 15, dpcm: 16, dppx: 17};
    B.Object_MIo = {in: 0, cm: 1, pc: 2, mm: 3, q: 4, pt: 5, px: 6};
    B.Map_scaO3 = new A.ConstantStringMap(B.Object_MIo, [1, 0.39370078740157477, 0.16666666666666666, 0.03937007874015748, 0.00984251968503937, 0.013888888888888888, 0.010416666666666666], type$.ConstantStringMap_String_double);
    B.Map_scsoL = new A.ConstantStringMap(B.Object_MIo, [2.54, 1, 0.42333333333333334, 0.1, 0.025, 0.035277777777777776, 0.026458333333333334], type$.ConstantStringMap_String_double);
    B.Map_sci7B = new A.ConstantStringMap(B.Object_MIo, [6, 2.3622047244094486, 1, 0.2362204724409449, 0.05905511811023623, 0.08333333333333333, 0.0625], type$.ConstantStringMap_String_double);
    B.Map_sc8pl = new A.ConstantStringMap(B.Object_MIo, [25.4, 10, 4.233333333333333, 1, 0.25, 0.35277777777777775, 0.26458333333333334], type$.ConstantStringMap_String_double);
    B.Map_sckr3 = new A.ConstantStringMap(B.Object_MIo, [101.6, 40, 16.933333333333334, 4, 1, 1.411111111111111, 1.0583333333333333], type$.ConstantStringMap_String_double);
    B.Map_scaBQ = new A.ConstantStringMap(B.Object_MIo, [72, 28.346456692913385, 12, 2.834645669291339, 0.7086614173228347, 1, 0.75], type$.ConstantStringMap_String_double);
    B.Map_scGVy = new A.ConstantStringMap(B.Object_MIo, [96, 37.79527559055118, 16, 3.7795275590551185, 0.9448818897637796, 1.3333333333333333, 1], type$.ConstantStringMap_String_double);
    B.Map_ia0 = new A.ConstantStringMap(B.Object_wEo, [1, 0.9, 57.29577951308232, 360], type$.ConstantStringMap_String_double);
    B.Map_iaijl = new A.ConstantStringMap(B.Object_wEo, [1.1111111111111112, 1, 63.66197723675813, 400], type$.ConstantStringMap_String_double);
    B.Map_iaMqi = new A.ConstantStringMap(B.Object_wEo, [0.017453292519943295, 0.015707963267948967, 1, 6.283185307179586], type$.ConstantStringMap_String_double);
    B.Map_iaJel = new A.ConstantStringMap(B.Object_wEo, [0.002777777777777778, 0.0025, 0.15915494309189535, 1], type$.ConstantStringMap_String_double);
    B.Map_V0M2a = new A.ConstantStringMap(B.Object_s_0_ms_1, [1, 0.001], type$.ConstantStringMap_String_double);
    B.Map_V0nPR = new A.ConstantStringMap(B.Object_s_0_ms_1, [1000, 1], type$.ConstantStringMap_String_double);
    B.Object_Hz_0_kHz_1 = {Hz: 0, kHz: 1};
    B.Map_8secN = new A.ConstantStringMap(B.Object_Hz_0_kHz_1, [1, 1000], type$.ConstantStringMap_String_double);
    B.Map_8sxHw = new A.ConstantStringMap(B.Object_Hz_0_kHz_1, [0.001, 1], type$.ConstantStringMap_String_double);
    B.Map_lyv9F = new A.ConstantStringMap(B.Object_f7G, [1, 2.54, 96], type$.ConstantStringMap_String_double);
    B.Map_lyhdB = new A.ConstantStringMap(B.Object_f7G, [0.39370078740157477, 1, 37.79527559055118], type$.ConstantStringMap_String_double);
    B.Map_lyCkv = new A.ConstantStringMap(B.Object_f7G, [0.010416666666666666, 0.026458333333333334, 1], type$.ConstantStringMap_String_double);
    B.Map_nfuzN = new A.ConstantStringMap(B.Object_UMI, [B.Map_scaO3, B.Map_scsoL, B.Map_sci7B, B.Map_sc8pl, B.Map_sckr3, B.Map_scaBQ, B.Map_scGVy, B.Map_ia0, B.Map_iaijl, B.Map_iaMqi, B.Map_iaJel, B.Map_V0M2a, B.Map_V0nPR, B.Map_8secN, B.Map_8sxHw, B.Map_lyv9F, B.Map_lyhdB, B.Map_lyCkv], A.findType("ConstantStringMap<String,Map<String,double>>"));
    B.Object_kaS = {length: 0, angle: 1, time: 2, frequency: 3, "pixel density": 4};
    B.List_scn = A._setArrayType(makeConstList(["in", "cm", "pc", "mm", "q", "pt", "px"]), type$.JSArray_String);
    B.List_deg_grad_rad_turn = A._setArrayType(makeConstList(["deg", "grad", "rad", "turn"]), type$.JSArray_String);
    B.List_s_ms = A._setArrayType(makeConstList(["s", "ms"]), type$.JSArray_String);
    B.List_Hz_kHz = A._setArrayType(makeConstList(["Hz", "kHz"]), type$.JSArray_String);
    B.List_dpi_dpcm_dppx = A._setArrayType(makeConstList(["dpi", "dpcm", "dppx"]), type$.JSArray_String);
    B.Map_ws7dy = new A.ConstantStringMap(B.Object_kaS, [B.List_scn, B.List_deg_grad_rad_turn, B.List_s_ms, B.List_Hz_kHz, B.List_dpi_dpcm_dppx], A.findType("ConstantStringMap<String,List<String>>"));
    B.OptionType_YwU = new A.OptionType("OptionType.single");
    B.OptionType_nMZ = new A.OptionType("OptionType.flag");
    B.OptionType_qyr = new A.OptionType("OptionType.multiple");
    B.OutputStyle_0 = new A.OutputStyle("expanded");
    B.OutputStyle_00 = new A.OutputStyle0("expanded");
    B.OutputStyle_1 = new A.OutputStyle("compressed");
    B.OutputStyle_10 = new A.OutputStyle0("compressed");
    B.Map_empty19 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<SelectorList,Box<SelectorList>>"));
    B.Record2_EmptyExtensionStore_Map_empty = new A._Record_2(B.C_EmptyExtensionStore, B.Map_empty19);
    B.Map_empty20 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<SelectorList0,Box0<SelectorList0>>"));
    B.Record2_EmptyExtensionStore_Map_empty0 = new A._Record_2(B.C_EmptyExtensionStore0, B.Map_empty20);
    B.SassBoolean_false = new A.SassBoolean(false);
    B.SassBoolean_false0 = new A.SassBoolean0(false);
    B.SassBoolean_true = new A.SassBoolean(true);
    B.SassBoolean_true0 = new A.SassBoolean0(true);
    B.SassList_Sof = new A.SassList(B.List_empty8, B.ListSeparator_rXA, false);
    B.SassList_Sof0 = new A.SassList(B.List_empty8, B.ListSeparator_rXA, true);
    B.SassList_Sof1 = new A.SassList0(B.List_empty19, B.ListSeparator_rXA0, false);
    B.SassList_Sof2 = new A.SassList0(B.List_empty19, B.ListSeparator_rXA0, true);
    B.SassList_nj9 = new A.SassList0(B.List_empty19, B.ListSeparator_undecided_null_undecided0, false);
    B.Map_empty21 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Value,Value>"));
    B.SassMap_Map_empty = new A.SassMap(B.Map_empty21);
    B.Map_empty22 = new A.ConstantStringMap(B.Object_empty, [], A.findType("ConstantStringMap<Value0,Value0>"));
    B.SassMap_Map_empty0 = new A.SassMap0(B.Map_empty22);
    B.Set_FIwG4 = new A.GeneralConstantSet([B.BinaryOperator_qN2, B.BinaryOperator_t8B, B.BinaryOperator_anB, B.BinaryOperator_olz], A.findType("GeneralConstantSet<BinaryOperator>"));
    B.Set_FIwG40 = new A.GeneralConstantSet([B.BinaryOperator_qN20, B.BinaryOperator_t8B0, B.BinaryOperator_anB0, B.BinaryOperator_olz0], A.findType("GeneralConstantSet<BinaryOperator0>"));
    B.Object_sd2 = {calc: 0, clamp: 1, hypot: 2, sin: 3, cos: 4, tan: 5, asin: 6, acos: 7, atan: 8, sqrt: 9, exp: 10, sign: 11, mod: 12, rem: 13, atan2: 14, pow: 15, log: 16};
    B.Set_WfnXb = new A.ConstantStringSet(B.Object_sd2, 17, type$.ConstantStringSet_String);
    B.Object_C0t = {is: 0, matches: 1, where: 2};
    B.Set_aAXJu = new A.ConstantStringSet(B.Object_C0t, 3, type$.ConstantStringSet_String);
    B.Set_empty1 = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<CssMediaQuery>"));
    B.Set_empty5 = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<CssMediaQuery0>"));
    B.Set_empty2 = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<Module0<AsyncCallable>>"));
    B.Set_empty0 = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<Module0<Callable0>>"));
    B.Set_empty6 = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<Module1<AsyncCallable0>>"));
    B.Set_empty4 = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<Module1<Callable>>"));
    B.Set_empty7 = new A.ConstantStringSet(B.Object_empty, 0, type$.ConstantStringSet_String);
    B.Set_empty3 = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<StylesheetNode>"));
    B.Set_empty = new A.ConstantStringSet(B.Object_empty, 0, A.findType("ConstantStringSet<Uri>"));
    B.StderrLogger_false = new A.StderrLogger(false);
    B.StderrLogger_false0 = new A.StderrLogger0(false);
    B.Symbol__containingUrl = new A.Symbol("_containingUrl");
    B.Symbol__evaluationContext = new A.Symbol("_evaluationContext");
    B.Symbol__extensions = new A.Symbol("_extensions");
    B.Symbol__inImportRule = new A.Symbol("_inImportRule");
    B.Symbol__none = new A.Symbol("_none");
    B.Symbol__sourceSpecificity = new A.Symbol("_sourceSpecificity");
    B.Symbol_call = new A.Symbol("call");
    B.Syntax_CSS_css = new A.Syntax("CSS", "css");
    B.Syntax_CSS_css0 = new A.Syntax0("CSS", "css");
    B.Syntax_SCSS_scss = new A.Syntax("SCSS", "scss");
    B.Syntax_SCSS_scss0 = new A.Syntax0("SCSS", "scss");
    B.Syntax_Sass_sass = new A.Syntax("Sass", "sass");
    B.Syntax_Sass_sass0 = new A.Syntax0("Sass", "sass");
    B.Type_ByteBuffer_RkP = A.typeLiteral("ByteBuffer");
    B.Type_ByteData_zNC = A.typeLiteral("ByteData");
    B.Type_Float32List_LB7 = A.typeLiteral("Float32List");
    B.Type_Float64List_LB7 = A.typeLiteral("Float64List");
    B.Type_Int16List_uXf = A.typeLiteral("Int16List");
    B.Type_Int32List_O50 = A.typeLiteral("Int32List");
    B.Type_Int8List_ekJ = A.typeLiteral("Int8List");
    B.Type_Object_xQ6 = A.typeLiteral("Object");
    B.Type_Uint16List_2bx = A.typeLiteral("Uint16List");
    B.Type_Uint32List_2bx = A.typeLiteral("Uint32List");
    B.Type_Uint8ClampedList_Jik = A.typeLiteral("Uint8ClampedList");
    B.Type_Uint8List_WLA = A.typeLiteral("Uint8List");
    B.UnaryOperator_Ix1 = new A.UnaryOperator("divide", "/", "divide");
    B.UnaryOperator_Ix10 = new A.UnaryOperator0("divide", "/", "divide");
    B.UnaryOperator_TLI = new A.UnaryOperator("minus", "-", "minus");
    B.UnaryOperator_TLI0 = new A.UnaryOperator0("minus", "-", "minus");
    B.UnaryOperator_gg4 = new A.UnaryOperator("plus", "+", "plus");
    B.UnaryOperator_gg40 = new A.UnaryOperator0("plus", "+", "plus");
    B.UnaryOperator_not_not_not = new A.UnaryOperator("not", "not", "not");
    B.UnaryOperator_not_not_not0 = new A.UnaryOperator0("not", "not", "not");
    B.Utf8Decoder_false = new A.Utf8Decoder(false);
    B._ColorFormatEnum_hslFunction = new A._ColorFormatEnum("hslFunction");
    B._ColorFormatEnum_hslFunction0 = new A._ColorFormatEnum0("hslFunction");
    B._ColorFormatEnum_rgbFunction = new A._ColorFormatEnum("rgbFunction");
    B._ColorFormatEnum_rgbFunction0 = new A._ColorFormatEnum0("rgbFunction");
    B._IsBogusVisitor_false = new A._IsBogusVisitor(false);
    B._IsBogusVisitor_false0 = new A._IsBogusVisitor0(false);
    B._IsBogusVisitor_true = new A._IsBogusVisitor(true);
    B._IsBogusVisitor_true0 = new A._IsBogusVisitor0(true);
    B._IsInvisibleVisitor_false = new A._IsInvisibleVisitor0(false);
    B._IsInvisibleVisitor_false0 = new A._IsInvisibleVisitor2(false);
    B._IsInvisibleVisitor_false_false = new A._IsInvisibleVisitor(false, false);
    B._IsInvisibleVisitor_false_false0 = new A._IsInvisibleVisitor1(false, false);
    B._IsInvisibleVisitor_true = new A._IsInvisibleVisitor0(true);
    B._IsInvisibleVisitor_true0 = new A._IsInvisibleVisitor2(true);
    B._IsInvisibleVisitor_true_false = new A._IsInvisibleVisitor(true, false);
    B._IsInvisibleVisitor_true_false0 = new A._IsInvisibleVisitor1(true, false);
    B._IsInvisibleVisitor_true_true = new A._IsInvisibleVisitor(true, true);
    B._IsInvisibleVisitor_true_true0 = new A._IsInvisibleVisitor1(true, true);
    B._PathDirection_8Gl = new A._PathDirection("at root");
    B._PathDirection_988 = new A._PathDirection("below root");
    B._PathDirection_FIw = new A._PathDirection("reaches root");
    B._PathDirection_ZGD = new A._PathDirection("above root");
    B._PathRelation_different = new A._PathRelation("different");
    B._PathRelation_equal = new A._PathRelation("equal");
    B._PathRelation_inconclusive = new A._PathRelation("inconclusive");
    B._PathRelation_within = new A._PathRelation("within");
    B._SingletonCssMediaQueryMergeResult_0 = new A._SingletonCssMediaQueryMergeResult("empty");
    B._SingletonCssMediaQueryMergeResult_00 = new A._SingletonCssMediaQueryMergeResult0("empty");
    B._SingletonCssMediaQueryMergeResult_1 = new A._SingletonCssMediaQueryMergeResult("unrepresentable");
    B._SingletonCssMediaQueryMergeResult_10 = new A._SingletonCssMediaQueryMergeResult0("unrepresentable");
    B._StreamGroupState_canceled = new A._StreamGroupState("canceled");
    B._StreamGroupState_dormant = new A._StreamGroupState("dormant");
    B._StreamGroupState_listening = new A._StreamGroupState("listening");
    B._StreamGroupState_paused = new A._StreamGroupState("paused");
    B._StringStackTrace_3uE = new A._StringStackTrace("");
    B._ZoneFunction_3bB = new A._ZoneFunction(B.C__RootZone, A.async___rootCreatePeriodicTimer$closure());
    B._ZoneFunction_7G2 = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterBinaryCallback$closure());
    B._ZoneFunction_Eeh = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterUnaryCallback$closure());
    B._ZoneFunction_NMc = new A._ZoneFunction(B.C__RootZone, A.async___rootHandleUncaughtError$closure());
    B._ZoneFunction__RootZone__rootCreateTimer = new A._ZoneFunction(B.C__RootZone, A.async___rootCreateTimer$closure());
    B._ZoneFunction__RootZone__rootErrorCallback = new A._ZoneFunction(B.C__RootZone, A.async___rootErrorCallback$closure());
    B._ZoneFunction__RootZone__rootFork = new A._ZoneFunction(B.C__RootZone, A.async___rootFork$closure());
    B._ZoneFunction__RootZone__rootPrint = new A._ZoneFunction(B.C__RootZone, A.async___rootPrint$closure());
    B._ZoneFunction__RootZone__rootRegisterCallback = new A._ZoneFunction(B.C__RootZone, A.async___rootRegisterCallback$closure());
    B._ZoneFunction__RootZone__rootRun = new A._ZoneFunction(B.C__RootZone, A.async___rootRun$closure());
    B._ZoneFunction__RootZone__rootRunBinary = new A._ZoneFunction(B.C__RootZone, A.async___rootRunBinary$closure());
    B._ZoneFunction__RootZone__rootRunUnary = new A._ZoneFunction(B.C__RootZone, A.async___rootRunUnary$closure());
    B._ZoneFunction__RootZone__rootScheduleMicrotask = new A._ZoneFunction(B.C__RootZone, A.async___rootScheduleMicrotask$closure());
    B._ZoneSpecification_ALf = new A._ZoneSpecification(null, null, null, null, null, null, null, null, null, null, null, null, null);
  })();
  (function staticFields() {
    $._JS_INTEROP_INTERCEPTOR_TAG = null;
    $.toStringVisiting = A._setArrayType([], type$.JSArray_Object);
    $.printToZone = null;
    $.Primitives__identityHashCodeProperty = null;
    $.BoundClosure__receiverFieldNameCache = null;
    $.BoundClosure__interceptorFieldNameCache = null;
    $.getTagFunction = null;
    $.alternateTagFunction = null;
    $.prototypeForTagFunction = null;
    $.dispatchRecordsForInstanceTags = null;
    $.interceptorsForUncacheableTags = null;
    $.initNativeDispatchFlag = null;
    $._Record__computedFieldKeys = A._setArrayType([], A.findType("JSArray<List<Object>?>"));
    $._nextCallback = null;
    $._lastCallback = null;
    $._lastPriorityCallback = null;
    $._isInCallbackLoop = false;
    $.Zone__current = B.C__RootZone;
    $._RootZone__rootDelegate = null;
    $.Uri__cachedBaseString = "";
    $.Uri__cachedBaseUri = null;
    $._fs = null;
    $._currentUriBase = null;
    $._current = null;
    $._subselectorPseudos = A.LinkedHashSet_LinkedHashSet$_literal(["is", "matches", "where", "any", "nth-child", "nth-last-child"], type$.String);
    $._rootishPseudoClasses = A.LinkedHashSet_LinkedHashSet$_literal(["root", "scope", "host", "host-context"], type$.String);
    $._features = A.LinkedHashSet_LinkedHashSet$_literal(["global-variable-shadowing", "extend-selector-pseudoclass", "units-level-3", "at-error", "custom-property"], type$.String);
    $._realCaseCache = function() {
      var t1 = type$.String;
      return A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
    }();
    $._selectorPseudoClasses = A.LinkedHashSet_LinkedHashSet$_literal(["not", "is", "matches", "where", "current", "any", "has", "host", "host-context"], type$.String);
    $._selectorPseudoElements = A.LinkedHashSet_LinkedHashSet$_literal(["slotted"], type$.String);
    $._glyphs = B.C_UnicodeGlyphSet;
    $._rootishPseudoClasses0 = A.LinkedHashSet_LinkedHashSet$_literal(["root", "scope", "host", "host-context"], type$.String);
    $._realCaseCache0 = function() {
      var t1 = type$.String;
      return A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
    }();
    $._features0 = A.LinkedHashSet_LinkedHashSet$_literal(["global-variable-shadowing", "extend-selector-pseudoclass", "units-level-3", "at-error", "custom-property"], type$.String);
    $._selectorPseudoClasses0 = A.LinkedHashSet_LinkedHashSet$_literal(["not", "is", "matches", "where", "current", "any", "has", "host", "host-context"], type$.String);
    $._selectorPseudoElements0 = A.LinkedHashSet_LinkedHashSet$_literal(["slotted"], type$.String);
    $._subselectorPseudos0 = A.LinkedHashSet_LinkedHashSet$_literal(["is", "matches", "where", "any", "nth-child", "nth-last-child"], type$.String);
  })();
  (function lazyInitializers() {
    var _lazyFinal = hunkHelpers.lazyFinal,
      _lazy = hunkHelpers.lazy;
    _lazyFinal($, "DART_CLOSURE_PROPERTY_NAME", "$get$DART_CLOSURE_PROPERTY_NAME", () => A.getIsolateAffinityTag("_$dart_dartClosure"));
    _lazyFinal($, "nullFuture", "$get$nullFuture", () => B.C__RootZone.run$1$1(0, new A.nullFuture_closure(), A.findType("Future<Null>")));
    _lazyFinal($, "TypeErrorDecoder_noSuchMethodPattern", "$get$TypeErrorDecoder_noSuchMethodPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({
      toString: function() {
        return "$receiver$";
      }
    })));
    _lazyFinal($, "TypeErrorDecoder_notClosurePattern", "$get$TypeErrorDecoder_notClosurePattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn({$method$: null,
      toString: function() {
        return "$receiver$";
      }
    })));
    _lazyFinal($, "TypeErrorDecoder_nullCallPattern", "$get$TypeErrorDecoder_nullCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(null)));
    _lazyFinal($, "TypeErrorDecoder_nullLiteralCallPattern", "$get$TypeErrorDecoder_nullLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      var $argumentsExpr$ = "$arguments$";
      try {
        null.$method$($argumentsExpr$);
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "TypeErrorDecoder_undefinedCallPattern", "$get$TypeErrorDecoder_undefinedCallPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokeCallErrorOn(void 0)));
    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralCallPattern", "$get$TypeErrorDecoder_undefinedLiteralCallPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      var $argumentsExpr$ = "$arguments$";
      try {
        (void 0).$method$($argumentsExpr$);
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "TypeErrorDecoder_nullPropertyPattern", "$get$TypeErrorDecoder_nullPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(null)));
    _lazyFinal($, "TypeErrorDecoder_nullLiteralPropertyPattern", "$get$TypeErrorDecoder_nullLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      try {
        null.$method$;
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "TypeErrorDecoder_undefinedPropertyPattern", "$get$TypeErrorDecoder_undefinedPropertyPattern", () => A.TypeErrorDecoder_extractPattern(A.TypeErrorDecoder_provokePropertyErrorOn(void 0)));
    _lazyFinal($, "TypeErrorDecoder_undefinedLiteralPropertyPattern", "$get$TypeErrorDecoder_undefinedLiteralPropertyPattern", () => A.TypeErrorDecoder_extractPattern(function() {
      try {
        (void 0).$method$;
      } catch (e) {
        return e.message;
      }
    }()));
    _lazyFinal($, "_AsyncRun__scheduleImmediateClosure", "$get$_AsyncRun__scheduleImmediateClosure", () => A._AsyncRun__initializeScheduleImmediate());
    _lazyFinal($, "Future__nullFuture", "$get$Future__nullFuture", () => A.findType("_Future<Null>")._as($.$get$nullFuture()));
    _lazyFinal($, "Future__falseFuture", "$get$Future__falseFuture", () => A._Future$zoneValue(false, B.C__RootZone, type$.bool));
    _lazyFinal($, "_RootZone__rootMap", "$get$_RootZone__rootMap", () => {
      var t1 = type$.dynamic;
      return A.HashMap_HashMap(t1, t1);
    });
    _lazyFinal($, "Utf8Decoder__decoder", "$get$Utf8Decoder__decoder", () => new A.Utf8Decoder__decoder_closure().call$0());
    _lazyFinal($, "Utf8Decoder__decoderNonfatal", "$get$Utf8Decoder__decoderNonfatal", () => new A.Utf8Decoder__decoderNonfatal_closure().call$0());
    _lazyFinal($, "_Base64Decoder__inverseAlphabet", "$get$_Base64Decoder__inverseAlphabet", () => A.NativeInt8List__create1(A._ensureNativeList(A._setArrayType([-2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, 62, -2, 62, -2, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -2, -2, -2, -1, -2, -2, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -2, -2, -2, -2, 63, -2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -2, -2, -2, -2, -2], type$.JSArray_int))));
    _lazyFinal($, "_Uri__isWindowsCached", "$get$_Uri__isWindowsCached", () => typeof process != "undefined" && Object.prototype.toString.call(process) == "[object process]" && process.platform == "win32");
    _lazyFinal($, "_Uri__needsNoEncoding", "$get$_Uri__needsNoEncoding", () => A.RegExp_RegExp("^[\\-\\.0-9A-Z_a-z~]*$", false));
    _lazy($, "_hasErrorStackProperty", "$get$_hasErrorStackProperty", () => new Error().stack != void 0);
    _lazyFinal($, "_hashSeed", "$get$_hashSeed", () => A.objectHashCode(B.Type_Object_xQ6));
    _lazyFinal($, "_scannerTables", "$get$_scannerTables", () => A._createTables());
    _lazyFinal($, "Option__invalidChars", "$get$Option__invalidChars", () => A.RegExp_RegExp("[ \\t\\r\\n\"'\\\\/]", false));
    _lazyFinal($, "_isStrictMode", "$get$_isStrictMode", () => new A._isStrictMode_closure().call$0());
    _lazyFinal($, "alwaysValid", "$get$alwaysValid", () => new A.alwaysValid_closure());
    _lazyFinal($, "readline", "$get$readline", () => self.readline);
    _lazyFinal($, "windows", "$get$windows", () => A.Context_Context($.$get$Style_windows()));
    _lazyFinal($, "url", "$get$url", () => A.Context_Context($.$get$Style_url()));
    _lazyFinal($, "context", "$get$context", () => new A.Context($.$get$Style_platform(), null));
    _lazyFinal($, "Style_posix", "$get$Style_posix", () => new A.PosixStyle(A.RegExp_RegExp("/", false), A.RegExp_RegExp("[^/]$", false), A.RegExp_RegExp("^/", false)));
    _lazyFinal($, "Style_windows", "$get$Style_windows", () => new A.WindowsStyle(A.RegExp_RegExp("[/\\\\]", false), A.RegExp_RegExp("[^/\\\\]$", false), A.RegExp_RegExp("^(\\\\\\\\[^\\\\]+\\\\[^\\\\/]+|[a-zA-Z]:[/\\\\])", false), A.RegExp_RegExp("^[/\\\\](?![/\\\\])", false)));
    _lazyFinal($, "Style_url", "$get$Style_url", () => new A.UrlStyle(A.RegExp_RegExp("/", false), A.RegExp_RegExp("(^[a-zA-Z][-+.a-zA-Z\\d]*://|[^/])$", false), A.RegExp_RegExp("[a-zA-Z][-+.a-zA-Z\\d]*://[^/]*", false), A.RegExp_RegExp("^/", false)));
    _lazyFinal($, "Style_platform", "$get$Style_platform", () => A.Style__getPlatformStyle());
    _lazyFinal($, "startVersion", "$get$startVersion", () => A.RegExp_RegExp("^(\\d+)\\.(\\d+)\\.(\\d+)(-([0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*))?(\\+([0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*))?", false));
    _lazyFinal($, "completeVersion", "$get$completeVersion", () => A.RegExp_RegExp($.$get$startVersion().pattern + "$", false));
    _lazyFinal($, "IfExpression_declaration", "$get$IfExpression_declaration", () => A.ArgumentDeclaration_ArgumentDeclaration$parse(string$.x40funct, null));
    _lazyFinal($, "colorsByName", "$get$colorsByName", () => A.LinkedHashMap_LinkedHashMap$_literal(["yellowgreen", A.SassColor$rgb(154, 205, 50, 1), "yellow", A.SassColor$rgb(255, 255, 0, 1), "whitesmoke", A.SassColor$rgb(245, 245, 245, 1), "white", A.SassColor$rgb(255, 255, 255, 1), "wheat", A.SassColor$rgb(245, 222, 179, 1), "violet", A.SassColor$rgb(238, 130, 238, 1), "turquoise", A.SassColor$rgb(64, 224, 208, 1), "transparent", A.SassColor$rgb(0, 0, 0, 0), "tomato", A.SassColor$rgb(255, 99, 71, 1), "thistle", A.SassColor$rgb(216, 191, 216, 1), "teal", A.SassColor$rgb(0, 128, 128, 1), "tan", A.SassColor$rgb(210, 180, 140, 1), "steelblue", A.SassColor$rgb(70, 130, 180, 1), "springgreen", A.SassColor$rgb(0, 255, 127, 1), "snow", A.SassColor$rgb(255, 250, 250, 1), "slategrey", A.SassColor$rgb(112, 128, 144, 1), "slategray", A.SassColor$rgb(112, 128, 144, 1), "slateblue", A.SassColor$rgb(106, 90, 205, 1), "skyblue", A.SassColor$rgb(135, 206, 235, 1), "silver", A.SassColor$rgb(192, 192, 192, 1), "sienna", A.SassColor$rgb(160, 82, 45, 1), "seashell", A.SassColor$rgb(255, 245, 238, 1), "seagreen", A.SassColor$rgb(46, 139, 87, 1), "sandybrown", A.SassColor$rgb(244, 164, 96, 1), "salmon", A.SassColor$rgb(250, 128, 114, 1), "saddlebrown", A.SassColor$rgb(139, 69, 19, 1), "royalblue", A.SassColor$rgb(65, 105, 225, 1), "rosybrown", A.SassColor$rgb(188, 143, 143, 1), "red", A.SassColor$rgb(255, 0, 0, 1), "rebeccapurple", A.SassColor$rgb(102, 51, 153, 1), "purple", A.SassColor$rgb(128, 0, 128, 1), "powderblue", A.SassColor$rgb(176, 224, 230, 1), "plum", A.SassColor$rgb(221, 160, 221, 1), "pink", A.SassColor$rgb(255, 192, 203, 1), "peru", A.SassColor$rgb(205, 133, 63, 1), "peachpuff", A.SassColor$rgb(255, 218, 185, 1), "papayawhip", A.SassColor$rgb(255, 239, 213, 1), "palevioletred", A.SassColor$rgb(219, 112, 147, 1), "paleturquoise", A.SassColor$rgb(175, 238, 238, 1), "palegreen", A.SassColor$rgb(152, 251, 152, 1), "palegoldenrod", A.SassColor$rgb(238, 232, 170, 1), "orchid", A.SassColor$rgb(218, 112, 214, 1), "orangered", A.SassColor$rgb(255, 69, 0, 1), "orange", A.SassColor$rgb(255, 165, 0, 1), "olivedrab", A.SassColor$rgb(107, 142, 35, 1), "olive", A.SassColor$rgb(128, 128, 0, 1), "oldlace", A.SassColor$rgb(253, 245, 230, 1), "navy", A.SassColor$rgb(0, 0, 128, 1), "navajowhite", A.SassColor$rgb(255, 222, 173, 1), "moccasin", A.SassColor$rgb(255, 228, 181, 1), "mistyrose", A.SassColor$rgb(255, 228, 225, 1), "mintcream", A.SassColor$rgb(245, 255, 250, 1), "midnightblue", A.SassColor$rgb(25, 25, 112, 1), "mediumvioletred", A.SassColor$rgb(199, 21, 133, 1), "mediumturquoise", A.SassColor$rgb(72, 209, 204, 1), "mediumspringgreen", A.SassColor$rgb(0, 250, 154, 1), "mediumslateblue", A.SassColor$rgb(123, 104, 238, 1), "mediumseagreen", A.SassColor$rgb(60, 179, 113, 1), "mediumpurple", A.SassColor$rgb(147, 112, 219, 1), "mediumorchid", A.SassColor$rgb(186, 85, 211, 1), "mediumblue", A.SassColor$rgb(0, 0, 205, 1), "mediumaquamarine", A.SassColor$rgb(102, 205, 170, 1), "maroon", A.SassColor$rgb(128, 0, 0, 1), "magenta", A.SassColor$rgb(255, 0, 255, 1), "linen", A.SassColor$rgb(250, 240, 230, 1), "limegreen", A.SassColor$rgb(50, 205, 50, 1), "lime", A.SassColor$rgb(0, 255, 0, 1), "lightyellow", A.SassColor$rgb(255, 255, 224, 1), "lightsteelblue", A.SassColor$rgb(176, 196, 222, 1), "lightslategrey", A.SassColor$rgb(119, 136, 153, 1), "lightslategray", A.SassColor$rgb(119, 136, 153, 1), "lightskyblue", A.SassColor$rgb(135, 206, 250, 1), "lightseagreen", A.SassColor$rgb(32, 178, 170, 1), "lightsalmon", A.SassColor$rgb(255, 160, 122, 1), "lightpink", A.SassColor$rgb(255, 182, 193, 1), "lightgrey", A.SassColor$rgb(211, 211, 211, 1), "lightgreen", A.SassColor$rgb(144, 238, 144, 1), "lightgray", A.SassColor$rgb(211, 211, 211, 1), "lightgoldenrodyellow", A.SassColor$rgb(250, 250, 210, 1), "lightcyan", A.SassColor$rgb(224, 255, 255, 1), "lightcoral", A.SassColor$rgb(240, 128, 128, 1), "lightblue", A.SassColor$rgb(173, 216, 230, 1), "lemonchiffon", A.SassColor$rgb(255, 250, 205, 1), "lawngreen", A.SassColor$rgb(124, 252, 0, 1), "lavenderblush", A.SassColor$rgb(255, 240, 245, 1), "lavender", A.SassColor$rgb(230, 230, 250, 1), "khaki", A.SassColor$rgb(240, 230, 140, 1), "ivory", A.SassColor$rgb(255, 255, 240, 1), "indigo", A.SassColor$rgb(75, 0, 130, 1), "indianred", A.SassColor$rgb(205, 92, 92, 1), "hotpink", A.SassColor$rgb(255, 105, 180, 1), "honeydew", A.SassColor$rgb(240, 255, 240, 1), "grey", A.SassColor$rgb(128, 128, 128, 1), "greenyellow", A.SassColor$rgb(173, 255, 47, 1), "green", A.SassColor$rgb(0, 128, 0, 1), "gray", A.SassColor$rgb(128, 128, 128, 1), "goldenrod", A.SassColor$rgb(218, 165, 32, 1), "gold", A.SassColor$rgb(255, 215, 0, 1), "ghostwhite", A.SassColor$rgb(248, 248, 255, 1), "gainsboro", A.SassColor$rgb(220, 220, 220, 1), "fuchsia", A.SassColor$rgb(255, 0, 255, 1), "forestgreen", A.SassColor$rgb(34, 139, 34, 1), "floralwhite", A.SassColor$rgb(255, 250, 240, 1), "firebrick", A.SassColor$rgb(178, 34, 34, 1), "dodgerblue", A.SassColor$rgb(30, 144, 255, 1), "dimgrey", A.SassColor$rgb(105, 105, 105, 1), "dimgray", A.SassColor$rgb(105, 105, 105, 1), "deepskyblue", A.SassColor$rgb(0, 191, 255, 1), "deeppink", A.SassColor$rgb(255, 20, 147, 1), "darkviolet", A.SassColor$rgb(148, 0, 211, 1), "darkturquoise", A.SassColor$rgb(0, 206, 209, 1), "darkslategrey", A.SassColor$rgb(47, 79, 79, 1), "darkslategray", A.SassColor$rgb(47, 79, 79, 1), "darkslateblue", A.SassColor$rgb(72, 61, 139, 1), "darkseagreen", A.SassColor$rgb(143, 188, 143, 1), "darksalmon", A.SassColor$rgb(233, 150, 122, 1), "darkred", A.SassColor$rgb(139, 0, 0, 1), "darkorchid", A.SassColor$rgb(153, 50, 204, 1), "darkorange", A.SassColor$rgb(255, 140, 0, 1), "darkolivegreen", A.SassColor$rgb(85, 107, 47, 1), "darkmagenta", A.SassColor$rgb(139, 0, 139, 1), "darkkhaki", A.SassColor$rgb(189, 183, 107, 1), "darkgrey", A.SassColor$rgb(169, 169, 169, 1), "darkgreen", A.SassColor$rgb(0, 100, 0, 1), "darkgray", A.SassColor$rgb(169, 169, 169, 1), "darkgoldenrod", A.SassColor$rgb(184, 134, 11, 1), "darkcyan", A.SassColor$rgb(0, 139, 139, 1), "darkblue", A.SassColor$rgb(0, 0, 139, 1), "cyan", A.SassColor$rgb(0, 255, 255, 1), "crimson", A.SassColor$rgb(220, 20, 60, 1), "cornsilk", A.SassColor$rgb(255, 248, 220, 1), "cornflowerblue", A.SassColor$rgb(100, 149, 237, 1), "coral", A.SassColor$rgb(255, 127, 80, 1), "chocolate", A.SassColor$rgb(210, 105, 30, 1), "chartreuse", A.SassColor$rgb(127, 255, 0, 1), "cadetblue", A.SassColor$rgb(95, 158, 160, 1), "burlywood", A.SassColor$rgb(222, 184, 135, 1), "brown", A.SassColor$rgb(165, 42, 42, 1), "blueviolet", A.SassColor$rgb(138, 43, 226, 1), "blue", A.SassColor$rgb(0, 0, 255, 1), "blanchedalmond", A.SassColor$rgb(255, 235, 205, 1), "black", A.SassColor$rgb(0, 0, 0, 1), "bisque", A.SassColor$rgb(255, 228, 196, 1), "beige", A.SassColor$rgb(245, 245, 220, 1), "azure", A.SassColor$rgb(240, 255, 255, 1), "aquamarine", A.SassColor$rgb(127, 255, 212, 1), "aqua", A.SassColor$rgb(0, 255, 255, 1), "antiquewhite", A.SassColor$rgb(250, 235, 215, 1), "aliceblue", A.SassColor$rgb(240, 248, 255, 1)], type$.String, type$.SassColor));
    _lazyFinal($, "namesByColor", "$get$namesByColor", () => {
      var $name, color,
        t1 = type$.SassColor,
        t2 = type$.String,
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
      for (t1 = A.MapExtensions_get_pairs($.$get$colorsByName(), t2, t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        $name = t2._0;
        color = t2._1;
        t3.$indexSet(0, color, $name);
      }
      return t3;
    });
    _lazyFinal($, "ExecutableOptions__separatorBar", "$get$ExecutableOptions__separatorBar", () => A.isWindows() ? "=" : "\u2501");
    _lazyFinal($, "ExecutableOptions__parser", "$get$ExecutableOptions__parser", () => new A.ExecutableOptions__parser_closure().call$0());
    _lazyFinal($, "globalFunctions", "$get$globalFunctions", () => {
      var t1 = type$.BuiltInCallable,
        t2 = A.List_List$of($.$get$global0(), true, t1);
      B.JSArray_methods.addAll$1(t2, $.$get$global1());
      B.JSArray_methods.addAll$1(t2, $.$get$global2());
      B.JSArray_methods.addAll$1(t2, $.$get$global3());
      B.JSArray_methods.addAll$1(t2, $.$get$global4());
      B.JSArray_methods.addAll$1(t2, $.$get$global5());
      B.JSArray_methods.addAll$1(t2, $.$get$global());
      t2.push(A.BuiltInCallable$function("if", "$condition, $if-true, $if-false", new A.globalFunctions_closure(), null));
      return A.UnmodifiableListView$(t2, t1);
    });
    _lazyFinal($, "coreModules", "$get$coreModules", () => A.UnmodifiableListView$(A._setArrayType([$.$get$module(), $.$get$module0(), $.$get$module1(), $.$get$module2(), $.$get$module3(), $.$get$module4()], A.findType("JSArray<BuiltInModule<Callable0>>")), type$.BuiltInModule_Callable));
    _lazyFinal($, "_microsoftFilterStart", "$get$_microsoftFilterStart", () => A.RegExp_RegExp("^[a-zA-Z]+\\s*=", false));
    _lazyFinal($, "global", "$get$global0", () => {
      var _s27_ = "$red, $green, $blue, $alpha",
        _s19_ = "$red, $green, $blue",
        _s37_ = "$hue, $saturation, $lightness, $alpha",
        _s29_ = "$hue, $saturation, $lightness",
        _s17_ = "$hue, $saturation",
        _s15_ = "$color, $amount",
        t1 = type$.String,
        t2 = type$.Value_Function_List_Value;
      return A.UnmodifiableListView$(A._setArrayType([$.$get$_red(), $.$get$_green(), $.$get$_blue(), $.$get$_mix(), A.BuiltInCallable$overloadedFunction("rgb", A.LinkedHashMap_LinkedHashMap$_literal([_s27_, new A.global_closure0(), _s19_, new A.global_closure1(), "$color, $alpha", new A.global_closure2(), "$channels", new A.global_closure3()], t1, t2)), A.BuiltInCallable$overloadedFunction("rgba", A.LinkedHashMap_LinkedHashMap$_literal([_s27_, new A.global_closure4(), _s19_, new A.global_closure5(), "$color, $alpha", new A.global_closure6(), "$channels", new A.global_closure7()], t1, t2)), A._function4("invert", "$color, $weight: 100%", new A.global_closure8()), $.$get$_hue(), $.$get$_saturation(), $.$get$_lightness(), $.$get$_complement(), A.BuiltInCallable$overloadedFunction("hsl", A.LinkedHashMap_LinkedHashMap$_literal([_s37_, new A.global_closure9(), _s29_, new A.global_closure10(), _s17_, new A.global_closure11(), "$channels", new A.global_closure12()], t1, t2)), A.BuiltInCallable$overloadedFunction("hsla", A.LinkedHashMap_LinkedHashMap$_literal([_s37_, new A.global_closure13(), _s29_, new A.global_closure14(), _s17_, new A.global_closure15(), "$channels", new A.global_closure16()], t1, t2)), A._function4("grayscale", "$color", new A.global_closure17()), A._function4("adjust-hue", "$color, $degrees", new A.global_closure18()), A._function4("lighten", _s15_, new A.global_closure19()), A._function4("darken", _s15_, new A.global_closure20()), A.BuiltInCallable$overloadedFunction("saturate", A.LinkedHashMap_LinkedHashMap$_literal(["$amount", new A.global_closure21(), "$color, $amount", new A.global_closure22()], t1, t2)), A._function4("desaturate", _s15_, new A.global_closure23()), A._function4("opacify", _s15_, A.color0___opacify$closure()), A._function4("fade-in", _s15_, A.color0___opacify$closure()), A._function4("transparentize", _s15_, A.color0___transparentize$closure()), A._function4("fade-out", _s15_, A.color0___transparentize$closure()), A.BuiltInCallable$overloadedFunction("alpha", A.LinkedHashMap_LinkedHashMap$_literal(["$color", new A.global_closure24(), "$args...", new A.global_closure25()], t1, t2)), A._function4("opacity", "$color", new A.global_closure26()), $.$get$_ieHexStr(), $.$get$_adjust().withName$1("adjust-color"), $.$get$_scale().withName$1("scale-color"), $.$get$_change().withName$1("change-color")], type$.JSArray_BuiltInCallable), type$.BuiltInCallable);
    });
    _lazyFinal($, "module", "$get$module", () => {
      var _s9_ = "lightness",
        _s10_ = "saturation",
        _s6_ = "$color", _s5_ = "alpha",
        t1 = type$.String,
        t2 = type$.Value_Function_List_Value;
      return A.BuiltInModule$("color", A._setArrayType([$.$get$_red(), $.$get$_green(), $.$get$_blue(), $.$get$_mix(), A._function4("invert", "$color, $weight: 100%", new A.module_closure1()), $.$get$_hue(), $.$get$_saturation(), $.$get$_lightness(), $.$get$_complement(), A._removedColorFunction("adjust-hue", "hue", false), A._removedColorFunction("lighten", _s9_, false), A._removedColorFunction("darken", _s9_, true), A._removedColorFunction("saturate", _s10_, false), A._removedColorFunction("desaturate", _s10_, true), A._function4("grayscale", _s6_, new A.module_closure2()), A.BuiltInCallable$overloadedFunction("hwb", A.LinkedHashMap_LinkedHashMap$_literal(["$hue, $whiteness, $blackness, $alpha: 1", new A.module_closure3(), "$channels", new A.module_closure4()], t1, t2)), A._function4("whiteness", _s6_, new A.module_closure5()), A._function4("blackness", _s6_, new A.module_closure6()), A._removedColorFunction("opacify", _s5_, false), A._removedColorFunction("fade-in", _s5_, false), A._removedColorFunction("transparentize", _s5_, true), A._removedColorFunction("fade-out", _s5_, true), A.BuiltInCallable$overloadedFunction(_s5_, A.LinkedHashMap_LinkedHashMap$_literal(["$color", new A.module_closure7(), "$args...", new A.module_closure8()], t1, t2)), A._function4("opacity", _s6_, new A.module_closure9()), $.$get$_adjust(), $.$get$_scale(), $.$get$_change(), $.$get$_ieHexStr()], type$.JSArray_Callable), null, null, type$.Callable);
    });
    _lazyFinal($, "_red", "$get$_red", () => A._function4("red", "$color", new A._red_closure()));
    _lazyFinal($, "_green", "$get$_green", () => A._function4("green", "$color", new A._green_closure()));
    _lazyFinal($, "_blue", "$get$_blue", () => A._function4("blue", "$color", new A._blue_closure()));
    _lazyFinal($, "_mix", "$get$_mix", () => A._function4("mix", "$color1, $color2, $weight: 50%", new A._mix_closure()));
    _lazyFinal($, "_hue", "$get$_hue", () => A._function4("hue", "$color", new A._hue_closure()));
    _lazyFinal($, "_saturation", "$get$_saturation", () => A._function4("saturation", "$color", new A._saturation_closure()));
    _lazyFinal($, "_lightness", "$get$_lightness", () => A._function4("lightness", "$color", new A._lightness_closure()));
    _lazyFinal($, "_complement", "$get$_complement", () => A._function4("complement", "$color", new A._complement_closure()));
    _lazyFinal($, "_adjust", "$get$_adjust", () => A._function4("adjust", "$color, $kwargs...", new A._adjust_closure()));
    _lazyFinal($, "_scale", "$get$_scale", () => A._function4("scale", "$color, $kwargs...", new A._scale_closure()));
    _lazyFinal($, "_change", "$get$_change", () => A._function4("change", "$color, $kwargs...", new A._change_closure()));
    _lazyFinal($, "_ieHexStr", "$get$_ieHexStr", () => A._function4("ie-hex-str", "$color", new A._ieHexStr_closure()));
    _lazyFinal($, "global0", "$get$global1", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_length0(), $.$get$_nth(), $.$get$_setNth(), $.$get$_join(), $.$get$_append0(), $.$get$_zip(), $.$get$_index0(), $.$get$_isBracketed(), $.$get$_separator().withName$1("list-separator")], type$.JSArray_BuiltInCallable), type$.BuiltInCallable));
    _lazyFinal($, "module0", "$get$module0", () => A.BuiltInModule$("list", A._setArrayType([$.$get$_length0(), $.$get$_nth(), $.$get$_setNth(), $.$get$_join(), $.$get$_append0(), $.$get$_zip(), $.$get$_index0(), $.$get$_isBracketed(), $.$get$_separator(), $.$get$_slash()], type$.JSArray_Callable), null, null, type$.Callable));
    _lazyFinal($, "_length", "$get$_length0", () => A._function3("length", "$list", new A._length_closure0()));
    _lazyFinal($, "_nth", "$get$_nth", () => A._function3("nth", "$list, $n", new A._nth_closure()));
    _lazyFinal($, "_setNth", "$get$_setNth", () => A._function3("set-nth", "$list, $n, $value", new A._setNth_closure()));
    _lazyFinal($, "_join", "$get$_join", () => A._function3("join", string$.x24list1, new A._join_closure()));
    _lazyFinal($, "_append", "$get$_append0", () => A._function3("append", "$list, $val, $separator: auto", new A._append_closure0()));
    _lazyFinal($, "_zip", "$get$_zip", () => A._function3("zip", "$lists...", new A._zip_closure()));
    _lazyFinal($, "_index", "$get$_index0", () => A._function3("index", "$list, $value", new A._index_closure0()));
    _lazyFinal($, "_separator", "$get$_separator", () => A._function3("separator", "$list", new A._separator_closure()));
    _lazyFinal($, "_isBracketed", "$get$_isBracketed", () => A._function3("is-bracketed", "$list", new A._isBracketed_closure()));
    _lazyFinal($, "_slash", "$get$_slash", () => A._function3("slash", "$elements...", new A._slash_closure()));
    _lazyFinal($, "global1", "$get$global2", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_get().withName$1("map-get"), $.$get$_merge().withName$1("map-merge"), $.$get$_remove().withName$1("map-remove"), $.$get$_keys().withName$1("map-keys"), $.$get$_values().withName$1("map-values"), $.$get$_hasKey().withName$1("map-has-key")], type$.JSArray_BuiltInCallable), type$.BuiltInCallable));
    _lazyFinal($, "module1", "$get$module1", () => A.BuiltInModule$("map", A._setArrayType([$.$get$_get(), $.$get$_set(), $.$get$_merge(), $.$get$_remove(), $.$get$_keys(), $.$get$_values(), $.$get$_hasKey(), $.$get$_deepMerge(), $.$get$_deepRemove()], type$.JSArray_Callable), null, null, type$.Callable));
    _lazyFinal($, "_get", "$get$_get", () => A._function2("get", "$map, $key, $keys...", new A._get_closure()));
    _lazyFinal($, "_set", "$get$_set", () => A.BuiltInCallable$overloadedFunction("set", A.LinkedHashMap_LinkedHashMap$_literal(["$map, $key, $value", new A._set_closure(), "$map, $args...", new A._set_closure0()], type$.String, type$.Value_Function_List_Value)));
    _lazyFinal($, "_merge", "$get$_merge", () => A.BuiltInCallable$overloadedFunction("merge", A.LinkedHashMap_LinkedHashMap$_literal(["$map1, $map2", new A._merge_closure(), "$map1, $args...", new A._merge_closure0()], type$.String, type$.Value_Function_List_Value)));
    _lazyFinal($, "_deepMerge", "$get$_deepMerge", () => A._function2("deep-merge", "$map1, $map2", new A._deepMerge_closure()));
    _lazyFinal($, "_deepRemove", "$get$_deepRemove", () => A._function2("deep-remove", "$map, $key, $keys...", new A._deepRemove_closure()));
    _lazyFinal($, "_remove", "$get$_remove", () => A.BuiltInCallable$overloadedFunction("remove", A.LinkedHashMap_LinkedHashMap$_literal(["$map", new A._remove_closure(), "$map, $key, $keys...", new A._remove_closure0()], type$.String, type$.Value_Function_List_Value)));
    _lazyFinal($, "_keys", "$get$_keys", () => A._function2("keys", "$map", new A._keys_closure()));
    _lazyFinal($, "_values", "$get$_values", () => A._function2("values", "$map", new A._values_closure()));
    _lazyFinal($, "_hasKey", "$get$_hasKey", () => A._function2("has-key", "$map, $key, $keys...", new A._hasKey_closure()));
    _lazyFinal($, "global2", "$get$global3", () => A.UnmodifiableListView$(A._setArrayType([A._function1("abs", "$number", new A.global_closure()), $.$get$_ceil(), $.$get$_floor(), $.$get$_max(), $.$get$_min(), $.$get$_percentage(), $.$get$_randomFunction(), $.$get$_round(), $.$get$_unit(), $.$get$_compatible().withName$1("comparable"), $.$get$_isUnitless().withName$1("unitless")], type$.JSArray_BuiltInCallable), type$.BuiltInCallable));
    _lazyFinal($, "module2", "$get$module2", () => {
      var _null = null;
      return A.BuiltInModule$("math", A._setArrayType([A._numberFunction("abs", new A.module_closure0()), $.$get$_acos(), $.$get$_asin(), $.$get$_atan(), $.$get$_atan2(), $.$get$_ceil(), $.$get$_clamp(), $.$get$_cos(), $.$get$_compatible(), $.$get$_floor(), $.$get$_hypot(), $.$get$_isUnitless(), $.$get$_log(), $.$get$_max(), $.$get$_min(), $.$get$_percentage(), $.$get$_pow(), $.$get$_randomFunction(), $.$get$_round(), $.$get$_sin(), $.$get$_sqrt(), $.$get$_tan(), $.$get$_unit(), $.$get$_div()], type$.JSArray_Callable), _null, A.LinkedHashMap_LinkedHashMap$_literal(["e", A.SassNumber_SassNumber(2.718281828459045, _null), "pi", A.SassNumber_SassNumber(3.141592653589793, _null), "epsilon", A.SassNumber_SassNumber(2220446049250313e-31, _null), "max-safe-integer", A.SassNumber_SassNumber(9007199254740991, _null), "min-safe-integer", A.SassNumber_SassNumber(-9007199254740991, _null), "max-number", A.SassNumber_SassNumber(17976931348623157e292, _null), "min-number", A.SassNumber_SassNumber(5e-324, _null)], type$.String, type$.Value), type$.Callable);
    });
    _lazyFinal($, "_ceil", "$get$_ceil", () => A._numberFunction("ceil", new A._ceil_closure()));
    _lazyFinal($, "_clamp", "$get$_clamp", () => A._function1("clamp", "$min, $number, $max", new A._clamp_closure()));
    _lazyFinal($, "_floor", "$get$_floor", () => A._numberFunction("floor", new A._floor_closure()));
    _lazyFinal($, "_max", "$get$_max", () => A._function1("max", "$numbers...", new A._max_closure()));
    _lazyFinal($, "_min", "$get$_min", () => A._function1("min", "$numbers...", new A._min_closure()));
    _lazyFinal($, "_round", "$get$_round", () => A._numberFunction("round", new A._round_closure()));
    _lazyFinal($, "_hypot", "$get$_hypot", () => A._function1("hypot", "$numbers...", new A._hypot_closure()));
    _lazyFinal($, "_log", "$get$_log", () => A._function1("log", "$number, $base: null", new A._log_closure()));
    _lazyFinal($, "_pow", "$get$_pow", () => A._function1("pow", "$base, $exponent", new A._pow_closure()));
    _lazyFinal($, "_sqrt", "$get$_sqrt", () => A._singleArgumentMathFunc("sqrt", A.number0__sqrt$closure()));
    _lazyFinal($, "_acos", "$get$_acos", () => A._singleArgumentMathFunc("acos", A.number0__acos$closure()));
    _lazyFinal($, "_asin", "$get$_asin", () => A._singleArgumentMathFunc("asin", A.number0__asin$closure()));
    _lazyFinal($, "_atan", "$get$_atan", () => A._singleArgumentMathFunc("atan", A.number0__atan$closure()));
    _lazyFinal($, "_atan2", "$get$_atan2", () => A._function1("atan2", "$y, $x", new A._atan2_closure()));
    _lazyFinal($, "_cos", "$get$_cos", () => A._singleArgumentMathFunc("cos", A.number0__cos$closure()));
    _lazyFinal($, "_sin", "$get$_sin", () => A._singleArgumentMathFunc("sin", A.number0__sin$closure()));
    _lazyFinal($, "_tan", "$get$_tan", () => A._singleArgumentMathFunc("tan", A.number0__tan$closure()));
    _lazyFinal($, "_compatible", "$get$_compatible", () => A._function1("compatible", "$number1, $number2", new A._compatible_closure()));
    _lazyFinal($, "_isUnitless", "$get$_isUnitless", () => A._function1("is-unitless", "$number", new A._isUnitless_closure()));
    _lazyFinal($, "_unit", "$get$_unit", () => A._function1("unit", "$number", new A._unit_closure()));
    _lazyFinal($, "_percentage", "$get$_percentage", () => A._function1("percentage", "$number", new A._percentage_closure()));
    _lazyFinal($, "_random", "$get$_random0", () => A.Random_Random());
    _lazyFinal($, "_randomFunction", "$get$_randomFunction", () => A._function1("random", "$limit: null", new A._randomFunction_closure()));
    _lazyFinal($, "_div", "$get$_div", () => A._function1("div", "$number1, $number2", new A._div_closure()));
    _lazyFinal($, "global3", "$get$global", () => A.UnmodifiableListView$(A._setArrayType([A._function5("feature-exists", "$feature", new A.global_closure27()), A._function5("inspect", "$value", new A.global_closure28()), A._function5("type-of", "$value", new A.global_closure29()), A._function5("keywords", "$args", new A.global_closure30())], type$.JSArray_BuiltInCallable), type$.BuiltInCallable));
    _lazyFinal($, "local", "$get$local", () => A.UnmodifiableListView$(A._setArrayType([A._function5("calc-name", "$calc", new A.local_closure()), A._function5("calc-args", "$calc", new A.local_closure0()), A._function5("accepts-content", "$mixin", new A.local_closure1())], type$.JSArray_BuiltInCallable), type$.BuiltInCallable));
    _lazyFinal($, "global4", "$get$global4", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_isSuperselector(), $.$get$_simpleSelectors(), $.$get$_parse().withName$1("selector-parse"), $.$get$_nest().withName$1("selector-nest"), $.$get$_append().withName$1("selector-append"), $.$get$_extend().withName$1("selector-extend"), $.$get$_replace().withName$1("selector-replace"), $.$get$_unify().withName$1("selector-unify")], type$.JSArray_BuiltInCallable), type$.BuiltInCallable));
    _lazyFinal($, "module3", "$get$module3", () => A.BuiltInModule$("selector", A._setArrayType([$.$get$_isSuperselector(), $.$get$_simpleSelectors(), $.$get$_parse(), $.$get$_nest(), $.$get$_append(), $.$get$_extend(), $.$get$_replace(), $.$get$_unify()], type$.JSArray_Callable), null, null, type$.Callable));
    _lazyFinal($, "_nest", "$get$_nest", () => A._function0("nest", "$selectors...", new A._nest_closure()));
    _lazyFinal($, "_append0", "$get$_append", () => A._function0("append", "$selectors...", new A._append_closure()));
    _lazyFinal($, "_extend", "$get$_extend", () => A._function0("extend", "$selector, $extendee, $extender", new A._extend_closure()));
    _lazyFinal($, "_replace", "$get$_replace", () => A._function0("replace", "$selector, $original, $replacement", new A._replace_closure()));
    _lazyFinal($, "_unify", "$get$_unify", () => A._function0("unify", "$selector1, $selector2", new A._unify_closure()));
    _lazyFinal($, "_isSuperselector", "$get$_isSuperselector", () => A._function0("is-superselector", "$super, $sub", new A._isSuperselector_closure()));
    _lazyFinal($, "_simpleSelectors", "$get$_simpleSelectors", () => A._function0("simple-selectors", "$selector", new A._simpleSelectors_closure()));
    _lazyFinal($, "_parse", "$get$_parse", () => A._function0("parse", "$selector", new A._parse_closure()));
    _lazyFinal($, "_random0", "$get$_random", () => A.Random_Random());
    _lazy($, "_previousUniqueId", "$get$_previousUniqueId", () => $.$get$_random().nextInt$1(A._asInt(A.pow(36, 6))));
    _lazyFinal($, "global5", "$get$global5", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_unquote(), $.$get$_quote(), $.$get$_toUpperCase(), $.$get$_toLowerCase(), $.$get$_uniqueId(), $.$get$_length().withName$1("str-length"), $.$get$_insert().withName$1("str-insert"), $.$get$_index().withName$1("str-index"), $.$get$_slice().withName$1("str-slice")], type$.JSArray_BuiltInCallable), type$.BuiltInCallable));
    _lazyFinal($, "module4", "$get$module4", () => A.BuiltInModule$("string", A._setArrayType([$.$get$_unquote(), $.$get$_quote(), $.$get$_toUpperCase(), $.$get$_toLowerCase(), $.$get$_length(), $.$get$_insert(), $.$get$_index(), $.$get$_slice(), $.$get$_uniqueId(), A._function("split", "$string, $separator, $limit: null", new A.module_closure())], type$.JSArray_Callable), null, null, type$.Callable));
    _lazyFinal($, "_unquote", "$get$_unquote", () => A._function("unquote", "$string", new A._unquote_closure()));
    _lazyFinal($, "_quote", "$get$_quote", () => A._function("quote", "$string", new A._quote_closure()));
    _lazyFinal($, "_length0", "$get$_length", () => A._function("length", "$string", new A._length_closure()));
    _lazyFinal($, "_insert", "$get$_insert", () => A._function("insert", "$string, $insert, $index", new A._insert_closure()));
    _lazyFinal($, "_index0", "$get$_index", () => A._function("index", "$string, $substring", new A._index_closure()));
    _lazyFinal($, "_slice", "$get$_slice", () => A._function("slice", "$string, $start-at, $end-at: -1", new A._slice_closure()));
    _lazyFinal($, "_toUpperCase", "$get$_toUpperCase", () => A._function("to-upper-case", "$string", new A._toUpperCase_closure()));
    _lazyFinal($, "_toLowerCase", "$get$_toLowerCase", () => A._function("to-lower-case", "$string", new A._toLowerCase_closure()));
    _lazyFinal($, "_uniqueId", "$get$_uniqueId", () => A._function("unique-id", "", new A._uniqueId_closure()));
    _lazyFinal($, "_jsThrow", "$get$_jsThrow0", () => new self.Function("error", "throw error;"));
    _lazyFinal($, "Logger_quiet", "$get$Logger_quiet", () => new A._QuietLogger());
    _lazyFinal($, "_disallowedFunctionNames", "$get$_disallowedFunctionNames", () => {
      var t1 = $.$get$globalFunctions();
      t1 = t1.map$1$1(t1, new A._disallowedFunctionNames_closure(), type$.String).toSet$0(0);
      t1.add$1(0, "if");
      t1.remove$1(0, "rgb");
      t1.remove$1(0, "rgba");
      t1.remove$1(0, "hsl");
      t1.remove$1(0, "hsla");
      t1.remove$1(0, "grayscale");
      t1.remove$1(0, "invert");
      t1.remove$1(0, "alpha");
      t1.remove$1(0, "opacity");
      t1.remove$1(0, "saturate");
      t1.remove$1(0, "min");
      t1.remove$1(0, "max");
      t1.remove$1(0, "round");
      t1.remove$1(0, "abs");
      return t1;
    });
    _lazyFinal($, "_epsilon", "$get$_epsilon", () => A.pow(10, -11));
    _lazyFinal($, "_inverseEpsilon", "$get$_inverseEpsilon", () => A.pow(10, 11));
    _lazyFinal($, "bogusSpan", "$get$bogusSpan", () => A.SourceFile$decoded(A._setArrayType([], type$.JSArray_int), null).span$1(0, 0));
    _lazyFinal($, "_noSourceUrl", "$get$_noSourceUrl", () => A.Uri_parse("-"));
    _lazyFinal($, "_traces", "$get$_traces", () => A.Expando$());
    _lazyFinal($, "_typesByUnit", "$get$_typesByUnit", () => {
      var t3, type, units,
        t1 = type$.String,
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t1 = A.MapExtensions_get_pairs(B.Map_ws7dy, t1, type$.List_String), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        type = t3._0;
        units = t3._1;
        for (t3 = J.get$iterator$ax(units); t3.moveNext$0();)
          t2.$indexSet(0, t3.get$current(t3), type);
      }
      return t2;
    });
    _lazyFinal($, "_knownCompatibilitiesByUnit", "$get$_knownCompatibilitiesByUnit", () => {
      var _i, set, t2,
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, A.findType("Set<String>"));
      for (_i = 0; _i < 5; ++_i) {
        set = B.List_gyp[_i];
        for (t2 = set.get$iterator(set); t2.moveNext$0();)
          t1.$indexSet(0, t2.get$current(t2), set);
      }
      return t1;
    });
    _lazyFinal($, "_emptyQuoted", "$get$_emptyQuoted", () => A.SassString$("", true));
    _lazyFinal($, "_emptyUnquoted", "$get$_emptyUnquoted", () => A.SassString$("", false));
    _lazyFinal($, "maxInt32", "$get$maxInt32", () => A._asInt(A.pow(2, 31)) - 1);
    _lazyFinal($, "minInt32", "$get$minInt32", () => -A._asInt(A.pow(2, 31)));
    _lazyFinal($, "_vmFrame", "$get$_vmFrame", () => A.RegExp_RegExp("^#\\d+\\s+(\\S.*) \\((.+?)((?::\\d+){0,2})\\)$", false));
    _lazyFinal($, "_v8Frame", "$get$_v8Frame", () => A.RegExp_RegExp("^\\s*at (?:(\\S.*?)(?: \\[as [^\\]]+\\])? \\((.*)\\)|(.*))$", false));
    _lazyFinal($, "_v8UrlLocation", "$get$_v8UrlLocation", () => A.RegExp_RegExp("^(.*?):(\\d+)(?::(\\d+))?$|native$", false));
    _lazyFinal($, "_v8EvalLocation", "$get$_v8EvalLocation", () => A.RegExp_RegExp("^eval at (?:\\S.*?) \\((.*)\\)(?:, .*?:\\d+:\\d+)?$", false));
    _lazyFinal($, "_firefoxEvalLocation", "$get$_firefoxEvalLocation", () => A.RegExp_RegExp("(\\S+)@(\\S+) line (\\d+) >.* (Function|eval):\\d+:\\d+", false));
    _lazyFinal($, "_firefoxSafariFrame", "$get$_firefoxSafariFrame", () => A.RegExp_RegExp("^(?:([^@(/]*)(?:\\(.*\\))?((?:/[^/]*)*)(?:\\(.*\\))?@)?(.*?):(\\d*)(?::(\\d*))?$", false));
    _lazyFinal($, "_friendlyFrame", "$get$_friendlyFrame", () => A.RegExp_RegExp("^(\\S+)(?: (\\d+)(?::(\\d+))?)?\\s+([^\\d].*)$", false));
    _lazyFinal($, "_asyncBody", "$get$_asyncBody", () => A.RegExp_RegExp("<(<anonymous closure>|[^>]+)_async_body>", false));
    _lazyFinal($, "_initialDot", "$get$_initialDot", () => A.RegExp_RegExp("^\\.", false));
    _lazyFinal($, "Frame__uriRegExp", "$get$Frame__uriRegExp", () => A.RegExp_RegExp("^[a-zA-Z][-+.a-zA-Z\\d]*://", false));
    _lazyFinal($, "Frame__windowsRegExp", "$get$Frame__windowsRegExp", () => A.RegExp_RegExp("^([a-zA-Z]:[\\\\/]|\\\\\\\\)", false));
    _lazyFinal($, "_terseRegExp", "$get$_terseRegExp", () => A.RegExp_RegExp("(-patch)?([/\\\\].*)?$", false));
    _lazyFinal($, "_v8Trace", "$get$_v8Trace", () => A.RegExp_RegExp("\\n    ?at ", false));
    _lazyFinal($, "_v8TraceLine", "$get$_v8TraceLine", () => A.RegExp_RegExp("    ?at ", false));
    _lazyFinal($, "_firefoxEvalTrace", "$get$_firefoxEvalTrace", () => A.RegExp_RegExp("@\\S+ line \\d+ >.* (Function|eval):\\d+:\\d+", false));
    _lazyFinal($, "_firefoxSafariTrace", "$get$_firefoxSafariTrace", () => A.RegExp_RegExp("^(([.0-9A-Za-z_$/<]|\\(.*\\))*@)?[^\\s]*:\\d*$", true));
    _lazyFinal($, "_friendlyTrace", "$get$_friendlyTrace", () => A.RegExp_RegExp("^[^\\s<][^\\s]*( \\d+(:\\d+)?)?[ \\t]+[^\\s]+$", true));
    _lazyFinal($, "vmChainGap", "$get$vmChainGap", () => A.RegExp_RegExp("^<asynchronous suspension>\\n?$", true));
    _lazyFinal($, "_newlineRegExp", "$get$_newlineRegExp", () => A.RegExp_RegExp("\\r\\n?|\\n", false));
    _lazyFinal($, "argumentListClass", "$get$argumentListClass", () => new A.argumentListClass_closure().call$0());
    _lazyFinal($, "_filesystemImporter", "$get$_filesystemImporter", () => A.FilesystemImporter$("."));
    _lazyFinal($, "booleanClass", "$get$booleanClass", () => new A.booleanClass_closure().call$0());
    _lazyFinal($, "legacyBooleanClass", "$get$legacyBooleanClass", () => new A.legacyBooleanClass_closure().call$0());
    _lazyFinal($, "calculationClass", "$get$calculationClass", () => new A.calculationClass_closure().call$0());
    _lazyFinal($, "calculationOperationClass", "$get$calculationOperationClass", () => new A.calculationOperationClass_closure().call$0());
    _lazyFinal($, "calculationInterpolationClass", "$get$calculationInterpolationClass", () => new A.calculationInterpolationClass_closure().call$0());
    _lazyFinal($, "_microsoftFilterStart0", "$get$_microsoftFilterStart0", () => A.RegExp_RegExp("^[a-zA-Z]+\\s*=", false));
    _lazyFinal($, "global6", "$get$global7", () => {
      var _s27_ = "$red, $green, $blue, $alpha",
        _s19_ = "$red, $green, $blue",
        _s37_ = "$hue, $saturation, $lightness, $alpha",
        _s29_ = "$hue, $saturation, $lightness",
        _s17_ = "$hue, $saturation",
        _s15_ = "$color, $amount",
        t1 = type$.String,
        t2 = type$.Value_Function_List_Value_2;
      return A.UnmodifiableListView$(A._setArrayType([$.$get$_red0(), $.$get$_green0(), $.$get$_blue0(), $.$get$_mix0(), A.BuiltInCallable$overloadedFunction0("rgb", A.LinkedHashMap_LinkedHashMap$_literal([_s27_, new A.global_closure32(), _s19_, new A.global_closure33(), "$color, $alpha", new A.global_closure34(), "$channels", new A.global_closure35()], t1, t2)), A.BuiltInCallable$overloadedFunction0("rgba", A.LinkedHashMap_LinkedHashMap$_literal([_s27_, new A.global_closure36(), _s19_, new A.global_closure37(), "$color, $alpha", new A.global_closure38(), "$channels", new A.global_closure39()], t1, t2)), A._function11("invert", "$color, $weight: 100%", new A.global_closure40()), $.$get$_hue0(), $.$get$_saturation0(), $.$get$_lightness0(), $.$get$_complement0(), A.BuiltInCallable$overloadedFunction0("hsl", A.LinkedHashMap_LinkedHashMap$_literal([_s37_, new A.global_closure41(), _s29_, new A.global_closure42(), _s17_, new A.global_closure43(), "$channels", new A.global_closure44()], t1, t2)), A.BuiltInCallable$overloadedFunction0("hsla", A.LinkedHashMap_LinkedHashMap$_literal([_s37_, new A.global_closure45(), _s29_, new A.global_closure46(), _s17_, new A.global_closure47(), "$channels", new A.global_closure48()], t1, t2)), A._function11("grayscale", "$color", new A.global_closure49()), A._function11("adjust-hue", "$color, $degrees", new A.global_closure50()), A._function11("lighten", _s15_, new A.global_closure51()), A._function11("darken", _s15_, new A.global_closure52()), A.BuiltInCallable$overloadedFunction0("saturate", A.LinkedHashMap_LinkedHashMap$_literal(["$amount", new A.global_closure53(), "$color, $amount", new A.global_closure54()], t1, t2)), A._function11("desaturate", _s15_, new A.global_closure55()), A._function11("opacify", _s15_, A.color2___opacify$closure()), A._function11("fade-in", _s15_, A.color2___opacify$closure()), A._function11("transparentize", _s15_, A.color2___transparentize$closure()), A._function11("fade-out", _s15_, A.color2___transparentize$closure()), A.BuiltInCallable$overloadedFunction0("alpha", A.LinkedHashMap_LinkedHashMap$_literal(["$color", new A.global_closure56(), "$args...", new A.global_closure57()], t1, t2)), A._function11("opacity", "$color", new A.global_closure58()), $.$get$_ieHexStr0(), $.$get$_adjust0().withName$1("adjust-color"), $.$get$_scale0().withName$1("scale-color"), $.$get$_change0().withName$1("change-color")], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2);
    });
    _lazyFinal($, "module5", "$get$module5", () => {
      var _s9_ = "lightness",
        _s10_ = "saturation",
        _s6_ = "$color", _s5_ = "alpha",
        t1 = type$.String,
        t2 = type$.Value_Function_List_Value_2;
      return A.BuiltInModule$0("color", A._setArrayType([$.$get$_red0(), $.$get$_green0(), $.$get$_blue0(), $.$get$_mix0(), A._function11("invert", "$color, $weight: 100%", new A.module_closure12()), $.$get$_hue0(), $.$get$_saturation0(), $.$get$_lightness0(), $.$get$_complement0(), A._removedColorFunction0("adjust-hue", "hue", false), A._removedColorFunction0("lighten", _s9_, false), A._removedColorFunction0("darken", _s9_, true), A._removedColorFunction0("saturate", _s10_, false), A._removedColorFunction0("desaturate", _s10_, true), A._function11("grayscale", _s6_, new A.module_closure13()), A.BuiltInCallable$overloadedFunction0("hwb", A.LinkedHashMap_LinkedHashMap$_literal(["$hue, $whiteness, $blackness, $alpha: 1", new A.module_closure14(), "$channels", new A.module_closure15()], t1, t2)), A._function11("whiteness", _s6_, new A.module_closure16()), A._function11("blackness", _s6_, new A.module_closure17()), A._removedColorFunction0("opacify", _s5_, false), A._removedColorFunction0("fade-in", _s5_, false), A._removedColorFunction0("transparentize", _s5_, true), A._removedColorFunction0("fade-out", _s5_, true), A.BuiltInCallable$overloadedFunction0(_s5_, A.LinkedHashMap_LinkedHashMap$_literal(["$color", new A.module_closure18(), "$args...", new A.module_closure19()], t1, t2)), A._function11("opacity", _s6_, new A.module_closure20()), $.$get$_adjust0(), $.$get$_scale0(), $.$get$_change0(), $.$get$_ieHexStr0()], type$.JSArray_Callable_2), null, null, type$.Callable_2);
    });
    _lazyFinal($, "_red0", "$get$_red0", () => A._function11("red", "$color", new A._red_closure0()));
    _lazyFinal($, "_green0", "$get$_green0", () => A._function11("green", "$color", new A._green_closure0()));
    _lazyFinal($, "_blue0", "$get$_blue0", () => A._function11("blue", "$color", new A._blue_closure0()));
    _lazyFinal($, "_mix0", "$get$_mix0", () => A._function11("mix", "$color1, $color2, $weight: 50%", new A._mix_closure0()));
    _lazyFinal($, "_hue0", "$get$_hue0", () => A._function11("hue", "$color", new A._hue_closure0()));
    _lazyFinal($, "_saturation0", "$get$_saturation0", () => A._function11("saturation", "$color", new A._saturation_closure0()));
    _lazyFinal($, "_lightness0", "$get$_lightness0", () => A._function11("lightness", "$color", new A._lightness_closure0()));
    _lazyFinal($, "_complement0", "$get$_complement0", () => A._function11("complement", "$color", new A._complement_closure0()));
    _lazyFinal($, "_adjust0", "$get$_adjust0", () => A._function11("adjust", "$color, $kwargs...", new A._adjust_closure0()));
    _lazyFinal($, "_scale0", "$get$_scale0", () => A._function11("scale", "$color, $kwargs...", new A._scale_closure0()));
    _lazyFinal($, "_change0", "$get$_change0", () => A._function11("change", "$color, $kwargs...", new A._change_closure0()));
    _lazyFinal($, "_ieHexStr0", "$get$_ieHexStr0", () => A._function11("ie-hex-str", "$color", new A._ieHexStr_closure0()));
    _lazyFinal($, "colorClass", "$get$colorClass", () => new A.colorClass_closure().call$0());
    _lazyFinal($, "legacyColorClass", "$get$legacyColorClass", () => {
      var t1 = A.createJSClass("sass.types.Color", new A.legacyColorClass_closure());
      A.JSClassExtension_defineMethods(t1, A.LinkedHashMap_LinkedHashMap$_literal(["getR", new A.legacyColorClass_closure0(), "getG", new A.legacyColorClass_closure1(), "getB", new A.legacyColorClass_closure2(), "getA", new A.legacyColorClass_closure3(), "setR", new A.legacyColorClass_closure4(), "setG", new A.legacyColorClass_closure5(), "setB", new A.legacyColorClass_closure6(), "setA", new A.legacyColorClass_closure7()], type$.String, type$.Function));
      return t1;
    });
    _lazyFinal($, "colorsByName0", "$get$colorsByName0", () => A.LinkedHashMap_LinkedHashMap$_literal(["yellowgreen", A.SassColor$rgb0(154, 205, 50, 1), "yellow", A.SassColor$rgb0(255, 255, 0, 1), "whitesmoke", A.SassColor$rgb0(245, 245, 245, 1), "white", A.SassColor$rgb0(255, 255, 255, 1), "wheat", A.SassColor$rgb0(245, 222, 179, 1), "violet", A.SassColor$rgb0(238, 130, 238, 1), "turquoise", A.SassColor$rgb0(64, 224, 208, 1), "transparent", A.SassColor$rgb0(0, 0, 0, 0), "tomato", A.SassColor$rgb0(255, 99, 71, 1), "thistle", A.SassColor$rgb0(216, 191, 216, 1), "teal", A.SassColor$rgb0(0, 128, 128, 1), "tan", A.SassColor$rgb0(210, 180, 140, 1), "steelblue", A.SassColor$rgb0(70, 130, 180, 1), "springgreen", A.SassColor$rgb0(0, 255, 127, 1), "snow", A.SassColor$rgb0(255, 250, 250, 1), "slategrey", A.SassColor$rgb0(112, 128, 144, 1), "slategray", A.SassColor$rgb0(112, 128, 144, 1), "slateblue", A.SassColor$rgb0(106, 90, 205, 1), "skyblue", A.SassColor$rgb0(135, 206, 235, 1), "silver", A.SassColor$rgb0(192, 192, 192, 1), "sienna", A.SassColor$rgb0(160, 82, 45, 1), "seashell", A.SassColor$rgb0(255, 245, 238, 1), "seagreen", A.SassColor$rgb0(46, 139, 87, 1), "sandybrown", A.SassColor$rgb0(244, 164, 96, 1), "salmon", A.SassColor$rgb0(250, 128, 114, 1), "saddlebrown", A.SassColor$rgb0(139, 69, 19, 1), "royalblue", A.SassColor$rgb0(65, 105, 225, 1), "rosybrown", A.SassColor$rgb0(188, 143, 143, 1), "red", A.SassColor$rgb0(255, 0, 0, 1), "rebeccapurple", A.SassColor$rgb0(102, 51, 153, 1), "purple", A.SassColor$rgb0(128, 0, 128, 1), "powderblue", A.SassColor$rgb0(176, 224, 230, 1), "plum", A.SassColor$rgb0(221, 160, 221, 1), "pink", A.SassColor$rgb0(255, 192, 203, 1), "peru", A.SassColor$rgb0(205, 133, 63, 1), "peachpuff", A.SassColor$rgb0(255, 218, 185, 1), "papayawhip", A.SassColor$rgb0(255, 239, 213, 1), "palevioletred", A.SassColor$rgb0(219, 112, 147, 1), "paleturquoise", A.SassColor$rgb0(175, 238, 238, 1), "palegreen", A.SassColor$rgb0(152, 251, 152, 1), "palegoldenrod", A.SassColor$rgb0(238, 232, 170, 1), "orchid", A.SassColor$rgb0(218, 112, 214, 1), "orangered", A.SassColor$rgb0(255, 69, 0, 1), "orange", A.SassColor$rgb0(255, 165, 0, 1), "olivedrab", A.SassColor$rgb0(107, 142, 35, 1), "olive", A.SassColor$rgb0(128, 128, 0, 1), "oldlace", A.SassColor$rgb0(253, 245, 230, 1), "navy", A.SassColor$rgb0(0, 0, 128, 1), "navajowhite", A.SassColor$rgb0(255, 222, 173, 1), "moccasin", A.SassColor$rgb0(255, 228, 181, 1), "mistyrose", A.SassColor$rgb0(255, 228, 225, 1), "mintcream", A.SassColor$rgb0(245, 255, 250, 1), "midnightblue", A.SassColor$rgb0(25, 25, 112, 1), "mediumvioletred", A.SassColor$rgb0(199, 21, 133, 1), "mediumturquoise", A.SassColor$rgb0(72, 209, 204, 1), "mediumspringgreen", A.SassColor$rgb0(0, 250, 154, 1), "mediumslateblue", A.SassColor$rgb0(123, 104, 238, 1), "mediumseagreen", A.SassColor$rgb0(60, 179, 113, 1), "mediumpurple", A.SassColor$rgb0(147, 112, 219, 1), "mediumorchid", A.SassColor$rgb0(186, 85, 211, 1), "mediumblue", A.SassColor$rgb0(0, 0, 205, 1), "mediumaquamarine", A.SassColor$rgb0(102, 205, 170, 1), "maroon", A.SassColor$rgb0(128, 0, 0, 1), "magenta", A.SassColor$rgb0(255, 0, 255, 1), "linen", A.SassColor$rgb0(250, 240, 230, 1), "limegreen", A.SassColor$rgb0(50, 205, 50, 1), "lime", A.SassColor$rgb0(0, 255, 0, 1), "lightyellow", A.SassColor$rgb0(255, 255, 224, 1), "lightsteelblue", A.SassColor$rgb0(176, 196, 222, 1), "lightslategrey", A.SassColor$rgb0(119, 136, 153, 1), "lightslategray", A.SassColor$rgb0(119, 136, 153, 1), "lightskyblue", A.SassColor$rgb0(135, 206, 250, 1), "lightseagreen", A.SassColor$rgb0(32, 178, 170, 1), "lightsalmon", A.SassColor$rgb0(255, 160, 122, 1), "lightpink", A.SassColor$rgb0(255, 182, 193, 1), "lightgrey", A.SassColor$rgb0(211, 211, 211, 1), "lightgreen", A.SassColor$rgb0(144, 238, 144, 1), "lightgray", A.SassColor$rgb0(211, 211, 211, 1), "lightgoldenrodyellow", A.SassColor$rgb0(250, 250, 210, 1), "lightcyan", A.SassColor$rgb0(224, 255, 255, 1), "lightcoral", A.SassColor$rgb0(240, 128, 128, 1), "lightblue", A.SassColor$rgb0(173, 216, 230, 1), "lemonchiffon", A.SassColor$rgb0(255, 250, 205, 1), "lawngreen", A.SassColor$rgb0(124, 252, 0, 1), "lavenderblush", A.SassColor$rgb0(255, 240, 245, 1), "lavender", A.SassColor$rgb0(230, 230, 250, 1), "khaki", A.SassColor$rgb0(240, 230, 140, 1), "ivory", A.SassColor$rgb0(255, 255, 240, 1), "indigo", A.SassColor$rgb0(75, 0, 130, 1), "indianred", A.SassColor$rgb0(205, 92, 92, 1), "hotpink", A.SassColor$rgb0(255, 105, 180, 1), "honeydew", A.SassColor$rgb0(240, 255, 240, 1), "grey", A.SassColor$rgb0(128, 128, 128, 1), "greenyellow", A.SassColor$rgb0(173, 255, 47, 1), "green", A.SassColor$rgb0(0, 128, 0, 1), "gray", A.SassColor$rgb0(128, 128, 128, 1), "goldenrod", A.SassColor$rgb0(218, 165, 32, 1), "gold", A.SassColor$rgb0(255, 215, 0, 1), "ghostwhite", A.SassColor$rgb0(248, 248, 255, 1), "gainsboro", A.SassColor$rgb0(220, 220, 220, 1), "fuchsia", A.SassColor$rgb0(255, 0, 255, 1), "forestgreen", A.SassColor$rgb0(34, 139, 34, 1), "floralwhite", A.SassColor$rgb0(255, 250, 240, 1), "firebrick", A.SassColor$rgb0(178, 34, 34, 1), "dodgerblue", A.SassColor$rgb0(30, 144, 255, 1), "dimgrey", A.SassColor$rgb0(105, 105, 105, 1), "dimgray", A.SassColor$rgb0(105, 105, 105, 1), "deepskyblue", A.SassColor$rgb0(0, 191, 255, 1), "deeppink", A.SassColor$rgb0(255, 20, 147, 1), "darkviolet", A.SassColor$rgb0(148, 0, 211, 1), "darkturquoise", A.SassColor$rgb0(0, 206, 209, 1), "darkslategrey", A.SassColor$rgb0(47, 79, 79, 1), "darkslategray", A.SassColor$rgb0(47, 79, 79, 1), "darkslateblue", A.SassColor$rgb0(72, 61, 139, 1), "darkseagreen", A.SassColor$rgb0(143, 188, 143, 1), "darksalmon", A.SassColor$rgb0(233, 150, 122, 1), "darkred", A.SassColor$rgb0(139, 0, 0, 1), "darkorchid", A.SassColor$rgb0(153, 50, 204, 1), "darkorange", A.SassColor$rgb0(255, 140, 0, 1), "darkolivegreen", A.SassColor$rgb0(85, 107, 47, 1), "darkmagenta", A.SassColor$rgb0(139, 0, 139, 1), "darkkhaki", A.SassColor$rgb0(189, 183, 107, 1), "darkgrey", A.SassColor$rgb0(169, 169, 169, 1), "darkgreen", A.SassColor$rgb0(0, 100, 0, 1), "darkgray", A.SassColor$rgb0(169, 169, 169, 1), "darkgoldenrod", A.SassColor$rgb0(184, 134, 11, 1), "darkcyan", A.SassColor$rgb0(0, 139, 139, 1), "darkblue", A.SassColor$rgb0(0, 0, 139, 1), "cyan", A.SassColor$rgb0(0, 255, 255, 1), "crimson", A.SassColor$rgb0(220, 20, 60, 1), "cornsilk", A.SassColor$rgb0(255, 248, 220, 1), "cornflowerblue", A.SassColor$rgb0(100, 149, 237, 1), "coral", A.SassColor$rgb0(255, 127, 80, 1), "chocolate", A.SassColor$rgb0(210, 105, 30, 1), "chartreuse", A.SassColor$rgb0(127, 255, 0, 1), "cadetblue", A.SassColor$rgb0(95, 158, 160, 1), "burlywood", A.SassColor$rgb0(222, 184, 135, 1), "brown", A.SassColor$rgb0(165, 42, 42, 1), "blueviolet", A.SassColor$rgb0(138, 43, 226, 1), "blue", A.SassColor$rgb0(0, 0, 255, 1), "blanchedalmond", A.SassColor$rgb0(255, 235, 205, 1), "black", A.SassColor$rgb0(0, 0, 0, 1), "bisque", A.SassColor$rgb0(255, 228, 196, 1), "beige", A.SassColor$rgb0(245, 245, 220, 1), "azure", A.SassColor$rgb0(240, 255, 255, 1), "aquamarine", A.SassColor$rgb0(127, 255, 212, 1), "aqua", A.SassColor$rgb0(0, 255, 255, 1), "antiquewhite", A.SassColor$rgb0(250, 235, 215, 1), "aliceblue", A.SassColor$rgb0(240, 248, 255, 1)], type$.String, type$.SassColor_2));
    _lazyFinal($, "namesByColor0", "$get$namesByColor0", () => {
      var $name, color,
        t1 = type$.SassColor_2,
        t2 = type$.String,
        t3 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t2);
      for (t1 = A.MapExtensions_get_pairs0($.$get$colorsByName0(), t2, t1), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t2 = t1.get$current(t1);
        $name = t2._0;
        color = t2._1;
        t3.$indexSet(0, color, $name);
      }
      return t3;
    });
    _lazyFinal($, "_disallowedFunctionNames0", "$get$_disallowedFunctionNames0", () => {
      var t1 = $.$get$globalFunctions0();
      t1 = t1.map$1$1(t1, new A._disallowedFunctionNames_closure0(), type$.String).toSet$0(0);
      t1.add$1(0, "if");
      t1.remove$1(0, "rgb");
      t1.remove$1(0, "rgba");
      t1.remove$1(0, "hsl");
      t1.remove$1(0, "hsla");
      t1.remove$1(0, "grayscale");
      t1.remove$1(0, "invert");
      t1.remove$1(0, "alpha");
      t1.remove$1(0, "opacity");
      t1.remove$1(0, "saturate");
      t1.remove$1(0, "min");
      t1.remove$1(0, "max");
      t1.remove$1(0, "round");
      t1.remove$1(0, "abs");
      return t1;
    });
    _lazyFinal($, "exceptionClass", "$get$exceptionClass", () => new A.exceptionClass_closure().call$0());
    _lazyFinal($, "_filesystemImporter0", "$get$_filesystemImporter0", () => A.FilesystemImporter$("."));
    _lazyFinal($, "functionClass", "$get$functionClass", () => new A.functionClass_closure().call$0());
    _lazyFinal($, "globalFunctions0", "$get$globalFunctions0", () => {
      var t1 = type$.BuiltInCallable_2,
        t2 = A.List_List$of($.$get$global7(), true, t1);
      B.JSArray_methods.addAll$1(t2, $.$get$global8());
      B.JSArray_methods.addAll$1(t2, $.$get$global9());
      B.JSArray_methods.addAll$1(t2, $.$get$global10());
      B.JSArray_methods.addAll$1(t2, $.$get$global11());
      B.JSArray_methods.addAll$1(t2, $.$get$global12());
      B.JSArray_methods.addAll$1(t2, $.$get$global6());
      t2.push(A.BuiltInCallable$function0("if", "$condition, $if-true, $if-false", new A.globalFunctions_closure0(), null));
      return A.UnmodifiableListView$(t2, t1);
    });
    _lazyFinal($, "coreModules0", "$get$coreModules0", () => A.UnmodifiableListView$(A._setArrayType([$.$get$module5(), $.$get$module6(), $.$get$module7(), $.$get$module8(), $.$get$module9(), $.$get$module10()], A.findType("JSArray<BuiltInModule0<Callable>>")), type$.BuiltInModule_Callable_2));
    _lazyFinal($, "IfExpression_declaration0", "$get$IfExpression_declaration0", () => A.ArgumentDeclaration_ArgumentDeclaration$parse0(string$.x40funct, null));
    _lazyFinal($, "global7", "$get$global8", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_length2(), $.$get$_nth0(), $.$get$_setNth0(), $.$get$_join0(), $.$get$_append2(), $.$get$_zip0(), $.$get$_index2(), $.$get$_isBracketed0(), $.$get$_separator0().withName$1("list-separator")], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2));
    _lazyFinal($, "module6", "$get$module6", () => A.BuiltInModule$0("list", A._setArrayType([$.$get$_length2(), $.$get$_nth0(), $.$get$_setNth0(), $.$get$_join0(), $.$get$_append2(), $.$get$_zip0(), $.$get$_index2(), $.$get$_isBracketed0(), $.$get$_separator0(), $.$get$_slash0()], type$.JSArray_Callable_2), null, null, type$.Callable_2));
    _lazyFinal($, "_length1", "$get$_length2", () => A._function10("length", "$list", new A._length_closure2()));
    _lazyFinal($, "_nth0", "$get$_nth0", () => A._function10("nth", "$list, $n", new A._nth_closure0()));
    _lazyFinal($, "_setNth0", "$get$_setNth0", () => A._function10("set-nth", "$list, $n, $value", new A._setNth_closure0()));
    _lazyFinal($, "_join0", "$get$_join0", () => A._function10("join", string$.x24list1, new A._join_closure0()));
    _lazyFinal($, "_append1", "$get$_append2", () => A._function10("append", "$list, $val, $separator: auto", new A._append_closure2()));
    _lazyFinal($, "_zip0", "$get$_zip0", () => A._function10("zip", "$lists...", new A._zip_closure0()));
    _lazyFinal($, "_index1", "$get$_index2", () => A._function10("index", "$list, $value", new A._index_closure2()));
    _lazyFinal($, "_separator0", "$get$_separator0", () => A._function10("separator", "$list", new A._separator_closure0()));
    _lazyFinal($, "_isBracketed0", "$get$_isBracketed0", () => A._function10("is-bracketed", "$list", new A._isBracketed_closure0()));
    _lazyFinal($, "_slash0", "$get$_slash0", () => A._function10("slash", "$elements...", new A._slash_closure0()));
    _lazyFinal($, "listClass", "$get$listClass", () => new A.listClass_closure().call$0());
    _lazyFinal($, "legacyListClass", "$get$legacyListClass", () => {
      var t1 = A.createJSClass("sass.types.List", new A.legacyListClass_closure());
      A.JSClassExtension_defineMethods(t1, A.LinkedHashMap_LinkedHashMap$_literal(["getValue", new A.legacyListClass_closure0(), "setValue", new A.legacyListClass_closure1(), "getSeparator", new A.legacyListClass_closure2(), "setSeparator", new A.legacyListClass_closure3(), "getLength", new A.legacyListClass_closure4()], type$.String, type$.Function));
      return t1;
    });
    _lazyFinal($, "Logger_quiet0", "$get$Logger_quiet0", () => new A._QuietLogger0());
    _lazyFinal($, "global8", "$get$global9", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_get0().withName$1("map-get"), $.$get$_merge0().withName$1("map-merge"), $.$get$_remove0().withName$1("map-remove"), $.$get$_keys0().withName$1("map-keys"), $.$get$_values0().withName$1("map-values"), $.$get$_hasKey0().withName$1("map-has-key")], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2));
    _lazyFinal($, "module7", "$get$module7", () => A.BuiltInModule$0("map", A._setArrayType([$.$get$_get0(), $.$get$_set0(), $.$get$_merge0(), $.$get$_remove0(), $.$get$_keys0(), $.$get$_values0(), $.$get$_hasKey0(), $.$get$_deepMerge0(), $.$get$_deepRemove0()], type$.JSArray_Callable_2), null, null, type$.Callable_2));
    _lazyFinal($, "_get0", "$get$_get0", () => A._function9("get", "$map, $key, $keys...", new A._get_closure0()));
    _lazyFinal($, "_set0", "$get$_set0", () => A.BuiltInCallable$overloadedFunction0("set", A.LinkedHashMap_LinkedHashMap$_literal(["$map, $key, $value", new A._set_closure1(), "$map, $args...", new A._set_closure2()], type$.String, type$.Value_Function_List_Value_2)));
    _lazyFinal($, "_merge0", "$get$_merge0", () => A.BuiltInCallable$overloadedFunction0("merge", A.LinkedHashMap_LinkedHashMap$_literal(["$map1, $map2", new A._merge_closure1(), "$map1, $args...", new A._merge_closure2()], type$.String, type$.Value_Function_List_Value_2)));
    _lazyFinal($, "_deepMerge0", "$get$_deepMerge0", () => A._function9("deep-merge", "$map1, $map2", new A._deepMerge_closure0()));
    _lazyFinal($, "_deepRemove0", "$get$_deepRemove0", () => A._function9("deep-remove", "$map, $key, $keys...", new A._deepRemove_closure0()));
    _lazyFinal($, "_remove0", "$get$_remove0", () => A.BuiltInCallable$overloadedFunction0("remove", A.LinkedHashMap_LinkedHashMap$_literal(["$map", new A._remove_closure1(), "$map, $key, $keys...", new A._remove_closure2()], type$.String, type$.Value_Function_List_Value_2)));
    _lazyFinal($, "_keys0", "$get$_keys0", () => A._function9("keys", "$map", new A._keys_closure0()));
    _lazyFinal($, "_values0", "$get$_values0", () => A._function9("values", "$map", new A._values_closure0()));
    _lazyFinal($, "_hasKey0", "$get$_hasKey0", () => A._function9("has-key", "$map, $key, $keys...", new A._hasKey_closure0()));
    _lazyFinal($, "mapClass", "$get$mapClass", () => new A.mapClass_closure().call$0());
    _lazyFinal($, "legacyMapClass", "$get$legacyMapClass", () => {
      var t1 = A.createJSClass("sass.types.Map", new A.legacyMapClass_closure());
      A.JSClassExtension_defineMethods(t1, A.LinkedHashMap_LinkedHashMap$_literal(["getKey", new A.legacyMapClass_closure0(), "getValue", new A.legacyMapClass_closure1(), "getLength", new A.legacyMapClass_closure2(), "setKey", new A.legacyMapClass_closure3(), "setValue", new A.legacyMapClass_closure4()], type$.String, type$.Function));
      return t1;
    });
    _lazyFinal($, "global9", "$get$global10", () => A.UnmodifiableListView$(A._setArrayType([A._function8("abs", "$number", new A.global_closure31()), $.$get$_ceil0(), $.$get$_floor0(), $.$get$_max0(), $.$get$_min0(), $.$get$_percentage0(), $.$get$_randomFunction0(), $.$get$_round0(), $.$get$_unit0(), $.$get$_compatible0().withName$1("comparable"), $.$get$_isUnitless0().withName$1("unitless")], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2));
    _lazyFinal($, "module8", "$get$module8", () => {
      var _null = null;
      return A.BuiltInModule$0("math", A._setArrayType([A._numberFunction0("abs", new A.module_closure11()), $.$get$_acos0(), $.$get$_asin0(), $.$get$_atan0(), $.$get$_atan20(), $.$get$_ceil0(), $.$get$_clamp0(), $.$get$_cos0(), $.$get$_compatible0(), $.$get$_floor0(), $.$get$_hypot0(), $.$get$_isUnitless0(), $.$get$_log0(), $.$get$_max0(), $.$get$_min0(), $.$get$_percentage0(), $.$get$_pow0(), $.$get$_randomFunction0(), $.$get$_round0(), $.$get$_sin0(), $.$get$_sqrt0(), $.$get$_tan0(), $.$get$_unit0(), $.$get$_div0()], type$.JSArray_Callable_2), _null, A.LinkedHashMap_LinkedHashMap$_literal(["e", A.SassNumber_SassNumber0(2.718281828459045, _null), "pi", A.SassNumber_SassNumber0(3.141592653589793, _null), "epsilon", A.SassNumber_SassNumber0(2220446049250313e-31, _null), "max-safe-integer", A.SassNumber_SassNumber0(9007199254740991, _null), "min-safe-integer", A.SassNumber_SassNumber0(-9007199254740991, _null), "max-number", A.SassNumber_SassNumber0(17976931348623157e292, _null), "min-number", A.SassNumber_SassNumber0(5e-324, _null)], type$.String, type$.Value_2), type$.Callable_2);
    });
    _lazyFinal($, "_ceil0", "$get$_ceil0", () => A._numberFunction0("ceil", new A._ceil_closure0()));
    _lazyFinal($, "_clamp0", "$get$_clamp0", () => A._function8("clamp", "$min, $number, $max", new A._clamp_closure0()));
    _lazyFinal($, "_floor0", "$get$_floor0", () => A._numberFunction0("floor", new A._floor_closure0()));
    _lazyFinal($, "_max0", "$get$_max0", () => A._function8("max", "$numbers...", new A._max_closure0()));
    _lazyFinal($, "_min0", "$get$_min0", () => A._function8("min", "$numbers...", new A._min_closure0()));
    _lazyFinal($, "_round0", "$get$_round0", () => A._numberFunction0("round", new A._round_closure0()));
    _lazyFinal($, "_hypot0", "$get$_hypot0", () => A._function8("hypot", "$numbers...", new A._hypot_closure0()));
    _lazyFinal($, "_log0", "$get$_log0", () => A._function8("log", "$number, $base: null", new A._log_closure0()));
    _lazyFinal($, "_pow0", "$get$_pow0", () => A._function8("pow", "$base, $exponent", new A._pow_closure0()));
    _lazyFinal($, "_sqrt0", "$get$_sqrt0", () => A._singleArgumentMathFunc0("sqrt", A.number2__sqrt$closure()));
    _lazyFinal($, "_acos0", "$get$_acos0", () => A._singleArgumentMathFunc0("acos", A.number2__acos$closure()));
    _lazyFinal($, "_asin0", "$get$_asin0", () => A._singleArgumentMathFunc0("asin", A.number2__asin$closure()));
    _lazyFinal($, "_atan0", "$get$_atan0", () => A._singleArgumentMathFunc0("atan", A.number2__atan$closure()));
    _lazyFinal($, "_atan20", "$get$_atan20", () => A._function8("atan2", "$y, $x", new A._atan2_closure0()));
    _lazyFinal($, "_cos0", "$get$_cos0", () => A._singleArgumentMathFunc0("cos", A.number2__cos$closure()));
    _lazyFinal($, "_sin0", "$get$_sin0", () => A._singleArgumentMathFunc0("sin", A.number2__sin$closure()));
    _lazyFinal($, "_tan0", "$get$_tan0", () => A._singleArgumentMathFunc0("tan", A.number2__tan$closure()));
    _lazyFinal($, "_compatible0", "$get$_compatible0", () => A._function8("compatible", "$number1, $number2", new A._compatible_closure0()));
    _lazyFinal($, "_isUnitless0", "$get$_isUnitless0", () => A._function8("is-unitless", "$number", new A._isUnitless_closure0()));
    _lazyFinal($, "_unit0", "$get$_unit0", () => A._function8("unit", "$number", new A._unit_closure0()));
    _lazyFinal($, "_percentage0", "$get$_percentage0", () => A._function8("percentage", "$number", new A._percentage_closure0()));
    _lazyFinal($, "_random1", "$get$_random2", () => A.Random_Random());
    _lazyFinal($, "_randomFunction0", "$get$_randomFunction0", () => A._function8("random", "$limit: null", new A._randomFunction_closure0()));
    _lazyFinal($, "_div0", "$get$_div0", () => A._function8("div", "$number1, $number2", new A._div_closure0()));
    _lazyFinal($, "global10", "$get$global6", () => A.UnmodifiableListView$(A._setArrayType([A._function12("feature-exists", "$feature", new A.global_closure59()), A._function12("inspect", "$value", new A.global_closure60()), A._function12("type-of", "$value", new A.global_closure61()), A._function12("keywords", "$args", new A.global_closure62())], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2));
    _lazyFinal($, "local0", "$get$local0", () => A.UnmodifiableListView$(A._setArrayType([A._function12("calc-name", "$calc", new A.local_closure2()), A._function12("calc-args", "$calc", new A.local_closure3()), A._function12("accepts-content", "$mixin", new A.local_closure4())], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2));
    _lazyFinal($, "mixinClass", "$get$mixinClass", () => new A.mixinClass_closure().call$0());
    _lazyFinal($, "legacyNullClass", "$get$legacyNullClass", () => new A.legacyNullClass_closure().call$0());
    _lazyFinal($, "_epsilon0", "$get$_epsilon0", () => A.pow(10, -11));
    _lazyFinal($, "_inverseEpsilon0", "$get$_inverseEpsilon0", () => A.pow(10, 11));
    _lazyFinal($, "numberClass", "$get$numberClass", () => new A.numberClass_closure().call$0());
    _lazyFinal($, "legacyNumberClass", "$get$legacyNumberClass", () => {
      var t1 = A.createJSClass("sass.types.Number", new A.legacyNumberClass_closure());
      A.JSClassExtension_defineMethods(t1, A.LinkedHashMap_LinkedHashMap$_literal(["getValue", new A.legacyNumberClass_closure0(), "setValue", new A.legacyNumberClass_closure1(), "getUnit", new A.legacyNumberClass_closure2(), "setUnit", new A.legacyNumberClass_closure3()], type$.String, type$.Function));
      return t1;
    });
    _lazyFinal($, "_typesByUnit0", "$get$_typesByUnit0", () => {
      var t3, type, units,
        t1 = type$.String,
        t2 = A.LinkedHashMap_LinkedHashMap$_empty(t1, t1);
      for (t1 = A.MapExtensions_get_pairs0(B.Map_ws7dy, t1, type$.List_String), t1 = t1.get$iterator(t1); t1.moveNext$0();) {
        t3 = t1.get$current(t1);
        type = t3._0;
        units = t3._1;
        for (t3 = J.get$iterator$ax(units); t3.moveNext$0();)
          t2.$indexSet(0, t3.get$current(t3), type);
      }
      return t2;
    });
    _lazyFinal($, "global11", "$get$global11", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_isSuperselector0(), $.$get$_simpleSelectors0(), $.$get$_parse0().withName$1("selector-parse"), $.$get$_nest0().withName$1("selector-nest"), $.$get$_append1().withName$1("selector-append"), $.$get$_extend0().withName$1("selector-extend"), $.$get$_replace0().withName$1("selector-replace"), $.$get$_unify0().withName$1("selector-unify")], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2));
    _lazyFinal($, "module9", "$get$module9", () => A.BuiltInModule$0("selector", A._setArrayType([$.$get$_isSuperselector0(), $.$get$_simpleSelectors0(), $.$get$_parse0(), $.$get$_nest0(), $.$get$_append1(), $.$get$_extend0(), $.$get$_replace0(), $.$get$_unify0()], type$.JSArray_Callable_2), null, null, type$.Callable_2));
    _lazyFinal($, "_nest0", "$get$_nest0", () => A._function7("nest", "$selectors...", new A._nest_closure0()));
    _lazyFinal($, "_append2", "$get$_append1", () => A._function7("append", "$selectors...", new A._append_closure1()));
    _lazyFinal($, "_extend0", "$get$_extend0", () => A._function7("extend", "$selector, $extendee, $extender", new A._extend_closure0()));
    _lazyFinal($, "_replace0", "$get$_replace0", () => A._function7("replace", "$selector, $original, $replacement", new A._replace_closure0()));
    _lazyFinal($, "_unify0", "$get$_unify0", () => A._function7("unify", "$selector1, $selector2", new A._unify_closure0()));
    _lazyFinal($, "_isSuperselector0", "$get$_isSuperselector0", () => A._function7("is-superselector", "$super, $sub", new A._isSuperselector_closure0()));
    _lazyFinal($, "_simpleSelectors0", "$get$_simpleSelectors0", () => A._function7("simple-selectors", "$selector", new A._simpleSelectors_closure0()));
    _lazyFinal($, "_parse0", "$get$_parse0", () => A._function7("parse", "$selector", new A._parse_closure0()));
    _lazyFinal($, "_knownCompatibilitiesByUnit0", "$get$_knownCompatibilitiesByUnit0", () => {
      var _i, set, t2,
        t1 = A.LinkedHashMap_LinkedHashMap$_empty(type$.String, A.findType("Set<String>"));
      for (_i = 0; _i < 5; ++_i) {
        set = B.List_gyp[_i];
        for (t2 = set.get$iterator(set); t2.moveNext$0();)
          t1.$indexSet(0, t2.get$current(t2), set);
      }
      return t1;
    });
    _lazyFinal($, "bogusSpan0", "$get$bogusSpan0", () => A.SourceFile$decoded(A._setArrayType([], type$.JSArray_int), null).span$1(0, 0));
    _lazyFinal($, "_random2", "$get$_random1", () => A.Random_Random());
    _lazy($, "_previousUniqueId0", "$get$_previousUniqueId0", () => $.$get$_random1().nextInt$1(A._asInt(A.pow(36, 6))));
    _lazyFinal($, "global12", "$get$global12", () => A.UnmodifiableListView$(A._setArrayType([$.$get$_unquote0(), $.$get$_quote0(), $.$get$_toUpperCase0(), $.$get$_toLowerCase0(), $.$get$_uniqueId0(), $.$get$_length1().withName$1("str-length"), $.$get$_insert0().withName$1("str-insert"), $.$get$_index1().withName$1("str-index"), $.$get$_slice0().withName$1("str-slice")], type$.JSArray_BuiltInCallable_2), type$.BuiltInCallable_2));
    _lazyFinal($, "module10", "$get$module10", () => A.BuiltInModule$0("string", A._setArrayType([$.$get$_unquote0(), $.$get$_quote0(), $.$get$_toUpperCase0(), $.$get$_toLowerCase0(), $.$get$_length1(), $.$get$_insert0(), $.$get$_index1(), $.$get$_slice0(), $.$get$_uniqueId0(), A._function6("split", "$string, $separator, $limit: null", new A.module_closure10())], type$.JSArray_Callable_2), null, null, type$.Callable_2));
    _lazyFinal($, "_unquote0", "$get$_unquote0", () => A._function6("unquote", "$string", new A._unquote_closure0()));
    _lazyFinal($, "_quote0", "$get$_quote0", () => A._function6("quote", "$string", new A._quote_closure0()));
    _lazyFinal($, "_length2", "$get$_length1", () => A._function6("length", "$string", new A._length_closure1()));
    _lazyFinal($, "_insert0", "$get$_insert0", () => A._function6("insert", "$string, $insert, $index", new A._insert_closure0()));
    _lazyFinal($, "_index2", "$get$_index1", () => A._function6("index", "$string, $substring", new A._index_closure1()));
    _lazyFinal($, "_slice0", "$get$_slice0", () => A._function6("slice", "$string, $start-at, $end-at: -1", new A._slice_closure0()));
    _lazyFinal($, "_toUpperCase0", "$get$_toUpperCase0", () => A._function6("to-upper-case", "$string", new A._toUpperCase_closure0()));
    _lazyFinal($, "_toLowerCase0", "$get$_toLowerCase0", () => A._function6("to-lower-case", "$string", new A._toLowerCase_closure0()));
    _lazyFinal($, "_uniqueId0", "$get$_uniqueId0", () => A._function6("unique-id", "", new A._uniqueId_closure0()));
    _lazyFinal($, "stringClass", "$get$stringClass", () => new A.stringClass_closure().call$0());
    _lazyFinal($, "legacyStringClass", "$get$legacyStringClass", () => {
      var t1 = A.createJSClass("sass.types.String", new A.legacyStringClass_closure());
      A.JSClassExtension_defineMethods(t1, A.LinkedHashMap_LinkedHashMap$_literal(["getValue", new A.legacyStringClass_closure0(), "setValue", new A.legacyStringClass_closure1()], type$.String, type$.Function));
      return t1;
    });
    _lazyFinal($, "_emptyQuoted0", "$get$_emptyQuoted0", () => A.SassString$0("", true));
    _lazyFinal($, "_emptyUnquoted0", "$get$_emptyUnquoted0", () => A.SassString$0("", false));
    _lazyFinal($, "_urlSchemeRegExp", "$get$_urlSchemeRegExp", () => A.RegExp_RegExp("^[a-z0-9+.-]+$", false));
    _lazyFinal($, "_jsThrow0", "$get$_jsThrow", () => new self.Function("error", "throw error;"));
    _lazyFinal($, "_isUndefined", "$get$_isUndefined", () => new self.Function("value", "return value === undefined;"));
    _lazyFinal($, "_noSourceUrl0", "$get$_noSourceUrl0", () => A.Uri_parse("-"));
    _lazyFinal($, "_traces0", "$get$_traces0", () => A.Expando$());
    _lazyFinal($, "valueClass", "$get$valueClass", () => new A.valueClass_closure().call$0());
  })();
  (function nativeSupport() {
    !function() {
      var intern = function(s) {
        var o = {};
        o[s] = 1;
        return Object.keys(hunkHelpers.convertToFastObject(o))[0];
      };
      init.getIsolateTag = function(name) {
        return intern("___dart_" + name + init.isolateTag);
      };
      var tableProperty = "___dart_isolate_tags_";
      var usedProperties = Object[tableProperty] || (Object[tableProperty] = Object.create(null));
      var rootProperty = "_ZxYxX";
      for (var i = 0;; i++) {
        var property = intern(rootProperty + "_" + i + "_");
        if (!(property in usedProperties)) {
          usedProperties[property] = 1;
          init.isolateTag = property;
          break;
        }
      }
      init.dispatchPropertyName = init.getIsolateTag("dispatch_record");
    }();
    hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer: A.NativeByteBuffer, ArrayBufferView: A.NativeTypedData, DataView: A.NativeByteData, Float32Array: A.NativeFloat32List, Float64Array: A.NativeFloat64List, Int16Array: A.NativeInt16List, Int32Array: A.NativeInt32List, Int8Array: A.NativeInt8List, Uint16Array: A.NativeUint16List, Uint32Array: A.NativeUint32List, Uint8ClampedArray: A.NativeUint8ClampedList, CanvasPixelArray: A.NativeUint8ClampedList, Uint8Array: A.NativeUint8List});
    hunkHelpers.setOrUpdateLeafTags({ArrayBuffer: true, ArrayBufferView: false, DataView: true, Float32Array: true, Float64Array: true, Int16Array: true, Int32Array: true, Int8Array: true, Uint16Array: true, Uint32Array: true, Uint8ClampedArray: true, CanvasPixelArray: true, Uint8Array: false});
    A.NativeTypedArray.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A.NativeTypedArrayOfDouble.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A._NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin.$nativeSuperclassTag = "ArrayBufferView";
    A.NativeTypedArrayOfInt.$nativeSuperclassTag = "ArrayBufferView";
  })();
  Function.prototype.call$0 = function() {
    return this();
  };
  Function.prototype.call$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$2 = function(a, b) {
    return this(a, b);
  };
  Function.prototype.call$3$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$2$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$1$1 = function(a) {
    return this(a);
  };
  Function.prototype.call$3 = function(a, b, c) {
    return this(a, b, c);
  };
  Function.prototype.call$4 = function(a, b, c, d) {
    return this(a, b, c, d);
  };
  Function.prototype.call$3$3 = function(a, b, c) {
    return this(a, b, c);
  };
  Function.prototype.call$2$2 = function(a, b) {
    return this(a, b);
  };
  Function.prototype.call$5 = function(a, b, c, d, e) {
    return this(a, b, c, d, e);
  };
  Function.prototype.call$6 = function(a, b, c, d, e, f) {
    return this(a, b, c, d, e, f);
  };
  Function.prototype.call$2$0 = function() {
    return this();
  };
  Function.prototype.call$1$0 = function() {
    return this();
  };
  Function.prototype.call$1$2 = function(a, b) {
    return this(a, b);
  };
  Function.prototype.call$2$3 = function(a, b, c) {
    return this(a, b, c);
  };
  convertAllToFastObject(holders);
  convertToFastObject($);
  (function(callback) {
    if (typeof document === "undefined") {
      callback(null);
      return;
    }
    if (typeof document.currentScript != "undefined") {
      callback(document.currentScript);
      return;
    }
    var scripts = document.scripts;
    function onLoad(event) {
      for (var i = 0; i < scripts.length; ++i)
        scripts[i].removeEventListener("load", onLoad, false);
      callback(event.target);
    }
    for (var i = 0; i < scripts.length; ++i)
      scripts[i].addEventListener("load", onLoad, false);
  })(function(currentScript) {
    init.currentScript = currentScript;
    var callMain = A.main2;
    if (typeof dartMainRunner === "function")
      dartMainRunner(callMain, []);
    else
      callMain([]);
  });
})();
}

/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! process/browser */ "./node_modules/process/browser.js"), "/", "/index.js", __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"]))

/***/ }),

/***/ "./node_modules/sass/sass.node.js":
/*!****************************************!*\
  !*** ./node_modules/sass/sass.node.js ***!
  \****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(/*! ./sass.dart.js */ "./node_modules/sass/sass.dart.js");
const library = globalThis._cliPkgExports.pop();
if (globalThis._cliPkgExports.length === 0) delete globalThis._cliPkgExports;
library.load({
  util: __webpack_require__(/*! util */ "./node_modules/util/util.js"),
  stream: __webpack_require__(/*! stream */ "./node_modules/stream-browserify/index.js"),
  fs: __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js"),
  immutable: __webpack_require__(/*! immutable */ "./node_modules/immutable/dist/immutable.es.js"),
});

module.exports = library;


/***/ }),

/***/ "./node_modules/source-map-support/source-map-support.js":
/*!***************************************************************!*\
  !*** ./node_modules/source-map-support/source-map-support.js ***!
  \***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(process, module) {var SourceMapConsumer = __webpack_require__(/*! source-map */ "./node_modules/source-map/source-map.js").SourceMapConsumer;
var path = __webpack_require__(/*! path */ "./node_modules/path-browserify/index.js");

var fs;
try {
  fs = __webpack_require__(/*! fs */ "./node_modules/node-libs-browser/mock/empty.js");
  if (!fs.existsSync || !fs.readFileSync) {
    // fs doesn't have all methods we need
    fs = null;
  }
} catch (err) {
  /* nop */
}

var bufferFrom = __webpack_require__(/*! buffer-from */ "./node_modules/buffer-from/index.js");

/**
 * Requires a module which is protected against bundler minification.
 *
 * @param {NodeModule} mod
 * @param {string} request
 */
function dynamicRequire(mod, request) {
  return mod.require(request);
}

// Only install once if called multiple times
var errorFormatterInstalled = false;
var uncaughtShimInstalled = false;

// If true, the caches are reset before a stack trace formatting operation
var emptyCacheBetweenOperations = false;

// Supports {browser, node, auto}
var environment = "auto";

// Maps a file path to a string containing the file contents
var fileContentsCache = {};

// Maps a file path to a source map for that file
var sourceMapCache = {};

// Regex for detecting source maps
var reSourceMap = /^data:application\/json[^,]+base64,/;

// Priority list of retrieve handlers
var retrieveFileHandlers = [];
var retrieveMapHandlers = [];

function isInBrowser() {
  if (environment === "browser")
    return true;
  if (environment === "node")
    return false;
  return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function') && !(window.require && window.module && window.process && window.process.type === "renderer"));
}

function hasGlobalProcessEventEmitter() {
  return ((typeof process === 'object') && (process !== null) && (typeof process.on === 'function'));
}

function globalProcessVersion() {
  if ((typeof process === 'object') && (process !== null)) {
    return process.version;
  } else {
    return '';
  }
}

function globalProcessStderr() {
  if ((typeof process === 'object') && (process !== null)) {
    return process.stderr;
  }
}

function globalProcessExit(code) {
  if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) {
    return process.exit(code);
  }
}

function handlerExec(list) {
  return function(arg) {
    for (var i = 0; i < list.length; i++) {
      var ret = list[i](arg);
      if (ret) {
        return ret;
      }
    }
    return null;
  };
}

var retrieveFile = handlerExec(retrieveFileHandlers);

retrieveFileHandlers.push(function(path) {
  // Trim the path to make sure there is no extra whitespace.
  path = path.trim();
  if (/^file:/.test(path)) {
    // existsSync/readFileSync can't handle file protocol, but once stripped, it works
    path = path.replace(/file:\/\/\/(\w:)?/, function(protocol, drive) {
      return drive ?
        '' : // file:///C:/dir/file -> C:/dir/file
        '/'; // file:///root-dir/file -> /root-dir/file
    });
  }
  if (path in fileContentsCache) {
    return fileContentsCache[path];
  }

  var contents = '';
  try {
    if (!fs) {
      // Use SJAX if we are in the browser
      var xhr = new XMLHttpRequest();
      xhr.open('GET', path, /** async */ false);
      xhr.send(null);
      if (xhr.readyState === 4 && xhr.status === 200) {
        contents = xhr.responseText;
      }
    } else if (fs.existsSync(path)) {
      // Otherwise, use the filesystem
      contents = fs.readFileSync(path, 'utf8');
    }
  } catch (er) {
    /* ignore any errors */
  }

  return fileContentsCache[path] = contents;
});

// Support URLs relative to a directory, but be careful about a protocol prefix
// in case we are in the browser (i.e. directories may start with "http://" or "file:///")
function supportRelativeURL(file, url) {
  if (!file) return url;
  var dir = path.dirname(file);
  var match = /^\w+:\/\/[^\/]*/.exec(dir);
  var protocol = match ? match[0] : '';
  var startPath = dir.slice(protocol.length);
  if (protocol && /^\/\w\:/.test(startPath)) {
    // handle file:///C:/ paths
    protocol += '/';
    return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\/g, '/');
  }
  return protocol + path.resolve(dir.slice(protocol.length), url);
}

function retrieveSourceMapURL(source) {
  var fileData;

  if (isInBrowser()) {
     try {
       var xhr = new XMLHttpRequest();
       xhr.open('GET', source, false);
       xhr.send(null);
       fileData = xhr.readyState === 4 ? xhr.responseText : null;

       // Support providing a sourceMappingURL via the SourceMap header
       var sourceMapHeader = xhr.getResponseHeader("SourceMap") ||
                             xhr.getResponseHeader("X-SourceMap");
       if (sourceMapHeader) {
         return sourceMapHeader;
       }
     } catch (e) {
     }
  }

  // Get the URL of the source map
  fileData = retrieveFile(source);
  var re = /(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/mg;
  // Keep executing the search to find the *last* sourceMappingURL to avoid
  // picking up sourceMappingURLs from comments, strings, etc.
  var lastMatch, match;
  while (match = re.exec(fileData)) lastMatch = match;
  if (!lastMatch) return null;
  return lastMatch[1];
};

// Can be overridden by the retrieveSourceMap option to install. Takes a
// generated source filename; returns a {map, optional url} object, or null if
// there is no source map.  The map field may be either a string or the parsed
// JSON object (ie, it must be a valid argument to the SourceMapConsumer
// constructor).
var retrieveSourceMap = handlerExec(retrieveMapHandlers);
retrieveMapHandlers.push(function(source) {
  var sourceMappingURL = retrieveSourceMapURL(source);
  if (!sourceMappingURL) return null;

  // Read the contents of the source map
  var sourceMapData;
  if (reSourceMap.test(sourceMappingURL)) {
    // Support source map URL as a data url
    var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1);
    sourceMapData = bufferFrom(rawData, "base64").toString();
    sourceMappingURL = source;
  } else {
    // Support source map URLs relative to the source URL
    sourceMappingURL = supportRelativeURL(source, sourceMappingURL);
    sourceMapData = retrieveFile(sourceMappingURL);
  }

  if (!sourceMapData) {
    return null;
  }

  return {
    url: sourceMappingURL,
    map: sourceMapData
  };
});

function mapSourcePosition(position) {
  var sourceMap = sourceMapCache[position.source];
  if (!sourceMap) {
    // Call the (overrideable) retrieveSourceMap function to get the source map.
    var urlAndMap = retrieveSourceMap(position.source);
    if (urlAndMap) {
      sourceMap = sourceMapCache[position.source] = {
        url: urlAndMap.url,
        map: new SourceMapConsumer(urlAndMap.map)
      };

      // Load all sources stored inline with the source map into the file cache
      // to pretend like they are already loaded. They may not exist on disk.
      if (sourceMap.map.sourcesContent) {
        sourceMap.map.sources.forEach(function(source, i) {
          var contents = sourceMap.map.sourcesContent[i];
          if (contents) {
            var url = supportRelativeURL(sourceMap.url, source);
            fileContentsCache[url] = contents;
          }
        });
      }
    } else {
      sourceMap = sourceMapCache[position.source] = {
        url: null,
        map: null
      };
    }
  }

  // Resolve the source URL relative to the URL of the source map
  if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === 'function') {
    var originalPosition = sourceMap.map.originalPositionFor(position);

    // Only return the original position if a matching line was found. If no
    // matching line is found then we return position instead, which will cause
    // the stack trace to print the path and line for the compiled file. It is
    // better to give a precise location in the compiled file than a vague
    // location in the original file.
    if (originalPosition.source !== null) {
      originalPosition.source = supportRelativeURL(
        sourceMap.url, originalPosition.source);
      return originalPosition;
    }
  }

  return position;
}

// Parses code generated by FormatEvalOrigin(), a function inside V8:
// https://code.google.com/p/v8/source/browse/trunk/src/messages.js
function mapEvalOrigin(origin) {
  // Most eval() calls are in this format
  var match = /^eval at ([^(]+) \((.+):(\d+):(\d+)\)$/.exec(origin);
  if (match) {
    var position = mapSourcePosition({
      source: match[2],
      line: +match[3],
      column: match[4] - 1
    });
    return 'eval at ' + match[1] + ' (' + position.source + ':' +
      position.line + ':' + (position.column + 1) + ')';
  }

  // Parse nested eval() calls using recursion
  match = /^eval at ([^(]+) \((.+)\)$/.exec(origin);
  if (match) {
    return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')';
  }

  // Make sure we still return useful information if we didn't find anything
  return origin;
}

// This is copied almost verbatim from the V8 source code at
// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The
// implementation of wrapCallSite() used to just forward to the actual source
// code of CallSite.prototype.toString but unfortunately a new release of V8
// did something to the prototype chain and broke the shim. The only fix I
// could find was copy/paste.
function CallSiteToString() {
  var fileName;
  var fileLocation = "";
  if (this.isNative()) {
    fileLocation = "native";
  } else {
    fileName = this.getScriptNameOrSourceURL();
    if (!fileName && this.isEval()) {
      fileLocation = this.getEvalOrigin();
      fileLocation += ", ";  // Expecting source position to follow.
    }

    if (fileName) {
      fileLocation += fileName;
    } else {
      // Source code does not originate from a file and is not native, but we
      // can still get the source position inside the source string, e.g. in
      // an eval string.
      fileLocation += "<anonymous>";
    }
    var lineNumber = this.getLineNumber();
    if (lineNumber != null) {
      fileLocation += ":" + lineNumber;
      var columnNumber = this.getColumnNumber();
      if (columnNumber) {
        fileLocation += ":" + columnNumber;
      }
    }
  }

  var line = "";
  var functionName = this.getFunctionName();
  var addSuffix = true;
  var isConstructor = this.isConstructor();
  var isMethodCall = !(this.isToplevel() || isConstructor);
  if (isMethodCall) {
    var typeName = this.getTypeName();
    // Fixes shim to be backward compatable with Node v0 to v4
    if (typeName === "[object Object]") {
      typeName = "null";
    }
    var methodName = this.getMethodName();
    if (functionName) {
      if (typeName && functionName.indexOf(typeName) != 0) {
        line += typeName + ".";
      }
      line += functionName;
      if (methodName && functionName.indexOf("." + methodName) != functionName.length - methodName.length - 1) {
        line += " [as " + methodName + "]";
      }
    } else {
      line += typeName + "." + (methodName || "<anonymous>");
    }
  } else if (isConstructor) {
    line += "new " + (functionName || "<anonymous>");
  } else if (functionName) {
    line += functionName;
  } else {
    line += fileLocation;
    addSuffix = false;
  }
  if (addSuffix) {
    line += " (" + fileLocation + ")";
  }
  return line;
}

function cloneCallSite(frame) {
  var object = {};
  Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) {
    object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name];
  });
  object.toString = CallSiteToString;
  return object;
}

function wrapCallSite(frame, state) {
  // provides interface backward compatibility
  if (state === undefined) {
    state = { nextPosition: null, curPosition: null }
  }
  if(frame.isNative()) {
    state.curPosition = null;
    return frame;
  }

  // Most call sites will return the source file from getFileName(), but code
  // passed to eval() ending in "//# sourceURL=..." will return the source file
  // from getScriptNameOrSourceURL() instead
  var source = frame.getFileName() || frame.getScriptNameOrSourceURL();
  if (source) {
    var line = frame.getLineNumber();
    var column = frame.getColumnNumber() - 1;

    // Fix position in Node where some (internal) code is prepended.
    // See https://github.com/evanw/node-source-map-support/issues/36
    // Header removed in node at ^10.16 || >=11.11.0
    // v11 is not an LTS candidate, we can just test the one version with it.
    // Test node versions for: 10.16-19, 10.20+, 12-19, 20-99, 100+, or 11.11
    var noHeader = /^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/;
    var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62;
    if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) {
      column -= headerLength;
    }

    var position = mapSourcePosition({
      source: source,
      line: line,
      column: column
    });
    state.curPosition = position;
    frame = cloneCallSite(frame);
    var originalFunctionName = frame.getFunctionName;
    frame.getFunctionName = function() {
      if (state.nextPosition == null) {
        return originalFunctionName();
      }
      return state.nextPosition.name || originalFunctionName();
    };
    frame.getFileName = function() { return position.source; };
    frame.getLineNumber = function() { return position.line; };
    frame.getColumnNumber = function() { return position.column + 1; };
    frame.getScriptNameOrSourceURL = function() { return position.source; };
    return frame;
  }

  // Code called using eval() needs special handling
  var origin = frame.isEval() && frame.getEvalOrigin();
  if (origin) {
    origin = mapEvalOrigin(origin);
    frame = cloneCallSite(frame);
    frame.getEvalOrigin = function() { return origin; };
    return frame;
  }

  // If we get here then we were unable to change the source position
  return frame;
}

// This function is part of the V8 stack trace API, for more info see:
// https://v8.dev/docs/stack-trace-api
function prepareStackTrace(error, stack) {
  if (emptyCacheBetweenOperations) {
    fileContentsCache = {};
    sourceMapCache = {};
  }

  var name = error.name || 'Error';
  var message = error.message || '';
  var errorString = name + ": " + message;

  var state = { nextPosition: null, curPosition: null };
  var processedStack = [];
  for (var i = stack.length - 1; i >= 0; i--) {
    processedStack.push('\n    at ' + wrapCallSite(stack[i], state));
    state.nextPosition = state.curPosition;
  }
  state.curPosition = state.nextPosition = null;
  return errorString + processedStack.reverse().join('');
}

// Generate position and snippet of original source with pointer
function getErrorSource(error) {
  var match = /\n    at [^(]+ \((.*):(\d+):(\d+)\)/.exec(error.stack);
  if (match) {
    var source = match[1];
    var line = +match[2];
    var column = +match[3];

    // Support the inline sourceContents inside the source map
    var contents = fileContentsCache[source];

    // Support files on disk
    if (!contents && fs && fs.existsSync(source)) {
      try {
        contents = fs.readFileSync(source, 'utf8');
      } catch (er) {
        contents = '';
      }
    }

    // Format the line from the original source code like node does
    if (contents) {
      var code = contents.split(/(?:\r\n|\r|\n)/)[line - 1];
      if (code) {
        return source + ':' + line + '\n' + code + '\n' +
          new Array(column).join(' ') + '^';
      }
    }
  }
  return null;
}

function printErrorAndExit (error) {
  var source = getErrorSource(error);

  // Ensure error is printed synchronously and not truncated
  var stderr = globalProcessStderr();
  if (stderr && stderr._handle && stderr._handle.setBlocking) {
    stderr._handle.setBlocking(true);
  }

  if (source) {
    console.error();
    console.error(source);
  }

  console.error(error.stack);
  globalProcessExit(1);
}

function shimEmitUncaughtException () {
  var origEmit = process.emit;

  process.emit = function (type) {
    if (type === 'uncaughtException') {
      var hasStack = (arguments[1] && arguments[1].stack);
      var hasListeners = (this.listeners(type).length > 0);

      if (hasStack && !hasListeners) {
        return printErrorAndExit(arguments[1]);
      }
    }

    return origEmit.apply(this, arguments);
  };
}

var originalRetrieveFileHandlers = retrieveFileHandlers.slice(0);
var originalRetrieveMapHandlers = retrieveMapHandlers.slice(0);

exports.wrapCallSite = wrapCallSite;
exports.getErrorSource = getErrorSource;
exports.mapSourcePosition = mapSourcePosition;
exports.retrieveSourceMap = retrieveSourceMap;

exports.install = function(options) {
  options = options || {};

  if (options.environment) {
    environment = options.environment;
    if (["node", "browser", "auto"].indexOf(environment) === -1) {
      throw new Error("environment " + environment + " was unknown. Available options are {auto, browser, node}")
    }
  }

  // Allow sources to be found by methods other than reading the files
  // directly from disk.
  if (options.retrieveFile) {
    if (options.overrideRetrieveFile) {
      retrieveFileHandlers.length = 0;
    }

    retrieveFileHandlers.unshift(options.retrieveFile);
  }

  // Allow source maps to be found by methods other than reading the files
  // directly from disk.
  if (options.retrieveSourceMap) {
    if (options.overrideRetrieveSourceMap) {
      retrieveMapHandlers.length = 0;
    }

    retrieveMapHandlers.unshift(options.retrieveSourceMap);
  }

  // Support runtime transpilers that include inline source maps
  if (options.hookRequire && !isInBrowser()) {
    // Use dynamicRequire to avoid including in browser bundles
    var Module = dynamicRequire(module, 'module');
    var $compile = Module.prototype._compile;

    if (!$compile.__sourceMapSupport) {
      Module.prototype._compile = function(content, filename) {
        fileContentsCache[filename] = content;
        sourceMapCache[filename] = undefined;
        return $compile.call(this, content, filename);
      };

      Module.prototype._compile.__sourceMapSupport = true;
    }
  }

  // Configure options
  if (!emptyCacheBetweenOperations) {
    emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ?
      options.emptyCacheBetweenOperations : false;
  }

  // Install the error reformatter
  if (!errorFormatterInstalled) {
    errorFormatterInstalled = true;
    Error.prepareStackTrace = prepareStackTrace;
  }

  if (!uncaughtShimInstalled) {
    var installHandler = 'handleUncaughtExceptions' in options ?
      options.handleUncaughtExceptions : true;

    // Do not override 'uncaughtException' with our own handler in Node.js
    // Worker threads. Workers pass the error to the main thread as an event,
    // rather than printing something to stderr and exiting.
    try {
      // We need to use `dynamicRequire` because `require` on it's own will be optimized by WebPack/Browserify.
      var worker_threads = dynamicRequire(module, 'worker_threads');
      if (worker_threads.isMainThread === false) {
        installHandler = false;
      }
    } catch(e) {}

    // Provide the option to not install the uncaught exception handler. This is
    // to support other uncaught exception handlers (in test frameworks, for
    // example). If this handler is not installed and there are no other uncaught
    // exception handlers, uncaught exceptions will be caught by node's built-in
    // exception handler and the process will still be terminated. However, the
    // generated JavaScript code will be shown above the stack trace instead of
    // the original source code.
    if (installHandler && hasGlobalProcessEventEmitter()) {
      uncaughtShimInstalled = true;
      shimEmitUncaughtException();
    }
  }
};

exports.resetRetrieveHandlers = function() {
  retrieveFileHandlers.length = 0;
  retrieveMapHandlers.length = 0;

  retrieveFileHandlers = originalRetrieveFileHandlers.slice(0);
  retrieveMapHandlers = originalRetrieveMapHandlers.slice(0);

  retrieveSourceMap = handlerExec(retrieveMapHandlers);
  retrieveFile = handlerExec(retrieveFileHandlers);
}

/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! process/browser */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))

/***/ }),

/***/ "./node_modules/source-map/lib/array-set.js":
/*!**************************************************!*\
  !*** ./node_modules/source-map/lib/array-set.js ***!
  \**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

var util = __webpack_require__(/*! ./util */ "./node_modules/source-map/lib/util.js");
var has = Object.prototype.hasOwnProperty;
var hasNativeMap = typeof Map !== "undefined";

/**
 * A data structure which is a combination of an array and a set. Adding a new
 * member is O(1), testing for membership is O(1), and finding the index of an
 * element is O(1). Removing elements from the set is not supported. Only
 * strings are supported for membership.
 */
function ArraySet() {
  this._array = [];
  this._set = hasNativeMap ? new Map() : Object.create(null);
}

/**
 * Static method for creating ArraySet instances from an existing array.
 */
ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
  var set = new ArraySet();
  for (var i = 0, len = aArray.length; i < len; i++) {
    set.add(aArray[i], aAllowDuplicates);
  }
  return set;
};

/**
 * Return how many unique items are in this ArraySet. If duplicates have been
 * added, than those do not count towards the size.
 *
 * @returns Number
 */
ArraySet.prototype.size = function ArraySet_size() {
  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
};

/**
 * Add the given string to this set.
 *
 * @param String aStr
 */
ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
  var idx = this._array.length;
  if (!isDuplicate || aAllowDuplicates) {
    this._array.push(aStr);
  }
  if (!isDuplicate) {
    if (hasNativeMap) {
      this._set.set(aStr, idx);
    } else {
      this._set[sStr] = idx;
    }
  }
};

/**
 * Is the given string a member of this set?
 *
 * @param String aStr
 */
ArraySet.prototype.has = function ArraySet_has(aStr) {
  if (hasNativeMap) {
    return this._set.has(aStr);
  } else {
    var sStr = util.toSetString(aStr);
    return has.call(this._set, sStr);
  }
};

/**
 * What is the index of the given string in the array?
 *
 * @param String aStr
 */
ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
  if (hasNativeMap) {
    var idx = this._set.get(aStr);
    if (idx >= 0) {
        return idx;
    }
  } else {
    var sStr = util.toSetString(aStr);
    if (has.call(this._set, sStr)) {
      return this._set[sStr];
    }
  }

  throw new Error('"' + aStr + '" is not in the set.');
};

/**
 * What is the element at the given index?
 *
 * @param Number aIdx
 */
ArraySet.prototype.at = function ArraySet_at(aIdx) {
  if (aIdx >= 0 && aIdx < this._array.length) {
    return this._array[aIdx];
  }
  throw new Error('No element indexed by ' + aIdx);
};

/**
 * Returns the array representation of this set (which has the proper indices
 * indicated by indexOf). Note that this is a copy of the internal array used
 * for storing the members so that no one can mess with internal state.
 */
ArraySet.prototype.toArray = function ArraySet_toArray() {
  return this._array.slice();
};

exports.ArraySet = ArraySet;


/***/ }),

/***/ "./node_modules/source-map/lib/base64-vlq.js":
/*!***************************************************!*\
  !*** ./node_modules/source-map/lib/base64-vlq.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 *
 * Based on the Base 64 VLQ implementation in Closure Compiler:
 * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
 *
 * Copyright 2011 The Closure Compiler Authors. All rights reserved.
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above
 *    copyright notice, this list of conditions and the following
 *    disclaimer in the documentation and/or other materials provided
 *    with the distribution.
 *  * Neither the name of Google Inc. nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

var base64 = __webpack_require__(/*! ./base64 */ "./node_modules/source-map/lib/base64.js");

// A single base 64 digit can contain 6 bits of data. For the base 64 variable
// length quantities we use in the source map spec, the first bit is the sign,
// the next four bits are the actual value, and the 6th bit is the
// continuation bit. The continuation bit tells us whether there are more
// digits in this value following this digit.
//
//   Continuation
//   |    Sign
//   |    |
//   V    V
//   101011

var VLQ_BASE_SHIFT = 5;

// binary: 100000
var VLQ_BASE = 1 << VLQ_BASE_SHIFT;

// binary: 011111
var VLQ_BASE_MASK = VLQ_BASE - 1;

// binary: 100000
var VLQ_CONTINUATION_BIT = VLQ_BASE;

/**
 * Converts from a two-complement value to a value where the sign bit is
 * placed in the least significant bit.  For example, as decimals:
 *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
 *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
 */
function toVLQSigned(aValue) {
  return aValue < 0
    ? ((-aValue) << 1) + 1
    : (aValue << 1) + 0;
}

/**
 * Converts to a two-complement value from a value where the sign bit is
 * placed in the least significant bit.  For example, as decimals:
 *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1
 *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2
 */
function fromVLQSigned(aValue) {
  var isNegative = (aValue & 1) === 1;
  var shifted = aValue >> 1;
  return isNegative
    ? -shifted
    : shifted;
}

/**
 * Returns the base 64 VLQ encoded value.
 */
exports.encode = function base64VLQ_encode(aValue) {
  var encoded = "";
  var digit;

  var vlq = toVLQSigned(aValue);

  do {
    digit = vlq & VLQ_BASE_MASK;
    vlq >>>= VLQ_BASE_SHIFT;
    if (vlq > 0) {
      // There are still more digits in this value, so we must make sure the
      // continuation bit is marked.
      digit |= VLQ_CONTINUATION_BIT;
    }
    encoded += base64.encode(digit);
  } while (vlq > 0);

  return encoded;
};

/**
 * Decodes the next base 64 VLQ value from the given string and returns the
 * value and the rest of the string via the out parameter.
 */
exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
  var strLen = aStr.length;
  var result = 0;
  var shift = 0;
  var continuation, digit;

  do {
    if (aIndex >= strLen) {
      throw new Error("Expected more digits in base 64 VLQ value.");
    }

    digit = base64.decode(aStr.charCodeAt(aIndex++));
    if (digit === -1) {
      throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
    }

    continuation = !!(digit & VLQ_CONTINUATION_BIT);
    digit &= VLQ_BASE_MASK;
    result = result + (digit << shift);
    shift += VLQ_BASE_SHIFT;
  } while (continuation);

  aOutParam.value = fromVLQSigned(result);
  aOutParam.rest = aIndex;
};


/***/ }),

/***/ "./node_modules/source-map/lib/base64.js":
/*!***********************************************!*\
  !*** ./node_modules/source-map/lib/base64.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');

/**
 * Encode an integer in the range of 0 to 63 to a single base 64 digit.
 */
exports.encode = function (number) {
  if (0 <= number && number < intToCharMap.length) {
    return intToCharMap[number];
  }
  throw new TypeError("Must be between 0 and 63: " + number);
};

/**
 * Decode a single base 64 character code digit to an integer. Returns -1 on
 * failure.
 */
exports.decode = function (charCode) {
  var bigA = 65;     // 'A'
  var bigZ = 90;     // 'Z'

  var littleA = 97;  // 'a'
  var littleZ = 122; // 'z'

  var zero = 48;     // '0'
  var nine = 57;     // '9'

  var plus = 43;     // '+'
  var slash = 47;    // '/'

  var littleOffset = 26;
  var numberOffset = 52;

  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
  if (bigA <= charCode && charCode <= bigZ) {
    return (charCode - bigA);
  }

  // 26 - 51: abcdefghijklmnopqrstuvwxyz
  if (littleA <= charCode && charCode <= littleZ) {
    return (charCode - littleA + littleOffset);
  }

  // 52 - 61: 0123456789
  if (zero <= charCode && charCode <= nine) {
    return (charCode - zero + numberOffset);
  }

  // 62: +
  if (charCode == plus) {
    return 62;
  }

  // 63: /
  if (charCode == slash) {
    return 63;
  }

  // Invalid base64 digit.
  return -1;
};


/***/ }),

/***/ "./node_modules/source-map/lib/binary-search.js":
/*!******************************************************!*\
  !*** ./node_modules/source-map/lib/binary-search.js ***!
  \******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

exports.GREATEST_LOWER_BOUND = 1;
exports.LEAST_UPPER_BOUND = 2;

/**
 * Recursive implementation of binary search.
 *
 * @param aLow Indices here and lower do not contain the needle.
 * @param aHigh Indices here and higher do not contain the needle.
 * @param aNeedle The element being searched for.
 * @param aHaystack The non-empty array being searched.
 * @param aCompare Function which takes two elements and returns -1, 0, or 1.
 * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
 *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
 *     closest element that is smaller than or greater than the one we are
 *     searching for, respectively, if the exact element cannot be found.
 */
function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
  // This function terminates when one of the following is true:
  //
  //   1. We find the exact element we are looking for.
  //
  //   2. We did not find the exact element, but we can return the index of
  //      the next-closest element.
  //
  //   3. We did not find the exact element, and there is no next-closest
  //      element than the one we are searching for, so we return -1.
  var mid = Math.floor((aHigh - aLow) / 2) + aLow;
  var cmp = aCompare(aNeedle, aHaystack[mid], true);
  if (cmp === 0) {
    // Found the element we are looking for.
    return mid;
  }
  else if (cmp > 0) {
    // Our needle is greater than aHaystack[mid].
    if (aHigh - mid > 1) {
      // The element is in the upper half.
      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
    }

    // The exact needle element was not found in this haystack. Determine if
    // we are in termination case (3) or (2) and return the appropriate thing.
    if (aBias == exports.LEAST_UPPER_BOUND) {
      return aHigh < aHaystack.length ? aHigh : -1;
    } else {
      return mid;
    }
  }
  else {
    // Our needle is less than aHaystack[mid].
    if (mid - aLow > 1) {
      // The element is in the lower half.
      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
    }

    // we are in termination case (3) or (2) and return the appropriate thing.
    if (aBias == exports.LEAST_UPPER_BOUND) {
      return mid;
    } else {
      return aLow < 0 ? -1 : aLow;
    }
  }
}

/**
 * This is an implementation of binary search which will always try and return
 * the index of the closest element if there is no exact hit. This is because
 * mappings between original and generated line/col pairs are single points,
 * and there is an implicit region between each of them, so a miss just means
 * that you aren't on the very start of a region.
 *
 * @param aNeedle The element you are looking for.
 * @param aHaystack The array that is being searched.
 * @param aCompare A function which takes the needle and an element in the
 *     array and returns -1, 0, or 1 depending on whether the needle is less
 *     than, equal to, or greater than the element, respectively.
 * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
 *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
 *     closest element that is smaller than or greater than the one we are
 *     searching for, respectively, if the exact element cannot be found.
 *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
 */
exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
  if (aHaystack.length === 0) {
    return -1;
  }

  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);
  if (index < 0) {
    return -1;
  }

  // We have found either the exact element, or the next-closest element than
  // the one we are searching for. However, there may be more than one such
  // element. Make sure we always return the smallest of these.
  while (index - 1 >= 0) {
    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
      break;
    }
    --index;
  }

  return index;
};


/***/ }),

/***/ "./node_modules/source-map/lib/mapping-list.js":
/*!*****************************************************!*\
  !*** ./node_modules/source-map/lib/mapping-list.js ***!
  \*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2014 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

var util = __webpack_require__(/*! ./util */ "./node_modules/source-map/lib/util.js");

/**
 * Determine whether mappingB is after mappingA with respect to generated
 * position.
 */
function generatedPositionAfter(mappingA, mappingB) {
  // Optimized for most common case
  var lineA = mappingA.generatedLine;
  var lineB = mappingB.generatedLine;
  var columnA = mappingA.generatedColumn;
  var columnB = mappingB.generatedColumn;
  return lineB > lineA || lineB == lineA && columnB >= columnA ||
         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
}

/**
 * A data structure to provide a sorted view of accumulated mappings in a
 * performance conscious manner. It trades a neglibable overhead in general
 * case for a large speedup in case of mappings being added in order.
 */
function MappingList() {
  this._array = [];
  this._sorted = true;
  // Serves as infimum
  this._last = {generatedLine: -1, generatedColumn: 0};
}

/**
 * Iterate through internal items. This method takes the same arguments that
 * `Array.prototype.forEach` takes.
 *
 * NOTE: The order of the mappings is NOT guaranteed.
 */
MappingList.prototype.unsortedForEach =
  function MappingList_forEach(aCallback, aThisArg) {
    this._array.forEach(aCallback, aThisArg);
  };

/**
 * Add the given source mapping.
 *
 * @param Object aMapping
 */
MappingList.prototype.add = function MappingList_add(aMapping) {
  if (generatedPositionAfter(this._last, aMapping)) {
    this._last = aMapping;
    this._array.push(aMapping);
  } else {
    this._sorted = false;
    this._array.push(aMapping);
  }
};

/**
 * Returns the flat, sorted array of mappings. The mappings are sorted by
 * generated position.
 *
 * WARNING: This method returns internal data without copying, for
 * performance. The return value must NOT be mutated, and should be treated as
 * an immutable borrow. If you want to take ownership, you must make your own
 * copy.
 */
MappingList.prototype.toArray = function MappingList_toArray() {
  if (!this._sorted) {
    this._array.sort(util.compareByGeneratedPositionsInflated);
    this._sorted = true;
  }
  return this._array;
};

exports.MappingList = MappingList;


/***/ }),

/***/ "./node_modules/source-map/lib/quick-sort.js":
/*!***************************************************!*\
  !*** ./node_modules/source-map/lib/quick-sort.js ***!
  \***************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

// It turns out that some (most?) JavaScript engines don't self-host
// `Array.prototype.sort`. This makes sense because C++ will likely remain
// faster than JS when doing raw CPU-intensive sorting. However, when using a
// custom comparator function, calling back and forth between the VM's C++ and
// JIT'd JS is rather slow *and* loses JIT type information, resulting in
// worse generated code for the comparator function than would be optimal. In
// fact, when sorting with a comparator, these costs outweigh the benefits of
// sorting in C++. By using our own JS-implemented Quick Sort (below), we get
// a ~3500ms mean speed-up in `bench/bench.html`.

/**
 * Swap the elements indexed by `x` and `y` in the array `ary`.
 *
 * @param {Array} ary
 *        The array.
 * @param {Number} x
 *        The index of the first item.
 * @param {Number} y
 *        The index of the second item.
 */
function swap(ary, x, y) {
  var temp = ary[x];
  ary[x] = ary[y];
  ary[y] = temp;
}

/**
 * Returns a random integer within the range `low .. high` inclusive.
 *
 * @param {Number} low
 *        The lower bound on the range.
 * @param {Number} high
 *        The upper bound on the range.
 */
function randomIntInRange(low, high) {
  return Math.round(low + (Math.random() * (high - low)));
}

/**
 * The Quick Sort algorithm.
 *
 * @param {Array} ary
 *        An array to sort.
 * @param {function} comparator
 *        Function to use to compare two items.
 * @param {Number} p
 *        Start index of the array
 * @param {Number} r
 *        End index of the array
 */
function doQuickSort(ary, comparator, p, r) {
  // If our lower bound is less than our upper bound, we (1) partition the
  // array into two pieces and (2) recurse on each half. If it is not, this is
  // the empty array and our base case.

  if (p < r) {
    // (1) Partitioning.
    //
    // The partitioning chooses a pivot between `p` and `r` and moves all
    // elements that are less than or equal to the pivot to the before it, and
    // all the elements that are greater than it after it. The effect is that
    // once partition is done, the pivot is in the exact place it will be when
    // the array is put in sorted order, and it will not need to be moved
    // again. This runs in O(n) time.

    // Always choose a random pivot so that an input array which is reverse
    // sorted does not cause O(n^2) running time.
    var pivotIndex = randomIntInRange(p, r);
    var i = p - 1;

    swap(ary, pivotIndex, r);
    var pivot = ary[r];

    // Immediately after `j` is incremented in this loop, the following hold
    // true:
    //
    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.
    //
    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
    for (var j = p; j < r; j++) {
      if (comparator(ary[j], pivot) <= 0) {
        i += 1;
        swap(ary, i, j);
      }
    }

    swap(ary, i + 1, j);
    var q = i + 1;

    // (2) Recurse on each half.

    doQuickSort(ary, comparator, p, q - 1);
    doQuickSort(ary, comparator, q + 1, r);
  }
}

/**
 * Sort the given array in-place with the given comparator function.
 *
 * @param {Array} ary
 *        An array to sort.
 * @param {function} comparator
 *        Function to use to compare two items.
 */
exports.quickSort = function (ary, comparator) {
  doQuickSort(ary, comparator, 0, ary.length - 1);
};


/***/ }),

/***/ "./node_modules/source-map/lib/source-map-consumer.js":
/*!************************************************************!*\
  !*** ./node_modules/source-map/lib/source-map-consumer.js ***!
  \************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

var util = __webpack_require__(/*! ./util */ "./node_modules/source-map/lib/util.js");
var binarySearch = __webpack_require__(/*! ./binary-search */ "./node_modules/source-map/lib/binary-search.js");
var ArraySet = __webpack_require__(/*! ./array-set */ "./node_modules/source-map/lib/array-set.js").ArraySet;
var base64VLQ = __webpack_require__(/*! ./base64-vlq */ "./node_modules/source-map/lib/base64-vlq.js");
var quickSort = __webpack_require__(/*! ./quick-sort */ "./node_modules/source-map/lib/quick-sort.js").quickSort;

function SourceMapConsumer(aSourceMap, aSourceMapURL) {
  var sourceMap = aSourceMap;
  if (typeof aSourceMap === 'string') {
    sourceMap = util.parseSourceMapInput(aSourceMap);
  }

  return sourceMap.sections != null
    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)
    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);
}

SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {
  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);
}

/**
 * The version of the source mapping spec that we are consuming.
 */
SourceMapConsumer.prototype._version = 3;

// `__generatedMappings` and `__originalMappings` are arrays that hold the
// parsed mapping coordinates from the source map's "mappings" attribute. They
// are lazily instantiated, accessed via the `_generatedMappings` and
// `_originalMappings` getters respectively, and we only parse the mappings
// and create these arrays once queried for a source location. We jump through
// these hoops because there can be many thousands of mappings, and parsing
// them is expensive, so we only want to do it if we must.
//
// Each object in the arrays is of the form:
//
//     {
//       generatedLine: The line number in the generated code,
//       generatedColumn: The column number in the generated code,
//       source: The path to the original source file that generated this
//               chunk of code,
//       originalLine: The line number in the original source that
//                     corresponds to this chunk of generated code,
//       originalColumn: The column number in the original source that
//                       corresponds to this chunk of generated code,
//       name: The name of the original symbol which generated this chunk of
//             code.
//     }
//
// All properties except for `generatedLine` and `generatedColumn` can be
// `null`.
//
// `_generatedMappings` is ordered by the generated positions.
//
// `_originalMappings` is ordered by the original positions.

SourceMapConsumer.prototype.__generatedMappings = null;
Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
  configurable: true,
  enumerable: true,
  get: function () {
    if (!this.__generatedMappings) {
      this._parseMappings(this._mappings, this.sourceRoot);
    }

    return this.__generatedMappings;
  }
});

SourceMapConsumer.prototype.__originalMappings = null;
Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
  configurable: true,
  enumerable: true,
  get: function () {
    if (!this.__originalMappings) {
      this._parseMappings(this._mappings, this.sourceRoot);
    }

    return this.__originalMappings;
  }
});

SourceMapConsumer.prototype._charIsMappingSeparator =
  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
    var c = aStr.charAt(index);
    return c === ";" || c === ",";
  };

/**
 * Parse the mappings in a string in to a data structure which we can easily
 * query (the ordered arrays in the `this.__generatedMappings` and
 * `this.__originalMappings` properties).
 */
SourceMapConsumer.prototype._parseMappings =
  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
    throw new Error("Subclasses must implement _parseMappings");
  };

SourceMapConsumer.GENERATED_ORDER = 1;
SourceMapConsumer.ORIGINAL_ORDER = 2;

SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
SourceMapConsumer.LEAST_UPPER_BOUND = 2;

/**
 * Iterate over each mapping between an original source/line/column and a
 * generated line/column in this source map.
 *
 * @param Function aCallback
 *        The function that is called with each mapping.
 * @param Object aContext
 *        Optional. If specified, this object will be the value of `this` every
 *        time that `aCallback` is called.
 * @param aOrder
 *        Either `SourceMapConsumer.GENERATED_ORDER` or
 *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
 *        iterate over the mappings sorted by the generated file's line/column
 *        order or the original's source/line/column order, respectively. Defaults to
 *        `SourceMapConsumer.GENERATED_ORDER`.
 */
SourceMapConsumer.prototype.eachMapping =
  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
    var context = aContext || null;
    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;

    var mappings;
    switch (order) {
    case SourceMapConsumer.GENERATED_ORDER:
      mappings = this._generatedMappings;
      break;
    case SourceMapConsumer.ORIGINAL_ORDER:
      mappings = this._originalMappings;
      break;
    default:
      throw new Error("Unknown order of iteration.");
    }

    var sourceRoot = this.sourceRoot;
    mappings.map(function (mapping) {
      var source = mapping.source === null ? null : this._sources.at(mapping.source);
      source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);
      return {
        source: source,
        generatedLine: mapping.generatedLine,
        generatedColumn: mapping.generatedColumn,
        originalLine: mapping.originalLine,
        originalColumn: mapping.originalColumn,
        name: mapping.name === null ? null : this._names.at(mapping.name)
      };
    }, this).forEach(aCallback, context);
  };

/**
 * Returns all generated line and column information for the original source,
 * line, and column provided. If no column is provided, returns all mappings
 * corresponding to a either the line we are searching for or the next
 * closest line that has any mappings. Otherwise, returns all mappings
 * corresponding to the given line and either the column we are searching for
 * or the next closest column that has any offsets.
 *
 * The only argument is an object with the following properties:
 *
 *   - source: The filename of the original source.
 *   - line: The line number in the original source.  The line number is 1-based.
 *   - column: Optional. the column number in the original source.
 *    The column number is 0-based.
 *
 * and an array of objects is returned, each with the following properties:
 *
 *   - line: The line number in the generated source, or null.  The
 *    line number is 1-based.
 *   - column: The column number in the generated source, or null.
 *    The column number is 0-based.
 */
SourceMapConsumer.prototype.allGeneratedPositionsFor =
  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
    var line = util.getArg(aArgs, 'line');

    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
    // returns the index of the closest mapping less than the needle. By
    // setting needle.originalColumn to 0, we thus find the last mapping for
    // the given line, provided such a mapping exists.
    var needle = {
      source: util.getArg(aArgs, 'source'),
      originalLine: line,
      originalColumn: util.getArg(aArgs, 'column', 0)
    };

    needle.source = this._findSourceIndex(needle.source);
    if (needle.source < 0) {
      return [];
    }

    var mappings = [];

    var index = this._findMapping(needle,
                                  this._originalMappings,
                                  "originalLine",
                                  "originalColumn",
                                  util.compareByOriginalPositions,
                                  binarySearch.LEAST_UPPER_BOUND);
    if (index >= 0) {
      var mapping = this._originalMappings[index];

      if (aArgs.column === undefined) {
        var originalLine = mapping.originalLine;

        // Iterate until either we run out of mappings, or we run into
        // a mapping for a different line than the one we found. Since
        // mappings are sorted, this is guaranteed to find all mappings for
        // the line we found.
        while (mapping && mapping.originalLine === originalLine) {
          mappings.push({
            line: util.getArg(mapping, 'generatedLine', null),
            column: util.getArg(mapping, 'generatedColumn', null),
            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
          });

          mapping = this._originalMappings[++index];
        }
      } else {
        var originalColumn = mapping.originalColumn;

        // Iterate until either we run out of mappings, or we run into
        // a mapping for a different line than the one we were searching for.
        // Since mappings are sorted, this is guaranteed to find all mappings for
        // the line we are searching for.
        while (mapping &&
               mapping.originalLine === line &&
               mapping.originalColumn == originalColumn) {
          mappings.push({
            line: util.getArg(mapping, 'generatedLine', null),
            column: util.getArg(mapping, 'generatedColumn', null),
            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
          });

          mapping = this._originalMappings[++index];
        }
      }
    }

    return mappings;
  };

exports.SourceMapConsumer = SourceMapConsumer;

/**
 * A BasicSourceMapConsumer instance represents a parsed source map which we can
 * query for information about the original file positions by giving it a file
 * position in the generated source.
 *
 * The first parameter is the raw source map (either as a JSON string, or
 * already parsed to an object). According to the spec, source maps have the
 * following attributes:
 *
 *   - version: Which version of the source map spec this map is following.
 *   - sources: An array of URLs to the original source files.
 *   - names: An array of identifiers which can be referrenced by individual mappings.
 *   - sourceRoot: Optional. The URL root from which all sources are relative.
 *   - sourcesContent: Optional. An array of contents of the original source files.
 *   - mappings: A string of base64 VLQs which contain the actual mappings.
 *   - file: Optional. The generated file this source map is associated with.
 *
 * Here is an example source map, taken from the source map spec[0]:
 *
 *     {
 *       version : 3,
 *       file: "out.js",
 *       sourceRoot : "",
 *       sources: ["foo.js", "bar.js"],
 *       names: ["src", "maps", "are", "fun"],
 *       mappings: "AA,AB;;ABCDE;"
 *     }
 *
 * The second parameter, if given, is a string whose value is the URL
 * at which the source map was found.  This URL is used to compute the
 * sources array.
 *
 * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
 */
function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
  var sourceMap = aSourceMap;
  if (typeof aSourceMap === 'string') {
    sourceMap = util.parseSourceMapInput(aSourceMap);
  }

  var version = util.getArg(sourceMap, 'version');
  var sources = util.getArg(sourceMap, 'sources');
  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
  // requires the array) to play nice here.
  var names = util.getArg(sourceMap, 'names', []);
  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
  var mappings = util.getArg(sourceMap, 'mappings');
  var file = util.getArg(sourceMap, 'file', null);

  // Once again, Sass deviates from the spec and supplies the version as a
  // string rather than a number, so we use loose equality checking here.
  if (version != this._version) {
    throw new Error('Unsupported version: ' + version);
  }

  if (sourceRoot) {
    sourceRoot = util.normalize(sourceRoot);
  }

  sources = sources
    .map(String)
    // Some source maps produce relative source paths like "./foo.js" instead of
    // "foo.js".  Normalize these first so that future comparisons will succeed.
    // See bugzil.la/1090768.
    .map(util.normalize)
    // Always ensure that absolute sources are internally stored relative to
    // the source root, if the source root is absolute. Not doing this would
    // be particularly problematic when the source root is a prefix of the
    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
    .map(function (source) {
      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
        ? util.relative(sourceRoot, source)
        : source;
    });

  // Pass `true` below to allow duplicate names and sources. While source maps
  // are intended to be compressed and deduplicated, the TypeScript compiler
  // sometimes generates source maps with duplicates in them. See Github issue
  // #72 and bugzil.la/889492.
  this._names = ArraySet.fromArray(names.map(String), true);
  this._sources = ArraySet.fromArray(sources, true);

  this._absoluteSources = this._sources.toArray().map(function (s) {
    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
  });

  this.sourceRoot = sourceRoot;
  this.sourcesContent = sourcesContent;
  this._mappings = mappings;
  this._sourceMapURL = aSourceMapURL;
  this.file = file;
}

BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;

/**
 * Utility function to find the index of a source.  Returns -1 if not
 * found.
 */
BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
  var relativeSource = aSource;
  if (this.sourceRoot != null) {
    relativeSource = util.relative(this.sourceRoot, relativeSource);
  }

  if (this._sources.has(relativeSource)) {
    return this._sources.indexOf(relativeSource);
  }

  // Maybe aSource is an absolute URL as returned by |sources|.  In
  // this case we can't simply undo the transform.
  var i;
  for (i = 0; i < this._absoluteSources.length; ++i) {
    if (this._absoluteSources[i] == aSource) {
      return i;
    }
  }

  return -1;
};

/**
 * Create a BasicSourceMapConsumer from a SourceMapGenerator.
 *
 * @param SourceMapGenerator aSourceMap
 *        The source map that will be consumed.
 * @param String aSourceMapURL
 *        The URL at which the source map can be found (optional)
 * @returns BasicSourceMapConsumer
 */
BasicSourceMapConsumer.fromSourceMap =
  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {
    var smc = Object.create(BasicSourceMapConsumer.prototype);

    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
    smc.sourceRoot = aSourceMap._sourceRoot;
    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
                                                            smc.sourceRoot);
    smc.file = aSourceMap._file;
    smc._sourceMapURL = aSourceMapURL;
    smc._absoluteSources = smc._sources.toArray().map(function (s) {
      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);
    });

    // Because we are modifying the entries (by converting string sources and
    // names to indices into the sources and names ArraySets), we have to make
    // a copy of the entry or else bad things happen. Shared mutable state
    // strikes again! See github issue #191.

    var generatedMappings = aSourceMap._mappings.toArray().slice();
    var destGeneratedMappings = smc.__generatedMappings = [];
    var destOriginalMappings = smc.__originalMappings = [];

    for (var i = 0, length = generatedMappings.length; i < length; i++) {
      var srcMapping = generatedMappings[i];
      var destMapping = new Mapping;
      destMapping.generatedLine = srcMapping.generatedLine;
      destMapping.generatedColumn = srcMapping.generatedColumn;

      if (srcMapping.source) {
        destMapping.source = sources.indexOf(srcMapping.source);
        destMapping.originalLine = srcMapping.originalLine;
        destMapping.originalColumn = srcMapping.originalColumn;

        if (srcMapping.name) {
          destMapping.name = names.indexOf(srcMapping.name);
        }

        destOriginalMappings.push(destMapping);
      }

      destGeneratedMappings.push(destMapping);
    }

    quickSort(smc.__originalMappings, util.compareByOriginalPositions);

    return smc;
  };

/**
 * The version of the source mapping spec that we are consuming.
 */
BasicSourceMapConsumer.prototype._version = 3;

/**
 * The list of original sources.
 */
Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
  get: function () {
    return this._absoluteSources.slice();
  }
});

/**
 * Provide the JIT with a nice shape / hidden class.
 */
function Mapping() {
  this.generatedLine = 0;
  this.generatedColumn = 0;
  this.source = null;
  this.originalLine = null;
  this.originalColumn = null;
  this.name = null;
}

/**
 * Parse the mappings in a string in to a data structure which we can easily
 * query (the ordered arrays in the `this.__generatedMappings` and
 * `this.__originalMappings` properties).
 */
BasicSourceMapConsumer.prototype._parseMappings =
  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
    var generatedLine = 1;
    var previousGeneratedColumn = 0;
    var previousOriginalLine = 0;
    var previousOriginalColumn = 0;
    var previousSource = 0;
    var previousName = 0;
    var length = aStr.length;
    var index = 0;
    var cachedSegments = {};
    var temp = {};
    var originalMappings = [];
    var generatedMappings = [];
    var mapping, str, segment, end, value;

    while (index < length) {
      if (aStr.charAt(index) === ';') {
        generatedLine++;
        index++;
        previousGeneratedColumn = 0;
      }
      else if (aStr.charAt(index) === ',') {
        index++;
      }
      else {
        mapping = new Mapping();
        mapping.generatedLine = generatedLine;

        // Because each offset is encoded relative to the previous one,
        // many segments often have the same encoding. We can exploit this
        // fact by caching the parsed variable length fields of each segment,
        // allowing us to avoid a second parse if we encounter the same
        // segment again.
        for (end = index; end < length; end++) {
          if (this._charIsMappingSeparator(aStr, end)) {
            break;
          }
        }
        str = aStr.slice(index, end);

        segment = cachedSegments[str];
        if (segment) {
          index += str.length;
        } else {
          segment = [];
          while (index < end) {
            base64VLQ.decode(aStr, index, temp);
            value = temp.value;
            index = temp.rest;
            segment.push(value);
          }

          if (segment.length === 2) {
            throw new Error('Found a source, but no line and column');
          }

          if (segment.length === 3) {
            throw new Error('Found a source and line, but no column');
          }

          cachedSegments[str] = segment;
        }

        // Generated column.
        mapping.generatedColumn = previousGeneratedColumn + segment[0];
        previousGeneratedColumn = mapping.generatedColumn;

        if (segment.length > 1) {
          // Original source.
          mapping.source = previousSource + segment[1];
          previousSource += segment[1];

          // Original line.
          mapping.originalLine = previousOriginalLine + segment[2];
          previousOriginalLine = mapping.originalLine;
          // Lines are stored 0-based
          mapping.originalLine += 1;

          // Original column.
          mapping.originalColumn = previousOriginalColumn + segment[3];
          previousOriginalColumn = mapping.originalColumn;

          if (segment.length > 4) {
            // Original name.
            mapping.name = previousName + segment[4];
            previousName += segment[4];
          }
        }

        generatedMappings.push(mapping);
        if (typeof mapping.originalLine === 'number') {
          originalMappings.push(mapping);
        }
      }
    }

    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
    this.__generatedMappings = generatedMappings;

    quickSort(originalMappings, util.compareByOriginalPositions);
    this.__originalMappings = originalMappings;
  };

/**
 * Find the mapping that best matches the hypothetical "needle" mapping that
 * we are searching for in the given "haystack" of mappings.
 */
BasicSourceMapConsumer.prototype._findMapping =
  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
                                         aColumnName, aComparator, aBias) {
    // To return the position we are searching for, we must first find the
    // mapping for the given position and then return the opposite position it
    // points to. Because the mappings are sorted, we can use binary search to
    // find the best mapping.

    if (aNeedle[aLineName] <= 0) {
      throw new TypeError('Line must be greater than or equal to 1, got '
                          + aNeedle[aLineName]);
    }
    if (aNeedle[aColumnName] < 0) {
      throw new TypeError('Column must be greater than or equal to 0, got '
                          + aNeedle[aColumnName]);
    }

    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
  };

/**
 * Compute the last column for each generated mapping. The last column is
 * inclusive.
 */
BasicSourceMapConsumer.prototype.computeColumnSpans =
  function SourceMapConsumer_computeColumnSpans() {
    for (var index = 0; index < this._generatedMappings.length; ++index) {
      var mapping = this._generatedMappings[index];

      // Mappings do not contain a field for the last generated columnt. We
      // can come up with an optimistic estimate, however, by assuming that
      // mappings are contiguous (i.e. given two consecutive mappings, the
      // first mapping ends where the second one starts).
      if (index + 1 < this._generatedMappings.length) {
        var nextMapping = this._generatedMappings[index + 1];

        if (mapping.generatedLine === nextMapping.generatedLine) {
          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
          continue;
        }
      }

      // The last mapping for each line spans the entire line.
      mapping.lastGeneratedColumn = Infinity;
    }
  };

/**
 * Returns the original source, line, and column information for the generated
 * source's line and column positions provided. The only argument is an object
 * with the following properties:
 *
 *   - line: The line number in the generated source.  The line number
 *     is 1-based.
 *   - column: The column number in the generated source.  The column
 *     number is 0-based.
 *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
 *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
 *     closest element that is smaller than or greater than the one we are
 *     searching for, respectively, if the exact element cannot be found.
 *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
 *
 * and an object is returned with the following properties:
 *
 *   - source: The original source file, or null.
 *   - line: The line number in the original source, or null.  The
 *     line number is 1-based.
 *   - column: The column number in the original source, or null.  The
 *     column number is 0-based.
 *   - name: The original identifier, or null.
 */
BasicSourceMapConsumer.prototype.originalPositionFor =
  function SourceMapConsumer_originalPositionFor(aArgs) {
    var needle = {
      generatedLine: util.getArg(aArgs, 'line'),
      generatedColumn: util.getArg(aArgs, 'column')
    };

    var index = this._findMapping(
      needle,
      this._generatedMappings,
      "generatedLine",
      "generatedColumn",
      util.compareByGeneratedPositionsDeflated,
      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
    );

    if (index >= 0) {
      var mapping = this._generatedMappings[index];

      if (mapping.generatedLine === needle.generatedLine) {
        var source = util.getArg(mapping, 'source', null);
        if (source !== null) {
          source = this._sources.at(source);
          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
        }
        var name = util.getArg(mapping, 'name', null);
        if (name !== null) {
          name = this._names.at(name);
        }
        return {
          source: source,
          line: util.getArg(mapping, 'originalLine', null),
          column: util.getArg(mapping, 'originalColumn', null),
          name: name
        };
      }
    }

    return {
      source: null,
      line: null,
      column: null,
      name: null
    };
  };

/**
 * Return true if we have the source content for every source in the source
 * map, false otherwise.
 */
BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
  function BasicSourceMapConsumer_hasContentsOfAllSources() {
    if (!this.sourcesContent) {
      return false;
    }
    return this.sourcesContent.length >= this._sources.size() &&
      !this.sourcesContent.some(function (sc) { return sc == null; });
  };

/**
 * Returns the original source content. The only argument is the url of the
 * original source file. Returns null if no original source content is
 * available.
 */
BasicSourceMapConsumer.prototype.sourceContentFor =
  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
    if (!this.sourcesContent) {
      return null;
    }

    var index = this._findSourceIndex(aSource);
    if (index >= 0) {
      return this.sourcesContent[index];
    }

    var relativeSource = aSource;
    if (this.sourceRoot != null) {
      relativeSource = util.relative(this.sourceRoot, relativeSource);
    }

    var url;
    if (this.sourceRoot != null
        && (url = util.urlParse(this.sourceRoot))) {
      // XXX: file:// URIs and absolute paths lead to unexpected behavior for
      // many users. We can help them out when they expect file:// URIs to
      // behave like it would if they were running a local HTTP server. See
      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
      var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");
      if (url.scheme == "file"
          && this._sources.has(fileUriAbsPath)) {
        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
      }

      if ((!url.path || url.path == "/")
          && this._sources.has("/" + relativeSource)) {
        return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
      }
    }

    // This function is used recursively from
    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
    // don't want to throw if we can't find the source - we just want to
    // return null, so we provide a flag to exit gracefully.
    if (nullOnMissing) {
      return null;
    }
    else {
      throw new Error('"' + relativeSource + '" is not in the SourceMap.');
    }
  };

/**
 * Returns the generated line and column information for the original source,
 * line, and column positions provided. The only argument is an object with
 * the following properties:
 *
 *   - source: The filename of the original source.
 *   - line: The line number in the original source.  The line number
 *     is 1-based.
 *   - column: The column number in the original source.  The column
 *     number is 0-based.
 *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
 *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
 *     closest element that is smaller than or greater than the one we are
 *     searching for, respectively, if the exact element cannot be found.
 *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
 *
 * and an object is returned with the following properties:
 *
 *   - line: The line number in the generated source, or null.  The
 *     line number is 1-based.
 *   - column: The column number in the generated source, or null.
 *     The column number is 0-based.
 */
BasicSourceMapConsumer.prototype.generatedPositionFor =
  function SourceMapConsumer_generatedPositionFor(aArgs) {
    var source = util.getArg(aArgs, 'source');
    source = this._findSourceIndex(source);
    if (source < 0) {
      return {
        line: null,
        column: null,
        lastColumn: null
      };
    }

    var needle = {
      source: source,
      originalLine: util.getArg(aArgs, 'line'),
      originalColumn: util.getArg(aArgs, 'column')
    };

    var index = this._findMapping(
      needle,
      this._originalMappings,
      "originalLine",
      "originalColumn",
      util.compareByOriginalPositions,
      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
    );

    if (index >= 0) {
      var mapping = this._originalMappings[index];

      if (mapping.source === needle.source) {
        return {
          line: util.getArg(mapping, 'generatedLine', null),
          column: util.getArg(mapping, 'generatedColumn', null),
          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
        };
      }
    }

    return {
      line: null,
      column: null,
      lastColumn: null
    };
  };

exports.BasicSourceMapConsumer = BasicSourceMapConsumer;

/**
 * An IndexedSourceMapConsumer instance represents a parsed source map which
 * we can query for information. It differs from BasicSourceMapConsumer in
 * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
 * input.
 *
 * The first parameter is a raw source map (either as a JSON string, or already
 * parsed to an object). According to the spec for indexed source maps, they
 * have the following attributes:
 *
 *   - version: Which version of the source map spec this map is following.
 *   - file: Optional. The generated file this source map is associated with.
 *   - sections: A list of section definitions.
 *
 * Each value under the "sections" field has two fields:
 *   - offset: The offset into the original specified at which this section
 *       begins to apply, defined as an object with a "line" and "column"
 *       field.
 *   - map: A source map definition. This source map could also be indexed,
 *       but doesn't have to be.
 *
 * Instead of the "map" field, it's also possible to have a "url" field
 * specifying a URL to retrieve a source map from, but that's currently
 * unsupported.
 *
 * Here's an example source map, taken from the source map spec[0], but
 * modified to omit a section which uses the "url" field.
 *
 *  {
 *    version : 3,
 *    file: "app.js",
 *    sections: [{
 *      offset: {line:100, column:10},
 *      map: {
 *        version : 3,
 *        file: "section.js",
 *        sources: ["foo.js", "bar.js"],
 *        names: ["src", "maps", "are", "fun"],
 *        mappings: "AAAA,E;;ABCDE;"
 *      }
 *    }],
 *  }
 *
 * The second parameter, if given, is a string whose value is the URL
 * at which the source map was found.  This URL is used to compute the
 * sources array.
 *
 * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
 */
function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
  var sourceMap = aSourceMap;
  if (typeof aSourceMap === 'string') {
    sourceMap = util.parseSourceMapInput(aSourceMap);
  }

  var version = util.getArg(sourceMap, 'version');
  var sections = util.getArg(sourceMap, 'sections');

  if (version != this._version) {
    throw new Error('Unsupported version: ' + version);
  }

  this._sources = new ArraySet();
  this._names = new ArraySet();

  var lastOffset = {
    line: -1,
    column: 0
  };
  this._sections = sections.map(function (s) {
    if (s.url) {
      // The url field will require support for asynchronicity.
      // See https://github.com/mozilla/source-map/issues/16
      throw new Error('Support for url field in sections not implemented.');
    }
    var offset = util.getArg(s, 'offset');
    var offsetLine = util.getArg(offset, 'line');
    var offsetColumn = util.getArg(offset, 'column');

    if (offsetLine < lastOffset.line ||
        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
      throw new Error('Section offsets must be ordered and non-overlapping.');
    }
    lastOffset = offset;

    return {
      generatedOffset: {
        // The offset fields are 0-based, but we use 1-based indices when
        // encoding/decoding from VLQ.
        generatedLine: offsetLine + 1,
        generatedColumn: offsetColumn + 1
      },
      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)
    }
  });
}

IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;

/**
 * The version of the source mapping spec that we are consuming.
 */
IndexedSourceMapConsumer.prototype._version = 3;

/**
 * The list of original sources.
 */
Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
  get: function () {
    var sources = [];
    for (var i = 0; i < this._sections.length; i++) {
      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
        sources.push(this._sections[i].consumer.sources[j]);
      }
    }
    return sources;
  }
});

/**
 * Returns the original source, line, and column information for the generated
 * source's line and column positions provided. The only argument is an object
 * with the following properties:
 *
 *   - line: The line number in the generated source.  The line number
 *     is 1-based.
 *   - column: The column number in the generated source.  The column
 *     number is 0-based.
 *
 * and an object is returned with the following properties:
 *
 *   - source: The original source file, or null.
 *   - line: The line number in the original source, or null.  The
 *     line number is 1-based.
 *   - column: The column number in the original source, or null.  The
 *     column number is 0-based.
 *   - name: The original identifier, or null.
 */
IndexedSourceMapConsumer.prototype.originalPositionFor =
  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
    var needle = {
      generatedLine: util.getArg(aArgs, 'line'),
      generatedColumn: util.getArg(aArgs, 'column')
    };

    // Find the section containing the generated position we're trying to map
    // to an original position.
    var sectionIndex = binarySearch.search(needle, this._sections,
      function(needle, section) {
        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
        if (cmp) {
          return cmp;
        }

        return (needle.generatedColumn -
                section.generatedOffset.generatedColumn);
      });
    var section = this._sections[sectionIndex];

    if (!section) {
      return {
        source: null,
        line: null,
        column: null,
        name: null
      };
    }

    return section.consumer.originalPositionFor({
      line: needle.generatedLine -
        (section.generatedOffset.generatedLine - 1),
      column: needle.generatedColumn -
        (section.generatedOffset.generatedLine === needle.generatedLine
         ? section.generatedOffset.generatedColumn - 1
         : 0),
      bias: aArgs.bias
    });
  };

/**
 * Return true if we have the source content for every source in the source
 * map, false otherwise.
 */
IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
  function IndexedSourceMapConsumer_hasContentsOfAllSources() {
    return this._sections.every(function (s) {
      return s.consumer.hasContentsOfAllSources();
    });
  };

/**
 * Returns the original source content. The only argument is the url of the
 * original source file. Returns null if no original source content is
 * available.
 */
IndexedSourceMapConsumer.prototype.sourceContentFor =
  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
    for (var i = 0; i < this._sections.length; i++) {
      var section = this._sections[i];

      var content = section.consumer.sourceContentFor(aSource, true);
      if (content) {
        return content;
      }
    }
    if (nullOnMissing) {
      return null;
    }
    else {
      throw new Error('"' + aSource + '" is not in the SourceMap.');
    }
  };

/**
 * Returns the generated line and column information for the original source,
 * line, and column positions provided. The only argument is an object with
 * the following properties:
 *
 *   - source: The filename of the original source.
 *   - line: The line number in the original source.  The line number
 *     is 1-based.
 *   - column: The column number in the original source.  The column
 *     number is 0-based.
 *
 * and an object is returned with the following properties:
 *
 *   - line: The line number in the generated source, or null.  The
 *     line number is 1-based. 
 *   - column: The column number in the generated source, or null.
 *     The column number is 0-based.
 */
IndexedSourceMapConsumer.prototype.generatedPositionFor =
  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
    for (var i = 0; i < this._sections.length; i++) {
      var section = this._sections[i];

      // Only consider this section if the requested source is in the list of
      // sources of the consumer.
      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {
        continue;
      }
      var generatedPosition = section.consumer.generatedPositionFor(aArgs);
      if (generatedPosition) {
        var ret = {
          line: generatedPosition.line +
            (section.generatedOffset.generatedLine - 1),
          column: generatedPosition.column +
            (section.generatedOffset.generatedLine === generatedPosition.line
             ? section.generatedOffset.generatedColumn - 1
             : 0)
        };
        return ret;
      }
    }

    return {
      line: null,
      column: null
    };
  };

/**
 * Parse the mappings in a string in to a data structure which we can easily
 * query (the ordered arrays in the `this.__generatedMappings` and
 * `this.__originalMappings` properties).
 */
IndexedSourceMapConsumer.prototype._parseMappings =
  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
    this.__generatedMappings = [];
    this.__originalMappings = [];
    for (var i = 0; i < this._sections.length; i++) {
      var section = this._sections[i];
      var sectionMappings = section.consumer._generatedMappings;
      for (var j = 0; j < sectionMappings.length; j++) {
        var mapping = sectionMappings[j];

        var source = section.consumer._sources.at(mapping.source);
        source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);
        this._sources.add(source);
        source = this._sources.indexOf(source);

        var name = null;
        if (mapping.name) {
          name = section.consumer._names.at(mapping.name);
          this._names.add(name);
          name = this._names.indexOf(name);
        }

        // The mappings coming from the consumer for the section have
        // generated positions relative to the start of the section, so we
        // need to offset them to be relative to the start of the concatenated
        // generated file.
        var adjustedMapping = {
          source: source,
          generatedLine: mapping.generatedLine +
            (section.generatedOffset.generatedLine - 1),
          generatedColumn: mapping.generatedColumn +
            (section.generatedOffset.generatedLine === mapping.generatedLine
            ? section.generatedOffset.generatedColumn - 1
            : 0),
          originalLine: mapping.originalLine,
          originalColumn: mapping.originalColumn,
          name: name
        };

        this.__generatedMappings.push(adjustedMapping);
        if (typeof adjustedMapping.originalLine === 'number') {
          this.__originalMappings.push(adjustedMapping);
        }
      }
    }

    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
    quickSort(this.__originalMappings, util.compareByOriginalPositions);
  };

exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;


/***/ }),

/***/ "./node_modules/source-map/lib/source-map-generator.js":
/*!*************************************************************!*\
  !*** ./node_modules/source-map/lib/source-map-generator.js ***!
  \*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

var base64VLQ = __webpack_require__(/*! ./base64-vlq */ "./node_modules/source-map/lib/base64-vlq.js");
var util = __webpack_require__(/*! ./util */ "./node_modules/source-map/lib/util.js");
var ArraySet = __webpack_require__(/*! ./array-set */ "./node_modules/source-map/lib/array-set.js").ArraySet;
var MappingList = __webpack_require__(/*! ./mapping-list */ "./node_modules/source-map/lib/mapping-list.js").MappingList;

/**
 * An instance of the SourceMapGenerator represents a source map which is
 * being built incrementally. You may pass an object with the following
 * properties:
 *
 *   - file: The filename of the generated source.
 *   - sourceRoot: A root for all relative URLs in this source map.
 */
function SourceMapGenerator(aArgs) {
  if (!aArgs) {
    aArgs = {};
  }
  this._file = util.getArg(aArgs, 'file', null);
  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
  this._sources = new ArraySet();
  this._names = new ArraySet();
  this._mappings = new MappingList();
  this._sourcesContents = null;
}

SourceMapGenerator.prototype._version = 3;

/**
 * Creates a new SourceMapGenerator based on a SourceMapConsumer
 *
 * @param aSourceMapConsumer The SourceMap.
 */
SourceMapGenerator.fromSourceMap =
  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
    var sourceRoot = aSourceMapConsumer.sourceRoot;
    var generator = new SourceMapGenerator({
      file: aSourceMapConsumer.file,
      sourceRoot: sourceRoot
    });
    aSourceMapConsumer.eachMapping(function (mapping) {
      var newMapping = {
        generated: {
          line: mapping.generatedLine,
          column: mapping.generatedColumn
        }
      };

      if (mapping.source != null) {
        newMapping.source = mapping.source;
        if (sourceRoot != null) {
          newMapping.source = util.relative(sourceRoot, newMapping.source);
        }

        newMapping.original = {
          line: mapping.originalLine,
          column: mapping.originalColumn
        };

        if (mapping.name != null) {
          newMapping.name = mapping.name;
        }
      }

      generator.addMapping(newMapping);
    });
    aSourceMapConsumer.sources.forEach(function (sourceFile) {
      var sourceRelative = sourceFile;
      if (sourceRoot !== null) {
        sourceRelative = util.relative(sourceRoot, sourceFile);
      }

      if (!generator._sources.has(sourceRelative)) {
        generator._sources.add(sourceRelative);
      }

      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
      if (content != null) {
        generator.setSourceContent(sourceFile, content);
      }
    });
    return generator;
  };

/**
 * Add a single mapping from original source line and column to the generated
 * source's line and column for this source map being created. The mapping
 * object should have the following properties:
 *
 *   - generated: An object with the generated line and column positions.
 *   - original: An object with the original line and column positions.
 *   - source: The original source file (relative to the sourceRoot).
 *   - name: An optional original token name for this mapping.
 */
SourceMapGenerator.prototype.addMapping =
  function SourceMapGenerator_addMapping(aArgs) {
    var generated = util.getArg(aArgs, 'generated');
    var original = util.getArg(aArgs, 'original', null);
    var source = util.getArg(aArgs, 'source', null);
    var name = util.getArg(aArgs, 'name', null);

    if (!this._skipValidation) {
      this._validateMapping(generated, original, source, name);
    }

    if (source != null) {
      source = String(source);
      if (!this._sources.has(source)) {
        this._sources.add(source);
      }
    }

    if (name != null) {
      name = String(name);
      if (!this._names.has(name)) {
        this._names.add(name);
      }
    }

    this._mappings.add({
      generatedLine: generated.line,
      generatedColumn: generated.column,
      originalLine: original != null && original.line,
      originalColumn: original != null && original.column,
      source: source,
      name: name
    });
  };

/**
 * Set the source content for a source file.
 */
SourceMapGenerator.prototype.setSourceContent =
  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
    var source = aSourceFile;
    if (this._sourceRoot != null) {
      source = util.relative(this._sourceRoot, source);
    }

    if (aSourceContent != null) {
      // Add the source content to the _sourcesContents map.
      // Create a new _sourcesContents map if the property is null.
      if (!this._sourcesContents) {
        this._sourcesContents = Object.create(null);
      }
      this._sourcesContents[util.toSetString(source)] = aSourceContent;
    } else if (this._sourcesContents) {
      // Remove the source file from the _sourcesContents map.
      // If the _sourcesContents map is empty, set the property to null.
      delete this._sourcesContents[util.toSetString(source)];
      if (Object.keys(this._sourcesContents).length === 0) {
        this._sourcesContents = null;
      }
    }
  };

/**
 * Applies the mappings of a sub-source-map for a specific source file to the
 * source map being generated. Each mapping to the supplied source file is
 * rewritten using the supplied source map. Note: The resolution for the
 * resulting mappings is the minimium of this map and the supplied map.
 *
 * @param aSourceMapConsumer The source map to be applied.
 * @param aSourceFile Optional. The filename of the source file.
 *        If omitted, SourceMapConsumer's file property will be used.
 * @param aSourceMapPath Optional. The dirname of the path to the source map
 *        to be applied. If relative, it is relative to the SourceMapConsumer.
 *        This parameter is needed when the two source maps aren't in the same
 *        directory, and the source map to be applied contains relative source
 *        paths. If so, those relative source paths need to be rewritten
 *        relative to the SourceMapGenerator.
 */
SourceMapGenerator.prototype.applySourceMap =
  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
    var sourceFile = aSourceFile;
    // If aSourceFile is omitted, we will use the file property of the SourceMap
    if (aSourceFile == null) {
      if (aSourceMapConsumer.file == null) {
        throw new Error(
          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
          'or the source map\'s "file" property. Both were omitted.'
        );
      }
      sourceFile = aSourceMapConsumer.file;
    }
    var sourceRoot = this._sourceRoot;
    // Make "sourceFile" relative if an absolute Url is passed.
    if (sourceRoot != null) {
      sourceFile = util.relative(sourceRoot, sourceFile);
    }
    // Applying the SourceMap can add and remove items from the sources and
    // the names array.
    var newSources = new ArraySet();
    var newNames = new ArraySet();

    // Find mappings for the "sourceFile"
    this._mappings.unsortedForEach(function (mapping) {
      if (mapping.source === sourceFile && mapping.originalLine != null) {
        // Check if it can be mapped by the source map, then update the mapping.
        var original = aSourceMapConsumer.originalPositionFor({
          line: mapping.originalLine,
          column: mapping.originalColumn
        });
        if (original.source != null) {
          // Copy mapping
          mapping.source = original.source;
          if (aSourceMapPath != null) {
            mapping.source = util.join(aSourceMapPath, mapping.source)
          }
          if (sourceRoot != null) {
            mapping.source = util.relative(sourceRoot, mapping.source);
          }
          mapping.originalLine = original.line;
          mapping.originalColumn = original.column;
          if (original.name != null) {
            mapping.name = original.name;
          }
        }
      }

      var source = mapping.source;
      if (source != null && !newSources.has(source)) {
        newSources.add(source);
      }

      var name = mapping.name;
      if (name != null && !newNames.has(name)) {
        newNames.add(name);
      }

    }, this);
    this._sources = newSources;
    this._names = newNames;

    // Copy sourcesContents of applied map.
    aSourceMapConsumer.sources.forEach(function (sourceFile) {
      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
      if (content != null) {
        if (aSourceMapPath != null) {
          sourceFile = util.join(aSourceMapPath, sourceFile);
        }
        if (sourceRoot != null) {
          sourceFile = util.relative(sourceRoot, sourceFile);
        }
        this.setSourceContent(sourceFile, content);
      }
    }, this);
  };

/**
 * A mapping can have one of the three levels of data:
 *
 *   1. Just the generated position.
 *   2. The Generated position, original position, and original source.
 *   3. Generated and original position, original source, as well as a name
 *      token.
 *
 * To maintain consistency, we validate that any new mapping being added falls
 * in to one of these categories.
 */
SourceMapGenerator.prototype._validateMapping =
  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
                                              aName) {
    // When aOriginal is truthy but has empty values for .line and .column,
    // it is most likely a programmer error. In this case we throw a very
    // specific error message to try to guide them the right way.
    // For example: https://github.com/Polymer/polymer-bundler/pull/519
    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
        throw new Error(
            'original.line and original.column are not numbers -- you probably meant to omit ' +
            'the original mapping entirely and only map the generated position. If so, pass ' +
            'null for the original mapping instead of an object with empty or null values.'
        );
    }

    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
        && aGenerated.line > 0 && aGenerated.column >= 0
        && !aOriginal && !aSource && !aName) {
      // Case 1.
      return;
    }
    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
             && aOriginal && 'line' in aOriginal && 'column' in aOriginal
             && aGenerated.line > 0 && aGenerated.column >= 0
             && aOriginal.line > 0 && aOriginal.column >= 0
             && aSource) {
      // Cases 2 and 3.
      return;
    }
    else {
      throw new Error('Invalid mapping: ' + JSON.stringify({
        generated: aGenerated,
        source: aSource,
        original: aOriginal,
        name: aName
      }));
    }
  };

/**
 * Serialize the accumulated mappings in to the stream of base 64 VLQs
 * specified by the source map format.
 */
SourceMapGenerator.prototype._serializeMappings =
  function SourceMapGenerator_serializeMappings() {
    var previousGeneratedColumn = 0;
    var previousGeneratedLine = 1;
    var previousOriginalColumn = 0;
    var previousOriginalLine = 0;
    var previousName = 0;
    var previousSource = 0;
    var result = '';
    var next;
    var mapping;
    var nameIdx;
    var sourceIdx;

    var mappings = this._mappings.toArray();
    for (var i = 0, len = mappings.length; i < len; i++) {
      mapping = mappings[i];
      next = ''

      if (mapping.generatedLine !== previousGeneratedLine) {
        previousGeneratedColumn = 0;
        while (mapping.generatedLine !== previousGeneratedLine) {
          next += ';';
          previousGeneratedLine++;
        }
      }
      else {
        if (i > 0) {
          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
            continue;
          }
          next += ',';
        }
      }

      next += base64VLQ.encode(mapping.generatedColumn
                                 - previousGeneratedColumn);
      previousGeneratedColumn = mapping.generatedColumn;

      if (mapping.source != null) {
        sourceIdx = this._sources.indexOf(mapping.source);
        next += base64VLQ.encode(sourceIdx - previousSource);
        previousSource = sourceIdx;

        // lines are stored 0-based in SourceMap spec version 3
        next += base64VLQ.encode(mapping.originalLine - 1
                                   - previousOriginalLine);
        previousOriginalLine = mapping.originalLine - 1;

        next += base64VLQ.encode(mapping.originalColumn
                                   - previousOriginalColumn);
        previousOriginalColumn = mapping.originalColumn;

        if (mapping.name != null) {
          nameIdx = this._names.indexOf(mapping.name);
          next += base64VLQ.encode(nameIdx - previousName);
          previousName = nameIdx;
        }
      }

      result += next;
    }

    return result;
  };

SourceMapGenerator.prototype._generateSourcesContent =
  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
    return aSources.map(function (source) {
      if (!this._sourcesContents) {
        return null;
      }
      if (aSourceRoot != null) {
        source = util.relative(aSourceRoot, source);
      }
      var key = util.toSetString(source);
      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
        ? this._sourcesContents[key]
        : null;
    }, this);
  };

/**
 * Externalize the source map.
 */
SourceMapGenerator.prototype.toJSON =
  function SourceMapGenerator_toJSON() {
    var map = {
      version: this._version,
      sources: this._sources.toArray(),
      names: this._names.toArray(),
      mappings: this._serializeMappings()
    };
    if (this._file != null) {
      map.file = this._file;
    }
    if (this._sourceRoot != null) {
      map.sourceRoot = this._sourceRoot;
    }
    if (this._sourcesContents) {
      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
    }

    return map;
  };

/**
 * Render the source map being generated to a string.
 */
SourceMapGenerator.prototype.toString =
  function SourceMapGenerator_toString() {
    return JSON.stringify(this.toJSON());
  };

exports.SourceMapGenerator = SourceMapGenerator;


/***/ }),

/***/ "./node_modules/source-map/lib/source-node.js":
/*!****************************************************!*\
  !*** ./node_modules/source-map/lib/source-node.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

var SourceMapGenerator = __webpack_require__(/*! ./source-map-generator */ "./node_modules/source-map/lib/source-map-generator.js").SourceMapGenerator;
var util = __webpack_require__(/*! ./util */ "./node_modules/source-map/lib/util.js");

// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
// operating systems these days (capturing the result).
var REGEX_NEWLINE = /(\r?\n)/;

// Newline character code for charCodeAt() comparisons
var NEWLINE_CODE = 10;

// Private symbol for identifying `SourceNode`s when multiple versions of
// the source-map library are loaded. This MUST NOT CHANGE across
// versions!
var isSourceNode = "$$$isSourceNode$$$";

/**
 * SourceNodes provide a way to abstract over interpolating/concatenating
 * snippets of generated JavaScript source code while maintaining the line and
 * column information associated with the original source code.
 *
 * @param aLine The original line number.
 * @param aColumn The original column number.
 * @param aSource The original source's filename.
 * @param aChunks Optional. An array of strings which are snippets of
 *        generated JS, or other SourceNodes.
 * @param aName The original identifier.
 */
function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
  this.children = [];
  this.sourceContents = {};
  this.line = aLine == null ? null : aLine;
  this.column = aColumn == null ? null : aColumn;
  this.source = aSource == null ? null : aSource;
  this.name = aName == null ? null : aName;
  this[isSourceNode] = true;
  if (aChunks != null) this.add(aChunks);
}

/**
 * Creates a SourceNode from generated code and a SourceMapConsumer.
 *
 * @param aGeneratedCode The generated code
 * @param aSourceMapConsumer The SourceMap for the generated code
 * @param aRelativePath Optional. The path that relative sources in the
 *        SourceMapConsumer should be relative to.
 */
SourceNode.fromStringWithSourceMap =
  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
    // The SourceNode we want to fill with the generated code
    // and the SourceMap
    var node = new SourceNode();

    // All even indices of this array are one line of the generated code,
    // while all odd indices are the newlines between two adjacent lines
    // (since `REGEX_NEWLINE` captures its match).
    // Processed fragments are accessed by calling `shiftNextLine`.
    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
    var remainingLinesIndex = 0;
    var shiftNextLine = function() {
      var lineContents = getNextLine();
      // The last line of a file might not have a newline.
      var newLine = getNextLine() || "";
      return lineContents + newLine;

      function getNextLine() {
        return remainingLinesIndex < remainingLines.length ?
            remainingLines[remainingLinesIndex++] : undefined;
      }
    };

    // We need to remember the position of "remainingLines"
    var lastGeneratedLine = 1, lastGeneratedColumn = 0;

    // The generate SourceNodes we need a code range.
    // To extract it current and last mapping is used.
    // Here we store the last mapping.
    var lastMapping = null;

    aSourceMapConsumer.eachMapping(function (mapping) {
      if (lastMapping !== null) {
        // We add the code from "lastMapping" to "mapping":
        // First check if there is a new line in between.
        if (lastGeneratedLine < mapping.generatedLine) {
          // Associate first line with "lastMapping"
          addMappingWithCode(lastMapping, shiftNextLine());
          lastGeneratedLine++;
          lastGeneratedColumn = 0;
          // The remaining code is added without mapping
        } else {
          // There is no new line in between.
          // Associate the code between "lastGeneratedColumn" and
          // "mapping.generatedColumn" with "lastMapping"
          var nextLine = remainingLines[remainingLinesIndex] || '';
          var code = nextLine.substr(0, mapping.generatedColumn -
                                        lastGeneratedColumn);
          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
                                              lastGeneratedColumn);
          lastGeneratedColumn = mapping.generatedColumn;
          addMappingWithCode(lastMapping, code);
          // No more remaining code, continue
          lastMapping = mapping;
          return;
        }
      }
      // We add the generated code until the first mapping
      // to the SourceNode without any mapping.
      // Each line is added as separate string.
      while (lastGeneratedLine < mapping.generatedLine) {
        node.add(shiftNextLine());
        lastGeneratedLine++;
      }
      if (lastGeneratedColumn < mapping.generatedColumn) {
        var nextLine = remainingLines[remainingLinesIndex] || '';
        node.add(nextLine.substr(0, mapping.generatedColumn));
        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
        lastGeneratedColumn = mapping.generatedColumn;
      }
      lastMapping = mapping;
    }, this);
    // We have processed all mappings.
    if (remainingLinesIndex < remainingLines.length) {
      if (lastMapping) {
        // Associate the remaining code in the current line with "lastMapping"
        addMappingWithCode(lastMapping, shiftNextLine());
      }
      // and add the remaining lines without any mapping
      node.add(remainingLines.splice(remainingLinesIndex).join(""));
    }

    // Copy sourcesContent into SourceNode
    aSourceMapConsumer.sources.forEach(function (sourceFile) {
      var content = aSourceMapConsumer.sourceContentFor(sourceFile);
      if (content != null) {
        if (aRelativePath != null) {
          sourceFile = util.join(aRelativePath, sourceFile);
        }
        node.setSourceContent(sourceFile, content);
      }
    });

    return node;

    function addMappingWithCode(mapping, code) {
      if (mapping === null || mapping.source === undefined) {
        node.add(code);
      } else {
        var source = aRelativePath
          ? util.join(aRelativePath, mapping.source)
          : mapping.source;
        node.add(new SourceNode(mapping.originalLine,
                                mapping.originalColumn,
                                source,
                                code,
                                mapping.name));
      }
    }
  };

/**
 * Add a chunk of generated JS to this source node.
 *
 * @param aChunk A string snippet of generated JS code, another instance of
 *        SourceNode, or an array where each member is one of those things.
 */
SourceNode.prototype.add = function SourceNode_add(aChunk) {
  if (Array.isArray(aChunk)) {
    aChunk.forEach(function (chunk) {
      this.add(chunk);
    }, this);
  }
  else if (aChunk[isSourceNode] || typeof aChunk === "string") {
    if (aChunk) {
      this.children.push(aChunk);
    }
  }
  else {
    throw new TypeError(
      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
    );
  }
  return this;
};

/**
 * Add a chunk of generated JS to the beginning of this source node.
 *
 * @param aChunk A string snippet of generated JS code, another instance of
 *        SourceNode, or an array where each member is one of those things.
 */
SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
  if (Array.isArray(aChunk)) {
    for (var i = aChunk.length-1; i >= 0; i--) {
      this.prepend(aChunk[i]);
    }
  }
  else if (aChunk[isSourceNode] || typeof aChunk === "string") {
    this.children.unshift(aChunk);
  }
  else {
    throw new TypeError(
      "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
    );
  }
  return this;
};

/**
 * Walk over the tree of JS snippets in this node and its children. The
 * walking function is called once for each snippet of JS and is passed that
 * snippet and the its original associated source's line/column location.
 *
 * @param aFn The traversal function.
 */
SourceNode.prototype.walk = function SourceNode_walk(aFn) {
  var chunk;
  for (var i = 0, len = this.children.length; i < len; i++) {
    chunk = this.children[i];
    if (chunk[isSourceNode]) {
      chunk.walk(aFn);
    }
    else {
      if (chunk !== '') {
        aFn(chunk, { source: this.source,
                     line: this.line,
                     column: this.column,
                     name: this.name });
      }
    }
  }
};

/**
 * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
 * each of `this.children`.
 *
 * @param aSep The separator.
 */
SourceNode.prototype.join = function SourceNode_join(aSep) {
  var newChildren;
  var i;
  var len = this.children.length;
  if (len > 0) {
    newChildren = [];
    for (i = 0; i < len-1; i++) {
      newChildren.push(this.children[i]);
      newChildren.push(aSep);
    }
    newChildren.push(this.children[i]);
    this.children = newChildren;
  }
  return this;
};

/**
 * Call String.prototype.replace on the very right-most source snippet. Useful
 * for trimming whitespace from the end of a source node, etc.
 *
 * @param aPattern The pattern to replace.
 * @param aReplacement The thing to replace the pattern with.
 */
SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
  var lastChild = this.children[this.children.length - 1];
  if (lastChild[isSourceNode]) {
    lastChild.replaceRight(aPattern, aReplacement);
  }
  else if (typeof lastChild === 'string') {
    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
  }
  else {
    this.children.push(''.replace(aPattern, aReplacement));
  }
  return this;
};

/**
 * Set the source content for a source file. This will be added to the SourceMapGenerator
 * in the sourcesContent field.
 *
 * @param aSourceFile The filename of the source file
 * @param aSourceContent The content of the source file
 */
SourceNode.prototype.setSourceContent =
  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
  };

/**
 * Walk over the tree of SourceNodes. The walking function is called for each
 * source file content and is passed the filename and source content.
 *
 * @param aFn The traversal function.
 */
SourceNode.prototype.walkSourceContents =
  function SourceNode_walkSourceContents(aFn) {
    for (var i = 0, len = this.children.length; i < len; i++) {
      if (this.children[i][isSourceNode]) {
        this.children[i].walkSourceContents(aFn);
      }
    }

    var sources = Object.keys(this.sourceContents);
    for (var i = 0, len = sources.length; i < len; i++) {
      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
    }
  };

/**
 * Return the string representation of this source node. Walks over the tree
 * and concatenates all the various snippets together to one string.
 */
SourceNode.prototype.toString = function SourceNode_toString() {
  var str = "";
  this.walk(function (chunk) {
    str += chunk;
  });
  return str;
};

/**
 * Returns the string representation of this source node along with a source
 * map.
 */
SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
  var generated = {
    code: "",
    line: 1,
    column: 0
  };
  var map = new SourceMapGenerator(aArgs);
  var sourceMappingActive = false;
  var lastOriginalSource = null;
  var lastOriginalLine = null;
  var lastOriginalColumn = null;
  var lastOriginalName = null;
  this.walk(function (chunk, original) {
    generated.code += chunk;
    if (original.source !== null
        && original.line !== null
        && original.column !== null) {
      if(lastOriginalSource !== original.source
         || lastOriginalLine !== original.line
         || lastOriginalColumn !== original.column
         || lastOriginalName !== original.name) {
        map.addMapping({
          source: original.source,
          original: {
            line: original.line,
            column: original.column
          },
          generated: {
            line: generated.line,
            column: generated.column
          },
          name: original.name
        });
      }
      lastOriginalSource = original.source;
      lastOriginalLine = original.line;
      lastOriginalColumn = original.column;
      lastOriginalName = original.name;
      sourceMappingActive = true;
    } else if (sourceMappingActive) {
      map.addMapping({
        generated: {
          line: generated.line,
          column: generated.column
        }
      });
      lastOriginalSource = null;
      sourceMappingActive = false;
    }
    for (var idx = 0, length = chunk.length; idx < length; idx++) {
      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
        generated.line++;
        generated.column = 0;
        // Mappings end at eol
        if (idx + 1 === length) {
          lastOriginalSource = null;
          sourceMappingActive = false;
        } else if (sourceMappingActive) {
          map.addMapping({
            source: original.source,
            original: {
              line: original.line,
              column: original.column
            },
            generated: {
              line: generated.line,
              column: generated.column
            },
            name: original.name
          });
        }
      } else {
        generated.column++;
      }
    }
  });
  this.walkSourceContents(function (sourceFile, sourceContent) {
    map.setSourceContent(sourceFile, sourceContent);
  });

  return { code: generated.code, map: map };
};

exports.SourceNode = SourceNode;


/***/ }),

/***/ "./node_modules/source-map/lib/util.js":
/*!*********************************************!*\
  !*** ./node_modules/source-map/lib/util.js ***!
  \*********************************************/
/*! no static exports found */
/***/ (function(module, exports) {

/* -*- Mode: js; js-indent-level: 2; -*- */
/*
 * Copyright 2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE or:
 * http://opensource.org/licenses/BSD-3-Clause
 */

/**
 * This is a helper function for getting values from parameter/options
 * objects.
 *
 * @param args The object we are extracting values from
 * @param name The name of the property we are getting.
 * @param defaultValue An optional value to return if the property is missing
 * from the object. If this is not specified and the property is missing, an
 * error will be thrown.
 */
function getArg(aArgs, aName, aDefaultValue) {
  if (aName in aArgs) {
    return aArgs[aName];
  } else if (arguments.length === 3) {
    return aDefaultValue;
  } else {
    throw new Error('"' + aName + '" is a required argument.');
  }
}
exports.getArg = getArg;

var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
var dataUrlRegexp = /^data:.+\,.+$/;

function urlParse(aUrl) {
  var match = aUrl.match(urlRegexp);
  if (!match) {
    return null;
  }
  return {
    scheme: match[1],
    auth: match[2],
    host: match[3],
    port: match[4],
    path: match[5]
  };
}
exports.urlParse = urlParse;

function urlGenerate(aParsedUrl) {
  var url = '';
  if (aParsedUrl.scheme) {
    url += aParsedUrl.scheme + ':';
  }
  url += '//';
  if (aParsedUrl.auth) {
    url += aParsedUrl.auth + '@';
  }
  if (aParsedUrl.host) {
    url += aParsedUrl.host;
  }
  if (aParsedUrl.port) {
    url += ":" + aParsedUrl.port
  }
  if (aParsedUrl.path) {
    url += aParsedUrl.path;
  }
  return url;
}
exports.urlGenerate = urlGenerate;

/**
 * Normalizes a path, or the path portion of a URL:
 *
 * - Replaces consecutive slashes with one slash.
 * - Removes unnecessary '.' parts.
 * - Removes unnecessary '<dir>/..' parts.
 *
 * Based on code in the Node.js 'path' core module.
 *
 * @param aPath The path or url to normalize.
 */
function normalize(aPath) {
  var path = aPath;
  var url = urlParse(aPath);
  if (url) {
    if (!url.path) {
      return aPath;
    }
    path = url.path;
  }
  var isAbsolute = exports.isAbsolute(path);

  var parts = path.split(/\/+/);
  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
    part = parts[i];
    if (part === '.') {
      parts.splice(i, 1);
    } else if (part === '..') {
      up++;
    } else if (up > 0) {
      if (part === '') {
        // The first part is blank if the path is absolute. Trying to go
        // above the root is a no-op. Therefore we can remove all '..' parts
        // directly after the root.
        parts.splice(i + 1, up);
        up = 0;
      } else {
        parts.splice(i, 2);
        up--;
      }
    }
  }
  path = parts.join('/');

  if (path === '') {
    path = isAbsolute ? '/' : '.';
  }

  if (url) {
    url.path = path;
    return urlGenerate(url);
  }
  return path;
}
exports.normalize = normalize;

/**
 * Joins two paths/URLs.
 *
 * @param aRoot The root path or URL.
 * @param aPath The path or URL to be joined with the root.
 *
 * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
 *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended
 *   first.
 * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
 *   is updated with the result and aRoot is returned. Otherwise the result
 *   is returned.
 *   - If aPath is absolute, the result is aPath.
 *   - Otherwise the two paths are joined with a slash.
 * - Joining for example 'http://' and 'www.example.com' is also supported.
 */
function join(aRoot, aPath) {
  if (aRoot === "") {
    aRoot = ".";
  }
  if (aPath === "") {
    aPath = ".";
  }
  var aPathUrl = urlParse(aPath);
  var aRootUrl = urlParse(aRoot);
  if (aRootUrl) {
    aRoot = aRootUrl.path || '/';
  }

  // `join(foo, '//www.example.org')`
  if (aPathUrl && !aPathUrl.scheme) {
    if (aRootUrl) {
      aPathUrl.scheme = aRootUrl.scheme;
    }
    return urlGenerate(aPathUrl);
  }

  if (aPathUrl || aPath.match(dataUrlRegexp)) {
    return aPath;
  }

  // `join('http://', 'www.example.com')`
  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
    aRootUrl.host = aPath;
    return urlGenerate(aRootUrl);
  }

  var joined = aPath.charAt(0) === '/'
    ? aPath
    : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);

  if (aRootUrl) {
    aRootUrl.path = joined;
    return urlGenerate(aRootUrl);
  }
  return joined;
}
exports.join = join;

exports.isAbsolute = function (aPath) {
  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
};

/**
 * Make a path relative to a URL or another path.
 *
 * @param aRoot The root path or URL.
 * @param aPath The path or URL to be made relative to aRoot.
 */
function relative(aRoot, aPath) {
  if (aRoot === "") {
    aRoot = ".";
  }

  aRoot = aRoot.replace(/\/$/, '');

  // It is possible for the path to be above the root. In this case, simply
  // checking whether the root is a prefix of the path won't work. Instead, we
  // need to remove components from the root one by one, until either we find
  // a prefix that fits, or we run out of components to remove.
  var level = 0;
  while (aPath.indexOf(aRoot + '/') !== 0) {
    var index = aRoot.lastIndexOf("/");
    if (index < 0) {
      return aPath;
    }

    // If the only part of the root that is left is the scheme (i.e. http://,
    // file:///, etc.), one or more slashes (/), or simply nothing at all, we
    // have exhausted all components, so the path is not relative to the root.
    aRoot = aRoot.slice(0, index);
    if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
      return aPath;
    }

    ++level;
  }

  // Make sure we add a "../" for each component we removed from the root.
  return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
}
exports.relative = relative;

var supportsNullProto = (function () {
  var obj = Object.create(null);
  return !('__proto__' in obj);
}());

function identity (s) {
  return s;
}

/**
 * Because behavior goes wacky when you set `__proto__` on objects, we
 * have to prefix all the strings in our set with an arbitrary character.
 *
 * See https://github.com/mozilla/source-map/pull/31 and
 * https://github.com/mozilla/source-map/issues/30
 *
 * @param String aStr
 */
function toSetString(aStr) {
  if (isProtoString(aStr)) {
    return '$' + aStr;
  }

  return aStr;
}
exports.toSetString = supportsNullProto ? identity : toSetString;

function fromSetString(aStr) {
  if (isProtoString(aStr)) {
    return aStr.slice(1);
  }

  return aStr;
}
exports.fromSetString = supportsNullProto ? identity : fromSetString;

function isProtoString(s) {
  if (!s) {
    return false;
  }

  var length = s.length;

  if (length < 9 /* "__proto__".length */) {
    return false;
  }

  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||
      s.charCodeAt(length - 2) !== 95  /* '_' */ ||
      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
      s.charCodeAt(length - 4) !== 116 /* 't' */ ||
      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
      s.charCodeAt(length - 8) !== 95  /* '_' */ ||
      s.charCodeAt(length - 9) !== 95  /* '_' */) {
    return false;
  }

  for (var i = length - 10; i >= 0; i--) {
    if (s.charCodeAt(i) !== 36 /* '$' */) {
      return false;
    }
  }

  return true;
}

/**
 * Comparator between two mappings where the original positions are compared.
 *
 * Optionally pass in `true` as `onlyCompareGenerated` to consider two
 * mappings with the same original source/line/column, but different generated
 * line and column the same. Useful when searching for a mapping with a
 * stubbed out mapping.
 */
function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
  var cmp = strcmp(mappingA.source, mappingB.source);
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.originalLine - mappingB.originalLine;
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.originalColumn - mappingB.originalColumn;
  if (cmp !== 0 || onlyCompareOriginal) {
    return cmp;
  }

  cmp = mappingA.generatedColumn - mappingB.generatedColumn;
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.generatedLine - mappingB.generatedLine;
  if (cmp !== 0) {
    return cmp;
  }

  return strcmp(mappingA.name, mappingB.name);
}
exports.compareByOriginalPositions = compareByOriginalPositions;

/**
 * Comparator between two mappings with deflated source and name indices where
 * the generated positions are compared.
 *
 * Optionally pass in `true` as `onlyCompareGenerated` to consider two
 * mappings with the same generated line and column, but different
 * source/name/original line and column the same. Useful when searching for a
 * mapping with a stubbed out mapping.
 */
function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
  var cmp = mappingA.generatedLine - mappingB.generatedLine;
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.generatedColumn - mappingB.generatedColumn;
  if (cmp !== 0 || onlyCompareGenerated) {
    return cmp;
  }

  cmp = strcmp(mappingA.source, mappingB.source);
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.originalLine - mappingB.originalLine;
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.originalColumn - mappingB.originalColumn;
  if (cmp !== 0) {
    return cmp;
  }

  return strcmp(mappingA.name, mappingB.name);
}
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;

function strcmp(aStr1, aStr2) {
  if (aStr1 === aStr2) {
    return 0;
  }

  if (aStr1 === null) {
    return 1; // aStr2 !== null
  }

  if (aStr2 === null) {
    return -1; // aStr1 !== null
  }

  if (aStr1 > aStr2) {
    return 1;
  }

  return -1;
}

/**
 * Comparator between two mappings with inflated source and name strings where
 * the generated positions are compared.
 */
function compareByGeneratedPositionsInflated(mappingA, mappingB) {
  var cmp = mappingA.generatedLine - mappingB.generatedLine;
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.generatedColumn - mappingB.generatedColumn;
  if (cmp !== 0) {
    return cmp;
  }

  cmp = strcmp(mappingA.source, mappingB.source);
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.originalLine - mappingB.originalLine;
  if (cmp !== 0) {
    return cmp;
  }

  cmp = mappingA.originalColumn - mappingB.originalColumn;
  if (cmp !== 0) {
    return cmp;
  }

  return strcmp(mappingA.name, mappingB.name);
}
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;

/**
 * Strip any JSON XSSI avoidance prefix from the string (as documented
 * in the source maps specification), and then parse the string as
 * JSON.
 */
function parseSourceMapInput(str) {
  return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
}
exports.parseSourceMapInput = parseSourceMapInput;

/**
 * Compute the URL of a source given the the source root, the source's
 * URL, and the source map's URL.
 */
function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
  sourceURL = sourceURL || '';

  if (sourceRoot) {
    // This follows what Chrome does.
    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {
      sourceRoot += '/';
    }
    // The spec says:
    //   Line 4: An optional source root, useful for relocating source
    //   files on a server or removing repeated values in the
    //   “sources” entry.  This value is prepended to the individual
    //   entries in the “source” field.
    sourceURL = sourceRoot + sourceURL;
  }

  // Historically, SourceMapConsumer did not take the sourceMapURL as
  // a parameter.  This mode is still somewhat supported, which is why
  // this code block is conditional.  However, it's preferable to pass
  // the source map URL to SourceMapConsumer, so that this function
  // can implement the source URL resolution algorithm as outlined in
  // the spec.  This block is basically the equivalent of:
  //    new URL(sourceURL, sourceMapURL).toString()
  // ... except it avoids using URL, which wasn't available in the
  // older releases of node still supported by this library.
  //
  // The spec says:
  //   If the sources are not absolute URLs after prepending of the
  //   “sourceRoot”, the sources are resolved relative to the
  //   SourceMap (like resolving script src in a html document).
  if (sourceMapURL) {
    var parsed = urlParse(sourceMapURL);
    if (!parsed) {
      throw new Error("sourceMapURL could not be parsed");
    }
    if (parsed.path) {
      // Strip the last path component, but keep the "/".
      var index = parsed.path.lastIndexOf('/');
      if (index >= 0) {
        parsed.path = parsed.path.substring(0, index + 1);
      }
    }
    sourceURL = join(urlGenerate(parsed), sourceURL);
  }

  return normalize(sourceURL);
}
exports.computeSourceURL = computeSourceURL;


/***/ }),

/***/ "./node_modules/source-map/source-map.js":
/*!***********************************************!*\
  !*** ./node_modules/source-map/source-map.js ***!
  \***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/*
 * Copyright 2009-2011 Mozilla Foundation and contributors
 * Licensed under the New BSD license. See LICENSE.txt or:
 * http://opensource.org/licenses/BSD-3-Clause
 */
exports.SourceMapGenerator = __webpack_require__(/*! ./lib/source-map-generator */ "./node_modules/source-map/lib/source-map-generator.js").SourceMapGenerator;
exports.SourceMapConsumer = __webpack_require__(/*! ./lib/source-map-consumer */ "./node_modules/source-map/lib/source-map-consumer.js").SourceMapConsumer;
exports.SourceNode = __webpack_require__(/*! ./lib/source-node */ "./node_modules/source-map/lib/source-node.js").SourceNode;


/***/ }),

/***/ "./node_modules/tributejs/dist/tribute.min.js":
/*!****************************************************!*\
  !*** ./node_modules/tributejs/dist/tribute.min.js ***!
  \****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

!function(e,t){ true?module.exports=t():undefined}(this,(function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function n(e,n,i){return n&&t(e.prototype,n),i&&t(e,i),e}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var n=[],i=!0,r=!1,o=void 0;try{for(var u,l=e[Symbol.iterator]();!(i=(u=l.next()).done)&&(n.push(u.value),!t||n.length!==t);i=!0);}catch(e){r=!0,o=e}finally{try{i||null==l.return||l.return()}finally{if(r)throw o}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}if(Array.prototype.find||(Array.prototype.find=function(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,n=Object(this),i=n.length>>>0,r=arguments[1],o=0;o<i;o++)if(t=n[o],e.call(r,t,o,n))return t}),window&&"function"!=typeof window.CustomEvent){var r=function(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n};void 0!==window.Event&&(r.prototype=window.Event.prototype),window.CustomEvent=r}var o=function(){function t(n){e(this,t),this.tribute=n,this.tribute.events=this}return n(t,[{key:"bind",value:function(e){e.boundKeydown=this.keydown.bind(e,this),e.boundKeyup=this.keyup.bind(e,this),e.boundInput=this.input.bind(e,this),e.addEventListener("keydown",e.boundKeydown,!1),e.addEventListener("keyup",e.boundKeyup,!1),e.addEventListener("input",e.boundInput,!1)}},{key:"unbind",value:function(e){e.removeEventListener("keydown",e.boundKeydown,!1),e.removeEventListener("keyup",e.boundKeyup,!1),e.removeEventListener("input",e.boundInput,!1),delete e.boundKeydown,delete e.boundKeyup,delete e.boundInput}},{key:"keydown",value:function(e,n){e.shouldDeactivate(n)&&(e.tribute.isActive=!1,e.tribute.hideMenu());var i=this;e.commandEvent=!1,t.keys().forEach((function(t){t.key===n.keyCode&&(e.commandEvent=!0,e.callbacks()[t.value.toLowerCase()](n,i))}))}},{key:"input",value:function(e,t){e.inputEvent=!0,e.keyup.call(this,e,t)}},{key:"click",value:function(e,t){var n=e.tribute;if(n.menu&&n.menu.contains(t.target)){var i=t.target;for(t.preventDefault(),t.stopPropagation();"li"!==i.nodeName.toLowerCase();)if(!(i=i.parentNode)||i===n.menu)throw new Error("cannot find the <li> container for the click");n.selectItemAtIndex(i.getAttribute("data-index"),t),n.hideMenu()}else n.current.element&&!n.current.externalTrigger&&(n.current.externalTrigger=!1,setTimeout((function(){return n.hideMenu()})))}},{key:"keyup",value:function(e,t){if(e.inputEvent&&(e.inputEvent=!1),e.updateSelection(this),27!==t.keyCode){if(!e.tribute.allowSpaces&&e.tribute.hasTrailingSpace)return e.tribute.hasTrailingSpace=!1,e.commandEvent=!0,void e.callbacks().space(t,this);if(!e.tribute.isActive)if(e.tribute.autocompleteMode)e.callbacks().triggerChar(t,this,"");else{var n=e.getKeyCode(e,this,t);if(isNaN(n)||!n)return;var i=e.tribute.triggers().find((function(e){return e.charCodeAt(0)===n}));void 0!==i&&e.callbacks().triggerChar(t,this,i)}e.tribute.current.mentionText.length<e.tribute.current.collection.menuShowMinLength||((e.tribute.current.trigger||e.tribute.autocompleteMode)&&!1===e.commandEvent||e.tribute.isActive&&8===t.keyCode)&&e.tribute.showMenuFor(this,!0)}}},{key:"shouldDeactivate",value:function(e){if(!this.tribute.isActive)return!1;if(0===this.tribute.current.mentionText.length){var n=!1;return t.keys().forEach((function(t){e.keyCode===t.key&&(n=!0)})),!n}return!1}},{key:"getKeyCode",value:function(e,t,n){var i=e.tribute,r=i.range.getTriggerInfo(!1,i.hasTrailingSpace,!0,i.allowSpaces,i.autocompleteMode);return!!r&&r.mentionTriggerChar.charCodeAt(0)}},{key:"updateSelection",value:function(e){this.tribute.current.element=e;var t=this.tribute.range.getTriggerInfo(!1,this.tribute.hasTrailingSpace,!0,this.tribute.allowSpaces,this.tribute.autocompleteMode);t&&(this.tribute.current.selectedPath=t.mentionSelectedPath,this.tribute.current.mentionText=t.mentionText,this.tribute.current.selectedOffset=t.mentionSelectedOffset)}},{key:"callbacks",value:function(){var e=this;return{triggerChar:function(t,n,i){var r=e.tribute;r.current.trigger=i;var o=r.collection.find((function(e){return e.trigger===i}));r.current.collection=o,r.current.mentionText.length>=r.current.collection.menuShowMinLength&&r.inputEvent&&r.showMenuFor(n,!0)},enter:function(t,n){e.tribute.isActive&&e.tribute.current.filteredItems&&(t.preventDefault(),t.stopPropagation(),setTimeout((function(){e.tribute.selectItemAtIndex(e.tribute.menuSelected,t),e.tribute.hideMenu()}),0))},escape:function(t,n){e.tribute.isActive&&(t.preventDefault(),t.stopPropagation(),e.tribute.isActive=!1,e.tribute.hideMenu())},tab:function(t,n){e.callbacks().enter(t,n)},space:function(t,n){e.tribute.isActive&&(e.tribute.spaceSelectsMatch?e.callbacks().enter(t,n):e.tribute.allowSpaces||(t.stopPropagation(),setTimeout((function(){e.tribute.hideMenu(),e.tribute.isActive=!1}),0)))},up:function(t,n){if(e.tribute.isActive&&e.tribute.current.filteredItems){t.preventDefault(),t.stopPropagation();var i=e.tribute.current.filteredItems.length,r=e.tribute.menuSelected;i>r&&r>0?(e.tribute.menuSelected--,e.setActiveLi()):0===r&&(e.tribute.menuSelected=i-1,e.setActiveLi(),e.tribute.menu.scrollTop=e.tribute.menu.scrollHeight)}},down:function(t,n){if(e.tribute.isActive&&e.tribute.current.filteredItems){t.preventDefault(),t.stopPropagation();var i=e.tribute.current.filteredItems.length-1,r=e.tribute.menuSelected;i>r?(e.tribute.menuSelected++,e.setActiveLi()):i===r&&(e.tribute.menuSelected=0,e.setActiveLi(),e.tribute.menu.scrollTop=0)}},delete:function(t,n){e.tribute.isActive&&e.tribute.current.mentionText.length<1?e.tribute.hideMenu():e.tribute.isActive&&e.tribute.showMenuFor(n)}}}},{key:"setActiveLi",value:function(e){var t=this.tribute.menu.querySelectorAll("li"),n=t.length>>>0;e&&(this.tribute.menuSelected=parseInt(e));for(var i=0;i<n;i++){var r=t[i];if(i===this.tribute.menuSelected){r.classList.add(this.tribute.current.collection.selectClass);var o=r.getBoundingClientRect(),u=this.tribute.menu.getBoundingClientRect();if(o.bottom>u.bottom){var l=o.bottom-u.bottom;this.tribute.menu.scrollTop+=l}else if(o.top<u.top){var s=u.top-o.top;this.tribute.menu.scrollTop-=s}}else r.classList.remove(this.tribute.current.collection.selectClass)}}},{key:"getFullHeight",value:function(e,t){var n=e.getBoundingClientRect().height;if(t){var i=e.currentStyle||window.getComputedStyle(e);return n+parseFloat(i.marginTop)+parseFloat(i.marginBottom)}return n}}],[{key:"keys",value:function(){return[{key:9,value:"TAB"},{key:8,value:"DELETE"},{key:13,value:"ENTER"},{key:27,value:"ESCAPE"},{key:32,value:"SPACE"},{key:38,value:"UP"},{key:40,value:"DOWN"}]}}]),t}(),u=function(){function t(n){e(this,t),this.tribute=n,this.tribute.menuEvents=this,this.menu=this.tribute.menu}return n(t,[{key:"bind",value:function(e){var t=this;this.menuClickEvent=this.tribute.events.click.bind(null,this),this.menuContainerScrollEvent=this.debounce((function(){t.tribute.isActive&&t.tribute.showMenuFor(t.tribute.current.element,!1)}),300,!1),this.windowResizeEvent=this.debounce((function(){t.tribute.isActive&&t.tribute.range.positionMenuAtCaret(!0)}),300,!1),this.tribute.range.getDocument().addEventListener("MSPointerDown",this.menuClickEvent,!1),this.tribute.range.getDocument().addEventListener("mousedown",this.menuClickEvent,!1),window.addEventListener("resize",this.windowResizeEvent),this.menuContainer?this.menuContainer.addEventListener("scroll",this.menuContainerScrollEvent,!1):window.addEventListener("scroll",this.menuContainerScrollEvent)}},{key:"unbind",value:function(e){this.tribute.range.getDocument().removeEventListener("mousedown",this.menuClickEvent,!1),this.tribute.range.getDocument().removeEventListener("MSPointerDown",this.menuClickEvent,!1),window.removeEventListener("resize",this.windowResizeEvent),this.menuContainer?this.menuContainer.removeEventListener("scroll",this.menuContainerScrollEvent,!1):window.removeEventListener("scroll",this.menuContainerScrollEvent)}},{key:"debounce",value:function(e,t,n){var i,r=arguments,o=this;return function(){var u=o,l=r,s=n&&!i;clearTimeout(i),i=setTimeout((function(){i=null,n||e.apply(u,l)}),t),s&&e.apply(u,l)}}}]),t}(),l=function(){function t(n){e(this,t),this.tribute=n,this.tribute.range=this}return n(t,[{key:"getDocument",value:function(){var e;return this.tribute.current.collection&&(e=this.tribute.current.collection.iframe),e?e.contentWindow.document:document}},{key:"positionMenuAtCaret",value:function(e){var t,n=this,i=this.tribute.current,r=this.getTriggerInfo(!1,this.tribute.hasTrailingSpace,!0,this.tribute.allowSpaces,this.tribute.autocompleteMode);if(void 0!==r){if(!this.tribute.positionMenu)return void(this.tribute.menu.style.cssText="display: block;");t=this.isContentEditable(i.element)?this.getContentEditableCaretPosition(r.mentionPosition):this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,r.mentionPosition),this.tribute.menu.style.cssText="top: ".concat(t.top,"px;\n                                     left: ").concat(t.left,"px;\n                                     right: ").concat(t.right,"px;\n                                     bottom: ").concat(t.bottom,"px;\n                                     position: absolute;\n                                     display: block;"),"auto"===t.left&&(this.tribute.menu.style.left="auto"),"auto"===t.top&&(this.tribute.menu.style.top="auto"),e&&this.scrollIntoView(),window.setTimeout((function(){var i={width:n.tribute.menu.offsetWidth,height:n.tribute.menu.offsetHeight},r=n.isMenuOffScreen(t,i),o=window.innerWidth>i.width&&(r.left||r.right),u=window.innerHeight>i.height&&(r.top||r.bottom);(o||u)&&(n.tribute.menu.style.cssText="display: none",n.positionMenuAtCaret(e))}),0)}else this.tribute.menu.style.cssText="display: none"}},{key:"selectElement",value:function(e,t,n){var i,r=e;if(t)for(var o=0;o<t.length;o++){if(void 0===(r=r.childNodes[t[o]]))return;for(;r.length<n;)n-=r.length,r=r.nextSibling;0!==r.childNodes.length||r.length||(r=r.previousSibling)}var u=this.getWindowSelection();(i=this.getDocument().createRange()).setStart(r,n),i.setEnd(r,n),i.collapse(!0);try{u.removeAllRanges()}catch(e){}u.addRange(i),e.focus()}},{key:"replaceTriggerText",value:function(e,t,n,i,r){var o=this.getTriggerInfo(!0,n,t,this.tribute.allowSpaces,this.tribute.autocompleteMode);if(void 0!==o){var u=this.tribute.current,l=new CustomEvent("tribute-replaced",{detail:{item:r,instance:u,context:o,event:i}});if(this.isContentEditable(u.element)){e+="string"==typeof this.tribute.replaceTextSuffix?this.tribute.replaceTextSuffix:" ";var s=o.mentionPosition+o.mentionText.length;this.tribute.autocompleteMode||(s+=o.mentionTriggerChar.length),this.pasteHtml(e,o.mentionPosition,s)}else{var a=this.tribute.current.element,c="string"==typeof this.tribute.replaceTextSuffix?this.tribute.replaceTextSuffix:" ";e+=c;var h=o.mentionPosition,d=o.mentionPosition+o.mentionText.length+c.length;this.tribute.autocompleteMode||(d+=o.mentionTriggerChar.length-1),a.value=a.value.substring(0,h)+e+a.value.substring(d,a.value.length),a.selectionStart=h+e.length,a.selectionEnd=h+e.length}u.element.dispatchEvent(new CustomEvent("input",{bubbles:!0})),u.element.dispatchEvent(l)}}},{key:"pasteHtml",value:function(e,t,n){var i,r;r=this.getWindowSelection(),(i=this.getDocument().createRange()).setStart(r.anchorNode,t),i.setEnd(r.anchorNode,n),i.deleteContents();var o=this.getDocument().createElement("div");o.innerHTML=e;for(var u,l,s=this.getDocument().createDocumentFragment();u=o.firstChild;)l=s.appendChild(u);i.insertNode(s),l&&((i=i.cloneRange()).setStartAfter(l),i.collapse(!0),r.removeAllRanges(),r.addRange(i))}},{key:"getWindowSelection",value:function(){return this.tribute.collection.iframe?this.tribute.collection.iframe.contentWindow.getSelection():window.getSelection()}},{key:"getNodePositionInParent",value:function(e){if(null===e.parentNode)return 0;for(var t=0;t<e.parentNode.childNodes.length;t++){if(e.parentNode.childNodes[t]===e)return t}}},{key:"getContentEditableSelectedPath",value:function(e){var t=this.getWindowSelection(),n=t.anchorNode,i=[];if(null!=n){for(var r,o=n.contentEditable;null!==n&&"true"!==o;)r=this.getNodePositionInParent(n),i.push(r),null!==(n=n.parentNode)&&(o=n.contentEditable);return i.reverse(),{selected:n,path:i,offset:t.getRangeAt(0).startOffset}}}},{key:"getTextPrecedingCurrentSelection",value:function(){var e=this.tribute.current,t="";if(this.isContentEditable(e.element)){var n=this.getWindowSelection().anchorNode;if(null!=n){var i=n.textContent,r=this.getWindowSelection().getRangeAt(0).startOffset;i&&r>=0&&(t=i.substring(0,r))}}else{var o=this.tribute.current.element;if(o){var u=o.selectionStart;o.value&&u>=0&&(t=o.value.substring(0,u))}}return t}},{key:"getLastWordInText",value:function(e){var t=(e=e.replace(/\u00A0/g," ")).split(/\s+/);return t[t.length-1].trim()}},{key:"getTriggerInfo",value:function(e,t,n,i,r){var o,u,l,s=this,a=this.tribute.current;if(this.isContentEditable(a.element)){var c=this.getContentEditableSelectedPath(a);c&&(o=c.selected,u=c.path,l=c.offset)}else o=this.tribute.current.element;var h=this.getTextPrecedingCurrentSelection(),d=this.getLastWordInText(h);if(r)return{mentionPosition:h.length-d.length,mentionText:d,mentionSelectedElement:o,mentionSelectedPath:u,mentionSelectedOffset:l};if(null!=h){var f,m=-1;if(this.tribute.collection.forEach((function(e){var t=e.trigger,i=e.requireLeadingSpace?s.lastIndexWithLeadingSpace(h,t):h.lastIndexOf(t);i>m&&(m=i,f=t,n=e.requireLeadingSpace)})),m>=0&&(0===m||!n||/[\xA0\s]/g.test(h.substring(m-1,m)))){var p=h.substring(m+f.length,h.length);f=h.substring(m,m+f.length);var v=p.substring(0,1),g=p.length>0&&(" "===v||" "===v);t&&(p=p.trim());var b=i?/[^\S ]/g:/[\xA0\s]/g;if(this.tribute.hasTrailingSpace=b.test(p),!g&&(e||!b.test(p)))return{mentionPosition:m,mentionText:p,mentionSelectedElement:o,mentionSelectedPath:u,mentionSelectedOffset:l,mentionTriggerChar:f}}}}},{key:"lastIndexWithLeadingSpace",value:function(e,t){for(var n=e.split("").reverse().join(""),i=-1,r=0,o=e.length;r<o;r++){for(var u=r===e.length-1,l=/\s/.test(n[r+1]),s=!0,a=t.length-1;a>=0;a--)if(t[a]!==n[r-a]){s=!1;break}if(s&&(u||l)){i=e.length-1-r;break}}return i}},{key:"isContentEditable",value:function(e){return"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName}},{key:"isMenuOffScreen",value:function(e,t){var n=window.innerWidth,i=window.innerHeight,r=document.documentElement,o=(window.pageXOffset||r.scrollLeft)-(r.clientLeft||0),u=(window.pageYOffset||r.scrollTop)-(r.clientTop||0),l="number"==typeof e.top?e.top:u+i-e.bottom-t.height,s="number"==typeof e.right?e.right:e.left+t.width,a="number"==typeof e.bottom?e.bottom:e.top+t.height,c="number"==typeof e.left?e.left:o+n-e.right-t.width;return{top:l<Math.floor(u),right:s>Math.ceil(o+n),bottom:a>Math.ceil(u+i),left:c<Math.floor(o)}}},{key:"getMenuDimensions",value:function(){var e={width:null,height:null};return this.tribute.menu.style.cssText="top: 0px;\n                                 left: 0px;\n                                 position: fixed;\n                                 display: block;\n                                 visibility; hidden;",e.width=this.tribute.menu.offsetWidth,e.height=this.tribute.menu.offsetHeight,this.tribute.menu.style.cssText="display: none;",e}},{key:"getTextAreaOrInputUnderlinePosition",value:function(e,t,n){var i=null!==window.mozInnerScreenX,r=this.getDocument().createElement("div");r.id="input-textarea-caret-position-mirror-div",this.getDocument().body.appendChild(r);var o=r.style,u=window.getComputedStyle?getComputedStyle(e):e.currentStyle;o.whiteSpace="pre-wrap","INPUT"!==e.nodeName&&(o.wordWrap="break-word"),o.position="absolute",o.visibility="hidden",["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing"].forEach((function(e){o[e]=u[e]})),i?(o.width="".concat(parseInt(u.width)-2,"px"),e.scrollHeight>parseInt(u.height)&&(o.overflowY="scroll")):o.overflow="hidden",r.textContent=e.value.substring(0,t),"INPUT"===e.nodeName&&(r.textContent=r.textContent.replace(/\s/g," "));var l=this.getDocument().createElement("span");l.textContent=e.value.substring(t)||".",r.appendChild(l);var s=e.getBoundingClientRect(),a=document.documentElement,c=(window.pageXOffset||a.scrollLeft)-(a.clientLeft||0),h=(window.pageYOffset||a.scrollTop)-(a.clientTop||0),d=0,f=0;this.menuContainerIsBody&&(d=s.top,f=s.left);var m={top:d+h+l.offsetTop+parseInt(u.borderTopWidth)+parseInt(u.fontSize)-e.scrollTop,left:f+c+l.offsetLeft+parseInt(u.borderLeftWidth)},p=window.innerWidth,v=window.innerHeight,g=this.getMenuDimensions(),b=this.isMenuOffScreen(m,g);b.right&&(m.right=p-m.left,m.left="auto");var y=this.tribute.menuContainer?this.tribute.menuContainer.offsetHeight:this.getDocument().body.offsetHeight;if(b.bottom){var w=y-(v-(this.tribute.menuContainer?this.tribute.menuContainer.getBoundingClientRect():this.getDocument().body.getBoundingClientRect()).top);m.bottom=w+(v-s.top-l.offsetTop),m.top="auto"}return(b=this.isMenuOffScreen(m,g)).left&&(m.left=p>g.width?c+p-g.width:c,delete m.right),b.top&&(m.top=v>g.height?h+v-g.height:h,delete m.bottom),this.getDocument().body.removeChild(r),m}},{key:"getContentEditableCaretPosition",value:function(e){var t,n=this.getWindowSelection();(t=this.getDocument().createRange()).setStart(n.anchorNode,e),t.setEnd(n.anchorNode,e),t.collapse(!1);var i=t.getBoundingClientRect(),r=document.documentElement,o=(window.pageXOffset||r.scrollLeft)-(r.clientLeft||0),u=(window.pageYOffset||r.scrollTop)-(r.clientTop||0),l={left:i.left+o,top:i.top+i.height+u},s=window.innerWidth,a=window.innerHeight,c=this.getMenuDimensions(),h=this.isMenuOffScreen(l,c);h.right&&(l.left="auto",l.right=s-i.left-o);var d=this.tribute.menuContainer?this.tribute.menuContainer.offsetHeight:this.getDocument().body.offsetHeight;if(h.bottom){var f=d-(a-(this.tribute.menuContainer?this.tribute.menuContainer.getBoundingClientRect():this.getDocument().body.getBoundingClientRect()).top);l.top="auto",l.bottom=f+(a-i.top)}return(h=this.isMenuOffScreen(l,c)).left&&(l.left=s>c.width?o+s-c.width:o,delete l.right),h.top&&(l.top=a>c.height?u+a-c.height:u,delete l.bottom),this.menuContainerIsBody||(l.left=l.left?l.left-this.tribute.menuContainer.offsetLeft:l.left,l.top=l.top?l.top-this.tribute.menuContainer.offsetTop:l.top),l}},{key:"scrollIntoView",value:function(e){var t,n=this.menu;if(void 0!==n){for(;void 0===t||0===t.height;)if(0===(t=n.getBoundingClientRect()).height&&(void 0===(n=n.childNodes[0])||!n.getBoundingClientRect))return;var i=t.top,r=i+t.height;if(i<0)window.scrollTo(0,window.pageYOffset+t.top-20);else if(r>window.innerHeight){var o=window.pageYOffset+t.top-20;o-window.pageYOffset>100&&(o=window.pageYOffset+100);var u=window.pageYOffset-(window.innerHeight-r);u>o&&(u=o),window.scrollTo(0,u)}}}},{key:"menuContainerIsBody",get:function(){return this.tribute.menuContainer===document.body||!this.tribute.menuContainer}}]),t}(),s=function(){function t(n){e(this,t),this.tribute=n,this.tribute.search=this}return n(t,[{key:"simpleFilter",value:function(e,t){var n=this;return t.filter((function(t){return n.test(e,t)}))}},{key:"test",value:function(e,t){return null!==this.match(e,t)}},{key:"match",value:function(e,t,n){n=n||{};t.length;var i=n.pre||"",r=n.post||"",o=n.caseSensitive&&t||t.toLowerCase();if(n.skip)return{rendered:t,score:0};e=n.caseSensitive&&e||e.toLowerCase();var u=this.traverse(o,e,0,0,[]);return u?{rendered:this.render(t,u.cache,i,r),score:u.score}:null}},{key:"traverse",value:function(e,t,n,i,r){if(t.length===i)return{score:this.calculateScore(r),cache:r.slice()};if(!(e.length===n||t.length-i>e.length-n)){for(var o,u,l=t[i],s=e.indexOf(l,n);s>-1;){if(r.push(s),u=this.traverse(e,t,s+1,i+1,r),r.pop(),!u)return o;(!o||o.score<u.score)&&(o=u),s=e.indexOf(l,s+1)}return o}}},{key:"calculateScore",value:function(e){var t=0,n=1;return e.forEach((function(i,r){r>0&&(e[r-1]+1===i?n+=n+1:n=1),t+=n})),t}},{key:"render",value:function(e,t,n,i){var r=e.substring(0,t[0]);return t.forEach((function(o,u){r+=n+e[o]+i+e.substring(o+1,t[u+1]?t[u+1]:e.length)})),r}},{key:"filter",value:function(e,t,n){var i=this;return n=n||{},t.reduce((function(t,r,o,u){var l=r;n.extract&&((l=n.extract(r))||(l=""));var s=i.match(e,l,n);return null!=s&&(t[t.length]={string:s.rendered,score:s.score,index:o,original:r}),t}),[]).sort((function(e,t){var n=t.score-e.score;return n||e.index-t.index}))}}]),t}();return function(){function t(n){var i,r=this,a=n.values,c=void 0===a?null:a,h=n.iframe,d=void 0===h?null:h,f=n.selectClass,m=void 0===f?"highlight":f,p=n.containerClass,v=void 0===p?"tribute-container":p,g=n.itemClass,b=void 0===g?"":g,y=n.trigger,w=void 0===y?"@":y,T=n.autocompleteMode,C=void 0!==T&&T,S=n.selectTemplate,E=void 0===S?null:S,k=n.menuItemTemplate,x=void 0===k?null:k,M=n.lookup,A=void 0===M?"key":M,L=n.fillAttr,I=void 0===L?"value":L,N=n.collection,O=void 0===N?null:N,D=n.menuContainer,P=void 0===D?null:D,R=n.noMatchTemplate,W=void 0===R?null:R,H=n.requireLeadingSpace,B=void 0===H||H,F=n.allowSpaces,_=void 0!==F&&F,j=n.replaceTextSuffix,Y=void 0===j?null:j,z=n.positionMenu,K=void 0===z||z,q=n.spaceSelectsMatch,U=void 0!==q&&q,X=n.searchOpts,Q=void 0===X?{}:X,V=n.menuItemLimit,G=void 0===V?null:V,J=n.menuShowMinLength,Z=void 0===J?0:J;if(e(this,t),this.autocompleteMode=C,this.menuSelected=0,this.current={},this.inputEvent=!1,this.isActive=!1,this.menuContainer=P,this.allowSpaces=_,this.replaceTextSuffix=Y,this.positionMenu=K,this.hasTrailingSpace=!1,this.spaceSelectsMatch=U,this.autocompleteMode&&(w="",_=!1),c)this.collection=[{trigger:w,iframe:d,selectClass:m,containerClass:v,itemClass:b,selectTemplate:(E||t.defaultSelectTemplate).bind(this),menuItemTemplate:(x||t.defaultMenuItemTemplate).bind(this),noMatchTemplate:(i=W,"string"==typeof i?""===i.trim()?null:i:"function"==typeof i?i.bind(r):W||function(){return"<li>No Match Found!</li>"}.bind(r)),lookup:A,fillAttr:I,values:c,requireLeadingSpace:B,searchOpts:Q,menuItemLimit:G,menuShowMinLength:Z}];else{if(!O)throw new Error("[Tribute] No collection specified.");this.autocompleteMode&&console.warn("Tribute in autocomplete mode does not work for collections"),this.collection=O.map((function(e){return{trigger:e.trigger||w,iframe:e.iframe||d,selectClass:e.selectClass||m,containerClass:e.containerClass||v,itemClass:e.itemClass||b,selectTemplate:(e.selectTemplate||t.defaultSelectTemplate).bind(r),menuItemTemplate:(e.menuItemTemplate||t.defaultMenuItemTemplate).bind(r),noMatchTemplate:function(e){return"string"==typeof e?""===e.trim()?null:e:"function"==typeof e?e.bind(r):W||function(){return"<li>No Match Found!</li>"}.bind(r)}(W),lookup:e.lookup||A,fillAttr:e.fillAttr||I,values:e.values,requireLeadingSpace:e.requireLeadingSpace,searchOpts:e.searchOpts||Q,menuItemLimit:e.menuItemLimit||G,menuShowMinLength:e.menuShowMinLength||Z}}))}new l(this),new o(this),new u(this),new s(this)}return n(t,[{key:"triggers",value:function(){return this.collection.map((function(e){return e.trigger}))}},{key:"attach",value:function(e){if(!e)throw new Error("[Tribute] Must pass in a DOM node or NodeList.");if("undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e.get()),e.constructor===NodeList||e.constructor===HTMLCollection||e.constructor===Array)for(var t=e.length,n=0;n<t;++n)this._attach(e[n]);else this._attach(e)}},{key:"_attach",value:function(e){e.hasAttribute("data-tribute")&&console.warn("Tribute was already bound to "+e.nodeName),this.ensureEditable(e),this.events.bind(e),e.setAttribute("data-tribute",!0)}},{key:"ensureEditable",value:function(e){if(-1===t.inputTypes().indexOf(e.nodeName)){if(!e.contentEditable)throw new Error("[Tribute] Cannot bind to "+e.nodeName);e.contentEditable=!0}}},{key:"createMenu",value:function(e){var t=this.range.getDocument().createElement("div"),n=this.range.getDocument().createElement("ul");return t.className=e,t.appendChild(n),this.menuContainer?this.menuContainer.appendChild(t):this.range.getDocument().body.appendChild(t)}},{key:"showMenuFor",value:function(e,t){var n=this;if(!this.isActive||this.current.element!==e||this.current.mentionText!==this.currentMentionTextSnapshot){this.currentMentionTextSnapshot=this.current.mentionText,this.menu||(this.menu=this.createMenu(this.current.collection.containerClass),e.tributeMenu=this.menu,this.menuEvents.bind(this.menu)),this.isActive=!0,this.menuSelected=0,this.current.mentionText||(this.current.mentionText="");var r=function(e){if(n.isActive){var r=n.search.filter(n.current.mentionText,e,{pre:n.current.collection.searchOpts.pre||"<span>",post:n.current.collection.searchOpts.post||"</span>",skip:n.current.collection.searchOpts.skip,extract:function(e){if("string"==typeof n.current.collection.lookup)return e[n.current.collection.lookup];if("function"==typeof n.current.collection.lookup)return n.current.collection.lookup(e,n.current.mentionText);throw new Error("Invalid lookup attribute, lookup must be string or function.")}});n.current.collection.menuItemLimit&&(r=r.slice(0,n.current.collection.menuItemLimit)),n.current.filteredItems=r;var o=n.menu.querySelector("ul");if(n.range.positionMenuAtCaret(t),!r.length){var u=new CustomEvent("tribute-no-match",{detail:n.menu});return n.current.element.dispatchEvent(u),void("function"==typeof n.current.collection.noMatchTemplate&&!n.current.collection.noMatchTemplate()||!n.current.collection.noMatchTemplate?n.hideMenu():"function"==typeof n.current.collection.noMatchTemplate?o.innerHTML=n.current.collection.noMatchTemplate():o.innerHTML=n.current.collection.noMatchTemplate)}o.innerHTML="";var l=n.range.getDocument().createDocumentFragment();r.forEach((function(e,t){var r=n.range.getDocument().createElement("li");r.setAttribute("data-index",t),r.className=n.current.collection.itemClass,r.addEventListener("mousemove",(function(e){var t=i(n._findLiTarget(e.target),2),r=(t[0],t[1]);0!==e.movementY&&n.events.setActiveLi(r)})),n.menuSelected===t&&r.classList.add(n.current.collection.selectClass),r.innerHTML=n.current.collection.menuItemTemplate(e),l.appendChild(r)})),o.appendChild(l)}};"function"==typeof this.current.collection.values?this.current.collection.values(this.current.mentionText,r):r(this.current.collection.values)}}},{key:"_findLiTarget",value:function(e){if(!e)return[];var t=e.getAttribute("data-index");return t?[e,t]:this._findLiTarget(e.parentNode)}},{key:"showMenuForCollection",value:function(e,t){e!==document.activeElement&&this.placeCaretAtEnd(e),this.current.collection=this.collection[t||0],this.current.externalTrigger=!0,this.current.element=e,e.isContentEditable?this.insertTextAtCursor(this.current.collection.trigger):this.insertAtCaret(e,this.current.collection.trigger),this.showMenuFor(e)}},{key:"placeCaretAtEnd",value:function(e){if(e.focus(),void 0!==window.getSelection&&void 0!==document.createRange){var t=document.createRange();t.selectNodeContents(e),t.collapse(!1);var n=window.getSelection();n.removeAllRanges(),n.addRange(t)}else if(void 0!==document.body.createTextRange){var i=document.body.createTextRange();i.moveToElementText(e),i.collapse(!1),i.select()}}},{key:"insertTextAtCursor",value:function(e){var t,n;(n=(t=window.getSelection()).getRangeAt(0)).deleteContents();var i=document.createTextNode(e);n.insertNode(i),n.selectNodeContents(i),n.collapse(!1),t.removeAllRanges(),t.addRange(n)}},{key:"insertAtCaret",value:function(e,t){var n=e.scrollTop,i=e.selectionStart,r=e.value.substring(0,i),o=e.value.substring(e.selectionEnd,e.value.length);e.value=r+t+o,i+=t.length,e.selectionStart=i,e.selectionEnd=i,e.focus(),e.scrollTop=n}},{key:"hideMenu",value:function(){this.menu&&(this.menu.style.cssText="display: none;",this.isActive=!1,this.menuSelected=0,this.current={})}},{key:"selectItemAtIndex",value:function(e,t){if("number"==typeof(e=parseInt(e))&&!isNaN(e)){var n=this.current.filteredItems[e],i=this.current.collection.selectTemplate(n);null!==i&&this.replaceText(i,t,n)}}},{key:"replaceText",value:function(e,t,n){this.range.replaceTriggerText(e,!0,!0,t,n)}},{key:"_append",value:function(e,t,n){if("function"==typeof e.values)throw new Error("Unable to append to values, as it is a function.");e.values=n?t:e.values.concat(t)}},{key:"append",value:function(e,t,n){var i=parseInt(e);if("number"!=typeof i)throw new Error("please provide an index for the collection to update.");var r=this.collection[i];this._append(r,t,n)}},{key:"appendCurrent",value:function(e,t){if(!this.isActive)throw new Error("No active state. Please use append instead and pass an index.");this._append(this.current.collection,e,t)}},{key:"detach",value:function(e){if(!e)throw new Error("[Tribute] Must pass in a DOM node or NodeList.");if("undefined"!=typeof jQuery&&e instanceof jQuery&&(e=e.get()),e.constructor===NodeList||e.constructor===HTMLCollection||e.constructor===Array)for(var t=e.length,n=0;n<t;++n)this._detach(e[n]);else this._detach(e)}},{key:"_detach",value:function(e){var t=this;this.events.unbind(e),e.tributeMenu&&this.menuEvents.unbind(e.tributeMenu),setTimeout((function(){e.removeAttribute("data-tribute"),t.isActive=!1,e.tributeMenu&&e.tributeMenu.remove()}))}},{key:"isActive",get:function(){return this._isActive},set:function(e){if(this._isActive!=e&&(this._isActive=e,this.current.element)){var t=new CustomEvent("tribute-active-".concat(e));this.current.element.dispatchEvent(t)}}}],[{key:"defaultSelectTemplate",value:function(e){return void 0===e?"".concat(this.current.collection.trigger).concat(this.current.mentionText):this.range.isContentEditable(this.current.element)?'<span class="tribute-mention">'+(this.current.collection.trigger+e.original[this.current.collection.fillAttr])+"</span>":this.current.collection.trigger+e.original[this.current.collection.fillAttr]}},{key:"defaultMenuItemTemplate",value:function(e){return e.string}},{key:"inputTypes",value:function(){return["TEXTAREA","INPUT"]}}]),t}()}));
//# sourceMappingURL=tribute.min.js.map


/***/ }),

/***/ "./node_modules/twemoji/dist/twemoji.esm.js":
/*!**************************************************!*\
  !*** ./node_modules/twemoji/dist/twemoji.esm.js ***!
  \**************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */
var twemoji=function(){"use strict";var twemoji={base:"https://twemoji.maxcdn.com/v/13.1.1/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},re=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udeeb\udeec\udef4-\udefc\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78\udd7a-\uddb4\uddb7\uddba\uddbc-\uddcb\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7a\ude80-\ude86\ude90-\udea8\udeb0-\udeb6\udec0-\udec2\uded0-\uded6]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,UFE0Fg=/\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,""):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return"".concat(options.base,options.size,"/",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!("ownerSVGElement"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,""):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute("draggable","false");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true))}subnode.parentNode.replaceChild(fragment,subnode)}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret="<img ".concat('class="',options.className,'" ','draggable="false" ','alt="',rawText,'"',' src="',src,'"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf("on")!==0&&ret.indexOf(" "+attrname+"=")===-1){ret=ret.concat(" ",attrname,'="',escapeHTML(attrib[attrname]),'"')}}ret=ret.concat("/>")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value==="number"?value+"x"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint==="string"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how==="function"){how={callback:how}}return(typeof what==="string"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes==="function"?how.attributes:returnNull,base:typeof how.base==="string"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0}else if(55296<=c&&c<=56319){p=c}else{r.push(c.toString(16))}}return r.join(sep||"-")}}();
/* harmony default export */ __webpack_exports__["default"] = (twemoji);

/***/ }),

/***/ "./node_modules/universal-emoji-parser/dist/index.js":
/*!***********************************************************!*\
  !*** ./node_modules/universal-emoji-parser/dist/index.js ***!
  \***********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

(()=>{"use strict";var e={156:function(e,o,s){var n=this&&this.__values||function(e){var o="function"==typeof Symbol&&Symbol.iterator,s=o&&e[o],n=0;if(s)return s.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(o,"__esModule",{value:!0}),o.emojiLibJsonData=o.TEMPORARY_NEW_EMOJI_CDN=o.DEFAULT_EMOJI_CDN=void 0;var i=r(s(771)),a=r(s(279));o.DEFAULT_EMOJI_CDN="https://twemoji.maxcdn.com/v",o.TEMPORARY_NEW_EMOJI_CDN="https://cdnjs.cloudflare.com/ajax/libs/twemoji",o.emojiLibJsonData=a.default;var _={getEmojiObjectByShortcode:function(e){if(e=e.replace(/:/g,""),o.emojiLibJsonData[e]&&"object"==typeof o.emojiLibJsonData[e]&&o.emojiLibJsonData[e].char)return o.emojiLibJsonData[e];var s=Object.keys(o.emojiLibJsonData).find((function(s){return o.emojiLibJsonData[s].keywords.includes(e)}));return s?o.emojiLibJsonData[s]:void 0},getDefaultOptions:function(e){return{emojiCDN:e&&Object.getOwnPropertyDescriptor(e,"emojiCDN")?String(e.emojiCDN):o.TEMPORARY_NEW_EMOJI_CDN,parseToHtml:!e||!Object.getOwnPropertyDescriptor(e,"parseToHtml")||Boolean(e.parseToHtml),parseToUnicode:!!e&&Boolean(e.parseToUnicode),parseToShortcode:!!e&&Boolean(e.parseToShortcode)}},__parseEmojiToHtml:function(e,s){if(e=(e=i.default.parse(e)).replace(/ draggable="false" /g," "),s||(s=o.TEMPORARY_NEW_EMOJI_CDN),s){var n=new RegExp(o.DEFAULT_EMOJI_CDN,"gi");e=e.replace(n,s)}return e},parseToHtml:function(e,o){return e=this.parseToUnicode(e),this.__parseEmojiToHtml(e,o)},parseToUnicode:function(e){var o=this,s=e.match(/:(\w+):/g);return s&&s.forEach((function(s){var n=o.getEmojiObjectByShortcode(s);if(n){var r=new RegExp(s);e=e.replace(r,n.char)}})),e},parseToShortcode:function(e){var o,s,r=a.default,i=Object.keys(r),_="(".concat(i.join("|"),")");_=_.replace(/\*️⃣/g,"\\*️⃣");var u=new RegExp(_,"ig"),t=e.matchAll(u);try{for(var l=n(t),d=l.next();!d.done;d=l.next()){var p=r[d.value[0]];if(p){var c=new RegExp(p.char,"ig");e=e.replace(c,":".concat(p.slug,":"))}}}catch(e){o={error:e}}finally{try{d&&!d.done&&(s=l.return)&&s.call(l)}finally{if(o)throw o.error}}return e},parse:function(e,o){var s=this.getDefaultOptions(o);if("string"!=typeof e)throw new Error("The text parameter should be a string.");return!s.parseToHtml&&s.parseToShortcode&&(e=this.parseToShortcode(e)),(s.parseToHtml||s.parseToUnicode)&&(e=this.parseToUnicode(e)),s.parseToHtml&&(e=this.__parseEmojiToHtml(e,s.emojiCDN)),e}};o.default=_,e.exports=_,e.exports.emojiLibJsonData=o.emojiLibJsonData},771:(e,o,s)=>{s.r(o),s.d(o,{default:()=>n});const n=function(){var e={base:"https://twemoji.maxcdn.com/v/14.0.2/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(e){var o="string"==typeof e?parseInt(e,16):e;return o<65536?_(o):_(55296+((o-=65536)>>10),56320+(1023&o))},toCodePoint:f},onerror:function(){this.parentNode&&this.parentNode.replaceChild(u(this.alt,!1),this)},parse:function(o,s){return s&&"function"!=typeof s||(s={callback:s}),("string"==typeof o?c:p)(o,{callback:s.callback||t,attributes:"function"==typeof s.attributes?s.attributes:m,base:"string"==typeof s.base?s.base:e.base,ext:s.ext||e.ext,size:s.folder||(n=s.size||e.size,"number"==typeof n?n+"x"+n:n),className:s.className||e.className,onerror:s.onerror||e.onerror});var n},replace:k,test:function(e){s.lastIndex=0;var o=s.test(e);return s.lastIndex=0,o}},o={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},s=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc8f\udc91]|\ud83e\udd1d)|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd\udec3-\udec5\udef0-\udef6]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded7\udedd-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude74\ude78-\ude7c\ude80-\ude86\ude90-\udeac\udeb0-\udeba\udec0-\udec2\uded0-\uded9\udee0-\udee7]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,n=/\uFE0F/g,r=String.fromCharCode(8205),i=/[&<>'"]/g,a=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,_=String.fromCharCode;return e;function u(e,o){return document.createTextNode(o?e.replace(n,""):e)}function t(e,o){return"".concat(o.base,o.size,"/",e,o.ext)}function l(e,o){for(var s,n,r=e.childNodes,i=r.length;i--;)3===(n=(s=r[i]).nodeType)?o.push(s):1!==n||"ownerSVGElement"in s||a.test(s.nodeName.toLowerCase())||l(s,o);return o}function d(e){return f(e.indexOf(r)<0?e.replace(n,""):e)}function p(e,o){for(var n,r,i,a,_,t,p,c,g,m,k,f,v,h=l(e,[]),y=h.length;y--;){for(i=!1,a=document.createDocumentFragment(),t=(_=h[y]).nodeValue,c=0;p=s.exec(t);){if((g=p.index)!==c&&a.appendChild(u(t.slice(c,g),!0)),f=d(k=p[0]),c=g+k.length,v=o.callback(f,o),f&&v){for(r in(m=new Image).onerror=o.onerror,m.setAttribute("draggable","false"),n=o.attributes(k,f))n.hasOwnProperty(r)&&0!==r.indexOf("on")&&!m.hasAttribute(r)&&m.setAttribute(r,n[r]);m.className=o.className,m.alt=k,m.src=v,i=!0,a.appendChild(m)}m||a.appendChild(u(k,!1)),m=null}i&&(c<t.length&&a.appendChild(u(t.slice(c),!0)),_.parentNode.replaceChild(a,_))}return e}function c(e,o){return k(e,(function(e){var s,n,r=e,a=d(e),_=o.callback(a,o);if(a&&_){for(n in r="<img ".concat('class="',o.className,'" ','draggable="false" ','alt="',e,'"',' src="',_,'"'),s=o.attributes(e,a))s.hasOwnProperty(n)&&0!==n.indexOf("on")&&-1===r.indexOf(" "+n+"=")&&(r=r.concat(" ",n,'="',s[n].replace(i,g),'"'));r=r.concat("/>")}return r}))}function g(e){return o[e]}function m(){return null}function k(e,o){return String(e).replace(s,o)}function f(e,o){for(var s=[],n=0,r=0,i=0;i<e.length;)n=e.charCodeAt(i++),r?(s.push((65536+(r-55296<<10)+(n-56320)).toString(16)),r=0):55296<=n&&n<=56319?r=n:s.push(n.toString(16));return s.join(o||"-")}}()},279:e=>{e.exports=JSON.parse('{"😀":{"name":"grinning face","slug":"grinning_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😀","keywords":["grinning_face","face",":D","grin"]},"😃":{"name":"grinning face with big eyes","slug":"grinning_face_with_big_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😃","keywords":["grinning_face_with_big_eyes","happy","haha",":)"]},"😄":{"name":"grinning face with smiling eyes","slug":"grinning_face_with_smiling_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😄","keywords":["grinning_face_with_smiling_eyes","joy","funny"]},"😁":{"name":"beaming face with smiling eyes","slug":"beaming_face_with_smiling_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😁","keywords":["beaming_face_with_smiling_eyes","kawaii"]},"😆":{"name":"grinning squinting face","slug":"grinning_squinting_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😆","keywords":["grinning_squinting_face","lol","satisfied","glad","XD"]},"😅":{"name":"grinning face with sweat","slug":"grinning_face_with_sweat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😅","keywords":["grinning_face_with_sweat","hot","laugh","relief"]},"🤣":{"name":"rolling on the floor laughing","slug":"rolling_on_the_floor_laughing","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤣","keywords":["rolling_on_the_floor_laughing","rolling","floor","laughing","rofl"]},"😂":{"name":"face with tears of joy","slug":"face_with_tears_of_joy","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😂","keywords":["face_with_tears_of_joy","cry","weep","happytears"]},"🙂":{"name":"slightly smiling face","slug":"slightly_smiling_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🙂","keywords":["slightly_smiling_face","smile"]},"🙃":{"name":"upside-down face","slug":"upside_down_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🙃","keywords":["upside_down_face","flipped"]},"🫠":{"name":"melting face","slug":"melting_face","group":"Smileys & Emotion","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫠","keywords":["melting_face","melting face","heat"]},"😉":{"name":"winking face","slug":"winking_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😉","keywords":["winking_face","mischievous","secret",";)"]},"😊":{"name":"smiling face with smiling eyes","slug":"smiling_face_with_smiling_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😊","keywords":["smiling_face_with_smiling_eyes","flushed","crush","embarrassed"]},"😇":{"name":"smiling face with halo","slug":"smiling_face_with_halo","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😇","keywords":["smiling_face_with_halo","angel","halo","innocent"]},"🥰":{"name":"smiling face with hearts","slug":"smiling_face_with_hearts","group":"Smileys & Emotion","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥰","keywords":["smiling_face_with_hearts","love","hearts","adore"]},"😍":{"name":"smiling face with heart-eyes","slug":"smiling_face_with_heart_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😍","keywords":["smiling_face_with_heart_eyes","affection"]},"🤩":{"name":"star-struck","slug":"star_struck","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤩","keywords":["star_struck","starry","grinning"]},"😘":{"name":"face blowing a kiss","slug":"face_blowing_a_kiss","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😘","keywords":["face_blowing_a_kiss","valentines"]},"😗":{"name":"kissing face","slug":"kissing_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😗","keywords":["kissing_face","3"]},"☺️":{"name":"smiling face","slug":"smiling_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"☺️","keywords":["smiling_face","blush","massage","happiness"]},"😚":{"name":"kissing face with closed eyes","slug":"kissing_face_with_closed_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😚","keywords":["kissing_face_with_closed_eyes","infatuation"]},"😙":{"name":"kissing face with smiling eyes","slug":"kissing_face_with_smiling_eyes","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😙","keywords":["kissing_face_with_smiling_eyes"]},"🥲":{"name":"smiling face with tear","slug":"smiling_face_with_tear","group":"Smileys & Emotion","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🥲","keywords":["smiling_face_with_tear","smiling face with tear","pretend"]},"😋":{"name":"face savoring food","slug":"face_savoring_food","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😋","keywords":["face_savoring_food","yummy","nom","delicious","savouring"]},"😛":{"name":"face with tongue","slug":"face_with_tongue","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😛","keywords":["face_with_tongue","prank"]},"😜":{"name":"winking face with tongue","slug":"winking_face_with_tongue","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😜","keywords":["winking_face_with_tongue","childish","wink"]},"🤪":{"name":"zany face","slug":"zany_face","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤪","keywords":["zany_face","goofy","crazy"]},"😝":{"name":"squinting face with tongue","slug":"squinting_face_with_tongue","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😝","keywords":["squinting_face_with_tongue","playful"]},"🤑":{"name":"money-mouth face","slug":"money_mouth_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤑","keywords":["money_mouth_face","rich"]},"🤗":{"name":"smiling face with open hands","slug":"smiling_face_with_open_hands","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤗","keywords":["smiling_face_with_open_hands","hugging_face","hug"]},"🤭":{"name":"face with hand over mouth","slug":"face_with_hand_over_mouth","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤭","keywords":["face_with_hand_over_mouth","whoops","shock"]},"🫢":{"name":"face with open eyes and hand over mouth","slug":"face_with_open_eyes_and_hand_over_mouth","group":"Smileys & Emotion","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫢","keywords":["face_with_open_eyes_and_hand_over_mouth","face with open eyes and hand over mouth","silence"]},"🫣":{"name":"face with peeking eye","slug":"face_with_peeking_eye","group":"Smileys & Emotion","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫣","keywords":["face_with_peeking_eye","face with peeking eye","frightening"]},"🤫":{"name":"shushing face","slug":"shushing_face","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤫","keywords":["shushing_face","quiet","shhh"]},"🤔":{"name":"thinking face","slug":"thinking_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤔","keywords":["thinking_face","hmmm","think","consider"]},"🫡":{"name":"saluting face","slug":"saluting_face","group":"Smileys & Emotion","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫡","keywords":["saluting_face","saluting face","respect","salute"]},"🤐":{"name":"zipper-mouth face","slug":"zipper_mouth_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤐","keywords":["zipper_mouth_face","sealed","zipper"]},"🤨":{"name":"face with raised eyebrow","slug":"face_with_raised_eyebrow","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤨","keywords":["face_with_raised_eyebrow","distrust","scepticism","disapproval","disbelief"]},"😐":{"name":"neutral face","slug":"neutral_face","group":"Smileys & Emotion","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"😐","keywords":["neutral_face","indifference","meh",":|","neutral"]},"😑":{"name":"expressionless face","slug":"expressionless_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😑","keywords":["expressionless_face","indifferent","-_-","deadpan"]},"😶":{"name":"face without mouth","slug":"face_without_mouth","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😶","keywords":["face_without_mouth","hellokitty"]},"🫥":{"name":"dotted line face","slug":"dotted_line_face","group":"Smileys & Emotion","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫥","keywords":["dotted_line_face","dotted line face","invisible","lonely","isolation","depression"]},"😶‍🌫️":{"name":"face in clouds","slug":"face_in_clouds","group":"Smileys & Emotion","emoji_version":"13.1","unicode_version":"13.1","skin_tone_support":false,"char":"😶‍🌫️","keywords":["face_in_clouds","face in clouds","steam","dream"]},"😏":{"name":"smirking face","slug":"smirking_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😏","keywords":["smirking_face","mean","smug","sarcasm"]},"😒":{"name":"unamused face","slug":"unamused_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😒","keywords":["unamused_face","bored","straight face","serious","unimpressed","skeptical","dubious","side_eye"]},"🙄":{"name":"face with rolling eyes","slug":"face_with_rolling_eyes","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🙄","keywords":["face_with_rolling_eyes","eyeroll","frustrated"]},"😬":{"name":"grimacing face","slug":"grimacing_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😬","keywords":["grimacing_face","grimace"]},"😮‍💨":{"name":"face exhaling","slug":"face_exhaling","group":"Smileys & Emotion","emoji_version":"13.1","unicode_version":"13.1","skin_tone_support":false,"char":"😮‍💨","keywords":["face_exhaling","face exhaling","relieve","sigh"]},"🤥":{"name":"lying face","slug":"lying_face","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤥","keywords":["lying_face","lie","pinocchio"]},"🫨":{"name":"shaking face","slug":"shaking_face","group":"Smileys & Emotion","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🫨","keywords":["shaking_face","shaking face","blurry","earthquake"]},"😌":{"name":"relieved face","slug":"relieved_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😌","keywords":["relieved_face","relaxed"]},"😔":{"name":"pensive face","slug":"pensive_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😔","keywords":["pensive_face","sad","depressed"]},"😪":{"name":"sleepy face","slug":"sleepy_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😪","keywords":["sleepy_face","tired","rest","nap"]},"🤤":{"name":"drooling face","slug":"drooling_face","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤤","keywords":["drooling_face"]},"😴":{"name":"sleeping face","slug":"sleeping_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😴","keywords":["sleeping_face","sleepy"]},"😷":{"name":"face with medical mask","slug":"face_with_medical_mask","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😷","keywords":["face_with_medical_mask","sick","ill","disease","covid"]},"🤒":{"name":"face with thermometer","slug":"face_with_thermometer","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤒","keywords":["face_with_thermometer","temperature","cold","fever"]},"🤕":{"name":"face with head-bandage","slug":"face_with_head_bandage","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤕","keywords":["face_with_head_bandage","injured","clumsy","bandage"]},"🤢":{"name":"nauseated face","slug":"nauseated_face","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤢","keywords":["nauseated_face","vomit","gross","green","throw up"]},"🤮":{"name":"face vomiting","slug":"face_vomiting","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤮","keywords":["face_vomiting"]},"🤧":{"name":"sneezing face","slug":"sneezing_face","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤧","keywords":["sneezing_face","gesundheit","sneeze","allergy"]},"🥵":{"name":"hot face","slug":"hot_face","group":"Smileys & Emotion","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥵","keywords":["hot_face","feverish","sweating"]},"🥶":{"name":"cold face","slug":"cold_face","group":"Smileys & Emotion","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥶","keywords":["cold_face","blue","freezing","frozen","frostbite","icicles"]},"🥴":{"name":"woozy face","slug":"woozy_face","group":"Smileys & Emotion","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥴","keywords":["woozy_face","intoxicated","tipsy","wavy"]},"😵":{"name":"face with crossed-out eyes","slug":"face_with_crossed_out_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😵","keywords":["face_with_crossed_out_eyes","dizzy_face","spent","unconscious"]},"😵‍💫":{"name":"face with spiral eyes","slug":"face_with_spiral_eyes","group":"Smileys & Emotion","emoji_version":"13.1","unicode_version":"13.1","skin_tone_support":false,"char":"😵‍💫","keywords":["face_with_spiral_eyes","face with spiral eyes","nauseous","nausea"]},"🤯":{"name":"exploding head","slug":"exploding_head","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤯","keywords":["exploding_head","shocked","mind","blown"]},"🤠":{"name":"cowboy hat face","slug":"cowboy_hat_face","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤠","keywords":["cowboy_hat_face","cowgirl","hat"]},"🥳":{"name":"partying face","slug":"partying_face","group":"Smileys & Emotion","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥳","keywords":["partying_face","celebration","woohoo"]},"🥸":{"name":"disguised face","slug":"disguised_face","group":"Smileys & Emotion","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🥸","keywords":["disguised_face","disguised face","pretent","brows"]},"😎":{"name":"smiling face with sunglasses","slug":"smiling_face_with_sunglasses","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😎","keywords":["smiling_face_with_sunglasses","cool","summer","beach","sunglass"]},"🤓":{"name":"nerd face","slug":"nerd_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤓","keywords":["nerd_face","nerdy","geek","dork"]},"🧐":{"name":"face with monocle","slug":"face_with_monocle","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧐","keywords":["face_with_monocle","stuffy","wealthy"]},"😕":{"name":"confused face","slug":"confused_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😕","keywords":["confused_face","huh","weird",":/"]},"🫤":{"name":"face with diagonal mouth","slug":"face_with_diagonal_mouth","group":"Smileys & Emotion","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫤","keywords":["face_with_diagonal_mouth","face with diagonal mouth","skeptic","confuse"]},"😟":{"name":"worried face","slug":"worried_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😟","keywords":["worried_face","concern"]},"🙁":{"name":"slightly frowning face","slug":"slightly_frowning_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🙁","keywords":["slightly_frowning_face","frowning"]},"☹️":{"name":"frowning face","slug":"frowning_face","group":"Smileys & Emotion","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"☹️","keywords":["frowning_face","upset","frown"]},"😮":{"name":"face with open mouth","slug":"face_with_open_mouth","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😮","keywords":["face_with_open_mouth","surprise","impressed","wow","whoa",":O"]},"😯":{"name":"hushed face","slug":"hushed_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😯","keywords":["hushed_face","woo","shh"]},"😲":{"name":"astonished face","slug":"astonished_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😲","keywords":["astonished_face","xox","surprised","poisoned"]},"😳":{"name":"flushed face","slug":"flushed_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😳","keywords":["flushed_face","shy","flattered"]},"🥺":{"name":"pleading face","slug":"pleading_face","group":"Smileys & Emotion","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥺","keywords":["pleading_face","begging","mercy","grievance"]},"🥹":{"name":"face holding back tears","slug":"face_holding_back_tears","group":"Smileys & Emotion","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🥹","keywords":["face_holding_back_tears","face holding back tears","touched","gratitude"]},"😦":{"name":"frowning face with open mouth","slug":"frowning_face_with_open_mouth","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😦","keywords":["frowning_face_with_open_mouth","aw","what"]},"😧":{"name":"anguished face","slug":"anguished_face","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😧","keywords":["anguished_face","stunned"]},"😨":{"name":"fearful face","slug":"fearful_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😨","keywords":["fearful_face","scared","terrified"]},"😰":{"name":"anxious face with sweat","slug":"anxious_face_with_sweat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😰","keywords":["anxious_face_with_sweat","nervous","sweat"]},"😥":{"name":"sad but relieved face","slug":"sad_but_relieved_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😥","keywords":["sad_but_relieved_face","phew"]},"😢":{"name":"crying face","slug":"crying_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😢","keywords":["crying_face","tears",":\'("]},"😭":{"name":"loudly crying face","slug":"loudly_crying_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😭","keywords":["loudly_crying_face"]},"😱":{"name":"face screaming in fear","slug":"face_screaming_in_fear","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😱","keywords":["face_screaming_in_fear","munch","omg"]},"😖":{"name":"confounded face","slug":"confounded_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😖","keywords":["confounded_face","confused","unwell",":S"]},"😣":{"name":"persevering face","slug":"persevering_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😣","keywords":["persevering_face","no","oops"]},"😞":{"name":"disappointed face","slug":"disappointed_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😞","keywords":["disappointed_face",":("]},"😓":{"name":"downcast face with sweat","slug":"downcast_face_with_sweat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😓","keywords":["downcast_face_with_sweat","exercise"]},"😩":{"name":"weary face","slug":"weary_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😩","keywords":["weary_face"]},"😫":{"name":"tired face","slug":"tired_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😫","keywords":["tired_face","whine"]},"🥱":{"name":"yawning face","slug":"yawning_face","group":"Smileys & Emotion","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🥱","keywords":["yawning_face"]},"😤":{"name":"face with steam from nose","slug":"face_with_steam_from_nose","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😤","keywords":["face_with_steam_from_nose","gas","proud","pride"]},"😡":{"name":"enraged face","slug":"enraged_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😡","keywords":["enraged_face","pouting_face","hate","despise"]},"😠":{"name":"angry face","slug":"angry_face","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😠","keywords":["angry_face","mad","annoyed"]},"🤬":{"name":"face with symbols on mouth","slug":"face_with_symbols_on_mouth","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🤬","keywords":["face_with_symbols_on_mouth","swearing","cursing","cussing","profanity","expletive"]},"😈":{"name":"smiling face with horns","slug":"smiling_face_with_horns","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"😈","keywords":["smiling_face_with_horns","devil"]},"👿":{"name":"angry face with horns","slug":"angry_face_with_horns","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👿","keywords":["angry_face_with_horns","horns"]},"💀":{"name":"skull","slug":"skull","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💀","keywords":["skull","dead","creepy"]},"☠️":{"name":"skull and crossbones","slug":"skull_and_crossbones","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"☠️","keywords":["skull_and_crossbones","poison","deadly","scary"]},"💩":{"name":"pile of poo","slug":"pile_of_poo","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💩","keywords":["pile_of_poo","hankey","shitface","fail","turd","shit"]},"🤡":{"name":"clown face","slug":"clown_face","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤡","keywords":["clown_face"]},"👹":{"name":"ogre","slug":"ogre","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👹","keywords":["ogre","monster","mask","demon","ogre"]},"👺":{"name":"goblin","slug":"goblin","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👺","keywords":["goblin","red","goblin"]},"👻":{"name":"ghost","slug":"ghost","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👻","keywords":["ghost","halloween","spooky"]},"👽":{"name":"alien","slug":"alien","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👽","keywords":["alien","UFO","paul","outer_space"]},"👾":{"name":"alien monster","slug":"alien_monster","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👾","keywords":["alien_monster","game","arcade"]},"🤖":{"name":"robot","slug":"robot","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🤖","keywords":["robot","computer","machine","bot"]},"😺":{"name":"grinning cat","slug":"grinning_cat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😺","keywords":["grinning_cat","animal"]},"😸":{"name":"grinning cat with smiling eyes","slug":"grinning_cat_with_smiling_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😸","keywords":["grinning_cat_with_smiling_eyes","cats"]},"😹":{"name":"cat with tears of joy","slug":"cat_with_tears_of_joy","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😹","keywords":["cat_with_tears_of_joy"]},"😻":{"name":"smiling cat with heart-eyes","slug":"smiling_cat_with_heart_eyes","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😻","keywords":["smiling_cat_with_heart_eyes"]},"😼":{"name":"cat with wry smile","slug":"cat_with_wry_smile","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😼","keywords":["cat_with_wry_smile","smirk"]},"😽":{"name":"kissing cat","slug":"kissing_cat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😽","keywords":["kissing_cat"]},"🙀":{"name":"weary cat","slug":"weary_cat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🙀","keywords":["weary_cat","scream"]},"😿":{"name":"crying cat","slug":"crying_cat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😿","keywords":["crying_cat"]},"😾":{"name":"pouting cat","slug":"pouting_cat","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"😾","keywords":["pouting_cat"]},"🙈":{"name":"see-no-evil monkey","slug":"see_no_evil_monkey","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🙈","keywords":["see_no_evil_monkey","nature"]},"🙉":{"name":"hear-no-evil monkey","slug":"hear_no_evil_monkey","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🙉","keywords":["hear_no_evil_monkey"]},"🙊":{"name":"speak-no-evil monkey","slug":"speak_no_evil_monkey","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🙊","keywords":["speak_no_evil_monkey"]},"💌":{"name":"love letter","slug":"love_letter","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💌","keywords":["love_letter","email"]},"💘":{"name":"heart with arrow","slug":"heart_with_arrow","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💘","keywords":["heart_with_arrow","heart"]},"💝":{"name":"heart with ribbon","slug":"heart_with_ribbon","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💝","keywords":["heart_with_ribbon"]},"💖":{"name":"sparkling heart","slug":"sparkling_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💖","keywords":["sparkling_heart"]},"💗":{"name":"growing heart","slug":"growing_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💗","keywords":["growing_heart","like"]},"💓":{"name":"beating heart","slug":"beating_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💓","keywords":["beating_heart","pink"]},"💞":{"name":"revolving hearts","slug":"revolving_hearts","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💞","keywords":["revolving_hearts"]},"💕":{"name":"two hearts","slug":"two_hearts","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💕","keywords":["two_hearts"]},"💟":{"name":"heart decoration","slug":"heart_decoration","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💟","keywords":["heart_decoration","purple-square"]},"❣️":{"name":"heart exclamation","slug":"heart_exclamation","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"❣️","keywords":["heart_exclamation","decoration"]},"💔":{"name":"broken heart","slug":"broken_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💔","keywords":["broken_heart","sorry","break","heartbreak"]},"❤️‍🔥":{"name":"heart on fire","slug":"heart_on_fire","group":"Smileys & Emotion","emoji_version":"13.1","unicode_version":"13.1","skin_tone_support":false,"char":"❤️‍🔥","keywords":["heart_on_fire","heart on fire","passionate","enthusiastic"]},"❤️‍🩹":{"name":"mending heart","slug":"mending_heart","group":"Smileys & Emotion","emoji_version":"13.1","unicode_version":"13.1","skin_tone_support":false,"char":"❤️‍🩹","keywords":["mending_heart","mending heart","broken heart","wounded"]},"❤️":{"name":"red heart","slug":"red_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❤️","keywords":["red_heart"]},"🩷":{"name":"pink heart","slug":"pink_heart","group":"Smileys & Emotion","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🩷","keywords":["pink_heart","pink heart"]},"🧡":{"name":"orange heart","slug":"orange_heart","group":"Smileys & Emotion","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧡","keywords":["orange_heart"]},"💛":{"name":"yellow heart","slug":"yellow_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💛","keywords":["yellow_heart"]},"💚":{"name":"green heart","slug":"green_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💚","keywords":["green_heart"]},"💙":{"name":"blue heart","slug":"blue_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💙","keywords":["blue_heart"]},"🩵":{"name":"light blue heart","slug":"light_blue_heart","group":"Smileys & Emotion","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🩵","keywords":["light_blue_heart","light blue heart","baby blue"]},"💜":{"name":"purple heart","slug":"purple_heart","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💜","keywords":["purple_heart"]},"🤎":{"name":"brown heart","slug":"brown_heart","group":"Smileys & Emotion","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🤎","keywords":["brown_heart","coffee"]},"🖤":{"name":"black heart","slug":"black_heart","group":"Smileys & Emotion","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🖤","keywords":["black_heart","evil"]},"🩶":{"name":"grey heart","slug":"grey_heart","group":"Smileys & Emotion","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🩶","keywords":["grey_heart","grey heart","silver","monochrome"]},"🤍":{"name":"white heart","slug":"white_heart","group":"Smileys & Emotion","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🤍","keywords":["white_heart","pure"]},"💋":{"name":"kiss mark","slug":"kiss_mark","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💋","keywords":["kiss_mark","lips"]},"💯":{"name":"hundred points","slug":"hundred_points","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💯","keywords":["hundred_points","score","perfect","century","exam","quiz","hundred"]},"💢":{"name":"anger symbol","slug":"anger_symbol","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💢","keywords":["anger_symbol","angry"]},"💥":{"name":"collision","slug":"collision","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💥","keywords":["collision","explode","explosion","collision"]},"💫":{"name":"dizzy","slug":"dizzy","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💫","keywords":["dizzy","shoot"]},"💦":{"name":"sweat droplets","slug":"sweat_droplets","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💦","keywords":["sweat_droplets","water"]},"💨":{"name":"dashing away","slug":"dashing_away","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💨","keywords":["dashing_away","wind","air","fast","shoo","fart","puff"]},"🕳️":{"name":"hole","slug":"hole","group":"Smileys & Emotion","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕳️","keywords":["hole","embarrassing"]},"💬":{"name":"speech balloon","slug":"speech_balloon","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💬","keywords":["speech_balloon","bubble","message","chatting"]},"👁️‍🗨️":{"name":"eye in speech bubble","slug":"eye_in_speech_bubble","group":"Smileys & Emotion","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👁️‍🗨️","keywords":["eye_in_speech_bubble","info"]},"🗨️":{"name":"left speech bubble","slug":"left_speech_bubble","group":"Smileys & Emotion","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🗨️","keywords":["left_speech_bubble","words","talk"]},"🗯️":{"name":"right anger bubble","slug":"right_anger_bubble","group":"Smileys & Emotion","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗯️","keywords":["right_anger_bubble","caption","speech"]},"💭":{"name":"thought balloon","slug":"thought_balloon","group":"Smileys & Emotion","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"💭","keywords":["thought_balloon","thinking"]},"💤":{"name":"ZZZ","slug":"zzz","group":"Smileys & Emotion","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💤","keywords":["zzz"]},"👋":{"name":"waving hand","slug":"waving_hand","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👋","keywords":["waving_hand","hands","goodbye","solong","farewell","hello","hi"]},"🤚":{"name":"raised back of hand","slug":"raised_back_of_hand","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤚","keywords":["raised_back_of_hand","fingers","raised","backhand"]},"🖐️":{"name":"hand with fingers splayed","slug":"hand_with_fingers_splayed","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🖐️","keywords":["hand_with_fingers_splayed","hand"]},"✋":{"name":"raised hand","slug":"raised_hand","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"✋","keywords":["raised_hand","stop","highfive","ban"]},"🖖":{"name":"vulcan salute","slug":"vulcan_salute","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🖖","keywords":["vulcan_salute","spock","star trek"]},"🫱":{"name":"rightwards hand","slug":"rightwards_hand","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫱","keywords":["rightwards_hand","rightwards hand","palm"]},"🫲":{"name":"leftwards hand","slug":"leftwards_hand","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫲","keywords":["leftwards_hand","leftwards hand","offer"]},"🫳":{"name":"palm down hand","slug":"palm_down_hand","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫳","keywords":["palm_down_hand","palm down hand","drop"]},"🫴":{"name":"palm up hand","slug":"palm_up_hand","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫴","keywords":["palm_up_hand","palm up hand","demand"]},"🫷":{"name":"leftwards pushing hand","slug":"leftwards_pushing_hand","group":"People & Body","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":true,"skin_tone_support_unicode_version":"15.0","char":"🫷","keywords":["leftwards_pushing_hand","leftwards pushing hand","pressing"]},"🫸":{"name":"rightwards pushing hand","slug":"rightwards_pushing_hand","group":"People & Body","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":true,"skin_tone_support_unicode_version":"15.0","char":"🫸","keywords":["rightwards_pushing_hand","rightwards pushing hand"]},"👌":{"name":"OK hand","slug":"ok_hand","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👌","keywords":["ok_hand","limbs","okay"]},"🤌":{"name":"pinched fingers","slug":"pinched_fingers","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"🤌","keywords":["pinched_fingers","pinched fingers","size"]},"🤏":{"name":"pinching hand","slug":"pinching_hand","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🤏","keywords":["pinching_hand","tiny","small"]},"✌️":{"name":"victory hand","slug":"victory_hand","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"✌️","keywords":["victory_hand","ohyeah","peace","victory","two"]},"🤞":{"name":"crossed fingers","slug":"crossed_fingers","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤞","keywords":["crossed_fingers","good","lucky"]},"🫰":{"name":"hand with index finger and thumb crossed","slug":"hand_with_index_finger_and_thumb_crossed","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫰","keywords":["hand_with_index_finger_and_thumb_crossed","hand with index finger and thumb crossed","expensive"]},"🤟":{"name":"love-you gesture","slug":"love_you_gesture","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🤟","keywords":["love_you_gesture"]},"🤘":{"name":"sign of the horns","slug":"sign_of_the_horns","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🤘","keywords":["sign_of_the_horns","evil_eye","sign_of_horns","rock_on"]},"🤙":{"name":"call me hand","slug":"call_me_hand","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤙","keywords":["call_me_hand","gesture","shaka"]},"👈":{"name":"backhand index pointing left","slug":"backhand_index_pointing_left","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👈","keywords":["backhand_index_pointing_left","direction","left"]},"👉":{"name":"backhand index pointing right","slug":"backhand_index_pointing_right","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👉","keywords":["backhand_index_pointing_right","right"]},"👆":{"name":"backhand index pointing up","slug":"backhand_index_pointing_up","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👆","keywords":["backhand_index_pointing_up","up"]},"🖕":{"name":"middle finger","slug":"middle_finger","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🖕","keywords":["middle_finger","rude","middle","flipping"]},"👇":{"name":"backhand index pointing down","slug":"backhand_index_pointing_down","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👇","keywords":["backhand_index_pointing_down","down"]},"☝️":{"name":"index pointing up","slug":"index_pointing_up","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"☝️","keywords":["index_pointing_up"]},"🫵":{"name":"index pointing at the viewer","slug":"index_pointing_at_the_viewer","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫵","keywords":["index_pointing_at_the_viewer","index pointing at the viewer","you","recruit"]},"👍":{"name":"thumbs up","slug":"thumbs_up","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👍","keywords":["thumbs_up","thumbsup","yes","accept","+1"]},"👎":{"name":"thumbs down","slug":"thumbs_down","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👎","keywords":["thumbs_down","thumbsdown","dislike","-1"]},"✊":{"name":"raised fist","slug":"raised_fist","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"✊","keywords":["raised_fist","grasp"]},"👊":{"name":"oncoming fist","slug":"oncoming_fist","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👊","keywords":["oncoming_fist","violence","fist","hit","attack"]},"🤛":{"name":"left-facing fist","slug":"left_facing_fist","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤛","keywords":["left_facing_fist","fistbump"]},"🤜":{"name":"right-facing fist","slug":"right_facing_fist","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤜","keywords":["right_facing_fist"]},"👏":{"name":"clapping hands","slug":"clapping_hands","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👏","keywords":["clapping_hands","praise","applause","congrats","yay"]},"🙌":{"name":"raising hands","slug":"raising_hands","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙌","keywords":["raising_hands","hooray","yea"]},"🫶":{"name":"heart hands","slug":"heart_hands","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫶","keywords":["heart_hands","heart hands","appreciation","support"]},"👐":{"name":"open hands","slug":"open_hands","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👐","keywords":["open_hands","open"]},"🤲":{"name":"palms up together","slug":"palms_up_together","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🤲","keywords":["palms_up_together","cupped","prayer"]},"🤝":{"name":"handshake","slug":"handshake","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🤝","keywords":["handshake","agreement","shake"]},"🙏":{"name":"folded hands","slug":"folded_hands","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙏","keywords":["folded_hands","please","hope","wish","namaste","thank you","thanks","appreciate"]},"✍️":{"name":"writing hand","slug":"writing_hand","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"✍️","keywords":["writing_hand","lower_left_ballpoint_pen","compose"]},"💅":{"name":"nail polish","slug":"nail_polish","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"💅","keywords":["nail_polish","beauty","manicure","finger","nail"]},"🤳":{"name":"selfie","slug":"selfie","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤳","keywords":["selfie","phone"]},"💪":{"name":"flexed biceps","slug":"flexed_biceps","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"💪","keywords":["flexed_biceps","arm","flex","strong","biceps"]},"🦾":{"name":"mechanical arm","slug":"mechanical_arm","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦾","keywords":["mechanical_arm","accessibility"]},"🦿":{"name":"mechanical leg","slug":"mechanical_leg","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦿","keywords":["mechanical_leg"]},"🦵":{"name":"leg","slug":"leg","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦵","keywords":["leg","kick","limb"]},"🦶":{"name":"foot","slug":"foot","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦶","keywords":["foot","stomp"]},"👂":{"name":"ear","slug":"ear","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👂","keywords":["ear","hear","listen"]},"🦻":{"name":"ear with hearing aid","slug":"ear_with_hearing_aid","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🦻","keywords":["ear_with_hearing_aid"]},"👃":{"name":"nose","slug":"nose","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👃","keywords":["nose","smell","sniff"]},"🧠":{"name":"brain","slug":"brain","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧠","keywords":["brain","smart","intelligent"]},"🫀":{"name":"anatomical heart","slug":"anatomical_heart","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫀","keywords":["anatomical_heart","anatomical heart","heartbeat"]},"🫁":{"name":"lungs","slug":"lungs","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫁","keywords":["lungs","breathe"]},"🦷":{"name":"tooth","slug":"tooth","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦷","keywords":["tooth","teeth","dentist"]},"🦴":{"name":"bone","slug":"bone","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦴","keywords":["bone","skeleton"]},"👀":{"name":"eyes","slug":"eyes","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👀","keywords":["eyes","look","stalk","peek"]},"👁️":{"name":"eye","slug":"eye","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"👁️","keywords":["eye","see","stare"]},"👅":{"name":"tongue","slug":"tongue","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👅","keywords":["tongue"]},"👄":{"name":"mouth","slug":"mouth","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👄","keywords":["mouth","mouth"]},"🫦":{"name":"biting lip","slug":"biting_lip","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫦","keywords":["biting_lip","biting lip","flirt","sexy","pain","worry"]},"👶":{"name":"baby","slug":"baby","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👶","keywords":["baby","toddler"]},"🧒":{"name":"child","slug":"child","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧒","keywords":["child","gender-neutral","young"]},"👦":{"name":"boy","slug":"boy","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👦","keywords":["boy","male","guy","teenager"]},"👧":{"name":"girl","slug":"girl","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👧","keywords":["girl","female"]},"🧑":{"name":"person","slug":"person","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧑","keywords":["person","person"]},"👱":{"name":"person blond hair","slug":"person_blond_hair","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👱","keywords":["person_blond_hair","hairstyle"]},"👨":{"name":"man","slug":"man","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👨","keywords":["man","mustache","father","dad","sir"]},"🧔":{"name":"person beard","slug":"person_beard","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧔","keywords":["person_beard","bewhiskered"]},"🧔‍♂️":{"name":"man beard","slug":"man_beard","group":"People & Body","emoji_version":"13.1","unicode_version":"13.1","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"🧔‍♂️","keywords":["man_beard","man beard","facial hair"]},"🧔‍♀️":{"name":"woman beard","slug":"woman_beard","group":"People & Body","emoji_version":"13.1","unicode_version":"13.1","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"🧔‍♀️","keywords":["woman_beard","woman beard"]},"👨‍🦰":{"name":"man red hair","slug":"man_red_hair","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👨‍🦰","keywords":["man_red_hair"]},"👨‍🦱":{"name":"man curly hair","slug":"man_curly_hair","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👨‍🦱","keywords":["man_curly_hair"]},"👨‍🦳":{"name":"man white hair","slug":"man_white_hair","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👨‍🦳","keywords":["man_white_hair","old"]},"👨‍🦲":{"name":"man bald","slug":"man_bald","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👨‍🦲","keywords":["man_bald","hairless"]},"👩":{"name":"woman","slug":"woman","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👩","keywords":["woman","girls","lady"]},"👩‍🦰":{"name":"woman red hair","slug":"woman_red_hair","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👩‍🦰","keywords":["woman_red_hair"]},"🧑‍🦰":{"name":"person red hair","slug":"person_red_hair","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🦰","keywords":["person_red_hair"]},"👩‍🦱":{"name":"woman curly hair","slug":"woman_curly_hair","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👩‍🦱","keywords":["woman_curly_hair"]},"🧑‍🦱":{"name":"person curly hair","slug":"person_curly_hair","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🦱","keywords":["person_curly_hair"]},"👩‍🦳":{"name":"woman white hair","slug":"woman_white_hair","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👩‍🦳","keywords":["woman_white_hair","elder"]},"🧑‍🦳":{"name":"person white hair","slug":"person_white_hair","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🦳","keywords":["person_white_hair"]},"👩‍🦲":{"name":"woman bald","slug":"woman_bald","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"👩‍🦲","keywords":["woman_bald"]},"🧑‍🦲":{"name":"person bald","slug":"person_bald","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🦲","keywords":["person_bald"]},"👱‍♀️":{"name":"woman blond hair","slug":"woman_blond_hair","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👱‍♀️","keywords":["woman_blond_hair","blonde"]},"👱‍♂️":{"name":"man blond hair","slug":"man_blond_hair","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👱‍♂️","keywords":["man_blond_hair"]},"🧓":{"name":"older person","slug":"older_person","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧓","keywords":["older_person","human","senior"]},"👴":{"name":"old man","slug":"old_man","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👴","keywords":["old_man","men"]},"👵":{"name":"old woman","slug":"old_woman","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👵","keywords":["old_woman","women"]},"🙍":{"name":"person frowning","slug":"person_frowning","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙍","keywords":["person_frowning","worried"]},"🙍‍♂️":{"name":"man frowning","slug":"man_frowning","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙍‍♂️","keywords":["man_frowning","discouraged"]},"🙍‍♀️":{"name":"woman frowning","slug":"woman_frowning","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙍‍♀️","keywords":["woman_frowning","unhappy"]},"🙎":{"name":"person pouting","slug":"person_pouting","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙎","keywords":["person_pouting"]},"🙎‍♂️":{"name":"man pouting","slug":"man_pouting","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙎‍♂️","keywords":["man_pouting"]},"🙎‍♀️":{"name":"woman pouting","slug":"woman_pouting","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙎‍♀️","keywords":["woman_pouting"]},"🙅":{"name":"person gesturing NO","slug":"person_gesturing_no","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙅","keywords":["person_gesturing_no","decline"]},"🙅‍♂️":{"name":"man gesturing NO","slug":"man_gesturing_no","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙅‍♂️","keywords":["man_gesturing_no","nope"]},"🙅‍♀️":{"name":"woman gesturing NO","slug":"woman_gesturing_no","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙅‍♀️","keywords":["woman_gesturing_no"]},"🙆":{"name":"person gesturing OK","slug":"person_gesturing_ok","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙆","keywords":["person_gesturing_ok","agree"]},"🙆‍♂️":{"name":"man gesturing OK","slug":"man_gesturing_ok","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙆‍♂️","keywords":["man_gesturing_ok"]},"🙆‍♀️":{"name":"woman gesturing OK","slug":"woman_gesturing_ok","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙆‍♀️","keywords":["woman_gesturing_ok"]},"💁":{"name":"person tipping hand","slug":"person_tipping_hand","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"💁","keywords":["person_tipping_hand"]},"💁‍♂️":{"name":"man tipping hand","slug":"man_tipping_hand","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💁‍♂️","keywords":["man_tipping_hand"]},"💁‍♀️":{"name":"woman tipping hand","slug":"woman_tipping_hand","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💁‍♀️","keywords":["woman_tipping_hand"]},"🙋":{"name":"person raising hand","slug":"person_raising_hand","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙋","keywords":["person_raising_hand","question"]},"🙋‍♂️":{"name":"man raising hand","slug":"man_raising_hand","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙋‍♂️","keywords":["man_raising_hand"]},"🙋‍♀️":{"name":"woman raising hand","slug":"woman_raising_hand","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙋‍♀️","keywords":["woman_raising_hand"]},"🧏":{"name":"deaf person","slug":"deaf_person","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧏","keywords":["deaf_person"]},"🧏‍♂️":{"name":"deaf man","slug":"deaf_man","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧏‍♂️","keywords":["deaf_man"]},"🧏‍♀️":{"name":"deaf woman","slug":"deaf_woman","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧏‍♀️","keywords":["deaf_woman"]},"🙇":{"name":"person bowing","slug":"person_bowing","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🙇","keywords":["person_bowing","respectiful"]},"🙇‍♂️":{"name":"man bowing","slug":"man_bowing","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙇‍♂️","keywords":["man_bowing"]},"🙇‍♀️":{"name":"woman bowing","slug":"woman_bowing","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🙇‍♀️","keywords":["woman_bowing"]},"🤦":{"name":"person facepalming","slug":"person_facepalming","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤦","keywords":["person_facepalming","disappointed"]},"🤦‍♂️":{"name":"man facepalming","slug":"man_facepalming","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤦‍♂️","keywords":["man_facepalming"]},"🤦‍♀️":{"name":"woman facepalming","slug":"woman_facepalming","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤦‍♀️","keywords":["woman_facepalming"]},"🤷":{"name":"person shrugging","slug":"person_shrugging","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤷","keywords":["person_shrugging","regardless"]},"🤷‍♂️":{"name":"man shrugging","slug":"man_shrugging","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤷‍♂️","keywords":["man_shrugging","doubt"]},"🤷‍♀️":{"name":"woman shrugging","slug":"woman_shrugging","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤷‍♀️","keywords":["woman_shrugging"]},"🧑‍⚕️":{"name":"health worker","slug":"health_worker","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍⚕️","keywords":["health_worker"]},"👨‍⚕️":{"name":"man health worker","slug":"man_health_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍⚕️","keywords":["man_health_worker","doctor","therapist"]},"👩‍⚕️":{"name":"woman health worker","slug":"woman_health_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍⚕️","keywords":["woman_health_worker","nurse","healthcare"]},"🧑‍🎓":{"name":"student","slug":"student","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🎓","keywords":["student","learn"]},"👨‍🎓":{"name":"man student","slug":"man_student","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🎓","keywords":["man_student","graduate"]},"👩‍🎓":{"name":"woman student","slug":"woman_student","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🎓","keywords":["woman_student"]},"🧑‍🏫":{"name":"teacher","slug":"teacher","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🏫","keywords":["teacher","professor"]},"👨‍🏫":{"name":"man teacher","slug":"man_teacher","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🏫","keywords":["man_teacher","instructor"]},"👩‍🏫":{"name":"woman teacher","slug":"woman_teacher","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🏫","keywords":["woman_teacher"]},"🧑‍⚖️":{"name":"judge","slug":"judge","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍⚖️","keywords":["judge","law"]},"👨‍⚖️":{"name":"man judge","slug":"man_judge","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍⚖️","keywords":["man_judge","justice"]},"👩‍⚖️":{"name":"woman judge","slug":"woman_judge","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍⚖️","keywords":["woman_judge","court"]},"🧑‍🌾":{"name":"farmer","slug":"farmer","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🌾","keywords":["farmer","crops"]},"👨‍🌾":{"name":"man farmer","slug":"man_farmer","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🌾","keywords":["man_farmer","rancher"]},"👩‍🌾":{"name":"woman farmer","slug":"woman_farmer","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🌾","keywords":["woman_farmer","gardener"]},"🧑‍🍳":{"name":"cook","slug":"cook","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🍳","keywords":["cook","food","kitchen","culinary"]},"👨‍🍳":{"name":"man cook","slug":"man_cook","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🍳","keywords":["man_cook","chef"]},"👩‍🍳":{"name":"woman cook","slug":"woman_cook","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🍳","keywords":["woman_cook"]},"🧑‍🔧":{"name":"mechanic","slug":"mechanic","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🔧","keywords":["mechanic","worker","technician"]},"👨‍🔧":{"name":"man mechanic","slug":"man_mechanic","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🔧","keywords":["man_mechanic","plumber"]},"👩‍🔧":{"name":"woman mechanic","slug":"woman_mechanic","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🔧","keywords":["woman_mechanic"]},"🧑‍🏭":{"name":"factory worker","slug":"factory_worker","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🏭","keywords":["factory_worker","labor"]},"👨‍🏭":{"name":"man factory worker","slug":"man_factory_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🏭","keywords":["man_factory_worker","assembly"]},"👩‍🏭":{"name":"woman factory worker","slug":"woman_factory_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🏭","keywords":["woman_factory_worker","industrial"]},"🧑‍💼":{"name":"office worker","slug":"office_worker","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍💼","keywords":["office_worker","business"]},"👨‍💼":{"name":"man office worker","slug":"man_office_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍💼","keywords":["man_office_worker","manager"]},"👩‍💼":{"name":"woman office worker","slug":"woman_office_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍💼","keywords":["woman_office_worker"]},"🧑‍🔬":{"name":"scientist","slug":"scientist","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🔬","keywords":["scientist","chemistry"]},"👨‍🔬":{"name":"man scientist","slug":"man_scientist","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🔬","keywords":["man_scientist","biologist","engineer"]},"👩‍🔬":{"name":"woman scientist","slug":"woman_scientist","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🔬","keywords":["woman_scientist","chemist","physicist"]},"🧑‍💻":{"name":"technologist","slug":"technologist","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍💻","keywords":["technologist"]},"👨‍💻":{"name":"man technologist","slug":"man_technologist","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍💻","keywords":["man_technologist","coder","programmer"]},"👩‍💻":{"name":"woman technologist","slug":"woman_technologist","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍💻","keywords":["woman_technologist","developer","software"]},"🧑‍🎤":{"name":"singer","slug":"singer","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🎤","keywords":["singer","song","performer"]},"👨‍🎤":{"name":"man singer","slug":"man_singer","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🎤","keywords":["man_singer","rockstar"]},"👩‍🎤":{"name":"woman singer","slug":"woman_singer","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🎤","keywords":["woman_singer","entertainer"]},"🧑‍🎨":{"name":"artist","slug":"artist","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🎨","keywords":["artist","painting","creativity"]},"👨‍🎨":{"name":"man artist","slug":"man_artist","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🎨","keywords":["man_artist","painter"]},"👩‍🎨":{"name":"woman artist","slug":"woman_artist","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🎨","keywords":["woman_artist"]},"🧑‍✈️":{"name":"pilot","slug":"pilot","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍✈️","keywords":["pilot","plane"]},"👨‍✈️":{"name":"man pilot","slug":"man_pilot","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍✈️","keywords":["man_pilot","aviator"]},"👩‍✈️":{"name":"woman pilot","slug":"woman_pilot","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍✈️","keywords":["woman_pilot"]},"🧑‍🚀":{"name":"astronaut","slug":"astronaut","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🚀","keywords":["astronaut","outerspace"]},"👨‍🚀":{"name":"man astronaut","slug":"man_astronaut","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🚀","keywords":["man_astronaut","space"]},"👩‍🚀":{"name":"woman astronaut","slug":"woman_astronaut","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🚀","keywords":["woman_astronaut"]},"🧑‍🚒":{"name":"firefighter","slug":"firefighter","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🚒","keywords":["firefighter"]},"👨‍🚒":{"name":"man firefighter","slug":"man_firefighter","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👨‍🚒","keywords":["man_firefighter","fireman"]},"👩‍🚒":{"name":"woman firefighter","slug":"woman_firefighter","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👩‍🚒","keywords":["woman_firefighter"]},"👮":{"name":"police officer","slug":"police_officer","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👮","keywords":["police_officer","cop"]},"👮‍♂️":{"name":"man police officer","slug":"man_police_officer","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👮‍♂️","keywords":["man_police_officer","police","enforcement"]},"👮‍♀️":{"name":"woman police officer","slug":"woman_police_officer","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👮‍♀️","keywords":["woman_police_officer","legal","arrest"]},"🕵️":{"name":"detective","slug":"detective","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":true,"skin_tone_support_unicode_version":"2.0","char":"🕵️","keywords":["detective","spy","detective"]},"🕵️‍♂️":{"name":"man detective","slug":"man_detective","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🕵️‍♂️","keywords":["man_detective","crime"]},"🕵️‍♀️":{"name":"woman detective","slug":"woman_detective","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🕵️‍♀️","keywords":["woman_detective"]},"💂":{"name":"guard","slug":"guard","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"💂","keywords":["guard","protect"]},"💂‍♂️":{"name":"man guard","slug":"man_guard","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💂‍♂️","keywords":["man_guard","uk","royal"]},"💂‍♀️":{"name":"woman guard","slug":"woman_guard","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💂‍♀️","keywords":["woman_guard","gb"]},"🥷":{"name":"ninja","slug":"ninja","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"🥷","keywords":["ninja","ninjutsu","skills"]},"👷":{"name":"construction worker","slug":"construction_worker","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👷","keywords":["construction_worker","build"]},"👷‍♂️":{"name":"man construction worker","slug":"man_construction_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👷‍♂️","keywords":["man_construction_worker","wip"]},"👷‍♀️":{"name":"woman construction worker","slug":"woman_construction_worker","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👷‍♀️","keywords":["woman_construction_worker"]},"🫅":{"name":"person with crown","slug":"person_with_crown","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫅","keywords":["person_with_crown","person with crown","royalty"]},"🤴":{"name":"prince","slug":"prince","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤴","keywords":["prince","king"]},"👸":{"name":"princess","slug":"princess","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👸","keywords":["princess","blond","queen"]},"👳":{"name":"person wearing turban","slug":"person_wearing_turban","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👳","keywords":["person_wearing_turban","headdress"]},"👳‍♂️":{"name":"man wearing turban","slug":"man_wearing_turban","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👳‍♂️","keywords":["man_wearing_turban","indian","arabs"]},"👳‍♀️":{"name":"woman wearing turban","slug":"woman_wearing_turban","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"👳‍♀️","keywords":["woman_wearing_turban","hinduism"]},"👲":{"name":"person with skullcap","slug":"person_with_skullcap","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👲","keywords":["person_with_skullcap","man_with_skullcap"]},"🧕":{"name":"woman with headscarf","slug":"woman_with_headscarf","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧕","keywords":["woman_with_headscarf","hijab","mantilla","tichel"]},"🤵":{"name":"person in tuxedo","slug":"person_in_tuxedo","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤵","keywords":["person_in_tuxedo","couple","groom"]},"🤵‍♂️":{"name":"man in tuxedo","slug":"man_in_tuxedo","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"🤵‍♂️","keywords":["man_in_tuxedo","man in tuxedo","formal"]},"🤵‍♀️":{"name":"woman in tuxedo","slug":"woman_in_tuxedo","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"🤵‍♀️","keywords":["woman_in_tuxedo","woman in tuxedo"]},"👰":{"name":"person with veil","slug":"person_with_veil","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👰","keywords":["person_with_veil","bride_with_veil","bride"]},"👰‍♂️":{"name":"man with veil","slug":"man_with_veil","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"👰‍♂️","keywords":["man_with_veil","man with veil"]},"👰‍♀️":{"name":"woman with veil","slug":"woman_with_veil","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"👰‍♀️","keywords":["woman_with_veil","woman with veil"]},"🤰":{"name":"pregnant woman","slug":"pregnant_woman","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤰","keywords":["pregnant_woman"]},"🫃":{"name":"pregnant man","slug":"pregnant_man","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫃","keywords":["pregnant_man","pregnant man","belly"]},"🫄":{"name":"pregnant person","slug":"pregnant_person","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":true,"skin_tone_support_unicode_version":"14.0","char":"🫄","keywords":["pregnant_person","pregnant person"]},"🤱":{"name":"breast-feeding","slug":"breast_feeding","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🤱","keywords":["breast_feeding","nursing"]},"👩‍🍼":{"name":"woman feeding baby","slug":"woman_feeding_baby","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"👩‍🍼","keywords":["woman_feeding_baby","woman feeding baby","birth"]},"👨‍🍼":{"name":"man feeding baby","slug":"man_feeding_baby","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"👨‍🍼","keywords":["man_feeding_baby","man feeding baby"]},"🧑‍🍼":{"name":"person feeding baby","slug":"person_feeding_baby","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"🧑‍🍼","keywords":["person_feeding_baby","person feeding baby"]},"👼":{"name":"baby angel","slug":"baby_angel","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"👼","keywords":["baby_angel","heaven"]},"🎅":{"name":"Santa Claus","slug":"santa_claus","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🎅","keywords":["santa_claus","festival","father christmas"]},"🤶":{"name":"Mrs. Claus","slug":"mrs_claus","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤶","keywords":["mrs_claus","xmas","mother christmas"]},"🧑‍🎄":{"name":"mx claus","slug":"mx_claus","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.0","char":"🧑‍🎄","keywords":["mx_claus","mx claus"]},"🦸":{"name":"superhero","slug":"superhero","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦸","keywords":["superhero","marvel"]},"🦸‍♂️":{"name":"man superhero","slug":"man_superhero","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦸‍♂️","keywords":["man_superhero","hero","superpowers"]},"🦸‍♀️":{"name":"woman superhero","slug":"woman_superhero","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦸‍♀️","keywords":["woman_superhero","heroine"]},"🦹":{"name":"supervillain","slug":"supervillain","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦹","keywords":["supervillain"]},"🦹‍♂️":{"name":"man supervillain","slug":"man_supervillain","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦹‍♂️","keywords":["man_supervillain","bad"]},"🦹‍♀️":{"name":"woman supervillain","slug":"woman_supervillain","group":"People & Body","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":true,"skin_tone_support_unicode_version":"11.0","char":"🦹‍♀️","keywords":["woman_supervillain","criminal"]},"🧙":{"name":"mage","slug":"mage","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧙","keywords":["mage","magic"]},"🧙‍♂️":{"name":"man mage","slug":"man_mage","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧙‍♂️","keywords":["man_mage","sorcerer"]},"🧙‍♀️":{"name":"woman mage","slug":"woman_mage","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧙‍♀️","keywords":["woman_mage","witch"]},"🧚":{"name":"fairy","slug":"fairy","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧚","keywords":["fairy","wings"]},"🧚‍♂️":{"name":"man fairy","slug":"man_fairy","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧚‍♂️","keywords":["man_fairy"]},"🧚‍♀️":{"name":"woman fairy","slug":"woman_fairy","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧚‍♀️","keywords":["woman_fairy"]},"🧛":{"name":"vampire","slug":"vampire","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧛","keywords":["vampire","blood"]},"🧛‍♂️":{"name":"man vampire","slug":"man_vampire","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧛‍♂️","keywords":["man_vampire","dracula"]},"🧛‍♀️":{"name":"woman vampire","slug":"woman_vampire","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧛‍♀️","keywords":["woman_vampire"]},"🧜":{"name":"merperson","slug":"merperson","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧜","keywords":["merperson","sea"]},"🧜‍♂️":{"name":"merman","slug":"merman","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧜‍♂️","keywords":["merman","triton"]},"🧜‍♀️":{"name":"mermaid","slug":"mermaid","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧜‍♀️","keywords":["mermaid","merwoman","ariel"]},"🧝":{"name":"elf","slug":"elf","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧝","keywords":["elf","magical"]},"🧝‍♂️":{"name":"man elf","slug":"man_elf","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧝‍♂️","keywords":["man_elf"]},"🧝‍♀️":{"name":"woman elf","slug":"woman_elf","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧝‍♀️","keywords":["woman_elf"]},"🧞":{"name":"genie","slug":"genie","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧞","keywords":["genie","wishes"]},"🧞‍♂️":{"name":"man genie","slug":"man_genie","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧞‍♂️","keywords":["man_genie"]},"🧞‍♀️":{"name":"woman genie","slug":"woman_genie","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧞‍♀️","keywords":["woman_genie"]},"🧟":{"name":"zombie","slug":"zombie","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧟","keywords":["zombie"]},"🧟‍♂️":{"name":"man zombie","slug":"man_zombie","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧟‍♂️","keywords":["man_zombie","undead"]},"🧟‍♀️":{"name":"woman zombie","slug":"woman_zombie","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧟‍♀️","keywords":["woman_zombie","walking dead"]},"🧌":{"name":"troll","slug":"troll","group":"People & Body","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🧌","keywords":["troll","mystical"]},"💆":{"name":"person getting massage","slug":"person_getting_massage","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"💆","keywords":["person_getting_massage","relax"]},"💆‍♂️":{"name":"man getting massage","slug":"man_getting_massage","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💆‍♂️","keywords":["man_getting_massage","head"]},"💆‍♀️":{"name":"woman getting massage","slug":"woman_getting_massage","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💆‍♀️","keywords":["woman_getting_massage"]},"💇":{"name":"person getting haircut","slug":"person_getting_haircut","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"💇","keywords":["person_getting_haircut"]},"💇‍♂️":{"name":"man getting haircut","slug":"man_getting_haircut","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💇‍♂️","keywords":["man_getting_haircut"]},"💇‍♀️":{"name":"woman getting haircut","slug":"woman_getting_haircut","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"💇‍♀️","keywords":["woman_getting_haircut"]},"🚶":{"name":"person walking","slug":"person_walking","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🚶","keywords":["person_walking","move"]},"🚶‍♂️":{"name":"man walking","slug":"man_walking","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚶‍♂️","keywords":["man_walking","feet"]},"🚶‍♀️":{"name":"woman walking","slug":"woman_walking","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚶‍♀️","keywords":["woman_walking","steps"]},"🧍":{"name":"person standing","slug":"person_standing","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧍","keywords":["person_standing","still"]},"🧍‍♂️":{"name":"man standing","slug":"man_standing","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧍‍♂️","keywords":["man_standing"]},"🧍‍♀️":{"name":"woman standing","slug":"woman_standing","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧍‍♀️","keywords":["woman_standing"]},"🧎":{"name":"person kneeling","slug":"person_kneeling","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧎","keywords":["person_kneeling","pray"]},"🧎‍♂️":{"name":"man kneeling","slug":"man_kneeling","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧎‍♂️","keywords":["man_kneeling","respectful"]},"🧎‍♀️":{"name":"woman kneeling","slug":"woman_kneeling","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧎‍♀️","keywords":["woman_kneeling"]},"🧑‍🦯":{"name":"person with white cane","slug":"person_with_white_cane","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🦯","keywords":["person_with_white_cane","person_with_probing_cane"]},"👨‍🦯":{"name":"man with white cane","slug":"man_with_white_cane","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👨‍🦯","keywords":["man_with_white_cane","man_with_probing_cane"]},"👩‍🦯":{"name":"woman with white cane","slug":"woman_with_white_cane","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👩‍🦯","keywords":["woman_with_white_cane","woman_with_probing_cane"]},"🧑‍🦼":{"name":"person in motorized wheelchair","slug":"person_in_motorized_wheelchair","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🦼","keywords":["person_in_motorized_wheelchair","disability"]},"👨‍🦼":{"name":"man in motorized wheelchair","slug":"man_in_motorized_wheelchair","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👨‍🦼","keywords":["man_in_motorized_wheelchair"]},"👩‍🦼":{"name":"woman in motorized wheelchair","slug":"woman_in_motorized_wheelchair","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👩‍🦼","keywords":["woman_in_motorized_wheelchair"]},"🧑‍🦽":{"name":"person in manual wheelchair","slug":"person_in_manual_wheelchair","group":"People & Body","emoji_version":"12.1","unicode_version":"12.1","skin_tone_support":true,"skin_tone_support_unicode_version":"12.1","char":"🧑‍🦽","keywords":["person_in_manual_wheelchair"]},"👨‍🦽":{"name":"man in manual wheelchair","slug":"man_in_manual_wheelchair","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👨‍🦽","keywords":["man_in_manual_wheelchair"]},"👩‍🦽":{"name":"woman in manual wheelchair","slug":"woman_in_manual_wheelchair","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👩‍🦽","keywords":["woman_in_manual_wheelchair"]},"🏃":{"name":"person running","slug":"person_running","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🏃","keywords":["person_running"]},"🏃‍♂️":{"name":"man running","slug":"man_running","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏃‍♂️","keywords":["man_running","walking","running"]},"🏃‍♀️":{"name":"woman running","slug":"woman_running","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏃‍♀️","keywords":["woman_running","race"]},"💃":{"name":"woman dancing","slug":"woman_dancing","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"💃","keywords":["woman_dancing","fun"]},"🕺":{"name":"man dancing","slug":"man_dancing","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🕺","keywords":["man_dancing","dancer"]},"🕴️":{"name":"person in suit levitating","slug":"person_in_suit_levitating","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🕴️","keywords":["person_in_suit_levitating","man_in_suit_levitating","suit","levitate","hover","jump"]},"👯":{"name":"people with bunny ears","slug":"people_with_bunny_ears","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👯","keywords":["people_with_bunny_ears","perform","costume"]},"👯‍♂️":{"name":"men with bunny ears","slug":"men_with_bunny_ears","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👯‍♂️","keywords":["men_with_bunny_ears","bunny","boys"]},"👯‍♀️":{"name":"women with bunny ears","slug":"women_with_bunny_ears","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👯‍♀️","keywords":["women_with_bunny_ears"]},"🧖":{"name":"person in steamy room","slug":"person_in_steamy_room","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧖","keywords":["person_in_steamy_room","spa"]},"🧖‍♂️":{"name":"man in steamy room","slug":"man_in_steamy_room","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧖‍♂️","keywords":["man_in_steamy_room","steamroom"]},"🧖‍♀️":{"name":"woman in steamy room","slug":"woman_in_steamy_room","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧖‍♀️","keywords":["woman_in_steamy_room","sauna"]},"🧗":{"name":"person climbing","slug":"person_climbing","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧗","keywords":["person_climbing","sport"]},"🧗‍♂️":{"name":"man climbing","slug":"man_climbing","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧗‍♂️","keywords":["man_climbing","sports"]},"🧗‍♀️":{"name":"woman climbing","slug":"woman_climbing","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧗‍♀️","keywords":["woman_climbing","hobby"]},"🤺":{"name":"person fencing","slug":"person_fencing","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤺","keywords":["person_fencing","fencing","sword"]},"🏇":{"name":"horse racing","slug":"horse_racing","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🏇","keywords":["horse_racing","betting","competition","gambling"]},"⛷️":{"name":"skier","slug":"skier","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛷️","keywords":["skier","winter"]},"🏂":{"name":"snowboarder","slug":"snowboarder","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🏂","keywords":["snowboarder"]},"🏌️":{"name":"person golfing","slug":"person_golfing","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏌️","keywords":["person_golfing"]},"🏌️‍♂️":{"name":"man golfing","slug":"man_golfing","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏌️‍♂️","keywords":["man_golfing"]},"🏌️‍♀️":{"name":"woman golfing","slug":"woman_golfing","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏌️‍♀️","keywords":["woman_golfing"]},"🏄":{"name":"person surfing","slug":"person_surfing","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🏄","keywords":["person_surfing"]},"🏄‍♂️":{"name":"man surfing","slug":"man_surfing","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏄‍♂️","keywords":["man_surfing","ocean"]},"🏄‍♀️":{"name":"woman surfing","slug":"woman_surfing","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏄‍♀️","keywords":["woman_surfing"]},"🚣":{"name":"person rowing boat","slug":"person_rowing_boat","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🚣","keywords":["person_rowing_boat"]},"🚣‍♂️":{"name":"man rowing boat","slug":"man_rowing_boat","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚣‍♂️","keywords":["man_rowing_boat"]},"🚣‍♀️":{"name":"woman rowing boat","slug":"woman_rowing_boat","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚣‍♀️","keywords":["woman_rowing_boat"]},"🏊":{"name":"person swimming","slug":"person_swimming","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🏊","keywords":["person_swimming","pool"]},"🏊‍♂️":{"name":"man swimming","slug":"man_swimming","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏊‍♂️","keywords":["man_swimming","athlete"]},"🏊‍♀️":{"name":"woman swimming","slug":"woman_swimming","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏊‍♀️","keywords":["woman_swimming"]},"⛹️":{"name":"person bouncing ball","slug":"person_bouncing_ball","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":true,"skin_tone_support_unicode_version":"2.0","char":"⛹️","keywords":["person_bouncing_ball"]},"⛹️‍♂️":{"name":"man bouncing ball","slug":"man_bouncing_ball","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"⛹️‍♂️","keywords":["man_bouncing_ball"]},"⛹️‍♀️":{"name":"woman bouncing ball","slug":"woman_bouncing_ball","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"⛹️‍♀️","keywords":["woman_bouncing_ball"]},"🏋️":{"name":"person lifting weights","slug":"person_lifting_weights","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":true,"skin_tone_support_unicode_version":"2.0","char":"🏋️","keywords":["person_lifting_weights","training"]},"🏋️‍♂️":{"name":"man lifting weights","slug":"man_lifting_weights","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏋️‍♂️","keywords":["man_lifting_weights"]},"🏋️‍♀️":{"name":"woman lifting weights","slug":"woman_lifting_weights","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🏋️‍♀️","keywords":["woman_lifting_weights"]},"🚴":{"name":"person biking","slug":"person_biking","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🚴","keywords":["person_biking"]},"🚴‍♂️":{"name":"man biking","slug":"man_biking","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚴‍♂️","keywords":["man_biking","bike"]},"🚴‍♀️":{"name":"woman biking","slug":"woman_biking","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚴‍♀️","keywords":["woman_biking","hipster"]},"🚵":{"name":"person mountain biking","slug":"person_mountain_biking","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🚵","keywords":["person_mountain_biking"]},"🚵‍♂️":{"name":"man mountain biking","slug":"man_mountain_biking","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚵‍♂️","keywords":["man_mountain_biking","transportation"]},"🚵‍♀️":{"name":"woman mountain biking","slug":"woman_mountain_biking","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🚵‍♀️","keywords":["woman_mountain_biking"]},"🤸":{"name":"person cartwheeling","slug":"person_cartwheeling","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤸","keywords":["person_cartwheeling","gymnastic"]},"🤸‍♂️":{"name":"man cartwheeling","slug":"man_cartwheeling","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤸‍♂️","keywords":["man_cartwheeling","gymnastics"]},"🤸‍♀️":{"name":"woman cartwheeling","slug":"woman_cartwheeling","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤸‍♀️","keywords":["woman_cartwheeling"]},"🤼":{"name":"people wrestling","slug":"people_wrestling","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🤼","keywords":["people_wrestling"]},"🤼‍♂️":{"name":"men wrestling","slug":"men_wrestling","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"🤼‍♂️","keywords":["men_wrestling","wrestlers"]},"🤼‍♀️":{"name":"women wrestling","slug":"women_wrestling","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"🤼‍♀️","keywords":["women_wrestling"]},"🤽":{"name":"person playing water polo","slug":"person_playing_water_polo","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤽","keywords":["person_playing_water_polo"]},"🤽‍♂️":{"name":"man playing water polo","slug":"man_playing_water_polo","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤽‍♂️","keywords":["man_playing_water_polo"]},"🤽‍♀️":{"name":"woman playing water polo","slug":"woman_playing_water_polo","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤽‍♀️","keywords":["woman_playing_water_polo"]},"🤾":{"name":"person playing handball","slug":"person_playing_handball","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤾","keywords":["person_playing_handball"]},"🤾‍♂️":{"name":"man playing handball","slug":"man_playing_handball","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤾‍♂️","keywords":["man_playing_handball"]},"🤾‍♀️":{"name":"woman playing handball","slug":"woman_playing_handball","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤾‍♀️","keywords":["woman_playing_handball"]},"🤹":{"name":"person juggling","slug":"person_juggling","group":"People & Body","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":true,"skin_tone_support_unicode_version":"3.0","char":"🤹","keywords":["person_juggling","performance"]},"🤹‍♂️":{"name":"man juggling","slug":"man_juggling","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤹‍♂️","keywords":["man_juggling","juggle","multitask"]},"🤹‍♀️":{"name":"woman juggling","slug":"woman_juggling","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🤹‍♀️","keywords":["woman_juggling","skill"]},"🧘":{"name":"person in lotus position","slug":"person_in_lotus_position","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧘","keywords":["person_in_lotus_position","meditate"]},"🧘‍♂️":{"name":"man in lotus position","slug":"man_in_lotus_position","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧘‍♂️","keywords":["man_in_lotus_position","meditation","serenity","mindfulness"]},"🧘‍♀️":{"name":"woman in lotus position","slug":"woman_in_lotus_position","group":"People & Body","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":true,"skin_tone_support_unicode_version":"5.0","char":"🧘‍♀️","keywords":["woman_in_lotus_position","yoga","zen"]},"🛀":{"name":"person taking bath","slug":"person_taking_bath","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"1.0","char":"🛀","keywords":["person_taking_bath","clean"]},"🛌":{"name":"person in bed","slug":"person_in_bed","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"4.0","char":"🛌","keywords":["person_in_bed"]},"🧑‍🤝‍🧑":{"name":"people holding hands","slug":"people_holding_hands","group":"People & Body","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"🧑‍🤝‍🧑","keywords":["people_holding_hands","friendship"]},"👭":{"name":"women holding hands","slug":"women_holding_hands","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👭","keywords":["women_holding_hands","pair"]},"👫":{"name":"woman and man holding hands","slug":"woman_and_man_holding_hands","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👫","keywords":["woman_and_man_holding_hands","people"]},"👬":{"name":"men holding hands","slug":"men_holding_hands","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":true,"skin_tone_support_unicode_version":"12.0","char":"👬","keywords":["men_holding_hands","bromance"]},"💏":{"name":"kiss","slug":"kiss","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"💏","keywords":["kiss","dating"]},"👩‍❤️‍💋‍👨":{"name":"kiss woman, man","slug":"kiss_woman_man","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"👩‍❤️‍💋‍👨","keywords":["kiss_woman_man"]},"👨‍❤️‍💋‍👨":{"name":"kiss man, man","slug":"kiss_man_man","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"👨‍❤️‍💋‍👨","keywords":["kiss_man_man"]},"👩‍❤️‍💋‍👩":{"name":"kiss woman, woman","slug":"kiss_woman_woman","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"👩‍❤️‍💋‍👩","keywords":["kiss_woman_woman"]},"💑":{"name":"couple with heart","slug":"couple_with_heart","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"💑","keywords":["couple_with_heart"]},"👩‍❤️‍👨":{"name":"couple with heart woman, man","slug":"couple_with_heart_woman_man","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"👩‍❤️‍👨","keywords":["couple_with_heart_woman_man"]},"👨‍❤️‍👨":{"name":"couple with heart man, man","slug":"couple_with_heart_man_man","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"👨‍❤️‍👨","keywords":["couple_with_heart_man_man"]},"👩‍❤️‍👩":{"name":"couple with heart woman, woman","slug":"couple_with_heart_woman_woman","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":true,"skin_tone_support_unicode_version":"13.1","char":"👩‍❤️‍👩","keywords":["couple_with_heart_woman_woman"]},"👪":{"name":"family","slug":"family","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👪","keywords":["family","home","mom","mother"]},"👨‍👩‍👦":{"name":"family man, woman, boy","slug":"family_man_woman_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👩‍👦","keywords":["family_man_woman_boy"]},"👨‍👩‍👧":{"name":"family man, woman, girl","slug":"family_man_woman_girl","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👩‍👧","keywords":["family_man_woman_girl","parents"]},"👨‍👩‍👧‍👦":{"name":"family man, woman, girl, boy","slug":"family_man_woman_girl_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👩‍👧‍👦","keywords":["family_man_woman_girl_boy","children"]},"👨‍👩‍👦‍👦":{"name":"family man, woman, boy, boy","slug":"family_man_woman_boy_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👩‍👦‍👦","keywords":["family_man_woman_boy_boy"]},"👨‍👩‍👧‍👧":{"name":"family man, woman, girl, girl","slug":"family_man_woman_girl_girl","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👩‍👧‍👧","keywords":["family_man_woman_girl_girl"]},"👨‍👨‍👦":{"name":"family man, man, boy","slug":"family_man_man_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👨‍👦","keywords":["family_man_man_boy"]},"👨‍👨‍👧":{"name":"family man, man, girl","slug":"family_man_man_girl","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👨‍👧","keywords":["family_man_man_girl"]},"👨‍👨‍👧‍👦":{"name":"family man, man, girl, boy","slug":"family_man_man_girl_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👨‍👧‍👦","keywords":["family_man_man_girl_boy"]},"👨‍👨‍👦‍👦":{"name":"family man, man, boy, boy","slug":"family_man_man_boy_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👨‍👦‍👦","keywords":["family_man_man_boy_boy"]},"👨‍👨‍👧‍👧":{"name":"family man, man, girl, girl","slug":"family_man_man_girl_girl","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👨‍👨‍👧‍👧","keywords":["family_man_man_girl_girl"]},"👩‍👩‍👦":{"name":"family woman, woman, boy","slug":"family_woman_woman_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👩‍👩‍👦","keywords":["family_woman_woman_boy"]},"👩‍👩‍👧":{"name":"family woman, woman, girl","slug":"family_woman_woman_girl","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👩‍👩‍👧","keywords":["family_woman_woman_girl"]},"👩‍👩‍👧‍👦":{"name":"family woman, woman, girl, boy","slug":"family_woman_woman_girl_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👩‍👩‍👧‍👦","keywords":["family_woman_woman_girl_boy"]},"👩‍👩‍👦‍👦":{"name":"family woman, woman, boy, boy","slug":"family_woman_woman_boy_boy","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👩‍👩‍👦‍👦","keywords":["family_woman_woman_boy_boy"]},"👩‍👩‍👧‍👧":{"name":"family woman, woman, girl, girl","slug":"family_woman_woman_girl_girl","group":"People & Body","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"👩‍👩‍👧‍👧","keywords":["family_woman_woman_girl_girl"]},"👨‍👦":{"name":"family man, boy","slug":"family_man_boy","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👨‍👦","keywords":["family_man_boy","parent"]},"👨‍👦‍👦":{"name":"family man, boy, boy","slug":"family_man_boy_boy","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👨‍👦‍👦","keywords":["family_man_boy_boy"]},"👨‍👧":{"name":"family man, girl","slug":"family_man_girl","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👨‍👧","keywords":["family_man_girl"]},"👨‍👧‍👦":{"name":"family man, girl, boy","slug":"family_man_girl_boy","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👨‍👧‍👦","keywords":["family_man_girl_boy"]},"👨‍👧‍👧":{"name":"family man, girl, girl","slug":"family_man_girl_girl","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👨‍👧‍👧","keywords":["family_man_girl_girl"]},"👩‍👦":{"name":"family woman, boy","slug":"family_woman_boy","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👩‍👦","keywords":["family_woman_boy"]},"👩‍👦‍👦":{"name":"family woman, boy, boy","slug":"family_woman_boy_boy","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👩‍👦‍👦","keywords":["family_woman_boy_boy"]},"👩‍👧":{"name":"family woman, girl","slug":"family_woman_girl","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👩‍👧","keywords":["family_woman_girl"]},"👩‍👧‍👦":{"name":"family woman, girl, boy","slug":"family_woman_girl_boy","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👩‍👧‍👦","keywords":["family_woman_girl_boy"]},"👩‍👧‍👧":{"name":"family woman, girl, girl","slug":"family_woman_girl_girl","group":"People & Body","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"👩‍👧‍👧","keywords":["family_woman_girl_girl"]},"🗣️":{"name":"speaking head","slug":"speaking_head","group":"People & Body","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗣️","keywords":["speaking_head","user","say"]},"👤":{"name":"bust in silhouette","slug":"bust_in_silhouette","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👤","keywords":["bust_in_silhouette"]},"👥":{"name":"busts in silhouette","slug":"busts_in_silhouette","group":"People & Body","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"👥","keywords":["busts_in_silhouette","group"]},"🫂":{"name":"people hugging","slug":"people_hugging","group":"People & Body","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫂","keywords":["people_hugging","people hugging","care"]},"👣":{"name":"footprints","slug":"footprints","group":"People & Body","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👣","keywords":["footprints","tracking"]},"🐵":{"name":"monkey face","slug":"monkey_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐵","keywords":["monkey_face","circus"]},"🐒":{"name":"monkey","slug":"monkey","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐒","keywords":["monkey"]},"🦍":{"name":"gorilla","slug":"gorilla","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦍","keywords":["gorilla"]},"🦧":{"name":"orangutan","slug":"orangutan","group":"Animals & Nature","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦧","keywords":["orangutan"]},"🐶":{"name":"dog face","slug":"dog_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐶","keywords":["dog_face","friend","woof","puppy"]},"🐕":{"name":"dog","slug":"dog","group":"Animals & Nature","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🐕","keywords":["dog","doge","faithful"]},"🦮":{"name":"guide dog","slug":"guide_dog","group":"Animals & Nature","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦮","keywords":["guide_dog","blind"]},"🐕‍🦺":{"name":"service dog","slug":"service_dog","group":"Animals & Nature","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🐕‍🦺","keywords":["service_dog"]},"🐩":{"name":"poodle","slug":"poodle","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐩","keywords":["poodle","101"]},"🐺":{"name":"wolf","slug":"wolf","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐺","keywords":["wolf","wild"]},"🦊":{"name":"fox","slug":"fox","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦊","keywords":["fox"]},"🦝":{"name":"raccoon","slug":"raccoon","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦝","keywords":["raccoon"]},"🐱":{"name":"cat face","slug":"cat_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐱","keywords":["cat_face","meow","kitten"]},"🐈":{"name":"cat","slug":"cat","group":"Animals & Nature","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🐈","keywords":["cat"]},"🐈‍⬛":{"name":"black cat","slug":"black_cat","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🐈‍⬛","keywords":["black_cat","black cat","superstition"]},"🦁":{"name":"lion","slug":"lion","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🦁","keywords":["lion"]},"🐯":{"name":"tiger face","slug":"tiger_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐯","keywords":["tiger_face","roar"]},"🐅":{"name":"tiger","slug":"tiger","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐅","keywords":["tiger"]},"🐆":{"name":"leopard","slug":"leopard","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐆","keywords":["leopard"]},"🐴":{"name":"horse face","slug":"horse_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐴","keywords":["horse_face","brown"]},"🫎":{"name":"moose","slug":"moose","group":"Animals & Nature","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🫎","keywords":["moose","shrek","canada","sweden","sven"]},"🫏":{"name":"donkey","slug":"donkey","group":"Animals & Nature","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🫏","keywords":["donkey","eeyore","mule"]},"🐎":{"name":"horse","slug":"horse","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐎","keywords":["horse","gamble","luck"]},"🦄":{"name":"unicorn","slug":"unicorn","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🦄","keywords":["unicorn"]},"🦓":{"name":"zebra","slug":"zebra","group":"Animals & Nature","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🦓","keywords":["zebra","stripes","safari"]},"🦌":{"name":"deer","slug":"deer","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦌","keywords":["deer","venison"]},"🦬":{"name":"bison","slug":"bison","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🦬","keywords":["bison"]},"🐮":{"name":"cow face","slug":"cow_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐮","keywords":["cow_face","beef","milk"]},"🐂":{"name":"ox","slug":"ox","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐂","keywords":["ox"]},"🐃":{"name":"water buffalo","slug":"water_buffalo","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐃","keywords":["water_buffalo"]},"🐄":{"name":"cow","slug":"cow","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐄","keywords":["cow","moo"]},"🐷":{"name":"pig face","slug":"pig_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐷","keywords":["pig_face","oink"]},"🐖":{"name":"pig","slug":"pig","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐖","keywords":["pig"]},"🐗":{"name":"boar","slug":"boar","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐗","keywords":["boar"]},"🐽":{"name":"pig nose","slug":"pig_nose","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐽","keywords":["pig_nose"]},"🐏":{"name":"ram","slug":"ram","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐏","keywords":["ram","sheep"]},"🐑":{"name":"ewe","slug":"ewe","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐑","keywords":["ewe","wool","shipit"]},"🐐":{"name":"goat","slug":"goat","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐐","keywords":["goat"]},"🐪":{"name":"camel","slug":"camel","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐪","keywords":["camel","hump"]},"🐫":{"name":"two-hump camel","slug":"two_hump_camel","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐫","keywords":["two_hump_camel"]},"🦙":{"name":"llama","slug":"llama","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦙","keywords":["llama","alpaca"]},"🦒":{"name":"giraffe","slug":"giraffe","group":"Animals & Nature","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🦒","keywords":["giraffe","spots"]},"🐘":{"name":"elephant","slug":"elephant","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐘","keywords":["elephant","th"]},"🦣":{"name":"mammoth","slug":"mammoth","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🦣","keywords":["mammoth","tusks"]},"🦏":{"name":"rhinoceros","slug":"rhinoceros","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦏","keywords":["rhinoceros","horn"]},"🦛":{"name":"hippopotamus","slug":"hippopotamus","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦛","keywords":["hippopotamus"]},"🐭":{"name":"mouse face","slug":"mouse_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐭","keywords":["mouse_face","rodent"]},"🐁":{"name":"mouse","slug":"mouse","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐁","keywords":["mouse"]},"🐀":{"name":"rat","slug":"rat","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐀","keywords":["rat"]},"🐹":{"name":"hamster","slug":"hamster","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐹","keywords":["hamster"]},"🐰":{"name":"rabbit face","slug":"rabbit_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐰","keywords":["rabbit_face","pet"]},"🐇":{"name":"rabbit","slug":"rabbit","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐇","keywords":["rabbit","spring"]},"🐿️":{"name":"chipmunk","slug":"chipmunk","group":"Animals & Nature","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🐿️","keywords":["chipmunk","squirrel"]},"🦫":{"name":"beaver","slug":"beaver","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🦫","keywords":["beaver"]},"🦔":{"name":"hedgehog","slug":"hedgehog","group":"Animals & Nature","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🦔","keywords":["hedgehog","spiny"]},"🦇":{"name":"bat","slug":"bat","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦇","keywords":["bat"]},"🐻":{"name":"bear","slug":"bear","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐻","keywords":["bear"]},"🐻‍❄️":{"name":"polar bear","slug":"polar_bear","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🐻‍❄️","keywords":["polar_bear","polar bear","arctic"]},"🐨":{"name":"koala","slug":"koala","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐨","keywords":["koala"]},"🐼":{"name":"panda","slug":"panda","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐼","keywords":["panda","panda"]},"🦥":{"name":"sloth","slug":"sloth","group":"Animals & Nature","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦥","keywords":["sloth"]},"🦦":{"name":"otter","slug":"otter","group":"Animals & Nature","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦦","keywords":["otter"]},"🦨":{"name":"skunk","slug":"skunk","group":"Animals & Nature","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦨","keywords":["skunk"]},"🦘":{"name":"kangaroo","slug":"kangaroo","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦘","keywords":["kangaroo","australia","joey","hop","marsupial"]},"🦡":{"name":"badger","slug":"badger","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦡","keywords":["badger","honey"]},"🐾":{"name":"paw prints","slug":"paw_prints","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐾","keywords":["paw_prints"]},"🦃":{"name":"turkey","slug":"turkey","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🦃","keywords":["turkey"]},"🐔":{"name":"chicken","slug":"chicken","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐔","keywords":["chicken","cluck"]},"🐓":{"name":"rooster","slug":"rooster","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐓","keywords":["rooster"]},"🐣":{"name":"hatching chick","slug":"hatching_chick","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐣","keywords":["hatching_chick","born"]},"🐤":{"name":"baby chick","slug":"baby_chick","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐤","keywords":["baby_chick"]},"🐥":{"name":"front-facing baby chick","slug":"front_facing_baby_chick","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐥","keywords":["front_facing_baby_chick"]},"🐦":{"name":"bird","slug":"bird","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐦","keywords":["bird","tweet"]},"🐧":{"name":"penguin","slug":"penguin","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐧","keywords":["penguin"]},"🕊️":{"name":"dove","slug":"dove","group":"Animals & Nature","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕊️","keywords":["dove"]},"🦅":{"name":"eagle","slug":"eagle","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦅","keywords":["eagle"]},"🦆":{"name":"duck","slug":"duck","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦆","keywords":["duck","mallard"]},"🦢":{"name":"swan","slug":"swan","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦢","keywords":["swan"]},"🦉":{"name":"owl","slug":"owl","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦉","keywords":["owl","hoot"]},"🦤":{"name":"dodo","slug":"dodo","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🦤","keywords":["dodo"]},"🪶":{"name":"feather","slug":"feather","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪶","keywords":["feather"]},"🦩":{"name":"flamingo","slug":"flamingo","group":"Animals & Nature","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦩","keywords":["flamingo"]},"🦚":{"name":"peacock","slug":"peacock","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦚","keywords":["peacock","peahen"]},"🦜":{"name":"parrot","slug":"parrot","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦜","keywords":["parrot"]},"🪽":{"name":"wing","slug":"wing","group":"Animals & Nature","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪽","keywords":["wing","birds","flying"]},"🐦‍⬛":{"name":"black bird","slug":"black_bird","group":"Animals & Nature","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🐦‍⬛","keywords":["black_bird","black bird","crow"]},"🪿":{"name":"goose","slug":"goose","group":"Animals & Nature","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪿","keywords":["goose","silly","jemima","goosebumps"]},"🐸":{"name":"frog","slug":"frog","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐸","keywords":["frog","croak","toad"]},"🐊":{"name":"crocodile","slug":"crocodile","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐊","keywords":["crocodile","reptile","alligator"]},"🐢":{"name":"turtle","slug":"turtle","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐢","keywords":["turtle","slow","tortoise"]},"🦎":{"name":"lizard","slug":"lizard","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦎","keywords":["lizard"]},"🐍":{"name":"snake","slug":"snake","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐍","keywords":["snake","hiss","python"]},"🐲":{"name":"dragon face","slug":"dragon_face","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐲","keywords":["dragon_face","myth"]},"🐉":{"name":"dragon","slug":"dragon","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐉","keywords":["dragon"]},"🦕":{"name":"sauropod","slug":"sauropod","group":"Animals & Nature","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🦕","keywords":["sauropod","dinosaur","brachiosaurus","brontosaurus","diplodocus"]},"🦖":{"name":"T-Rex","slug":"t_rex","group":"Animals & Nature","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🦖","keywords":["t_rex","tyrannosaurus","extinct"]},"🐳":{"name":"spouting whale","slug":"spouting_whale","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐳","keywords":["spouting_whale"]},"🐋":{"name":"whale","slug":"whale","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🐋","keywords":["whale"]},"🐬":{"name":"dolphin","slug":"dolphin","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐬","keywords":["dolphin","flipper","fins"]},"🦭":{"name":"seal","slug":"seal","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🦭","keywords":["seal","creature"]},"🐟":{"name":"fish","slug":"fish","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐟","keywords":["fish"]},"🐠":{"name":"tropical fish","slug":"tropical_fish","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐠","keywords":["tropical_fish","swim","nemo"]},"🐡":{"name":"blowfish","slug":"blowfish","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐡","keywords":["blowfish"]},"🦈":{"name":"shark","slug":"shark","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦈","keywords":["shark","jaws"]},"🐙":{"name":"octopus","slug":"octopus","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐙","keywords":["octopus"]},"🐚":{"name":"spiral shell","slug":"spiral_shell","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐚","keywords":["spiral_shell"]},"🪸":{"name":"coral","slug":"coral","group":"Animals & Nature","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪸","keywords":["coral","reef"]},"🪼":{"name":"jellyfish","slug":"jellyfish","group":"Animals & Nature","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪼","keywords":["jellyfish","sting","tentacles"]},"🐌":{"name":"snail","slug":"snail","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐌","keywords":["snail","shell"]},"🦋":{"name":"butterfly","slug":"butterfly","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦋","keywords":["butterfly","insect","caterpillar"]},"🐛":{"name":"bug","slug":"bug","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐛","keywords":["bug"]},"🐜":{"name":"ant","slug":"ant","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐜","keywords":["ant"]},"🐝":{"name":"honeybee","slug":"honeybee","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐝","keywords":["honeybee"]},"🪲":{"name":"beetle","slug":"beetle","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪲","keywords":["beetle"]},"🐞":{"name":"lady beetle","slug":"lady_beetle","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🐞","keywords":["lady_beetle","ladybug"]},"🦗":{"name":"cricket","slug":"cricket","group":"Animals & Nature","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🦗","keywords":["cricket","cricket","chirp"]},"🪳":{"name":"cockroach","slug":"cockroach","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪳","keywords":["cockroach","pests"]},"🕷️":{"name":"spider","slug":"spider","group":"Animals & Nature","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕷️","keywords":["spider","arachnid"]},"🕸️":{"name":"spider web","slug":"spider_web","group":"Animals & Nature","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕸️","keywords":["spider_web","silk"]},"🦂":{"name":"scorpion","slug":"scorpion","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🦂","keywords":["scorpion"]},"🦟":{"name":"mosquito","slug":"mosquito","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦟","keywords":["mosquito","malaria"]},"🪰":{"name":"fly","slug":"fly","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪰","keywords":["fly"]},"🪱":{"name":"worm","slug":"worm","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪱","keywords":["worm"]},"🦠":{"name":"microbe","slug":"microbe","group":"Animals & Nature","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦠","keywords":["microbe","amoeba","germs","virus"]},"💐":{"name":"bouquet","slug":"bouquet","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💐","keywords":["bouquet","flowers"]},"🌸":{"name":"cherry blossom","slug":"cherry_blossom","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌸","keywords":["cherry_blossom","plant"]},"💮":{"name":"white flower","slug":"white_flower","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💮","keywords":["white_flower","japanese"]},"🪷":{"name":"lotus","slug":"lotus","group":"Animals & Nature","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪷","keywords":["lotus","flower","calm"]},"🏵️":{"name":"rosette","slug":"rosette","group":"Animals & Nature","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏵️","keywords":["rosette","military"]},"🌹":{"name":"rose","slug":"rose","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌹","keywords":["rose"]},"🥀":{"name":"wilted flower","slug":"wilted_flower","group":"Animals & Nature","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥀","keywords":["wilted_flower"]},"🌺":{"name":"hibiscus","slug":"hibiscus","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌺","keywords":["hibiscus","vegetable"]},"🌻":{"name":"sunflower","slug":"sunflower","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌻","keywords":["sunflower","fall"]},"🌼":{"name":"blossom","slug":"blossom","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌼","keywords":["blossom","yellow"]},"🌷":{"name":"tulip","slug":"tulip","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌷","keywords":["tulip"]},"🪻":{"name":"hyacinth","slug":"hyacinth","group":"Animals & Nature","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪻","keywords":["hyacinth","lavender"]},"🌱":{"name":"seedling","slug":"seedling","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌱","keywords":["seedling","grass","lawn"]},"🪴":{"name":"potted plant","slug":"potted_plant","group":"Animals & Nature","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪴","keywords":["potted_plant","potted plant","greenery"]},"🌲":{"name":"evergreen tree","slug":"evergreen_tree","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌲","keywords":["evergreen_tree"]},"🌳":{"name":"deciduous tree","slug":"deciduous_tree","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌳","keywords":["deciduous_tree"]},"🌴":{"name":"palm tree","slug":"palm_tree","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌴","keywords":["palm_tree","mojito","tropical"]},"🌵":{"name":"cactus","slug":"cactus","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌵","keywords":["cactus"]},"🌾":{"name":"sheaf of rice","slug":"sheaf_of_rice","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌾","keywords":["sheaf_of_rice"]},"🌿":{"name":"herb","slug":"herb","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌿","keywords":["herb","medicine","weed"]},"☘️":{"name":"shamrock","slug":"shamrock","group":"Animals & Nature","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"☘️","keywords":["shamrock","irish","clover"]},"🍀":{"name":"four leaf clover","slug":"four_leaf_clover","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍀","keywords":["four_leaf_clover"]},"🍁":{"name":"maple leaf","slug":"maple_leaf","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍁","keywords":["maple_leaf","ca"]},"🍂":{"name":"fallen leaf","slug":"fallen_leaf","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍂","keywords":["fallen_leaf","leaves"]},"🍃":{"name":"leaf fluttering in wind","slug":"leaf_fluttering_in_wind","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍃","keywords":["leaf_fluttering_in_wind","tree"]},"🪹":{"name":"empty nest","slug":"empty_nest","group":"Animals & Nature","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪹","keywords":["empty_nest","empty nest"]},"🪺":{"name":"nest with eggs","slug":"nest_with_eggs","group":"Animals & Nature","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪺","keywords":["nest_with_eggs","nest with eggs"]},"🍄":{"name":"mushroom","slug":"mushroom","group":"Animals & Nature","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍄","keywords":["mushroom"]},"🍇":{"name":"grapes","slug":"grapes","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍇","keywords":["grapes","fruit"]},"🍈":{"name":"melon","slug":"melon","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍈","keywords":["melon"]},"🍉":{"name":"watermelon","slug":"watermelon","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍉","keywords":["watermelon","picnic"]},"🍊":{"name":"tangerine","slug":"tangerine","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍊","keywords":["tangerine","orange"]},"🍋":{"name":"lemon","slug":"lemon","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🍋","keywords":["lemon"]},"🍌":{"name":"banana","slug":"banana","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍌","keywords":["banana"]},"🍍":{"name":"pineapple","slug":"pineapple","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍍","keywords":["pineapple"]},"🥭":{"name":"mango","slug":"mango","group":"Food & Drink","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥭","keywords":["mango"]},"🍎":{"name":"red apple","slug":"red_apple","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍎","keywords":["red_apple","mac"]},"🍏":{"name":"green apple","slug":"green_apple","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍏","keywords":["green_apple"]},"🍐":{"name":"pear","slug":"pear","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🍐","keywords":["pear"]},"🍑":{"name":"peach","slug":"peach","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍑","keywords":["peach"]},"🍒":{"name":"cherries","slug":"cherries","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍒","keywords":["cherries"]},"🍓":{"name":"strawberry","slug":"strawberry","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍓","keywords":["strawberry"]},"🫐":{"name":"blueberries","slug":"blueberries","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫐","keywords":["blueberries"]},"🥝":{"name":"kiwi fruit","slug":"kiwi_fruit","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥝","keywords":["kiwi_fruit"]},"🍅":{"name":"tomato","slug":"tomato","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍅","keywords":["tomato"]},"🫒":{"name":"olive","slug":"olive","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫒","keywords":["olive"]},"🥥":{"name":"coconut","slug":"coconut","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥥","keywords":["coconut"]},"🥑":{"name":"avocado","slug":"avocado","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥑","keywords":["avocado"]},"🍆":{"name":"eggplant","slug":"eggplant","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍆","keywords":["eggplant","aubergine"]},"🥔":{"name":"potato","slug":"potato","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥔","keywords":["potato","tuber","vegatable","starch"]},"🥕":{"name":"carrot","slug":"carrot","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥕","keywords":["carrot"]},"🌽":{"name":"ear of corn","slug":"ear_of_corn","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌽","keywords":["ear_of_corn"]},"🌶️":{"name":"hot pepper","slug":"hot_pepper","group":"Food & Drink","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌶️","keywords":["hot_pepper","spicy","chilli","chili"]},"🫑":{"name":"bell pepper","slug":"bell_pepper","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫑","keywords":["bell_pepper","bell pepper"]},"🥒":{"name":"cucumber","slug":"cucumber","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥒","keywords":["cucumber","pickle"]},"🥬":{"name":"leafy green","slug":"leafy_green","group":"Food & Drink","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥬","keywords":["leafy_green","bok choy","cabbage","kale"]},"🥦":{"name":"broccoli","slug":"broccoli","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥦","keywords":["broccoli"]},"🧄":{"name":"garlic","slug":"garlic","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧄","keywords":["garlic","spice"]},"🧅":{"name":"onion","slug":"onion","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧅","keywords":["onion"]},"🥜":{"name":"peanuts","slug":"peanuts","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥜","keywords":["peanuts","nut"]},"🫘":{"name":"beans","slug":"beans","group":"Food & Drink","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫘","keywords":["beans"]},"🌰":{"name":"chestnut","slug":"chestnut","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌰","keywords":["chestnut"]},"🫚":{"name":"ginger root","slug":"ginger_root","group":"Food & Drink","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🫚","keywords":["ginger_root","ginger root","gingerbread"]},"🫛":{"name":"pea pod","slug":"pea_pod","group":"Food & Drink","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🫛","keywords":["pea_pod","pea pod","cozy"]},"🍞":{"name":"bread","slug":"bread","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍞","keywords":["bread","wheat","toast"]},"🥐":{"name":"croissant","slug":"croissant","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥐","keywords":["croissant","french"]},"🥖":{"name":"baguette bread","slug":"baguette_bread","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥖","keywords":["baguette_bread","france"]},"🫓":{"name":"flatbread","slug":"flatbread","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫓","keywords":["flatbread","flour"]},"🥨":{"name":"pretzel","slug":"pretzel","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥨","keywords":["pretzel","twisted","germany"]},"🥯":{"name":"bagel","slug":"bagel","group":"Food & Drink","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥯","keywords":["bagel","bakery","schmear","bakery"]},"🥞":{"name":"pancakes","slug":"pancakes","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥞","keywords":["pancakes","breakfast","flapjacks","hotcakes"]},"🧇":{"name":"waffle","slug":"waffle","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧇","keywords":["waffle","brunch"]},"🧀":{"name":"cheese wedge","slug":"cheese_wedge","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🧀","keywords":["cheese_wedge","chadder","swiss"]},"🍖":{"name":"meat on bone","slug":"meat_on_bone","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍖","keywords":["meat_on_bone","drumstick"]},"🍗":{"name":"poultry leg","slug":"poultry_leg","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍗","keywords":["poultry_leg","meat"]},"🥩":{"name":"cut of meat","slug":"cut_of_meat","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥩","keywords":["cut_of_meat","cut","chop","lambchop","porkchop"]},"🥓":{"name":"bacon","slug":"bacon","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥓","keywords":["bacon","pork"]},"🍔":{"name":"hamburger","slug":"hamburger","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍔","keywords":["hamburger","fast food","cheeseburger","mcdonalds","burger king"]},"🍟":{"name":"french fries","slug":"french_fries","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍟","keywords":["french_fries","chips"]},"🍕":{"name":"pizza","slug":"pizza","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍕","keywords":["pizza","party"]},"🌭":{"name":"hot dog","slug":"hot_dog","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌭","keywords":["hot_dog","frankfurter","america"]},"🥪":{"name":"sandwich","slug":"sandwich","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥪","keywords":["sandwich","lunch"]},"🌮":{"name":"taco","slug":"taco","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌮","keywords":["taco","mexican"]},"🌯":{"name":"burrito","slug":"burrito","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌯","keywords":["burrito"]},"🫔":{"name":"tamale","slug":"tamale","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫔","keywords":["tamale","masa"]},"🥙":{"name":"stuffed flatbread","slug":"stuffed_flatbread","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥙","keywords":["stuffed_flatbread","stuffed","gyro"]},"🧆":{"name":"falafel","slug":"falafel","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧆","keywords":["falafel","mediterranean"]},"🥚":{"name":"egg","slug":"egg","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥚","keywords":["egg"]},"🍳":{"name":"cooking","slug":"cooking","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍳","keywords":["cooking","skillet"]},"🥘":{"name":"shallow pan of food","slug":"shallow_pan_of_food","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥘","keywords":["shallow_pan_of_food","casserole","paella"]},"🍲":{"name":"pot of food","slug":"pot_of_food","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍲","keywords":["pot_of_food","soup","hot pot"]},"🫕":{"name":"fondue","slug":"fondue","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫕","keywords":["fondue","cheese","pot"]},"🥣":{"name":"bowl with spoon","slug":"bowl_with_spoon","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥣","keywords":["bowl_with_spoon","cereal","oatmeal","porridge"]},"🥗":{"name":"green salad","slug":"green_salad","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥗","keywords":["green_salad","healthy","lettuce"]},"🍿":{"name":"popcorn","slug":"popcorn","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🍿","keywords":["popcorn","movie theater","films","drama"]},"🧈":{"name":"butter","slug":"butter","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧈","keywords":["butter"]},"🧂":{"name":"salt","slug":"salt","group":"Food & Drink","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧂","keywords":["salt","condiment","shaker"]},"🥫":{"name":"canned food","slug":"canned_food","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥫","keywords":["canned_food","tomatoes"]},"🍱":{"name":"bento box","slug":"bento_box","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍱","keywords":["bento_box","box"]},"🍘":{"name":"rice cracker","slug":"rice_cracker","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍘","keywords":["rice_cracker","snack"]},"🍙":{"name":"rice ball","slug":"rice_ball","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍙","keywords":["rice_ball"]},"🍚":{"name":"cooked rice","slug":"cooked_rice","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍚","keywords":["cooked_rice","asian"]},"🍛":{"name":"curry rice","slug":"curry_rice","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍛","keywords":["curry_rice"]},"🍜":{"name":"steaming bowl","slug":"steaming_bowl","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍜","keywords":["steaming_bowl","noodle","ramen"]},"🍝":{"name":"spaghetti","slug":"spaghetti","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍝","keywords":["spaghetti","italian","pasta"]},"🍠":{"name":"roasted sweet potato","slug":"roasted_sweet_potato","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍠","keywords":["roasted_sweet_potato"]},"🍢":{"name":"oden","slug":"oden","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍢","keywords":["oden"]},"🍣":{"name":"sushi","slug":"sushi","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍣","keywords":["sushi","rice"]},"🍤":{"name":"fried shrimp","slug":"fried_shrimp","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍤","keywords":["fried_shrimp","appetizer"]},"🍥":{"name":"fish cake with swirl","slug":"fish_cake_with_swirl","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍥","keywords":["fish_cake_with_swirl","japan","narutomaki","kamaboko","surimi"]},"🥮":{"name":"moon cake","slug":"moon_cake","group":"Food & Drink","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥮","keywords":["moon_cake","autumn"]},"🍡":{"name":"dango","slug":"dango","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍡","keywords":["dango","dessert","barbecue"]},"🥟":{"name":"dumpling","slug":"dumpling","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥟","keywords":["dumpling","empanada","pierogi","potsticker","gyoza"]},"🥠":{"name":"fortune cookie","slug":"fortune_cookie","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥠","keywords":["fortune_cookie","prophecy"]},"🥡":{"name":"takeout box","slug":"takeout_box","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥡","keywords":["takeout_box","leftovers"]},"🦀":{"name":"crab","slug":"crab","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🦀","keywords":["crab","crustacean"]},"🦞":{"name":"lobster","slug":"lobster","group":"Food & Drink","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🦞","keywords":["lobster","bisque","claws"]},"🦐":{"name":"shrimp","slug":"shrimp","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦐","keywords":["shrimp","seafood"]},"🦑":{"name":"squid","slug":"squid","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🦑","keywords":["squid"]},"🦪":{"name":"oyster","slug":"oyster","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦪","keywords":["oyster"]},"🍦":{"name":"soft ice cream","slug":"soft_ice_cream","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍦","keywords":["soft_ice_cream"]},"🍧":{"name":"shaved ice","slug":"shaved_ice","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍧","keywords":["shaved_ice"]},"🍨":{"name":"ice cream","slug":"ice_cream","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍨","keywords":["ice_cream"]},"🍩":{"name":"doughnut","slug":"doughnut","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍩","keywords":["doughnut","sweet","donut"]},"🍪":{"name":"cookie","slug":"cookie","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍪","keywords":["cookie","oreo","chocolate"]},"🎂":{"name":"birthday cake","slug":"birthday_cake","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎂","keywords":["birthday_cake","cake"]},"🍰":{"name":"shortcake","slug":"shortcake","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍰","keywords":["shortcake"]},"🧁":{"name":"cupcake","slug":"cupcake","group":"Food & Drink","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧁","keywords":["cupcake"]},"🥧":{"name":"pie","slug":"pie","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥧","keywords":["pie","pastry"]},"🍫":{"name":"chocolate bar","slug":"chocolate_bar","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍫","keywords":["chocolate_bar"]},"🍬":{"name":"candy","slug":"candy","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍬","keywords":["candy","lolly"]},"🍭":{"name":"lollipop","slug":"lollipop","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍭","keywords":["lollipop"]},"🍮":{"name":"custard","slug":"custard","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍮","keywords":["custard"]},"🍯":{"name":"honey pot","slug":"honey_pot","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍯","keywords":["honey_pot","bees"]},"🍼":{"name":"baby bottle","slug":"baby_bottle","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🍼","keywords":["baby_bottle","container"]},"🥛":{"name":"glass of milk","slug":"glass_of_milk","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥛","keywords":["glass_of_milk","beverage"]},"☕":{"name":"hot beverage","slug":"hot_beverage","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"☕","keywords":["hot_beverage","caffeine","latte","espresso","mug"]},"🫖":{"name":"teapot","slug":"teapot","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🫖","keywords":["teapot","drink"]},"🍵":{"name":"teacup without handle","slug":"teacup_without_handle","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍵","keywords":["teacup_without_handle","bowl"]},"🍶":{"name":"sake","slug":"sake","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍶","keywords":["sake","wine","booze"]},"🍾":{"name":"bottle with popping cork","slug":"bottle_with_popping_cork","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🍾","keywords":["bottle_with_popping_cork","bottle"]},"🍷":{"name":"wine glass","slug":"wine_glass","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍷","keywords":["wine_glass","drunk"]},"🍸":{"name":"cocktail glass","slug":"cocktail_glass","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍸","keywords":["cocktail_glass","alcohol"]},"🍹":{"name":"tropical drink","slug":"tropical_drink","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍹","keywords":["tropical_drink","cocktail"]},"🍺":{"name":"beer mug","slug":"beer_mug","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍺","keywords":["beer_mug","pub"]},"🍻":{"name":"clinking beer mugs","slug":"clinking_beer_mugs","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍻","keywords":["clinking_beer_mugs"]},"🥂":{"name":"clinking glasses","slug":"clinking_glasses","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥂","keywords":["clinking_glasses","celebrate","cheers","champagne"]},"🥃":{"name":"tumbler glass","slug":"tumbler_glass","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥃","keywords":["tumbler_glass","liquor","bourbon","scotch","whisky","glass","shot"]},"🫗":{"name":"pouring liquid","slug":"pouring_liquid","group":"Food & Drink","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫗","keywords":["pouring_liquid","pouring liquid","cup"]},"🥤":{"name":"cup with straw","slug":"cup_with_straw","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥤","keywords":["cup_with_straw","soda"]},"🧋":{"name":"bubble tea","slug":"bubble_tea","group":"Food & Drink","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🧋","keywords":["bubble_tea","bubble tea","taiwan","boba","milk tea","straw"]},"🧃":{"name":"beverage box","slug":"beverage_box","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧃","keywords":["beverage_box"]},"🧉":{"name":"mate","slug":"mate","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧉","keywords":["mate","tea"]},"🧊":{"name":"ice","slug":"ice","group":"Food & Drink","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🧊","keywords":["ice"]},"🥢":{"name":"chopsticks","slug":"chopsticks","group":"Food & Drink","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥢","keywords":["chopsticks"]},"🍽️":{"name":"fork and knife with plate","slug":"fork_and_knife_with_plate","group":"Food & Drink","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🍽️","keywords":["fork_and_knife_with_plate","eat","meal","dinner","restaurant"]},"🍴":{"name":"fork and knife","slug":"fork_and_knife","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🍴","keywords":["fork_and_knife","cutlery"]},"🥄":{"name":"spoon","slug":"spoon","group":"Food & Drink","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥄","keywords":["spoon","tableware"]},"🔪":{"name":"kitchen knife","slug":"kitchen_knife","group":"Food & Drink","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔪","keywords":["kitchen_knife","knife","blade"]},"🫙":{"name":"jar","slug":"jar","group":"Food & Drink","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫙","keywords":["jar","sauce"]},"🏺":{"name":"amphora","slug":"amphora","group":"Food & Drink","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏺","keywords":["amphora","vase"]},"🌍":{"name":"globe showing Europe-Africa","slug":"globe_showing_europe_africa","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌍","keywords":["globe_showing_europe_africa","globe","international"]},"🌎":{"name":"globe showing Americas","slug":"globe_showing_americas","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌎","keywords":["globe_showing_americas","world","USA"]},"🌏":{"name":"globe showing Asia-Australia","slug":"globe_showing_asia_australia","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌏","keywords":["globe_showing_asia_australia","east"]},"🌐":{"name":"globe with meridians","slug":"globe_with_meridians","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌐","keywords":["globe_with_meridians","earth","internet","interweb","i18n"]},"🗺️":{"name":"world map","slug":"world_map","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗺️","keywords":["world_map","location"]},"🗾":{"name":"map of Japan","slug":"map_of_japan","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🗾","keywords":["map_of_japan","nation","asia"]},"🧭":{"name":"compass","slug":"compass","group":"Travel & Places","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧭","keywords":["compass","magnetic","navigation","orienteering"]},"🏔️":{"name":"snow-capped mountain","slug":"snow_capped_mountain","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏔️","keywords":["snow_capped_mountain","photo"]},"⛰️":{"name":"mountain","slug":"mountain","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛰️","keywords":["mountain","environment"]},"🌋":{"name":"volcano","slug":"volcano","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌋","keywords":["volcano","disaster"]},"🗻":{"name":"mount fuji","slug":"mount_fuji","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🗻","keywords":["mount_fuji"]},"🏕️":{"name":"camping","slug":"camping","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏕️","keywords":["camping","outdoors"]},"🏖️":{"name":"beach with umbrella","slug":"beach_with_umbrella","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏖️","keywords":["beach_with_umbrella","weather","sunny","sand"]},"🏜️":{"name":"desert","slug":"desert","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏜️","keywords":["desert","warm","saharah"]},"🏝️":{"name":"desert island","slug":"desert_island","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏝️","keywords":["desert_island"]},"🏞️":{"name":"national park","slug":"national_park","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏞️","keywords":["national_park"]},"🏟️":{"name":"stadium","slug":"stadium","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏟️","keywords":["stadium","place","venue"]},"🏛️":{"name":"classical building","slug":"classical_building","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏛️","keywords":["classical_building","art","culture"]},"🏗️":{"name":"building construction","slug":"building_construction","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏗️","keywords":["building_construction","working"]},"🧱":{"name":"brick","slug":"brick","group":"Travel & Places","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧱","keywords":["brick","bricks"]},"🪨":{"name":"rock","slug":"rock","group":"Travel & Places","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪨","keywords":["rock","stone"]},"🪵":{"name":"wood","slug":"wood","group":"Travel & Places","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪵","keywords":["wood","timber","trunk"]},"🛖":{"name":"hut","slug":"hut","group":"Travel & Places","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🛖","keywords":["hut","structure"]},"🏘️":{"name":"houses","slug":"houses","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏘️","keywords":["houses","buildings"]},"🏚️":{"name":"derelict house","slug":"derelict_house","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏚️","keywords":["derelict_house","abandon","evict","broken"]},"🏠":{"name":"house","slug":"house","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏠","keywords":["house","building"]},"🏡":{"name":"house with garden","slug":"house_with_garden","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏡","keywords":["house_with_garden"]},"🏢":{"name":"office building","slug":"office_building","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏢","keywords":["office_building","bureau","work"]},"🏣":{"name":"Japanese post office","slug":"japanese_post_office","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏣","keywords":["japanese_post_office","communication"]},"🏤":{"name":"post office","slug":"post_office","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏤","keywords":["post_office"]},"🏥":{"name":"hospital","slug":"hospital","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏥","keywords":["hospital","surgery"]},"🏦":{"name":"bank","slug":"bank","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏦","keywords":["bank","sales","enterprise"]},"🏨":{"name":"hotel","slug":"hotel","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏨","keywords":["hotel","accomodation","checkin"]},"🏩":{"name":"love hotel","slug":"love_hotel","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏩","keywords":["love_hotel"]},"🏪":{"name":"convenience store","slug":"convenience_store","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏪","keywords":["convenience_store","shopping","groceries"]},"🏫":{"name":"school","slug":"school","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏫","keywords":["school","education","teach"]},"🏬":{"name":"department store","slug":"department_store","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏬","keywords":["department_store","mall"]},"🏭":{"name":"factory","slug":"factory","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏭","keywords":["factory","industry","pollution","smoke"]},"🏯":{"name":"Japanese castle","slug":"japanese_castle","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏯","keywords":["japanese_castle"]},"🏰":{"name":"castle","slug":"castle","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏰","keywords":["castle","history"]},"💒":{"name":"wedding","slug":"wedding","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💒","keywords":["wedding","marriage"]},"🗼":{"name":"Tokyo tower","slug":"tokyo_tower","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🗼","keywords":["tokyo_tower"]},"🗽":{"name":"Statue of Liberty","slug":"statue_of_liberty","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🗽","keywords":["statue_of_liberty","american","newyork"]},"⛪":{"name":"church","slug":"church","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛪","keywords":["church","religion","christ"]},"🕌":{"name":"mosque","slug":"mosque","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🕌","keywords":["mosque","islam","worship","minaret"]},"🛕":{"name":"hindu temple","slug":"hindu_temple","group":"Travel & Places","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🛕","keywords":["hindu_temple"]},"🕍":{"name":"synagogue","slug":"synagogue","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🕍","keywords":["synagogue","judaism"]},"⛩️":{"name":"shinto shrine","slug":"shinto_shrine","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛩️","keywords":["shinto_shrine","temple","kyoto"]},"🕋":{"name":"kaaba","slug":"kaaba","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🕋","keywords":["kaaba","mecca"]},"⛲":{"name":"fountain","slug":"fountain","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛲","keywords":["fountain","fresh"]},"⛺":{"name":"tent","slug":"tent","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛺","keywords":["tent"]},"🌁":{"name":"foggy","slug":"foggy","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌁","keywords":["foggy"]},"🌃":{"name":"night with stars","slug":"night_with_stars","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌃","keywords":["night_with_stars","evening","city","downtown"]},"🏙️":{"name":"cityscape","slug":"cityscape","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏙️","keywords":["cityscape","night life","urban"]},"🌄":{"name":"sunrise over mountains","slug":"sunrise_over_mountains","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌄","keywords":["sunrise_over_mountains","view"]},"🌅":{"name":"sunrise","slug":"sunrise","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌅","keywords":["sunrise","morning"]},"🌆":{"name":"cityscape at dusk","slug":"cityscape_at_dusk","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌆","keywords":["cityscape_at_dusk","sky"]},"🌇":{"name":"sunset","slug":"sunset","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌇","keywords":["sunset","good morning","dawn"]},"🌉":{"name":"bridge at night","slug":"bridge_at_night","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌉","keywords":["bridge_at_night","sanfrancisco"]},"♨️":{"name":"hot springs","slug":"hot_springs","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♨️","keywords":["hot_springs","bath"]},"🎠":{"name":"carousel horse","slug":"carousel_horse","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎠","keywords":["carousel_horse","carnival"]},"🛝":{"name":"playground slide","slug":"playground_slide","group":"Travel & Places","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🛝","keywords":["playground_slide","playground slide","park"]},"🎡":{"name":"ferris wheel","slug":"ferris_wheel","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎡","keywords":["ferris_wheel","londoneye"]},"🎢":{"name":"roller coaster","slug":"roller_coaster","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎢","keywords":["roller_coaster","playground"]},"💈":{"name":"barber pole","slug":"barber_pole","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💈","keywords":["barber_pole","hair","salon","style"]},"🎪":{"name":"circus tent","slug":"circus_tent","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎪","keywords":["circus_tent"]},"🚂":{"name":"locomotive","slug":"locomotive","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚂","keywords":["locomotive","vehicle"]},"🚃":{"name":"railway car","slug":"railway_car","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚃","keywords":["railway_car"]},"🚄":{"name":"high-speed train","slug":"high_speed_train","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚄","keywords":["high_speed_train"]},"🚅":{"name":"bullet train","slug":"bullet_train","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚅","keywords":["bullet_train","speed"]},"🚆":{"name":"train","slug":"train","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚆","keywords":["train"]},"🚇":{"name":"metro","slug":"metro","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚇","keywords":["metro","blue-square","mrt","underground","tube"]},"🚈":{"name":"light rail","slug":"light_rail","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚈","keywords":["light_rail"]},"🚉":{"name":"station","slug":"station","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚉","keywords":["station","public"]},"🚊":{"name":"tram","slug":"tram","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚊","keywords":["tram"]},"🚝":{"name":"monorail","slug":"monorail","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚝","keywords":["monorail"]},"🚞":{"name":"mountain railway","slug":"mountain_railway","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚞","keywords":["mountain_railway"]},"🚋":{"name":"tram car","slug":"tram_car","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚋","keywords":["tram_car","carriage"]},"🚌":{"name":"bus","slug":"bus","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚌","keywords":["bus","car"]},"🚍":{"name":"oncoming bus","slug":"oncoming_bus","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🚍","keywords":["oncoming_bus"]},"🚎":{"name":"trolleybus","slug":"trolleybus","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚎","keywords":["trolleybus","bart"]},"🚐":{"name":"minibus","slug":"minibus","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚐","keywords":["minibus"]},"🚑":{"name":"ambulance","slug":"ambulance","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚑","keywords":["ambulance","health","911"]},"🚒":{"name":"fire engine","slug":"fire_engine","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚒","keywords":["fire_engine","cars"]},"🚓":{"name":"police car","slug":"police_car","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚓","keywords":["police_car"]},"🚔":{"name":"oncoming police car","slug":"oncoming_police_car","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🚔","keywords":["oncoming_police_car"]},"🚕":{"name":"taxi","slug":"taxi","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚕","keywords":["taxi","uber"]},"🚖":{"name":"oncoming taxi","slug":"oncoming_taxi","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚖","keywords":["oncoming_taxi"]},"🚗":{"name":"automobile","slug":"automobile","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚗","keywords":["automobile"]},"🚘":{"name":"oncoming automobile","slug":"oncoming_automobile","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🚘","keywords":["oncoming_automobile"]},"🚙":{"name":"sport utility vehicle","slug":"sport_utility_vehicle","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚙","keywords":["sport_utility_vehicle"]},"🛻":{"name":"pickup truck","slug":"pickup_truck","group":"Travel & Places","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🛻","keywords":["pickup_truck","pickup truck"]},"🚚":{"name":"delivery truck","slug":"delivery_truck","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚚","keywords":["delivery_truck"]},"🚛":{"name":"articulated lorry","slug":"articulated_lorry","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚛","keywords":["articulated_lorry","express"]},"🚜":{"name":"tractor","slug":"tractor","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚜","keywords":["tractor","farming","agriculture"]},"🏎️":{"name":"racing car","slug":"racing_car","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏎️","keywords":["racing_car","formula","f1"]},"🏍️":{"name":"motorcycle","slug":"motorcycle","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏍️","keywords":["motorcycle"]},"🛵":{"name":"motor scooter","slug":"motor_scooter","group":"Travel & Places","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🛵","keywords":["motor_scooter","vespa","sasha"]},"🦽":{"name":"manual wheelchair","slug":"manual_wheelchair","group":"Travel & Places","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦽","keywords":["manual_wheelchair"]},"🦼":{"name":"motorized wheelchair","slug":"motorized_wheelchair","group":"Travel & Places","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦼","keywords":["motorized_wheelchair"]},"🛺":{"name":"auto rickshaw","slug":"auto_rickshaw","group":"Travel & Places","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🛺","keywords":["auto_rickshaw"]},"🚲":{"name":"bicycle","slug":"bicycle","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚲","keywords":["bicycle","bicycle"]},"🛴":{"name":"kick scooter","slug":"kick_scooter","group":"Travel & Places","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🛴","keywords":["kick_scooter"]},"🛹":{"name":"skateboard","slug":"skateboard","group":"Travel & Places","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🛹","keywords":["skateboard","board"]},"🛼":{"name":"roller skate","slug":"roller_skate","group":"Travel & Places","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🛼","keywords":["roller_skate","roller skate","footwear"]},"🚏":{"name":"bus stop","slug":"bus_stop","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚏","keywords":["bus_stop","wait"]},"🛣️":{"name":"motorway","slug":"motorway","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛣️","keywords":["motorway","road","cupertino","interstate","highway"]},"🛤️":{"name":"railway track","slug":"railway_track","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛤️","keywords":["railway_track"]},"🛢️":{"name":"oil drum","slug":"oil_drum","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛢️","keywords":["oil_drum","barrell"]},"⛽":{"name":"fuel pump","slug":"fuel_pump","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛽","keywords":["fuel_pump","gas station","petroleum"]},"🛞":{"name":"wheel","slug":"wheel","group":"Travel & Places","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🛞","keywords":["wheel","transport"]},"🚨":{"name":"police car light","slug":"police_car_light","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚨","keywords":["police_car_light","emergency","alert","pinged"]},"🚥":{"name":"horizontal traffic light","slug":"horizontal_traffic_light","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚥","keywords":["horizontal_traffic_light","signal"]},"🚦":{"name":"vertical traffic light","slug":"vertical_traffic_light","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚦","keywords":["vertical_traffic_light","driving"]},"🛑":{"name":"stop sign","slug":"stop_sign","group":"Travel & Places","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🛑","keywords":["stop_sign"]},"🚧":{"name":"construction","slug":"construction","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚧","keywords":["construction","progress","caution"]},"⚓":{"name":"anchor","slug":"anchor","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⚓","keywords":["anchor","boat"]},"🛟":{"name":"ring buoy","slug":"ring_buoy","group":"Travel & Places","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🛟","keywords":["ring_buoy","ring buoy","life saver","life preserver"]},"⛵":{"name":"sailboat","slug":"sailboat","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛵","keywords":["sailboat","sailing"]},"🛶":{"name":"canoe","slug":"canoe","group":"Travel & Places","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🛶","keywords":["canoe","paddle"]},"🚤":{"name":"speedboat","slug":"speedboat","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚤","keywords":["speedboat"]},"🛳️":{"name":"passenger ship","slug":"passenger_ship","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛳️","keywords":["passenger_ship","yacht","cruise"]},"⛴️":{"name":"ferry","slug":"ferry","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛴️","keywords":["ferry"]},"🛥️":{"name":"motor boat","slug":"motor_boat","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛥️","keywords":["motor_boat"]},"🚢":{"name":"ship","slug":"ship","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚢","keywords":["ship","titanic","deploy"]},"✈️":{"name":"airplane","slug":"airplane","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✈️","keywords":["airplane","flight"]},"🛩️":{"name":"small airplane","slug":"small_airplane","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛩️","keywords":["small_airplane"]},"🛫":{"name":"airplane departure","slug":"airplane_departure","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛫","keywords":["airplane_departure","airport","landing"]},"🛬":{"name":"airplane arrival","slug":"airplane_arrival","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛬","keywords":["airplane_arrival","boarding"]},"🪂":{"name":"parachute","slug":"parachute","group":"Travel & Places","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪂","keywords":["parachute","glide"]},"💺":{"name":"seat","slug":"seat","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💺","keywords":["seat","sit"]},"🚁":{"name":"helicopter","slug":"helicopter","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚁","keywords":["helicopter"]},"🚟":{"name":"suspension railway","slug":"suspension_railway","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚟","keywords":["suspension_railway"]},"🚠":{"name":"mountain cableway","slug":"mountain_cableway","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚠","keywords":["mountain_cableway","ski"]},"🚡":{"name":"aerial tramway","slug":"aerial_tramway","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚡","keywords":["aerial_tramway"]},"🛰️":{"name":"satellite","slug":"satellite","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛰️","keywords":["satellite","gps","orbit","spaceflight","ISS"]},"🚀":{"name":"rocket","slug":"rocket","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚀","keywords":["rocket","launch","staffmode","NASA","outer space"]},"🛸":{"name":"flying saucer","slug":"flying_saucer","group":"Travel & Places","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🛸","keywords":["flying_saucer","ufo"]},"🛎️":{"name":"bellhop bell","slug":"bellhop_bell","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛎️","keywords":["bellhop_bell","service"]},"🧳":{"name":"luggage","slug":"luggage","group":"Travel & Places","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧳","keywords":["luggage","packing"]},"⌛":{"name":"hourglass done","slug":"hourglass_done","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⌛","keywords":["hourglass_done","time","clock","test"]},"⏳":{"name":"hourglass not done","slug":"hourglass_not_done","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⏳","keywords":["hourglass_not_done","oldschool","countdown"]},"⌚":{"name":"watch","slug":"watch","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⌚","keywords":["watch","accessories"]},"⏰":{"name":"alarm clock","slug":"alarm_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⏰","keywords":["alarm_clock","wake"]},"⏱️":{"name":"stopwatch","slug":"stopwatch","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⏱️","keywords":["stopwatch","deadline"]},"⏲️":{"name":"timer clock","slug":"timer_clock","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⏲️","keywords":["timer_clock","alarm"]},"🕰️":{"name":"mantelpiece clock","slug":"mantelpiece_clock","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕰️","keywords":["mantelpiece_clock"]},"🕛":{"name":"twelve o’clock","slug":"twelve_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕛","keywords":["twelve_o_clock","12","00:00","0000","12:00","1200","noon","midnight","midday"]},"🕧":{"name":"twelve-thirty","slug":"twelve_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕧","keywords":["twelve_thirty","00:30","0030","12:30","1230","late"]},"🕐":{"name":"one o’clock","slug":"one_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕐","keywords":["one_o_clock","1","1:00","100","13:00","1300"]},"🕜":{"name":"one-thirty","slug":"one_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕜","keywords":["one_thirty","1:30","130","13:30","1330","early"]},"🕑":{"name":"two o’clock","slug":"two_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕑","keywords":["two_o_clock","2","2:00","200","14:00","1400"]},"🕝":{"name":"two-thirty","slug":"two_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕝","keywords":["two_thirty","2:30","230","14:30","1430"]},"🕒":{"name":"three o’clock","slug":"three_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕒","keywords":["three_o_clock","3:00","300","15:00","1500"]},"🕞":{"name":"three-thirty","slug":"three_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕞","keywords":["three_thirty","3:30","330","15:30","1530"]},"🕓":{"name":"four o’clock","slug":"four_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕓","keywords":["four_o_clock","4","4:00","400","16:00","1600"]},"🕟":{"name":"four-thirty","slug":"four_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕟","keywords":["four_thirty","4:30","430","16:30","1630"]},"🕔":{"name":"five o’clock","slug":"five_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕔","keywords":["five_o_clock","5","5:00","500","17:00","1700"]},"🕠":{"name":"five-thirty","slug":"five_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕠","keywords":["five_thirty","5:30","530","17:30","1730"]},"🕕":{"name":"six o’clock","slug":"six_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕕","keywords":["six_o_clock","6","6:00","600","18:00","1800","dusk"]},"🕡":{"name":"six-thirty","slug":"six_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕡","keywords":["six_thirty","6:30","630","18:30","1830"]},"🕖":{"name":"seven o’clock","slug":"seven_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕖","keywords":["seven_o_clock","7","7:00","700","19:00","1900"]},"🕢":{"name":"seven-thirty","slug":"seven_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕢","keywords":["seven_thirty","7:30","730","19:30","1930"]},"🕗":{"name":"eight o’clock","slug":"eight_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕗","keywords":["eight_o_clock","8","8:00","800","20:00","2000"]},"🕣":{"name":"eight-thirty","slug":"eight_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕣","keywords":["eight_thirty","8:30","830","20:30","2030"]},"🕘":{"name":"nine o’clock","slug":"nine_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕘","keywords":["nine_o_clock","9","9:00","900","21:00","2100"]},"🕤":{"name":"nine-thirty","slug":"nine_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕤","keywords":["nine_thirty","9:30","930","21:30","2130"]},"🕙":{"name":"ten o’clock","slug":"ten_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕙","keywords":["ten_o_clock","10","10:00","1000","22:00","2200"]},"🕥":{"name":"ten-thirty","slug":"ten_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕥","keywords":["ten_thirty","10:30","1030","22:30","2230"]},"🕚":{"name":"eleven o’clock","slug":"eleven_o_clock","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🕚","keywords":["eleven_o_clock","11","11:00","1100","23:00","2300"]},"🕦":{"name":"eleven-thirty","slug":"eleven_thirty","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕦","keywords":["eleven_thirty","11:30","1130","23:30","2330"]},"🌑":{"name":"new moon","slug":"new_moon","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌑","keywords":["new_moon","twilight"]},"🌒":{"name":"waxing crescent moon","slug":"waxing_crescent_moon","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌒","keywords":["waxing_crescent_moon","planet"]},"🌓":{"name":"first quarter moon","slug":"first_quarter_moon","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌓","keywords":["first_quarter_moon","sleep"]},"🌔":{"name":"waxing gibbous moon","slug":"waxing_gibbous_moon","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌔","keywords":["waxing_gibbous_moon","gray"]},"🌕":{"name":"full moon","slug":"full_moon","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌕","keywords":["full_moon"]},"🌖":{"name":"waning gibbous moon","slug":"waning_gibbous_moon","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌖","keywords":["waning_gibbous_moon"]},"🌗":{"name":"last quarter moon","slug":"last_quarter_moon","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌗","keywords":["last_quarter_moon"]},"🌘":{"name":"waning crescent moon","slug":"waning_crescent_moon","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌘","keywords":["waning_crescent_moon"]},"🌙":{"name":"crescent moon","slug":"crescent_moon","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌙","keywords":["crescent_moon","night"]},"🌚":{"name":"new moon face","slug":"new_moon_face","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌚","keywords":["new_moon_face"]},"🌛":{"name":"first quarter moon face","slug":"first_quarter_moon_face","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌛","keywords":["first_quarter_moon_face"]},"🌜":{"name":"last quarter moon face","slug":"last_quarter_moon_face","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌜","keywords":["last_quarter_moon_face"]},"🌡️":{"name":"thermometer","slug":"thermometer","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌡️","keywords":["thermometer"]},"☀️":{"name":"sun","slug":"sun","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"☀️","keywords":["sun","brightness"]},"🌝":{"name":"full moon face","slug":"full_moon_face","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌝","keywords":["full_moon_face"]},"🌞":{"name":"sun with face","slug":"sun_with_face","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🌞","keywords":["sun_with_face"]},"🪐":{"name":"ringed planet","slug":"ringed_planet","group":"Travel & Places","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪐","keywords":["ringed_planet"]},"⭐":{"name":"star","slug":"star","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⭐","keywords":["star"]},"🌟":{"name":"glowing star","slug":"glowing_star","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌟","keywords":["glowing_star","awesome"]},"🌠":{"name":"shooting star","slug":"shooting_star","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌠","keywords":["shooting_star"]},"🌌":{"name":"milky way","slug":"milky_way","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌌","keywords":["milky_way","stars"]},"☁️":{"name":"cloud","slug":"cloud","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"☁️","keywords":["cloud"]},"⛅":{"name":"sun behind cloud","slug":"sun_behind_cloud","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛅","keywords":["sun_behind_cloud","cloudy"]},"⛈️":{"name":"cloud with lightning and rain","slug":"cloud_with_lightning_and_rain","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛈️","keywords":["cloud_with_lightning_and_rain","lightning"]},"🌤️":{"name":"sun behind small cloud","slug":"sun_behind_small_cloud","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌤️","keywords":["sun_behind_small_cloud"]},"🌥️":{"name":"sun behind large cloud","slug":"sun_behind_large_cloud","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌥️","keywords":["sun_behind_large_cloud"]},"🌦️":{"name":"sun behind rain cloud","slug":"sun_behind_rain_cloud","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌦️","keywords":["sun_behind_rain_cloud"]},"🌧️":{"name":"cloud with rain","slug":"cloud_with_rain","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌧️","keywords":["cloud_with_rain"]},"🌨️":{"name":"cloud with snow","slug":"cloud_with_snow","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌨️","keywords":["cloud_with_snow"]},"🌩️":{"name":"cloud with lightning","slug":"cloud_with_lightning","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌩️","keywords":["cloud_with_lightning","thunder"]},"🌪️":{"name":"tornado","slug":"tornado","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌪️","keywords":["tornado","twister"]},"🌫️":{"name":"fog","slug":"fog","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌫️","keywords":["fog"]},"🌬️":{"name":"wind face","slug":"wind_face","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🌬️","keywords":["wind_face","gust"]},"🌀":{"name":"cyclone","slug":"cyclone","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌀","keywords":["cyclone","swirl","vortex","spiral","whirlpool","spin","hurricane","typhoon"]},"🌈":{"name":"rainbow","slug":"rainbow","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌈","keywords":["rainbow","unicorn_face"]},"🌂":{"name":"closed umbrella","slug":"closed_umbrella","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌂","keywords":["closed_umbrella","rain","drizzle"]},"☂️":{"name":"umbrella","slug":"umbrella","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"☂️","keywords":["umbrella"]},"☔":{"name":"umbrella with rain drops","slug":"umbrella_with_rain_drops","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"☔","keywords":["umbrella_with_rain_drops","rainy"]},"⛱️":{"name":"umbrella on ground","slug":"umbrella_on_ground","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛱️","keywords":["umbrella_on_ground"]},"⚡":{"name":"high voltage","slug":"high_voltage","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⚡","keywords":["high_voltage","lightning bolt"]},"❄️":{"name":"snowflake","slug":"snowflake","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❄️","keywords":["snowflake","season"]},"☃️":{"name":"snowman","slug":"snowman","group":"Travel & Places","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"☃️","keywords":["snowman"]},"⛄":{"name":"snowman without snow","slug":"snowman_without_snow","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛄","keywords":["snowman_without_snow","without_snow"]},"☄️":{"name":"comet","slug":"comet","group":"Travel & Places","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"☄️","keywords":["comet"]},"🔥":{"name":"fire","slug":"fire","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔥","keywords":["fire","flame"]},"💧":{"name":"droplet","slug":"droplet","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💧","keywords":["droplet","drip"]},"🌊":{"name":"water wave","slug":"water_wave","group":"Travel & Places","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🌊","keywords":["water_wave","wave","tsunami"]},"🎃":{"name":"jack-o-lantern","slug":"jack_o_lantern","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎃","keywords":["jack_o_lantern","light","pumpkin"]},"🎄":{"name":"Christmas tree","slug":"christmas_tree","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎄","keywords":["christmas_tree","vacation","december"]},"🎆":{"name":"fireworks","slug":"fireworks","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎆","keywords":["fireworks","congratulations"]},"🎇":{"name":"sparkler","slug":"sparkler","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎇","keywords":["sparkler","shine"]},"🧨":{"name":"firecracker","slug":"firecracker","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧨","keywords":["firecracker","dynamite","explosive"]},"✨":{"name":"sparkles","slug":"sparkles","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✨","keywords":["sparkles","shiny"]},"🎈":{"name":"balloon","slug":"balloon","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎈","keywords":["balloon","birthday"]},"🎉":{"name":"party popper","slug":"party_popper","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎉","keywords":["party_popper","tada"]},"🎊":{"name":"confetti ball","slug":"confetti_ball","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎊","keywords":["confetti_ball"]},"🎋":{"name":"tanabata tree","slug":"tanabata_tree","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎋","keywords":["tanabata_tree","branch","star_festival","tanzaku"]},"🎍":{"name":"pine decoration","slug":"pine_decoration","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎍","keywords":["pine_decoration","new_years"]},"🎎":{"name":"Japanese dolls","slug":"japanese_dolls","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎎","keywords":["japanese_dolls","toy"]},"🎏":{"name":"carp streamer","slug":"carp_streamer","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎏","keywords":["carp_streamer","koinobori","carp"]},"🎐":{"name":"wind chime","slug":"wind_chime","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎐","keywords":["wind_chime","ding"]},"🎑":{"name":"moon viewing ceremony","slug":"moon_viewing_ceremony","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎑","keywords":["moon_viewing_ceremony","tsukimi"]},"🧧":{"name":"red envelope","slug":"red_envelope","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧧","keywords":["red_envelope","gift"]},"🎀":{"name":"ribbon","slug":"ribbon","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎀","keywords":["ribbon","bowtie"]},"🎁":{"name":"wrapped gift","slug":"wrapped_gift","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎁","keywords":["wrapped_gift","present"]},"🎗️":{"name":"reminder ribbon","slug":"reminder_ribbon","group":"Activities","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🎗️","keywords":["reminder_ribbon","cause","awareness"]},"🎟️":{"name":"admission tickets","slug":"admission_tickets","group":"Activities","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🎟️","keywords":["admission_tickets","concert","entrance"]},"🎫":{"name":"ticket","slug":"ticket","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎫","keywords":["ticket","event","pass"]},"🎖️":{"name":"military medal","slug":"military_medal","group":"Activities","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🎖️","keywords":["military_medal","award","army"]},"🏆":{"name":"trophy","slug":"trophy","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏆","keywords":["trophy","win","ftw","ceremony"]},"🏅":{"name":"sports medal","slug":"sports_medal","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏅","keywords":["sports_medal","winning"]},"🥇":{"name":"1st place medal","slug":"1st_place_medal","group":"Activities","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥇","keywords":["1st_place_medal","first"]},"🥈":{"name":"2nd place medal","slug":"2nd_place_medal","group":"Activities","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥈","keywords":["2nd_place_medal","second"]},"🥉":{"name":"3rd place medal","slug":"3rd_place_medal","group":"Activities","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥉","keywords":["3rd_place_medal","third"]},"⚽":{"name":"soccer ball","slug":"soccer_ball","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⚽","keywords":["soccer_ball","football"]},"⚾":{"name":"baseball","slug":"baseball","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⚾","keywords":["baseball","balls"]},"🥎":{"name":"softball","slug":"softball","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥎","keywords":["softball"]},"🏀":{"name":"basketball","slug":"basketball","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏀","keywords":["basketball","NBA"]},"🏐":{"name":"volleyball","slug":"volleyball","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏐","keywords":["volleyball"]},"🏈":{"name":"american football","slug":"american_football","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏈","keywords":["american_football","NFL"]},"🏉":{"name":"rugby football","slug":"rugby_football","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏉","keywords":["rugby_football","team"]},"🎾":{"name":"tennis","slug":"tennis","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎾","keywords":["tennis"]},"🥏":{"name":"flying disc","slug":"flying_disc","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥏","keywords":["flying_disc","frisbee","ultimate"]},"🎳":{"name":"bowling","slug":"bowling","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎳","keywords":["bowling"]},"🏏":{"name":"cricket game","slug":"cricket_game","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏏","keywords":["cricket_game"]},"🏑":{"name":"field hockey","slug":"field_hockey","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏑","keywords":["field_hockey"]},"🏒":{"name":"ice hockey","slug":"ice_hockey","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏒","keywords":["ice_hockey"]},"🥍":{"name":"lacrosse","slug":"lacrosse","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥍","keywords":["lacrosse","ball","stick"]},"🏓":{"name":"ping pong","slug":"ping_pong","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏓","keywords":["ping_pong","pingpong"]},"🏸":{"name":"badminton","slug":"badminton","group":"Activities","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏸","keywords":["badminton"]},"🥊":{"name":"boxing glove","slug":"boxing_glove","group":"Activities","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥊","keywords":["boxing_glove","fighting"]},"🥋":{"name":"martial arts uniform","slug":"martial_arts_uniform","group":"Activities","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥋","keywords":["martial_arts_uniform","judo","karate","taekwondo"]},"🥅":{"name":"goal net","slug":"goal_net","group":"Activities","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥅","keywords":["goal_net"]},"⛳":{"name":"flag in hole","slug":"flag_in_hole","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛳","keywords":["flag_in_hole","flag"]},"⛸️":{"name":"ice skate","slug":"ice_skate","group":"Activities","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛸️","keywords":["ice_skate"]},"🎣":{"name":"fishing pole","slug":"fishing_pole","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎣","keywords":["fishing_pole"]},"🤿":{"name":"diving mask","slug":"diving_mask","group":"Activities","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🤿","keywords":["diving_mask"]},"🎽":{"name":"running shirt","slug":"running_shirt","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎽","keywords":["running_shirt","play","pageant"]},"🎿":{"name":"skis","slug":"skis","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎿","keywords":["skis","snow"]},"🛷":{"name":"sled","slug":"sled","group":"Activities","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🛷","keywords":["sled","sleigh","luge","toboggan"]},"🥌":{"name":"curling stone","slug":"curling_stone","group":"Activities","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🥌","keywords":["curling_stone"]},"🎯":{"name":"bullseye","slug":"bullseye","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎯","keywords":["direct_hit","bar","target","bullseye"]},"🪀":{"name":"yo-yo","slug":"yo_yo","group":"Activities","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪀","keywords":["yo_yo"]},"🪁":{"name":"kite","slug":"kite","group":"Activities","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪁","keywords":["kite"]},"🔫":{"name":"water pistol","slug":"water_pistol","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔫","keywords":["water_pistol","pistol","pistol","revolver"]},"🎱":{"name":"pool 8 ball","slug":"pool_8_ball","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎱","keywords":["pool_8_ball"]},"🔮":{"name":"crystal ball","slug":"crystal_ball","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔮","keywords":["crystal_ball","disco","fortune_teller"]},"🪄":{"name":"magic wand","slug":"magic_wand","group":"Activities","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪄","keywords":["magic_wand","magic wand","supernature"]},"🎮":{"name":"video game","slug":"video_game","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎮","keywords":["video_game","console","PS4","controller"]},"🕹️":{"name":"joystick","slug":"joystick","group":"Activities","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕹️","keywords":["joystick"]},"🎰":{"name":"slot machine","slug":"slot_machine","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎰","keywords":["slot_machine","bet","vegas","fruit machine","casino"]},"🎲":{"name":"game die","slug":"game_die","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎲","keywords":["game_die","dice","random","tabletop"]},"🧩":{"name":"puzzle piece","slug":"puzzle_piece","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧩","keywords":["puzzle_piece","interlocking","puzzle","piece"]},"🧸":{"name":"teddy bear","slug":"teddy_bear","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧸","keywords":["teddy_bear","plush"]},"🪅":{"name":"piñata","slug":"pinata","group":"Activities","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪅","keywords":["pinata","mexico"]},"🪩":{"name":"mirror ball","slug":"mirror_ball","group":"Activities","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪩","keywords":["mirror_ball","mirror ball"]},"🪆":{"name":"nesting dolls","slug":"nesting_dolls","group":"Activities","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪆","keywords":["nesting_dolls","nesting dolls","matryoshka"]},"♠️":{"name":"spade suit","slug":"spade_suit","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♠️","keywords":["spade_suit","poker"]},"♥️":{"name":"heart suit","slug":"heart_suit","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♥️","keywords":["heart_suit","cards"]},"♦️":{"name":"diamond suit","slug":"diamond_suit","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♦️","keywords":["diamond_suit","suits"]},"♣️":{"name":"club suit","slug":"club_suit","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♣️","keywords":["club_suit"]},"♟️":{"name":"chess pawn","slug":"chess_pawn","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"♟️","keywords":["chess_pawn","expendable"]},"🃏":{"name":"joker","slug":"joker","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🃏","keywords":["joker"]},"🀄":{"name":"mahjong red dragon","slug":"mahjong_red_dragon","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🀄","keywords":["mahjong_red_dragon","chinese"]},"🎴":{"name":"flower playing cards","slug":"flower_playing_cards","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎴","keywords":["flower_playing_cards"]},"🎭":{"name":"performing arts","slug":"performing_arts","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎭","keywords":["performing_arts","acting","theater"]},"🖼️":{"name":"framed picture","slug":"framed_picture","group":"Activities","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖼️","keywords":["framed_picture","photography"]},"🎨":{"name":"artist palette","slug":"artist_palette","group":"Activities","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎨","keywords":["artist_palette","design","paint","colors"]},"🧵":{"name":"thread","slug":"thread","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧵","keywords":["thread","needle","sewing","spool","string"]},"🪡":{"name":"sewing needle","slug":"sewing_needle","group":"Activities","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪡","keywords":["sewing_needle","sewing needle","stitches"]},"🧶":{"name":"yarn","slug":"yarn","group":"Activities","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧶","keywords":["yarn","crochet","knit"]},"🪢":{"name":"knot","slug":"knot","group":"Activities","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪢","keywords":["knot","rope","scout"]},"👓":{"name":"glasses","slug":"glasses","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👓","keywords":["glasses","fashion","eyesight"]},"🕶️":{"name":"sunglasses","slug":"sunglasses","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕶️","keywords":["sunglasses"]},"🥽":{"name":"goggles","slug":"goggles","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥽","keywords":["goggles","protection","safety"]},"🥼":{"name":"lab coat","slug":"lab_coat","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥼","keywords":["lab_coat","experiment"]},"🦺":{"name":"safety vest","slug":"safety_vest","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦺","keywords":["safety_vest"]},"👔":{"name":"necktie","slug":"necktie","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👔","keywords":["necktie","shirt","suitup"]},"👕":{"name":"t-shirt","slug":"t_shirt","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👕","keywords":["t_shirt","cloth","casual","tee"]},"👖":{"name":"jeans","slug":"jeans","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👖","keywords":["jeans"]},"🧣":{"name":"scarf","slug":"scarf","group":"Objects","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧣","keywords":["scarf","neck"]},"🧤":{"name":"gloves","slug":"gloves","group":"Objects","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧤","keywords":["gloves","clothes"]},"🧥":{"name":"coat","slug":"coat","group":"Objects","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧥","keywords":["coat","jacket"]},"🧦":{"name":"socks","slug":"socks","group":"Objects","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧦","keywords":["socks","stockings"]},"👗":{"name":"dress","slug":"dress","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👗","keywords":["dress"]},"👘":{"name":"kimono","slug":"kimono","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👘","keywords":["kimono"]},"🥻":{"name":"sari","slug":"sari","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🥻","keywords":["sari"]},"🩱":{"name":"one-piece swimsuit","slug":"one_piece_swimsuit","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🩱","keywords":["one_piece_swimsuit"]},"🩲":{"name":"briefs","slug":"briefs","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🩲","keywords":["briefs","clothing"]},"🩳":{"name":"shorts","slug":"shorts","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🩳","keywords":["shorts"]},"👙":{"name":"bikini","slug":"bikini","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👙","keywords":["bikini","swimming"]},"👚":{"name":"woman’s clothes","slug":"woman_s_clothes","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👚","keywords":["woman_s_clothes"]},"🪭":{"name":"folding hand fan","slug":"folding_hand_fan","group":"Objects","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪭","keywords":["folding_hand_fan","folding hand fan","flamenco"]},"👛":{"name":"purse","slug":"purse","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👛","keywords":["purse"]},"👜":{"name":"handbag","slug":"handbag","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👜","keywords":["handbag","accessory"]},"👝":{"name":"clutch bag","slug":"clutch_bag","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👝","keywords":["clutch_bag","bag"]},"🛍️":{"name":"shopping bags","slug":"shopping_bags","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛍️","keywords":["shopping_bags","buy","purchase"]},"🎒":{"name":"backpack","slug":"backpack","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎒","keywords":["backpack","backpack"]},"🩴":{"name":"thong sandal","slug":"thong_sandal","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🩴","keywords":["thong_sandal","thong sandal"]},"👞":{"name":"man’s shoe","slug":"man_s_shoe","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👞","keywords":["man_s_shoe"]},"👟":{"name":"running shoe","slug":"running_shoe","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👟","keywords":["running_shoe","shoes","sneakers"]},"🥾":{"name":"hiking boot","slug":"hiking_boot","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥾","keywords":["hiking_boot","backpacking","hiking"]},"🥿":{"name":"flat shoe","slug":"flat_shoe","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🥿","keywords":["flat_shoe","ballet","slip-on","slipper"]},"👠":{"name":"high-heeled shoe","slug":"high_heeled_shoe","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👠","keywords":["high_heeled_shoe","pumps","stiletto"]},"👡":{"name":"woman’s sandal","slug":"woman_s_sandal","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👡","keywords":["woman_s_sandal","flip flops"]},"🩰":{"name":"ballet shoes","slug":"ballet_shoes","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🩰","keywords":["ballet_shoes","dance"]},"👢":{"name":"woman’s boot","slug":"woman_s_boot","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👢","keywords":["woman_s_boot"]},"🪮":{"name":"hair pick","slug":"hair_pick","group":"Objects","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪮","keywords":["hair_pick","hair pick","afro","comb"]},"👑":{"name":"crown","slug":"crown","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👑","keywords":["crown","kod","leader","lord"]},"👒":{"name":"woman’s hat","slug":"woman_s_hat","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"👒","keywords":["woman_s_hat"]},"🎩":{"name":"top hat","slug":"top_hat","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎩","keywords":["top_hat","gentleman","classy"]},"🎓":{"name":"graduation cap","slug":"graduation_cap","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎓","keywords":["graduation_cap","college","degree","university","graduation"]},"🧢":{"name":"billed cap","slug":"billed_cap","group":"Objects","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🧢","keywords":["billed_cap","cap"]},"🪖":{"name":"military helmet","slug":"military_helmet","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪖","keywords":["military_helmet","military helmet"]},"⛑️":{"name":"rescue worker’s helmet","slug":"rescue_worker_s_helmet","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛑️","keywords":["rescue_worker_s_helmet"]},"📿":{"name":"prayer beads","slug":"prayer_beads","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"📿","keywords":["prayer_beads","dhikr","religious"]},"💄":{"name":"lipstick","slug":"lipstick","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💄","keywords":["lipstick"]},"💍":{"name":"ring","slug":"ring","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💍","keywords":["ring","propose","diamond","engagement"]},"💎":{"name":"gem stone","slug":"gem_stone","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💎","keywords":["gem_stone","ruby","jewelry"]},"🔇":{"name":"muted speaker","slug":"muted_speaker","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔇","keywords":["muted_speaker","sound"]},"🔈":{"name":"speaker low volume","slug":"speaker_low_volume","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🔈","keywords":["speaker_low_volume","volume","broadcast"]},"🔉":{"name":"speaker medium volume","slug":"speaker_medium_volume","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔉","keywords":["speaker_medium_volume","speaker"]},"🔊":{"name":"speaker high volume","slug":"speaker_high_volume","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔊","keywords":["speaker_high_volume","noise","noisy"]},"📢":{"name":"loudspeaker","slug":"loudspeaker","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📢","keywords":["loudspeaker"]},"📣":{"name":"megaphone","slug":"megaphone","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📣","keywords":["megaphone"]},"📯":{"name":"postal horn","slug":"postal_horn","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"📯","keywords":["postal_horn","instrument"]},"🔔":{"name":"bell","slug":"bell","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔔","keywords":["bell","notification","chime"]},"🔕":{"name":"bell with slash","slug":"bell_with_slash","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔕","keywords":["bell_with_slash","mute","silent"]},"🎼":{"name":"musical score","slug":"musical_score","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎼","keywords":["musical_score","treble","clef"]},"🎵":{"name":"musical note","slug":"musical_note","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎵","keywords":["musical_note","tone"]},"🎶":{"name":"musical notes","slug":"musical_notes","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎶","keywords":["musical_notes","music"]},"🎙️":{"name":"studio microphone","slug":"studio_microphone","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🎙️","keywords":["studio_microphone","sing","recording"]},"🎚️":{"name":"level slider","slug":"level_slider","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🎚️","keywords":["level_slider","scale"]},"🎛️":{"name":"control knobs","slug":"control_knobs","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🎛️","keywords":["control_knobs","dial"]},"🎤":{"name":"microphone","slug":"microphone","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎤","keywords":["microphone","PA","talkshow"]},"🎧":{"name":"headphone","slug":"headphone","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎧","keywords":["headphone","gadgets"]},"📻":{"name":"radio","slug":"radio","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📻","keywords":["radio","podcast","program"]},"🎷":{"name":"saxophone","slug":"saxophone","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎷","keywords":["saxophone","jazz","blues"]},"🪗":{"name":"accordion","slug":"accordion","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪗","keywords":["accordion"]},"🎸":{"name":"guitar","slug":"guitar","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎸","keywords":["guitar"]},"🎹":{"name":"musical keyboard","slug":"musical_keyboard","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎹","keywords":["musical_keyboard","piano"]},"🎺":{"name":"trumpet","slug":"trumpet","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎺","keywords":["trumpet","brass"]},"🎻":{"name":"violin","slug":"violin","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎻","keywords":["violin","orchestra","symphony"]},"🪕":{"name":"banjo","slug":"banjo","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪕","keywords":["banjo","instructment"]},"🥁":{"name":"drum","slug":"drum","group":"Objects","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🥁","keywords":["drum","drumsticks","snare"]},"🪘":{"name":"long drum","slug":"long_drum","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪘","keywords":["long_drum","long drum"]},"🪇":{"name":"maracas","slug":"maracas","group":"Objects","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪇","keywords":["maracas","percussion"]},"🪈":{"name":"flute","slug":"flute","group":"Objects","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪈","keywords":["flute","bamboo","pied piper"]},"📱":{"name":"mobile phone","slug":"mobile_phone","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📱","keywords":["mobile_phone","technology","apple"]},"📲":{"name":"mobile phone with arrow","slug":"mobile_phone_with_arrow","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📲","keywords":["mobile_phone_with_arrow","iphone","incoming"]},"☎️":{"name":"telephone","slug":"telephone","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"☎️","keywords":["telephone","telephone"]},"📞":{"name":"telephone receiver","slug":"telephone_receiver","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📞","keywords":["telephone_receiver"]},"📟":{"name":"pager","slug":"pager","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📟","keywords":["pager","bbcall","90s"]},"📠":{"name":"fax machine","slug":"fax_machine","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📠","keywords":["fax_machine"]},"🔋":{"name":"battery","slug":"battery","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔋","keywords":["battery","power","energy","sustain"]},"🪫":{"name":"low battery","slug":"low_battery","group":"Objects","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪫","keywords":["low_battery","low battery","drained"]},"🔌":{"name":"electric plug","slug":"electric_plug","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔌","keywords":["electric_plug","charger"]},"💻":{"name":"laptop","slug":"laptop","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💻","keywords":["laptop","laptop","screen","display","monitor"]},"🖥️":{"name":"desktop computer","slug":"desktop_computer","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖥️","keywords":["desktop_computer","computing"]},"🖨️":{"name":"printer","slug":"printer","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖨️","keywords":["printer","paper","ink"]},"⌨️":{"name":"keyboard","slug":"keyboard","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⌨️","keywords":["keyboard","type","text"]},"🖱️":{"name":"computer mouse","slug":"computer_mouse","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖱️","keywords":["computer_mouse","click"]},"🖲️":{"name":"trackball","slug":"trackball","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖲️","keywords":["trackball","trackpad"]},"💽":{"name":"computer disk","slug":"computer_disk","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💽","keywords":["computer_disk","record","data"]},"💾":{"name":"floppy disk","slug":"floppy_disk","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💾","keywords":["floppy_disk","save","80s"]},"💿":{"name":"optical disk","slug":"optical_disk","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💿","keywords":["optical_disk","disk","disc"]},"📀":{"name":"dvd","slug":"dvd","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📀","keywords":["dvd","cd"]},"🧮":{"name":"abacus","slug":"abacus","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧮","keywords":["abacus","calculation"]},"🎥":{"name":"movie camera","slug":"movie_camera","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎥","keywords":["movie_camera","film"]},"🎞️":{"name":"film frames","slug":"film_frames","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🎞️","keywords":["film_frames","movie"]},"📽️":{"name":"film projector","slug":"film_projector","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"📽️","keywords":["film_projector","video"]},"🎬":{"name":"clapper board","slug":"clapper_board","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎬","keywords":["clapper_board"]},"📺":{"name":"television","slug":"television","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📺","keywords":["television","show","television"]},"📷":{"name":"camera","slug":"camera","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📷","keywords":["camera"]},"📸":{"name":"camera with flash","slug":"camera_with_flash","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"📸","keywords":["camera_with_flash"]},"📹":{"name":"video camera","slug":"video_camera","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📹","keywords":["video_camera"]},"📼":{"name":"videocassette","slug":"videocassette","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📼","keywords":["videocassette"]},"🔍":{"name":"magnifying glass tilted left","slug":"magnifying_glass_tilted_left","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔍","keywords":["magnifying_glass_tilted_left","search","find"]},"🔎":{"name":"magnifying glass tilted right","slug":"magnifying_glass_tilted_right","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔎","keywords":["magnifying_glass_tilted_right","zoom"]},"🕯️":{"name":"candle","slug":"candle","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕯️","keywords":["candle","wax"]},"💡":{"name":"light bulb","slug":"light_bulb","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💡","keywords":["light_bulb","electricity","idea"]},"🔦":{"name":"flashlight","slug":"flashlight","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔦","keywords":["flashlight","dark","sight"]},"🏮":{"name":"red paper lantern","slug":"red_paper_lantern","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏮","keywords":["red_paper_lantern"]},"🪔":{"name":"diya lamp","slug":"diya_lamp","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪔","keywords":["diya_lamp","lighting"]},"📔":{"name":"notebook with decorative cover","slug":"notebook_with_decorative_cover","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📔","keywords":["notebook_with_decorative_cover","classroom","study"]},"📕":{"name":"closed book","slug":"closed_book","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📕","keywords":["closed_book","read"]},"📖":{"name":"open book","slug":"open_book","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📖","keywords":["open_book","book"]},"📗":{"name":"green book","slug":"green_book","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📗","keywords":["green_book","library"]},"📘":{"name":"blue book","slug":"blue_book","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📘","keywords":["blue_book","knowledge"]},"📙":{"name":"orange book","slug":"orange_book","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📙","keywords":["orange_book","textbook"]},"📚":{"name":"books","slug":"books","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📚","keywords":["books","literature"]},"📓":{"name":"notebook","slug":"notebook","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📓","keywords":["notebook","stationery"]},"📒":{"name":"ledger","slug":"ledger","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📒","keywords":["ledger","notes"]},"📃":{"name":"page with curl","slug":"page_with_curl","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📃","keywords":["page_with_curl","documents"]},"📜":{"name":"scroll","slug":"scroll","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📜","keywords":["scroll","ancient"]},"📄":{"name":"page facing up","slug":"page_facing_up","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📄","keywords":["page_facing_up","office"]},"📰":{"name":"newspaper","slug":"newspaper","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📰","keywords":["newspaper","press"]},"🗞️":{"name":"rolled-up newspaper","slug":"rolled_up_newspaper","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗞️","keywords":["rolled_up_newspaper","headline"]},"📑":{"name":"bookmark tabs","slug":"bookmark_tabs","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📑","keywords":["bookmark_tabs","favorite","order","tidy"]},"🔖":{"name":"bookmark","slug":"bookmark","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔖","keywords":["bookmark"]},"🏷️":{"name":"label","slug":"label","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏷️","keywords":["label","sale","tag"]},"💰":{"name":"money bag","slug":"money_bag","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💰","keywords":["money_bag","dollar","coins"]},"🪙":{"name":"coin","slug":"coin","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪙","keywords":["coin","money"]},"💴":{"name":"yen banknote","slug":"yen_banknote","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💴","keywords":["yen_banknote","currency"]},"💵":{"name":"dollar banknote","slug":"dollar_banknote","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💵","keywords":["dollar_banknote","bill"]},"💶":{"name":"euro banknote","slug":"euro_banknote","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"💶","keywords":["euro_banknote"]},"💷":{"name":"pound banknote","slug":"pound_banknote","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"💷","keywords":["pound_banknote","british","sterling","england"]},"💸":{"name":"money with wings","slug":"money_with_wings","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💸","keywords":["money_with_wings","bills"]},"💳":{"name":"credit card","slug":"credit_card","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💳","keywords":["credit_card"]},"🧾":{"name":"receipt","slug":"receipt","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧾","keywords":["receipt","accounting","expenses"]},"💹":{"name":"chart increasing with yen","slug":"chart_increasing_with_yen","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💹","keywords":["chart_increasing_with_yen","green-square"]},"✉️":{"name":"envelope","slug":"envelope","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✉️","keywords":["envelope","letter","postal"]},"📧":{"name":"e-mail","slug":"e_mail","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📧","keywords":["e_mail","inbox"]},"📨":{"name":"incoming envelope","slug":"incoming_envelope","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📨","keywords":["incoming_envelope"]},"📩":{"name":"envelope with arrow","slug":"envelope_with_arrow","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📩","keywords":["envelope_with_arrow"]},"📤":{"name":"outbox tray","slug":"outbox_tray","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📤","keywords":["outbox_tray"]},"📥":{"name":"inbox tray","slug":"inbox_tray","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📥","keywords":["inbox_tray"]},"📦":{"name":"package","slug":"package","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📦","keywords":["package","mail","cardboard","moving"]},"📫":{"name":"closed mailbox with raised flag","slug":"closed_mailbox_with_raised_flag","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📫","keywords":["closed_mailbox_with_raised_flag"]},"📪":{"name":"closed mailbox with lowered flag","slug":"closed_mailbox_with_lowered_flag","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📪","keywords":["closed_mailbox_with_lowered_flag"]},"📬":{"name":"open mailbox with raised flag","slug":"open_mailbox_with_raised_flag","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"📬","keywords":["open_mailbox_with_raised_flag"]},"📭":{"name":"open mailbox with lowered flag","slug":"open_mailbox_with_lowered_flag","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"📭","keywords":["open_mailbox_with_lowered_flag"]},"📮":{"name":"postbox","slug":"postbox","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📮","keywords":["postbox"]},"🗳️":{"name":"ballot box with ballot","slug":"ballot_box_with_ballot","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗳️","keywords":["ballot_box_with_ballot","election"]},"✏️":{"name":"pencil","slug":"pencil","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✏️","keywords":["pencil","write"]},"✒️":{"name":"black nib","slug":"black_nib","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✒️","keywords":["black_nib"]},"🖋️":{"name":"fountain pen","slug":"fountain_pen","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖋️","keywords":["fountain_pen","writing"]},"🖊️":{"name":"pen","slug":"pen","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖊️","keywords":["pen"]},"🖌️":{"name":"paintbrush","slug":"paintbrush","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖌️","keywords":["paintbrush","drawing"]},"🖍️":{"name":"crayon","slug":"crayon","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖍️","keywords":["crayon"]},"📝":{"name":"memo","slug":"memo","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📝","keywords":["memo"]},"💼":{"name":"briefcase","slug":"briefcase","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💼","keywords":["briefcase","job","career"]},"📁":{"name":"file folder","slug":"file_folder","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📁","keywords":["file_folder"]},"📂":{"name":"open file folder","slug":"open_file_folder","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📂","keywords":["open_file_folder","load"]},"🗂️":{"name":"card index dividers","slug":"card_index_dividers","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗂️","keywords":["card_index_dividers","organizing"]},"📅":{"name":"calendar","slug":"calendar","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📅","keywords":["calendar","calendar"]},"📆":{"name":"tear-off calendar","slug":"tear_off_calendar","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📆","keywords":["tear_off_calendar","schedule","planning"]},"🗒️":{"name":"spiral notepad","slug":"spiral_notepad","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗒️","keywords":["spiral_notepad"]},"🗓️":{"name":"spiral calendar","slug":"spiral_calendar","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗓️","keywords":["spiral_calendar","date"]},"📇":{"name":"card index","slug":"card_index","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📇","keywords":["card_index"]},"📈":{"name":"chart increasing","slug":"chart_increasing","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📈","keywords":["chart_increasing","graph","recovery","success"]},"📉":{"name":"chart decreasing","slug":"chart_decreasing","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📉","keywords":["chart_decreasing","presentation","recession","failure"]},"📊":{"name":"bar chart","slug":"bar_chart","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📊","keywords":["bar_chart","stats"]},"📋":{"name":"clipboard","slug":"clipboard","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📋","keywords":["clipboard"]},"📌":{"name":"pushpin","slug":"pushpin","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📌","keywords":["pushpin","mark"]},"📍":{"name":"round pushpin","slug":"round_pushpin","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📍","keywords":["round_pushpin","map"]},"📎":{"name":"paperclip","slug":"paperclip","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📎","keywords":["paperclip"]},"🖇️":{"name":"linked paperclips","slug":"linked_paperclips","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🖇️","keywords":["linked_paperclips"]},"📏":{"name":"straight ruler","slug":"straight_ruler","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📏","keywords":["straight_ruler","calculate","length","sketch"]},"📐":{"name":"triangular ruler","slug":"triangular_ruler","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📐","keywords":["triangular_ruler","math","architect"]},"✂️":{"name":"scissors","slug":"scissors","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✂️","keywords":["scissors"]},"🗃️":{"name":"card file box","slug":"card_file_box","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗃️","keywords":["card_file_box"]},"🗄️":{"name":"file cabinet","slug":"file_cabinet","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗄️","keywords":["file_cabinet","filing"]},"🗑️":{"name":"wastebasket","slug":"wastebasket","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗑️","keywords":["wastebasket","bin","rubbish","toss"]},"🔒":{"name":"locked","slug":"locked","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔒","keywords":["locked","security","password","padlock"]},"🔓":{"name":"unlocked","slug":"unlocked","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔓","keywords":["unlocked","privacy"]},"🔏":{"name":"locked with pen","slug":"locked_with_pen","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔏","keywords":["locked_with_pen"]},"🔐":{"name":"locked with key","slug":"locked_with_key","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔐","keywords":["locked_with_key"]},"🔑":{"name":"key","slug":"key","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔑","keywords":["key","lock"]},"🗝️":{"name":"old key","slug":"old_key","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗝️","keywords":["old_key"]},"🔨":{"name":"hammer","slug":"hammer","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔨","keywords":["hammer","tools"]},"🪓":{"name":"axe","slug":"axe","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪓","keywords":["axe","tool"]},"⛏️":{"name":"pick","slug":"pick","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛏️","keywords":["pick","dig"]},"⚒️":{"name":"hammer and pick","slug":"hammer_and_pick","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚒️","keywords":["hammer_and_pick","create"]},"🛠️":{"name":"hammer and wrench","slug":"hammer_and_wrench","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛠️","keywords":["hammer_and_wrench"]},"🗡️":{"name":"dagger","slug":"dagger","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗡️","keywords":["dagger","weapon"]},"⚔️":{"name":"crossed swords","slug":"crossed_swords","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚔️","keywords":["crossed_swords"]},"💣":{"name":"bomb","slug":"bomb","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💣","keywords":["bomb","boom","terrorism"]},"🪃":{"name":"boomerang","slug":"boomerang","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪃","keywords":["boomerang"]},"🏹":{"name":"bow and arrow","slug":"bow_and_arrow","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏹","keywords":["bow_and_arrow"]},"🛡️":{"name":"shield","slug":"shield","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛡️","keywords":["shield"]},"🪚":{"name":"carpentry saw","slug":"carpentry_saw","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪚","keywords":["carpentry_saw","carpentry saw"]},"🔧":{"name":"wrench","slug":"wrench","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔧","keywords":["wrench","diy","ikea"]},"🪛":{"name":"screwdriver","slug":"screwdriver","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪛","keywords":["screwdriver"]},"🔩":{"name":"nut and bolt","slug":"nut_and_bolt","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔩","keywords":["nut_and_bolt","handy"]},"⚙️":{"name":"gear","slug":"gear","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚙️","keywords":["gear","cog"]},"🗜️":{"name":"clamp","slug":"clamp","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🗜️","keywords":["clamp"]},"⚖️":{"name":"balance scale","slug":"balance_scale","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚖️","keywords":["balance_scale","fairness","weight"]},"🦯":{"name":"white cane","slug":"white_cane","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🦯","keywords":["white_cane","probing_cane"]},"🔗":{"name":"link","slug":"link","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔗","keywords":["link","rings","url"]},"⛓️":{"name":"chains","slug":"chains","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⛓️","keywords":["chains"]},"🪝":{"name":"hook","slug":"hook","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪝","keywords":["hook"]},"🧰":{"name":"toolbox","slug":"toolbox","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧰","keywords":["toolbox","fix","maintainer"]},"🧲":{"name":"magnet","slug":"magnet","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧲","keywords":["magnet","attraction"]},"🪜":{"name":"ladder","slug":"ladder","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪜","keywords":["ladder"]},"⚗️":{"name":"alembic","slug":"alembic","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚗️","keywords":["alembic","distilling"]},"🧪":{"name":"test tube","slug":"test_tube","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧪","keywords":["test_tube","lab"]},"🧫":{"name":"petri dish","slug":"petri_dish","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧫","keywords":["petri_dish","bacteria","biology"]},"🧬":{"name":"dna","slug":"dna","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧬","keywords":["dna","genetics","life"]},"🔬":{"name":"microscope","slug":"microscope","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔬","keywords":["microscope","laboratory","zoomin"]},"🔭":{"name":"telescope","slug":"telescope","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔭","keywords":["telescope","science","astronomy"]},"📡":{"name":"satellite antenna","slug":"satellite_antenna","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📡","keywords":["satellite_antenna","future"]},"💉":{"name":"syringe","slug":"syringe","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💉","keywords":["syringe","drugs"]},"🩸":{"name":"drop of blood","slug":"drop_of_blood","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🩸","keywords":["drop_of_blood","period","hurt","harm","wound"]},"💊":{"name":"pill","slug":"pill","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💊","keywords":["pill","pharmacy","drug"]},"🩹":{"name":"adhesive bandage","slug":"adhesive_bandage","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🩹","keywords":["adhesive_bandage","heal"]},"🩼":{"name":"crutch","slug":"crutch","group":"Objects","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🩼","keywords":["crutch","assist"]},"🩺":{"name":"stethoscope","slug":"stethoscope","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🩺","keywords":["stethoscope"]},"🩻":{"name":"x-ray","slug":"x_ray","group":"Objects","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🩻","keywords":["x_ray","x-ray"]},"🚪":{"name":"door","slug":"door","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚪","keywords":["door","entry","exit"]},"🛗":{"name":"elevator","slug":"elevator","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🛗","keywords":["elevator","lift"]},"🪞":{"name":"mirror","slug":"mirror","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪞","keywords":["mirror","reflection"]},"🪟":{"name":"window","slug":"window","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪟","keywords":["window","scenery"]},"🛏️":{"name":"bed","slug":"bed","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛏️","keywords":["bed"]},"🛋️":{"name":"couch and lamp","slug":"couch_and_lamp","group":"Objects","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🛋️","keywords":["couch_and_lamp","chill"]},"🪑":{"name":"chair","slug":"chair","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪑","keywords":["chair","furniture"]},"🚽":{"name":"toilet","slug":"toilet","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚽","keywords":["toilet","wc","washroom","potty"]},"🪠":{"name":"plunger","slug":"plunger","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪠","keywords":["plunger"]},"🚿":{"name":"shower","slug":"shower","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚿","keywords":["shower","bathroom"]},"🛁":{"name":"bathtub","slug":"bathtub","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛁","keywords":["bathtub"]},"🪤":{"name":"mouse trap","slug":"mouse_trap","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪤","keywords":["mouse_trap","mouse trap"]},"🪒":{"name":"razor","slug":"razor","group":"Objects","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🪒","keywords":["razor"]},"🧴":{"name":"lotion bottle","slug":"lotion_bottle","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧴","keywords":["lotion_bottle","moisturizer","sunscreen"]},"🧷":{"name":"safety pin","slug":"safety_pin","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧷","keywords":["safety_pin","diaper"]},"🧹":{"name":"broom","slug":"broom","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧹","keywords":["broom","cleaning","sweeping"]},"🧺":{"name":"basket","slug":"basket","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧺","keywords":["basket","laundry"]},"🧻":{"name":"roll of paper","slug":"roll_of_paper","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧻","keywords":["roll_of_paper","roll"]},"🪣":{"name":"bucket","slug":"bucket","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪣","keywords":["bucket"]},"🧼":{"name":"soap","slug":"soap","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧼","keywords":["soap","bathing","lather"]},"🫧":{"name":"bubbles","slug":"bubbles","group":"Objects","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🫧","keywords":["bubbles","carbonation","sparkling"]},"🪥":{"name":"toothbrush","slug":"toothbrush","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪥","keywords":["toothbrush","hygiene","dental"]},"🧽":{"name":"sponge","slug":"sponge","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧽","keywords":["sponge","absorbing","porous"]},"🧯":{"name":"fire extinguisher","slug":"fire_extinguisher","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧯","keywords":["fire_extinguisher","quench"]},"🛒":{"name":"shopping cart","slug":"shopping_cart","group":"Objects","emoji_version":"3.0","unicode_version":"3.0","skin_tone_support":false,"char":"🛒","keywords":["shopping_cart","trolley"]},"🚬":{"name":"cigarette","slug":"cigarette","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚬","keywords":["cigarette","kills","tobacco","cigarette","joint"]},"⚰️":{"name":"coffin","slug":"coffin","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚰️","keywords":["coffin","die","graveyard","cemetery","casket","funeral"]},"🪦":{"name":"headstone","slug":"headstone","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪦","keywords":["headstone","death","grave"]},"⚱️":{"name":"funeral urn","slug":"funeral_urn","group":"Objects","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚱️","keywords":["funeral_urn","rip","ashes"]},"🧿":{"name":"nazar amulet","slug":"nazar_amulet","group":"Objects","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🧿","keywords":["nazar_amulet","bead","charm"]},"🪬":{"name":"hamsa","slug":"hamsa","group":"Objects","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪬","keywords":["hamsa"]},"🗿":{"name":"moai","slug":"moai","group":"Objects","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🗿","keywords":["moai","easter island","moai"]},"🪧":{"name":"placard","slug":"placard","group":"Objects","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🪧","keywords":["placard","announcement"]},"🪪":{"name":"identification card","slug":"identification_card","group":"Objects","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🪪","keywords":["identification_card","identification card","document"]},"🏧":{"name":"ATM sign","slug":"atm_sign","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏧","keywords":["atm_sign","cash"]},"🚮":{"name":"litter in bin sign","slug":"litter_in_bin_sign","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚮","keywords":["litter_in_bin_sign","sign"]},"🚰":{"name":"potable water","slug":"potable_water","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚰","keywords":["potable_water","liquid"]},"♿":{"name":"wheelchair symbol","slug":"wheelchair_symbol","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♿","keywords":["wheelchair_symbol","disabled"]},"🚹":{"name":"men’s room","slug":"men_s_room","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚹","keywords":["men_s_room","gender"]},"🚺":{"name":"women’s room","slug":"women_s_room","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚺","keywords":["women_s_room","loo"]},"🚻":{"name":"restroom","slug":"restroom","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚻","keywords":["restroom","refresh"]},"🚼":{"name":"baby symbol","slug":"baby_symbol","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚼","keywords":["baby_symbol","orange-square"]},"🚾":{"name":"water closet","slug":"water_closet","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚾","keywords":["water_closet"]},"🛂":{"name":"passport control","slug":"passport_control","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛂","keywords":["passport_control","custom"]},"🛃":{"name":"customs","slug":"customs","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛃","keywords":["customs","passport","border"]},"🛄":{"name":"baggage claim","slug":"baggage_claim","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛄","keywords":["baggage_claim"]},"🛅":{"name":"left luggage","slug":"left_luggage","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛅","keywords":["left_luggage"]},"⚠️":{"name":"warning","slug":"warning","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⚠️","keywords":["warning","exclamation","error","problem","issue"]},"🚸":{"name":"children crossing","slug":"children_crossing","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚸","keywords":["children_crossing","yellow-diamond"]},"⛔":{"name":"no entry","slug":"no_entry","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛔","keywords":["no_entry","limit","denied"]},"🚫":{"name":"prohibited","slug":"prohibited","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚫","keywords":["prohibited","forbid","disallow"]},"🚳":{"name":"no bicycles","slug":"no_bicycles","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚳","keywords":["no_bicycles","cyclist"]},"🚭":{"name":"no smoking","slug":"no_smoking","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚭","keywords":["no_smoking"]},"🚯":{"name":"no littering","slug":"no_littering","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚯","keywords":["no_littering","trash","garbage"]},"🚱":{"name":"non-potable water","slug":"non_potable_water","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚱","keywords":["non_potable_water","faucet","tap"]},"🚷":{"name":"no pedestrians","slug":"no_pedestrians","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🚷","keywords":["no_pedestrians","rules","crossing"]},"📵":{"name":"no mobile phones","slug":"no_mobile_phones","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"📵","keywords":["no_mobile_phones","circle"]},"🔞":{"name":"no one under eighteen","slug":"no_one_under_eighteen","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔞","keywords":["no_one_under_eighteen","18","minor"]},"☢️":{"name":"radioactive","slug":"radioactive","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"☢️","keywords":["radioactive","nuclear"]},"☣️":{"name":"biohazard","slug":"biohazard","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"☣️","keywords":["biohazard","danger"]},"⬆️":{"name":"up arrow","slug":"up_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⬆️","keywords":["up_arrow","continue"]},"↗️":{"name":"up-right arrow","slug":"up_right_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↗️","keywords":["up_right_arrow","point","northeast"]},"➡️":{"name":"right arrow","slug":"right_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"➡️","keywords":["right_arrow","next"]},"↘️":{"name":"down-right arrow","slug":"down_right_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↘️","keywords":["down_right_arrow","diagonal","southeast"]},"⬇️":{"name":"down arrow","slug":"down_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⬇️","keywords":["down_arrow","bottom"]},"↙️":{"name":"down-left arrow","slug":"down_left_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↙️","keywords":["down_left_arrow","southwest"]},"⬅️":{"name":"left arrow","slug":"left_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⬅️","keywords":["left_arrow","previous"]},"↖️":{"name":"up-left arrow","slug":"up_left_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↖️","keywords":["up_left_arrow","northwest"]},"↕️":{"name":"up-down arrow","slug":"up_down_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↕️","keywords":["up_down_arrow","way","vertical"]},"↔️":{"name":"left-right arrow","slug":"left_right_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↔️","keywords":["left_right_arrow","shape","horizontal","sideways"]},"↩️":{"name":"right arrow curving left","slug":"right_arrow_curving_left","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↩️","keywords":["right_arrow_curving_left","back","undo","enter"]},"↪️":{"name":"left arrow curving right","slug":"left_arrow_curving_right","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"↪️","keywords":["left_arrow_curving_right","return","rotate"]},"⤴️":{"name":"right arrow curving up","slug":"right_arrow_curving_up","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⤴️","keywords":["right_arrow_curving_up","top"]},"⤵️":{"name":"right arrow curving down","slug":"right_arrow_curving_down","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⤵️","keywords":["right_arrow_curving_down"]},"🔃":{"name":"clockwise vertical arrows","slug":"clockwise_vertical_arrows","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔃","keywords":["clockwise_vertical_arrows","sync","repeat"]},"🔄":{"name":"counterclockwise arrows button","slug":"counterclockwise_arrows_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔄","keywords":["counterclockwise_arrows_button","cycle"]},"🔙":{"name":"BACK arrow","slug":"back_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔙","keywords":["back_arrow","arrow"]},"🔚":{"name":"END arrow","slug":"end_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔚","keywords":["end_arrow"]},"🔛":{"name":"ON! arrow","slug":"on_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔛","keywords":["on_arrow"]},"🔜":{"name":"SOON arrow","slug":"soon_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔜","keywords":["soon_arrow"]},"🔝":{"name":"TOP arrow","slug":"top_arrow","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔝","keywords":["top_arrow"]},"🛐":{"name":"place of worship","slug":"place_of_worship","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🛐","keywords":["place_of_worship"]},"⚛️":{"name":"atom symbol","slug":"atom_symbol","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚛️","keywords":["atom_symbol","physics"]},"🕉️":{"name":"om","slug":"om","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🕉️","keywords":["om","buddhism","jainism"]},"✡️":{"name":"star of David","slug":"star_of_david","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"✡️","keywords":["star_of_david"]},"☸️":{"name":"wheel of dharma","slug":"wheel_of_dharma","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"☸️","keywords":["wheel_of_dharma","sikhism"]},"☯️":{"name":"yin yang","slug":"yin_yang","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"☯️","keywords":["yin_yang","balance"]},"✝️":{"name":"latin cross","slug":"latin_cross","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"✝️","keywords":["latin_cross","christianity"]},"☦️":{"name":"orthodox cross","slug":"orthodox_cross","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"☦️","keywords":["orthodox_cross","suppedaneum"]},"☪️":{"name":"star and crescent","slug":"star_and_crescent","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"☪️","keywords":["star_and_crescent"]},"☮️":{"name":"peace symbol","slug":"peace_symbol","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"☮️","keywords":["peace_symbol","hippie"]},"🕎":{"name":"menorah","slug":"menorah","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🕎","keywords":["menorah","hanukkah","candles"]},"🔯":{"name":"dotted six-pointed star","slug":"dotted_six_pointed_star","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔯","keywords":["dotted_six_pointed_star","jewish","hexagram"]},"🪯":{"name":"khanda","slug":"khanda","group":"Symbols","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🪯","keywords":["khanda","Sikhism"]},"♈":{"name":"Aries","slug":"aries","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♈","keywords":["aries","zodiac"]},"♉":{"name":"Taurus","slug":"taurus","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♉","keywords":["taurus","astrology"]},"♊":{"name":"Gemini","slug":"gemini","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♊","keywords":["gemini"]},"♋":{"name":"Cancer","slug":"cancer","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♋","keywords":["cancer"]},"♌":{"name":"Leo","slug":"leo","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♌","keywords":["leo"]},"♍":{"name":"Virgo","slug":"virgo","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♍","keywords":["virgo"]},"♎":{"name":"Libra","slug":"libra","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♎","keywords":["libra"]},"♏":{"name":"Scorpio","slug":"scorpio","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♏","keywords":["scorpio","scorpio"]},"♐":{"name":"Sagittarius","slug":"sagittarius","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♐","keywords":["sagittarius"]},"♑":{"name":"Capricorn","slug":"capricorn","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♑","keywords":["capricorn"]},"♒":{"name":"Aquarius","slug":"aquarius","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♒","keywords":["aquarius"]},"♓":{"name":"Pisces","slug":"pisces","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♓","keywords":["pisces"]},"⛎":{"name":"Ophiuchus","slug":"ophiuchus","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⛎","keywords":["ophiuchus","constellation"]},"🔀":{"name":"shuffle tracks button","slug":"shuffle_tracks_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔀","keywords":["shuffle_tracks_button","shuffle"]},"🔁":{"name":"repeat button","slug":"repeat_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔁","keywords":["repeat_button","loop"]},"🔂":{"name":"repeat single button","slug":"repeat_single_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔂","keywords":["repeat_single_button"]},"▶️":{"name":"play button","slug":"play_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"▶️","keywords":["play_button"]},"⏩":{"name":"fast-forward button","slug":"fast_forward_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⏩","keywords":["fast_forward_button"]},"⏭️":{"name":"next track button","slug":"next_track_button","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⏭️","keywords":["next_track_button","forward"]},"⏯️":{"name":"play or pause button","slug":"play_or_pause_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⏯️","keywords":["play_or_pause_button","pause"]},"◀️":{"name":"reverse button","slug":"reverse_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"◀️","keywords":["reverse_button"]},"⏪":{"name":"fast reverse button","slug":"fast_reverse_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⏪","keywords":["fast_reverse_button"]},"⏮️":{"name":"last track button","slug":"last_track_button","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⏮️","keywords":["last_track_button","backward"]},"🔼":{"name":"upwards button","slug":"upwards_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔼","keywords":["upwards_button","triangle"]},"⏫":{"name":"fast up button","slug":"fast_up_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⏫","keywords":["fast_up_button"]},"🔽":{"name":"downwards button","slug":"downwards_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔽","keywords":["downwards_button"]},"⏬":{"name":"fast down button","slug":"fast_down_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⏬","keywords":["fast_down_button"]},"⏸️":{"name":"pause button","slug":"pause_button","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⏸️","keywords":["pause_button"]},"⏹️":{"name":"stop button","slug":"stop_button","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⏹️","keywords":["stop_button"]},"⏺️":{"name":"record button","slug":"record_button","group":"Symbols","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"⏺️","keywords":["record_button"]},"⏏️":{"name":"eject button","slug":"eject_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⏏️","keywords":["eject_button"]},"🎦":{"name":"cinema","slug":"cinema","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎦","keywords":["cinema","curtain","stage"]},"🔅":{"name":"dim button","slug":"dim_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔅","keywords":["dim_button","afternoon"]},"🔆":{"name":"bright button","slug":"bright_button","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🔆","keywords":["bright_button"]},"📶":{"name":"antenna bars","slug":"antenna_bars","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📶","keywords":["antenna_bars","reception","connection","bluetooth","bars"]},"🛜":{"name":"wireless","slug":"wireless","group":"Symbols","emoji_version":"15.0","unicode_version":"15.0","skin_tone_support":false,"char":"🛜","keywords":["wireless","wifi","contactless"]},"📳":{"name":"vibration mode","slug":"vibration_mode","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📳","keywords":["vibration_mode"]},"📴":{"name":"mobile phone off","slug":"mobile_phone_off","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📴","keywords":["mobile_phone_off"]},"♀️":{"name":"female sign","slug":"female_sign","group":"Symbols","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"♀️","keywords":["female_sign"]},"♂️":{"name":"male sign","slug":"male_sign","group":"Symbols","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"♂️","keywords":["male_sign"]},"⚧️":{"name":"transgender symbol","slug":"transgender_symbol","group":"Symbols","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"⚧️","keywords":["transgender_symbol","transgender symbol","lgbtq"]},"✖️":{"name":"multiply","slug":"multiply","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✖️","keywords":["multiply","multiplication_sign"]},"➕":{"name":"plus","slug":"plus","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"➕","keywords":["plus","plus_sign","addition","more","increase"]},"➖":{"name":"minus","slug":"minus","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"➖","keywords":["minus","minus_sign","subtract","less"]},"➗":{"name":"divide","slug":"divide","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"➗","keywords":["division_sign","divide"]},"🟰":{"name":"heavy equals sign","slug":"heavy_equals_sign","group":"Symbols","emoji_version":"14.0","unicode_version":"14.0","skin_tone_support":false,"char":"🟰","keywords":["heavy_equals_sign","heavy equals sign"]},"♾️":{"name":"infinity","slug":"infinity","group":"Symbols","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"♾️","keywords":["infinity","forever"]},"‼️":{"name":"double exclamation mark","slug":"double_exclamation_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"‼️","keywords":["double_exclamation_mark"]},"⁉️":{"name":"exclamation question mark","slug":"exclamation_question_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⁉️","keywords":["exclamation_question_mark","wat"]},"❓":{"name":"red question mark","slug":"red_question_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❓","keywords":["red_question_mark","question_mark"]},"❔":{"name":"white question mark","slug":"white_question_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❔","keywords":["white_question_mark","doubts"]},"❕":{"name":"white exclamation mark","slug":"white_exclamation_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❕","keywords":["white_exclamation_mark","punctuation"]},"❗":{"name":"red exclamation mark","slug":"red_exclamation_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❗","keywords":["red_exclamation_mark","exclamation_mark","heavy_exclamation_mark"]},"〰️":{"name":"wavy dash","slug":"wavy_dash","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"〰️","keywords":["wavy_dash","draw","line","moustache"]},"💱":{"name":"currency exchange","slug":"currency_exchange","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💱","keywords":["currency_exchange","travel"]},"💲":{"name":"heavy dollar sign","slug":"heavy_dollar_sign","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💲","keywords":["heavy_dollar_sign","payment","buck"]},"⚕️":{"name":"medical symbol","slug":"medical_symbol","group":"Symbols","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"⚕️","keywords":["medical_symbol"]},"♻️":{"name":"recycling symbol","slug":"recycling_symbol","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"♻️","keywords":["recycling_symbol"]},"⚜️":{"name":"fleur-de-lis","slug":"fleur_de_lis","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"⚜️","keywords":["fleur_de_lis","decorative"]},"🔱":{"name":"trident emblem","slug":"trident_emblem","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔱","keywords":["trident_emblem","spear"]},"📛":{"name":"name badge","slug":"name_badge","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"📛","keywords":["name_badge"]},"🔰":{"name":"Japanese symbol for beginner","slug":"japanese_symbol_for_beginner","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔰","keywords":["japanese_symbol_for_beginner","badge"]},"⭕":{"name":"hollow red circle","slug":"hollow_red_circle","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⭕","keywords":["hollow_red_circle","round"]},"✅":{"name":"check mark button","slug":"check_mark_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✅","keywords":["check_mark_button","vote","answer"]},"☑️":{"name":"check box with check","slug":"check_box_with_check","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"☑️","keywords":["check_box_with_check","ok","confirm","black-square"]},"✔️":{"name":"check mark","slug":"check_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✔️","keywords":["check_mark","nike","tick"]},"❌":{"name":"cross mark","slug":"cross_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❌","keywords":["cross_mark","delete","remove","cancel"]},"❎":{"name":"cross mark button","slug":"cross_mark_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❎","keywords":["cross_mark_button","x","deny"]},"➰":{"name":"curly loop","slug":"curly_loop","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"➰","keywords":["curly_loop","scribble","squiggle"]},"➿":{"name":"double curly loop","slug":"double_curly_loop","group":"Symbols","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"➿","keywords":["double_curly_loop","tape","cassette"]},"〽️":{"name":"part alternation mark","slug":"part_alternation_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"〽️","keywords":["part_alternation_mark","economics"]},"✳️":{"name":"eight-spoked asterisk","slug":"eight_spoked_asterisk","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✳️","keywords":["eight_spoked_asterisk"]},"✴️":{"name":"eight-pointed star","slug":"eight_pointed_star","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"✴️","keywords":["eight_pointed_star","polygon"]},"❇️":{"name":"sparkle","slug":"sparkle","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"❇️","keywords":["sparkle"]},"©️":{"name":"copyright","slug":"copyright","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"©️","keywords":["copyright","ip","license"]},"®️":{"name":"registered","slug":"registered","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"®️","keywords":["registered","alphabet"]},"™️":{"name":"trade mark","slug":"trade_mark","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"™️","keywords":["trade_mark","trademark","brand"]},"#️⃣":{"name":"keycap #","slug":"keycap_number_sign","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"#️⃣","keywords":["keycap_number_sign","keycap_","symbol","twitter"]},"*️⃣":{"name":"keycap *","slug":"keycap_asterisk","group":"Symbols","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"*️⃣","keywords":["keycap_asterisk","keycap"]},"0️⃣":{"name":"keycap 0","slug":"keycap_0","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"0️⃣","keywords":["keycap_0","0","null"]},"1️⃣":{"name":"keycap 1","slug":"keycap_1","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"1️⃣","keywords":["keycap_1"]},"2️⃣":{"name":"keycap 2","slug":"keycap_2","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"2️⃣","keywords":["keycap_2","numbers"]},"3️⃣":{"name":"keycap 3","slug":"keycap_3","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"3️⃣","keywords":["keycap_3","prime"]},"4️⃣":{"name":"keycap 4","slug":"keycap_4","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"4️⃣","keywords":["keycap_4"]},"5️⃣":{"name":"keycap 5","slug":"keycap_5","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"5️⃣","keywords":["keycap_5"]},"6️⃣":{"name":"keycap 6","slug":"keycap_6","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"6️⃣","keywords":["keycap_6"]},"7️⃣":{"name":"keycap 7","slug":"keycap_7","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"7️⃣","keywords":["keycap_7"]},"8️⃣":{"name":"keycap 8","slug":"keycap_8","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"8️⃣","keywords":["keycap_8"]},"9️⃣":{"name":"keycap 9","slug":"keycap_9","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"9️⃣","keywords":["keycap_9"]},"🔟":{"name":"keycap 10","slug":"keycap_10","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔟","keywords":["keycap_10"]},"🔠":{"name":"input latin uppercase","slug":"input_latin_uppercase","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔠","keywords":["input_latin_uppercase"]},"🔡":{"name":"input latin lowercase","slug":"input_latin_lowercase","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔡","keywords":["input_latin_lowercase"]},"🔢":{"name":"input numbers","slug":"input_numbers","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔢","keywords":["input_numbers","1234"]},"🔣":{"name":"input symbols","slug":"input_symbols","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔣","keywords":["input_symbols","note","ampersand","percent","glyphs","characters"]},"🔤":{"name":"input latin letters","slug":"input_latin_letters","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔤","keywords":["input_latin_letters"]},"🅰️":{"name":"A button (blood type)","slug":"a_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🅰️","keywords":["a_button","red-square"]},"🆎":{"name":"AB button (blood type)","slug":"ab_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆎","keywords":["ab_button"]},"🅱️":{"name":"B button (blood type)","slug":"b_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🅱️","keywords":["b_button"]},"🆑":{"name":"CL button","slug":"cl_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆑","keywords":["cl_button"]},"🆒":{"name":"COOL button","slug":"cool_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆒","keywords":["cool_button"]},"🆓":{"name":"FREE button","slug":"free_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆓","keywords":["free_button"]},"ℹ️":{"name":"information","slug":"information","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"ℹ️","keywords":["information"]},"🆔":{"name":"ID button","slug":"id_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆔","keywords":["id_button"]},"Ⓜ️":{"name":"circled M","slug":"circled_m","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"Ⓜ️","keywords":["circled_m","blue-circle"]},"🆕":{"name":"NEW button","slug":"new_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆕","keywords":["new_button","start"]},"🆖":{"name":"NG button","slug":"ng_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆖","keywords":["ng_button","icon"]},"🅾️":{"name":"O button (blood type)","slug":"o_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🅾️","keywords":["o_button"]},"🆗":{"name":"OK button","slug":"ok_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆗","keywords":["ok_button"]},"🅿️":{"name":"P button","slug":"p_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🅿️","keywords":["p_button"]},"🆘":{"name":"SOS button","slug":"sos_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆘","keywords":["sos_button","help"]},"🆙":{"name":"UP! button","slug":"up_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆙","keywords":["up_button","above","high"]},"🆚":{"name":"VS button","slug":"vs_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🆚","keywords":["vs_button"]},"🈁":{"name":"Japanese “here” button","slug":"japanese_here_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈁","keywords":["japanese_here_button","here","destination"]},"🈂️":{"name":"Japanese “service charge” button","slug":"japanese_service_charge_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈂️","keywords":["japanese_service_charge_button","katakana"]},"🈷️":{"name":"Japanese “monthly amount” button","slug":"japanese_monthly_amount_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈷️","keywords":["japanese_monthly_amount_button","month","moon"]},"🈶":{"name":"Japanese “not free of charge” button","slug":"japanese_not_free_of_charge_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈶","keywords":["japanese_not_free_of_charge_button","have"]},"🈯":{"name":"Japanese “reserved” button","slug":"japanese_reserved_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈯","keywords":["japanese_reserved_button"]},"🉐":{"name":"Japanese “bargain” button","slug":"japanese_bargain_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🉐","keywords":["japanese_bargain_button","kanji","obtain","get"]},"🈹":{"name":"Japanese “discount” button","slug":"japanese_discount_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈹","keywords":["japanese_discount_button","pink-square"]},"🈚":{"name":"Japanese “free of charge” button","slug":"japanese_free_of_charge_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈚","keywords":["japanese_free_of_charge_button","nothing"]},"🈲":{"name":"Japanese “prohibited” button","slug":"japanese_prohibited_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈲","keywords":["japanese_prohibited_button","forbidden","restricted"]},"🉑":{"name":"Japanese “acceptable” button","slug":"japanese_acceptable_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🉑","keywords":["japanese_acceptable_button","orange-circle"]},"🈸":{"name":"Japanese “application” button","slug":"japanese_application_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈸","keywords":["japanese_application_button"]},"🈴":{"name":"Japanese “passing grade” button","slug":"japanese_passing_grade_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈴","keywords":["japanese_passing_grade_button","join"]},"🈳":{"name":"Japanese “vacancy” button","slug":"japanese_vacancy_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈳","keywords":["japanese_vacancy_button","empty"]},"㊗️":{"name":"Japanese “congratulations” button","slug":"japanese_congratulations_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"㊗️","keywords":["japanese_congratulations_button","red-circle"]},"㊙️":{"name":"Japanese “secret” button","slug":"japanese_secret_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"㊙️","keywords":["japanese_secret_button","sshh"]},"🈺":{"name":"Japanese “open for business” button","slug":"japanese_open_for_business_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈺","keywords":["japanese_open_for_business_button","opening hours"]},"🈵":{"name":"Japanese “no vacancy” button","slug":"japanese_no_vacancy_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🈵","keywords":["japanese_no_vacancy_button","full"]},"🔴":{"name":"red circle","slug":"red_circle","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔴","keywords":["red_circle"]},"🟠":{"name":"orange circle","slug":"orange_circle","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟠","keywords":["orange_circle"]},"🟡":{"name":"yellow circle","slug":"yellow_circle","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟡","keywords":["yellow_circle"]},"🟢":{"name":"green circle","slug":"green_circle","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟢","keywords":["green_circle"]},"🔵":{"name":"blue circle","slug":"blue_circle","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔵","keywords":["blue_circle","button"]},"🟣":{"name":"purple circle","slug":"purple_circle","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟣","keywords":["purple_circle"]},"🟤":{"name":"brown circle","slug":"brown_circle","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟤","keywords":["brown_circle"]},"⚫":{"name":"black circle","slug":"black_circle","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⚫","keywords":["black_circle"]},"⚪":{"name":"white circle","slug":"white_circle","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⚪","keywords":["white_circle"]},"🟥":{"name":"red square","slug":"red_square","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟥","keywords":["red_square"]},"🟧":{"name":"orange square","slug":"orange_square","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟧","keywords":["orange_square"]},"🟨":{"name":"yellow square","slug":"yellow_square","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟨","keywords":["yellow_square"]},"🟩":{"name":"green square","slug":"green_square","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟩","keywords":["green_square"]},"🟦":{"name":"blue square","slug":"blue_square","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟦","keywords":["blue_square"]},"🟪":{"name":"purple square","slug":"purple_square","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟪","keywords":["purple_square"]},"🟫":{"name":"brown square","slug":"brown_square","group":"Symbols","emoji_version":"12.0","unicode_version":"12.0","skin_tone_support":false,"char":"🟫","keywords":["brown_square"]},"⬛":{"name":"black large square","slug":"black_large_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⬛","keywords":["black_large_square"]},"⬜":{"name":"white large square","slug":"white_large_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"⬜","keywords":["white_large_square"]},"◼️":{"name":"black medium square","slug":"black_medium_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"◼️","keywords":["black_medium_square"]},"◻️":{"name":"white medium square","slug":"white_medium_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"◻️","keywords":["white_medium_square"]},"◾":{"name":"black medium-small square","slug":"black_medium_small_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"◾","keywords":["black_medium_small_square"]},"◽":{"name":"white medium-small square","slug":"white_medium_small_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"◽","keywords":["white_medium_small_square"]},"▪️":{"name":"black small square","slug":"black_small_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"▪️","keywords":["black_small_square"]},"▫️":{"name":"white small square","slug":"white_small_square","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"▫️","keywords":["white_small_square"]},"🔶":{"name":"large orange diamond","slug":"large_orange_diamond","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔶","keywords":["large_orange_diamond","jewel"]},"🔷":{"name":"large blue diamond","slug":"large_blue_diamond","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔷","keywords":["large_blue_diamond"]},"🔸":{"name":"small orange diamond","slug":"small_orange_diamond","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔸","keywords":["small_orange_diamond"]},"🔹":{"name":"small blue diamond","slug":"small_blue_diamond","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔹","keywords":["small_blue_diamond"]},"🔺":{"name":"red triangle pointed up","slug":"red_triangle_pointed_up","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔺","keywords":["red_triangle_pointed_up"]},"🔻":{"name":"red triangle pointed down","slug":"red_triangle_pointed_down","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔻","keywords":["red_triangle_pointed_down"]},"💠":{"name":"diamond with a dot","slug":"diamond_with_a_dot","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"💠","keywords":["diamond_with_a_dot","gem","crystal","fancy"]},"🔘":{"name":"radio button","slug":"radio_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔘","keywords":["radio_button","input"]},"🔳":{"name":"white square button","slug":"white_square_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔳","keywords":["white_square_button"]},"🔲":{"name":"black square button","slug":"black_square_button","group":"Symbols","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🔲","keywords":["black_square_button","frame"]},"🏁":{"name":"chequered flag","slug":"chequered_flag","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🏁","keywords":["chequered_flag","contest","finishline","gokart"]},"🚩":{"name":"triangular flag","slug":"triangular_flag","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🚩","keywords":["triangular_flag","milestone"]},"🎌":{"name":"crossed flags","slug":"crossed_flags","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🎌","keywords":["crossed_flags","country"]},"🏴":{"name":"black flag","slug":"black_flag","group":"Flags","emoji_version":"1.0","unicode_version":"1.0","skin_tone_support":false,"char":"🏴","keywords":["black_flag","pirate"]},"🏳️":{"name":"white flag","slug":"white_flag","group":"Flags","emoji_version":"0.7","unicode_version":"0.7","skin_tone_support":false,"char":"🏳️","keywords":["white_flag","losing","loser","lost","surrender","give up"]},"🏳️‍🌈":{"name":"rainbow flag","slug":"rainbow_flag","group":"Flags","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"🏳️‍🌈","keywords":["rainbow_flag","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"]},"🏳️‍⚧️":{"name":"transgender flag","slug":"transgender_flag","group":"Flags","emoji_version":"13.0","unicode_version":"13.0","skin_tone_support":false,"char":"🏳️‍⚧️","keywords":["transgender_flag","transgender flag"]},"🏴‍☠️":{"name":"pirate flag","slug":"pirate_flag","group":"Flags","emoji_version":"11.0","unicode_version":"11.0","skin_tone_support":false,"char":"🏴‍☠️","keywords":["pirate_flag","crossbones"]},"🇦🇨":{"name":"flag Ascension Island","slug":"flag_ascension_island","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇨","keywords":["flag_ascension_island"]},"🇦🇩":{"name":"flag Andorra","slug":"flag_andorra","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇩","keywords":["flag_andorra","ad","andorra"]},"🇦🇪":{"name":"flag United Arab Emirates","slug":"flag_united_arab_emirates","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇪","keywords":["flag_united_arab_emirates","united","arab","emirates","united_arab_emirates"]},"🇦🇫":{"name":"flag Afghanistan","slug":"flag_afghanistan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇫","keywords":["flag_afghanistan","af","afghanistan"]},"🇦🇬":{"name":"flag Antigua & Barbuda","slug":"flag_antigua_barbuda","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇬","keywords":["flag_antigua_barbuda","antigua","barbuda","antigua_barbuda"]},"🇦🇮":{"name":"flag Anguilla","slug":"flag_anguilla","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇮","keywords":["flag_anguilla","ai","anguilla"]},"🇦🇱":{"name":"flag Albania","slug":"flag_albania","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇱","keywords":["flag_albania","al","albania"]},"🇦🇲":{"name":"flag Armenia","slug":"flag_armenia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇲","keywords":["flag_armenia","am","armenia"]},"🇦🇴":{"name":"flag Angola","slug":"flag_angola","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇴","keywords":["flag_angola","ao","angola"]},"🇦🇶":{"name":"flag Antarctica","slug":"flag_antarctica","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇶","keywords":["flag_antarctica","aq","antarctica"]},"🇦🇷":{"name":"flag Argentina","slug":"flag_argentina","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇷","keywords":["flag_argentina","ar","argentina"]},"🇦🇸":{"name":"flag American Samoa","slug":"flag_american_samoa","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇸","keywords":["flag_american_samoa","ws","american_samoa"]},"🇦🇹":{"name":"flag Austria","slug":"flag_austria","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇹","keywords":["flag_austria","at","austria"]},"🇦🇺":{"name":"flag Australia","slug":"flag_australia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇺","keywords":["flag_australia","au"]},"🇦🇼":{"name":"flag Aruba","slug":"flag_aruba","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇼","keywords":["flag_aruba","aruba"]},"🇦🇽":{"name":"flag Åland Islands","slug":"flag_aland_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇽","keywords":["flag_aland_islands","Åland","aland_islands"]},"🇦🇿":{"name":"flag Azerbaijan","slug":"flag_azerbaijan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇦🇿","keywords":["flag_azerbaijan","az","azerbaijan"]},"🇧🇦":{"name":"flag Bosnia & Herzegovina","slug":"flag_bosnia_herzegovina","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇦","keywords":["flag_bosnia_herzegovina","bosnia","herzegovina","bosnia_herzegovina"]},"🇧🇧":{"name":"flag Barbados","slug":"flag_barbados","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇧","keywords":["flag_barbados","bb","barbados"]},"🇧🇩":{"name":"flag Bangladesh","slug":"flag_bangladesh","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇩","keywords":["flag_bangladesh","bd","bangladesh"]},"🇧🇪":{"name":"flag Belgium","slug":"flag_belgium","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇪","keywords":["flag_belgium","be","belgium"]},"🇧🇫":{"name":"flag Burkina Faso","slug":"flag_burkina_faso","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇫","keywords":["flag_burkina_faso","burkina","faso","burkina_faso"]},"🇧🇬":{"name":"flag Bulgaria","slug":"flag_bulgaria","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇬","keywords":["flag_bulgaria","bg","bulgaria"]},"🇧🇭":{"name":"flag Bahrain","slug":"flag_bahrain","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇭","keywords":["flag_bahrain","bh","bahrain"]},"🇧🇮":{"name":"flag Burundi","slug":"flag_burundi","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇮","keywords":["flag_burundi","bi","burundi"]},"🇧🇯":{"name":"flag Benin","slug":"flag_benin","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇯","keywords":["flag_benin","bj","benin"]},"🇧🇱":{"name":"flag St. Barthélemy","slug":"flag_st_barthelemy","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇱","keywords":["flag_st_barthelemy","saint","barthélemy","st_barthelemy"]},"🇧🇲":{"name":"flag Bermuda","slug":"flag_bermuda","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇲","keywords":["flag_bermuda","bm","bermuda"]},"🇧🇳":{"name":"flag Brunei","slug":"flag_brunei","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇳","keywords":["flag_brunei","bn","darussalam","brunei"]},"🇧🇴":{"name":"flag Bolivia","slug":"flag_bolivia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇴","keywords":["flag_bolivia","bo","bolivia"]},"🇧🇶":{"name":"flag Caribbean Netherlands","slug":"flag_caribbean_netherlands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇶","keywords":["flag_caribbean_netherlands","bonaire","caribbean_netherlands"]},"🇧🇷":{"name":"flag Brazil","slug":"flag_brazil","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇷","keywords":["flag_brazil","br","brazil"]},"🇧🇸":{"name":"flag Bahamas","slug":"flag_bahamas","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇸","keywords":["flag_bahamas","bs","bahamas"]},"🇧🇹":{"name":"flag Bhutan","slug":"flag_bhutan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇹","keywords":["flag_bhutan","bt","bhutan"]},"🇧🇻":{"name":"flag Bouvet Island","slug":"flag_bouvet_island","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇻","keywords":["flag_bouvet_island","norway"]},"🇧🇼":{"name":"flag Botswana","slug":"flag_botswana","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇼","keywords":["flag_botswana","bw","botswana"]},"🇧🇾":{"name":"flag Belarus","slug":"flag_belarus","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇾","keywords":["flag_belarus","by","belarus"]},"🇧🇿":{"name":"flag Belize","slug":"flag_belize","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇧🇿","keywords":["flag_belize","bz","belize"]},"🇨🇦":{"name":"flag Canada","slug":"flag_canada","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇦","keywords":["flag_canada"]},"🇨🇨":{"name":"flag Cocos (Keeling) Islands","slug":"flag_cocos_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇨","keywords":["flag_cocos_islands","cocos","keeling","cocos_islands"]},"🇨🇩":{"name":"flag Congo - Kinshasa","slug":"flag_congo_kinshasa","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇩","keywords":["flag_congo_kinshasa","congo","democratic","congo_kinshasa"]},"🇨🇫":{"name":"flag Central African Republic","slug":"flag_central_african_republic","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇫","keywords":["flag_central_african_republic","central","african","central_african_republic"]},"🇨🇬":{"name":"flag Congo - Brazzaville","slug":"flag_congo_brazzaville","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇬","keywords":["flag_congo_brazzaville","congo_brazzaville"]},"🇨🇭":{"name":"flag Switzerland","slug":"flag_switzerland","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇭","keywords":["flag_switzerland","ch","switzerland"]},"🇨🇮":{"name":"flag Côte d’Ivoire","slug":"flag_cote_d_ivoire","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇮","keywords":["flag_cote_d_ivoire","ivory","coast","cote_d_ivoire"]},"🇨🇰":{"name":"flag Cook Islands","slug":"flag_cook_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇰","keywords":["flag_cook_islands","islands","cook_islands"]},"🇨🇱":{"name":"flag Chile","slug":"flag_chile","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇱","keywords":["flag_chile","chile"]},"🇨🇲":{"name":"flag Cameroon","slug":"flag_cameroon","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇲","keywords":["flag_cameroon","cm","cameroon"]},"🇨🇳":{"name":"flag China","slug":"flag_china","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇨🇳","keywords":["flag_china","china","prc","china"]},"🇨🇴":{"name":"flag Colombia","slug":"flag_colombia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇴","keywords":["flag_colombia","co","colombia"]},"🇨🇵":{"name":"flag Clipperton Island","slug":"flag_clipperton_island","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇵","keywords":["flag_clipperton_island"]},"🇨🇷":{"name":"flag Costa Rica","slug":"flag_costa_rica","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇷","keywords":["flag_costa_rica","costa","rica","costa_rica"]},"🇨🇺":{"name":"flag Cuba","slug":"flag_cuba","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇺","keywords":["flag_cuba","cu","cuba"]},"🇨🇻":{"name":"flag Cape Verde","slug":"flag_cape_verde","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇻","keywords":["flag_cape_verde","cabo","verde","cape_verde"]},"🇨🇼":{"name":"flag Curaçao","slug":"flag_curacao","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇼","keywords":["flag_curacao","curaçao","curacao"]},"🇨🇽":{"name":"flag Christmas Island","slug":"flag_christmas_island","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇽","keywords":["flag_christmas_island","christmas","island","christmas_island"]},"🇨🇾":{"name":"flag Cyprus","slug":"flag_cyprus","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇾","keywords":["flag_cyprus","cy","cyprus"]},"🇨🇿":{"name":"flag Czechia","slug":"flag_czechia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇨🇿","keywords":["flag_czechia","cz","czechia"]},"🇩🇪":{"name":"flag Germany","slug":"flag_germany","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇩🇪","keywords":["flag_germany","german"]},"🇩🇬":{"name":"flag Diego Garcia","slug":"flag_diego_garcia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇩🇬","keywords":["flag_diego_garcia"]},"🇩🇯":{"name":"flag Djibouti","slug":"flag_djibouti","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇩🇯","keywords":["flag_djibouti","dj","djibouti"]},"🇩🇰":{"name":"flag Denmark","slug":"flag_denmark","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇩🇰","keywords":["flag_denmark","dk","denmark"]},"🇩🇲":{"name":"flag Dominica","slug":"flag_dominica","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇩🇲","keywords":["flag_dominica","dm","dominica"]},"🇩🇴":{"name":"flag Dominican Republic","slug":"flag_dominican_republic","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇩🇴","keywords":["flag_dominican_republic","dominican","republic","dominican_republic"]},"🇩🇿":{"name":"flag Algeria","slug":"flag_algeria","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇩🇿","keywords":["flag_algeria","dz","algeria"]},"🇪🇦":{"name":"flag Ceuta & Melilla","slug":"flag_ceuta_melilla","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇦","keywords":["flag_ceuta_melilla"]},"🇪🇨":{"name":"flag Ecuador","slug":"flag_ecuador","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇨","keywords":["flag_ecuador","ec","ecuador"]},"🇪🇪":{"name":"flag Estonia","slug":"flag_estonia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇪","keywords":["flag_estonia","ee","estonia"]},"🇪🇬":{"name":"flag Egypt","slug":"flag_egypt","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇬","keywords":["flag_egypt","eg","egypt"]},"🇪🇭":{"name":"flag Western Sahara","slug":"flag_western_sahara","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇭","keywords":["flag_western_sahara","western","sahara","western_sahara"]},"🇪🇷":{"name":"flag Eritrea","slug":"flag_eritrea","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇷","keywords":["flag_eritrea","er","eritrea"]},"🇪🇸":{"name":"flag Spain","slug":"flag_spain","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇪🇸","keywords":["flag_spain","spain","spain"]},"🇪🇹":{"name":"flag Ethiopia","slug":"flag_ethiopia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇹","keywords":["flag_ethiopia","et","ethiopia"]},"🇪🇺":{"name":"flag European Union","slug":"flag_european_union","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇪🇺","keywords":["flag_european_union","european","union"]},"🇫🇮":{"name":"flag Finland","slug":"flag_finland","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇫🇮","keywords":["flag_finland","fi","finland"]},"🇫🇯":{"name":"flag Fiji","slug":"flag_fiji","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇫🇯","keywords":["flag_fiji","fj","fiji"]},"🇫🇰":{"name":"flag Falkland Islands","slug":"flag_falkland_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇫🇰","keywords":["flag_falkland_islands","falkland","malvinas","falkland_islands"]},"🇫🇲":{"name":"flag Micronesia","slug":"flag_micronesia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇫🇲","keywords":["flag_micronesia","micronesia","federated","micronesia"]},"🇫🇴":{"name":"flag Faroe Islands","slug":"flag_faroe_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇫🇴","keywords":["flag_faroe_islands","faroe","faroe_islands"]},"🇫🇷":{"name":"flag France","slug":"flag_france","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇫🇷","keywords":["flag_france","banner"]},"🇬🇦":{"name":"flag Gabon","slug":"flag_gabon","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇦","keywords":["flag_gabon","ga","gabon"]},"🇬🇧":{"name":"flag United Kingdom","slug":"flag_united_kingdom","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇬🇧","keywords":["flag_united_kingdom","kingdom","great","britain","UK","union jack","united_kingdom"]},"🇬🇩":{"name":"flag Grenada","slug":"flag_grenada","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇩","keywords":["flag_grenada","gd","grenada"]},"🇬🇪":{"name":"flag Georgia","slug":"flag_georgia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇪","keywords":["flag_georgia","ge","georgia"]},"🇬🇫":{"name":"flag French Guiana","slug":"flag_french_guiana","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇫","keywords":["flag_french_guiana","guiana","french_guiana"]},"🇬🇬":{"name":"flag Guernsey","slug":"flag_guernsey","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇬","keywords":["flag_guernsey","gg","guernsey"]},"🇬🇭":{"name":"flag Ghana","slug":"flag_ghana","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇭","keywords":["flag_ghana","gh","ghana"]},"🇬🇮":{"name":"flag Gibraltar","slug":"flag_gibraltar","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇮","keywords":["flag_gibraltar","gi","gibraltar"]},"🇬🇱":{"name":"flag Greenland","slug":"flag_greenland","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇱","keywords":["flag_greenland","gl","greenland"]},"🇬🇲":{"name":"flag Gambia","slug":"flag_gambia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇲","keywords":["flag_gambia","gm","gambia"]},"🇬🇳":{"name":"flag Guinea","slug":"flag_guinea","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇳","keywords":["flag_guinea","gn","guinea"]},"🇬🇵":{"name":"flag Guadeloupe","slug":"flag_guadeloupe","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇵","keywords":["flag_guadeloupe","gp","guadeloupe"]},"🇬🇶":{"name":"flag Equatorial Guinea","slug":"flag_equatorial_guinea","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇶","keywords":["flag_equatorial_guinea","equatorial","equatorial_guinea"]},"🇬🇷":{"name":"flag Greece","slug":"flag_greece","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇷","keywords":["flag_greece","gr","greece"]},"🇬🇸":{"name":"flag South Georgia & South Sandwich Islands","slug":"flag_south_georgia_south_sandwich_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇸","keywords":["flag_south_georgia_south_sandwich_islands","south","south_georgia_south_sandwich_islands"]},"🇬🇹":{"name":"flag Guatemala","slug":"flag_guatemala","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇹","keywords":["flag_guatemala","gt","guatemala"]},"🇬🇺":{"name":"flag Guam","slug":"flag_guam","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇺","keywords":["flag_guam","gu","guam"]},"🇬🇼":{"name":"flag Guinea-Bissau","slug":"flag_guinea_bissau","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇼","keywords":["flag_guinea_bissau","gw","bissau","guinea_bissau"]},"🇬🇾":{"name":"flag Guyana","slug":"flag_guyana","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇬🇾","keywords":["flag_guyana","gy","guyana"]},"🇭🇰":{"name":"flag Hong Kong SAR China","slug":"flag_hong_kong_sar_china","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇭🇰","keywords":["flag_hong_kong_sar_china","hong","kong","hong_kong_sar_china"]},"🇭🇲":{"name":"flag Heard & McDonald Islands","slug":"flag_heard_mcdonald_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇭🇲","keywords":["flag_heard_mcdonald_islands"]},"🇭🇳":{"name":"flag Honduras","slug":"flag_honduras","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇭🇳","keywords":["flag_honduras","hn","honduras"]},"🇭🇷":{"name":"flag Croatia","slug":"flag_croatia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇭🇷","keywords":["flag_croatia","hr","croatia"]},"🇭🇹":{"name":"flag Haiti","slug":"flag_haiti","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇭🇹","keywords":["flag_haiti","ht","haiti"]},"🇭🇺":{"name":"flag Hungary","slug":"flag_hungary","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇭🇺","keywords":["flag_hungary","hu","hungary"]},"🇮🇨":{"name":"flag Canary Islands","slug":"flag_canary_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇨","keywords":["flag_canary_islands","canary","canary_islands"]},"🇮🇩":{"name":"flag Indonesia","slug":"flag_indonesia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇩","keywords":["flag_indonesia","indonesia"]},"🇮🇪":{"name":"flag Ireland","slug":"flag_ireland","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇪","keywords":["flag_ireland","ie","ireland"]},"🇮🇱":{"name":"flag Israel","slug":"flag_israel","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇱","keywords":["flag_israel","il","israel"]},"🇮🇲":{"name":"flag Isle of Man","slug":"flag_isle_of_man","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇲","keywords":["flag_isle_of_man","isle","isle_of_man"]},"🇮🇳":{"name":"flag India","slug":"flag_india","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇳","keywords":["flag_india","in","india"]},"🇮🇴":{"name":"flag British Indian Ocean Territory","slug":"flag_british_indian_ocean_territory","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇴","keywords":["flag_british_indian_ocean_territory","territory","british_indian_ocean_territory"]},"🇮🇶":{"name":"flag Iraq","slug":"flag_iraq","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇶","keywords":["flag_iraq","iq","iraq"]},"🇮🇷":{"name":"flag Iran","slug":"flag_iran","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇷","keywords":["flag_iran","iran","islamic","iran"]},"🇮🇸":{"name":"flag Iceland","slug":"flag_iceland","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇮🇸","keywords":["flag_iceland","is","iceland"]},"🇮🇹":{"name":"flag Italy","slug":"flag_italy","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇮🇹","keywords":["flag_italy","italy","italy"]},"🇯🇪":{"name":"flag Jersey","slug":"flag_jersey","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇯🇪","keywords":["flag_jersey","je","jersey"]},"🇯🇲":{"name":"flag Jamaica","slug":"flag_jamaica","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇯🇲","keywords":["flag_jamaica","jm","jamaica"]},"🇯🇴":{"name":"flag Jordan","slug":"flag_jordan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇯🇴","keywords":["flag_jordan","jo","jordan"]},"🇯🇵":{"name":"flag Japan","slug":"flag_japan","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇯🇵","keywords":["flag_japan","jp","ja"]},"🇰🇪":{"name":"flag Kenya","slug":"flag_kenya","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇪","keywords":["flag_kenya","ke","kenya"]},"🇰🇬":{"name":"flag Kyrgyzstan","slug":"flag_kyrgyzstan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇬","keywords":["flag_kyrgyzstan","kg","kyrgyzstan"]},"🇰🇭":{"name":"flag Cambodia","slug":"flag_cambodia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇭","keywords":["flag_cambodia","kh","cambodia"]},"🇰🇮":{"name":"flag Kiribati","slug":"flag_kiribati","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇮","keywords":["flag_kiribati","ki","kiribati"]},"🇰🇲":{"name":"flag Comoros","slug":"flag_comoros","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇲","keywords":["flag_comoros","km","comoros"]},"🇰🇳":{"name":"flag St. Kitts & Nevis","slug":"flag_st_kitts_nevis","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇳","keywords":["flag_st_kitts_nevis","kitts","nevis","st_kitts_nevis"]},"🇰🇵":{"name":"flag North Korea","slug":"flag_north_korea","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇵","keywords":["flag_north_korea","north","north_korea"]},"🇰🇷":{"name":"flag South Korea","slug":"flag_south_korea","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇰🇷","keywords":["flag_south_korea","korea","south_korea"]},"🇰🇼":{"name":"flag Kuwait","slug":"flag_kuwait","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇼","keywords":["flag_kuwait","kw","kuwait"]},"🇰🇾":{"name":"flag Cayman Islands","slug":"flag_cayman_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇾","keywords":["flag_cayman_islands","cayman","cayman_islands"]},"🇰🇿":{"name":"flag Kazakhstan","slug":"flag_kazakhstan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇰🇿","keywords":["flag_kazakhstan","kz","kazakhstan"]},"🇱🇦":{"name":"flag Laos","slug":"flag_laos","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇦","keywords":["flag_laos","lao","laos"]},"🇱🇧":{"name":"flag Lebanon","slug":"flag_lebanon","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇧","keywords":["flag_lebanon","lb","lebanon"]},"🇱🇨":{"name":"flag St. Lucia","slug":"flag_st_lucia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇨","keywords":["flag_st_lucia","lucia","st_lucia"]},"🇱🇮":{"name":"flag Liechtenstein","slug":"flag_liechtenstein","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇮","keywords":["flag_liechtenstein","li","liechtenstein"]},"🇱🇰":{"name":"flag Sri Lanka","slug":"flag_sri_lanka","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇰","keywords":["flag_sri_lanka","sri","lanka","sri_lanka"]},"🇱🇷":{"name":"flag Liberia","slug":"flag_liberia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇷","keywords":["flag_liberia","lr","liberia"]},"🇱🇸":{"name":"flag Lesotho","slug":"flag_lesotho","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇸","keywords":["flag_lesotho","ls","lesotho"]},"🇱🇹":{"name":"flag Lithuania","slug":"flag_lithuania","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇹","keywords":["flag_lithuania","lt","lithuania"]},"🇱🇺":{"name":"flag Luxembourg","slug":"flag_luxembourg","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇺","keywords":["flag_luxembourg","lu","luxembourg"]},"🇱🇻":{"name":"flag Latvia","slug":"flag_latvia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇻","keywords":["flag_latvia","lv","latvia"]},"🇱🇾":{"name":"flag Libya","slug":"flag_libya","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇱🇾","keywords":["flag_libya","ly","libya"]},"🇲🇦":{"name":"flag Morocco","slug":"flag_morocco","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇦","keywords":["flag_morocco","ma","morocco"]},"🇲🇨":{"name":"flag Monaco","slug":"flag_monaco","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇨","keywords":["flag_monaco","mc","monaco"]},"🇲🇩":{"name":"flag Moldova","slug":"flag_moldova","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇩","keywords":["flag_moldova","moldova","moldova"]},"🇲🇪":{"name":"flag Montenegro","slug":"flag_montenegro","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇪","keywords":["flag_montenegro","me","montenegro"]},"🇲🇫":{"name":"flag St. Martin","slug":"flag_st_martin","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇫","keywords":["flag_st_martin"]},"🇲🇬":{"name":"flag Madagascar","slug":"flag_madagascar","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇬","keywords":["flag_madagascar","mg","madagascar"]},"🇲🇭":{"name":"flag Marshall Islands","slug":"flag_marshall_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇭","keywords":["flag_marshall_islands","marshall","marshall_islands"]},"🇲🇰":{"name":"flag North Macedonia","slug":"flag_north_macedonia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇰","keywords":["flag_north_macedonia","macedonia","north_macedonia"]},"🇲🇱":{"name":"flag Mali","slug":"flag_mali","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇱","keywords":["flag_mali","ml","mali"]},"🇲🇲":{"name":"flag Myanmar (Burma)","slug":"flag_myanmar","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇲","keywords":["flag_myanmar","mm","myanmar"]},"🇲🇳":{"name":"flag Mongolia","slug":"flag_mongolia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇳","keywords":["flag_mongolia","mn","mongolia"]},"🇲🇴":{"name":"flag Macao SAR China","slug":"flag_macao_sar_china","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇴","keywords":["flag_macao_sar_china","macao","macao_sar_china"]},"🇲🇵":{"name":"flag Northern Mariana Islands","slug":"flag_northern_mariana_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇵","keywords":["flag_northern_mariana_islands","northern","mariana","northern_mariana_islands"]},"🇲🇶":{"name":"flag Martinique","slug":"flag_martinique","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇶","keywords":["flag_martinique","mq","martinique"]},"🇲🇷":{"name":"flag Mauritania","slug":"flag_mauritania","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇷","keywords":["flag_mauritania","mr","mauritania"]},"🇲🇸":{"name":"flag Montserrat","slug":"flag_montserrat","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇸","keywords":["flag_montserrat","ms","montserrat"]},"🇲🇹":{"name":"flag Malta","slug":"flag_malta","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇹","keywords":["flag_malta","mt","malta"]},"🇲🇺":{"name":"flag Mauritius","slug":"flag_mauritius","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇺","keywords":["flag_mauritius","mu","mauritius"]},"🇲🇻":{"name":"flag Maldives","slug":"flag_maldives","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇻","keywords":["flag_maldives","mv","maldives"]},"🇲🇼":{"name":"flag Malawi","slug":"flag_malawi","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇼","keywords":["flag_malawi","mw","malawi"]},"🇲🇽":{"name":"flag Mexico","slug":"flag_mexico","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇽","keywords":["flag_mexico","mx"]},"🇲🇾":{"name":"flag Malaysia","slug":"flag_malaysia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇾","keywords":["flag_malaysia","my","malaysia"]},"🇲🇿":{"name":"flag Mozambique","slug":"flag_mozambique","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇲🇿","keywords":["flag_mozambique","mz","mozambique"]},"🇳🇦":{"name":"flag Namibia","slug":"flag_namibia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇦","keywords":["flag_namibia","na","namibia"]},"🇳🇨":{"name":"flag New Caledonia","slug":"flag_new_caledonia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇨","keywords":["flag_new_caledonia","new","caledonia","new_caledonia"]},"🇳🇪":{"name":"flag Niger","slug":"flag_niger","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇪","keywords":["flag_niger","ne","niger"]},"🇳🇫":{"name":"flag Norfolk Island","slug":"flag_norfolk_island","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇫","keywords":["flag_norfolk_island","norfolk","norfolk_island"]},"🇳🇬":{"name":"flag Nigeria","slug":"flag_nigeria","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇬","keywords":["flag_nigeria","nigeria"]},"🇳🇮":{"name":"flag Nicaragua","slug":"flag_nicaragua","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇮","keywords":["flag_nicaragua","ni","nicaragua"]},"🇳🇱":{"name":"flag Netherlands","slug":"flag_netherlands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇱","keywords":["flag_netherlands","nl","netherlands"]},"🇳🇴":{"name":"flag Norway","slug":"flag_norway","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇴","keywords":["flag_norway"]},"🇳🇵":{"name":"flag Nepal","slug":"flag_nepal","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇵","keywords":["flag_nepal","np","nepal"]},"🇳🇷":{"name":"flag Nauru","slug":"flag_nauru","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇷","keywords":["flag_nauru","nr","nauru"]},"🇳🇺":{"name":"flag Niue","slug":"flag_niue","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇺","keywords":["flag_niue","nu","niue"]},"🇳🇿":{"name":"flag New Zealand","slug":"flag_new_zealand","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇳🇿","keywords":["flag_new_zealand","zealand","new_zealand"]},"🇴🇲":{"name":"flag Oman","slug":"flag_oman","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇴🇲","keywords":["flag_oman","om_symbol","oman"]},"🇵🇦":{"name":"flag Panama","slug":"flag_panama","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇦","keywords":["flag_panama","pa","panama"]},"🇵🇪":{"name":"flag Peru","slug":"flag_peru","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇪","keywords":["flag_peru","pe","peru"]},"🇵🇫":{"name":"flag French Polynesia","slug":"flag_french_polynesia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇫","keywords":["flag_french_polynesia","polynesia","french_polynesia"]},"🇵🇬":{"name":"flag Papua New Guinea","slug":"flag_papua_new_guinea","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇬","keywords":["flag_papua_new_guinea","papua","papua_new_guinea"]},"🇵🇭":{"name":"flag Philippines","slug":"flag_philippines","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇭","keywords":["flag_philippines","ph","philippines"]},"🇵🇰":{"name":"flag Pakistan","slug":"flag_pakistan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇰","keywords":["flag_pakistan","pk","pakistan"]},"🇵🇱":{"name":"flag Poland","slug":"flag_poland","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇱","keywords":["flag_poland","pl","poland"]},"🇵🇲":{"name":"flag St. Pierre & Miquelon","slug":"flag_st_pierre_miquelon","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇲","keywords":["flag_st_pierre_miquelon","pierre","miquelon","st_pierre_miquelon"]},"🇵🇳":{"name":"flag Pitcairn Islands","slug":"flag_pitcairn_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇳","keywords":["flag_pitcairn_islands","pitcairn","pitcairn_islands"]},"🇵🇷":{"name":"flag Puerto Rico","slug":"flag_puerto_rico","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇷","keywords":["flag_puerto_rico","puerto","rico","puerto_rico"]},"🇵🇸":{"name":"flag Palestinian Territories","slug":"flag_palestinian_territories","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇸","keywords":["flag_palestinian_territories","palestine","palestinian","palestinian_territories"]},"🇵🇹":{"name":"flag Portugal","slug":"flag_portugal","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇹","keywords":["flag_portugal","pt","portugal"]},"🇵🇼":{"name":"flag Palau","slug":"flag_palau","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇼","keywords":["flag_palau","pw","palau"]},"🇵🇾":{"name":"flag Paraguay","slug":"flag_paraguay","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇵🇾","keywords":["flag_paraguay","py","paraguay"]},"🇶🇦":{"name":"flag Qatar","slug":"flag_qatar","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇶🇦","keywords":["flag_qatar","qa","qatar"]},"🇷🇪":{"name":"flag Réunion","slug":"flag_reunion","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇷🇪","keywords":["flag_reunion","réunion","reunion"]},"🇷🇴":{"name":"flag Romania","slug":"flag_romania","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇷🇴","keywords":["flag_romania","ro","romania"]},"🇷🇸":{"name":"flag Serbia","slug":"flag_serbia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇷🇸","keywords":["flag_serbia","rs","serbia"]},"🇷🇺":{"name":"flag Russia","slug":"flag_russia","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇷🇺","keywords":["flag_russia","russian","federation","russia"]},"🇷🇼":{"name":"flag Rwanda","slug":"flag_rwanda","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇷🇼","keywords":["flag_rwanda","rw","rwanda"]},"🇸🇦":{"name":"flag Saudi Arabia","slug":"flag_saudi_arabia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇦","keywords":["flag_saudi_arabia","saudi_arabia"]},"🇸🇧":{"name":"flag Solomon Islands","slug":"flag_solomon_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇧","keywords":["flag_solomon_islands","solomon","solomon_islands"]},"🇸🇨":{"name":"flag Seychelles","slug":"flag_seychelles","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇨","keywords":["flag_seychelles","sc","seychelles"]},"🇸🇩":{"name":"flag Sudan","slug":"flag_sudan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇩","keywords":["flag_sudan","sd","sudan"]},"🇸🇪":{"name":"flag Sweden","slug":"flag_sweden","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇪","keywords":["flag_sweden","se"]},"🇸🇬":{"name":"flag Singapore","slug":"flag_singapore","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇬","keywords":["flag_singapore","sg","singapore"]},"🇸🇭":{"name":"flag St. Helena","slug":"flag_st_helena","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇭","keywords":["flag_st_helena","helena","ascension","tristan","cunha","st_helena"]},"🇸🇮":{"name":"flag Slovenia","slug":"flag_slovenia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇮","keywords":["flag_slovenia","si","slovenia"]},"🇸🇯":{"name":"flag Svalbard & Jan Mayen","slug":"flag_svalbard_jan_mayen","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇯","keywords":["flag_svalbard_jan_mayen"]},"🇸🇰":{"name":"flag Slovakia","slug":"flag_slovakia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇰","keywords":["flag_slovakia","sk","slovakia"]},"🇸🇱":{"name":"flag Sierra Leone","slug":"flag_sierra_leone","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇱","keywords":["flag_sierra_leone","sierra","leone","sierra_leone"]},"🇸🇲":{"name":"flag San Marino","slug":"flag_san_marino","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇲","keywords":["flag_san_marino","san","marino","san_marino"]},"🇸🇳":{"name":"flag Senegal","slug":"flag_senegal","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇳","keywords":["flag_senegal","sn","senegal"]},"🇸🇴":{"name":"flag Somalia","slug":"flag_somalia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇴","keywords":["flag_somalia","so","somalia"]},"🇸🇷":{"name":"flag Suriname","slug":"flag_suriname","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇷","keywords":["flag_suriname","sr","suriname"]},"🇸🇸":{"name":"flag South Sudan","slug":"flag_south_sudan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇸","keywords":["flag_south_sudan","south_sudan"]},"🇸🇹":{"name":"flag São Tomé & Príncipe","slug":"flag_sao_tome_principe","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇹","keywords":["flag_sao_tome_principe","sao","tome","principe","sao_tome_principe"]},"🇸🇻":{"name":"flag El Salvador","slug":"flag_el_salvador","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇻","keywords":["flag_el_salvador","el","salvador","el_salvador"]},"🇸🇽":{"name":"flag Sint Maarten","slug":"flag_sint_maarten","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇽","keywords":["flag_sint_maarten","sint","maarten","dutch","sint_maarten"]},"🇸🇾":{"name":"flag Syria","slug":"flag_syria","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇾","keywords":["flag_syria","syrian","syria"]},"🇸🇿":{"name":"flag Eswatini","slug":"flag_eswatini","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇸🇿","keywords":["flag_eswatini","sz","eswatini"]},"🇹🇦":{"name":"flag Tristan da Cunha","slug":"flag_tristan_da_cunha","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇦","keywords":["flag_tristan_da_cunha"]},"🇹🇨":{"name":"flag Turks & Caicos Islands","slug":"flag_turks_caicos_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇨","keywords":["flag_turks_caicos_islands","turks","caicos","turks_caicos_islands"]},"🇹🇩":{"name":"flag Chad","slug":"flag_chad","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇩","keywords":["flag_chad","td","chad"]},"🇹🇫":{"name":"flag French Southern Territories","slug":"flag_french_southern_territories","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇫","keywords":["flag_french_southern_territories","southern","territories","french_southern_territories"]},"🇹🇬":{"name":"flag Togo","slug":"flag_togo","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇬","keywords":["flag_togo","tg","togo"]},"🇹🇭":{"name":"flag Thailand","slug":"flag_thailand","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇭","keywords":["flag_thailand","thailand"]},"🇹🇯":{"name":"flag Tajikistan","slug":"flag_tajikistan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇯","keywords":["flag_tajikistan","tj","tajikistan"]},"🇹🇰":{"name":"flag Tokelau","slug":"flag_tokelau","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇰","keywords":["flag_tokelau","tk","tokelau"]},"🇹🇱":{"name":"flag Timor-Leste","slug":"flag_timor_leste","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇱","keywords":["flag_timor_leste","timor","leste","timor_leste"]},"🇹🇲":{"name":"flag Turkmenistan","slug":"flag_turkmenistan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇲","keywords":["flag_turkmenistan","turkmenistan"]},"🇹🇳":{"name":"flag Tunisia","slug":"flag_tunisia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇳","keywords":["flag_tunisia","tn","tunisia"]},"🇹🇴":{"name":"flag Tonga","slug":"flag_tonga","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇴","keywords":["flag_tonga","to","tonga"]},"🇹🇷":{"name":"flag Turkey","slug":"flag_turkey","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇷","keywords":["flag_turkey"]},"🇹🇹":{"name":"flag Trinidad & Tobago","slug":"flag_trinidad_tobago","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇹","keywords":["flag_trinidad_tobago","trinidad","tobago","trinidad_tobago"]},"🇹🇻":{"name":"flag Tuvalu","slug":"flag_tuvalu","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇻","keywords":["flag_tuvalu","tuvalu"]},"🇹🇼":{"name":"flag Taiwan","slug":"flag_taiwan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇼","keywords":["flag_taiwan","tw"]},"🇹🇿":{"name":"flag Tanzania","slug":"flag_tanzania","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇹🇿","keywords":["flag_tanzania","tanzania","tanzania"]},"🇺🇦":{"name":"flag Ukraine","slug":"flag_ukraine","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇺🇦","keywords":["flag_ukraine","ua","ukraine"]},"🇺🇬":{"name":"flag Uganda","slug":"flag_uganda","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇺🇬","keywords":["flag_uganda","ug","uganda"]},"🇺🇲":{"name":"flag U.S. Outlying Islands","slug":"flag_u_s_outlying_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇺🇲","keywords":["flag_u_s_outlying_islands"]},"🇺🇳":{"name":"flag United Nations","slug":"flag_united_nations","group":"Flags","emoji_version":"4.0","unicode_version":"4.0","skin_tone_support":false,"char":"🇺🇳","keywords":["flag_united_nations","un"]},"🇺🇸":{"name":"flag United States","slug":"flag_united_states","group":"Flags","emoji_version":"0.6","unicode_version":"0.6","skin_tone_support":false,"char":"🇺🇸","keywords":["flag_united_states","states","united_states"]},"🇺🇾":{"name":"flag Uruguay","slug":"flag_uruguay","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇺🇾","keywords":["flag_uruguay","uy","uruguay"]},"🇺🇿":{"name":"flag Uzbekistan","slug":"flag_uzbekistan","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇺🇿","keywords":["flag_uzbekistan","uz","uzbekistan"]},"🇻🇦":{"name":"flag Vatican City","slug":"flag_vatican_city","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇻🇦","keywords":["flag_vatican_city","vatican","vatican_city"]},"🇻🇨":{"name":"flag St. Vincent & Grenadines","slug":"flag_st_vincent_grenadines","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇻🇨","keywords":["flag_st_vincent_grenadines","vincent","grenadines","st_vincent_grenadines"]},"🇻🇪":{"name":"flag Venezuela","slug":"flag_venezuela","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇻🇪","keywords":["flag_venezuela","ve","bolivarian","venezuela"]},"🇻🇬":{"name":"flag British Virgin Islands","slug":"flag_british_virgin_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇻🇬","keywords":["flag_british_virgin_islands","virgin","bvi","british_virgin_islands"]},"🇻🇮":{"name":"flag U.S. Virgin Islands","slug":"flag_u_s_virgin_islands","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇻🇮","keywords":["flag_u_s_virgin_islands","us","u_s_virgin_islands"]},"🇻🇳":{"name":"flag Vietnam","slug":"flag_vietnam","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇻🇳","keywords":["flag_vietnam","viet","nam","vietnam"]},"🇻🇺":{"name":"flag Vanuatu","slug":"flag_vanuatu","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇻🇺","keywords":["flag_vanuatu","vu","vanuatu"]},"🇼🇫":{"name":"flag Wallis & Futuna","slug":"flag_wallis_futuna","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇼🇫","keywords":["flag_wallis_futuna","wallis","futuna","wallis_futuna"]},"🇼🇸":{"name":"flag Samoa","slug":"flag_samoa","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇼🇸","keywords":["flag_samoa","samoa"]},"🇽🇰":{"name":"flag Kosovo","slug":"flag_kosovo","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇽🇰","keywords":["flag_kosovo","xk","kosovo"]},"🇾🇪":{"name":"flag Yemen","slug":"flag_yemen","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇾🇪","keywords":["flag_yemen","ye","yemen"]},"🇾🇹":{"name":"flag Mayotte","slug":"flag_mayotte","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇾🇹","keywords":["flag_mayotte","yt","mayotte"]},"🇿🇦":{"name":"flag South Africa","slug":"flag_south_africa","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇿🇦","keywords":["flag_south_africa","africa","south_africa"]},"🇿🇲":{"name":"flag Zambia","slug":"flag_zambia","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇿🇲","keywords":["flag_zambia","zm","zambia"]},"🇿🇼":{"name":"flag Zimbabwe","slug":"flag_zimbabwe","group":"Flags","emoji_version":"2.0","unicode_version":"2.0","skin_tone_support":false,"char":"🇿🇼","keywords":["flag_zimbabwe","zw","zimbabwe"]},"🏴󠁧󠁢󠁥󠁮󠁧󠁿":{"name":"flag England","slug":"flag_england","group":"Flags","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🏴󠁧󠁢󠁥󠁮󠁧󠁿","keywords":["flag_england","english"]},"🏴󠁧󠁢󠁳󠁣󠁴󠁿":{"name":"flag Scotland","slug":"flag_scotland","group":"Flags","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🏴󠁧󠁢󠁳󠁣󠁴󠁿","keywords":["flag_scotland","scottish"]},"🏴󠁧󠁢󠁷󠁬󠁳󠁿":{"name":"flag Wales","slug":"flag_wales","group":"Flags","emoji_version":"5.0","unicode_version":"5.0","skin_tone_support":false,"char":"🏴󠁧󠁢󠁷󠁬󠁳󠁿","keywords":["flag_wales","welsh"]}}')}},o={};function s(n){var r=o[n];if(void 0!==r)return r.exports;var i=o[n]={exports:{}};return e[n].call(i.exports,i,i.exports,s),i.exports}s.d=(e,o)=>{for(var n in o)s.o(o,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},s.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n=s(156);module.exports=n})();

/***/ }),

/***/ "./node_modules/vue-class-component/dist/vue-class-component.esm.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vue-class-component/dist/vue-class-component.esm.js ***!
  \**************************************************************************/
/*! exports provided: default, createDecorator, mixins */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createDecorator", function() { return createDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mixins", function() { return mixins; });
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js");
/**
  * vue-class-component v7.2.6
  * (c) 2015-present Evan You
  * @license MIT
  */


function _typeof(obj) {
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof = function (obj) {
      return typeof obj;
    };
  } else {
    _typeof = function (obj) {
      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
    };
  }

  return _typeof(obj);
}

function _defineProperty(obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

function _toConsumableArray(arr) {
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
}

function _arrayWithoutHoles(arr) {
  if (Array.isArray(arr)) {
    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];

    return arr2;
  }
}

function _iterableToArray(iter) {
  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
}

function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance");
}

// The rational behind the verbose Reflect-feature check below is the fact that there are polyfills
// which add an implementation for Reflect.defineMetadata but not for Reflect.getOwnMetadataKeys.
// Without this check consumers will encounter hard to track down runtime errors.
function reflectionIsSupported() {
  return typeof Reflect !== 'undefined' && Reflect.defineMetadata && Reflect.getOwnMetadataKeys;
}
function copyReflectionMetadata(to, from) {
  forwardMetadata(to, from);
  Object.getOwnPropertyNames(from.prototype).forEach(function (key) {
    forwardMetadata(to.prototype, from.prototype, key);
  });
  Object.getOwnPropertyNames(from).forEach(function (key) {
    forwardMetadata(to, from, key);
  });
}

function forwardMetadata(to, from, propertyKey) {
  var metaKeys = propertyKey ? Reflect.getOwnMetadataKeys(from, propertyKey) : Reflect.getOwnMetadataKeys(from);
  metaKeys.forEach(function (metaKey) {
    var metadata = propertyKey ? Reflect.getOwnMetadata(metaKey, from, propertyKey) : Reflect.getOwnMetadata(metaKey, from);

    if (propertyKey) {
      Reflect.defineMetadata(metaKey, metadata, to, propertyKey);
    } else {
      Reflect.defineMetadata(metaKey, metadata, to);
    }
  });
}

var fakeArray = {
  __proto__: []
};
var hasProto = fakeArray instanceof Array;
function createDecorator(factory) {
  return function (target, key, index) {
    var Ctor = typeof target === 'function' ? target : target.constructor;

    if (!Ctor.__decorators__) {
      Ctor.__decorators__ = [];
    }

    if (typeof index !== 'number') {
      index = undefined;
    }

    Ctor.__decorators__.push(function (options) {
      return factory(options, key, index);
    });
  };
}
function mixins() {
  for (var _len = arguments.length, Ctors = new Array(_len), _key = 0; _key < _len; _key++) {
    Ctors[_key] = arguments[_key];
  }

  return vue__WEBPACK_IMPORTED_MODULE_0__["default"].extend({
    mixins: Ctors
  });
}
function isPrimitive(value) {
  var type = _typeof(value);

  return value == null || type !== 'object' && type !== 'function';
}
function warn(message) {
  if (typeof console !== 'undefined') {
    console.warn('[vue-class-component] ' + message);
  }
}

function collectDataFromConstructor(vm, Component) {
  // override _init to prevent to init as Vue instance
  var originalInit = Component.prototype._init;

  Component.prototype._init = function () {
    var _this = this;

    // proxy to actual vm
    var keys = Object.getOwnPropertyNames(vm); // 2.2.0 compat (props are no longer exposed as self properties)

    if (vm.$options.props) {
      for (var key in vm.$options.props) {
        if (!vm.hasOwnProperty(key)) {
          keys.push(key);
        }
      }
    }

    keys.forEach(function (key) {
      Object.defineProperty(_this, key, {
        get: function get() {
          return vm[key];
        },
        set: function set(value) {
          vm[key] = value;
        },
        configurable: true
      });
    });
  }; // should be acquired class property values


  var data = new Component(); // restore original _init to avoid memory leak (#209)

  Component.prototype._init = originalInit; // create plain data object

  var plainData = {};
  Object.keys(data).forEach(function (key) {
    if (data[key] !== undefined) {
      plainData[key] = data[key];
    }
  });

  if (true) {
    if (!(Component.prototype instanceof vue__WEBPACK_IMPORTED_MODULE_0__["default"]) && Object.keys(plainData).length > 0) {
      warn('Component class must inherit Vue or its descendant class ' + 'when class property is used.');
    }
  }

  return plainData;
}

var $internalHooks = ['data', 'beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeDestroy', 'destroyed', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'render', 'errorCaptured', 'serverPrefetch' // 2.6
];
function componentFactory(Component) {
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  options.name = options.name || Component._componentTag || Component.name; // prototype props.

  var proto = Component.prototype;
  Object.getOwnPropertyNames(proto).forEach(function (key) {
    if (key === 'constructor') {
      return;
    } // hooks


    if ($internalHooks.indexOf(key) > -1) {
      options[key] = proto[key];
      return;
    }

    var descriptor = Object.getOwnPropertyDescriptor(proto, key);

    if (descriptor.value !== void 0) {
      // methods
      if (typeof descriptor.value === 'function') {
        (options.methods || (options.methods = {}))[key] = descriptor.value;
      } else {
        // typescript decorated data
        (options.mixins || (options.mixins = [])).push({
          data: function data() {
            return _defineProperty({}, key, descriptor.value);
          }
        });
      }
    } else if (descriptor.get || descriptor.set) {
      // computed properties
      (options.computed || (options.computed = {}))[key] = {
        get: descriptor.get,
        set: descriptor.set
      };
    }
  });
  (options.mixins || (options.mixins = [])).push({
    data: function data() {
      return collectDataFromConstructor(this, Component);
    }
  }); // decorate options

  var decorators = Component.__decorators__;

  if (decorators) {
    decorators.forEach(function (fn) {
      return fn(options);
    });
    delete Component.__decorators__;
  } // find super


  var superProto = Object.getPrototypeOf(Component.prototype);
  var Super = superProto instanceof vue__WEBPACK_IMPORTED_MODULE_0__["default"] ? superProto.constructor : vue__WEBPACK_IMPORTED_MODULE_0__["default"];
  var Extended = Super.extend(options);
  forwardStaticMembers(Extended, Component, Super);

  if (reflectionIsSupported()) {
    copyReflectionMetadata(Extended, Component);
  }

  return Extended;
}
var reservedPropertyNames = [// Unique id
'cid', // Super Vue constructor
'super', // Component options that will be used by the component
'options', 'superOptions', 'extendOptions', 'sealedOptions', // Private assets
'component', 'directive', 'filter'];
var shouldIgnore = {
  prototype: true,
  arguments: true,
  callee: true,
  caller: true
};

function forwardStaticMembers(Extended, Original, Super) {
  // We have to use getOwnPropertyNames since Babel registers methods as non-enumerable
  Object.getOwnPropertyNames(Original).forEach(function (key) {
    // Skip the properties that should not be overwritten
    if (shouldIgnore[key]) {
      return;
    } // Some browsers does not allow reconfigure built-in properties


    var extendedDescriptor = Object.getOwnPropertyDescriptor(Extended, key);

    if (extendedDescriptor && !extendedDescriptor.configurable) {
      return;
    }

    var descriptor = Object.getOwnPropertyDescriptor(Original, key); // If the user agent does not support `__proto__` or its family (IE <= 10),
    // the sub class properties may be inherited properties from the super class in TypeScript.
    // We need to exclude such properties to prevent to overwrite
    // the component options object which stored on the extended constructor (See #192).
    // If the value is a referenced value (object or function),
    // we can check equality of them and exclude it if they have the same reference.
    // If it is a primitive value, it will be forwarded for safety.

    if (!hasProto) {
      // Only `cid` is explicitly exluded from property forwarding
      // because we cannot detect whether it is a inherited property or not
      // on the no `__proto__` environment even though the property is reserved.
      if (key === 'cid') {
        return;
      }

      var superDescriptor = Object.getOwnPropertyDescriptor(Super, key);

      if (!isPrimitive(descriptor.value) && superDescriptor && superDescriptor.value === descriptor.value) {
        return;
      }
    } // Warn if the users manually declare reserved properties


    if ( true && reservedPropertyNames.indexOf(key) >= 0) {
      warn("Static property name '".concat(key, "' declared on class '").concat(Original.name, "' ") + 'conflicts with reserved property name of Vue internal. ' + 'It may cause unexpected behavior of the component. Consider renaming the property.');
    }

    Object.defineProperty(Extended, key, descriptor);
  });
}

function Component(options) {
  if (typeof options === 'function') {
    return componentFactory(options);
  }

  return function (Component) {
    return componentFactory(Component, options);
  };
}

Component.registerHooks = function registerHooks(keys) {
  $internalHooks.push.apply($internalHooks, _toConsumableArray(keys));
};

/* harmony default export */ __webpack_exports__["default"] = (Component);



/***/ }),

/***/ "./node_modules/vue-click-outside/index.js":
/*!*************************************************!*\
  !*** ./node_modules/vue-click-outside/index.js ***!
  \*************************************************/
/*! no static exports found */
/***/ (function(module, exports) {

function validate(binding) {
  if (typeof binding.value !== 'function') {
    console.warn('[Vue-click-outside:] provided expression', binding.expression, 'is not a function.')
    return false
  }

  return true
}

function isPopup(popupItem, elements) {
  if (!popupItem || !elements)
    return false

  for (var i = 0, len = elements.length; i < len; i++) {
    try {
      if (popupItem.contains(elements[i])) {
        return true
      }
      if (elements[i].contains(popupItem)) {
        return false
      }
    } catch(e) {
      return false
    }
  }

  return false
}

function isServer(vNode) {
  return typeof vNode.componentInstance !== 'undefined' && vNode.componentInstance.$isServer
}

exports = module.exports = {
  bind: function (el, binding, vNode) {
    if (!validate(binding)) return

    // Define Handler and cache it on the element
    function handler(e) {
      if (!vNode.context) return

      // some components may have related popup item, on which we shall prevent the click outside event handler.
      var elements = e.path || (e.composedPath && e.composedPath())
      elements && elements.length > 0 && elements.unshift(e.target)

      if (el.contains(e.target) || isPopup(vNode.context.popupItem, elements)) return

      el.__vueClickOutside__.callback(e)
    }

    // add Event Listeners
    el.__vueClickOutside__ = {
      handler: handler,
      callback: binding.value
    }
    const clickHandler = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';
    !isServer(vNode) && document.addEventListener(clickHandler, handler)
  },

  update: function (el, binding) {
    if (validate(binding)) el.__vueClickOutside__.callback = binding.value
  },

  unbind: function (el, binding, vNode) {
    // Remove Event Listeners
    const clickHandler = 'ontouchstart' in document.documentElement ? 'touchstart' : 'click';
    !isServer(vNode) && el.__vueClickOutside__ && document.removeEventListener(clickHandler, el.__vueClickOutside__.handler)
    delete el.__vueClickOutside__
  }
}


/***/ }),

/***/ "./node_modules/vue-cropper/dist/index.js":
/*!************************************************!*\
  !*** ./node_modules/vue-cropper/dist/index.js ***!
  \************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

!function(t,e){ true?module.exports=e():undefined}(self,(()=>(()=>{"use strict";var t={814:(t,e,n)=>{n.d(e,{Z:()=>u});var i=n(537),r=n.n(i),o=n(645),s=n.n(o),a=n(667),h=n.n(a),c=new URL(n(738),n.b),p=s()(r()),l=h()(c);p.push([t.id,`\n.vue-cropper[data-v-998fa048] {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  box-sizing: border-box;\n  user-select: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  direction: ltr;\n  touch-action: none;\n  text-align: left;\n  background-image: url(${l});\n}\n.cropper-box[data-v-998fa048],\n.cropper-box-canvas[data-v-998fa048],\n.cropper-drag-box[data-v-998fa048],\n.cropper-crop-box[data-v-998fa048],\n.cropper-face[data-v-998fa048] {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  user-select: none;\n}\n.cropper-box-canvas img[data-v-998fa048] {\n  position: relative;\n  text-align: left;\n  user-select: none;\n  transform: none;\n  max-width: none;\n  max-height: none;\n}\n.cropper-box[data-v-998fa048] {\n  overflow: hidden;\n}\n.cropper-move[data-v-998fa048] {\n  cursor: move;\n}\n.cropper-crop[data-v-998fa048] {\n  cursor: crosshair;\n}\n.cropper-modal[data-v-998fa048] {\n  background: rgba(0, 0, 0, 0.5);\n}\n.cropper-crop-box[data-v-998fa048] {\n  /*border: 2px solid #39f;*/\n}\n.cropper-view-box[data-v-998fa048] {\n  display: block;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n  outline: 1px solid #39f;\n  outline-color: rgba(51, 153, 255, 0.75);\n  user-select: none;\n}\n.cropper-view-box img[data-v-998fa048] {\n  user-select: none;\n  text-align: left;\n  max-width: none;\n  max-height: none;\n}\n.cropper-face[data-v-998fa048] {\n  top: 0;\n  left: 0;\n  background-color: #fff;\n  opacity: 0.1;\n}\n.crop-info[data-v-998fa048] {\n  position: absolute;\n  left: 0px;\n  min-width: 65px;\n  text-align: center;\n  color: white;\n  line-height: 20px;\n  background-color: rgba(0, 0, 0, 0.8);\n  font-size: 12px;\n}\n.crop-line[data-v-998fa048] {\n  position: absolute;\n  display: block;\n  width: 100%;\n  height: 100%;\n  opacity: 0.1;\n}\n.line-w[data-v-998fa048] {\n  top: -3px;\n  left: 0;\n  height: 5px;\n  cursor: n-resize;\n}\n.line-a[data-v-998fa048] {\n  top: 0;\n  left: -3px;\n  width: 5px;\n  cursor: w-resize;\n}\n.line-s[data-v-998fa048] {\n  bottom: -3px;\n  left: 0;\n  height: 5px;\n  cursor: s-resize;\n}\n.line-d[data-v-998fa048] {\n  top: 0;\n  right: -3px;\n  width: 5px;\n  cursor: e-resize;\n}\n.crop-point[data-v-998fa048] {\n  position: absolute;\n  width: 8px;\n  height: 8px;\n  opacity: 0.75;\n  background-color: #39f;\n  border-radius: 100%;\n}\n.point1[data-v-998fa048] {\n  top: -4px;\n  left: -4px;\n  cursor: nw-resize;\n}\n.point2[data-v-998fa048] {\n  top: -5px;\n  left: 50%;\n  margin-left: -3px;\n  cursor: n-resize;\n}\n.point3[data-v-998fa048] {\n  top: -4px;\n  right: -4px;\n  cursor: ne-resize;\n}\n.point4[data-v-998fa048] {\n  top: 50%;\n  left: -4px;\n  margin-top: -3px;\n  cursor: w-resize;\n}\n.point5[data-v-998fa048] {\n  top: 50%;\n  right: -4px;\n  margin-top: -3px;\n  cursor: e-resize;\n}\n.point6[data-v-998fa048] {\n  bottom: -5px;\n  left: -4px;\n  cursor: sw-resize;\n}\n.point7[data-v-998fa048] {\n  bottom: -5px;\n  left: 50%;\n  margin-left: -3px;\n  cursor: s-resize;\n}\n.point8[data-v-998fa048] {\n  bottom: -5px;\n  right: -4px;\n  cursor: se-resize;\n}\n@media screen and (max-width: 500px) {\n.crop-point[data-v-998fa048] {\n    position: absolute;\n    width: 20px;\n    height: 20px;\n    opacity: 0.45;\n    background-color: #39f;\n    border-radius: 100%;\n}\n.point1[data-v-998fa048] {\n    top: -10px;\n    left: -10px;\n}\n.point2[data-v-998fa048],\n  .point4[data-v-998fa048],\n  .point5[data-v-998fa048],\n  .point7[data-v-998fa048] {\n    display: none;\n}\n.point3[data-v-998fa048] {\n    top: -10px;\n    right: -10px;\n}\n.point4[data-v-998fa048] {\n    top: 0;\n    left: 0;\n}\n.point6[data-v-998fa048] {\n    bottom: -10px;\n    left: -10px;\n}\n.point8[data-v-998fa048] {\n    bottom: -10px;\n    right: -10px;\n}\n}\n`,"",{version:3,sources:["webpack://./src/vue-cropper.vue"],names:[],mappings:";AAs7DA;EACA,kBAAA;EACA,WAAA;EACA,YAAA;EACA,sBAAA;EACA,iBAAA;EACA,yBAAA;EACA,sBAAA;EACA,qBAAA;EACA,cAAA;EACA,kBAAA;EACA,gBAAA;EACA,yDAAA;AACA;AAEA;;;;;EAKA,kBAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;EACA,OAAA;EACA,iBAAA;AACA;AAEA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,eAAA;EACA,eAAA;EACA,gBAAA;AACA;AAEA;EACA,gBAAA;AACA;AAEA;EACA,YAAA;AACA;AAEA;EACA,iBAAA;AACA;AAEA;EACA,8BAAA;AACA;AAEA;EACA,0BAAA;AACA;AAEA;EACA,cAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,uBAAA;EACA,uCAAA;EACA,iBAAA;AACA;AAEA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;EACA,gBAAA;AACA;AAEA;EACA,MAAA;EACA,OAAA;EACA,sBAAA;EACA,YAAA;AACA;AAEA;EACA,kBAAA;EACA,SAAA;EACA,eAAA;EACA,kBAAA;EACA,YAAA;EACA,iBAAA;EACA,oCAAA;EACA,eAAA;AACA;AAEA;EACA,kBAAA;EACA,cAAA;EACA,WAAA;EACA,YAAA;EACA,YAAA;AACA;AAEA;EACA,SAAA;EACA,OAAA;EACA,WAAA;EACA,gBAAA;AACA;AAEA;EACA,MAAA;EACA,UAAA;EACA,UAAA;EACA,gBAAA;AACA;AAEA;EACA,YAAA;EACA,OAAA;EACA,WAAA;EACA,gBAAA;AACA;AAEA;EACA,MAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;AACA;AAEA;EACA,kBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,sBAAA;EACA,mBAAA;AACA;AAEA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;AACA;AAEA;EACA,SAAA;EACA,SAAA;EACA,iBAAA;EACA,gBAAA;AACA;AAEA;EACA,SAAA;EACA,WAAA;EACA,iBAAA;AACA;AAEA;EACA,QAAA;EACA,UAAA;EACA,gBAAA;EACA,gBAAA;AACA;AAEA;EACA,QAAA;EACA,WAAA;EACA,gBAAA;EACA,gBAAA;AACA;AAEA;EACA,YAAA;EACA,UAAA;EACA,iBAAA;AACA;AAEA;EACA,YAAA;EACA,SAAA;EACA,iBAAA;EACA,gBAAA;AACA;AAEA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;AACA;AAEA;AACA;IACA,kBAAA;IACA,WAAA;IACA,YAAA;IACA,aAAA;IACA,sBAAA;IACA,mBAAA;AACA;AAEA;IACA,UAAA;IACA,WAAA;AACA;AAEA;;;;IAIA,aAAA;AACA;AAEA;IACA,UAAA;IACA,YAAA;AACA;AAEA;IACA,MAAA;IACA,OAAA;AACA;AAEA;IACA,aAAA;IACA,WAAA;AACA;AAEA;IACA,aAAA;IACA,YAAA;AACA;AACA",sourcesContent:['<template>\n  <div class="vue-cropper" ref="cropper" @mouseover="scaleImg" @mouseout="cancelScale">\n    <div class="cropper-box" v-if="imgs">\n      <div\n        class="cropper-box-canvas"\n        v-show="!loading"\n        :style="{\n\t\t\t\t\t\'width\': trueWidth + \'px\',\n\t\t\t\t\t\'height\': trueHeight + \'px\',\n\t\t\t\t\t\'transform\': \'scale(\' + scale + \',\' + scale + \') \' + \'translate3d(\'+ x / scale + \'px,\' + y / scale + \'px,\' + \'0)\'\n\t\t\t\t\t+ \'rotateZ(\'+ rotate * 90 +\'deg)\'\n\t\t\t\t\t}"\n      >\n        <img :src="imgs" alt="cropper-img" ref="cropperImg">\n      </div>\n    </div>\n    <div\n      class="cropper-drag-box"\n      :class="{\'cropper-move\': move && !crop, \'cropper-crop\': crop, \'cropper-modal\': cropping}"\n      @mousedown="startMove"\n      @touchstart="startMove"\n    ></div>\n    <div\n      v-show="cropping"\n      class="cropper-crop-box"\n      :style="{\n\t\t\t\t\t\'width\': cropW + \'px\',\n\t\t\t\t\t\'height\': cropH + \'px\',\n\t\t\t\t\t\'transform\': \'translate3d(\'+ cropOffsertX + \'px,\' + cropOffsertY + \'px,\' + \'0)\'\n\t\t\t\t}"\n    >\n      <span class="cropper-view-box">\n        <img\n          :style="{\n\t\t\t\t\t\t\'width\': trueWidth + \'px\',\n\t\t\t\t\t\t\'height\': trueHeight + \'px\',\n\t\t\t\t\t\t\'transform\': \'scale(\' + scale + \',\' + scale + \') \' + \'translate3d(\'+ (x - cropOffsertX) / scale  + \'px,\' + (y - cropOffsertY) / scale + \'px,\' + \'0)\'\n\t\t\t\t\t\t+ \'rotateZ(\'+ rotate * 90 +\'deg)\'\n\t\t\t\t\t\t}"\n          :src="imgs"\n          alt="cropper-img"\n        >\n      </span>\n      <span class="cropper-face cropper-move" @mousedown="cropMove" @touchstart="cropMove"></span>\n      <span\n        class="crop-info"\n        v-if="info"\n        :style="{\'top\': cropInfo.top}"\n      >{{ cropInfo.width }} × {{ cropInfo.height }}</span>\n      <span v-if="!fixedBox">\n        <span\n          class="crop-line line-w"\n          @mousedown="changeCropSize($event, false, true, 0, 1)"\n          @touchstart="changeCropSize($event, false, true, 0, 1)"\n        ></span>\n        <span\n          class="crop-line line-a"\n          @mousedown="changeCropSize($event, true, false, 1, 0)"\n          @touchstart="changeCropSize($event, true, false, 1, 0)"\n        ></span>\n        <span\n          class="crop-line line-s"\n          @mousedown="changeCropSize($event, false, true, 0, 2)"\n          @touchstart="changeCropSize($event, false, true, 0, 2)"\n        ></span>\n        <span\n          class="crop-line line-d"\n          @mousedown="changeCropSize($event, true, false, 2, 0)"\n          @touchstart="changeCropSize($event, true, false, 2, 0)"\n        ></span>\n        <span\n          class="crop-point point1"\n          @mousedown="changeCropSize($event, true, true, 1, 1)"\n          @touchstart="changeCropSize($event, true, true, 1, 1)"\n        ></span>\n        <span\n          class="crop-point point2"\n          @mousedown="changeCropSize($event, false, true, 0, 1)"\n          @touchstart="changeCropSize($event, false, true, 0, 1)"\n        ></span>\n        <span\n          class="crop-point point3"\n          @mousedown="changeCropSize($event, true, true, 2, 1)"\n          @touchstart="changeCropSize($event, true, true, 2, 1)"\n        ></span>\n        <span\n          class="crop-point point4"\n          @mousedown="changeCropSize($event, true, false, 1, 0)"\n          @touchstart="changeCropSize($event, true, false, 1, 0)"\n        ></span>\n        <span\n          class="crop-point point5"\n          @mousedown="changeCropSize($event, true, false, 2, 0)"\n          @touchstart="changeCropSize($event, true, false, 2, 0)"\n        ></span>\n        <span\n          class="crop-point point6"\n          @mousedown="changeCropSize($event, true, true, 1, 2)"\n          @touchstart="changeCropSize($event, true, true, 1, 2)"\n        ></span>\n        <span\n          class="crop-point point7"\n          @mousedown="changeCropSize($event, false, true, 0, 2)"\n          @touchstart="changeCropSize($event, false, true, 0, 2)"\n        ></span>\n        <span\n          class="crop-point point8"\n          @mousedown="changeCropSize($event, true, true, 2, 2)"\n          @touchstart="changeCropSize($event, true, true, 2, 2)"\n        ></span>\n      </span>\n    </div>\n  </div>\n</template>\n\n<script>\nimport exifmin from "./exif-js-min";\n\nexport default {\n  data: function() {\n    return {\n      // 容器高宽\n      w: 0,\n      h: 0,\n      // 图片缩放比例\n      scale: 1,\n      // 图片偏移x轴\n      x: 0,\n      // 图片偏移y轴\n      y: 0,\n      // 图片加载\n      loading: true,\n      // 图片真实宽度\n      trueWidth: 0,\n      // 图片真实高度\n      trueHeight: 0,\n      move: true,\n      // 移动的x\n      moveX: 0,\n      // 移动的y\n      moveY: 0,\n      // 开启截图\n      crop: false,\n      // 正在截图\n      cropping: false,\n      // 裁剪框大小\n      cropW: 0,\n      cropH: 0,\n      cropOldW: 0,\n      cropOldH: 0,\n      // 判断是否能够改变\n      canChangeX: false,\n      canChangeY: false,\n      // 改变的基准点\n      changeCropTypeX: 1,\n      changeCropTypeY: 1,\n      // 裁剪框的坐标轴\n      cropX: 0,\n      cropY: 0,\n      cropChangeX: 0,\n      cropChangeY: 0,\n      cropOffsertX: 0,\n      cropOffsertY: 0,\n      // 支持的滚动事件\n      support: "",\n      // 移动端手指缩放\n      touches: [],\n      touchNow: false,\n      // 图片旋转\n      rotate: 0,\n      isIos: false,\n      orientation: 0,\n      imgs: "",\n      // 图片缩放系数\n      coe: 0.2,\n      // 是否正在多次缩放\n      scaling: false,\n      scalingSet: "",\n      coeStatus: "",\n      // 控制emit触发频率\n      isCanShow: true\n    };\n  },\n  props: {\n    img: {\n      type: [String, Blob, null, File],\n      default: ""\n    },\n    // 输出图片压缩比\n    outputSize: {\n      type: Number,\n      default: 1\n    },\n    outputType: {\n      type: String,\n      default: "jpeg"\n    },\n    info: {\n      type: Boolean,\n      default: true\n    },\n    // 是否开启滚轮放大缩小\n    canScale: {\n      type: Boolean,\n      default: true\n    },\n    // 是否自成截图框\n    autoCrop: {\n      type: Boolean,\n      default: false\n    },\n    autoCropWidth: {\n      type: [Number, String],\n      default: 0\n    },\n    autoCropHeight: {\n      type: [Number, String],\n      default: 0\n    },\n    // 是否开启固定宽高比\n    fixed: {\n      type: Boolean,\n      default: false\n    },\n    // 宽高比 w/h\n    fixedNumber: {\n      type: Array,\n      default: () => {\n        return [1, 1];\n      }\n    },\n    // 固定大小 禁止改变截图框大小\n    fixedBox: {\n      type: Boolean,\n      default: false\n    },\n    // 输出截图是否缩放\n    full: {\n      type: Boolean,\n      default: false\n    },\n    // 是否可以拖动图片\n    canMove: {\n      type: Boolean,\n      default: true\n    },\n    // 是否可以拖动截图框\n    canMoveBox: {\n      type: Boolean,\n      default: true\n    },\n    // 上传图片按照原始比例显示\n    original: {\n      type: Boolean,\n      default: false\n    },\n    // 截图框能否超过图片\n    centerBox: {\n      type: Boolean,\n      default: false\n    },\n    // 是否根据dpr输出高清图片\n    high: {\n      type: Boolean,\n      default: true\n    },\n    // 截图框展示宽高类型\n    infoTrue: {\n      type: Boolean,\n      default: false\n    },\n    // 可以压缩图片宽高  默认不超过200\n    maxImgSize: {\n      type: [Number, String],\n      default: 2000\n    },\n    // 倍数  可渲染当前截图框的n倍 0 - 1000;\n    enlarge: {\n      type: [Number, String],\n      default: 1\n    },\n\n    // 自动预览的固定宽度\n    preW: {\n      type: [Number, String],\n      default: 0\n    },\n    /*\n      图片布局方式 mode 实现和css背景一样的效果\n      contain  居中布局 默认不会缩放 保证图片在容器里面 mode: \'contain\'\n      cover    拉伸布局 填充整个容器  mode: \'cover\'\n      如果仅有一个数值被给定，这个数值将作为宽度值大小，高度值将被设定为auto。 mode: \'50px\'\n      如果有两个数值被给定，第一个将作为宽度值大小，第二个作为高度值大小。 mode: \'50px 60px\'\n    */\n    mode: {\n      type: String,\n      default: "contain"\n    },\n    //限制最小区域,可传1以上的数字和字符串，限制长宽都是这么大\n    // 也可以传数组[90,90] \n    limitMinSize: {\n      type: [Number, Array, String],\n      default: () => {\n        return 10;\n      },\n      validator: function (value) {\n        if (Array.isArray(value)) {\n          return Number(value[0]) >= 0 && Number(value[1]) >= 0;\n        } else {\n          return Number(value) >= 0;\n        }\n      },\n    },\n    // 导出时,填充背景颜色\n    fillColor: {\n      type: String,\n      default: "",\n    },\n  },\n  computed: {\n    cropInfo() {\n      let obj = {};\n      obj.top = this.cropOffsertY > 21 ? "-21px" : "0px";\n      obj.width = this.cropW > 0 ? this.cropW : 0;\n      obj.height = this.cropH > 0 ? this.cropH : 0;\n      if (this.infoTrue) {\n        let dpr = 1;\n        if (this.high && !this.full) {\n          dpr = window.devicePixelRatio;\n        }\n        if ((this.enlarge !== 1) & !this.full) {\n          dpr = Math.abs(Number(this.enlarge));\n        }\n        obj.width = obj.width * dpr;\n        obj.height = obj.height * dpr;\n        if (this.full) {\n          obj.width = obj.width / this.scale;\n          obj.height = obj.height / this.scale;\n        }\n      }\n      obj.width = obj.width.toFixed(0);\n      obj.height = obj.height.toFixed(0);\n      return obj;\n    },\n\n    isIE() {\n      var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串\n      const isIE = !!window.ActiveXObject || \'ActiveXObject\' in window; //判断是否IE浏览器\n      return isIE;\n    },\n\n    passive () {\n      return this.isIE ? null : {\n        passive: false\n      }\n    }\n  },\n  watch: {\n    // 如果图片改变， 重新布局\n    img() {\n      // 当传入图片时, 读取图片信息同时展示\n      this.checkedImg();\n    },\n    imgs(val) {\n      if (val === "") {\n        return;\n      }\n      this.reload();\n    },\n    cropW() {\n      this.showPreview();\n    },\n    cropH() {\n      this.showPreview();\n    },\n    cropOffsertX() {\n      this.showPreview();\n    },\n    cropOffsertY() {\n      this.showPreview();\n    },\n    scale(val, oldVal) {\n      this.showPreview();\n    },\n    x() {\n      this.showPreview();\n    },\n    y() {\n      this.showPreview();\n    },\n    autoCrop(val) {\n      if (val) {\n        this.goAutoCrop();\n      }\n    },\n    // 修改了自动截图框\n    autoCropWidth() {\n      if (this.autoCrop) {\n        this.goAutoCrop();\n      }\n    },\n    autoCropHeight() {\n      if (this.autoCrop) {\n        this.goAutoCrop();\n      }\n    },\n    mode() {\n      this.checkedImg();\n    },\n    rotate() {\n      this.showPreview();\n      if (this.autoCrop) {\n        this.goAutoCrop(this.cropW, this.cropH);\n      } else {\n        if (this.cropW > 0 || this.cropH > 0) {\n          this.goAutoCrop(this.cropW, this.cropH);\n        }\n      }\n    }\n  },\n  methods: {\n    getVersion (name) {\n      var arr = navigator.userAgent.split(\' \'); \n      var chromeVersion = \'\';\n      let result = 0;\n      const reg = new RegExp(name, \'i\')\n      for(var i=0;i < arr.length;i++){\n          if(reg.test(arr[i]))\n          chromeVersion = arr[i]\n      }\n      if(chromeVersion){\n          result = chromeVersion.split(\'/\')[1].split(\'.\');\n      } else {\n          result = [\'0\', \'0\', \'0\'];\n      }\n      return result\n    },\n    checkOrientationImage(img, orientation, width, height) {\n      // 如果是 chrome内核版本在81 safari 在 605 以上不处理图片旋转\n      // alert(navigator.userAgent)\n      if (this.getVersion(\'chrome\')[0] >= 81) {\n        orientation = -1\n      } else {\n        if (this.getVersion(\'safari\')[0] >= 605 ) {\n          const safariVersion = this.getVersion(\'version\')\n          if (safariVersion[0] > 13 && safariVersion[1] > 1) {\n              orientation = -1\n          }\n        } else {\n          //  判断 ios 版本进行处理\n         // 针对 ios 版本大于 13.4的系统不做图片旋转\n         const isIos  = navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/)\n         if (isIos) {\n           let version = isIos[1]\n           version = version.split(\'_\')\n           if (version[0] > 13 ||  (version[0] >= 13 && version[1] >= 4)) {\n             orientation = -1\n           }\n         }\n        }\n      }\n      \n      // alert(`当前处理的orientation${orientation}`)\n      let canvas = document.createElement("canvas");\n      let ctx = canvas.getContext("2d");\n      ctx.save();\n      \n      switch (orientation) {\n        case 2:\n          canvas.width = width;\n          canvas.height = height;\n          // horizontal flip\n          ctx.translate(width, 0);\n          ctx.scale(-1, 1);\n          break;\n        case 3:\n          canvas.width = width;\n          canvas.height = height;\n          //180 graus\n          ctx.translate(width / 2, height / 2);\n          ctx.rotate((180 * Math.PI) / 180);\n          ctx.translate(-width / 2, -height / 2);\n          break;\n        case 4:\n          canvas.width = width;\n          canvas.height = height;\n          // vertical flip\n          ctx.translate(0, height);\n          ctx.scale(1, -1);\n          break;\n        case 5:\n          // vertical flip + 90 rotate right\n          canvas.height = width;\n          canvas.width = height;\n          ctx.rotate(0.5 * Math.PI);\n          ctx.scale(1, -1);\n          break;\n        case 6:\n          canvas.width = height;\n          canvas.height = width;\n          //90 graus\n          ctx.translate(height / 2, width / 2);\n          ctx.rotate((90 * Math.PI) / 180);\n          ctx.translate(-width / 2, -height / 2);\n          break;\n        case 7:\n          // horizontal flip + 90 rotate right\n          canvas.height = width;\n          canvas.width = height;\n          ctx.rotate(0.5 * Math.PI);\n          ctx.translate(width, -height);\n          ctx.scale(-1, 1);\n          break;\n        case 8:\n          canvas.height = width;\n          canvas.width = height;\n          //-90 graus\n          ctx.translate(height / 2, width / 2);\n          ctx.rotate((-90 * Math.PI) / 180);\n          ctx.translate(-width / 2, -height / 2);\n          break;\n        default:\n          canvas.width = width;\n          canvas.height = height;\n      }\n\n      ctx.drawImage(img, 0, 0, width, height);\n      ctx.restore();\n      canvas.toBlob(\n        blob => {\n          let data = URL.createObjectURL(blob);\n          URL.revokeObjectURL(this.imgs)\n          this.imgs = data;\n        },\n        "image/" + this.outputType,\n        1\n      );\n    },\n\n    // checkout img\n    checkedImg() {\n      if (this.img === null || this.img === \'\') {\n        this.imgs = \'\'\n        this.clearCrop()\n        return\n      }\n      this.loading = true;\n      this.scale = 1;\n      this.rotate = 0;\n      this.clearCrop();\n      let img = new Image();\n      img.onload = () => {\n        if (this.img === "") {\n          this.$emit("imgLoad", "error");\n          this.$emit("img-load", "error");\n          this.$emit("img-load", new Error(\'图片不能为空\'));\n          return false;\n        }\n\n        let width = img.width;\n        let height = img.height;\n        exifmin.getData(img).then(data => {\n          this.orientation = data.orientation || 1;\n          let max = Number(this.maxImgSize);\n          if (!this.orientation && (width < max) & (height < max)) {\n            this.imgs = this.img;\n            return;\n          }\n\n          if (width > max) {\n            height = (height / width) * max;\n            width = max;\n          }\n\n          if (height > max) {\n            width = (width / height) * max;\n            height = max;\n          }\n          this.checkOrientationImage(img, this.orientation, width, height);\n        }).catch(error => {\n          this.$emit("img-load", "error");\n          this.$emit("img-load-error", error);\n        });\n      };\n\n      img.onerror = () => {\n        this.$emit("imgLoad", "error");\n        this.$emit("img-load", "error");\n        this.$emit("img-load-error", error);\n      };\n\n      // 判断如果不是base64图片 再添加crossOrigin属性，否则会导致iOS低版本(10.2)无法显示图片\n      if (this.img.substr(0, 4) !== "data") {\n        img.crossOrigin = "";\n      }\n\n      if (this.isIE) {\n        var xhr = new XMLHttpRequest();\n        xhr.onload = function() {\n          var url = URL.createObjectURL(this.response);\n          img.src = url;\n        };\n        xhr.open("GET", this.img, true);\n        xhr.responseType = "blob";\n        xhr.send();\n      } else {\n        img.src = this.img;\n      }\n    },\n    // 当按下鼠标键\n    startMove(e) {\n      e.preventDefault();\n      // 如果move 为true 表示当前可以拖动\n      if (this.move && !this.crop) {\n        if (!this.canMove) {\n          return false;\n        }\n        // 开始移动\n        this.moveX = (\'clientX\' in e ? e.clientX : e.touches[0].clientX) - this.x;\n        this.moveY = (\'clientY\' in e ? e.clientY : e.touches[0].clientY) - this.y;\n        if (e.touches) {\n          window.addEventListener("touchmove", this.moveImg);\n          window.addEventListener("touchend", this.leaveImg);\n          if (e.touches.length == 2) {\n            // 记录手指刚刚放上去\n            this.touches = e.touches;\n            window.addEventListener("touchmove", this.touchScale);\n            window.addEventListener("touchend", this.cancelTouchScale);\n          }\n        } else {\n          window.addEventListener("mousemove", this.moveImg);\n          window.addEventListener("mouseup", this.leaveImg);\n        }\n        // 触发图片移动事件\n        this.$emit("imgMoving", {\n          moving: true,\n          axis: this.getImgAxis()\n        });\n        this.$emit("img-moving", {\n          moving: true,\n          axis: this.getImgAxis()\n        });\n      } else {\n        // 截图ing\n        this.cropping = true;\n        // 绑定截图事件\n        window.addEventListener("mousemove", this.createCrop);\n        window.addEventListener("mouseup", this.endCrop);\n        window.addEventListener("touchmove", this.createCrop);\n        window.addEventListener("touchend", this.endCrop);\n        this.cropOffsertX = e.offsetX\n          ? e.offsetX\n          : e.touches[0].pageX - this.$refs.cropper.offsetLeft;\n        this.cropOffsertY = e.offsetY\n          ? e.offsetY\n          : e.touches[0].pageY - this.$refs.cropper.offsetTop;\n        this.cropX = \'clientX\' in e ? e.clientX : e.touches[0].clientX;\n        this.cropY = \'clientY\' in e ? e.clientY : e.touches[0].clientY;\n        this.cropChangeX = this.cropOffsertX;\n        this.cropChangeY = this.cropOffsertY;\n        this.cropW = 0;\n        this.cropH = 0;\n      }\n    },\n\n    // 移动端缩放\n    touchScale(e) {\n      e.preventDefault();\n      let scale = this.scale;\n      // 记录变化量\n      // 第一根手指\n      var oldTouch1 = {\n        x: this.touches[0].clientX,\n        y: this.touches[0].clientY\n      };\n      var newTouch1 = {\n        x: e.touches[0].clientX,\n        y: e.touches[0].clientY\n      };\n      // 第二根手指\n      var oldTouch2 = {\n        x: this.touches[1].clientX,\n        y: this.touches[1].clientY\n      };\n      var newTouch2 = {\n        x: e.touches[1].clientX,\n        y: e.touches[1].clientY\n      };\n      var oldL = Math.sqrt(\n        Math.pow(oldTouch1.x - oldTouch2.x, 2) +\n          Math.pow(oldTouch1.y - oldTouch2.y, 2)\n      );\n      var newL = Math.sqrt(\n        Math.pow(newTouch1.x - newTouch2.x, 2) +\n          Math.pow(newTouch1.y - newTouch2.y, 2)\n      );\n      var cha = newL - oldL;\n      // 根据图片本身大小 决定每次改变大小的系数, 图片越大系数越小\n      // 1px - 0.2\n      var coe = 1;\n      coe =\n        coe / this.trueWidth > coe / this.trueHeight\n          ? coe / this.trueHeight\n          : coe / this.trueWidth;\n      coe = coe > 0.1 ? 0.1 : coe;\n      var num = coe * cha;\n      if (!this.touchNow) {\n        this.touchNow = true;\n        if (cha > 0) {\n          scale += Math.abs(num);\n        } else if (cha < 0) {\n          scale > Math.abs(num) ? (scale -= Math.abs(num)) : scale;\n        }\n        this.touches = e.touches;\n        setTimeout(() => {\n          this.touchNow = false;\n        }, 8);\n        if (!this.checkoutImgAxis(this.x, this.y, scale)) {\n          return false;\n        }\n        this.scale = scale;\n      }\n    },\n\n    cancelTouchScale(e) {\n      window.removeEventListener("touchmove", this.touchScale);\n    },\n\n    // 移动图片\n    moveImg(e) {\n      e.preventDefault();\n      if (e.touches && e.touches.length === 2) {\n        this.touches = e.touches;\n        window.addEventListener("touchmove", this.touchScale);\n        window.addEventListener("touchend", this.cancelTouchScale);\n        window.removeEventListener("touchmove", this.moveImg);\n        return false;\n      }\n      let nowX = \'clientX\' in e ? e.clientX : e.touches[0].clientX;\n      let nowY = \'clientY\' in e ? e.clientY : e.touches[0].clientY;\n\n      let changeX, changeY;\n      changeX = nowX - this.moveX;\n      changeY = nowY - this.moveY;\n\n      this.$nextTick(() => {\n        if (this.centerBox) {\n          let axis = this.getImgAxis(changeX, changeY, this.scale);\n          let cropAxis = this.getCropAxis();\n          let imgW = this.trueHeight * this.scale;\n          let imgH = this.trueWidth * this.scale;\n          let maxLeft, maxTop, maxRight, maxBottom;\n          switch (this.rotate) {\n            case 1:\n            case -1:\n            case 3:\n            case -3:\n              maxLeft =\n                this.cropOffsertX -\n                (this.trueWidth * (1 - this.scale)) / 2 +\n                (imgW - imgH) / 2;\n              maxTop =\n                this.cropOffsertY -\n                (this.trueHeight * (1 - this.scale)) / 2 +\n                (imgH - imgW) / 2;\n              maxRight = maxLeft - imgW + this.cropW;\n              maxBottom = maxTop - imgH + this.cropH;\n              break;\n            default:\n              maxLeft =\n                this.cropOffsertX - (this.trueWidth * (1 - this.scale)) / 2;\n              maxTop =\n                this.cropOffsertY - (this.trueHeight * (1 - this.scale)) / 2;\n              maxRight = maxLeft - imgH + this.cropW;\n              maxBottom = maxTop - imgW + this.cropH;\n              break;\n          }\n\n          // 图片左边 图片不能超过截图框\n          if (axis.x1 >= cropAxis.x1) {\n            changeX = maxLeft;\n          }\n\n          // 图片上边 图片不能超过截图框\n          if (axis.y1 >= cropAxis.y1) {\n            changeY = maxTop;\n          }\n\n          // 图片右边\n          if (axis.x2 <= cropAxis.x2) {\n            changeX = maxRight;\n          }\n\n          // 图片下边\n          if (axis.y2 <= cropAxis.y2) {\n            changeY = maxBottom;\n          }\n        }\n        this.x = changeX;\n        this.y = changeY;\n        // 触发图片移动事件\n        this.$emit("imgMoving", {\n          moving: true,\n          axis: this.getImgAxis()\n        });\n        this.$emit("img-moving", {\n          moving: true,\n          axis: this.getImgAxis()\n        });\n      });\n    },\n    // 移动图片结束\n    leaveImg(e) {\n      window.removeEventListener("mousemove", this.moveImg);\n      window.removeEventListener("touchmove", this.moveImg);\n      window.removeEventListener("mouseup", this.leaveImg);\n      window.removeEventListener("touchend", this.leaveImg);\n      // 触发图片移动事件\n      this.$emit("imgMoving", {\n        moving: false,\n        axis: this.getImgAxis()\n      });\n      this.$emit("img-moving", {\n        moving: false,\n        axis: this.getImgAxis()\n      });\n    },\n    // 缩放图片\n    scaleImg() {\n      if (this.canScale) {\n        window.addEventListener(this.support, this.changeSize, this.passive);\n      }\n    },\n    // 移出框\n    cancelScale() {\n      if (this.canScale) {\n        window.removeEventListener(this.support, this.changeSize);\n      }\n    },\n    // 改变大小函数\n    changeSize(e) {\n      e.preventDefault();\n      let scale = this.scale;\n      var change = e.deltaY || e.wheelDelta;\n      // 根据图片本身大小 决定每次改变大小的系数, 图片越大系数越小\n      var isFirefox = navigator.userAgent.indexOf("Firefox");\n      change = isFirefox > 0 ? change * 30 : change;\n      // 修复ie的滚动缩放\n      if (this.isIE) {\n        change = -change;\n      }\n      // 1px - 0.2\n      var coe = this.coe;\n      coe =\n        coe / this.trueWidth > coe / this.trueHeight\n          ? coe / this.trueHeight\n          : coe / this.trueWidth;\n      var num = coe * change;\n      num < 0\n        ? (scale += Math.abs(num))\n        : scale > Math.abs(num)\n        ? (scale -= Math.abs(num))\n        : scale;\n      // 延迟0.1s 每次放大大或者缩小的范围\n      let status = num < 0 ? "add" : "reduce";\n      if (status !== this.coeStatus) {\n        this.coeStatus = status;\n        this.coe = 0.2;\n      }\n      if (!this.scaling) {\n        this.scalingSet = setTimeout(() => {\n          this.scaling = false;\n          this.coe = this.coe += 0.01;\n        }, 50);\n      }\n      this.scaling = true;\n      if (!this.checkoutImgAxis(this.x, this.y, scale)) {\n        return false;\n      }\n      this.scale = scale;\n    },\n\n    // 修改图片大小函数\n    changeScale(num) {\n      let scale = this.scale;\n      num = num || 1;\n      var coe = 20;\n      coe =\n        coe / this.trueWidth > coe / this.trueHeight\n          ? coe / this.trueHeight\n          : coe / this.trueWidth;\n      num = num * coe;\n      num > 0\n        ? (scale += Math.abs(num))\n        : scale > Math.abs(num)\n        ? (scale -= Math.abs(num))\n        : scale;\n      if (!this.checkoutImgAxis(this.x, this.y, scale)) {\n        return false;\n      }\n      this.scale = scale;\n    },\n    // 创建截图框\n    createCrop(e) {\n      e.preventDefault();\n      // 移动生成大小\n      var nowX = \'clientX\' in e ? e.clientX : e.touches ? e.touches[0].clientX : 0;\n      var nowY = \'clientY\' in e ? e.clientY : e.touches ? e.touches[0].clientY : 0;\n      this.$nextTick(() => {\n        var fw = nowX - this.cropX;\n        var fh = nowY - this.cropY;\n        if (fw > 0) {\n          this.cropW =\n            fw + this.cropChangeX > this.w ? this.w - this.cropChangeX : fw;\n          this.cropOffsertX = this.cropChangeX;\n        } else {\n          this.cropW =\n            this.w - this.cropChangeX + Math.abs(fw) > this.w\n              ? this.cropChangeX\n              : Math.abs(fw);\n          this.cropOffsertX =\n            this.cropChangeX + fw > 0 ? this.cropChangeX + fw : 0;\n        }\n\n        if (!this.fixed) {\n          if (fh > 0) {\n            this.cropH =\n              fh + this.cropChangeY > this.h ? this.h - this.cropChangeY : fh;\n            this.cropOffsertY = this.cropChangeY;\n          } else {\n            this.cropH =\n              this.h - this.cropChangeY + Math.abs(fh) > this.h\n                ? this.cropChangeY\n                : Math.abs(fh);\n            this.cropOffsertY =\n              this.cropChangeY + fh > 0 ? this.cropChangeY + fh : 0;\n          }\n        } else {\n          var fixedHeight =\n            (this.cropW / this.fixedNumber[0]) * this.fixedNumber[1];\n          if (fixedHeight + this.cropOffsertY > this.h) {\n            this.cropH = this.h - this.cropOffsertY;\n            this.cropW =\n              (this.cropH / this.fixedNumber[1]) * this.fixedNumber[0];\n            if (fw > 0) {\n              this.cropOffsertX = this.cropChangeX;\n            } else {\n              this.cropOffsertX = this.cropChangeX - this.cropW;\n            }\n          } else {\n            this.cropH = fixedHeight;\n          }\n          this.cropOffsertY = this.cropOffsertY;\n        }\n      });\n    },\n\n    // 改变截图框大小\n    changeCropSize(e, w, h, typeW, typeH) {\n      e.preventDefault();\n      window.addEventListener("mousemove", this.changeCropNow);\n      window.addEventListener("mouseup", this.changeCropEnd);\n      window.addEventListener("touchmove", this.changeCropNow);\n      window.addEventListener("touchend", this.changeCropEnd);\n      this.canChangeX = w;\n      this.canChangeY = h;\n      this.changeCropTypeX = typeW;\n      this.changeCropTypeY = typeH;\n      this.cropX = \'clientX\' in e ? e.clientX : e.touches[0].clientX;\n      this.cropY = \'clientY\' in e ? e.clientY : e.touches[0].clientY;\n      this.cropOldW = this.cropW;\n      this.cropOldH = this.cropH;\n      this.cropChangeX = this.cropOffsertX;\n      this.cropChangeY = this.cropOffsertY;\n      if (this.fixed) {\n        if (this.canChangeX && this.canChangeY) {\n          this.canChangeY = 0;\n        }\n      }\n      this.$emit(\'changeCropSize\', {\n        width: this.cropW,\n        height: this.cropH\n      })\n      this.$emit(\'change-crop-size\', {\n        width: this.cropW,\n        height: this.cropH\n      })\n    },\n\n    // 正在改变\n    changeCropNow(e) {\n      e.preventDefault();\n      var nowX = \'clientX\' in e ? e.clientX : e.touches ? e.touches[0].clientX : 0;\n      var nowY = \'clientY\' in e ? e.clientY : e.touches ? e.touches[0].clientY : 0;\n      // 容器的宽高\n      let wrapperW = this.w;\n      let wrapperH = this.h;\n\n      // 不能超过的坐标轴\n      let minX = 0;\n      let minY = 0;\n\n      if (this.centerBox) {\n        let axis = this.getImgAxis();\n        let imgW = axis.x2;\n        let imgH = axis.y2;\n        minX = axis.x1 > 0 ? axis.x1 : 0;\n        minY = axis.y1 > 0 ? axis.y1 : 0;\n        if (wrapperW > imgW) {\n          wrapperW = imgW;\n        }\n\n        if (wrapperH > imgH) {\n          wrapperH = imgH;\n        }\n      }\n      const [minCropW,minCropH] = this.checkCropLimitSize()\n      this.$nextTick(() => {\n        var fw = nowX - this.cropX;\n        var fh = nowY - this.cropY;\n        if (this.canChangeX) {\n          if (this.changeCropTypeX === 1) {\n            if (this.cropOldW - fw < minCropW) {\n              this.cropW = minCropW\n              this.cropOffsertX = this.cropOldW + this.cropChangeX - minX - minCropW\n            } else if (this.cropOldW - fw > 0) {\n              this.cropW =\n                wrapperW - this.cropChangeX - fw <= wrapperW - minX\n                  ? this.cropOldW - fw\n                  : this.cropOldW + this.cropChangeX - minX;\n              this.cropOffsertX =\n                wrapperW - this.cropChangeX - fw <= wrapperW - minX\n                  ? this.cropChangeX + fw\n                  : minX;\n            } else {\n              this.cropW =\n                Math.abs(fw) + this.cropChangeX <= wrapperW\n                  ? Math.abs(fw) - this.cropOldW\n                  : wrapperW - this.cropOldW - this.cropChangeX;\n              this.cropOffsertX = this.cropChangeX + this.cropOldW;\n            }\n          } else if (this.changeCropTypeX === 2) {\n            if (this.cropOldW + fw < minCropW) {\n              this.cropW = minCropW\n            } else if (this.cropOldW + fw > 0) {\n              this.cropW =\n                this.cropOldW + fw + this.cropOffsertX <= wrapperW\n                  ? this.cropOldW + fw\n                  : wrapperW - this.cropOffsertX;\n              this.cropOffsertX = this.cropChangeX;\n            } else {\n              // 右侧坐标抽 超过左侧\n              this.cropW =\n                wrapperW - this.cropChangeX + Math.abs(fw + this.cropOldW) <=\n                wrapperW - minX\n                  ? Math.abs(fw + this.cropOldW)\n                  : this.cropChangeX - minX;\n              this.cropOffsertX =\n                wrapperW - this.cropChangeX + Math.abs(fw + this.cropOldW) <=\n                wrapperW - minX\n                  ? this.cropChangeX - Math.abs(fw + this.cropOldW)\n                  : minX;\n            }\n          }\n        }\n\n        if (this.canChangeY) {\n          if (this.changeCropTypeY === 1) {\n            if (this.cropOldH - fh < minCropH) {\n              this.cropH = minCropH\n              this.cropOffsertY = this.cropOldH + this.cropChangeY - minY - minCropH\n            } else if (this.cropOldH - fh > 0) {\n              this.cropH =\n                wrapperH - this.cropChangeY - fh <= wrapperH - minY\n                  ? this.cropOldH - fh\n                  : this.cropOldH + this.cropChangeY - minY;\n              this.cropOffsertY =\n                wrapperH - this.cropChangeY - fh <= wrapperH - minY\n                  ? this.cropChangeY + fh\n                  : minY;\n            } else {\n              this.cropH =\n                Math.abs(fh) + this.cropChangeY <= wrapperH\n                  ? Math.abs(fh) - this.cropOldH\n                  : wrapperH - this.cropOldH - this.cropChangeY;\n              this.cropOffsertY = this.cropChangeY + this.cropOldH;\n            }\n          } else if (this.changeCropTypeY === 2) {\n            if (this.cropOldH + fh < minCropH) {\n              this.cropH = minCropH\n            } else if (this.cropOldH + fh > 0) {\n              this.cropH =\n                this.cropOldH + fh + this.cropOffsertY <= wrapperH\n                  ? this.cropOldH + fh\n                  : wrapperH - this.cropOffsertY;\n              this.cropOffsertY = this.cropChangeY;\n            } else {\n              this.cropH =\n                wrapperH - this.cropChangeY + Math.abs(fh + this.cropOldH) <=\n                wrapperH - minY\n                  ? Math.abs(fh + this.cropOldH)\n                  : this.cropChangeY - minY;\n              this.cropOffsertY =\n                wrapperH - this.cropChangeY + Math.abs(fh + this.cropOldH) <=\n                wrapperH - minY\n                  ? this.cropChangeY - Math.abs(fh + this.cropOldH)\n                  : minY;\n            }\n          }\n        }\n\n        if (this.canChangeX && this.fixed) {\n          var fixedHeight =\n            (this.cropW / this.fixedNumber[0]) * this.fixedNumber[1];\n          if (fixedHeight < minCropH) {\n            this.cropH = minCropH\n            this.cropW = this.fixedNumber[0] * minCropH / this.fixedNumber[1]\n            // 这里需要去修改 offsetX的值，去调整因为高度变化而导致的宽度变化\n            if (this.changeCropTypeX === 1) {\n              this.cropOffsertX = this.cropChangeX + (this.cropOldW - this.cropW)\n            }\n          } else if (fixedHeight + this.cropOffsertY > wrapperH) {\n            this.cropH = wrapperH - this.cropOffsertY;\n            this.cropW =\n              (this.cropH / this.fixedNumber[1]) * this.fixedNumber[0];\n            if (this.changeCropTypeX === 1) {\n              this.cropOffsertX = this.cropChangeX + (this.cropOldW - this.cropW)\n            }\n          } else {\n            this.cropH = fixedHeight;\n          }\n        }\n\n        if (this.canChangeY && this.fixed) {\n          var fixedWidth =\n            (this.cropH / this.fixedNumber[1]) * this.fixedNumber[0];\n          if (fixedWidth < minCropW) {\n            this.cropW = minCropW\n            this.cropH = this.fixedNumber[1] * minCropW / this.fixedNumber[0];\n          } else if (fixedWidth + this.cropOffsertX > wrapperW) {\n            this.cropW = wrapperW - this.cropOffsertX;\n            this.cropH =\n              (this.cropW / this.fixedNumber[0]) * this.fixedNumber[1];\n          } else {\n            this.cropW = fixedWidth;\n          }\n        }\n\t// 触发截图框改变大小事件\n\tthis.$emit(\'cropSizing\', {cropW: this.cropW, cropH: this.cropH})\n\tthis.$emit(\'crop-sizing\', {cropW: this.cropW, cropH: this.cropH})\n      });\n    },\n\n    checkCropLimitSize () {\n      let { cropW, cropH, limitMinSize } = this;\n\n      let limitMinNum = new Array;\n      if (!Array.isArray(limitMinSize)) {\n        limitMinNum = [limitMinSize, limitMinSize]\n      } else {\n        limitMinNum = limitMinSize\n      }\n      \n      //限制最小宽度和高度\n      cropW = parseFloat(limitMinNum[0])\n      cropH = parseFloat(limitMinNum[1])\n      return [cropW, cropH]\n    },\n    // 结束改变\n    changeCropEnd(e) {\n      window.removeEventListener("mousemove", this.changeCropNow);\n      window.removeEventListener("mouseup", this.changeCropEnd);\n      window.removeEventListener("touchmove", this.changeCropNow);\n      window.removeEventListener("touchend", this.changeCropEnd);\n    },\n    // 根据比例x/y，最小宽度，最小高度，现有宽度，现有高度，得到应该有的宽度和高度\n    calculateSize(x, y, minX, minY, w, h) {\n      const ratio = x / y;\n      let width = w;\n      let height = h;\n      // 先根据最小宽度来计算高度\n      if (width < minX) {\n        width = minX;\n        height = Math.ceil(width / ratio);\n      }\n      // 如果计算出来的高度小于最小高度，则根据最小高度来重新计算宽度和高度\n      if (height < minY) {\n        height = minY;\n        width = Math.ceil(height * ratio);\n        // 如果重新计算的宽度仍然小于最小宽度，则使用最小宽度，并重新计算高度\n        if (width < minX) {\n          width = minX;\n          height = Math.ceil(width / ratio);\n        }\n      }\n      // 如果计算出来的宽度或高度小于输入的宽度或高度，则分别使用输入的宽度或高度\n      if (width < w) {\n        width = w;\n        height = Math.ceil(width / ratio);\n      }\n      if (height < h) {\n        height = h;\n        width = Math.ceil(height * ratio);\n      }\n      return { width, height };\n    },\n    // 创建完成\n    endCrop() {\n      if (this.cropW === 0 && this.cropH === 0) {\n        this.cropping = false;\n      }\n      let [minCropW, minCropH] = this.checkCropLimitSize();\n      const { width, height } = this.fixed ? this.calculateSize(\n        this.fixedNumber[0],\n        this.fixedNumber[1],\n        minCropW,\n        minCropH,\n        this.cropW,\n        this.cropH\n      ) : { width: minCropW, height: minCropH }\n      if (width > this.cropW) {\n        this.cropW = width;\n        if (this.cropOffsertX + width > this.w) {\n          this.cropOffsertX = this.w - width;\n        }\n      }\n      if (height > this.cropH) {\n        this.cropH = height;\n        if (this.cropOffsertY + height > this.h) {\n          this.cropOffsertY = this.h - height;\n        }\n      }\n      window.removeEventListener("mousemove", this.createCrop);\n      window.removeEventListener("mouseup", this.endCrop);\n      window.removeEventListener("touchmove", this.createCrop);\n      window.removeEventListener("touchend", this.endCrop);\n    },\n    // 开始截图\n    startCrop() {\n      this.crop = true;\n    },\n    // 停止截图\n    stopCrop() {\n      this.crop = false;\n    },\n    // 清除截图\n    clearCrop() {\n      this.cropping = false;\n      this.cropW = 0;\n      this.cropH = 0;\n    },\n    // 截图移动\n    cropMove(e) {\n      e.preventDefault();\n      if (!this.canMoveBox) {\n        this.crop = false;\n        this.startMove(e);\n        return false;\n      }\n\n      if (e.touches && e.touches.length === 2) {\n        this.crop = false;\n        this.startMove(e);\n        this.leaveCrop();\n        return false;\n      }\n      window.addEventListener("mousemove", this.moveCrop);\n      window.addEventListener("mouseup", this.leaveCrop);\n      window.addEventListener("touchmove", this.moveCrop);\n      window.addEventListener("touchend", this.leaveCrop);\n      let x = \'clientX\' in e ? e.clientX : e.touches[0].clientX;\n      let y = \'clientY\' in e ? e.clientY : e.touches[0].clientY;\n      let newX, newY;\n      newX = x - this.cropOffsertX;\n      newY = y - this.cropOffsertY;\n      this.cropX = newX;\n      this.cropY = newY;\n      // 触发截图框移动事件\n      this.$emit("cropMoving", {\n        moving: true,\n        axis: this.getCropAxis()\n      });\n      this.$emit("crop-moving", {\n        moving: true,\n        axis: this.getCropAxis()\n      });\n    },\n\n    moveCrop(e, isMove) {\n      let nowX = 0;\n      let nowY = 0;\n      if (e) {\n        e.preventDefault();\n        nowX = \'clientX\' in e ? e.clientX : e.touches[0].clientX;\n        nowY = \'clientY\' in e ? e.clientY : e.touches[0].clientY;\n      }\n      this.$nextTick(() => {\n        let cx, cy;\n        let fw = nowX - this.cropX;\n        let fh = nowY - this.cropY;\n        if (isMove) {\n          fw = this.cropOffsertX;\n          fh = this.cropOffsertY;\n        }\n        // 不能超过外层容器\n        if (fw <= 0) {\n          cx = 0;\n        } else if (fw + this.cropW > this.w) {\n          cx = this.w - this.cropW;\n        } else {\n          cx = fw;\n        }\n\n        if (fh <= 0) {\n          cy = 0;\n        } else if (fh + this.cropH > this.h) {\n          cy = this.h - this.cropH;\n        } else {\n          cy = fh;\n        }\n\n        // 不能超过图片\n        if (this.centerBox) {\n          let axis = this.getImgAxis();\n          // 横坐标判断\n          if (cx <= axis.x1) {\n            cx = axis.x1;\n          }\n\n          if (cx + this.cropW > axis.x2) {\n            cx = axis.x2 - this.cropW;\n          }\n\n          // 纵坐标纵轴\n          if (cy <= axis.y1) {\n            cy = axis.y1;\n          }\n\n          if (cy + this.cropH > axis.y2) {\n            cy = axis.y2 - this.cropH;\n          }\n        }\n\n        this.cropOffsertX = cx;\n        this.cropOffsertY = cy;\n\n        // 触发截图框移动事件\n        this.$emit("cropMoving", {\n          moving: true,\n          axis: this.getCropAxis()\n        });\n        this.$emit("crop-moving", {\n          moving: true,\n          axis: this.getCropAxis()\n        });\n      });\n    },\n\n    // 算出不同场景下面 图片相对于外层容器的坐标轴\n    getImgAxis(x, y, scale) {\n      x = x || this.x;\n      y = y || this.y;\n      scale = scale || this.scale;\n      // 如果设置了截图框在图片内， 那么限制截图框不能超过图片的坐标\n      // 图片的坐标\n      let obj = {\n        x1: 0,\n        x2: 0,\n        y1: 0,\n        y2: 0\n      };\n      let imgW = this.trueWidth * scale;\n      let imgH = this.trueHeight * scale;\n      switch (this.rotate) {\n        case 0:\n          obj.x1 = x + (this.trueWidth * (1 - scale)) / 2;\n          obj.x2 = obj.x1 + this.trueWidth * scale;\n          obj.y1 = y + (this.trueHeight * (1 - scale)) / 2;\n          obj.y2 = obj.y1 + this.trueHeight * scale;\n          break;\n        case 1:\n        case -1:\n        case 3:\n        case -3:\n          obj.x1 = x + (this.trueWidth * (1 - scale)) / 2 + (imgW - imgH) / 2;\n          obj.x2 = obj.x1 + this.trueHeight * scale;\n          obj.y1 = y + (this.trueHeight * (1 - scale)) / 2 + (imgH - imgW) / 2;\n          obj.y2 = obj.y1 + this.trueWidth * scale;\n          break;\n        default:\n          obj.x1 = x + (this.trueWidth * (1 - scale)) / 2;\n          obj.x2 = obj.x1 + this.trueWidth * scale;\n          obj.y1 = y + (this.trueHeight * (1 - scale)) / 2;\n          obj.y2 = obj.y1 + this.trueHeight * scale;\n          break;\n      }\n      return obj;\n    },\n\n    // 获取截图框的坐标轴\n    getCropAxis() {\n      let obj = {\n        x1: 0,\n        x2: 0,\n        y1: 0,\n        y2: 0\n      };\n      obj.x1 = this.cropOffsertX;\n      obj.x2 = obj.x1 + this.cropW;\n      obj.y1 = this.cropOffsertY;\n      obj.y2 = obj.y1 + this.cropH;\n      return obj;\n    },\n\n    leaveCrop(e) {\n      window.removeEventListener("mousemove", this.moveCrop);\n      window.removeEventListener("mouseup", this.leaveCrop);\n      window.removeEventListener("touchmove", this.moveCrop);\n      window.removeEventListener("touchend", this.leaveCrop);\n      // 触发截图框移动事件\n      this.$emit("cropMoving", {\n        moving: false,\n        axis: this.getCropAxis()\n      });\n      this.$emit("crop-moving", {\n        moving: false,\n        axis: this.getCropAxis()\n      });\n    },\n\n    getCropChecked(cb) {\n      let canvas = document.createElement("canvas");\n      let img = new Image();\n      let rotate = this.rotate;\n      let trueWidth = this.trueWidth;\n      let trueHeight = this.trueHeight;\n      let cropOffsertX = this.cropOffsertX;\n      let cropOffsertY = this.cropOffsertY;\n      img.onload = () => {\n        if (this.cropW !== 0) {\n          let ctx = canvas.getContext("2d");\n          let dpr = 1;\n          if (this.high & !this.full) {\n            dpr = window.devicePixelRatio;\n          }\n          if ((this.enlarge !== 1) & !this.full) {\n            dpr = Math.abs(Number(this.enlarge));\n          }\n          let width = this.cropW * dpr;\n          let height = this.cropH * dpr;\n          let imgW = trueWidth * this.scale * dpr;\n          let imgH = trueHeight * this.scale * dpr;\n          // 图片x轴偏移\n          let dx =\n            (this.x - cropOffsertX + (this.trueWidth * (1 - this.scale)) / 2) *\n            dpr;\n          // 图片y轴偏移\n          let dy =\n            (this.y - cropOffsertY + (this.trueHeight * (1 - this.scale)) / 2) *\n            dpr;\n          //保存状态\n          setCanvasSize(width, height);\n          ctx.save();\n          // 填充背景颜色\n          if (this.fillColor) {\n            ctx.fillStyle = this.fillColor;\n            ctx.fillRect(0, 0, canvas.width, canvas.height);\n          }\n          switch (rotate) {\n            case 0:\n              if (!this.full) {\n                ctx.drawImage(img, dx, dy, imgW, imgH);\n              } else {\n                // 输出原图比例截图\n                setCanvasSize(width / this.scale, height / this.scale);\n                ctx.drawImage(\n                  img,\n                  dx / this.scale,\n                  dy / this.scale,\n                  imgW / this.scale,\n                  imgH / this.scale\n                );\n              }\n              break;\n            case 1:\n            case -3:\n              if (!this.full) {\n                // 换算图片旋转后的坐标弥补\n                dx = dx + (imgW - imgH) / 2;\n                dy = dy + (imgH - imgW) / 2;\n                ctx.rotate((rotate * 90 * Math.PI) / 180);\n                ctx.drawImage(img, dy, -dx - imgH, imgW, imgH);\n              } else {\n                setCanvasSize(width / this.scale, height / this.scale);\n                // 换算图片旋转后的坐标弥补\n                dx =\n                  dx / this.scale + (imgW / this.scale - imgH / this.scale) / 2;\n                dy =\n                  dy / this.scale + (imgH / this.scale - imgW / this.scale) / 2;\n                ctx.rotate((rotate * 90 * Math.PI) / 180);\n                ctx.drawImage(\n                  img,\n                  dy,\n                  -dx - imgH / this.scale,\n                  imgW / this.scale,\n                  imgH / this.scale\n                );\n              }\n              break;\n            case 2:\n            case -2:\n              if (!this.full) {\n                ctx.rotate((rotate * 90 * Math.PI) / 180);\n                ctx.drawImage(img, -dx - imgW, -dy - imgH, imgW, imgH);\n              } else {\n                setCanvasSize(width / this.scale, height / this.scale);\n                ctx.rotate((rotate * 90 * Math.PI) / 180);\n                dx = dx / this.scale;\n                dy = dy / this.scale;\n                ctx.drawImage(\n                  img,\n                  -dx - imgW / this.scale,\n                  -dy - imgH / this.scale,\n                  imgW / this.scale,\n                  imgH / this.scale\n                );\n              }\n              break;\n            case 3:\n            case -1:\n              if (!this.full) {\n                // 换算图片旋转后的坐标弥补\n                dx = dx + (imgW - imgH) / 2;\n                dy = dy + (imgH - imgW) / 2;\n                ctx.rotate((rotate * 90 * Math.PI) / 180);\n                ctx.drawImage(img, -dy - imgW, dx, imgW, imgH);\n              } else {\n                setCanvasSize(width / this.scale, height / this.scale);\n                // 换算图片旋转后的坐标弥补\n                dx =\n                  dx / this.scale + (imgW / this.scale - imgH / this.scale) / 2;\n                dy =\n                  dy / this.scale + (imgH / this.scale - imgW / this.scale) / 2;\n                ctx.rotate((rotate * 90 * Math.PI) / 180);\n                ctx.drawImage(\n                  img,\n                  -dy - imgW / this.scale,\n                  dx,\n                  imgW / this.scale,\n                  imgH / this.scale\n                );\n              }\n              break;\n            default:\n              if (!this.full) {\n                ctx.drawImage(img, dx, dy, imgW, imgH);\n              } else {\n                // 输出原图比例截图\n                setCanvasSize(width / this.scale, height / this.scale);\n                ctx.drawImage(\n                  img,\n                  dx / this.scale,\n                  dy / this.scale,\n                  imgW / this.scale,\n                  imgH / this.scale\n                );\n              }\n          }\n          ctx.restore();\n        } else {\n          let width = trueWidth * this.scale;\n          let height = trueHeight * this.scale;\n          let ctx = canvas.getContext("2d");\n          ctx.save();\n          // 填充背景颜色\n          if (this.fillColor) {\n            ctx.fillStyle = this.fillColor;\n            ctx.fillRect(0, 0, canvas.width, canvas.height);\n          }\n          switch (rotate) {\n            case 0:\n              setCanvasSize(width, height);\n              ctx.drawImage(img, 0, 0, width, height);\n              break;\n            case 1:\n            case -3:\n              // 旋转90度 或者-270度 宽度和高度对调\n              setCanvasSize(height, width);\n              ctx.rotate((rotate * 90 * Math.PI) / 180);\n              ctx.drawImage(img, 0, -height, width, height);\n              break;\n            case 2:\n            case -2:\n              setCanvasSize(width, height);\n              ctx.rotate((rotate * 90 * Math.PI) / 180);\n              ctx.drawImage(img, -width, -height, width, height);\n              break;\n            case 3:\n            case -1:\n              setCanvasSize(height, width);\n              ctx.rotate((rotate * 90 * Math.PI) / 180);\n              ctx.drawImage(img, -width, 0, width, height);\n              break;\n            default:\n              setCanvasSize(width, height);\n              ctx.drawImage(img, 0, 0, width, height);\n          }\n          ctx.restore();\n        }\n        cb(canvas);\n      };\n      // 判断图片是否是base64\n      var s = this.img.substr(0, 4);\n      if (s !== "data") {\n        img.crossOrigin = "Anonymous";\n      }\n      img.src = this.imgs;\n\n      function setCanvasSize(width, height) {\n        canvas.width = Math.round(width);\n        canvas.height = Math.round(height);\n      }\n    },\n\n    // 获取转换成base64 的图片信息\n    getCropData(cb) {\n      this.getCropChecked(data => {\n        cb(data.toDataURL("image/" + this.outputType, this.outputSize));\n      });\n    },\n\n    //canvas获取为blob对象\n    getCropBlob(cb) {\n      this.getCropChecked(data => {\n        data.toBlob(\n          blob => cb(blob),\n          "image/" + this.outputType,\n          this.outputSize\n        );\n      });\n    },\n\n    // 自动预览函数\n    showPreview() {\n      // 优化不要多次触发\n      if (this.isCanShow) {\n        this.isCanShow = false;\n        setTimeout(() => {\n          this.isCanShow = true;\n        }, 16);\n      } else {\n        return false;\n      }\n      let w = this.cropW;\n      let h = this.cropH;\n      let scale = this.scale;\n      var obj = {};\n      obj.div = {\n        width: `${w}px`,\n        height: `${h}px`\n      };\n      let transformX = (this.x - this.cropOffsertX) / scale;\n      let transformY = (this.y - this.cropOffsertY) / scale;\n      let transformZ = 0;\n      obj.w = w;\n      obj.h = h;\n      obj.url = this.imgs;\n      obj.img = {\n        width: `${this.trueWidth}px`,\n        height: `${this.trueHeight}px`,\n        transform: `scale(${scale})translate3d(${transformX}px, ${transformY}px, ${transformZ}px)rotateZ(${this\n          .rotate * 90}deg)`\n      };\n      obj.html = `\n      <div class="show-preview" style="width: ${obj.w}px; height: ${\n        obj.h\n      }px; overflow: hidden">\n        <div style="width: ${w}px; height: ${h}px">\n          <img src=${obj.url} style="width: ${this.trueWidth}px; height: ${\n        this.trueHeight\n      }px; transform:\n          scale(${scale})translate3d(${transformX}px, ${transformY}px, ${transformZ}px)rotateZ(${this\n        .rotate * 90}deg)">\n        </div>\n      </div>`;\n      this.$emit("realTime", obj);\n      this.$emit("real-time", obj);\n    },\n    // reload 图片布局函数\n    reload() {\n      let img = new Image();\n      img.onload = () => {\n        // 读取图片的信息原始信息， 解析是否需要旋转\n        // 读取图片的旋转信息\n        // 得到外层容器的宽度高度\n        this.w = parseFloat(window.getComputedStyle(this.$refs.cropper).width);\n        this.h = parseFloat(window.getComputedStyle(this.$refs.cropper).height);\n\n        // 存入图片真实高度\n        this.trueWidth = img.width;\n        this.trueHeight = img.height;\n\n        // 判断是否需要压缩大图\n        if (!this.original) {\n          // 判断布局方式 mode\n          this.scale = this.checkedMode();\n        } else {\n          this.scale = 1;\n        }\n\n        this.$nextTick(() => {\n          this.x =\n            -(this.trueWidth - this.trueWidth * this.scale) / 2 +\n            (this.w - this.trueWidth * this.scale) / 2;\n          this.y =\n            -(this.trueHeight - this.trueHeight * this.scale) / 2 +\n            (this.h - this.trueHeight * this.scale) / 2;\n          this.loading = false;\n          // // 获取是否开启了自动截图\n          if (this.autoCrop) {\n            this.goAutoCrop();\n          }\n          // 图片加载成功的回调\n          this.$emit("img-load", "success");\n          this.$emit("imgLoad", "success");        \n          setTimeout(() => {\n            this.showPreview();\n          }, 20);\n        });\n      };\n      img.onerror = () => {\n        this.$emit("imgLoad", "error");\n        this.$emit("img-load", "error");\n      };\n      img.src = this.imgs;\n    },\n    // 背景布局的函数\n    checkedMode() {\n      let scale = 1;\n      // 通过字符串分割\n      let imgW = this.trueWidth;\n      let imgH = this.trueHeight;\n      const arr = this.mode.split(" ");\n      switch (arr[0]) {\n        case "contain":\n          if (this.trueWidth > this.w) {\n            // 如果图片宽度大于容器宽度\n            scale = this.w / this.trueWidth;\n          }\n\n          if (this.trueHeight * scale > this.h) {\n            scale = this.h / this.trueHeight;\n          }\n          break;\n        case "cover":\n          // 扩展布局 默认填充满整个容器\n          // 图片宽度大于容器\n          imgW = this.w;\n          scale = imgW / this.trueWidth;\n          imgH = imgH * scale;\n          // 如果扩展之后高度小于容器的外层高度 继续扩展高度\n          if (imgH < this.h) {\n            imgH = this.h;\n            scale = imgH / this.trueHeight;\n          }\n          break;\n        default:\n          try {\n            let str = arr[0];\n            if (str.search("px") !== -1) {\n              str = str.replace("px", "");\n              imgW = parseFloat(str);\n              const scaleX = imgW / this.trueWidth;\n              let scaleY = 1;\n              let strH = arr[1];\n              if (strH.search("px") !== -1) {\n                strH = strH.replace("px", "");\n                imgH = parseFloat(strH);\n                scaleY = imgH / this.trueHeight;\n              }\n              scale = Math.min(scaleX,scaleY)\n\n            }\n            if (str.search("%") !== -1) {\n              str = str.replace("%", "");\n              imgW = (parseFloat(str) / 100) * this.w;\n              scale = imgW / this.trueWidth;\n            }\n\n            if (arr.length === 2 && str === "auto") {\n              let str2 = arr[1];\n              if (str2.search("px") !== -1) {\n                str2 = str2.replace("px", "");\n                imgH = parseFloat(str2);\n                scale = imgH / this.trueHeight;\n              }\n              if (str2.search("%") !== -1) {\n                str2 = str2.replace("%", "");\n                imgH = (parseFloat(str2) / 100) * this.h;\n                scale = imgH / this.trueHeight;\n              }\n            }\n          } catch (error) {\n            scale = 1;\n          }\n      }\n      return scale;\n    },\n    // 自动截图函数\n    goAutoCrop(cw, ch) {\n      if (this.imgs === \'\' || this.imgs === null) return\n      this.clearCrop();\n      this.cropping = true;\n      let maxWidth = this.w;\n      let maxHeight = this.h;\n      if (this.centerBox) {\n        const switchWH = Math.abs(this.rotate) % 2 > 0\n        let imgW = (switchWH ? this.trueHeight : this.trueWidth) * this.scale;\n        let imgH = (switchWH ? this.trueWidth : this.trueHeight) * this.scale;\n        maxWidth = imgW < maxWidth ? imgW : maxWidth;\n        maxHeight = imgH < maxHeight ? imgH : maxHeight;\n      }\n      // 截图框默认大小\n      // 如果为0 那么计算容器大小 默认为80%\n      var w = cw ? cw : parseFloat(this.autoCropWidth);\n      var h = ch ? ch : parseFloat(this.autoCropHeight);\n      if (w === 0 || h === 0) {\n        w = maxWidth * 0.8;\n        h = maxHeight * 0.8;\n      }\n      w = w > maxWidth ? maxWidth : w;\n      h = h > maxHeight ? maxHeight : h;\n      if (this.fixed) {\n        h = (w / this.fixedNumber[0]) * this.fixedNumber[1];\n      }\n      // 如果比例之后 高度大于h\n      if (h > this.h) {\n        h = this.h;\n        w = (h / this.fixedNumber[1]) * this.fixedNumber[0];\n      }\n      this.changeCrop(w, h);\n    },\n    // 手动改变截图框大小函数\n    changeCrop(w, h) {\n      if (this.centerBox) {\n        // 修复初始化时候在centerBox=true情况下\n        let axis = this.getImgAxis();\n        if (w > axis.x2 - axis.x1) {\n          // 宽度超标\n          w = axis.x2 - axis.x1;\n          h = (w / this.fixedNumber[0]) * this.fixedNumber[1];\n        }\n        if (h > axis.y2 - axis.y1) {\n          // 高度超标\n          h = axis.y2 - axis.y1;\n          w = (h / this.fixedNumber[1]) * this.fixedNumber[0];\n        }\n      }\n      // 判断是否大于容器\n      this.cropW = w;\n      this.cropH = h;\n      this.checkCropLimitSize()\n      this.$nextTick(() => {\n        // 居中走一走\n        this.cropOffsertX = (this.w - this.cropW) / 2;\n        this.cropOffsertY = (this.h - this.cropH) / 2;\n        if (this.centerBox) {\n          this.moveCrop(null, true);\n        }\n      });\n    },\n    // 重置函数， 恢复组件置初始状态\n    refresh() {\n      let img = this.img;\n      this.imgs = "";\n      this.scale = 1;\n      this.crop = false;\n      this.rotate = 0;\n      this.w = 0;\n      this.h = 0;\n      this.trueWidth = 0;\n      this.trueHeight = 0;\n      this.clearCrop();\n      this.$nextTick(() => {\n        this.checkedImg();\n      });\n    },\n\n    // 向左边旋转\n    rotateLeft() {\n      this.rotate = this.rotate <= -3 ? 0 : this.rotate - 1;\n    },\n\n    // 向右边旋转\n    rotateRight() {\n      this.rotate = this.rotate >= 3 ? 0 : this.rotate + 1;\n    },\n\n    // 清除旋转\n    rotateClear() {\n      this.rotate = 0;\n    },\n\n    // 图片坐标点校验\n    checkoutImgAxis(x, y, scale) {\n      x = x || this.x;\n      y = y || this.y;\n      scale = scale || this.scale;\n      let canGo = true;\n      // 开始校验 如果说缩放之后的坐标在截图框外 则阻止缩放\n      if (this.centerBox) {\n        let axis = this.getImgAxis(x, y, scale);\n        let cropAxis = this.getCropAxis();\n        // 左边的横坐标 图片不能超过截图框\n        if (axis.x1 >= cropAxis.x1) {\n          canGo = false;\n        }\n\n        // 右边横坐标\n        if (axis.x2 <= cropAxis.x2) {\n          canGo = false;\n        }\n\n        // 纵坐标上面\n        if (axis.y1 >= cropAxis.y1) {\n          canGo = false;\n        }\n\n        // 纵坐标下面\n        if (axis.y2 <= cropAxis.y2) {\n          canGo = false;\n        }\n      }\n      return canGo;\n    }\n  },\n  mounted() {\n    this.support =\n      "onwheel" in document.createElement("div")\n        ? "wheel"\n        : document.onmousewheel !== undefined\n        ? "mousewheel"\n        : "DOMMouseScroll";\n    let that = this;\n    var u = navigator.userAgent;\n    this.isIOS = !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/);\n    // 兼容blob\n    if (!HTMLCanvasElement.prototype.toBlob) {\n      Object.defineProperty(HTMLCanvasElement.prototype, "toBlob", {\n        value: function(callback, type, quality) {\n          var binStr = atob(this.toDataURL(type, quality).split(",")[1]),\n            len = binStr.length,\n            arr = new Uint8Array(len);\n          for (var i = 0; i < len; i++) {\n            arr[i] = binStr.charCodeAt(i);\n          }\n          callback(new Blob([arr], { type: that.type || "image/png" }));\n        }\n      });\n    }\n    this.showPreview();\n    this.checkedImg();\n  },\n  destroyed() {\n    window.removeEventListener("mousemove", this.moveCrop);\n    window.removeEventListener("mouseup", this.leaveCrop);\n    window.removeEventListener("touchmove", this.moveCrop);\n    window.removeEventListener("touchend", this.leaveCrop);\n    this.cancelScale()\n  }\n};\n<\/script>\n\n<style scoped lang="css">\n.vue-cropper {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  box-sizing: border-box;\n  user-select: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  direction: ltr;\n  touch-action: none;\n  text-align: left;\n  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC");\n}\n\n.cropper-box,\n.cropper-box-canvas,\n.cropper-drag-box,\n.cropper-crop-box,\n.cropper-face {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  user-select: none;\n}\n\n.cropper-box-canvas img {\n  position: relative;\n  text-align: left;\n  user-select: none;\n  transform: none;\n  max-width: none;\n  max-height: none;\n}\n\n.cropper-box {\n  overflow: hidden;\n}\n\n.cropper-move {\n  cursor: move;\n}\n\n.cropper-crop {\n  cursor: crosshair;\n}\n\n.cropper-modal {\n  background: rgba(0, 0, 0, 0.5);\n}\n\n.cropper-crop-box {\n  /*border: 2px solid #39f;*/\n}\n\n.cropper-view-box {\n  display: block;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n  outline: 1px solid #39f;\n  outline-color: rgba(51, 153, 255, 0.75);\n  user-select: none;\n}\n\n.cropper-view-box img {\n  user-select: none;\n  text-align: left;\n  max-width: none;\n  max-height: none;\n}\n\n.cropper-face {\n  top: 0;\n  left: 0;\n  background-color: #fff;\n  opacity: 0.1;\n}\n\n.crop-info {\n  position: absolute;\n  left: 0px;\n  min-width: 65px;\n  text-align: center;\n  color: white;\n  line-height: 20px;\n  background-color: rgba(0, 0, 0, 0.8);\n  font-size: 12px;\n}\n\n.crop-line {\n  position: absolute;\n  display: block;\n  width: 100%;\n  height: 100%;\n  opacity: 0.1;\n}\n\n.line-w {\n  top: -3px;\n  left: 0;\n  height: 5px;\n  cursor: n-resize;\n}\n\n.line-a {\n  top: 0;\n  left: -3px;\n  width: 5px;\n  cursor: w-resize;\n}\n\n.line-s {\n  bottom: -3px;\n  left: 0;\n  height: 5px;\n  cursor: s-resize;\n}\n\n.line-d {\n  top: 0;\n  right: -3px;\n  width: 5px;\n  cursor: e-resize;\n}\n\n.crop-point {\n  position: absolute;\n  width: 8px;\n  height: 8px;\n  opacity: 0.75;\n  background-color: #39f;\n  border-radius: 100%;\n}\n\n.point1 {\n  top: -4px;\n  left: -4px;\n  cursor: nw-resize;\n}\n\n.point2 {\n  top: -5px;\n  left: 50%;\n  margin-left: -3px;\n  cursor: n-resize;\n}\n\n.point3 {\n  top: -4px;\n  right: -4px;\n  cursor: ne-resize;\n}\n\n.point4 {\n  top: 50%;\n  left: -4px;\n  margin-top: -3px;\n  cursor: w-resize;\n}\n\n.point5 {\n  top: 50%;\n  right: -4px;\n  margin-top: -3px;\n  cursor: e-resize;\n}\n\n.point6 {\n  bottom: -5px;\n  left: -4px;\n  cursor: sw-resize;\n}\n\n.point7 {\n  bottom: -5px;\n  left: 50%;\n  margin-left: -3px;\n  cursor: s-resize;\n}\n\n.point8 {\n  bottom: -5px;\n  right: -4px;\n  cursor: se-resize;\n}\n\n@media screen and (max-width: 500px) {\n  .crop-point {\n    position: absolute;\n    width: 20px;\n    height: 20px;\n    opacity: 0.45;\n    background-color: #39f;\n    border-radius: 100%;\n  }\n\n  .point1 {\n    top: -10px;\n    left: -10px;\n  }\n\n  .point2,\n  .point4,\n  .point5,\n  .point7 {\n    display: none;\n  }\n\n  .point3 {\n    top: -10px;\n    right: -10px;\n  }\n\n  .point4 {\n    top: 0;\n    left: 0;\n  }\n\n  .point6 {\n    bottom: -10px;\n    left: -10px;\n  }\n\n  .point8 {\n    bottom: -10px;\n    right: -10px;\n  }\n}\n</style>\n'],sourceRoot:""}]);const u=p},645:t=>{t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",i=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),i&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),i&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,i,r,o){"string"==typeof t&&(t=[[null,t,void 0]]);var s={};if(i)for(var a=0;a<this.length;a++){var h=this[a][0];null!=h&&(s[h]=!0)}for(var c=0;c<t.length;c++){var p=[].concat(t[c]);i&&s[p[0]]||(void 0!==o&&(void 0===p[5]||(p[1]="@layer".concat(p[5].length>0?" ".concat(p[5]):""," {").concat(p[1],"}")),p[5]=o),n&&(p[2]?(p[1]="@media ".concat(p[2]," {").concat(p[1],"}"),p[2]=n):p[2]=n),r&&(p[4]?(p[1]="@supports (".concat(p[4],") {").concat(p[1],"}"),p[4]=r):p[4]="".concat(r)),e.push(p))}},e}},667:t=>{t.exports=function(t,e){return e||(e={}),t?(t=String(t.__esModule?t.default:t),/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),e.hash&&(t+=e.hash),/["'() \t\n]|(%20)/.test(t)||e.needQuotes?'"'.concat(t.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):t):t}},537:t=>{t.exports=function(t){var e=t[1],n=t[3];if(!n)return e;if("function"==typeof btoa){var i=btoa(unescape(encodeURIComponent(JSON.stringify(n)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(i),o="/*# ".concat(r," */");return[e].concat([o]).join("\n")}return[e].join("\n")}},379:t=>{var e=[];function n(t){for(var n=-1,i=0;i<e.length;i++)if(e[i].identifier===t){n=i;break}return n}function i(t,i){for(var o={},s=[],a=0;a<t.length;a++){var h=t[a],c=i.base?h[0]+i.base:h[0],p=o[c]||0,l="".concat(c," ").concat(p);o[c]=p+1;var u=n(l),g={css:h[1],media:h[2],sourceMap:h[3],supports:h[4],layer:h[5]};if(-1!==u)e[u].references++,e[u].updater(g);else{var f=r(g,i);i.byIndex=a,e.splice(a,0,{identifier:l,updater:f,references:1})}s.push(l)}return s}function r(t,e){var n=e.domAPI(e);return n.update(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap&&e.supports===t.supports&&e.layer===t.layer)return;n.update(t=e)}else n.remove()}}t.exports=function(t,r){var o=i(t=t||[],r=r||{});return function(t){t=t||[];for(var s=0;s<o.length;s++){var a=n(o[s]);e[a].references--}for(var h=i(t,r),c=0;c<o.length;c++){var p=n(o[c]);0===e[p].references&&(e[p].updater(),e.splice(p,1))}o=h}}},569:t=>{var e={};t.exports=function(t,n){var i=function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}(t);if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(n)}},216:t=>{t.exports=function(t){var e=document.createElement("style");return t.setAttributes(e,t.attributes),t.insert(e,t.options),e}},565:(t,e,n)=>{t.exports=function(t){var e=n.nc;e&&t.setAttribute("nonce",e)}},795:t=>{t.exports=function(t){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=t.insertStyleElement(t);return{update:function(n){!function(t,e,n){var i="";n.supports&&(i+="@supports (".concat(n.supports,") {")),n.media&&(i+="@media ".concat(n.media," {"));var r=void 0!==n.layer;r&&(i+="@layer".concat(n.layer.length>0?" ".concat(n.layer):""," {")),i+=n.css,r&&(i+="}"),n.media&&(i+="}"),n.supports&&(i+="}");var o=n.sourceMap;o&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleTagTransform(i,t,e.options)}(e,t,n)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},589:t=>{t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}},738:t=>{t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC"}},e={};function n(i){var r=e[i];if(void 0!==r)return r.exports;var o=e[i]={id:i,exports:{}};return t[i](o,o.exports,n),o.exports}n.m=t,n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.b=document.baseURI||self.location.href,n.nc=void 0;var i={};return(()=>{n.r(i),n.d(i,{VueCropper:()=>y,default:()=>W});var t=function(){var t=this,e=t._self._c;return e("div",{ref:"cropper",staticClass:"vue-cropper",on:{mouseover:t.scaleImg,mouseout:t.cancelScale}},[t.imgs?e("div",{staticClass:"cropper-box"},[e("div",{directives:[{name:"show",rawName:"v-show",value:!t.loading,expression:"!loading"}],staticClass:"cropper-box-canvas",style:{width:t.trueWidth+"px",height:t.trueHeight+"px",transform:"scale("+t.scale+","+t.scale+") translate3d("+t.x/t.scale+"px,"+t.y/t.scale+"px,0)rotateZ("+90*t.rotate+"deg)"}},[e("img",{ref:"cropperImg",attrs:{src:t.imgs,alt:"cropper-img"}})])]):t._e(),t._v(" "),e("div",{staticClass:"cropper-drag-box",class:{"cropper-move":t.move&&!t.crop,"cropper-crop":t.crop,"cropper-modal":t.cropping},on:{mousedown:t.startMove,touchstart:t.startMove}}),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.cropping,expression:"cropping"}],staticClass:"cropper-crop-box",style:{width:t.cropW+"px",height:t.cropH+"px",transform:"translate3d("+t.cropOffsertX+"px,"+t.cropOffsertY+"px,0)"}},[e("span",{staticClass:"cropper-view-box"},[e("img",{style:{width:t.trueWidth+"px",height:t.trueHeight+"px",transform:"scale("+t.scale+","+t.scale+") translate3d("+(t.x-t.cropOffsertX)/t.scale+"px,"+(t.y-t.cropOffsertY)/t.scale+"px,0)rotateZ("+90*t.rotate+"deg)"},attrs:{src:t.imgs,alt:"cropper-img"}})]),t._v(" "),e("span",{staticClass:"cropper-face cropper-move",on:{mousedown:t.cropMove,touchstart:t.cropMove}}),t._v(" "),t.info?e("span",{staticClass:"crop-info",style:{top:t.cropInfo.top}},[t._v(t._s(t.cropInfo.width)+" × "+t._s(t.cropInfo.height))]):t._e(),t._v(" "),t.fixedBox?t._e():e("span",[e("span",{staticClass:"crop-line line-w",on:{mousedown:function(e){return t.changeCropSize(e,!1,!0,0,1)},touchstart:function(e){return t.changeCropSize(e,!1,!0,0,1)}}}),t._v(" "),e("span",{staticClass:"crop-line line-a",on:{mousedown:function(e){return t.changeCropSize(e,!0,!1,1,0)},touchstart:function(e){return t.changeCropSize(e,!0,!1,1,0)}}}),t._v(" "),e("span",{staticClass:"crop-line line-s",on:{mousedown:function(e){return t.changeCropSize(e,!1,!0,0,2)},touchstart:function(e){return t.changeCropSize(e,!1,!0,0,2)}}}),t._v(" "),e("span",{staticClass:"crop-line line-d",on:{mousedown:function(e){return t.changeCropSize(e,!0,!1,2,0)},touchstart:function(e){return t.changeCropSize(e,!0,!1,2,0)}}}),t._v(" "),e("span",{staticClass:"crop-point point1",on:{mousedown:function(e){return t.changeCropSize(e,!0,!0,1,1)},touchstart:function(e){return t.changeCropSize(e,!0,!0,1,1)}}}),t._v(" "),e("span",{staticClass:"crop-point point2",on:{mousedown:function(e){return t.changeCropSize(e,!1,!0,0,1)},touchstart:function(e){return t.changeCropSize(e,!1,!0,0,1)}}}),t._v(" "),e("span",{staticClass:"crop-point point3",on:{mousedown:function(e){return t.changeCropSize(e,!0,!0,2,1)},touchstart:function(e){return t.changeCropSize(e,!0,!0,2,1)}}}),t._v(" "),e("span",{staticClass:"crop-point point4",on:{mousedown:function(e){return t.changeCropSize(e,!0,!1,1,0)},touchstart:function(e){return t.changeCropSize(e,!0,!1,1,0)}}}),t._v(" "),e("span",{staticClass:"crop-point point5",on:{mousedown:function(e){return t.changeCropSize(e,!0,!1,2,0)},touchstart:function(e){return t.changeCropSize(e,!0,!1,2,0)}}}),t._v(" "),e("span",{staticClass:"crop-point point6",on:{mousedown:function(e){return t.changeCropSize(e,!0,!0,1,2)},touchstart:function(e){return t.changeCropSize(e,!0,!0,1,2)}}}),t._v(" "),e("span",{staticClass:"crop-point point7",on:{mousedown:function(e){return t.changeCropSize(e,!1,!0,0,2)},touchstart:function(e){return t.changeCropSize(e,!1,!0,0,2)}}}),t._v(" "),e("span",{staticClass:"crop-point point8",on:{mousedown:function(e){return t.changeCropSize(e,!0,!0,2,2)},touchstart:function(e){return t.changeCropSize(e,!0,!0,2,2)}}})])])])};function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function r(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,o,s,a=[],h=!0,c=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;h=!1}else for(;!(h=(i=o.call(n)).done)&&(a.push(i.value),a.length!==e);h=!0);}catch(t){c=!0,r=t}finally{try{if(!h&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return a}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}t._withStripped=!0;var o={};o.getData=function(t){return new Promise((function(e,n){var i={};(function(t){var e=null;return new Promise((function(n,i){if(t.src)if(/^data\:/i.test(t.src))e=function(t,e){e=e||t.match(/^data\:([^\;]+)\;base64,/im)[1]||"",t=t.replace(/^data\:([^\;]+)\;base64,/gim,"");for(var n=atob(t),i=n.length%2==0?n.length:n.length+1,r=new ArrayBuffer(i),o=new Uint16Array(r),s=0;s<i;s++)o[s]=n.charCodeAt(s);return r}(t.src),n(e);else if(/^blob\:/i.test(t.src)){var r=new FileReader;r.onload=function(t){e=t.target.result,n(e)},function(t,e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(t){var e;200!=this.status&&0!==this.status||(e=this.response,r.readAsArrayBuffer(e))},n.send()}(t.src)}else{var o=new XMLHttpRequest;o.onload=function(){if(200!=this.status&&0!==this.status)throw"Could not load image";e=o.response,n(e),o=null},o.open("GET",t.src,!0),o.responseType="arraybuffer",o.send(null)}else i("img error")}))})(t).then((function(t){i.arrayBuffer=t;try{i.orientation=function(t){var e,n,i,r,o,s,a,h,c,p=new DataView(t),l=p.byteLength;if(255===p.getUint8(0)&&216===p.getUint8(1))for(h=2;h<l;){if(255===p.getUint8(h)&&225===p.getUint8(h+1)){s=h;break}h++}if(s&&(n=s+10,"Exif"===function(t,e,n){var i,r="";for(i=e,n+=e;i<n;i++)r+=String.fromCharCode(t.getUint8(i));return r}(p,s+4,4)&&((r=18761===(o=p.getUint16(n)))||19789===o)&&42===p.getUint16(n+2,r)&&(i=p.getUint32(n+4,r))>=8&&(a=n+i)),a)for(l=p.getUint16(a,r),c=0;c<l;c++)if(h=a+12*c+2,274===p.getUint16(h,r)){h+=8,e=p.getUint16(h,r);break}return e}(t)}catch(t){i.orientation=-1}e(i)})).catch((function(t){n(t)}))}))};const s=o,a={data:function(){return{w:0,h:0,scale:1,x:0,y:0,loading:!0,trueWidth:0,trueHeight:0,move:!0,moveX:0,moveY:0,crop:!1,cropping:!1,cropW:0,cropH:0,cropOldW:0,cropOldH:0,canChangeX:!1,canChangeY:!1,changeCropTypeX:1,changeCropTypeY:1,cropX:0,cropY:0,cropChangeX:0,cropChangeY:0,cropOffsertX:0,cropOffsertY:0,support:"",touches:[],touchNow:!1,rotate:0,isIos:!1,orientation:0,imgs:"",coe:.2,scaling:!1,scalingSet:"",coeStatus:"",isCanShow:!0}},props:{img:{type:[String,Blob,null,File],default:""},outputSize:{type:Number,default:1},outputType:{type:String,default:"jpeg"},info:{type:Boolean,default:!0},canScale:{type:Boolean,default:!0},autoCrop:{type:Boolean,default:!1},autoCropWidth:{type:[Number,String],default:0},autoCropHeight:{type:[Number,String],default:0},fixed:{type:Boolean,default:!1},fixedNumber:{type:Array,default:function(){return[1,1]}},fixedBox:{type:Boolean,default:!1},full:{type:Boolean,default:!1},canMove:{type:Boolean,default:!0},canMoveBox:{type:Boolean,default:!0},original:{type:Boolean,default:!1},centerBox:{type:Boolean,default:!1},high:{type:Boolean,default:!0},infoTrue:{type:Boolean,default:!1},maxImgSize:{type:[Number,String],default:2e3},enlarge:{type:[Number,String],default:1},preW:{type:[Number,String],default:0},mode:{type:String,default:"contain"},limitMinSize:{type:[Number,Array,String],default:function(){return 10},validator:function(t){return Array.isArray(t)?Number(t[0])>=0&&Number(t[1])>=0:Number(t)>=0}},fillColor:{type:String,default:""}},computed:{cropInfo:function(){var t={};if(t.top=this.cropOffsertY>21?"-21px":"0px",t.width=this.cropW>0?this.cropW:0,t.height=this.cropH>0?this.cropH:0,this.infoTrue){var e=1;this.high&&!this.full&&(e=window.devicePixelRatio),1!==this.enlarge&!this.full&&(e=Math.abs(Number(this.enlarge))),t.width=t.width*e,t.height=t.height*e,this.full&&(t.width=t.width/this.scale,t.height=t.height/this.scale)}return t.width=t.width.toFixed(0),t.height=t.height.toFixed(0),t},isIE:function(){return navigator.userAgent,!!window.ActiveXObject||"ActiveXObject"in window},passive:function(){return this.isIE?null:{passive:!1}}},watch:{img:function(){this.checkedImg()},imgs:function(t){""!==t&&this.reload()},cropW:function(){this.showPreview()},cropH:function(){this.showPreview()},cropOffsertX:function(){this.showPreview()},cropOffsertY:function(){this.showPreview()},scale:function(t,e){this.showPreview()},x:function(){this.showPreview()},y:function(){this.showPreview()},autoCrop:function(t){t&&this.goAutoCrop()},autoCropWidth:function(){this.autoCrop&&this.goAutoCrop()},autoCropHeight:function(){this.autoCrop&&this.goAutoCrop()},mode:function(){this.checkedImg()},rotate:function(){this.showPreview(),(this.autoCrop||this.cropW>0||this.cropH>0)&&this.goAutoCrop(this.cropW,this.cropH)}},methods:{getVersion:function(t){for(var e=navigator.userAgent.split(" "),n="",i=new RegExp(t,"i"),r=0;r<e.length;r++)i.test(e[r])&&(n=e[r]);return n?n.split("/")[1].split("."):["0","0","0"]},checkOrientationImage:function(t,e,n,i){var r=this;if(this.getVersion("chrome")[0]>=81)e=-1;else if(this.getVersion("safari")[0]>=605){var o=this.getVersion("version");o[0]>13&&o[1]>1&&(e=-1)}else{var s=navigator.userAgent.toLowerCase().match(/cpu iphone os (.*?) like mac os/);if(s){var a=s[1];((a=a.split("_"))[0]>13||a[0]>=13&&a[1]>=4)&&(e=-1)}}var h=document.createElement("canvas"),c=h.getContext("2d");switch(c.save(),e){case 2:h.width=n,h.height=i,c.translate(n,0),c.scale(-1,1);break;case 3:h.width=n,h.height=i,c.translate(n/2,i/2),c.rotate(180*Math.PI/180),c.translate(-n/2,-i/2);break;case 4:h.width=n,h.height=i,c.translate(0,i),c.scale(1,-1);break;case 5:h.height=n,h.width=i,c.rotate(.5*Math.PI),c.scale(1,-1);break;case 6:h.width=i,h.height=n,c.translate(i/2,n/2),c.rotate(90*Math.PI/180),c.translate(-n/2,-i/2);break;case 7:h.height=n,h.width=i,c.rotate(.5*Math.PI),c.translate(n,-i),c.scale(-1,1);break;case 8:h.height=n,h.width=i,c.translate(i/2,n/2),c.rotate(-90*Math.PI/180),c.translate(-n/2,-i/2);break;default:h.width=n,h.height=i}c.drawImage(t,0,0,n,i),c.restore(),h.toBlob((function(t){var e=URL.createObjectURL(t);URL.revokeObjectURL(r.imgs),r.imgs=e}),"image/"+this.outputType,1)},checkedImg:function(){var t=this;if(null===this.img||""===this.img)return this.imgs="",void this.clearCrop();this.loading=!0,this.scale=1,this.rotate=0,this.clearCrop();var e=new Image;if(e.onload=function(){if(""===t.img)return t.$emit("imgLoad","error"),t.$emit("img-load","error"),t.$emit("img-load",new Error("图片不能为空")),!1;var n=e.width,i=e.height;s.getData(e).then((function(r){t.orientation=r.orientation||1;var o=Number(t.maxImgSize);!t.orientation&&n<o&i<o?t.imgs=t.img:(n>o&&(i=i/n*o,n=o),i>o&&(n=n/i*o,i=o),t.checkOrientationImage(e,t.orientation,n,i))})).catch((function(e){t.$emit("img-load","error"),t.$emit("img-load-error",e)}))},e.onerror=function(){t.$emit("imgLoad","error"),t.$emit("img-load","error"),t.$emit("img-load-error",error)},"data"!==this.img.substr(0,4)&&(e.crossOrigin=""),this.isIE){var n=new XMLHttpRequest;n.onload=function(){var t=URL.createObjectURL(this.response);e.src=t},n.open("GET",this.img,!0),n.responseType="blob",n.send()}else e.src=this.img},startMove:function(t){if(t.preventDefault(),this.move&&!this.crop){if(!this.canMove)return!1;this.moveX=("clientX"in t?t.clientX:t.touches[0].clientX)-this.x,this.moveY=("clientY"in t?t.clientY:t.touches[0].clientY)-this.y,t.touches?(window.addEventListener("touchmove",this.moveImg),window.addEventListener("touchend",this.leaveImg),2==t.touches.length&&(this.touches=t.touches,window.addEventListener("touchmove",this.touchScale),window.addEventListener("touchend",this.cancelTouchScale))):(window.addEventListener("mousemove",this.moveImg),window.addEventListener("mouseup",this.leaveImg)),this.$emit("imgMoving",{moving:!0,axis:this.getImgAxis()}),this.$emit("img-moving",{moving:!0,axis:this.getImgAxis()})}else this.cropping=!0,window.addEventListener("mousemove",this.createCrop),window.addEventListener("mouseup",this.endCrop),window.addEventListener("touchmove",this.createCrop),window.addEventListener("touchend",this.endCrop),this.cropOffsertX=t.offsetX?t.offsetX:t.touches[0].pageX-this.$refs.cropper.offsetLeft,this.cropOffsertY=t.offsetY?t.offsetY:t.touches[0].pageY-this.$refs.cropper.offsetTop,this.cropX="clientX"in t?t.clientX:t.touches[0].clientX,this.cropY="clientY"in t?t.clientY:t.touches[0].clientY,this.cropChangeX=this.cropOffsertX,this.cropChangeY=this.cropOffsertY,this.cropW=0,this.cropH=0},touchScale:function(t){var e=this;t.preventDefault();var n=this.scale,i=this.touches[0].clientX,r=this.touches[0].clientY,o=t.touches[0].clientX,s=t.touches[0].clientY,a=this.touches[1].clientX,h=this.touches[1].clientY,c=t.touches[1].clientX,p=t.touches[1].clientY,l=Math.sqrt(Math.pow(i-a,2)+Math.pow(r-h,2)),u=Math.sqrt(Math.pow(o-c,2)+Math.pow(s-p,2))-l,g=1,f=(g=(g=g/this.trueWidth>g/this.trueHeight?g/this.trueHeight:g/this.trueWidth)>.1?.1:g)*u;if(!this.touchNow){if(this.touchNow=!0,u>0?n+=Math.abs(f):u<0&&n>Math.abs(f)&&(n-=Math.abs(f)),this.touches=t.touches,setTimeout((function(){e.touchNow=!1}),8),!this.checkoutImgAxis(this.x,this.y,n))return!1;this.scale=n}},cancelTouchScale:function(t){window.removeEventListener("touchmove",this.touchScale)},moveImg:function(t){var e=this;if(t.preventDefault(),t.touches&&2===t.touches.length)return this.touches=t.touches,window.addEventListener("touchmove",this.touchScale),window.addEventListener("touchend",this.cancelTouchScale),window.removeEventListener("touchmove",this.moveImg),!1;var n,i,r="clientX"in t?t.clientX:t.touches[0].clientX,o="clientY"in t?t.clientY:t.touches[0].clientY;n=r-this.moveX,i=o-this.moveY,this.$nextTick((function(){if(e.centerBox){var t,r,o,s,a=e.getImgAxis(n,i,e.scale),h=e.getCropAxis(),c=e.trueHeight*e.scale,p=e.trueWidth*e.scale;switch(e.rotate){case 1:case-1:case 3:case-3:t=e.cropOffsertX-e.trueWidth*(1-e.scale)/2+(c-p)/2,r=e.cropOffsertY-e.trueHeight*(1-e.scale)/2+(p-c)/2,o=t-c+e.cropW,s=r-p+e.cropH;break;default:t=e.cropOffsertX-e.trueWidth*(1-e.scale)/2,r=e.cropOffsertY-e.trueHeight*(1-e.scale)/2,o=t-p+e.cropW,s=r-c+e.cropH}a.x1>=h.x1&&(n=t),a.y1>=h.y1&&(i=r),a.x2<=h.x2&&(n=o),a.y2<=h.y2&&(i=s)}e.x=n,e.y=i,e.$emit("imgMoving",{moving:!0,axis:e.getImgAxis()}),e.$emit("img-moving",{moving:!0,axis:e.getImgAxis()})}))},leaveImg:function(t){window.removeEventListener("mousemove",this.moveImg),window.removeEventListener("touchmove",this.moveImg),window.removeEventListener("mouseup",this.leaveImg),window.removeEventListener("touchend",this.leaveImg),this.$emit("imgMoving",{moving:!1,axis:this.getImgAxis()}),this.$emit("img-moving",{moving:!1,axis:this.getImgAxis()})},scaleImg:function(){this.canScale&&window.addEventListener(this.support,this.changeSize,this.passive)},cancelScale:function(){this.canScale&&window.removeEventListener(this.support,this.changeSize)},changeSize:function(t){var e=this;t.preventDefault();var n=this.scale,i=t.deltaY||t.wheelDelta;i=navigator.userAgent.indexOf("Firefox")>0?30*i:i,this.isIE&&(i=-i);var r=this.coe,o=(r=r/this.trueWidth>r/this.trueHeight?r/this.trueHeight:r/this.trueWidth)*i;o<0?n+=Math.abs(o):n>Math.abs(o)&&(n-=Math.abs(o));var s=o<0?"add":"reduce";if(s!==this.coeStatus&&(this.coeStatus=s,this.coe=.2),this.scaling||(this.scalingSet=setTimeout((function(){e.scaling=!1,e.coe=e.coe+=.01}),50)),this.scaling=!0,!this.checkoutImgAxis(this.x,this.y,n))return!1;this.scale=n},changeScale:function(t){var e=this.scale;t=t||1;var n=20;if((t*=n=n/this.trueWidth>n/this.trueHeight?n/this.trueHeight:n/this.trueWidth)>0?e+=Math.abs(t):e>Math.abs(t)&&(e-=Math.abs(t)),!this.checkoutImgAxis(this.x,this.y,e))return!1;this.scale=e},createCrop:function(t){var e=this;t.preventDefault();var n="clientX"in t?t.clientX:t.touches?t.touches[0].clientX:0,i="clientY"in t?t.clientY:t.touches?t.touches[0].clientY:0;this.$nextTick((function(){var t=n-e.cropX,r=i-e.cropY;if(t>0?(e.cropW=t+e.cropChangeX>e.w?e.w-e.cropChangeX:t,e.cropOffsertX=e.cropChangeX):(e.cropW=e.w-e.cropChangeX+Math.abs(t)>e.w?e.cropChangeX:Math.abs(t),e.cropOffsertX=e.cropChangeX+t>0?e.cropChangeX+t:0),e.fixed){var o=e.cropW/e.fixedNumber[0]*e.fixedNumber[1];o+e.cropOffsertY>e.h?(e.cropH=e.h-e.cropOffsertY,e.cropW=e.cropH/e.fixedNumber[1]*e.fixedNumber[0],e.cropOffsertX=t>0?e.cropChangeX:e.cropChangeX-e.cropW):e.cropH=o,e.cropOffsertY=e.cropOffsertY}else r>0?(e.cropH=r+e.cropChangeY>e.h?e.h-e.cropChangeY:r,e.cropOffsertY=e.cropChangeY):(e.cropH=e.h-e.cropChangeY+Math.abs(r)>e.h?e.cropChangeY:Math.abs(r),e.cropOffsertY=e.cropChangeY+r>0?e.cropChangeY+r:0)}))},changeCropSize:function(t,e,n,i,r){t.preventDefault(),window.addEventListener("mousemove",this.changeCropNow),window.addEventListener("mouseup",this.changeCropEnd),window.addEventListener("touchmove",this.changeCropNow),window.addEventListener("touchend",this.changeCropEnd),this.canChangeX=e,this.canChangeY=n,this.changeCropTypeX=i,this.changeCropTypeY=r,this.cropX="clientX"in t?t.clientX:t.touches[0].clientX,this.cropY="clientY"in t?t.clientY:t.touches[0].clientY,this.cropOldW=this.cropW,this.cropOldH=this.cropH,this.cropChangeX=this.cropOffsertX,this.cropChangeY=this.cropOffsertY,this.fixed&&this.canChangeX&&this.canChangeY&&(this.canChangeY=0),this.$emit("changeCropSize",{width:this.cropW,height:this.cropH}),this.$emit("change-crop-size",{width:this.cropW,height:this.cropH})},changeCropNow:function(t){var e=this;t.preventDefault();var n="clientX"in t?t.clientX:t.touches?t.touches[0].clientX:0,i="clientY"in t?t.clientY:t.touches?t.touches[0].clientY:0,o=this.w,s=this.h,a=0,h=0;if(this.centerBox){var c=this.getImgAxis(),p=c.x2,l=c.y2;a=c.x1>0?c.x1:0,h=c.y1>0?c.y1:0,o>p&&(o=p),s>l&&(s=l)}var u=r(this.checkCropLimitSize(),2),g=u[0],f=u[1];this.$nextTick((function(){var t=n-e.cropX,r=i-e.cropY;if(e.canChangeX&&(1===e.changeCropTypeX?e.cropOldW-t<g?(e.cropW=g,e.cropOffsertX=e.cropOldW+e.cropChangeX-a-g):e.cropOldW-t>0?(e.cropW=o-e.cropChangeX-t<=o-a?e.cropOldW-t:e.cropOldW+e.cropChangeX-a,e.cropOffsertX=o-e.cropChangeX-t<=o-a?e.cropChangeX+t:a):(e.cropW=Math.abs(t)+e.cropChangeX<=o?Math.abs(t)-e.cropOldW:o-e.cropOldW-e.cropChangeX,e.cropOffsertX=e.cropChangeX+e.cropOldW):2===e.changeCropTypeX&&(e.cropOldW+t<g?e.cropW=g:e.cropOldW+t>0?(e.cropW=e.cropOldW+t+e.cropOffsertX<=o?e.cropOldW+t:o-e.cropOffsertX,e.cropOffsertX=e.cropChangeX):(e.cropW=o-e.cropChangeX+Math.abs(t+e.cropOldW)<=o-a?Math.abs(t+e.cropOldW):e.cropChangeX-a,e.cropOffsertX=o-e.cropChangeX+Math.abs(t+e.cropOldW)<=o-a?e.cropChangeX-Math.abs(t+e.cropOldW):a))),e.canChangeY&&(1===e.changeCropTypeY?e.cropOldH-r<f?(e.cropH=f,e.cropOffsertY=e.cropOldH+e.cropChangeY-h-f):e.cropOldH-r>0?(e.cropH=s-e.cropChangeY-r<=s-h?e.cropOldH-r:e.cropOldH+e.cropChangeY-h,e.cropOffsertY=s-e.cropChangeY-r<=s-h?e.cropChangeY+r:h):(e.cropH=Math.abs(r)+e.cropChangeY<=s?Math.abs(r)-e.cropOldH:s-e.cropOldH-e.cropChangeY,e.cropOffsertY=e.cropChangeY+e.cropOldH):2===e.changeCropTypeY&&(e.cropOldH+r<f?e.cropH=f:e.cropOldH+r>0?(e.cropH=e.cropOldH+r+e.cropOffsertY<=s?e.cropOldH+r:s-e.cropOffsertY,e.cropOffsertY=e.cropChangeY):(e.cropH=s-e.cropChangeY+Math.abs(r+e.cropOldH)<=s-h?Math.abs(r+e.cropOldH):e.cropChangeY-h,e.cropOffsertY=s-e.cropChangeY+Math.abs(r+e.cropOldH)<=s-h?e.cropChangeY-Math.abs(r+e.cropOldH):h))),e.canChangeX&&e.fixed){var c=e.cropW/e.fixedNumber[0]*e.fixedNumber[1];c<f?(e.cropH=f,e.cropW=e.fixedNumber[0]*f/e.fixedNumber[1],1===e.changeCropTypeX&&(e.cropOffsertX=e.cropChangeX+(e.cropOldW-e.cropW))):c+e.cropOffsertY>s?(e.cropH=s-e.cropOffsertY,e.cropW=e.cropH/e.fixedNumber[1]*e.fixedNumber[0],1===e.changeCropTypeX&&(e.cropOffsertX=e.cropChangeX+(e.cropOldW-e.cropW))):e.cropH=c}if(e.canChangeY&&e.fixed){var p=e.cropH/e.fixedNumber[1]*e.fixedNumber[0];p<g?(e.cropW=g,e.cropH=e.fixedNumber[1]*g/e.fixedNumber[0]):p+e.cropOffsertX>o?(e.cropW=o-e.cropOffsertX,e.cropH=e.cropW/e.fixedNumber[0]*e.fixedNumber[1]):e.cropW=p}e.$emit("cropSizing",{cropW:e.cropW,cropH:e.cropH}),e.$emit("crop-sizing",{cropW:e.cropW,cropH:e.cropH})}))},checkCropLimitSize:function(){this.cropW,this.cropH;var t=this.limitMinSize,e=new Array;return e=Array.isArray(t)?t:[t,t],[parseFloat(e[0]),parseFloat(e[1])]},changeCropEnd:function(t){window.removeEventListener("mousemove",this.changeCropNow),window.removeEventListener("mouseup",this.changeCropEnd),window.removeEventListener("touchmove",this.changeCropNow),window.removeEventListener("touchend",this.changeCropEnd)},calculateSize:function(t,e,n,i,r,o){var s=t/e,a=r,h=o;return a<n&&(a=n,h=Math.ceil(a/s)),h<i&&(h=i,(a=Math.ceil(h*s))<n&&(a=n,h=Math.ceil(a/s))),a<r&&(a=r,h=Math.ceil(a/s)),h<o&&(h=o,a=Math.ceil(h*s)),{width:a,height:h}},endCrop:function(){0===this.cropW&&0===this.cropH&&(this.cropping=!1);var t=r(this.checkCropLimitSize(),2),e=t[0],n=t[1],i=this.fixed?this.calculateSize(this.fixedNumber[0],this.fixedNumber[1],e,n,this.cropW,this.cropH):{width:e,height:n},o=i.width,s=i.height;o>this.cropW&&(this.cropW=o,this.cropOffsertX+o>this.w&&(this.cropOffsertX=this.w-o)),s>this.cropH&&(this.cropH=s,this.cropOffsertY+s>this.h&&(this.cropOffsertY=this.h-s)),window.removeEventListener("mousemove",this.createCrop),window.removeEventListener("mouseup",this.endCrop),window.removeEventListener("touchmove",this.createCrop),window.removeEventListener("touchend",this.endCrop)},startCrop:function(){this.crop=!0},stopCrop:function(){this.crop=!1},clearCrop:function(){this.cropping=!1,this.cropW=0,this.cropH=0},cropMove:function(t){if(t.preventDefault(),!this.canMoveBox)return this.crop=!1,this.startMove(t),!1;if(t.touches&&2===t.touches.length)return this.crop=!1,this.startMove(t),this.leaveCrop(),!1;window.addEventListener("mousemove",this.moveCrop),window.addEventListener("mouseup",this.leaveCrop),window.addEventListener("touchmove",this.moveCrop),window.addEventListener("touchend",this.leaveCrop);var e,n,i="clientX"in t?t.clientX:t.touches[0].clientX,r="clientY"in t?t.clientY:t.touches[0].clientY;e=i-this.cropOffsertX,n=r-this.cropOffsertY,this.cropX=e,this.cropY=n,this.$emit("cropMoving",{moving:!0,axis:this.getCropAxis()}),this.$emit("crop-moving",{moving:!0,axis:this.getCropAxis()})},moveCrop:function(t,e){var n=this,i=0,r=0;t&&(t.preventDefault(),i="clientX"in t?t.clientX:t.touches[0].clientX,r="clientY"in t?t.clientY:t.touches[0].clientY),this.$nextTick((function(){var t,o,s=i-n.cropX,a=r-n.cropY;if(e&&(s=n.cropOffsertX,a=n.cropOffsertY),t=s<=0?0:s+n.cropW>n.w?n.w-n.cropW:s,o=a<=0?0:a+n.cropH>n.h?n.h-n.cropH:a,n.centerBox){var h=n.getImgAxis();t<=h.x1&&(t=h.x1),t+n.cropW>h.x2&&(t=h.x2-n.cropW),o<=h.y1&&(o=h.y1),o+n.cropH>h.y2&&(o=h.y2-n.cropH)}n.cropOffsertX=t,n.cropOffsertY=o,n.$emit("cropMoving",{moving:!0,axis:n.getCropAxis()}),n.$emit("crop-moving",{moving:!0,axis:n.getCropAxis()})}))},getImgAxis:function(t,e,n){t=t||this.x,e=e||this.y,n=n||this.scale;var i={x1:0,x2:0,y1:0,y2:0},r=this.trueWidth*n,o=this.trueHeight*n;switch(this.rotate){case 0:i.x1=t+this.trueWidth*(1-n)/2,i.x2=i.x1+this.trueWidth*n,i.y1=e+this.trueHeight*(1-n)/2,i.y2=i.y1+this.trueHeight*n;break;case 1:case-1:case 3:case-3:i.x1=t+this.trueWidth*(1-n)/2+(r-o)/2,i.x2=i.x1+this.trueHeight*n,i.y1=e+this.trueHeight*(1-n)/2+(o-r)/2,i.y2=i.y1+this.trueWidth*n;break;default:i.x1=t+this.trueWidth*(1-n)/2,i.x2=i.x1+this.trueWidth*n,i.y1=e+this.trueHeight*(1-n)/2,i.y2=i.y1+this.trueHeight*n}return i},getCropAxis:function(){var t={x1:0,x2:0,y1:0,y2:0};return t.x1=this.cropOffsertX,t.x2=t.x1+this.cropW,t.y1=this.cropOffsertY,t.y2=t.y1+this.cropH,t},leaveCrop:function(t){window.removeEventListener("mousemove",this.moveCrop),window.removeEventListener("mouseup",this.leaveCrop),window.removeEventListener("touchmove",this.moveCrop),window.removeEventListener("touchend",this.leaveCrop),this.$emit("cropMoving",{moving:!1,axis:this.getCropAxis()}),this.$emit("crop-moving",{moving:!1,axis:this.getCropAxis()})},getCropChecked:function(t){var e=this,n=document.createElement("canvas"),i=new Image,r=this.rotate,o=this.trueWidth,s=this.trueHeight,a=this.cropOffsertX,h=this.cropOffsertY;function c(t,e){n.width=Math.round(t),n.height=Math.round(e)}i.onload=function(){if(0!==e.cropW){var p=n.getContext("2d"),l=1;e.high&!e.full&&(l=window.devicePixelRatio),1!==e.enlarge&!e.full&&(l=Math.abs(Number(e.enlarge)));var u=e.cropW*l,g=e.cropH*l,f=o*e.scale*l,d=s*e.scale*l,m=(e.x-a+e.trueWidth*(1-e.scale)/2)*l,A=(e.y-h+e.trueHeight*(1-e.scale)/2)*l;switch(c(u,g),p.save(),e.fillColor&&(p.fillStyle=e.fillColor,p.fillRect(0,0,n.width,n.height)),r){case 0:e.full?(c(u/e.scale,g/e.scale),p.drawImage(i,m/e.scale,A/e.scale,f/e.scale,d/e.scale)):p.drawImage(i,m,A,f,d);break;case 1:case-3:e.full?(c(u/e.scale,g/e.scale),m=m/e.scale+(f/e.scale-d/e.scale)/2,A=A/e.scale+(d/e.scale-f/e.scale)/2,p.rotate(90*r*Math.PI/180),p.drawImage(i,A,-m-d/e.scale,f/e.scale,d/e.scale)):(m+=(f-d)/2,A+=(d-f)/2,p.rotate(90*r*Math.PI/180),p.drawImage(i,A,-m-d,f,d));break;case 2:case-2:e.full?(c(u/e.scale,g/e.scale),p.rotate(90*r*Math.PI/180),m/=e.scale,A/=e.scale,p.drawImage(i,-m-f/e.scale,-A-d/e.scale,f/e.scale,d/e.scale)):(p.rotate(90*r*Math.PI/180),p.drawImage(i,-m-f,-A-d,f,d));break;case 3:case-1:e.full?(c(u/e.scale,g/e.scale),m=m/e.scale+(f/e.scale-d/e.scale)/2,A=A/e.scale+(d/e.scale-f/e.scale)/2,p.rotate(90*r*Math.PI/180),p.drawImage(i,-A-f/e.scale,m,f/e.scale,d/e.scale)):(m+=(f-d)/2,A+=(d-f)/2,p.rotate(90*r*Math.PI/180),p.drawImage(i,-A-f,m,f,d));break;default:e.full?(c(u/e.scale,g/e.scale),p.drawImage(i,m/e.scale,A/e.scale,f/e.scale,d/e.scale)):p.drawImage(i,m,A,f,d)}p.restore()}else{var v=o*e.scale,w=s*e.scale,x=n.getContext("2d");switch(x.save(),e.fillColor&&(x.fillStyle=e.fillColor,x.fillRect(0,0,n.width,n.height)),r){case 0:c(v,w),x.drawImage(i,0,0,v,w);break;case 1:case-3:c(w,v),x.rotate(90*r*Math.PI/180),x.drawImage(i,0,-w,v,w);break;case 2:case-2:c(v,w),x.rotate(90*r*Math.PI/180),x.drawImage(i,-v,-w,v,w);break;case 3:case-1:c(w,v),x.rotate(90*r*Math.PI/180),x.drawImage(i,-v,0,v,w);break;default:c(v,w),x.drawImage(i,0,0,v,w)}x.restore()}t(n)},"data"!==this.img.substr(0,4)&&(i.crossOrigin="Anonymous"),i.src=this.imgs},getCropData:function(t){var e=this;this.getCropChecked((function(n){t(n.toDataURL("image/"+e.outputType,e.outputSize))}))},getCropBlob:function(t){var e=this;this.getCropChecked((function(n){n.toBlob((function(e){return t(e)}),"image/"+e.outputType,e.outputSize)}))},showPreview:function(){var t=this;if(!this.isCanShow)return!1;this.isCanShow=!1,setTimeout((function(){t.isCanShow=!0}),16);var e=this.cropW,n=this.cropH,i=this.scale,r={};r.div={width:"".concat(e,"px"),height:"".concat(n,"px")};var o=(this.x-this.cropOffsertX)/i,s=(this.y-this.cropOffsertY)/i;r.w=e,r.h=n,r.url=this.imgs,r.img={width:"".concat(this.trueWidth,"px"),height:"".concat(this.trueHeight,"px"),transform:"scale(".concat(i,")translate3d(").concat(o,"px, ").concat(s,"px, ").concat(0,"px)rotateZ(").concat(90*this.rotate,"deg)")},r.html='\n      <div class="show-preview" style="width: '.concat(r.w,"px; height: ").concat(r.h,'px; overflow: hidden">\n        <div style="width: ').concat(e,"px; height: ").concat(n,'px">\n          <img src=').concat(r.url,' style="width: ').concat(this.trueWidth,"px; height: ").concat(this.trueHeight,"px; transform:\n          scale(").concat(i,")translate3d(").concat(o,"px, ").concat(s,"px, ").concat(0,"px)rotateZ(").concat(90*this.rotate,'deg)">\n        </div>\n      </div>'),this.$emit("realTime",r),this.$emit("real-time",r)},reload:function(){var t=this,e=new Image;e.onload=function(){t.w=parseFloat(window.getComputedStyle(t.$refs.cropper).width),t.h=parseFloat(window.getComputedStyle(t.$refs.cropper).height),t.trueWidth=e.width,t.trueHeight=e.height,t.original?t.scale=1:t.scale=t.checkedMode(),t.$nextTick((function(){t.x=-(t.trueWidth-t.trueWidth*t.scale)/2+(t.w-t.trueWidth*t.scale)/2,t.y=-(t.trueHeight-t.trueHeight*t.scale)/2+(t.h-t.trueHeight*t.scale)/2,t.loading=!1,t.autoCrop&&t.goAutoCrop(),t.$emit("img-load","success"),t.$emit("imgLoad","success"),setTimeout((function(){t.showPreview()}),20)}))},e.onerror=function(){t.$emit("imgLoad","error"),t.$emit("img-load","error")},e.src=this.imgs},checkedMode:function(){var t=1,e=(this.trueWidth,this.trueHeight),n=this.mode.split(" ");switch(n[0]){case"contain":this.trueWidth>this.w&&(t=this.w/this.trueWidth),this.trueHeight*t>this.h&&(t=this.h/this.trueHeight);break;case"cover":(e*=t=this.w/this.trueWidth)<this.h&&(t=(e=this.h)/this.trueHeight);break;default:try{var i=n[0];if(-1!==i.search("px")){i=i.replace("px","");var r=parseFloat(i)/this.trueWidth,o=1,s=n[1];-1!==s.search("px")&&(s=s.replace("px",""),o=(e=parseFloat(s))/this.trueHeight),t=Math.min(r,o)}if(-1!==i.search("%")&&(i=i.replace("%",""),t=parseFloat(i)/100*this.w/this.trueWidth),2===n.length&&"auto"===i){var a=n[1];-1!==a.search("px")&&(a=a.replace("px",""),t=(e=parseFloat(a))/this.trueHeight),-1!==a.search("%")&&(a=a.replace("%",""),t=(e=parseFloat(a)/100*this.h)/this.trueHeight)}}catch(e){t=1}}return t},goAutoCrop:function(t,e){if(""!==this.imgs&&null!==this.imgs){this.clearCrop(),this.cropping=!0;var n=this.w,i=this.h;if(this.centerBox){var r=Math.abs(this.rotate)%2>0,o=(r?this.trueHeight:this.trueWidth)*this.scale,s=(r?this.trueWidth:this.trueHeight)*this.scale;n=o<n?o:n,i=s<i?s:i}var a=t||parseFloat(this.autoCropWidth),h=e||parseFloat(this.autoCropHeight);0!==a&&0!==h||(a=.8*n,h=.8*i),a=a>n?n:a,h=h>i?i:h,this.fixed&&(h=a/this.fixedNumber[0]*this.fixedNumber[1]),h>this.h&&(a=(h=this.h)/this.fixedNumber[1]*this.fixedNumber[0]),this.changeCrop(a,h)}},changeCrop:function(t,e){var n=this;if(this.centerBox){var i=this.getImgAxis();t>i.x2-i.x1&&(e=(t=i.x2-i.x1)/this.fixedNumber[0]*this.fixedNumber[1]),e>i.y2-i.y1&&(t=(e=i.y2-i.y1)/this.fixedNumber[1]*this.fixedNumber[0])}this.cropW=t,this.cropH=e,this.checkCropLimitSize(),this.$nextTick((function(){n.cropOffsertX=(n.w-n.cropW)/2,n.cropOffsertY=(n.h-n.cropH)/2,n.centerBox&&n.moveCrop(null,!0)}))},refresh:function(){var t=this;this.img,this.imgs="",this.scale=1,this.crop=!1,this.rotate=0,this.w=0,this.h=0,this.trueWidth=0,this.trueHeight=0,this.clearCrop(),this.$nextTick((function(){t.checkedImg()}))},rotateLeft:function(){this.rotate=this.rotate<=-3?0:this.rotate-1},rotateRight:function(){this.rotate=this.rotate>=3?0:this.rotate+1},rotateClear:function(){this.rotate=0},checkoutImgAxis:function(t,e,n){t=t||this.x,e=e||this.y,n=n||this.scale;var i=!0;if(this.centerBox){var r=this.getImgAxis(t,e,n),o=this.getCropAxis();r.x1>=o.x1&&(i=!1),r.x2<=o.x2&&(i=!1),r.y1>=o.y1&&(i=!1),r.y2<=o.y2&&(i=!1)}return i}},mounted:function(){this.support="onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll";var t=this,e=navigator.userAgent;this.isIOS=!!e.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,n,i){for(var r=atob(this.toDataURL(n,i).split(",")[1]),o=r.length,s=new Uint8Array(o),a=0;a<o;a++)s[a]=r.charCodeAt(a);e(new Blob([s],{type:t.type||"image/png"}))}}),this.showPreview(),this.checkedImg()},destroyed:function(){window.removeEventListener("mousemove",this.moveCrop),window.removeEventListener("mouseup",this.leaveCrop),window.removeEventListener("touchmove",this.moveCrop),window.removeEventListener("touchend",this.leaveCrop),this.cancelScale()}};var h=n(379),c=n.n(h),p=n(795),l=n.n(p),u=n(569),g=n.n(u),f=n(565),d=n.n(f),m=n(216),A=n.n(m),v=n(589),w=n.n(v),x=n(814),C={};C.styleTagTransform=w(),C.setAttributes=d(),C.insert=g().bind(null,"head"),C.domAPI=l(),C.insertStyleElement=A(),c()(x.Z,C),x.Z&&x.Z.locals&&x.Z.locals;var b=function(t,e,n,i,r,o,s,a){var h,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=[],c._compiled=!0),o&&(c._scopeId="data-v-"+o),h)if(c.functional){c._injectStyles=h;var p=c.render;c.render=function(t,e){return h.call(e),p(t,e)}}else{var l=c.beforeCreate;c.beforeCreate=l?[].concat(l,h):[h]}return{exports:t,options:c}}(a,t,0,0,0,"998fa048");const y=b.exports;var H=function(t){t.component("VueCropper",y)};"undefined"!=typeof window&&window.Vue&&H(window.Vue);const W={version:"0.6.4",install:H,VueCropper:y,vueCropper:y}})(),i})()));
//# sourceMappingURL=index.js.map

/***/ }),

/***/ "./node_modules/vue-dropdowns/Dropdown.vue":
/*!*************************************************!*\
  !*** ./node_modules/vue-dropdowns/Dropdown.vue ***!
  \*************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _Dropdown_vue_vue_type_template_id_35a4e70c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Dropdown.vue?vue&type=template&id=35a4e70c */ "./node_modules/vue-dropdowns/Dropdown.vue?vue&type=template&id=35a4e70c");
/* harmony import */ var _Dropdown_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Dropdown.vue?vue&type=script&lang=js */ "./node_modules/vue-dropdowns/Dropdown.vue?vue&type=script&lang=js");
/* empty/unused harmony star reexport *//* harmony import */ var _Dropdown_vue_vue_type_style_index_0_id_35a4e70c_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css */ "./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css");
/* harmony import */ var _vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");






/* normalize component */

var component = Object(_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  _Dropdown_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
  _Dropdown_vue_vue_type_template_id_35a4e70c__WEBPACK_IMPORTED_MODULE_0__["render"],
  _Dropdown_vue_vue_type_template_id_35a4e70c__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  false,
  null,
  null,
  null
  
)

/* hot reload */
if (false) { var api; }
component.options.__file = "node_modules/vue-dropdowns/Dropdown.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);

/***/ }),

/***/ "./node_modules/vue-dropdowns/Dropdown.vue?vue&type=script&lang=js":
/*!*************************************************************************!*\
  !*** ./node_modules/vue-dropdowns/Dropdown.vue?vue&type=script&lang=js ***!
  \*************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../cache-loader/dist/cjs.js??ref--13-0!../babel-loader/lib!../cache-loader/dist/cjs.js??ref--1-0!../vue-loader/lib??vue-loader-options!./Dropdown.vue?vue&type=script&lang=js */ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=script&lang=js");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 

/***/ }),

/***/ "./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css":
/*!*********************************************************************************************!*\
  !*** ./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css ***!
  \*********************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_style_index_0_id_35a4e70c_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../vue-style-loader??ref--7-oneOf-1-0!../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../vue-loader/lib/loaders/stylePostLoader.js!../postcss-loader/src??ref--7-oneOf-1-2!../cache-loader/dist/cjs.js??ref--1-0!../vue-loader/lib??vue-loader-options!./Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css */ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css");
/* harmony import */ var _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_style_index_0_id_35a4e70c_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_style_index_0_id_35a4e70c_lang_css__WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_style_index_0_id_35a4e70c_lang_css__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_style_index_0_id_35a4e70c_lang_css__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));


/***/ }),

/***/ "./node_modules/vue-dropdowns/Dropdown.vue?vue&type=template&id=35a4e70c":
/*!*******************************************************************************!*\
  !*** ./node_modules/vue-dropdowns/Dropdown.vue?vue&type=template&id=35a4e70c ***!
  \*******************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_7ab4c6d0_vue_loader_template_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_vue_loader_lib_loaders_templateLoader_js_ref_6_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_template_id_35a4e70c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7ab4c6d0-vue-loader-template"}!../cache-loader/dist/cjs.js??ref--13-0!../babel-loader/lib!../vue-loader/lib/loaders/templateLoader.js??ref--6!../cache-loader/dist/cjs.js??ref--1-0!../vue-loader/lib??vue-loader-options!./Dropdown.vue?vue&type=template&id=35a4e70c */ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"7ab4c6d0-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=template&id=35a4e70c");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_7ab4c6d0_vue_loader_template_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_vue_loader_lib_loaders_templateLoader_js_ref_6_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_template_id_35a4e70c__WEBPACK_IMPORTED_MODULE_0__["render"]; });

/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_7ab4c6d0_vue_loader_template_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_vue_loader_lib_loaders_templateLoader_js_ref_6_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_Dropdown_vue_vue_type_template_id_35a4e70c__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });



/***/ }),

/***/ "./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js":
/*!************************************************************************!*\
  !*** ./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js ***!
  \************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

/*!
 * vue-infinite-loading v2.4.5
 * (c) 2016-2020 PeachScript
 * MIT License
 */
!function(t,e){ true?module.exports=e():undefined}(this,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var a=e[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var a in t)n.d(i,a,function(e){return t[e]}.bind(null,a));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=9)}([function(t,e,n){var i=n(6);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);(0,n(3).default)("6223ff68",i,!0,{})},function(t,e,n){var i=n(8);"string"==typeof i&&(i=[[t.i,i,""]]),i.locals&&(t.exports=i.locals);(0,n(3).default)("27f0e51f",i,!0,{})},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var a=(o=i,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),r=i.sources.map((function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"}));return[n].concat(r).concat([a]).join("\n")}var o;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},a=0;a<this.length;a++){var r=this[a][0];"number"==typeof r&&(i[r]=!0)}for(a=0;a<t.length;a++){var o=t[a];"number"==typeof o[0]&&i[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]="("+o[2]+") and ("+n+")"),e.push(o))}},e}},function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},a=0;a<e.length;a++){var r=e[a],o=r[0],s={id:t+":"+a,css:r[1],media:r[2],sourceMap:r[3]};i[o]?i[o].parts.push(s):n.push(i[o]={id:o,parts:[s]})}return n}n.r(e),n.d(e,"default",(function(){return f}));var a="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!a)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var r={},o=a&&(document.head||document.getElementsByTagName("head")[0]),s=null,l=0,d=!1,c=function(){},u=null,p="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function f(t,e,n,a){d=n,u=a||{};var o=i(t,e);return b(o),function(e){for(var n=[],a=0;a<o.length;a++){var s=o[a];(l=r[s.id]).refs--,n.push(l)}e?b(o=i(t,e)):o=[];for(a=0;a<n.length;a++){var l;if(0===(l=n[a]).refs){for(var d=0;d<l.parts.length;d++)l.parts[d]();delete r[l.id]}}}}function b(t){for(var e=0;e<t.length;e++){var n=t[e],i=r[n.id];if(i){i.refs++;for(var a=0;a<i.parts.length;a++)i.parts[a](n.parts[a]);for(;a<n.parts.length;a++)i.parts.push(m(n.parts[a]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var o=[];for(a=0;a<n.parts.length;a++)o.push(m(n.parts[a]));r[n.id]={id:n.id,refs:1,parts:o}}}}function h(){var t=document.createElement("style");return t.type="text/css",o.appendChild(t),t}function m(t){var e,n,i=document.querySelector('style[data-vue-ssr-id~="'+t.id+'"]');if(i){if(d)return c;i.parentNode.removeChild(i)}if(p){var a=l++;i=s||(s=h()),e=w.bind(null,i,a,!1),n=w.bind(null,i,a,!0)}else i=h(),e=y.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var g,v=(g=[],function(t,e){return g[t]=e,g.filter(Boolean).join("\n")});function w(t,e,n,i){var a=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=v(e,a);else{var r=document.createTextNode(a),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function y(t,e){var n=e.css,i=e.media,a=e.sourceMap;if(i&&t.setAttribute("media",i),u.ssrId&&t.setAttribute("data-vue-ssr-id",e.id),a&&(n+="\n/*# sourceURL="+a.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},function(t,e){function n(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=n=function(t){return typeof t}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(e)}t.exports=n},function(t,e,n){"use strict";n.r(e);var i=n(0),a=n.n(i);for(var r in i)"default"!==r&&function(t){n.d(e,t,(function(){return i[t]}))}(r);e.default=a.a},function(t,e,n){(t.exports=n(2)(!1)).push([t.i,'.loading-wave-dots[data-v-46b20d22]{position:relative}.loading-wave-dots[data-v-46b20d22] .wave-item{position:absolute;top:50%;left:50%;display:inline-block;margin-top:-4px;width:8px;height:8px;border-radius:50%;-webkit-animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite;animation:loading-wave-dots-data-v-46b20d22 linear 2.8s infinite}.loading-wave-dots[data-v-46b20d22] .wave-item:first-child{margin-left:-36px}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(2){margin-left:-20px;-webkit-animation-delay:.14s;animation-delay:.14s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(3){margin-left:-4px;-webkit-animation-delay:.28s;animation-delay:.28s}.loading-wave-dots[data-v-46b20d22] .wave-item:nth-child(4){margin-left:12px;-webkit-animation-delay:.42s;animation-delay:.42s}.loading-wave-dots[data-v-46b20d22] .wave-item:last-child{margin-left:28px;-webkit-animation-delay:.56s;animation-delay:.56s}@-webkit-keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}@keyframes loading-wave-dots-data-v-46b20d22{0%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}10%{-webkit-transform:translateY(-6px);transform:translateY(-6px);background:#999}20%{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}to{-webkit-transform:translateY(0);transform:translateY(0);background:#bbb}}.loading-circles[data-v-46b20d22] .circle-item{width:5px;height:5px;-webkit-animation:loading-circles-data-v-46b20d22 linear .75s infinite;animation:loading-circles-data-v-46b20d22 linear .75s infinite}.loading-circles[data-v-46b20d22] .circle-item:first-child{margin-top:-14.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){margin-top:-11.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){margin-top:-2.5px;margin-left:9.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){margin-top:6.26px;margin-left:6.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){margin-top:9.5px;margin-left:-2.5px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){margin-top:6.26px;margin-left:-11.26px}.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){margin-top:-2.5px;margin-left:-14.5px}.loading-circles[data-v-46b20d22] .circle-item:last-child{margin-top:-11.26px;margin-left:-11.26px}@-webkit-keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}@keyframes loading-circles-data-v-46b20d22{0%{background:#dfdfdf}90%{background:#505050}to{background:#dfdfdf}}.loading-bubbles[data-v-46b20d22] .bubble-item{background:#666;-webkit-animation:loading-bubbles-data-v-46b20d22 linear .75s infinite;animation:loading-bubbles-data-v-46b20d22 linear .75s infinite}.loading-bubbles[data-v-46b20d22] .bubble-item:first-child{margin-top:-12.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2){margin-top:-9.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3){margin-top:-.5px;margin-left:11.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4){margin-top:8.26px;margin-left:8.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5){margin-top:11.5px;margin-left:-.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6){margin-top:8.26px;margin-left:-9.26px}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7){margin-top:-.5px;margin-left:-12.5px}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child{margin-top:-9.26px;margin-left:-9.26px}@-webkit-keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}@keyframes loading-bubbles-data-v-46b20d22{0%{width:1px;height:1px;box-shadow:0 0 0 3px #666}90%{width:1px;height:1px;box-shadow:0 0 0 0 #666}to{width:1px;height:1px;box-shadow:0 0 0 3px #666}}.loading-default[data-v-46b20d22]{position:relative;border:1px solid #999;-webkit-animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite;animation:loading-rotating-data-v-46b20d22 ease 1.5s infinite}.loading-default[data-v-46b20d22]:before{content:"";position:absolute;display:block;top:0;left:50%;margin-top:-3px;margin-left:-3px;width:6px;height:6px;background-color:#999;border-radius:50%}.loading-spiral[data-v-46b20d22]{border:2px solid #777;border-right-color:transparent;-webkit-animation:loading-rotating-data-v-46b20d22 linear .85s infinite;animation:loading-rotating-data-v-46b20d22 linear .85s infinite}@-webkit-keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotating-data-v-46b20d22{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loading-bubbles[data-v-46b20d22],.loading-circles[data-v-46b20d22]{position:relative}.loading-bubbles[data-v-46b20d22] .bubble-item,.loading-circles[data-v-46b20d22] .circle-item{position:absolute;top:50%;left:50%;display:inline-block;border-radius:50%}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(2),.loading-circles[data-v-46b20d22] .circle-item:nth-child(2){-webkit-animation-delay:93ms;animation-delay:93ms}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(3),.loading-circles[data-v-46b20d22] .circle-item:nth-child(3){-webkit-animation-delay:.186s;animation-delay:.186s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(4),.loading-circles[data-v-46b20d22] .circle-item:nth-child(4){-webkit-animation-delay:.279s;animation-delay:.279s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(5),.loading-circles[data-v-46b20d22] .circle-item:nth-child(5){-webkit-animation-delay:.372s;animation-delay:.372s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(6),.loading-circles[data-v-46b20d22] .circle-item:nth-child(6){-webkit-animation-delay:.465s;animation-delay:.465s}.loading-bubbles[data-v-46b20d22] .bubble-item:nth-child(7),.loading-circles[data-v-46b20d22] .circle-item:nth-child(7){-webkit-animation-delay:.558s;animation-delay:.558s}.loading-bubbles[data-v-46b20d22] .bubble-item:last-child,.loading-circles[data-v-46b20d22] .circle-item:last-child{-webkit-animation-delay:.651s;animation-delay:.651s}',""])},function(t,e,n){"use strict";n.r(e);var i=n(1),a=n.n(i);for(var r in i)"default"!==r&&function(t){n.d(e,t,(function(){return i[t]}))}(r);e.default=a.a},function(t,e,n){(t.exports=n(2)(!1)).push([t.i,".infinite-loading-container[data-v-644ea9c9]{clear:both;text-align:center}.infinite-loading-container[data-v-644ea9c9] [class^=loading-]{display:inline-block;margin:5px 0;width:28px;height:28px;font-size:28px;line-height:28px;border-radius:50%}.btn-try-infinite[data-v-644ea9c9]{margin-top:5px;padding:5px 10px;color:#999;font-size:14px;line-height:1;background:transparent;border:1px solid #ccc;border-radius:3px;outline:none;cursor:pointer}.btn-try-infinite[data-v-644ea9c9]:not(:active):hover{opacity:.8}",""])},function(t,e,n){"use strict";n.r(e);var i={throttleLimit:50,loopCheckTimeout:1e3,loopCheckMaxCalls:10},a=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){return t={passive:!0},!0}});window.addEventListener("testpassive",e,e),window.remove("testpassive",e,e)}catch(t){}return t}(),r={STATE_CHANGER:["emit `loaded` and `complete` event through component instance of `$refs` may cause error, so it will be deprecated soon, please use the `$state` argument instead (`$state` just the special `$event` variable):","\ntemplate:",'<infinite-loading @infinite="infiniteHandler"></infinite-loading>',"\nscript:\n...\ninfiniteHandler($state) {\n  ajax('https://www.example.com/api/news')\n    .then((res) => {\n      if (res.data.length) {\n        $state.loaded();\n      } else {\n        $state.complete();\n      }\n    });\n}\n...","","more details: https://github.com/PeachScript/vue-infinite-loading/issues/57#issuecomment-324370549"].join("\n"),INFINITE_EVENT:"`:on-infinite` property will be deprecated soon, please use `@infinite` event instead.",IDENTIFIER:"the `reset` event will be deprecated soon, please reset this component by change the `identifier` property."},o={INFINITE_LOOP:["executed the callback function more than ".concat(i.loopCheckMaxCalls," times for a short time, it looks like searched a wrong scroll wrapper that doest not has fixed height or maximum height, please check it. If you want to force to set a element as scroll wrapper ranther than automatic searching, you can do this:"),'\n\x3c!-- add a special attribute for the real scroll wrapper --\x3e\n<div infinite-wrapper>\n  ...\n  \x3c!-- set force-use-infinite-wrapper --\x3e\n  <infinite-loading force-use-infinite-wrapper></infinite-loading>\n</div>\nor\n<div class="infinite-wrapper">\n  ...\n  \x3c!-- set force-use-infinite-wrapper as css selector of the real scroll wrapper --\x3e\n  <infinite-loading force-use-infinite-wrapper=".infinite-wrapper"></infinite-loading>\n</div>\n    ',"more details: https://github.com/PeachScript/vue-infinite-loading/issues/55#issuecomment-316934169"].join("\n")},s={READY:0,LOADING:1,COMPLETE:2,ERROR:3},l={color:"#666",fontSize:"14px",padding:"10px 0"},d={mode:"development",props:{spinner:"default",distance:100,forceUseInfiniteWrapper:!1},system:i,slots:{noResults:"No results :(",noMore:"No more data :)",error:"Opps, something went wrong :(",errorBtnText:"Retry",spinner:""},WARNINGS:r,ERRORS:o,STATUS:s},c=n(4),u=n.n(c),p={BUBBLES:{render:function(t){return t("span",{attrs:{class:"loading-bubbles"}},Array.apply(Array,Array(8)).map((function(){return t("span",{attrs:{class:"bubble-item"}})})))}},CIRCLES:{render:function(t){return t("span",{attrs:{class:"loading-circles"}},Array.apply(Array,Array(8)).map((function(){return t("span",{attrs:{class:"circle-item"}})})))}},DEFAULT:{render:function(t){return t("i",{attrs:{class:"loading-default"}})}},SPIRAL:{render:function(t){return t("i",{attrs:{class:"loading-spiral"}})}},WAVEDOTS:{render:function(t){return t("span",{attrs:{class:"loading-wave-dots"}},Array.apply(Array,Array(5)).map((function(){return t("span",{attrs:{class:"wave-item"}})})))}}};function f(t,e,n,i,a,r,o,s){var l,d="function"==typeof t?t.options:t;if(e&&(d.render=e,d.staticRenderFns=n,d._compiled=!0),i&&(d.functional=!0),r&&(d._scopeId="data-v-"+r),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),a&&a.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},d._ssrRegister=l):a&&(l=s?function(){a.call(this,this.$root.$options.shadowRoot)}:a),l)if(d.functional){d._injectStyles=l;var c=d.render;d.render=function(t,e){return l.call(e),c(t,e)}}else{var u=d.beforeCreate;d.beforeCreate=u?[].concat(u,l):[l]}return{exports:t,options:d}}var b=f({name:"Spinner",computed:{spinnerView:function(){return p[(this.$attrs.spinner||"").toUpperCase()]||this.spinnerInConfig},spinnerInConfig:function(){return d.slots.spinner&&"string"==typeof d.slots.spinner?{render:function(){return this._v(d.slots.spinner)}}:"object"===u()(d.slots.spinner)?d.slots.spinner:p[d.props.spinner.toUpperCase()]||p.DEFAULT}}},(function(){var t=this.$createElement;return(this._self._c||t)(this.spinnerView,{tag:"component"})}),[],!1,(function(t){var e=n(5);e.__inject__&&e.__inject__(t)}),"46b20d22",null).exports;function h(t){"production"!==d.mode&&console.warn("[Vue-infinite-loading warn]: ".concat(t))}function m(t){console.error("[Vue-infinite-loading error]: ".concat(t))}var g={timers:[],caches:[],throttle:function(t){var e=this;-1===this.caches.indexOf(t)&&(this.caches.push(t),this.timers.push(setTimeout((function(){t(),e.caches.splice(e.caches.indexOf(t),1),e.timers.shift()}),d.system.throttleLimit)))},reset:function(){this.timers.forEach((function(t){clearTimeout(t)})),this.timers.length=0,this.caches=[]}},v={isChecked:!1,timer:null,times:0,track:function(){var t=this;this.times+=1,clearTimeout(this.timer),this.timer=setTimeout((function(){t.isChecked=!0}),d.system.loopCheckTimeout),this.times>d.system.loopCheckMaxCalls&&(m(o.INFINITE_LOOP),this.isChecked=!0)}},w={key:"_infiniteScrollHeight",getScrollElm:function(t){return t===window?document.documentElement:t},save:function(t){var e=this.getScrollElm(t);e[this.key]=e.scrollHeight},restore:function(t){var e=this.getScrollElm(t);"number"==typeof e[this.key]&&(e.scrollTop=e.scrollHeight-e[this.key]+e.scrollTop),this.remove(e)},remove:function(t){void 0!==t[this.key]&&delete t[this.key]}};function y(t){return t.replace(/[A-Z]/g,(function(t){return"-".concat(t.toLowerCase())}))}function x(t){return t.offsetWidth+t.offsetHeight>0}var k=f({name:"InfiniteLoading",data:function(){return{scrollParent:null,scrollHandler:null,isFirstLoad:!0,status:s.READY,slots:d.slots}},components:{Spinner:b},computed:{isShowSpinner:function(){return this.status===s.LOADING},isShowError:function(){return this.status===s.ERROR},isShowNoResults:function(){return this.status===s.COMPLETE&&this.isFirstLoad},isShowNoMore:function(){return this.status===s.COMPLETE&&!this.isFirstLoad},slotStyles:function(){var t=this,e={};return Object.keys(d.slots).forEach((function(n){var i=y(n);(!t.$slots[i]&&!d.slots[n].render||t.$slots[i]&&!t.$slots[i][0].tag)&&(e[n]=l)})),e}},props:{distance:{type:Number,default:d.props.distance},spinner:String,direction:{type:String,default:"bottom"},forceUseInfiniteWrapper:{type:[Boolean,String],default:d.props.forceUseInfiniteWrapper},identifier:{default:+new Date},onInfinite:Function},watch:{identifier:function(){this.stateChanger.reset()}},mounted:function(){var t=this;this.$watch("forceUseInfiniteWrapper",(function(){t.scrollParent=t.getScrollParent()}),{immediate:!0}),this.scrollHandler=function(e){t.status===s.READY&&(e&&e.constructor===Event&&x(t.$el)?g.throttle(t.attemptLoad):t.attemptLoad())},setTimeout((function(){t.scrollHandler(),t.scrollParent.addEventListener("scroll",t.scrollHandler,a)}),1),this.$on("$InfiniteLoading:loaded",(function(e){t.isFirstLoad=!1,"top"===t.direction&&t.$nextTick((function(){w.restore(t.scrollParent)})),t.status===s.LOADING&&t.$nextTick(t.attemptLoad.bind(null,!0)),e&&e.target===t||h(r.STATE_CHANGER)})),this.$on("$InfiniteLoading:complete",(function(e){t.status=s.COMPLETE,t.$nextTick((function(){t.$forceUpdate()})),t.scrollParent.removeEventListener("scroll",t.scrollHandler,a),e&&e.target===t||h(r.STATE_CHANGER)})),this.$on("$InfiniteLoading:reset",(function(e){t.status=s.READY,t.isFirstLoad=!0,w.remove(t.scrollParent),t.scrollParent.addEventListener("scroll",t.scrollHandler,a),setTimeout((function(){g.reset(),t.scrollHandler()}),1),e&&e.target===t||h(r.IDENTIFIER)})),this.stateChanger={loaded:function(){t.$emit("$InfiniteLoading:loaded",{target:t})},complete:function(){t.$emit("$InfiniteLoading:complete",{target:t})},reset:function(){t.$emit("$InfiniteLoading:reset",{target:t})},error:function(){t.status=s.ERROR,g.reset()}},this.onInfinite&&h(r.INFINITE_EVENT)},deactivated:function(){this.status===s.LOADING&&(this.status=s.READY),this.scrollParent.removeEventListener("scroll",this.scrollHandler,a)},activated:function(){this.scrollParent.addEventListener("scroll",this.scrollHandler,a)},methods:{attemptLoad:function(t){var e=this;this.status!==s.COMPLETE&&x(this.$el)&&this.getCurrentDistance()<=this.distance?(this.status=s.LOADING,"top"===this.direction&&this.$nextTick((function(){w.save(e.scrollParent)})),"function"==typeof this.onInfinite?this.onInfinite.call(null,this.stateChanger):this.$emit("infinite",this.stateChanger),!t||this.forceUseInfiniteWrapper||v.isChecked||v.track()):this.status===s.LOADING&&(this.status=s.READY)},getCurrentDistance:function(){var t;"top"===this.direction?t="number"==typeof this.scrollParent.scrollTop?this.scrollParent.scrollTop:this.scrollParent.pageYOffset:t=this.$el.getBoundingClientRect().top-(this.scrollParent===window?window.innerHeight:this.scrollParent.getBoundingClientRect().bottom);return t},getScrollParent:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.$el;return"string"==typeof this.forceUseInfiniteWrapper&&(t=document.querySelector(this.forceUseInfiniteWrapper)),t||("BODY"===e.tagName?t=window:!this.forceUseInfiniteWrapper&&["scroll","auto"].indexOf(getComputedStyle(e).overflowY)>-1?t=e:(e.hasAttribute("infinite-wrapper")||e.hasAttribute("data-infinite-wrapper"))&&(t=e)),t||this.getScrollParent(e.parentNode)}},destroyed:function(){!this.status!==s.COMPLETE&&(g.reset(),w.remove(this.scrollParent),this.scrollParent.removeEventListener("scroll",this.scrollHandler,a))}},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"infinite-loading-container"},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowSpinner,expression:"isShowSpinner"}],staticClass:"infinite-status-prompt",style:t.slotStyles.spinner},[t._t("spinner",[n("spinner",{attrs:{spinner:t.spinner}})])],2),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowNoResults,expression:"isShowNoResults"}],staticClass:"infinite-status-prompt",style:t.slotStyles.noResults},[t._t("no-results",[t.slots.noResults.render?n(t.slots.noResults,{tag:"component"}):[t._v(t._s(t.slots.noResults))]])],2),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowNoMore,expression:"isShowNoMore"}],staticClass:"infinite-status-prompt",style:t.slotStyles.noMore},[t._t("no-more",[t.slots.noMore.render?n(t.slots.noMore,{tag:"component"}):[t._v(t._s(t.slots.noMore))]])],2),t._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:t.isShowError,expression:"isShowError"}],staticClass:"infinite-status-prompt",style:t.slotStyles.error},[t._t("error",[t.slots.error.render?n(t.slots.error,{tag:"component",attrs:{trigger:t.attemptLoad}}):[t._v("\n        "+t._s(t.slots.error)+"\n        "),n("br"),t._v(" "),n("button",{staticClass:"btn-try-infinite",domProps:{textContent:t._s(t.slots.errorBtnText)},on:{click:t.attemptLoad}})]],{trigger:t.attemptLoad})],2)])}),[],!1,(function(t){var e=n(7);e.__inject__&&e.__inject__(t)}),"644ea9c9",null).exports;function E(t){d.mode=t.config.productionTip?"development":"production"}Object.defineProperty(k,"install",{configurable:!1,enumerable:!1,value:function(t,e){Object.assign(d.props,e&&e.props),Object.assign(d.slots,e&&e.slots),Object.assign(d.system,e&&e.system),t.component("infinite-loading",k),E(t)}}),"undefined"!=typeof window&&window.Vue&&(window.Vue.component("infinite-loading",k),E(window.Vue));e.default=k}])}));

/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/Emit.js":
/*!********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/Emit.js ***!
  \********************************************************************/
/*! exports provided: Emit */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Emit", function() { return Emit; });
var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {
    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
    for (var r = Array(s), k = 0, i = 0; i < il; i++)
        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
            r[k] = a[j];
    return r;
};
// Code copied from Vue/src/shared/util.js
var hyphenateRE = /\B([A-Z])/g;
var hyphenate = function (str) { return str.replace(hyphenateRE, '-$1').toLowerCase(); };
/**
 * decorator of an event-emitter function
 * @param  event The name of the event
 * @return MethodDecorator
 */
function Emit(event) {
    return function (_target, propertyKey, descriptor) {
        var key = hyphenate(propertyKey);
        var original = descriptor.value;
        descriptor.value = function emitter() {
            var _this = this;
            var args = [];
            for (var _i = 0; _i < arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            var emit = function (returnValue) {
                var emitName = event || key;
                if (returnValue === undefined) {
                    if (args.length === 0) {
                        _this.$emit(emitName);
                    }
                    else if (args.length === 1) {
                        _this.$emit(emitName, args[0]);
                    }
                    else {
                        _this.$emit.apply(_this, __spreadArrays([emitName], args));
                    }
                }
                else {
                    args.unshift(returnValue);
                    _this.$emit.apply(_this, __spreadArrays([emitName], args));
                }
            };
            var returnValue = original.apply(this, args);
            if (isPromise(returnValue)) {
                returnValue.then(emit);
            }
            else {
                emit(returnValue);
            }
            return returnValue;
        };
    };
}
function isPromise(obj) {
    return obj instanceof Promise || (obj && typeof obj.then === 'function');
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/Inject.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/Inject.js ***!
  \**********************************************************************/
/*! exports provided: Inject */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Inject", function() { return Inject; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");

/**
 * decorator of an inject
 * @param from key
 * @return PropertyDecorator
 */
function Inject(options) {
    return Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, key) {
        if (typeof componentOptions.inject === 'undefined') {
            componentOptions.inject = {};
        }
        if (!Array.isArray(componentOptions.inject)) {
            componentOptions.inject[key] = options || key;
        }
    });
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/InjectReactive.js":
/*!******************************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/InjectReactive.js ***!
  \******************************************************************************/
/*! exports provided: InjectReactive */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InjectReactive", function() { return InjectReactive; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony import */ var _helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/provideInject */ "./node_modules/vue-property-decorator/lib/helpers/provideInject.js");


/**
 * decorator of a reactive inject
 * @param from key
 * @return PropertyDecorator
 */
function InjectReactive(options) {
    return Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, key) {
        if (typeof componentOptions.inject === 'undefined') {
            componentOptions.inject = {};
        }
        if (!Array.isArray(componentOptions.inject)) {
            var fromKey_1 = !!options ? options.from || options : key;
            var defaultVal_1 = (!!options && options.default) || undefined;
            if (!componentOptions.computed)
                componentOptions.computed = {};
            componentOptions.computed[key] = function () {
                var obj = this[_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["reactiveInjectKey"]];
                return obj ? obj[fromKey_1] : defaultVal_1;
            };
            componentOptions.inject[_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["reactiveInjectKey"]] = _helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["reactiveInjectKey"];
        }
    });
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/Model.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/Model.js ***!
  \*********************************************************************/
/*! exports provided: Model */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Model", function() { return Model; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony import */ var _helpers_metadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/metadata */ "./node_modules/vue-property-decorator/lib/helpers/metadata.js");


/**
 * decorator of model
 * @param  event event name
 * @param options options
 * @return PropertyDecorator
 */
function Model(event, options) {
    if (options === void 0) { options = {}; }
    return function (target, key) {
        Object(_helpers_metadata__WEBPACK_IMPORTED_MODULE_1__["applyMetadata"])(options, target, key);
        Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, k) {
            ;
            (componentOptions.props || (componentOptions.props = {}))[k] = options;
            componentOptions.model = { prop: k, event: event || k };
        })(target, key);
    };
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/ModelSync.js":
/*!*************************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/ModelSync.js ***!
  \*************************************************************************/
/*! exports provided: ModelSync */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModelSync", function() { return ModelSync; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony import */ var _helpers_metadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/metadata */ "./node_modules/vue-property-decorator/lib/helpers/metadata.js");


/**
 * decorator of synced model and prop
 * @param propName the name to interface with from outside, must be different from decorated property
 * @param  event event name
 * @param options options
 * @return PropertyDecorator
 */
function ModelSync(propName, event, options) {
    if (options === void 0) { options = {}; }
    return function (target, key) {
        Object(_helpers_metadata__WEBPACK_IMPORTED_MODULE_1__["applyMetadata"])(options, target, key);
        Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, k) {
            ;
            (componentOptions.props || (componentOptions.props = {}))[propName] = options;
            componentOptions.model = { prop: propName, event: event || k };
            (componentOptions.computed || (componentOptions.computed = {}))[k] = {
                get: function () {
                    return this[propName];
                },
                set: function (value) {
                    // @ts-ignore
                    this.$emit(event, value);
                },
            };
        })(target, key);
    };
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/Prop.js":
/*!********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/Prop.js ***!
  \********************************************************************/
/*! exports provided: Prop */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Prop", function() { return Prop; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony import */ var _helpers_metadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/metadata */ "./node_modules/vue-property-decorator/lib/helpers/metadata.js");


/**
 * decorator of a prop
 * @param  options the options for the prop
 * @return PropertyDecorator | void
 */
function Prop(options) {
    if (options === void 0) { options = {}; }
    return function (target, key) {
        Object(_helpers_metadata__WEBPACK_IMPORTED_MODULE_1__["applyMetadata"])(options, target, key);
        Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, k) {
            ;
            (componentOptions.props || (componentOptions.props = {}))[k] = options;
        })(target, key);
    };
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/PropSync.js":
/*!************************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/PropSync.js ***!
  \************************************************************************/
/*! exports provided: PropSync */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PropSync", function() { return PropSync; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony import */ var _helpers_metadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/metadata */ "./node_modules/vue-property-decorator/lib/helpers/metadata.js");


/**
 * decorator of a synced prop
 * @param propName the name to interface with from outside, must be different from decorated property
 * @param options the options for the synced prop
 * @return PropertyDecorator | void
 */
function PropSync(propName, options) {
    if (options === void 0) { options = {}; }
    return function (target, key) {
        Object(_helpers_metadata__WEBPACK_IMPORTED_MODULE_1__["applyMetadata"])(options, target, key);
        Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, k) {
            ;
            (componentOptions.props || (componentOptions.props = {}))[propName] = options;
            (componentOptions.computed || (componentOptions.computed = {}))[k] = {
                get: function () {
                    return this[propName];
                },
                set: function (value) {
                    this.$emit("update:" + propName, value);
                },
            };
        })(target, key);
    };
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/Provide.js":
/*!***********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/Provide.js ***!
  \***********************************************************************/
/*! exports provided: Provide */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Provide", function() { return Provide; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony import */ var _helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/provideInject */ "./node_modules/vue-property-decorator/lib/helpers/provideInject.js");


/**
 * decorator of a provide
 * @param key key
 * @return PropertyDecorator | void
 */
function Provide(key) {
    return Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, k) {
        var provide = componentOptions.provide;
        Object(_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["inheritInjected"])(componentOptions);
        if (Object(_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["needToProduceProvide"])(provide)) {
            provide = componentOptions.provide = Object(_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["produceProvide"])(provide);
        }
        provide.managed[k] = key || k;
    });
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/ProvideReactive.js":
/*!*******************************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/ProvideReactive.js ***!
  \*******************************************************************************/
/*! exports provided: ProvideReactive */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProvideReactive", function() { return ProvideReactive; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony import */ var _helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/provideInject */ "./node_modules/vue-property-decorator/lib/helpers/provideInject.js");


/**
 * decorator of a reactive provide
 * @param key key
 * @return PropertyDecorator | void
 */
function ProvideReactive(key) {
    return Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, k) {
        var provide = componentOptions.provide;
        Object(_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["inheritInjected"])(componentOptions);
        if (Object(_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["needToProduceProvide"])(provide)) {
            provide = componentOptions.provide = Object(_helpers_provideInject__WEBPACK_IMPORTED_MODULE_1__["produceProvide"])(provide);
        }
        provide.managedReactive[k] = key || k;
    });
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/Ref.js":
/*!*******************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/Ref.js ***!
  \*******************************************************************/
/*! exports provided: Ref */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Ref", function() { return Ref; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");

/**
 * decorator of a ref prop
 * @param refKey the ref key defined in template
 */
function Ref(refKey) {
    return Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (options, key) {
        options.computed = options.computed || {};
        options.computed[key] = {
            cache: false,
            get: function () {
                return this.$refs[refKey || key];
            },
        };
    });
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/VModel.js":
/*!**********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/VModel.js ***!
  \**********************************************************************/
/*! exports provided: VModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VModel", function() { return VModel; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");

/**
 * decorator for capturings v-model binding to component
 * @param options the options for the prop
 */
function VModel(options) {
    if (options === void 0) { options = {}; }
    var valueKey = 'value';
    return Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, key) {
        ;
        (componentOptions.props || (componentOptions.props = {}))[valueKey] = options;
        (componentOptions.computed || (componentOptions.computed = {}))[key] = {
            get: function () {
                return this[valueKey];
            },
            set: function (value) {
                this.$emit('input', value);
            },
        };
    });
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/decorators/Watch.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/decorators/Watch.js ***!
  \*********************************************************************/
/*! exports provided: Watch */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Watch", function() { return Watch; });
/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");

/**
 * decorator of a watch function
 * @param  path the path or the expression to observe
 * @param  WatchOption
 * @return MethodDecorator
 */
function Watch(path, options) {
    if (options === void 0) { options = {}; }
    var _a = options.deep, deep = _a === void 0 ? false : _a, _b = options.immediate, immediate = _b === void 0 ? false : _b;
    return Object(vue_class_component__WEBPACK_IMPORTED_MODULE_0__["createDecorator"])(function (componentOptions, handler) {
        if (typeof componentOptions.watch !== 'object') {
            componentOptions.watch = Object.create(null);
        }
        var watch = componentOptions.watch;
        if (typeof watch[path] === 'object' && !Array.isArray(watch[path])) {
            watch[path] = [watch[path]];
        }
        else if (typeof watch[path] === 'undefined') {
            watch[path] = [];
        }
        watch[path].push({ handler: handler, deep: deep, immediate: immediate });
    });
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/helpers/metadata.js":
/*!*********************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/helpers/metadata.js ***!
  \*********************************************************************/
/*! exports provided: applyMetadata */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyMetadata", function() { return applyMetadata; });
/** @see {@link https://github.com/vuejs/vue-class-component/blob/master/src/reflect.ts} */
var reflectMetadataIsSupported = typeof Reflect !== 'undefined' && typeof Reflect.getMetadata !== 'undefined';
function applyMetadata(options, target, key) {
    if (reflectMetadataIsSupported) {
        if (!Array.isArray(options) &&
            typeof options !== 'function' &&
            !options.hasOwnProperty('type') &&
            typeof options.type === 'undefined') {
            var type = Reflect.getMetadata('design:type', target, key);
            if (type !== Object) {
                options.type = type;
            }
        }
    }
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/helpers/provideInject.js":
/*!**************************************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/helpers/provideInject.js ***!
  \**************************************************************************/
/*! exports provided: needToProduceProvide, produceProvide, reactiveInjectKey, inheritInjected */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "needToProduceProvide", function() { return needToProduceProvide; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "produceProvide", function() { return produceProvide; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reactiveInjectKey", function() { return reactiveInjectKey; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inheritInjected", function() { return inheritInjected; });
function needToProduceProvide(original) {
    return (typeof original !== 'function' ||
        (!original.managed && !original.managedReactive));
}
function produceProvide(original) {
    var provide = function () {
        var _this = this;
        var rv = typeof original === 'function' ? original.call(this) : original;
        rv = Object.create(rv || null);
        // set reactive services (propagates previous services if necessary)
        rv[reactiveInjectKey] = Object.create(this[reactiveInjectKey] || {});
        for (var i in provide.managed) {
            rv[provide.managed[i]] = this[i];
        }
        var _loop_1 = function (i) {
            rv[provide.managedReactive[i]] = this_1[i]; // Duplicates the behavior of `@Provide`
            Object.defineProperty(rv[reactiveInjectKey], provide.managedReactive[i], {
                enumerable: true,
                configurable: true,
                get: function () { return _this[i]; },
            });
        };
        var this_1 = this;
        for (var i in provide.managedReactive) {
            _loop_1(i);
        }
        return rv;
    };
    provide.managed = {};
    provide.managedReactive = {};
    return provide;
}
/** Used for keying reactive provide/inject properties */
var reactiveInjectKey = '__reactiveInject__';
function inheritInjected(componentOptions) {
    // inject parent reactive services (if any)
    if (!Array.isArray(componentOptions.inject)) {
        componentOptions.inject = componentOptions.inject || {};
        componentOptions.inject[reactiveInjectKey] = {
            from: reactiveInjectKey,
            default: {},
        };
    }
}


/***/ }),

/***/ "./node_modules/vue-property-decorator/lib/index.js":
/*!**********************************************************!*\
  !*** ./node_modules/vue-property-decorator/lib/index.js ***!
  \**********************************************************/
/*! exports provided: Component, Vue, Mixins, Emit, Inject, InjectReactive, Model, ModelSync, Prop, PropSync, Provide, ProvideReactive, Ref, VModel, Watch */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Vue", function() { return vue__WEBPACK_IMPORTED_MODULE_0__["default"]; });

/* harmony import */ var vue_class_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-class-component */ "./node_modules/vue-class-component/dist/vue-class-component.esm.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return vue_class_component__WEBPACK_IMPORTED_MODULE_1__["default"]; });

/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Mixins", function() { return vue_class_component__WEBPACK_IMPORTED_MODULE_1__["mixins"]; });

/* harmony import */ var _decorators_Emit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./decorators/Emit */ "./node_modules/vue-property-decorator/lib/decorators/Emit.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Emit", function() { return _decorators_Emit__WEBPACK_IMPORTED_MODULE_2__["Emit"]; });

/* harmony import */ var _decorators_Inject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./decorators/Inject */ "./node_modules/vue-property-decorator/lib/decorators/Inject.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Inject", function() { return _decorators_Inject__WEBPACK_IMPORTED_MODULE_3__["Inject"]; });

/* harmony import */ var _decorators_InjectReactive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./decorators/InjectReactive */ "./node_modules/vue-property-decorator/lib/decorators/InjectReactive.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "InjectReactive", function() { return _decorators_InjectReactive__WEBPACK_IMPORTED_MODULE_4__["InjectReactive"]; });

/* harmony import */ var _decorators_Model__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./decorators/Model */ "./node_modules/vue-property-decorator/lib/decorators/Model.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Model", function() { return _decorators_Model__WEBPACK_IMPORTED_MODULE_5__["Model"]; });

/* harmony import */ var _decorators_ModelSync__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./decorators/ModelSync */ "./node_modules/vue-property-decorator/lib/decorators/ModelSync.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModelSync", function() { return _decorators_ModelSync__WEBPACK_IMPORTED_MODULE_6__["ModelSync"]; });

/* harmony import */ var _decorators_Prop__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./decorators/Prop */ "./node_modules/vue-property-decorator/lib/decorators/Prop.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Prop", function() { return _decorators_Prop__WEBPACK_IMPORTED_MODULE_7__["Prop"]; });

/* harmony import */ var _decorators_PropSync__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./decorators/PropSync */ "./node_modules/vue-property-decorator/lib/decorators/PropSync.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PropSync", function() { return _decorators_PropSync__WEBPACK_IMPORTED_MODULE_8__["PropSync"]; });

/* harmony import */ var _decorators_Provide__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./decorators/Provide */ "./node_modules/vue-property-decorator/lib/decorators/Provide.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Provide", function() { return _decorators_Provide__WEBPACK_IMPORTED_MODULE_9__["Provide"]; });

/* harmony import */ var _decorators_ProvideReactive__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./decorators/ProvideReactive */ "./node_modules/vue-property-decorator/lib/decorators/ProvideReactive.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvideReactive", function() { return _decorators_ProvideReactive__WEBPACK_IMPORTED_MODULE_10__["ProvideReactive"]; });

/* harmony import */ var _decorators_Ref__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./decorators/Ref */ "./node_modules/vue-property-decorator/lib/decorators/Ref.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Ref", function() { return _decorators_Ref__WEBPACK_IMPORTED_MODULE_11__["Ref"]; });

/* harmony import */ var _decorators_VModel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./decorators/VModel */ "./node_modules/vue-property-decorator/lib/decorators/VModel.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VModel", function() { return _decorators_VModel__WEBPACK_IMPORTED_MODULE_12__["VModel"]; });

/* harmony import */ var _decorators_Watch__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./decorators/Watch */ "./node_modules/vue-property-decorator/lib/decorators/Watch.js");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Watch", function() { return _decorators_Watch__WEBPACK_IMPORTED_MODULE_13__["Watch"]; });

/** vue-property-decorator verson 9.1.2 MIT LICENSE copyright 2020 kaorun343 */
/// <reference types='reflect-metadata'/>

















/***/ }),

/***/ "./node_modules/vue-spinner/src/ScaleLoader.vue":
/*!******************************************************!*\
  !*** ./node_modules/vue-spinner/src/ScaleLoader.vue ***!
  \******************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _ScaleLoader_vue_vue_type_template_id_5873723e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ScaleLoader.vue?vue&type=template&id=5873723e */ "./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=template&id=5873723e");
/* harmony import */ var _ScaleLoader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ScaleLoader.vue?vue&type=script&lang=js */ "./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=script&lang=js");
/* empty/unused harmony star reexport *//* harmony import */ var _ScaleLoader_vue_vue_type_style_index_0_id_5873723e_lang_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css */ "./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css");
/* harmony import */ var _vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");






/* normalize component */

var component = Object(_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
  _ScaleLoader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
  _ScaleLoader_vue_vue_type_template_id_5873723e__WEBPACK_IMPORTED_MODULE_0__["render"],
  _ScaleLoader_vue_vue_type_template_id_5873723e__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
  false,
  null,
  null,
  null
  
)

/* hot reload */
if (false) { var api; }
component.options.__file = "node_modules/vue-spinner/src/ScaleLoader.vue"
/* harmony default export */ __webpack_exports__["default"] = (component.exports);

/***/ }),

/***/ "./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=script&lang=js":
/*!******************************************************************************!*\
  !*** ./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=script&lang=js ***!
  \******************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../cache-loader/dist/cjs.js??ref--13-0!../../babel-loader/lib!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib??vue-loader-options!./ScaleLoader.vue?vue&type=script&lang=js */ "./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=script&lang=js");
/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 

/***/ }),

/***/ "./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css":
/*!**************************************************************************************************!*\
  !*** ./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css ***!
  \**************************************************************************************************/
/*! no static exports found */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_style_index_0_id_5873723e_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../vue-style-loader??ref--7-oneOf-1-0!../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src??ref--7-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib??vue-loader-options!./ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css */ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css");
/* harmony import */ var _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_style_index_0_id_5873723e_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_style_index_0_id_5873723e_lang_css__WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_style_index_0_id_5873723e_lang_css__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _vue_style_loader_index_js_ref_7_oneOf_1_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_vue_loader_lib_loaders_stylePostLoader_js_postcss_loader_src_index_js_ref_7_oneOf_1_2_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_style_index_0_id_5873723e_lang_css__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));


/***/ }),

/***/ "./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=template&id=5873723e":
/*!************************************************************************************!*\
  !*** ./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=template&id=5873723e ***!
  \************************************************************************************/
/*! exports provided: render, staticRenderFns */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_7ab4c6d0_vue_loader_template_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_vue_loader_lib_loaders_templateLoader_js_ref_6_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_template_id_5873723e__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7ab4c6d0-vue-loader-template"}!../../cache-loader/dist/cjs.js??ref--13-0!../../babel-loader/lib!../../vue-loader/lib/loaders/templateLoader.js??ref--6!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib??vue-loader-options!./ScaleLoader.vue?vue&type=template&id=5873723e */ "./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"7ab4c6d0-vue-loader-template\"}!./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=template&id=5873723e");
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_7ab4c6d0_vue_loader_template_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_vue_loader_lib_loaders_templateLoader_js_ref_6_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_template_id_5873723e__WEBPACK_IMPORTED_MODULE_0__["render"]; });

/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _cache_loader_dist_cjs_js_cacheDirectory_node_modules_cache_vue_loader_cacheIdentifier_7ab4c6d0_vue_loader_template_cache_loader_dist_cjs_js_ref_13_0_babel_loader_lib_index_js_vue_loader_lib_loaders_templateLoader_js_ref_6_cache_loader_dist_cjs_js_ref_1_0_vue_loader_lib_index_js_vue_loader_options_ScaleLoader_vue_vue_type_template_id_5873723e__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });



/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css":
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--7-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

// style-loader: Adds some css to the DOM by adding a <style> tag

// load the styles
var content = __webpack_require__(/*! !../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../vue-loader/lib/loaders/stylePostLoader.js!../postcss-loader/src??ref--7-oneOf-1-2!../cache-loader/dist/cjs.js??ref--1-0!../vue-loader/lib??vue-loader-options!./Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css */ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-dropdowns/Dropdown.vue?vue&type=style&index=0&id=35a4e70c&lang=css");
if(content.__esModule) content = content.default;
if(typeof content === 'string') content = [[module.i, content, '']];
if(content.locals) module.exports = content.locals;
// add the styles to the DOM
var add = __webpack_require__(/*! ../vue-style-loader/lib/addStylesClient.js */ "./node_modules/vue-style-loader/lib/addStylesClient.js").default
var update = add("013d7cfd", content, false, {"sourceMap":false,"shadowMode":false});
// Hot Module Replacement
if(false) {}

/***/ }),

/***/ "./node_modules/vue-style-loader/index.js?!./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css":
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** ./node_modules/vue-style-loader??ref--7-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src??ref--7-oneOf-1-2!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {

// style-loader: Adds some css to the DOM by adding a <style> tag

// load the styles
var content = __webpack_require__(/*! !../../css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../vue-loader/lib/loaders/stylePostLoader.js!../../postcss-loader/src??ref--7-oneOf-1-2!../../cache-loader/dist/cjs.js??ref--1-0!../../vue-loader/lib??vue-loader-options!./ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css */ "./node_modules/css-loader/dist/cjs.js?!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/src/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./node_modules/vue-spinner/src/ScaleLoader.vue?vue&type=style&index=0&id=5873723e&lang=css");
if(content.__esModule) content = content.default;
if(typeof content === 'string') content = [[module.i, content, '']];
if(content.locals) module.exports = content.locals;
// add the styles to the DOM
var add = __webpack_require__(/*! ../../vue-style-loader/lib/addStylesClient.js */ "./node_modules/vue-style-loader/lib/addStylesClient.js").default
var update = add("72760ebc", content, false, {"sourceMap":false,"shadowMode":false});
// Hot Module Replacement
if(false) {}

/***/ })

}]);